45
46
47
48
49
50
51
52
53
54
55
57 USE elbufdef_mod
60 USE sensor_mod
61 USE python_funct_mod, only : python_
62
63
64
65#include "implicit_f.inc"
66
67
68
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"
75
76
77
78 INTEGER,INTENT(IN) :: NSENSOR
79 INTEGER, INTENT(IN) :: FLAG
80
81 INTEGER MONVOL(SMONVOL), NPC(SNPC),IFVMESH,ICONTACT(*), LGAUGE(3,NBGAUGE), IGEO(NPROPGI,NUMGEO)
82 INTEGER IPM(NPROPMI,NUMMAT), (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
93
94
95
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, , 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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
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
168
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)
173
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
183
184 idone=monvol(k1-1+57)
185 IF(idone == 1) GO TO 100
186 info=0
187
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)
194
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
215
216 nnfv= monvol(k1-1+46)
217 ntrfv=monvol(k1-1+47)
218 npolh=monvol(k1-1+49)
219
220 nba= monvol(k1-1+62)
221 ntga=monvol(k1-1+63)
222 nna= monvol(k1-1+64)
223
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
232
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
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) ,
259 a
fvdata(ifv)%IFVPADR ,info ,nnfv , ntrfv , ifv ,
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
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) ,
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
275 1 nns ,ntg, monvol(ki2) ,njet ,
fvdata(ifv)%NPOLY ,
fvdata(ifv)%LENH ,nba,
276 2 monvol(iadjet) ,volmon(radjet)
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) ,
284 a
fvdata(ifv)%IFVPADR ,info ,nnfv , ntrfv , ifv ,
287 d monvol(ki3) ,volmon(kr5
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),
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
306
307 monvol(k1-1+57)=1
308 ENDIF
309 ENDIF
310 100 k1=k1+nimv
311 kk1=kk1+nrvolu
312 ENDDO
313
314 RETURN
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)
subroutine fvbag2(ifv, ityp, nna, nvent, njet, ivolu, ibaghol, rbaghol, x, rvolu, xxxa, ncona, rbagjet, a, lgauge, gauge, nnt, fext, nskip, h3d_data, weight)
type(fvbag_data), dimension(:), allocatable fvdata
integer, dimension(:), allocatable kmesh