OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
fvbag0.F File Reference
#include "implicit_f.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "com08_c.inc"
#include "param_c.inc"
#include "scr18_c.inc"
#include "tabsiz_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine fvbag0 (monvol, volmon, x, sensor_tab, v, a, npc, tf, nsensor, fsav, ifvmesh, icontact, lgauge, gauge, igeo, geo, pm, ipm, iparg, igrouptg, igroupc, elbuf_tab, fext, flag, h3d_data, itab, weight, wfext, python)

Function/Subroutine Documentation

◆ fvbag0()

subroutine fvbag0 ( integer, dimension(smonvol) monvol,
volmon,
x,
type (sensor_str_), dimension(nsensor), intent(in) sensor_tab,
v,
a,
integer, dimension(snpc) npc,
tf,
integer, intent(in) nsensor,
fsav,
integer ifvmesh,
integer, dimension(*) icontact,
integer, dimension(3,nbgauge) lgauge,
gauge,
integer, dimension(npropgi,numgeo) igeo,
geo,
pm,
integer, dimension(npropmi,nummat) ipm,
integer, dimension(nparg,ngroup) iparg,
integer, dimension(numeltg) igrouptg,
integer, dimension(numelc) igroupc,
type(elbuf_struct_), dimension(ngroup) elbuf_tab,
fext,
integer, intent(in) flag,
type(h3d_database) h3d_data,
integer, dimension(numnod), intent(in) itab,
integer, dimension(numnod), intent(in) weight,
double precision, intent(inout) wfext,
type(python_) python )

Definition at line 39 of file fvbag0.F.

