46
47
48
49
50
51
52
53
54
55
56
57 USE output_mod, only : output_
59 USE elbufdef_mod
62 USE sensor_mod
63 USE python_funct_mod, only : python_
64
65
66
67#include "implicit_f.inc"
68
69
70
71#include "com01_c.inc"
72#include "com04_c.inc"
73#include "com08_c.inc"
74#include "param_c.inc"
75#include "scr18_c.inc"
76#include "tabsiz_c.inc"
77
78
79
80 type(output_), intent(inout) :: output
81 INTEGER,INTENT(IN) :: NSENSOR
82 INTEGER, INTENT(IN) :: FLAG
83
84 INTEGER MONVOL(SMONVOL), NPC(SNPC),IFVMESH,ICONTACT(*), LGAUGE(3,NBGAUGE), IGEO(NPROPGI,NUMGEO)
85 INTEGER IPM(NPROPMI,NUMMAT), IPARG(NPARG,NGROUP)
86 INTEGER IGROUPTG(NUMELTG), IGROUPC(NUMELC)
87 my_real volmon(svolmon), x(3,numnod),v(3,numnod), a(3,numnod),
88 . tf(stf), fsav(nthvki,sfsav/nthvki), gauge(llgauge,nbgauge), geo(npropg,numgeo),
89 . pm(npropm,nummat), fext(3*numnod)
90 TYPE(ELBUF_STRUCT_), DIMENSION(NGROUP) :: ELBUF_TAB
91 TYPE(H3D_DATABASE) :: H3D_DATA
92 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) ,INTENT(IN) :: SENSOR_TAB
93 INTEGER,INTENT(IN) :: ITAB(NUMNOD), WEIGHT(NUMNOD)
94 DOUBLE PRECISION,INTENT(INOUT) :: WFEXT
95 TYPE(PYTHON_) :: PYTHON
96
97
98
99 INTEGER N, ITYP, NNFV, NTRFV, NPOLH, IFV, INFO, IDONE
100 INTEGER NJET, IADJET, RADJET, NVENT, IADHOL, RADHOL
101 INTEGER K1, K2, KIBJET, KIBHOL, KIBALE
102 INTEGER KK1, KK2, KRBJET, KRBHOL, KRBALE
103 INTEGER NNS, NTG, NBA, NTGA, NNA, NNI, NTGI, NNT, NTGT
104 INTEGER KI1, KI2, KI3, KI4, KI5
105 INTEGER KR1, KR2, KR3, KR4, KR5, KR6, KR7, KR8, KR9
106 INTEGER KIA1, KIA2, KIA3, KIA4, KIA5, KIA6, KIA7, KIA8
107 INTEGER KRA1, KRA2, KRA3, KRA4, KRA5, KRA6, KRA7, KRA8
108 INTEGER NSKIP, IEQUI
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
157
158
159 k1=1
160 k2=1+nimv*nvolu
161 kibjet=k2+licbag
162 kibhol=kibjet+libagjet
163 kibale=kibhol+libaghol
164 kk1=1
165 kk2=1+nrvolu*nvolu
166 krbjet=kk2+lrcbag
167 krbhol=krbjet+lrbagjet
168 krbale=krbhol+lrbaghol
169 ifv=0
170 ifvmesh=0
171
172 DO n=1,nvolu
173 ityp=monvol(k1-1+2)
174 IF (ityp == 6.OR.ityp == 8) THEN
175 ifv = monvol(k1 -1 +45)
176
177 iequi=monvol(k1-1+15)
178 IF(tt < volmon(kk1-1+49).AND.iequi >= 1) THEN
179 monvol(k1-1+39)=0
180 nskip=mod(ncycle,iequi)
181 ELSE
182 monvol(k1-1+39)=1
183 nskip=0
184 ENDIF
185 IF(nskip >= 1 .AND.
kmesh(ifv) > 1)
GO TO 100
186
187 idone=monvol(k1-1+57)
188 IF(idone == 1) GO TO 100
189 info=0
190
191 njet=monvol(k1+7)
192 iadjet=kibjet+monvol(k1+8)
193 radjet=krbjet+monvol(k1+9)
194 nvent=monvol(k1+10)
195 iadhol=kibhol+monvol(k1+11)
196 radhol=krbhol+monvol(k1+12)
197
198 nns=monvol(k1-1+32)
199 ntg=monvol(k1-1+33)
200 nni=monvol(k1-1+68)
201 ntgi=monvol(k1-1+69)
202 nnt=nns+nni
203 ntgt=ntg+ntgi
204 ki1=kibale+monvol(k1-1+31)
205 ki2=ki1+nnt
206 ki3=ki2+3*ntgt
207 ki4=ki3+ntgt
208 ki5=ki4+ntgt
209 kr1=krbale+monvol(k1-1+34)
210 kr2=kr1+nnt
211 kr3=kr2+nnt
212 kr4=kr3+nnt
213 kr5=kr4+3*nnt
214 kr6=kr5+ntgt
215 kr7=kr6+ntgt
216 kr8=kr7+ntgt
217 kr9=kr8+ntgt
218
219 nnfv= monvol(k1-1+46)
220 ntrfv=monvol(k1-1+47)
221 npolh=monvol(k1-1+49)
222
223 nba= monvol(k1-1+62)
224 ntga=monvol(k1-1+63)
225 nna= monvol(k1-1+64)
226
227 kia1=ki4 +2*ntgt
228 kia2=kia1+2*nba
229 kia3=kia2+12*nba
230 kia4=kia3+2*ntgt
231 kia5=kia4+nna
232 kia6=kia5+3*ntga
233 kia7=kia6+ntga
234 kia8=kia7+8*nba
235
236 kra1=
min(svolmon, kr9 +nnt)
237 kra2=kra1+nna
238 kra3=kra2+nna
239 kra4=kra3+nna
240 kra5=kra4+3*nna
241 kra6=kra5+3*nna
242 kra7=kra6+3*nna
243 kra8=kra7+ntgi
244
245 IF (ityp == 8) THEN
246 cfl_coef =
fvdata(ifv)%CFL_COEF
247 ELSE
248 cfl_coef = dtfac1(52)
249 ENDIF
250 IF(flag == 1 .AND. nskip < 1) THEN
251 IF (monvol(k1+74-1) >= 0) THEN
253 1 nns ,ntg ,monvol(ki1) , monvol(ki2) ,njet ,
254 2 monvol(iadjet) ,volmon(radjet) ,nvent,monvol(iadhol), volmon(radhol) ,
255 3 volmon(kr1) ,volmon(kr2) ,volmon(kr3) , volmon
256 4 x ,v ,a , nsensor
257 5 fsav(1,n) ,npc ,tf , monvol(k1) ,volmon(kk1) ,
262 a
fvdata(ifv)%IFVPADR ,info ,nnfv , ntrfv
265 d monvol(ki3) ,volmon(kr5) ,icontact
266 e volmon(kr6) ,volmon(kr7) ,monvol(kia4) , monvol(kia5) , monvol(kia6) ,
267 f volmon(kra1) ,volmon(kra2) ,volmon(kra3) , volmon(kra4) , monvol(kia7) ,
268 g nna ,ntga ,
fvdata(ifv)%IBPOLH ,
fvdata(ifv)%DTPOLH , nnt ,
269 h ntgt ,volmon(kra5) ,volmon
270 i lgauge ,gauge ,ityp , igeo,volmon(kra8) ,
271 j geo ,pm ,ipm ,
fvdata(ifv)%TPOLH , volmon(kr8) ,
273 l monvol(ki4) ,iparg ,monvol(ki5) ,
274 m igrouptg ,igroupc ,elbuf_tab , fext , cfl_coef ,
275 n
fvdata(ifv)%PDISP_OLD ,
fvdata(ifv)%PDISP ,h3d_data , itab , wfext, python)
276 ELSE
278 1 nns ,ntg, monvol(ki2) ,njet ,
fvdata(ifv)%NPOLY ,
fvdata(ifv)%LENH ,nba,
279 2 monvol(iadjet) ,volmon(radjet) ,nvent,monvol(iadhol), volmon(radhol),
280 3 volmon(kr1) ,volmon(kr2) ,volmon(kr3) , volmon(kr4) , volmon(kr9) ,
281 4 x ,v ,a , nsensor , sensor_tab ,
282 5 fsav(1,n) ,npc ,tf , monvol(k1) , volmon(kk1) ,
287 a
fvdata(ifv)%IFVPADR ,info ,nnfv , ntrfv , ifv ,
290 d monvol(ki3) ,volmon(kr5) ,icontact ,
fvdata(ifv)%IDPOLH ,
291 e volmon(kr6) ,volmon(kr7) ,monvol(kia4) , monvol(kia5),monvol(kia6),
292 f volmon(kra1) ,volmon(kra2) ,volmon(kra3) , volmon(kra4),monvol(kia7),
293 g nna ,ntga ,
fvdata(ifv)%IBPOLH ,
fvdata(ifv)%DTPOLH , nnt,
294 h ntgt ,volmon(kra5) ,volmon(kra6) , monvol(kia8),volmon(kra7),
295 i ityp ,igeo,volmon(kra8) ,
296 j geo ,pm ,ipm ,
fvdata(ifv)%TPOLH , volmon(kr8)
298 l monvol(ki4) ,iparg ,monvol(ki5) ,
299 m igrouptg ,igroupc ,elbuf_tab, cfl_coef ,
300 n
fvdata(ifv)%PDISP_OLD ,
fvdata(ifv)%PDISP ,wfext, python)
301 ENDIF
302 ELSEIF (flag == 2) THEN
303 CALL fvbag2(ifv , ityp , nna , nvent , njet ,
304 . monvol(k1), monvol(iadhol), volmon(radhol),
305 . x , volmon(kk1) , volmon(kra5
306 . a , lgauge , gauge , nnt , fext ,
307 . nskip , h3d_data , weight)
308
309
310 monvol(k1-1+57)=1
311 ENDIF
312 ENDIF
313 100 k1=k1+nimv
314 kk1=kk1+nrvolu
315 ENDDO
316
317 RETURN
subroutine fv_up_switch(output, 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(output, 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