OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
ige3dbilan.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!||====================================================================
25!|| ige3dbilan ../engine/source/elements/ige3d/ige3dbilan.F
26!||--- called by ------------------------------------------------------
27!|| ig3duforc3 ../engine/source/elements/ige3d/ig3duforc3.F
28!||--- calls -----------------------------------------------------
29!|| grelem_sav ../engine/source/output/th/grelem_sav.F
30!|| sensor_energy_bilan ../engine/source/tools/sensor/sensor_energy_bilan.F
31!||--- uses -----------------------------------------------------
32!|| sensor_mod ../common_source/modules/sensor_mod.F90
33!||====================================================================
34 SUBROUTINE ige3dbilan(PARTSAV,EINT,RHO,VOL,
35 . VX, VY, VZ,IPARTS,VOL0,
36 . GRESAV,GRTH,IGRTH,
37 . X, Y, Z,NCP,ITASK,IPARG,SENSORS)
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-----------------------------------------------
58 INTEGER IPARTS(*), NCP,GRTH(*),IGRTH(*),IPARG(*),ITASK
59C REAL
60 my_real
61 . partsav(npsav,*), eint(*), rho(*), vol0(*),
62 . vx(mvsiz,*),vy(mvsiz,*),vz(mvsiz,*),
63 . vol(*),gresav(*),
64 . x(mvsiz,*),y(mvsiz,*),z(mvsiz,*)
65 type (sensors_),INTENT(INOUT) :: SENSORS
66C-----------------------------------------------
67C L o c a l V a r i a b l e s
68C-----------------------------------------------
69 INTEGER I,J,M, FLAG
70C REAL
71 my_real
72 . vxa(mvsiz), vya(mvsiz) , vza(mvsiz),
73 . va2(mvsiz), xmas(mvsiz),
74 . off(mvsiz), ei(mvsiz) , ek(mvsiz),
75 . xm(mvsiz) , ym(mvsiz) , zm(mvsiz),
76 . xx(mvsiz) , yy(mvsiz) , zz(mvsiz),
77 . xy(mvsiz) , yz(mvsiz) , zx(mvsiz),
78 . xx2(mvsiz), yy2(mvsiz), zz2(mvsiz),
79 . xcg(mvsiz), ycg(mvsiz), zcg(mvsiz),
80 . xxm(mvsiz), yym(mvsiz), zzm(mvsiz),
81 . ixx(mvsiz), iyy(mvsiz), izz(mvsiz),
82 . ixy(mvsiz), iyz(mvsiz), izx(mvsiz),
83 . rei(mvsiz), rek(mvsiz),off_l(mvsiz)
84C-----------------------------------------------
85 flag = iparg(80) ! Flag pour sorties additionnelles
86C-----------------------------------------------
87C CALCUL BILAN SORTIES DEF
88C-----------------------------------------------
89 DO i=lft,llt
90 vxa(i) = zero
91 vya(i) = zero
92 vza(i) = zero
93 va2(i) = zero
94 ENDDO
95C
96 DO i=lft,llt
97 DO j=1,ncp
98 vxa(i)=vxa(i)+vx(j,i)
99 vya(i)=vya(i)+vy(j,i)
100 vza(i)=vza(i)+vz(j,i)
101 va2(i)=va2(i)+vx(j,i)**2+vy(j,i)**2+vz(j,i)**2
102 ENDDO
103 ENDDO
104C
105 DO i=lft,llt
106 vxa(i)=vxa(i)/ncp
107 vya(i)=vya(i)/ncp
108 vza(i)=vza(i)/ncp
109 va2(i)=va2(i)/ncp
110 ENDDO
111C
112 DO i=lft,llt
113 xmas(i)= rho(i)*vol(i)
114 ei(i) = eint(i)*vol0(i)
115 ek(i) = xmas(i)*va2(i)*half
116 xm(i) = xmas(i)*vxa(i)
117 ym(i) = xmas(i)*vya(i)
118 zm(i) = xmas(i)*vza(i)
119 ENDDO
120C
121 DO i=lft,llt
122 m=iparts(i)
123 partsav(1,m)=partsav(1,m) + eint(i)*vol0(i)
124 partsav(2,m)=partsav(2,m) + xmas(i)*va2(i)*half
125 partsav(3,m)=partsav(3,m) + xmas(i)*vxa(i)
126 partsav(4,m)=partsav(4,m) + xmas(i)*vya(i)
127 partsav(5,m)=partsav(5,m) + xmas(i)*vza(i)
128 partsav(6,m)=partsav(6,m) + xmas(i)
129 ENDDO
130C
131C-----------------------------------------------
132C CALCUL BILAN SORTIES ADDITIONNELLES
133C-----------------------------------------------
134 IF(flag==1) THEN
135 DO i=lft,llt
136 xx(i) =zero
137 yy(i) =zero
138 zz(i) =zero
139 xx2(i) =zero
140 yy2(i) =zero
141 zz2(i) =zero
142 xy(i) =zero
143 yz(i) =zero
144 zx(i) =zero
145 ENDDO
146C
147 DO i=lft,llt
148 DO j=1,ncp
149 xx(i)=xx(i)+x(j,i)
150 yy(i)=yy(i)+y(j,i)
151 zz(i)=zz(i)+z(j,i)
152 xx2(i)=xx2(i)+x(j,i)**2
153 yy2(i)=yy2(i)+y(j,i)**2
154 zz2(i)=zz2(i)+z(j,i)**2
155 xy(i)=xy(i)+x(j,i)*y(j,i)
156 yz(i)=yz(i)+y(j,i)*z(j,i)
157 zx(i)=zx(i)+z(j,i)*x(j,i)
158 ENDDO
159 ENDDO
160C
161 DO i=lft,llt
162 xx(i)=xx(i)/ncp
163 yy(i)=yy(i)/ncp
164 zz(i)=zz(i)/ncp
165 xx2(i)=xx2(i)/ncp
166 yy2(i)=yy2(i)/ncp
167 zz2(i)=zz2(i)/ncp
168 xy(i)=xy(i)/ncp
169 yz(i)=yz(i)/ncp
170 zx(i)=zx(i)/ncp
171 ENDDO
172C
173 DO i=lft,llt
174 xcg(i)= xmas(i)*xx(i)
175 ycg(i)= xmas(i)*yy(i)
176 zcg(i)= xmas(i)*zz(i)
177 ixy(i)= -xmas(i)*xy(i)
178 iyz(i)= -xmas(i)*yz(i)
179 izx(i)= -xmas(i)*zx(i)
180 ixx(i)= xmas(i)*(yy2(i) + zz2(i))
181 iyy(i)= xmas(i)*(zz2(i) + xx2(i))
182 izz(i)= xmas(i)*(xx2(i) + yy2(i))
183 xxm(i)= vza(i)*ycg(i)-vya(i)*zcg(i)
184 yym(i)= vxa(i)*zcg(i)-vza(i)*xcg(i)
185 zzm(i)= vya(i)*xcg(i)-vxa(i)*ycg(i)
186 rei(i)= zero
187 rek(i)= zero
188 ENDDO
189C
190 DO i=lft,llt
191 m=iparts(i)
192 partsav(9,m) =partsav(9,m) + xcg(i)
193 partsav(10,m)=partsav(10,m) + ycg(i)
194 partsav(11,m)=partsav(11,m) + zcg(i)
195 partsav(12,m)=partsav(12,m) + xxm(i)
196 partsav(13,m)=partsav(13,m) + yym(i)
197 partsav(14,m)=partsav(14,m) + zzm(i)
198 partsav(15,m)=partsav(15,m) + ixx(i)
199 partsav(16,m)=partsav(16,m) + iyy(i)
200 partsav(17,m)=partsav(17,m) + izz(i)
201 partsav(18,m)=partsav(18,m) + ixy(i)
202 partsav(19,m)=partsav(19,m) + iyz(i)
203 partsav(20,m)=partsav(20,m) + izx(i)
204 partsav(21,m)=partsav(21,m) + rei(i)
205 partsav(22,m)=partsav(22,m) + rek(i)
206 ENDDO
207 ENDIF
208C
209C-----------------------------------------------
210 IF (igre /= 0) THEN
211 DO i=lft,llt
212 off(i) = one
213 ENDDO
214 CALL grelem_sav(lft ,llt ,gresav,igrth ,grth ,
215 2 off ,ei ,ek ,xm ,ym ,
216 3 zm ,xmas ,xcg ,ycg ,zcg ,
217 4 xxm ,yym ,zzm ,ixx ,iyy ,
218 5 izz ,ixy ,iyz ,izx ,rei ,
219 6 rek ,flag )
220 ENDIF
221C-----------------------------------------------
222C
223 DO i=lft,llt
224 off_l(i) = one
225 ENDDO
226 CALL sensor_energy_bilan(lft,llt,ei,ek,off_l,iparts,itask,sensors)
227C
228C-----------
229 RETURN
230 END
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 ige3dbilan(partsav, eint, rho, vol, vx, vy, vz, iparts, vol0, gresav, grth, igrth, x, y, z, ncp, itask, iparg, sensors)
Definition ige3dbilan.F:38
subroutine sensor_energy_bilan(jft, jlt, ei, ek, off, ipart, itask, sensors)