61
62
63
64 USE python_funct_mod, only : python_
65 USE elbufdef_mod
69 USE sensor_mod
70 use get_volume_area_mod , only : get_volume_area
71 use output_mod , only : output_
72
73
74
75#include "implicit_f.inc"
76
77
78
79#include "param_c.inc"
80#include "com01_c.inc"
81#include "com04_c.inc"
82#include "parit_c.inc"
83#include "task_c.inc"
84
85
86
87 INTEGER ,INTENT(IN) :: NSENSOR
88 INTEGER, INTENT(in) :: SICONTACT
89 INTEGER, INTENT(in) :: SPORO
90 INTEGER NPC(*),MONVOL(*),FR_MV(NSPMD+2,NVOLU),IADMV(4,*),ICONTACT(SICONTACT),IPARG(NPARG,*),
91 . IGEO(NPROPGI,*),IPART(*),IPARTC(*), IPARTTG(*),IPM(NPROPMI,*),IGROUPC(*), IGROUPTG(*)
92 INTEGER FLAG
93 INTEGER, DIMENSION(NSPMD+2), INTENT(in) :: FRONTIER_GLOBAL_MV
94 my_real x(3,*), a(3,*), tf(*), v(3,*), normal(3,*),
poro(*),
95 . volmon(*),fsav(nthvki,*),fsky(*),geo(npropg,*),pm(npropm,*),fext(*)
96 TYPE(ELBUF_STRUCT_), DIMENSION(NGROUP) :: ELBUF_TAB
97 TYPE(H3D_DATABASE) :: H3D_DATA
98 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
99 TYPE(MONVOL_STRUCT_), DIMENSION(NVOLU), INTENT(INOUT) :: T_MONVOL
100 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR), INTENT(IN) :: SENSOR_TAB
101 TYPE(OUTPUT_),INTENT(INOUT) :: OUTPUT
102 TYPE(PYTHON_), INTENT(IN) :: PYTHON
103
104
105
106
107
108
109 INTEGER I,ITYP,NCA,NN,IS,K1,K2,K6,KK1,KK2,PMAIN,KIBJET,KRBJET,KIBHOL,KRBHOL,NJET,IADJET,RADJET,NVENT,IADHOL,RADHOL
110 my_real,
dimension(nvolu) :: vol
111 integer :: uid
112
113
114 k1 = 1
115 kk1= 1
116 DO i=1,nvolu
117 ityp=monvol(k1+1)
118 IF(ityp==4.OR.ityp==5.OR.ityp==7.OR.ityp==9)THEN
119 volmon(kk1+31-1)=volmon(kk1+12-1)
120 ENDIF
121 k1 = k1 + nimv
122 kk1 = kk1 + nrvolu
123 ENDDO
124
125
126 if(flag==1) then
127 call get_volume_area(ispmd,nspmd,numelc,numeltg,
128 . nvolu,nsurf,intbag,sporo,
129 . numnod,sicontact,nimv,nrvolu,
130 . monvol,volmon,vol,x,
131 . normal,icontact,
poro,fr_mv,
132 . frontier_global_mv, t_monvol,igrsurf )
133 endif
134
135
136 k1 = 1
137 k6 = 1
138 kk1 = 1
139 k2 = 1 + nimv*nvolu
140 kk2 = 1 + nrvolu * nvolu
141 kibjet = k2 + licbag
142 kibhol = kibjet + libagjet
143 krbjet = kk2 + lrcbag
144 krbhol = krbjet + lrbagjet
145
146 DO i=1,nvolu
147 uid = monvol(k1)
148 ityp = monvol(k1+1)
149 nca = monvol(k1+2)
150 is = monvol(k1+3)
151 nn = igrsurf(is)%NSEG
152
153 njet = monvol(k1 + 7)
154 iadjet= kibjet+monvol(k1+ 8)
155 radjet= krbjet+monvol(k1+ 9)
156 nvent = monvol(k1 +10)
157 iadhol= kibhol+monvol(k1+11)
158 radhol= krbhol+monvol(k1+12)
159 IF(fr_mv(ispmd+1,i)/=0 .OR. fr_mv(nspmd+2,i)==ispmd+1) THEN
160 pmain = fr_mv(nspmd+2,i)
161 ELSE
162
163 GO TO 100
164 ENDIF
165 IF(ityp == 6 .OR. ityp == 8) GO TO 100
166
167
168 IF(flag == 1 .AND. (ityp == 6 .OR. ityp == 8)) GOTO 100
169 IF(flag == 2 .AND. .NOT.(ityp == 6 .OR. ityp == 8)) GOTO 100
170
171 IF(ityp==1)THEN
172
173
174
175 CALL volout(volmon(kk1),vol(i),fsav(1,i),pmain)
176 ELSEIF(ityp==2)THEN
177
178
179
180 CALL volpfv(monvol(k1),volmon(kk1),vol(i),fsav(1,i),npc,
181 2 tf ,pmain , output%TH%WFEXT, python, nfunct)
182 ELSEIF(ityp==3)THEN
183
184
185
186 CALL volpvga(monvol(k1),volmon(kk1),vol(i),fsav(1,i),nvent ,
187 2 monvol(iadhol) ,volmon(radhol),pmain, output%TH%WFEXT )
188 ELSEIF(ityp==4.OR.ityp==5)THEN
189
190
191
192 CALL airbaga(monvol(k1),njet ,monvol(iadjet),nvent ,monvol(iadhol),
193 2 monvol(k2),volmon(kk1),volmon(radjet),volmon(radhol),volmon(kk2),
194 3 volmon ,npc ,tf ,nsensor ,sensor_tab ,
195 4 vol(i) ,pmain ,output%TH%WFEXT, python)
196 ELSEIF(ityp==7.OR.ityp==9)THEN
197
198
199
200 CALL airbaga1(monvol(k1),njet ,monvol(iadjet),nvent ,monvol(iadhol),
201 2 monvol(k2),volmon(kk1),volmon(radjet),volmon(radhol),volmon(kk2),
202 3 volmon ,npc ,tf ,nsensor ,sensor_tab ,
203 4 vol(i) ,pmain ,geo ,igeo ,pm, output%TH%WFEXT,python)
204 ELSEIF(ityp==10)THEN
205
206
207
208 CALL volp_lfluid(monvol(k1),volmon(kk1),vol(i),fsav(1,i),npc,
209 2 tf ,pmain, output ,python,nfunct)
210 ENDIF
211
212 IF(ityp/=1)THEN
213 IF (iparit==0) THEN
214 CALL volpre(monvol(k1),volmon(kk1),njet ,monvol(iadjet),volmon(radjet),
215 2 nsensor ,sensor_tab ,x ,v ,a ,
216 3 t_monvol(i)%normal ,npc ,tf ,nn ,igrsurf(is)%NODES,
217 4 fext ,h3d_data,igrsurf(is)%ELTYP,igrsurf(is)%ELEM, output%TH%WFEXT,python)
218 ELSE
219 CALL volprep(monvol(k1),volmon(kk1),njet ,monvol(iadjet),volmon(radjet),
220 2 nsensor ,sensor_tab ,x ,v ,a ,
221 3 t_monvol(i)%normal ,npc ,tf ,nn ,igrsurf(is)%NODES,
222 4 iadmv(1,k6),fsky ,fsky ,fext, h3d_data ,
223 5 igrsurf(is)%ELTYP,igrsurf(is)%ELEM,
224 5 t_monvol(i)%OMP_OUTPUT%NODE_NUMBER,t_monvol(i)%OMP_OUTPUT%TOTAL_CONTRIBUTION_NUMBER,
225 6 t_monvol(i)%OMP_OUTPUT%CONTRIBUTION_INDEX,t_monvol(i)%OMP_OUTPUT%CONTRIBUTION_NUMBER,
226 7 t_monvol(i)%OMP_OUTPUT%NODE_ID,t_monvol(i)%OMP_OUTPUT%CONTRIBUTION,output%TH%WFEXT,python)
227 ENDIF
228 ENDIF
229 t_monvol(i)%UID = uid
230 t_monvol(i)%volume = vol(i)
231 t_monvol(i)%pressure = volmon(kk1+12-1)
232 t_monvol(i)%temperature = volmon(kk1+13-1)
233 t_monvol(i)%area = volmon(kk1+18-1)
234
235 100 CONTINUE
236
237 k1 = k1 + nimv
238 kk1= kk1 + nrvolu
239 k2 = k2 + nicbag*nca
240 kk2= kk2 + nrcbag*nca
241 k6 = k6 + nn
242
243 ENDDO
244
245
246 k1 = 1
247 k2 = 1 + nimv * nvolu
248 kk1 = 1
249 kk2 = 1 + nrvolu * nvolu
250 DO i=1,nvolu
251 ityp = monvol(k1+1)
252 is = monvol(k1+3)
253 nca = monvol(k1+2)
254 nn = igrsurf(is)%NSEG
255 njet = monvol(k1+7)
256 iadjet=kibjet+monvol(k1+ 8)
257 radjet=krbjet+monvol(k1+ 9)
258 nvent =monvol(k1 +10)
259 iadhol=kibhol+monvol(k1+11)
260 radhol=krbhol+monvol(k1+12)
261 IF(fr_mv(ispmd+1,i)==0.AND.nca==0) THEN
262 GO TO 200
263 ENDIF
264 IF(flag == 1 .AND. (ityp == 6 .OR. ityp == 8)) GOTO
265 IF(flag == 2 .AND. .NOT.(ityp == 6 .OR. ityp == 8)) GOTO 200
266
267
268
269
270 IF(ityp==3)THEN
272 1 monvol(k1) ,volmon(kk1) ,vol(i) ,fsav(1,i) ,nvent ,
273 2 monvol(iadhol),volmon(radhol),normal,nn ,igrsurf,
274 3 iparg ,elbuf_tab,fr_mv(1,i), igroupc, igrouptg)
275
276
277
278 ELSEIF(ityp==4.OR.ityp==5.OR.ityp==7.OR.ityp==9)THEN
279 IF(nca>0.AND.nspmd>1) THEN
281 1 fr_mv ,i ,nca,volmon(kk1),volmon,
282 2 monvol(k2),njet ,monvol ,volmon(krbjet),1,ityp,100 )
283 IF(fr_mv(ispmd+1,i)==0) GOTO 150
284 END IF
285
286
287
288 IF (ityp==7.OR.ityp==9) THEN
289 CALL airbagb1(monvol(k1),monvol(k2),njet ,monvol(iadjet),nvent,
290 2 monvol(iadhol),volmon(kk1),volmon ,volmon(kk2),volmon(radjet),
291 3 volmon(radhol),fsav(1,i) ,normal ,nn ,
292 4 igrsurf ,
poro ,monvol ,volmon(krbjet),
293 5 fr_mv(1,i) ,iparg ,ipart ,ipartc ,iparttg,
294 6 ipm ,pm ,elbuf_tab,igroupc ,igrouptg,
295 7 igeo ,geo )
296 ELSE
297
298
299
300 CALL airbagb(monvol(k1),monvol(k2),njet ,monvol(iadjet),nvent,
301 2 monvol(iadhol),volmon(kk1),volmon ,volmon(kk2),volmon(radjet),
302 3 volmon(radhol),fsav(1,i) ,normal ,nn ,
303 4 igrsurf ,
poro ,monvol ,volmon(krbjet),
304 5 fr_mv(1,i))
305 END IF
306
307 150 CONTINUE
308 IF(nca>0.AND.nspmd>1) THEN
310 1 fr_mv ,i ,nca,volmon(kk1),volmon,
311 2 monvol(k2),njet ,monvol ,volmon(krbjet),2,ityp,100)
312 END IF
313 ENDIF
314 200 CONTINUE
315 k1 = k1 + nimv
316 k2 = k2 + nicbag * nca
317 kk1 = kk1 + nrvolu
318 kk2 = kk2 + nrcbag * nca
319 ENDDO
320 RETURN
subroutine airbaga(ivolu, njet, ibagjet, nvent, ibaghol, icbag, rvolu, rbagjet, rbaghol, rcbag, rvoluv, npc, tf, nsensor, sensor_tab, vol, pmain, wfext, python)
subroutine airbagb(ivolu, icbag, njet, ibagjet, nvent, ibaghol, rvolu, rvoluv, rcbag, rbagjet, rbaghol, fsav, normal, nn, igrsurf, poro, ivoluv, rbagvjet, fr_mv)
subroutine airbaga1(ivolu, njet, ibagjet, nvent, ibaghol, icbag, rvolu, rbagjet, rbaghol, rcbag, rvoluv, npc, tf, nsensor, sensor_tab, vol, pmain, geo, igeo, pm, wfext, python)
subroutine airbagb1(ivolu, icbag, njet, ibagjet, nvent, ibaghol, rvolu, rvoluv, rcbag, rbagjet, rbaghol, fsav, normal, nn, igrsurf, poro, ivoluv, rbagvjet, fr_mv, iparg, ipart, ipartc, iparttg, ipm, pm, elbuf_tab, igroupc, igrouptg, igeo, geo)
subroutine poro(geo, nodpor, ms, x, v, w, af, am, skew, weight, nporgeo)
subroutine spmd_mv_ca(fr_mv, iv, nav, rvolu, rvoluv, icbag, njet, ivoluv, rbagvjet, iflag, ityp, ngases)
subroutine volout(rvolu, vol, fsav, pmain)
subroutine volp_lfluid(ivolu, rvolu, vol, fsav, npc, tf, pmain, output, python, nfunct)
subroutine volpfv(ivolu, rvolu, vol, fsav, npc, tf, pmain, wfext, python, nfunct)
subroutine volpre(ivolu, rvolu, njet, ibagjet, rbagjet, nsensor, sensor_tab, x, v, a, normal, npc, tf, nn, surf_nodes, fext, h3d_data, surf_eltyp, surf_elem, wfext, python)
subroutine volprep(ivolu, rvolu, njet, ibagjet, rbagjet, nsensor, sensor_tab, x, v, a, normal, npc, tf, nn, surf_nodes, iadmv, fsky, fskyv, fext, h3d_data, surf_eltyp, surf_elem, node_number, total_contribution_number, contribution_index, contribution_number, node_id, contribution, wfext, python)
subroutine volpvga(ivolu, rvolu, vol, fsav, nvent, ibaghol, rbaghol, pmain, wfext)
subroutine volpvgb(ivolu, rvolu, vol, fsav, nvent, ibaghol, rbaghol, normal, nn, igrsurf, iparg, elbuf_tab, fr_mv, igroupc, igrouptg)