OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sbilan.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!|| sbilan ../engine/source/elements/solid/solide/sbilan.F
25!||--- called by ------------------------------------------------------
26!|| s8cforc3 ../engine/source/elements/thickshell/solide8c/s8cforc3.F
27!|| s8eforc3 ../engine/source/elements/solid/solide8e/s8eforc3.F
28!|| s8sforc3 ../engine/source/elements/solid/solide8s/s8sforc3.F
29!|| s8zforc3 ../engine/source/elements/solid/solide8z/s8zforc3.F
30!|| sforc3 ../engine/source/elements/solid/solide/sforc3.F
31!||--- calls -----------------------------------------------------
32!|| grelem_sav ../engine/source/output/th/grelem_sav.F
33!|| sensor_energy_bilan ../engine/source/tools/sensor/sensor_energy_bilan.F
34!||--- uses -----------------------------------------------------
35!|| sensor_mod ../common_source/modules/sensor_mod.F90
36!||====================================================================
37 SUBROUTINE sbilan(PARTSAV,EINT,RHO,RK,VOL,
38 . VX1, VX2, VX3, VX4, VX5, VX6, VX7, VX8,
39 . VY1, VY2, VY3, VY4, VY5, VY6, VY7, VY8,
40 . VZ1, VZ2, VZ3, VZ4, VZ5, VZ6, VZ7, VZ8,
41 . VNEW,IPARTS,GRESAV,GRTH,IGRTH, OFF,
42 . IEXPAN,EINTTH,FILL,MOM,NEL,IFVM22,
43 . X1, X2, X3, X4, X5, X6, X7, X8,
44 . Y1, Y2, Y3, Y4, Y5, Y6, Y7, Y8,
45 . Z1, Z2, Z3, Z4, Z5, Z6, Z7, Z8,
46 . ITASK,IPARG,SENSORS,G_WPLA,WPLA)
47C-----------------------------------------------
48C M o d u l e s
49C-----------------------------------------------
50 USE sensor_mod
51C-----------------------------------------------
52C I m p l i c i t T y p e s
53C-----------------------------------------------
54#include "implicit_f.inc"
55C-----------------------------------------------
56C G l o b a l P a r a m e t e r s
57C-----------------------------------------------
58#include "mvsiz_p.inc"
59C-----------------------------------------------
60C C o m m o n B l o c k s
61C-----------------------------------------------
62#include "param_c.inc"
63#include "vect01_c.inc"
64#include "inter22.inc"
65C-----------------------------------------------
66C D u m m y A r g u m e n t s
67C-----------------------------------------------
68 my_real,INTENT(IN) :: mom(nel,3)
70 . partsav(npsav,*), eint(nel), rho(nel), rk(nel), vol(nel),
71 . vx1(*), vx2(*), vx3(*), vx4(*), vx5(*), vx6(*), vx7(*), vx8(*),
72 . vy1(*), vy2(*), vy3(*), vy4(*), vy5(*), vy6(*), vy7(*), vy8(*),
73 . vz1(*), vz2(*), vz3(*), vz4(*), vz5(*), vz6(*), vz7(*), vz8(*),
74 . vnew(nel), gresav(*), off(nel), eintth(nel), fill(nel),
75 . x1(*), x2(*), x3(*), x4(*), x5(*), x6(*), x7(*), x8(*),
76 . y1(*), y2(*), y3(*), y4(*), y5(*), y6(*), y7(*), y8(*),
77 . z1(*), z2(*), z3(*), z4(*), z5(*), z6(*), z7(*), z8(*)
78 INTEGER, INTENT(IN) :: G_WPLA
79 my_real,DIMENSION(NEL*G_WPLA), INTENT(IN) :: WPLA
80 INTEGER IEXPAN,ITASK,
81 . IPARTS(*),GRTH(*),IGRTH(*),IPARG(*),NEL
82 INTEGER,INTENT(IN) :: IFVM22
83 type (sensors_),INTENT(INOUT) :: SENSORS
84C-----------------------------------------------
85C L o c a l V a r i a b l e s
86C-----------------------------------------------
87 INTEGER I, M, FLAG
88C REAL
89 my_real
90 . vxa(mvsiz), vya(mvsiz) , vza(mvsiz),
91 . va2(mvsiz), xmas(mvsiz),
92 . ei(mvsiz) , ek(mvsiz),
93 . xm(mvsiz) , ym(mvsiz) , zm(mvsiz),
94 . xx(mvsiz) , yy(mvsiz) , zz(mvsiz),
95 . xy(mvsiz) , yz(mvsiz) , zx(mvsiz),
96 . xx2(mvsiz), yy2(mvsiz), zz2(mvsiz),
97 . xcg(mvsiz), ycg(mvsiz), zcg(mvsiz),
98 . xxm(mvsiz), yym(mvsiz), zzm(mvsiz),
99 . ixx(mvsiz), iyy(mvsiz), izz(mvsiz),
100 . ixy(mvsiz), iyz(mvsiz), izx(mvsiz),
101 . rei(mvsiz), rek(mvsiz), off_l(mvsiz)
102 INTEGER IC, II, J, JST(MVSIZ+1)
103C-----------------------------------------------
104 FLAG = iparg(80) ! Flag pour sorties additionnelles
105C-----------------------------------------------
106C CALCUL BILAN SORTIES DEF
107C-----------------------------------------------
108 !ELEM VELOCITIES
109 IF(int22==0 .OR. ifvm22==0)THEN
110 !FEM : from nodes
111 DO i=1,nel
112 vxa(i)=vx1(i)+vx2(i)+vx3(i)+vx4(i)+vx5(i)+vx6(i)+vx7(i)+vx8(i)
113 vya(i)=vy1(i)+vy2(i)+vy3(i)+vy4(i)+vy5(i)+vy6(i)+vy7(i)+vy8(i)
114 vza(i)=vz1(i)+vz2(i)+vz3(i)+vz4(i)+vz5(i)+vz6(i)+vz7(i)+vz8(i)
115 va2(i)=vx1(i)**2+vx2(i)**2+vx3(i)**2+vx4(i)**2
116 1 +vx5(i)**2+vx6(i)**2+vx7(i)**2+vx8(i)**2
117 2 +vy1(i)**2+vy2(i)**2+vy3(i)**2+vy4(i)**2
118 3 +vy5(i)**2+vy6(i)**2+vy7(i)**2+vy8(i)**2
119 4 +vz1(i)**2+vz2(i)**2+vz3(i)**2+vz4(i)**2
120 5 +vz5(i)**2+vz6(i)**2+vz7(i)**2+vz8(i)**2
121 ENDDO
122 DO i=1,nel
123 vxa(i)=vxa(i)*one_over_8
124 vya(i)=vya(i)*one_over_8
125 vza(i)=vza(i)*one_over_8
126 va2(i)=va2(i)*one_over_8
127 ENDDO
128 ELSE
129 !FVM - from centroid
130 DO i=1,nel
131 vxa(i) = mom(i,1)/rho(i)/vol(i)
132 vya(i) = mom(i,2)/rho(i)/vol(i)
133 vza(i) = mom(i,3)/rho(i)/vol(i)
134 va2(i) = (vxa(i)**2 + vya(i)**2 + vza(i)**2)
135 ENDDO
136 ENDIF
137C
138 DO i=1,nel
139 xmas(i)= fill(i)*rho(i)*vnew(i)
140 ei(i) = fill(i)*eint(i)*vol(i)
141 ek(i) = xmas(i)*va2(i)*half
142 xm(i) = xmas(i)*vxa(i)
143 ym(i) = xmas(i)*vya(i)
144 zm(i) = xmas(i)*vza(i)
145 ENDDO
146C
147 m=iparts(1)
148 IF(ipartsph==0)THEN
149 DO i=1,nel
150 partsav(1,m)=partsav(1,m) + ei(i)
151 partsav(2,m)=partsav(2,m) + ek(i)
152 partsav(3,m)=partsav(3,m) + xm(i)
153 partsav(4,m)=partsav(4,m) + ym(i)
154 partsav(5,m)=partsav(5,m) + zm(i)
155 IF (off(i) >= one) partsav(6,m)=partsav(6,m) + xmas(i)
156 IF (g_wpla > 0) partsav(29,m)=partsav(29,m) + wpla(i)
157 ENDDO
158 ELSE
159 DO i=1,nel
160 IF(off(i) < one)cycle
161 partsav(1,m)=partsav(1,m) + ei(i)
162 partsav(2,m)=partsav(2,m) + ek(i)
163 partsav(3,m)=partsav(3,m) + xm(i)
164 partsav(4,m)=partsav(4,m) + ym(i)
165 partsav(5,m)=partsav(5,m) + zm(i)
166 partsav(6,m)=partsav(6,m) + xmas(i)
167 IF (g_wpla > 0) partsav(29,m)=partsav(29,m) + wpla(i)
168 ENDDO
169 END IF
170C
171C-----------------------------------------------
172C CALCUL BILAN SORTIES ADDITIONNELLES
173C-----------------------------------------------
174 IF(flag==1) THEN
175 IF(int22==0 .OR. ifvm22==0)THEN
176 !FEM : from nodes
177 DO i=1,nel
178 xx(i)=x1(i)+x2(i)+x3(i)+x4(i)+x5(i)+x6(i)+x7(i)+x8(i)
179 yy(i)=y1(i)+y2(i)+y3(i)+y4(i)+y5(i)+y6(i)+y7(i)+y8(i)
180 zz(i)=z1(i)+z2(i)+z3(i)+z4(i)+z5(i)+z6(i)+z7(i)+z8(i)
181 xx2(i)=x1(i)**2+x2(i)**2+x3(i)**2+x4(i)**2
182 . +x5(i)**2+x6(i)**2+x7(i)**2+x8(i)**2
183 yy2(i)=y1(i)**2+y2(i)**2+y3(i)**2+y4(i)**2
184 . +y5(i)**2+y6(i)**2+y7(i)**2+y8(i)**2
185 zz2(i)=z1(i)**2+z2(i)**2+z3(i)**2+z4(i)**2
186 . +z5(i)**2+z6(i)**2+z7(i)**2+z8(i)**2
187 xy(i)=x1(i)*y1(i)+x2(i)*y2(i)+x3(i)*y3(i)+x4(i)*y4(i)
188 . +x5(i)*y5(i)+x6(i)*y6(i)+x7(i)*y7(i)+x8(i)*y8(i)
189 yz(i)=y1(i)*z1(i)+y2(i)*z2(i)+y3(i)*z3(i)+y4(i)*z4(i)
190 . +y5(i)*z5(i)+y6(i)*z6(i)+y7(i)*z7(i)+y8(i)*z8(i)
191 zx(i)=z1(i)*x1(i)+z2(i)*x2(i)+z3(i)*x3(i)+z4(i)*x4(i)
192 . +z5(i)*x5(i)+z6(i)*x6(i)+z7(i)*x7(i)+z8(i)*x8(i)
193 ENDDO
194 DO i=1,nel
195 xx(i)=xx(i)*one_over_8
196 yy(i)=yy(i)*one_over_8
197 zz(i)=zz(i)*one_over_8
198 xy(i)=xy(i)*one_over_8
199 yz(i)=yz(i)*one_over_8
200 zx(i)=zx(i)*one_over_8
201 xx2(i)=xx2(i)*one_over_8
202 yy2(i)=yy2(i)*one_over_8
203 zz2(i)=zz2(i)*one_over_8
204 ENDDO
205 ELSE
206 !FVM - from centroid
207 DO i=1,nel
208 xx(i) = x1(i)+x2(i)+x3(i)+x4(i)+x5(i)+x6(i)+x7(i)+x8(i)
209 yy(i) = y1(i)+y2(i)+y3(i)+y4(i)+y5(i)+y6(i)+y7(i)+y8(i)
210 zz(i) = z1(i)+z2(i)+z3(i)+z4(i)+z5(i)+z6(i)+z7(i)+z8(i)
211 xx2(i)=x1(i)**2+x2(i)**2+x3(i)**2+x4(i)**2
212 . +x5(i)**2+x6(i)**2+x7(i)**2+x8(i)**2
213 yy2(i)=y1(i)**2+y2(i)**2+y3(i)**2+y4(i)**2
214 . +y5(i)**2+y6(i)**2+y7(i)**2+y8(i)**2
215 zz2(i)=z1(i)**2+z2(i)**2+z3(i)**2+z4(i)**2
216 . +z5(i)**2+z6(i)**2+z7(i)**2+z8(i)**2
217 xy(i)=x1(i)*y1(i)+x2(i)*y2(i)+x3(i)*y3(i)+x4(i)*y4(i)
218 . +x5(i)*y5(i)+x6(i)*y6(i)+x7(i)*y7(i)+x8(i)*y8(i)
219 yz(i)=y1(i)*z1(i)+y2(i)*z2(i)+y3(i)*z3(i)+y4(i)*z4(i)
220 . +y5(i)*z5(i)+y6(i)*z6(i)+y7(i)*z7(i)+y8(i)*z8(i)
221 zx(i)=z1(i)*x1(i)+z2(i)*x2(i)+z3(i)*x3(i)+z4(i)*x4(i)
222 . +z5(i)*x5(i)+z6(i)*x6(i)+z7(i)*x7(i)+z8(i)*x8(i)
223 ENDDO
224 DO i=1,nel
225 xx(i)=xx(i)*one_over_8
226 yy(i)=yy(i)*one_over_8
227 zz(i)=zz(i)*one_over_8
228 xy(i)=xy(i)*one_over_8
229 yz(i)=yz(i)*one_over_8
230 zx(i)=zx(i)*one_over_8
231 xx2(i)=xx2(i)*one_over_8
232 yy2(i)=yy2(i)*one_over_8
233 zz2(i)=zz2(i)*one_over_8
234 ENDDO
235 ENDIF
236C
237 DO i=1,nel
238 xcg(i)= xmas(i)*xx(i)
239 ycg(i)= xmas(i)*yy(i)
240 zcg(i)= xmas(i)*zz(i)
241 ixy(i)= -xmas(i)*xy(i)
242 iyz(i)= -xmas(i)*yz(i)
243 izx(i)= -xmas(i)*zx(i)
244 ixx(i)= xmas(i)*(yy2(i) + zz2(i))
245 iyy(i)= xmas(i)*(zz2(i) + xx2(i))
246 izz(i)= xmas(i)*(xx2(i) + yy2(i))
247 xxm(i)= vza(i)*ycg(i)-vya(i)*zcg(i)
248 yym(i)= vxa(i)*zcg(i)-vza(i)*xcg(i)
249 zzm(i)= vya(i)*xcg(i)-vxa(i)*ycg(i)
250 rei(i)= zero
251 rek(i)= zero
252 ENDDO
253C
254 m=iparts(1)
255 IF(ipartsph==0)THEN
256 DO i=1,nel
257 partsav(9,m) =partsav(9,m) + xcg(i)
258 partsav(10,m)=partsav(10,m) + ycg(i)
259 partsav(11,m)=partsav(11,m) + zcg(i)
260 partsav(12,m)=partsav(12,m) + xxm(i)
261 partsav(13,m)=partsav(13,m) + yym(i)
262 partsav(14,m)=partsav(14,m) + zzm(i)
263 partsav(15,m)=partsav(15,m) + ixx(i)
264 partsav(16,m)=partsav(16,m) + iyy(i)
265 partsav(17,m)=partsav(17,m) + izz(i)
266 partsav(18,m)=partsav(18,m) + ixy(i)
267 partsav(19,m)=partsav(19,m) + iyz(i)
268 partsav(20,m)=partsav(20,m) + izx(i)
269 partsav(21,m)=partsav(21,m) + rei(i)
270 partsav(22,m)=partsav(22,m) + rek(i)
271 ENDDO
272 ELSE
273 DO i=1,nel
274 IF(off(i) < one)cycle
275 partsav(9,m) =partsav(9,m) + xcg(i)
276 partsav(10,m)=partsav(10,m) + ycg(i)
277 partsav(11,m)=partsav(11,m) + zcg(i)
278 partsav(12,m)=partsav(12,m) + xxm(i)
279 partsav(13,m)=partsav(13,m) + yym(i)
280 partsav(14,m)=partsav(14,m) + zzm(i)
281 partsav(15,m)=partsav(15,m) + ixx(i)
282 partsav(16,m)=partsav(16,m) + iyy(i)
283 partsav(17,m)=partsav(17,m) + izz(i)
284 partsav(18,m)=partsav(18,m) + ixy(i)
285 partsav(19,m)=partsav(19,m) + iyz(i)
286 partsav(20,m)=partsav(20,m) + izx(i)
287 partsav(21,m)=partsav(21,m) + rei(i)
288 partsav(22,m)=partsav(22,m) + rek(i)
289 ENDDO
290 END IF
291 ENDIF
292C
293C-----------------------------------------------
294 IF (igre /= 0) THEN
295 CALL grelem_sav(1 ,nel ,gresav,igrth ,grth ,
296 2 off ,ei ,ek ,xm ,ym ,
297 3 zm ,xmas ,xcg ,ycg ,zcg ,
298 4 xxm ,yym ,zzm ,ixx ,iyy ,
299 5 izz ,ixy ,iyz ,izx ,rei ,
300 6 rek ,flag )
301 ENDIF
302C-----------------------------------------------
303C
304 IF (jtur /= 0) THEN
305 DO i=1,nel
306 m=iparts(i)
307 partsav(7,m)=partsav(7,m) + rk(i)*vol(i)
308 ENDDO
309 ENDIF
310C
311 IF(iexpan/=0)THEN
312 DO i=1,nel
313 m=iparts(i)
314 partsav(27,m)=partsav(27,m) + eintth(i)*vol(i)
315 ENDDO
316 ENDIF
317 DO i=1,nel
318 IF(off(i) < one) THEN
319 off_l(i) = zero
320 ELSE
321 off_l(i) = one
322 ENDIF
323 ENDDO
324C
325 DO i = 1,nel
326 m=iparts(i)
327 IF (off(i) < one) THEN
328 partsav(25,m) = partsav(25,m) + one
329 ENDIF
330 ENDDO
331C
332 CALL sensor_energy_bilan(1,nel,ei,ek,off_l,iparts,itask,sensors)
333C
334C-----------
335 RETURN
336 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 sbilan(partsav, eint, rho, rk, vol, vx1, vx2, vx3, vx4, vx5, vx6, vx7, vx8, vy1, vy2, vy3, vy4, vy5, vy6, vy7, vy8, vz1, vz2, vz3, vz4, vz5, vz6, vz7, vz8, vnew, iparts, gresav, grth, igrth, off, iexpan, eintth, fill, mom, nel, ifvm22, x1, x2, x3, x4, x5, x6, x7, x8, y1, y2, y3, y4, y5, y6, y7, y8, z1, z2, z3, z4, z5, z6, z7, z8, itask, iparg, sensors, g_wpla, wpla)
Definition sbilan.F:47
subroutine sensor_energy_bilan(jft, jlt, ei, ek, off, ipart, itask, sensors)