OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sbilan.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"
#include "param_c.inc"
#include "vect01_c.inc"
#include "inter22.inc"

Go to the source code of this file.

Functions/Subroutines

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)

Function/Subroutine Documentation

◆ sbilan()

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,
integer, dimension(*) iparts,
gresav,
integer, dimension(*) grth,
integer, dimension(*) igrth,
off,
integer iexpan,
eintth,
fill,
dimension(nel,3), intent(in) mom,
integer nel,
integer, intent(in) 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,
integer itask,
integer, dimension(*) iparg,
type (sensors_), intent(inout) sensors,
integer, intent(in) g_wpla,
intent(in) wpla )

Definition at line 37 of file sbilan.F.

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
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)
102C-----------------------------------------------
103 flag = iparg(80) ! flag for additional outputs
104C-----------------------------------------------
105C CALCUL BILAN SORTIES DEF
106C-----------------------------------------------
107 !ELEM VELOCITIES
108 IF(int22==0 .OR. ifvm22==0)THEN
109 !FEM : from nodes
110 DO i=1,nel
111 vxa(i)=vx1(i)+vx2(i)+vx3(i)+vx4(i)+vx5(i)+vx6(i)+vx7(i)+vx8(i)
112 vya(i)=vy1(i)+vy2(i)+vy3(i)+vy4(i)+vy5(i)+vy6(i)+vy7(i)+vy8(i)
113 vza(i)=vz1(i)+vz2(i)+vz3(i)+vz4(i)+vz5(i)+vz6(i)+vz7(i)+vz8(i)
114 va2(i)=vx1(i)**2+vx2(i)**2+vx3(i)**2+vx4(i)**2
115 1 +vx5(i)**2+vx6(i)**2+vx7(i)**2+vx8(i)**2
116 2 +vy1(i)**2+vy2(i)**2+vy3(i)**2+vy4(i)**2
117 3 +vy5(i)**2+vy6(i)**2+vy7(i)**2+vy8(i)**2
118 4 +vz1(i)**2+vz2(i)**2+vz3(i)**2+vz4(i)**2
119 5 +vz5(i)**2+vz6(i)**2+vz7(i)**2+vz8(i)**2
120 ENDDO
121 DO i=1,nel
122 vxa(i)=vxa(i)*one_over_8
123 vya(i)=vya(i)*one_over_8
124 vza(i)=vza(i)*one_over_8
125 va2(i)=va2(i)*one_over_8
126 ENDDO
127 ELSE
128 !FVM - from centroid
129 DO i=1,nel
130 vxa(i) = mom(i,1)/rho(i)/vol(i)
131 vya(i) = mom(i,2)/rho(i)/vol(i)
132 vza(i) = mom(i,3)/rho(i)/vol(i)
133 va2(i) = (vxa(i)**2 + vya(i)**2 + vza(i)**2)
134 ENDDO
135 ENDIF
136C
137 DO i=1,nel
138 xmas(i)= fill(i)*rho(i)*vnew(i)
139 ei(i) = fill(i)*eint(i)*vol(i)
140 ek(i) = xmas(i)*va2(i)*half
141 xm(i) = xmas(i)*vxa(i)
142 ym(i) = xmas(i)*vya(i)
143 zm(i) = xmas(i)*vza(i)
144 ENDDO
145C
146 m=iparts(1)
147 IF(ipartsph==0)THEN
148 DO i=1,nel
149 partsav(1,m)=partsav(1,m) + ei(i)
150 partsav(2,m)=partsav(2,m) + ek(i)
151 partsav(3,m)=partsav(3,m) + xm(i)
152 partsav(4,m)=partsav(4,m) + ym(i)
153 partsav(5,m)=partsav(5,m) + zm(i)
154 IF (off(i) >= one) partsav(6,m)=partsav(6,m) + xmas(i)
155 IF (g_wpla > 0) partsav(29,m)=partsav(29,m) + wpla(i)
156 ENDDO
157 ELSE
158 DO i=1,nel
159 IF(off(i) < one)cycle
160 partsav(1,m)=partsav(1,m) + ei(i)
161 partsav(2,m)=partsav(2,m) + ek(i)
162 partsav(3,m)=partsav(3,m) + xm(i)
163 partsav(4,m)=partsav(4,m) + ym(i)
164 partsav(5,m)=partsav(5,m) + zm(i)
165 partsav(6,m)=partsav(6,m) + xmas(i)
166 IF (g_wpla > 0) partsav(29,m)=partsav(29,m) + wpla(i)
167 ENDDO
168 END IF
169C
170C-----------------------------------------------
171C CALCUL BILAN SORTIES ADDITIONNELLES
172C-----------------------------------------------
173 IF(flag==1) THEN
174 IF(int22==0 .OR. ifvm22==0)THEN
175 !FEM : from nodes
176 DO i=1,nel
177 xx(i)=x1(i)+x2(i)+x3(i)+x4(i)+x5(i)+x6(i)+x7(i)+x8(i)
178 yy(i)=y1(i)+y2(i)+y3(i)+y4(i)+y5(i)+y6(i)+y7(i)+y8(i)
179 zz(i)=z1(i)+z2(i)+z3(i)+z4(i)+z5(i)+z6(i)+z7(i)+z8(i)
180 xx2(i)=x1(i)**2+x2(i)**2+x3(i)**2+x4(i)**2
181 . +x5(i)**2+x6(i)**2+x7(i)**2+x8(i)**2
182 yy2(i)=y1(i)**2+y2(i)**2+y3(i)**2+y4(i)**2
183 . +y5(i)**2+y6(i)**2+y7(i)**2+y8(i)**2
184 zz2(i)=z1(i)**2+z2(i)**2+z3(i)**2+z4(i)**2
185 . +z5(i)**2+z6(i)**2+z7(i)**2+z8(i)**2
186 xy(i)=x1(i)*y1(i)+x2(i)*y2(i)+x3(i)*y3(i)+x4(i)*y4(i)
187 . +x5(i)*y5(i)+x6(i)*y6(i)+x7(i)*y7(i)+x8(i)*y8(i)
188 yz(i)=y1(i)*z1(i)+y2(i)*z2(i)+y3(i)*z3(i)+y4(i)*z4(i)
189 . +y5(i)*z5(i)+y6(i)*z6(i)+y7(i)*z7(i)+y8(i)*z8(i)
190 zx(i)=z1(i)*x1(i)+z2(i)*x2(i)+z3(i)*x3(i)+z4(i)*x4(i)
191 . +z5(i)*x5(i)+z6(i)*x6(i)+z7(i)*x7(i)+z8(i)*x8(i)
192 ENDDO
193 DO i=1,nel
194 xx(i)=xx(i)*one_over_8
195 yy(i)=yy(i)*one_over_8
196 zz(i)=zz(i)*one_over_8
197 xy(i)=xy(i)*one_over_8
198 yz(i)=yz(i)*one_over_8
199 zx(i)=zx(i)*one_over_8
200 xx2(i)=xx2(i)*one_over_8
201 yy2(i)=yy2(i)*one_over_8
202 zz2(i)=zz2(i)*one_over_8
203 ENDDO
204 ELSE
205 !FVM - from centroid
206 DO i=1,nel
207 xx(i) = x1(i)+x2(i)+x3(i)+x4(i)+x5(i)+x6(i)+x7(i)+x8(i)
208 yy(i) = y1(i)+y2(i)+y3(i)+y4(i)+y5(i)+y6(i)+y7(i)+y8(i)
209 zz(i) = z1(i)+z2(i)+z3(i)+z4(i)+z5(i)+z6(i)+z7(i)+z8(i)
210 xx2(i)=x1(i)**2+x2(i)**2+x3(i)**2+x4(i)**2
211 . +x5(i)**2+x6(i)**2+x7(i)**2+x8(i)**2
212 yy2(i)=y1(i)**2+y2(i)**2+y3(i)**2+y4(i)**2
213 . +y5(i)**2+y6(i)**2+y7(i)**2+y8(i)**2
214 zz2(i)=z1(i)**2+z2(i)**2+z3(i)**2+z4(i)**2
215 . +z5(i)**2+z6(i)**2+z7(i)**2+z8(i)**2
216 xy(i)=x1(i)*y1(i)+x2(i)*y2(i)+x3(i)*y3(i)+x4(i)*y4(i)
217 . +x5(i)*y5(i)+x6(i)*y6(i)+x7(i)*y7(i)+x8(i)*y8(i)
218 yz(i)=y1(i)*z1(i)+y2(i)*z2(i)+y3(i)*z3(i)+y4(i)*z4(i)
219 . +y5(i)*z5(i)+y6(i)*z6(i)+y7(i)*z7(i)+y8(i)*z8(i)
220 zx(i)=z1(i)*x1(i)+z2(i)*x2(i)+z3(i)*x3(i)+z4(i)*x4(i)
221 . +z5(i)*x5(i)+z6(i)*x6(i)+z7(i)*x7(i)+z8(i)*x8(i)
222 ENDDO
223 DO i=1,nel
224 xx(i)=xx(i)*one_over_8
225 yy(i)=yy(i)*one_over_8
226 zz(i)=zz(i)*one_over_8
227 xy(i)=xy(i)*one_over_8
228 yz(i)=yz(i)*one_over_8
229 zx(i)=zx(i)*one_over_8
230 xx2(i)=xx2(i)*one_over_8
231 yy2(i)=yy2(i)*one_over_8
232 zz2(i)=zz2(i)*one_over_8
233 ENDDO
234 ENDIF
235C
236 DO i=1,nel
237 xcg(i)= xmas(i)*xx(i)
238 ycg(i)= xmas(i)*yy(i)
239 zcg(i)= xmas(i)*zz(i)
240 ixy(i)= -xmas(i)*xy(i)
241 iyz(i)= -xmas(i)*yz(i)
242 izx(i)= -xmas(i)*zx(i)
243 ixx(i)= xmas(i)*(yy2(i) + zz2(i))
244 iyy(i)= xmas(i)*(zz2(i) + xx2(i))
245 izz(i)= xmas(i)*(xx2(i) + yy2(i))
246 xxm(i)= vza(i)*ycg(i)-vya(i)*zcg(i)
247 yym(i)= vxa(i)*zcg(i)-vza(i)*xcg(i)
248 zzm(i)= vya(i)*xcg(i)-vxa(i)*ycg(i)
249 rei(i)= zero
250 rek(i)= zero
251 ENDDO
252C
253 m=iparts(1)
254 IF(ipartsph==0)THEN
255 DO i=1,nel
256 partsav(9,m) =partsav(9,m) + xcg(i)
257 partsav(10,m)=partsav(10,m) + ycg(i)
258 partsav(11,m)=partsav(11,m) + zcg(i)
259 partsav(12,m)=partsav(12,m) + xxm(i)
260 partsav(13,m)=partsav(13,m) + yym(i)
261 partsav(14,m)=partsav(14,m) + zzm(i)
262 partsav(15,m)=partsav(15,m) + ixx(i)
263 partsav(16,m)=partsav(16,m) + iyy(i)
264 partsav(17,m)=partsav(17,m) + izz(i)
265 partsav(18,m)=partsav(18,m) + ixy(i)
266 partsav(19,m)=partsav(19,m) + iyz(i)
267 partsav(20,m)=partsav(20,m) + izx(i)
268 partsav(21,m)=partsav(21,m) + rei(i)
269 partsav(22,m)=partsav(22,m) + rek(i)
270 ENDDO
271 ELSE
272 DO i=1,nel
273 IF(off(i) < one)cycle
274 partsav(9,m) =partsav(9,m) + xcg(i)
275 partsav(10,m)=partsav(10,m) + ycg(i)
276 partsav(11,m)=partsav(11,m) + zcg(i)
277 partsav(12,m)=partsav(12,m) + xxm(i)
278 partsav(13,m)=partsav(13,m) + yym(i)
279 partsav(14,m)=partsav(14,m) + zzm(i)
280 partsav(15,m)=partsav(15,m) + ixx(i)
281 partsav(16,m)=partsav(16,m) + iyy(i)
282 partsav(17,m)=partsav(17,m) + izz(i)
283 partsav(18,m)=partsav(18,m) + ixy(i)
284 partsav(19,m)=partsav(19,m) + iyz(i)
285 partsav(20,m)=partsav(20,m) + izx(i)
286 partsav(21,m)=partsav(21,m) + rei(i)
287 partsav(22,m)=partsav(22,m) + rek(i)
288 ENDDO
289 END IF
290 ENDIF
291C
292C-----------------------------------------------
293 IF (igre /= 0) THEN
294 CALL grelem_sav(1 ,nel ,gresav,igrth ,grth ,
295 2 off ,ei ,ek ,xm ,ym ,
296 3 zm ,xmas ,xcg ,ycg ,zcg ,
297 4 xxm ,yym ,zzm ,ixx ,iyy ,
298 5 izz ,ixy ,iyz ,izx ,rei ,
299 6 rek ,flag )
300 ENDIF
301C-----------------------------------------------
302C
303 IF (jtur /= 0) THEN
304 DO i=1,nel
305 m=iparts(i)
306 partsav(7,m)=partsav(7,m) + rk(i)*vol(i)
307 ENDDO
308 ENDIF
309C
310 IF(iexpan/=0)THEN
311 DO i=1,nel
312 m=iparts(i)
313 partsav(27,m)=partsav(27,m) + eintth(i)*vol(i)
314 ENDDO
315 ENDIF
316 DO i=1,nel
317 IF(off(i) < one) THEN
318 off_l(i) = zero
319 ELSE
320 off_l(i) = one
321 ENDIF
322 ENDDO
323C
324 DO i = 1,nel
325 m=iparts(i)
326 IF (off(i) < one) THEN
327 partsav(25,m) = partsav(25,m) + one
328 ENDIF
329 ENDDO
330C
331 CALL sensor_energy_bilan(1,nel,ei,ek,off_l,iparts,itask,sensors)
332C
333C-----------
334 RETURN
#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 sensor_energy_bilan(jft, jlt, ei, ek, off, ipart, itask, sensors)