29 SUBROUTINE volpvga(IVOLU ,RVOLU ,VOL , FSAV ,NVENT ,
30 . IBAGHOL ,RBAGHOL ,PMAIN, WFEXT )
36#include "implicit_f.inc"
47 INTEGER IVOLU(*),NVENT,IBAGHOL(NIBHOL,*),PMAIN
48 my_real rvolu(*),vol,fsav(*),rbaghol(nrbhol,*)
55 . amtot,energy,energ_old,dmout,deout,fac,
56 . pdef,dtpdefc,m0, vol0
57 my_real trelax,dein, pext, pini, cv, temperature
60 DOUBLE PRECISION,
INTENT(INOUT) :: WFEXT
65 min_tvent =
min(min_tvent, rbaghol(3, ii))
76 dtpdefc= rbaghol(5,iv)
77 IF(idef <= 0 .AND. pold > pdef + pext)
78 . rbaghol(5,iv)=dtpdefc+dt1
107 IF (iequi == 0 .OR. trelax == zero)
THEN
108 amtot=amtot-dmout*dt1
111 fac = half*(gama-one)*dv
112 IF(trelax == zero .OR. tt > trelax)
THEN
117 energy= ((one-fac/(vold-vinc))*energ_old +(dein-deout)*dt1) /
118 . (one+fac/(vol-vinc))
119 energy =
max(energy,zero)
121 pres=(gama-one)*energy/(vol-vinc)
122 ELSE IF (iequi == 1)
THEN
123 IF (tt <= trelax)
THEN
124 pres = pext + tt * (pini - pext) / trelax
125 energy = pres * (vol - vinc) / (gama - one)
126 amtot = m0 * pres * vol / (pext * vol0)
128 pres = pext * amtot / m0 * vol0 / vol
129 energy = pres * (vol - vinc) / (gama - one)
131 ELSE IF (iequi == 2)
THEN
132 IF (tt <= trelax)
THEN
133 pres = pext + tt * (pini - pext) / trelax
134 energy = pres * (vol - vinc) / (gama - one)
135 amtot = m0 * (pres / pext)**(one / gama) * vol / vol0
137 pres = pext * (amtot / m0 * vol0 / vol)**gama
138 energy = pres * (vol - vinc) / (gama - one)
142 IF (tt > min_tvent .AND. tt > trelax)
THEN
148 IF(dt1==zero.OR.dv>zero)
THEN
151 q=-amu*sqrt(pres*
area*rot/vol)*dv/
area/dt1
160 temperature = energy / (cv * amtot)
170 IF (ispmd+1==pmain)
THEN
171 wfext=wfext+(half*(q+qold+pres+pold)-pext)*dv
205 SUBROUTINE volpvgb(IVOLU ,RVOLU ,VOL ,FSAV ,NVENT ,
206 . IBAGHOL ,RBAGHOL ,NORMAL ,NN ,IGRSURF ,
207 . IPARG ,ELBUF_TAB,FR_MV, IGROUPC,IGROUPTG)
218#include "implicit_f.inc"
222#include "param_c.inc"
223#include "units_c.inc"
224#include "com01_c.inc"
225#include "com04_c.inc"
226#include "com08_c.inc"
228#include "vect01_c.inc"
232 INTEGER IVOLU(*),NVENT,IBAGHOL(NIBHOL,*), FR_MV(*),
234 INTEGER,
INTENT(IN) :: IGROUPC(*), IGROUPTG(*)
236 . rvolu(*),fsav(*),rbaghol(nrbhol,*),normal(3,*)
237 TYPE(elbuf_struct_)
DIMENSION(NGROUP)TARGET :: ELBUF_TAB
238 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF
242 INTEGER ,IDEF,KK,PMAIN,
243 . II,IPVENT,NNC,KAD,IPORT,,IPORA,
244 . IOFF,NG,NEL,ISTRA,,IOK
247 . gama, pext, pdef, avent, vol, vinc,
248 . amtot, energy, p, ro,
249 . u, deout, dmout, tvent,
area, pcrit, aoutot,
250 . apvent,aout,flout,de,deri,dtpdefi,dtpdefc,
251 . f1(nn),scalt,scalp,scals
258 .
DIMENSION(:),
POINTER :: offg
260 pmain = fr_mv(nspmd+2)
277 ro = amtot/(vol-vinc)
278 pcrit = p*(two/(gama+one))**(gama/(gama-one))
284 idef = ibaghol(1, ii)
285 ipvent = ibaghol(2, ii)
287 pdef = rbaghol(1, ii)
288 dtpdefi= rbaghol(4, ii)
289 dtpdefc= rbaghol(5, ii)
290 avent = rbaghol(2, ii)
291 tvent = rbaghol(3, ii)
293 IF(idef<=0.AND.p>pdef+pext.
294 . and.dtpdefc>dtpdefi.
295 . and.vol>0.001*
area**1.5)
THEN
297 IF(ispmd+1==pmain)
THEN
299 .
' *** MONITORED VOLUME MEMBRANE IS DEFLATED ***'
300 WRITE(iout,*)
' *** MONITORED VOLUME ',ivolu(1),
301 .
' VENT HOLES MEMBRANE NUMBER ',ii,
' ***'
302 WRITE(istdo,*)
' *** VENT HOLES MEMBRANE IS DEFLATED ***'
305 IF(idef<=0 .AND. tt>tvent)
THEN
307 IF(ispmd+1==pmain)
THEN
309 .
' *** MONITORED VOLUME VENTING STARTS ***'
310 WRITE(iout,*)
' *** MONITORED VOLUME ',ivolu(1),
311 .
' VENT HOLES MEMBRANE NUMBER ',ii,
' ***'
312 WRITE(istdo,*)
' *** VENTING STARTS ***'
320 nnc=igrsurf(ipvent)%NSEG
322 IF(igrsurf(ipvent)%ELTYP(kk)==3)
THEN
324 k=igrsurf(ipvent)%ELEM(kk)
325 ELSEIF(igrsurf(ipvent)%ELTYP(kk)==7)
THEN
327 k=igrsurf(ipvent)%ELEM(kk) + numelc
330 k=igrsurf(ipvent)%ELEM(kk) + numelc + numeltg
332 f1(kk) = sqrt( normal(1,k)**2+normal(2,k)**2+normal(3,k)**2 )
339 nnc=igrsurf(ipvent)%NSEG
341 IF(igrsurf(ipvent)%ELTYP(kk)==3)
THEN
343 k=igrsurf(ipvent)%ELEM(kk)
358 offg => elbuf_tab(ng)%GBUF%OFF
359 ioff = int(offg(k-nft))
363 ELSEIF(igrsurf(ipvent)%ELTYP(kk)==7)
THEN
365 k=igrsurf(ipvent)%ELEM(kk)
380 offg => elbuf_tab(ng)%GBUF%OFF
381 ioff=int(offg(k-nft))
391 f1(kk) = sqrt( normal(1,k)**2+normal(2,k)**2+normal(3,k)**2 )
401 IF (idef==1.OR.idef>=2)
THEN
407 IF(fr_mv(ispmd+1)/=0)
THEN
411 apvent = frmv6(1)+frmv6(2)+frmv6(3)+
412 . frmv6(4)+frmv6(5)+frmv6(6)
424 IF(idef>0 .AND. p>pext.
425 . and.vol>em3*
area**1.5)
THEN
429 IF(ipora/=0.AND.ipvent/=0)
THEN
430 aout=avent*get_u_func(ipora,aout*scals,deri)
434 IF(iport/=0)aout=aout*get_u_func(iport,tt*scalt,deri)
435 IF(iporp/=0)aout=aout*get_u_func(iporp,(p-pext)*scalp,deri)
442 pext =
max(pext,pcrit)
443 u=two*gama/(gama-one)*p/ro*(one-(pext/p)**((gama-one)/gama))
445 de=(energy/(vol-vinc)+p)*(pext/p)**(one/gama)
446 u=
min(u,(p-pext)*half*(vol-vinc)
447 . /(gama-one)/de/
max(em20,aoutot*dt1))
448 u=
min(u,half*(vol-vinc)/
max(em20,aoutot*dt1))
451 dmout=flout*ro*(pext/p)**(one/gama)
459 IF(ispmd+1==pmain)
THEN
461 fsav(7)=flout/
max(em20,aoutot)
464 rvolu(22)=rvolu(22) + deout
465 rvolu(24)=rvolu(24) + dmout
subroutine monvol0(monvol, volmon, x, a, npc, tf, v, normal, fsav, nsensor, sensor_tab, igrsurf, fr_mv, iadmv, sicontact, sporo, fsky, icontact, poro, iparg, elbuf_tab, geo, igeo, pm, ipm, ipart, ipartc, iparttg, igroupc, igrouptg, fext, flag, h3d_data, t_monvol, frontier_global_mv, output, python)
subroutine volpvgb(ivolu, rvolu, vol, fsav, nvent, ibaghol, rbaghol, normal, nn, igrsurf, iparg, elbuf_tab, fr_mv, igroupc, igrouptg)