OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
s4bilan.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| s4bilan ../engine/source/elements/solid/solide4/s4bilan.F
25!||--- called by ------------------------------------------------------
26!|| s4forc3 ../engine/source/elements/solid/solide4/s4forc3.F
27!||--- calls -----------------------------------------------------
28!|| grelem_sav ../engine/source/output/th/grelem_sav.F
29!|| sensor_energy_bilan ../engine/source/tools/sensor/sensor_energy_bilan.F
30!||--- uses -----------------------------------------------------
31!|| sensor_mod ../common_source/modules/sensor_mod.F90
32!||====================================================================
33 SUBROUTINE s4bilan(PARTSAV,EINT,RHO,RK,VOL,
34 . VX1, VX2, VX3, VX4, VY1, VY2, VY3, VY4,
35 . VZ1, VZ2, VZ3, VZ4, VNEW,IPARTS,GRESAV,
36 . GRTH,IGRTH,IEXPAN,EINTTH,FILL ,
37 . X1, X2, X3, X4, Y1, Y2, Y3, Y4,
38 . Z1, Z2, Z3, Z4,ITASK,IPARG,OFFG,SENSORS,
39 . NEL, G_WPLA, WPLA)
40C-----------------------------------------------
41C M o d u l e s
42C-----------------------------------------------
43 USE sensor_mod
44C-----------------------------------------------
45C I m p l i c i t T y p e s
46C-----------------------------------------------
47#include "implicit_f.inc"
48C-----------------------------------------------
49C G l o b a l P a r a m e t e r s
50C-----------------------------------------------
51#include "mvsiz_p.inc"
52C-----------------------------------------------
53C C o m m o n B l o c k s
54C-----------------------------------------------
55#include "param_c.inc"
56#include "vect01_c.inc"
57C-----------------------------------------------
58C D u m m y A r g u m e n t s
59C-----------------------------------------------
60C REAL
62 . partsav(npsav,*),
63 . eint(*), rho(*), rk(*), vol(*),
64 . vx1(*), vx2(*), vx3(*), vx4(*),
65 . vy1(*), vy2(*), vy3(*), vy4(*),
66 . vz1(*), vz2(*), vz3(*), vz4(*),
67 . vnew(*),gresav(*),eintth(*), fill(*),
68 . x1(*), x2(*), x3(*), x4(*),
69 . y1(*), y2(*), y3(*), y4(*),
70 . z1(*), z2(*), z3(*), z4(*)
71 INTEGER IEXPAN,ITASK,
72 . IPARTS(*),GRTH(*),IGRTH(*),IPARG(*)
73 my_real, INTENT(IN) :: OFFG(MVSIZ)
74 type (sensors_),INTENT(INOUT) :: SENSORS
75 INTEGER, INTENT(IN) :: NEL,G_WPLA
76 my_real,DIMENSION(NEL*G_WPLA), INTENT(IN) :: WPLA
77C-----------------------------------------------
78C L o c a l V a r i a b l e s
79C-----------------------------------------------
80 INTEGER I, M,FLAG,NXS1,NXS2,NXS3,NXS4
81C REAL
82 my_real
83 . vxa(mvsiz), vya(mvsiz) , vza(mvsiz),
84 . va2(mvsiz), xmas(mvsiz),
85 . off(mvsiz), ei(mvsiz) , ek(mvsiz),
86 . xm(mvsiz) , ym(mvsiz) , zm(mvsiz),
87 . xx(mvsiz) , yy(mvsiz) , zz(mvsiz),
88 . xy(mvsiz) , yz(mvsiz) , zx(mvsiz),
89 . xx2(mvsiz), yy2(mvsiz), zz2(mvsiz),
90 . xcg(mvsiz), ycg(mvsiz), zcg(mvsiz),
91 . xxm(mvsiz), yym(mvsiz), zzm(mvsiz),
92 . ixx(mvsiz), iyy(mvsiz), izz(mvsiz),
93 . ixy(mvsiz), iyz(mvsiz), izx(mvsiz),
94 . rei(mvsiz), rek(mvsiz), off_l(mvsiz)
95C-----------------------------------------------
96 flag = iparg(80) ! Flag pour sorties additionnelles
97C-----------------------------------------------
98C CALCUL BILAN SORTIES DEF
99C-----------------------------------------------
100 DO i=lft,llt
101 vxa(i)=vx1(i)+vx2(i)+vx3(i)+vx4(i)
102 vya(i)=vy1(i)+vy2(i)+vy3(i)+vy4(i)
103 vza(i)=vz1(i)+vz2(i)+vz3(i)+vz4(i)
104 va2(i)=vx1(i)**2+vx2(i)**2+vx3(i)**2+vx4(i)**2
105 + +vy1(i)**2+vy2(i)**2+vy3(i)**2+vy4(i)**2
106 + +vz1(i)**2+vz2(i)**2+vz3(i)**2+vz4(i)**2
107 ENDDO
108C
109 DO i=lft,llt
110 vxa(i) = vxa(i)*fourth
111 vya(i) = vya(i)*fourth
112 vza(i) = vza(i)*fourth
113 va2(i) = va2(i)*fourth
114 ENDDO
115C
116 DO i=lft,llt
117 xmas(i)= fill(i)*rho(i)*vnew(i)
118 ei(i) = fill(i)*eint(i)*vol(i)
119 ek(i) = xmas(i)*va2(i)*half
120 xm(i) = xmas(i)*vxa(i)
121 ym(i) = xmas(i)*vya(i)
122 zm(i) = xmas(i)*vza(i)
123 ENDDO
124C
125 DO i=lft,llt
126 m=iparts(i)
127 partsav(1,m)=partsav(1,m) + ei(i)
128 partsav(2,m)=partsav(2,m) + ek(i)
129 partsav(3,m)=partsav(3,m) + xm(i)
130 partsav(4,m)=partsav(4,m) + ym(i)
131 partsav(5,m)=partsav(5,m) + zm(i)
132 IF (offg(i) >= one) partsav(6,m)=partsav(6,m) + xmas(i)
133 IF (g_wpla > 0) partsav(29,m)=partsav(29,m) + wpla(i)
134 ENDDO
135C-----------------------------------------------
136C CALCUL BILAN SORTIES ADDITIONNELLES
137C-----------------------------------------------
138 IF(flag==1) THEN
139 DO i=lft,llt
140 xx(i)= x1(i)+x2(i)+x3(i)+x4(i)
141 yy(i)= y1(i)+y2(i)+y3(i)+y4(i)
142 zz(i)= z1(i)+z2(i)+z3(i)+z4(i)
143 xx2(i)= x1(i)**2+x2(i)**2+x3(i)**2+x4(i)**2
144 yy2(i)= y1(i)**2+y2(i)**2+y3(i)**2+y4(i)**2
145 zz2(i)= z1(i)**2+z2(i)**2+z3(i)**2+z4(i)**2
146 xy(i)= x1(i)*y1(i)+x2(i)*y2(i)+x3(i)*y3(i)+x4(i)*y4(i)
147 yz(i)= y1(i)*z1(i)+y2(i)*z2(i)+y3(i)*z3(i)+y4(i)*z4(i)
148 zx(i)= z1(i)*x1(i)+z2(i)*x2(i)+z3(i)*x3(i)+z4(i)*x4(i)
149 ENDDO
150C
151 DO i=lft,llt
152 xx(i) = xx(i)*fourth
153 yy(i) = yy(i)*fourth
154 zz(i) = zz(i)*fourth
155 xy(i) = xy(i)*fourth
156 yz(i) = yz(i)*fourth
157 zx(i) = zx(i)*fourth
158 xx2(i)= xx2(i)*fourth
159 yy2(i)= yy2(i)*fourth
160 zz2(i)= zz2(i)*fourth
161 ENDDO
162C
163 DO i=lft,llt
164 xcg(i)= xmas(i)*xx(i)
165 ycg(i)= xmas(i)*yy(i)
166 zcg(i)= xmas(i)*zz(i)
167 ixy(i)= -xmas(i)*xy(i)
168 iyz(i)= -xmas(i)*yz(i)
169 izx(i)= -xmas(i)*zx(i)
170 ixx(i)= xmas(i)*(yy2(i) + zz2(i))
171 iyy(i)= xmas(i)*(zz2(i) + xx2(i))
172 izz(i)= xmas(i)*(xx2(i) + yy2(i))
173 xxm(i)= vza(i)*ycg(i)-vya(i)*zcg(i)
174 yym(i)= vxa(i)*zcg(i)-vza(i)*xcg(i)
175 zzm(i)= vya(i)*xcg(i)-vxa(i)*ycg(i)
176 rei(i)= zero
177 rek(i)= zero
178 ENDDO
179C
180 DO i=lft,llt
181 m=iparts(i)
182 partsav(9,m) =partsav(9,m) + xcg(i)
183 partsav(10,m)=partsav(10,m) + ycg(i)
184 partsav(11,m)=partsav(11,m) + zcg(i)
185 partsav(12,m)=partsav(12,m) + xxm(i)
186 partsav(13,m)=partsav(13,m) + yym(i)
187 partsav(14,m)=partsav(14,m) + zzm(i)
188 partsav(15,m)=partsav(15,m) + ixx(i)
189 partsav(16,m)=partsav(16,m) + iyy(i)
190 partsav(17,m)=partsav(17,m) + izz(i)
191 partsav(18,m)=partsav(18,m) + ixy(i)
192 partsav(19,m)=partsav(19,m) + iyz(i)
193 partsav(20,m)=partsav(20,m) + izx(i)
194 partsav(21,m)=partsav(21,m) + rei(i)
195 partsav(22,m)=partsav(22,m) + rek(i)
196 ENDDO
197 ENDIF
198C
199C-----------------------------------------------
200 IF (igre /= 0) THEN
201 DO i=lft,llt
202 off(i) = one
203 ENDDO
204 CALL grelem_sav(lft ,llt ,gresav,igrth ,grth ,
205 2 off ,ei ,ek ,xm ,ym ,
206 3 zm ,xmas ,xcg ,ycg ,zcg ,
207 4 xxm ,yym ,zzm ,ixx ,iyy ,
208 5 izz ,ixy ,iyz ,izx ,rei ,
209 6 rek ,flag)
210 ENDIF
211C-----------------------------------------------
212C
213 IF(jtur/=0)THEN
214 DO 50 i=lft,llt
215 m=iparts(i)
216 partsav(7,m)=partsav(7,m) + rk(i)*vol(i)
217 50 CONTINUE
218 ENDIF
219C
220 IF(iexpan/=0)THEN
221 DO i=lft,llt
222 m=iparts(i)
223 partsav(27,m)=partsav(27,m) + eintth(i)*vol(i)
224 ENDDO
225 ENDIF
226
227 off_l(lft:llt) = one
228C
229 DO i = lft,llt
230 m=iparts(i)
231 IF (offg(i) < one) THEN
232 partsav(25,m) = partsav(25,m) + one
233 ENDIF
234 ENDDO
235C
236 CALL sensor_energy_bilan(lft,llt,ei,ek,off_l,iparts,itask,sensors)
237C
238 RETURN
239 END
#define my_real
Definition cppsort.cpp:32
subroutine grelem_sav(jft, jlt, gresav, igrth, grth, off, ei, ek, xm, ym, zm, xmas, xcg, ycg, zcg, xxm, yym, zzm, ixx, iyy, izz, ixy, iyz, izx, rei, rek, flag)
Definition grelem_sav.F:54
subroutine s4bilan(partsav, eint, rho, rk, vol, vx1, vx2, vx3, vx4, vy1, vy2, vy3, vy4, vz1, vz2, vz3, vz4, vnew, iparts, gresav, grth, igrth, iexpan, eintth, fill, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, itask, iparg, offg, sensors, nel, g_wpla, wpla)
Definition s4bilan.F:40
subroutine sensor_energy_bilan(jft, jlt, ei, ek, off, ipart, itask, sensors)