OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
s10bilan.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!|| s10bilan ../engine/source/elements/solid/solide10/s10bilan.F
25!||--- called by ------------------------------------------------------
26!|| s10forc3 ../engine/source/elements/solid/solide10/s10forc3.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 s10bilan(PARTSAV,EINT,RHO,RK,VOL,
34 . VX, VY, VZ, NX, VNEW,IPARTS,
35 . GRESAV,GRTH,IGRTH,IEXPAN,EINTTH,
36 . FILL ,X, Y, Z,ITASK,IPARG,OFFG,SENSORS,
37 . NEL, L_WPLA, WPLA)
38C-----------------------------------------------
39C M o d u l e s
40C-----------------------------------------------
41 USE sensor_mod
42C-----------------------------------------------
43C I m p l i c i t T y p e s
44C-----------------------------------------------
45#include "implicit_f.inc"
46C-----------------------------------------------
47C G l o b a l P a r a m e t e r s
48C-----------------------------------------------
49#include "mvsiz_p.inc"
50C-----------------------------------------------
51C C o m m o n B l o c k s
52C-----------------------------------------------
53#include "param_c.inc"
54#include "vect01_c.inc"
55C-----------------------------------------------
56C D u m m y A r g u m e n t s
57C-----------------------------------------------
58C REAL
60 . partsav(npsav,*), eint(*), rho(*), rk(*), vol(*),
61 . vx(mvsiz,10),vy(mvsiz,10),vz(mvsiz,10),
62 . nx(mvsiz,10),vnew(*),gresav(*),eintth(*),
63 . fill(*),
64 . x(mvsiz,10),y(mvsiz,10),z(mvsiz,10)
65 INTEGER IEXPAN,ITASK,
66 . IPARTS(*),GRTH(*),IGRTH(*),IPARG(*)
67 my_real, INTENT(IN) :: OFFG(MVSIZ)
68 type (sensors_),INTENT(INOUT) :: SENSORS
69 INTEGER, INTENT(IN) :: NEL,L_WPLA
70 my_real,DIMENSION(NEL*L_WPLA),INTENT(IN) :: WPLA
71C-----------------------------------------------
72C L o c a l V a r i a b l e s
73C-----------------------------------------------
74 INTEGER I, M,N, FLAG
75C REAL
76 my_real
77 . X1,Y1,Z1,VXM,VYM,VZM,
78 . vxa(mvsiz), vya(mvsiz) , vza(mvsiz),
79 . va2(mvsiz), xmas(mvsiz),
80 . off(mvsiz), ei(mvsiz) , ek(mvsiz),
81 . xm(mvsiz) , ym(mvsiz) , zm(mvsiz),
82 . xx(mvsiz) , yy(mvsiz) , zz(mvsiz),
83 . xy(mvsiz) , yz(mvsiz) , zx(mvsiz),
84 . xx2(mvsiz), yy2(mvsiz), zz2(mvsiz),
85 . xcg(mvsiz), ycg(mvsiz), zcg(mvsiz),
86 . xxm(mvsiz), yym(mvsiz), zzm(mvsiz),
87 . ixx(mvsiz), iyy(mvsiz), izz(mvsiz),
88 . ixy(mvsiz), iyz(mvsiz), izx(mvsiz),
89 . rei(mvsiz), rek(mvsiz), fac, am, bm, cm,
90 . off_l(mvsiz)
91 INTEGER IPERM1(10),IPERM2(10),N1,N2
92 DATA IPERM1/0,0,0,0,1,2,3,1,2,3/
93 DATA IPERM2/0,0,0,0,2,3,1,4,4,4/
94C-----------------------------------------------
95 flag = iparg(80) ! Flag pour sorties additionnelles
96C-----------------------------------------------
97C CALCUL BILAN SORTIES DEF
98C-----------------------------------------------
99 fac=trhee_over_14
100C
101 IF(isrot == 0)THEN
102 am = fac/(four*fac + six)
103 bm = one/(four*fac + six)
104 cm = fac
105 ELSEIF(isrot == 1)THEN
106 am = one/four
107 bm = zero
108 ELSEIF(isrot == 2)THEN
109 am = one/four
110 bm = zero
111 ENDIF
112C
113 n = 1
114 DO i=lft,llt
115 vxa(i)=vx(i,n)
116 vya(i)=vy(i,n)
117 vza(i)=vz(i,n)
118 va2(i)=(vx(i,n)**2+vy(i,n)**2+vz(i,n)**2)
119 ENDDO
120C
121 DO n=2,4
122 DO i=lft,llt
123 vxa(i)=vxa(i)+vx(i,n)
124 vya(i)=vya(i)+vy(i,n)
125 vza(i)=vza(i)+vz(i,n)
126 va2(i)=va2(i)+(vx(i,n)**2+vy(i,n)**2+vz(i,n)**2)
127 ENDDO
128 ENDDO
129C
130 IF(isrot == 0) THEN
131 DO i=lft,llt
132 vxa(i)=vxa(i)*cm
133 vya(i)=vya(i)*cm
134 vza(i)=vza(i)*cm
135 va2(i)=va2(i)*cm
136 ENDDO
137 DO n=5,10
138 DO i=lft,llt
139 vxa(i)=vxa(i)+vx(i,n)
140 vya(i)=vya(i)+vy(i,n)
141 vza(i)=vza(i)+vz(i,n)
142 va2(i)=va2(i)+(vx(i,n)**2+vy(i,n)**2+vz(i,n)**2)
143 ENDDO
144 ENDDO
145 DO i=lft,llt
146 vxa(i)=vxa(i)*bm
147 vya(i)=vya(i)*bm
148 vza(i)=vza(i)*bm
149 va2(i)=va2(i)*bm
150 ENDDO
151 ELSE
152 DO i=lft,llt
153 vxa(i)=vxa(i)*am
154 vya(i)=vya(i)*am
155 vza(i)=vza(i)*am
156 va2(i)=va2(i)*am
157 ENDDO
158 ENDIF
159C
160 DO i=lft,llt
161 xmas(i)=fill(i)*rho(i)*vnew(i)
162 ei(i) = fill(i)*eint(i)*vol(i)
163 ek(i) = xmas(i)*va2(i)*half
164 xm(i) = xmas(i)*vxa(i)
165 ym(i) = xmas(i)*vya(i)
166 zm(i) = xmas(i)*vza(i)
167 ENDDO
168C
169 DO i=lft,llt
170 m=iparts(i)
171 partsav(1,m)=partsav(1,m) + ei(i)
172 partsav(2,m)=partsav(2,m) + ek(i)
173 partsav(3,m)=partsav(3,m) + xm(i)
174 partsav(4,m)=partsav(4,m) + ym(i)
175 partsav(5,m)=partsav(5,m) + zm(i)
176 IF (offg(i) >= one) partsav(6,m)=partsav(6,m) + xmas(i)
177 IF (l_wpla > 0) partsav(29,m)=partsav(29,m) + wpla(i)
178 ENDDO
179C
180C-----------------------------------------------
181C CALCUL BILAN SORTIES ADDITIONNELLES
182C-----------------------------------------------
183 IF(flag==1) THEN
184 n = 1
185 DO i=lft,llt
186 xx(i) =x(i,n)
187 yy(i) =y(i,n)
188 zz(i) =z(i,n)
189 xy(i) =x(i,n)*y(i,n)
190 yz(i) =y(i,n)*z(i,n)
191 zx(i) =z(i,n)*x(i,n)
192 xx2(i)=(x(i,n)**2)
193 yy2(i)=(y(i,n)**2)
194 zz2(i)=(z(i,n)**2)
195 ENDDO
196C
197 DO n=2,4
198 DO i=lft,llt
199 xx(i) =xx(i)+x(i,n)
200 yy(i) =yy(i)+y(i,n)
201 zz(i) =zz(i)+z(i,n)
202 xy(i) =xy(i)+x(i,n)*y(i,n)
203 yz(i) =yz(i)+y(i,n)*z(i,n)
204 zx(i) =zx(i)+z(i,n)*x(i,n)
205 xx2(i)=xx2(i)+(x(i,n)**2)
206 yy2(i)=yy2(i)+(y(i,n)**2)
207 zz2(i)=zz2(i)+(z(i,n)**2)
208 ENDDO
209 ENDDO
210C
211 IF(isrot == 0) THEN
212 DO i=lft,llt
213 xx(i) =xx(i)*cm
214 yy(i) =yy(i)*cm
215 zz(i) =zz(i)*cm
216 xy(i) =xy(i)*cm
217 yz(i) =yz(i)*cm
218 zx(i) =zx(i)*cm
219 xx2(i)=xx2(i)*cm
220 yy2(i)=yy2(i)*cm
221 zz2(i)=zz2(i)*cm
222 ENDDO
223 DO n=5,10
224 DO i=lft,llt
225 xx(i) =xx(i)+x(i,n)
226 yy(i) =yy(i)+y(i,n)
227 zz(i) =zz(i)+z(i,n)
228 xy(i) =xy(i)+x(i,n)*y(i,n)
229 yz(i) =yz(i)+y(i,n)*z(i,n)
230 zx(i) =zx(i)+z(i,n)*x(i,n)
231 xx2(i)=xx2(i)+(x(i,n)**2)
232 yy2(i)=yy2(i)+(y(i,n)**2)
233 zz2(i)=zz2(i)+(z(i,n)**2)
234 ENDDO
235 ENDDO
236 DO i=lft,llt
237 xx(i) =xx(i)*bm
238 yy(i) =yy(i)*bm
239 zz(i) =zz(i)*bm
240 xy(i) =xy(i)*bm
241 yz(i) =yz(i)*bm
242 zx(i) =zx(i)*bm
243 xx2(i)=xx2(i)*bm
244 yy2(i)=yy2(i)*bm
245 zz2(i)=zz2(i)*bm
246 ENDDO
247 ELSE
248 DO i=lft,llt
249 xx(i) =xx(i)*am
250 yy(i) =yy(i)*am
251 zz(i) =zz(i)*am
252 xy(i) =xy(i)*am
253 yz(i) =yz(i)*am
254 zx(i) =zx(i)*am
255 xx2(i)=xx2(i)*am
256 yy2(i)=yy2(i)*am
257 zz2(i)=zz2(i)*am
258 ENDDO
259 ENDIF
260C
261 DO i=lft,llt
262 xcg(i)= xmas(i)*xx(i)
263 ycg(i)= xmas(i)*yy(i)
264 zcg(i)= xmas(i)*zz(i)
265 ixy(i)= -xmas(i)*xy(i)
266 iyz(i)= -xmas(i)*yz(i)
267 izx(i)= -xmas(i)*zx(i)
268 ixx(i)= xmas(i)*(yy2(i) + zz2(i))
269 iyy(i)= xmas(i)*(zz2(i) + xx2(i))
270 izz(i)= xmas(i)*(xx2(i) + yy2(i))
271 xxm(i)= vza(i)*ycg(i)-vya(i)*zcg(i)
272 yym(i)= vxa(i)*zcg(i)-vza(i)*xcg(i)
273 zzm(i)= vya(i)*xcg(i)-vxa(i)*ycg(i)
274 rei(i)= zero
275 rek(i)= zero
276 ENDDO
277C
278 DO i=lft,llt
279 m=iparts(i)
280 partsav(9,m) =partsav(9,m) + xcg(i)
281 partsav(10,m)=partsav(10,m) + ycg(i)
282 partsav(11,m)=partsav(11,m) + zcg(i)
283 partsav(12,m)=partsav(12,m) + xxm(i)
284 partsav(13,m)=partsav(13,m) + yym(i)
285 partsav(14,m)=partsav(14,m) + zzm(i)
286 partsav(15,m)=partsav(15,m) + ixx(i)
287 partsav(16,m)=partsav(16,m) + iyy(i)
288 partsav(17,m)=partsav(17,m) + izz(i)
289 partsav(18,m)=partsav(18,m) + ixy(i)
290 partsav(19,m)=partsav(19,m) + iyz(i)
291 partsav(20,m)=partsav(20,m) + izx(i)
292 partsav(21,m)=partsav(21,m) + rei(i)
293 partsav(22,m)=partsav(22,m) + rek(i)
294 ENDDO
295 ENDIF
296C-----------------------------------------------
297 IF (igre /= 0) THEN
298 DO i=lft,llt
299 off(i) = one
300 ENDDO
301 CALL grelem_sav(lft ,llt ,gresav,igrth ,grth ,
302 2 off ,ei ,ek ,xm ,ym ,
303 3 zm ,xmas ,xcg ,ycg ,zcg ,
304 4 xxm ,yym ,zzm ,ixx ,iyy ,
305 5 izz ,ixy ,iyz ,izx ,rei ,
306 6 rek ,flag )
307 ENDIF
308C-----------------------------------------------
309C
310 IF(jtur/=0)THEN
311 DO i=lft,llt
312 m=iparts(i)
313 partsav(7,m)=partsav(7,m) + rk(i)*vol(i)
314 ENDDO
315 ENDIF
316C
317 IF(iexpan/=0)THEN
318 DO i=lft,llt
319 m=iparts(i)
320 partsav(27,m)=partsav(27,m) + eintth(i)*vol(i)
321 ENDDO
322 ENDIF
323
324 off_l(lft:llt) = one
325C
326 DO i = lft,llt
327 m=iparts(i)
328 IF (offg(i) < one) THEN
329 partsav(25,m) = partsav(25,m) + one
330 ENDIF
331 ENDDO
332C
333 CALL sensor_energy_bilan(lft,llt,ei,ek,off_l,iparts,itask,sensors)
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 s10bilan(partsav, eint, rho, rk, vol, vx, vy, vz, nx, vnew, iparts, gresav, grth, igrth, iexpan, eintth, fill, x, y, z, itask, iparg, offg, sensors, nel, l_wpla, wpla)
Definition s10bilan.F:38
subroutine sensor_energy_bilan(jft, jlt, ei, ek, off, ipart, itask, sensors)