45C-----------------------------------------------
46C D e s c r i p t i o n
47C-----------------------------------------------
48C This subroutine is called to manage FVMBAGS (numerical scheme + polyhedra mesh
49C
50C FVBAG0 called two times from RESOL
51C FLAG = 1 : Gather information on PMAIN + Computations
52C FLAG = 2 : Scatter information from PMAIN (inc. switch to UP)
53C-----------------------------------------------
54C M o d u l e s
55C-----------------------------------------------
56 USE fvbag_mod
57 USE elbufdef_mod
59 USE h3d_mod
60 USE sensor_mod
61 USE python_funct_mod, only : python_
62C-----------------------------------------------
63C I m p l i c i t T y p e s
64C-----------------------------------------------
65#include "implicit_f.inc"
66C-----------------------------------------------
67C C o m m o n B l o c k s
68C-----------------------------------------------
69#include "com01_c.inc"
70#include "com04_c.inc"
71#include "com08_c.inc"
72#include "param_c.inc"
73#include "scr18_c.inc"
74#include "tabsiz_c.inc"
75C-----------------------------------------------
76C D u m m y A r g u m e n t s
77C-----------------------------------------------
78 INTEGER,INTENT(IN) :: NSENSOR
79 INTEGER, INTENT(IN) :: FLAG ! 1: gather + computations
80 ! 2: scatter
81 INTEGER MONVOL(SMONVOL), NPC(SNPC),IFVMESH,ICONTACT(*), LGAUGE(3,NBGAUGE), IGEO(NPROPGI,NUMGEO)
82 INTEGER IPM(NPROPMI,NUMMAT), IPARG(NPARG,NGROUP)
83 INTEGER IGROUPTG(NUMELTG), IGROUPC(NUMELC)
84 my_real volmon(svolmon), x(3,numnod),v(3,numnod), a(3,numnod),
85 . tf(stf), fsav(nthvki,sfsav/nthvki), gauge(llgauge,nbgauge), geo(npropg,numgeo),
86 . pm(npropm,nummat), fext(3*numnod)
87 TYPE(ELBUF_STRUCT_), DIMENSION(NGROUP) :: ELBUF_TAB
88 TYPE(H3D_DATABASE) :: H3D_DATA
89 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) ,INTENT(IN) :: SENSOR_TAB
90 INTEGER,INTENT(IN) :: ITAB(NUMNOD), WEIGHT(NUMNOD)
91 DOUBLE PRECISION,INTENT(INOUT) :: WFEXT
92 TYPE(PYTHON_) :: PYTHON
93C-----------------------------------------------
94C L o c a l V a r i a b l e s
95C-----------------------------------------------
96 INTEGER N, ITYP, NNFV, NTRFV, NPOLH, IFV, INFO, IDONE
97 INTEGER NJET, IADJET, RADJET, NVENT, IADHOL, RADHOL
98 INTEGER K1, K2, KIBJET, KIBHOL, KIBALE
99 INTEGER KK1, KK2, KRBJET, KRBHOL, KRBALE
100 INTEGER NNS, NTG, NBA, NTGA, NNA, NNI, NTGI, NNT, NTGT
101 INTEGER KI1, KI2, KI3, KI4, KI5
102 INTEGER KR1, KR2, KR3, KR4, KR5, KR6, KR7, KR8, KR9
103 INTEGER KIA1, KIA2, KIA3, KIA4, KIA5, KIA6, KIA7, KIA8
104 INTEGER KRA1, KRA2, KRA3, KRA4, KRA5, KRA6, KRA7, KRA8
105 INTEGER NSKIP, IEQUI
106 my_real cfl_coef
107C-----------------------------------------------
108C D e s c r i p t i o n
109C-----------------------------------------------
110c GAUGE(3,*)
111c 1: -Isolid -(NUMELS_G+1) if SPH gauge
112c 2: GaugeId
113c 3: +Node or -Shell
114c
115c => GAUGE(LLGAUGE,*), LLGAUGE = 37
116c 1: Dist (distance from Shell) Dist (distance from Shell)
117c 2: XG XG
118c 3: YG YG
119c 4: ZG ZG
120c 5: Alpha (Solid penetration ratio) not yet used
121c 6: XSAV (SPH sorting)
122c 7: YSAV (SPH sorting)
123c 8: ZSAV (SPH sorting)
124c 9: FF (sph only)
125c 10: intantaneous Pressure
126c 11: intantaneous PA
127c 12: intantaneous Rho
128c 13: intantaneous E
129c 14: ! Butterworth !
130c 15: ! Butterworth !
131c 16: ! Butterworth !
132c 17: ! Butterworth !
133c 18: ! Butterworth !
134c 19: ! Butterworth !
135c 20: ! Butterworth !
136c 21: ! Butterworth !
137c 22: ! Butterworth !
138c 23: ! Butterworth !
139c 24: ! Butterworth !
140c 25: ! Butterworth !
141c 26: ! Butterworth !
142c 27: ! Butterworth !
143c 28: ! Butterworth !
144c 29: ! Butterworth !
145c 30: Pressure filtered Pressure
146c 31: PA filtered PA
147c 32: Rho filtered Rho
148c 33: E filtered E
149c 34: ! Butterworth !
150c 35: ! Butterworth !
151c 36: ! Butterworth !
152c 37: ! Butterworth !
153C-----------------------------------------------
154C S o u r c e L i n e s
155C-----------------------------------------------
156 k1=1
157 k2=1+nimv*nvolu
158 kibjet=k2+licbag
159 kibhol=kibjet+libagjet
160 kibale=kibhol+libaghol
161 kk1=1
162 kk2=1+nrvolu*nvolu
163 krbjet=kk2+lrcbag
164 krbhol=krbjet+lrbagjet
165 krbale=krbhol+lrbaghol
166 ifv=0
167 ifvmesh=0
168C
169 DO n=1,nvolu
170 ityp=monvol(k1-1+2)
171 IF (ityp == 6.OR.ityp == 8) THEN
172 ifv = monvol(k1 -1 +45)
173C
174 iequi=monvol(k1-1+15)
175 IF(tt < volmon(kk1-1+49).AND.iequi >= 1) THEN
176 monvol(k1-1+39)=0
177 nskip=mod(ncycle,iequi)
178 ELSE
179 monvol(k1-1+39)=1
180 nskip=0
181 ENDIF
182 IF(nskip >= 1 .AND. kmesh(ifv) > 1) GO TO 100
183C
184 idone=monvol(k1-1+57)
185 IF(idone == 1) GO TO 100
186 info=0
187C
188 njet=monvol(k1+7)
189 iadjet=kibjet+monvol(k1+8)
190 radjet=krbjet+monvol(k1+9)
191 nvent=monvol(k1+10)
192 iadhol=kibhol+monvol(k1+11)
193 radhol=krbhol+monvol(k1+12)
194C
195 nns=monvol(k1-1+32)
196 ntg=monvol(k1-1+33)
197 nni=monvol(k1-1+68)
198 ntgi=monvol(k1-1+69)
199 nnt=nns+nni
200 ntgt=ntg+ntgi
201 ki1=kibale+monvol(k1-1+31)
202 ki2=ki1+nnt
203 ki3=ki2+3*ntgt
204 ki4=ki3+ntgt
205 ki5=ki4+ntgt
206 kr1=krbale+monvol(k1-1+34)
207 kr2=kr1+nnt
208 kr3=kr2+nnt
209 kr4=kr3+nnt
210 kr5=kr4+3*nnt
211 kr6=kr5+ntgt
212 kr7=kr6+ntgt
213 kr8=kr7+ntgt
214 kr9=kr8+ntgt
215C
216 nnfv= monvol(k1-1+46)
217 ntrfv=monvol(k1-1+47)
218 npolh=monvol(k1-1+49)
219C
220 nba= monvol(k1-1+62)
221 ntga=monvol(k1-1+63)
222 nna= monvol(k1-1+64)
223C
224 kia1=ki4 +2*ntgt
225 kia2=kia1+2*nba
226 kia3=kia2+12*nba
227 kia4=kia3+2*ntgt
228 kia5=kia4+nna
229 kia6=kia5+3*ntga
230 kia7=kia6+ntga
231 kia8=kia7+8*nba
232C
233 kra1=min(svolmon, kr9 +nnt)
234 kra2=kra1+nna
235 kra3=kra2+nna
236 kra4=kra3+nna
237 kra5=kra4+3*nna
238 kra6=kra5+3*nna
239 kra7=kra6+3*nna
240 kra8=kra7+ntgi
241
242 IF (ityp == 8) THEN
243 cfl_coef = fvdata(ifv)%CFL_COEF
244 ELSE
245 cfl_coef = dtfac1(52)
246 ENDIF
247 IF(flag == 1 .AND. nskip < 1) THEN
248 IF (monvol(k1+74-1) >= 0) THEN
249 CALL fvbag1(
250 1 nns ,ntg ,monvol(ki1) , monvol(ki2) ,njet ,
251 2 monvol(iadjet) ,volmon(radjet) ,nvent,monvol(iadhol), volmon(radhol) ,
252 3 volmon(kr1) ,volmon(kr2) ,volmon(kr3) , volmon(kr4) ,volmon(kr9) ,
253 4 x ,v ,a , nsensor ,sensor_tab ,
254 5 fsav(1,n) ,npc ,tf , monvol(k1) ,volmon(kk1) ,
255 6 fvdata(ifv)%MPOLH ,fvdata(ifv)%QPOLH ,fvdata(ifv)%EPOLH , fvdata(ifv)%CENTROID_POLH,
256 7 fvdata(ifv)%PPOLH ,fvdata(ifv)%RPOLH ,fvdata(ifv)%GPOLH , fvdata(ifv)%SSPPOLH ,
257 8 npolh ,fvdata(ifv)%IFVNOD ,fvdata(ifv)%RFVNOD , fvdata(ifv)%IFVTRI ,
258 9 fvdata(ifv)%IFVPOLY ,fvdata(ifv)%IFVTADR,fvdata(ifv)%IFVPOLH ,
259 a fvdata(ifv)%IFVPADR ,info ,nnfv , ntrfv , ifv ,
260 b fvdata(ifv)%NPOLH_ANIM,fvdata(ifv)%DLH ,fvdata(ifv)%CPAPOLH ,
261 c fvdata(ifv)%CPBPOLH ,fvdata(ifv)%CPCPOLH,fvdata(ifv)%RMWPOLH ,
262 d monvol(ki3) ,volmon(kr5) ,icontact , fvdata(ifv)%IDPOLH ,
263 e volmon(kr6) ,volmon(kr7) ,monvol(kia4) , monvol(kia5) , monvol(kia6) ,
264 f volmon(kra1) ,volmon(kra2) ,volmon(kra3) , volmon(kra4) , monvol(kia7) ,
265 g nna ,ntga ,fvdata(ifv)%IBPOLH , fvdata(ifv)%DTPOLH , nnt ,
266 h ntgt ,volmon(kra5) ,volmon(kra6) , monvol(kia8) , volmon(kra7) ,
267 i lgauge ,gauge ,ityp , igeo,volmon(kra8) ,
268 j geo ,pm ,ipm , fvdata(ifv)%TPOLH , volmon(kr8) ,
269 k fvdata(ifv)%CPDPOLH ,fvdata(ifv)%CPEPOLH,fvdata(ifv)%CPFPOLH ,
270 l monvol(ki4) ,iparg ,monvol(ki5) ,
271 m igrouptg ,igroupc ,elbuf_tab , fext , cfl_coef ,
272 n fvdata(ifv)%PDISP_OLD ,fvdata(ifv)%PDISP ,h3d_data , itab , wfext, python)
273 ELSE
274 CALL fv_up_switch(
275 1 nns ,ntg, monvol(ki2) ,njet , fvdata(ifv)%NPOLY , fvdata(ifv)%LENH ,nba,
276 2 monvol(iadjet) ,volmon(radjet) ,nvent,monvol(iadhol), volmon(radhol),
277 3 volmon(kr1) ,volmon(kr2) ,volmon(kr3) , volmon(kr4) , volmon(kr9) ,
278 4 x ,v ,a , nsensor , sensor_tab ,
279 5 fsav(1,n) ,npc ,tf , monvol(k1) , volmon(kk1) ,
280 6 fvdata(ifv)%MPOLH ,fvdata(ifv)%QPOLH ,fvdata(ifv)%EPOLH ,
281 7 fvdata(ifv)%PPOLH ,fvdata(ifv)%RPOLH ,fvdata(ifv)%GPOLH ,
282 8 npolh ,fvdata(ifv)%IFVNOD ,fvdata(ifv)%RFVNOD , fvdata(ifv)%IFVTRI ,
283 9 fvdata(ifv)%IFVPOLY ,fvdata(ifv)%IFVTADR,fvdata(ifv)%IFVPOLH ,
284 a fvdata(ifv)%IFVPADR ,info ,nnfv , ntrfv , ifv ,
285 b fvdata(ifv)%NPOLH_ANIM,fvdata(ifv)%DLH ,fvdata(ifv)%CPAPOLH ,
286 c fvdata(ifv)%CPBPOLH ,fvdata(ifv)%CPCPOLH,fvdata(ifv)%RMWPOLH ,
287 d monvol(ki3) ,volmon(kr5) ,icontact , fvdata(ifv)%IDPOLH ,
288 e volmon(kr6) ,volmon(kr7) ,monvol(kia4) , monvol(kia5),monvol(kia6),
289 f volmon(kra1) ,volmon(kra2) ,volmon(kra3) , volmon(kra4),monvol(kia7),
290 g nna ,ntga ,fvdata(ifv)%IBPOLH , fvdata(ifv)%DTPOLH , nnt,
291 h ntgt ,volmon(kra5) ,volmon(kra6) , monvol(kia8),volmon(kra7),
292 i ityp ,igeo,volmon(kra8) ,
293 j geo ,pm ,ipm , fvdata(ifv)%TPOLH , volmon(kr8),
294 k fvdata(ifv)%CPDPOLH ,fvdata(ifv)%CPEPOLH,fvdata(ifv)%CPFPOLH ,
295 l monvol(ki4) ,iparg ,monvol(ki5) ,
296 m igrouptg ,igroupc ,elbuf_tab, cfl_coef ,
297 n fvdata(ifv)%PDISP_OLD ,fvdata(ifv)%PDISP ,wfext, python)
298 ENDIF
299 ELSEIF (flag == 2) THEN
300 CALL fvbag2(ifv , ityp , nna , nvent , njet ,
301 . monvol(k1), monvol(iadhol), volmon(radhol),
302 . x , volmon(kk1) , volmon(kra5) , monvol(kia8), volmon(radjet),
303 . a , lgauge , gauge , nnt , fext ,
304 . nskip , h3d_data , weight)
305
306C---+----1----+----2----+----3----+----4----+----5----+----6----+----7--
307 monvol(k1-1+57)=1
308 ENDIF
309 ENDIF
310 100 k1=k1+nimv
311 kk1=kk1+nrvolu
312 ENDDO
313C
314 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine fv_up_switch(nn, nel, elem, njet, npoly, lenh, nba, ibagjet, rbagjet, nvent, ibaghol, rbaghol, p, rho, tk, u, sspk, x, v, a, nsensor, sensor_tab, fsav, npc, tf, ivolu, rvolu, mpolh, qpolh, epolh, ppolh, rpolh, gpolh, npolh, ifvnod, rfvnod, ifvtri, ifvpoly, ifvtadr, ifvpolh, ifvpadr, info, nns, nntr, ifv, npolha, dlh, cpapolh, cpbpolh, cpcpolh, rmwpolh, itagel, elsini, icontact, idpolh, elfmass, elfvel, ibufa, elema, tagela, pa, rhoa, tka, ua, brna, nna, ntga, ibpolh, dtpolh, nnt, nelt, xxxa, vvva, ncona, porosity, ityp, igeo, sspka, geo, pm, ipm, tpolh, elfehpy, cpdpolh, cpepolh, cpfpolh, eltg, iparg, mattg, igrouptg, igroupc, elbuf_tab, cfl_coef, pdisp_old, pdisp, wfext, python)
subroutine fvbag1(nn, nel, ibuf, elem, njet, ibagjet, rbagjet, nvent, ibaghol, rbaghol, p, rho, tk, u, sspk, x, v, a, nsensor, sensor_tab, fsav, npc, tf, ivolu, rvolu, mpolh, qpolh, epolh, centroid_polh, ppolh, rpolh, gpolh, ssppolh, npolh, ifvnod, rfvnod, ifvtri, ifvpoly, ifvtadr, ifvpolh, ifvpadr, info, nns, nntr, ifv, npolha, dlh, cpapolh, cpbpolh, cpcpolh, rmwpolh, itagel, elsini, icontact, idpolh, elfmass, elfvel, ibufa, elema, tagela, pa, rhoa, tka, ua, brna, nna, ntga, ibpolh, dtpolh, nnt, nelt, xxxa, vvva, ncona, porosity, lgauge, gauge, ityp, igeo, sspka, geo, pm, ipm, tpolh, elfehpy, cpdpolh, cpepolh, cpfpolh, eltg, iparg, mattg, igrouptg, igroupc, elbuf_tab, fext, cfl_coef, pdisp_old, pdisp, h3d_data, itab, wfext, python)
Definition fvbag1.F:74
subroutine fvbag2(ifv, ityp, nna, nvent, njet, ivolu, ibaghol, rbaghol, x, rvolu, xxxa, ncona, rbagjet, a, lgauge, gauge, nnt, fext, nskip, h3d_data, weight)
Definition fvbag2.F:41
#define min(a, b)
Definition macros.h:20
type(fvbag_data), dimension(:), allocatable fvdata
Definition fvbag_mod.F:128
integer, dimension(:), allocatable kmesh