32 SUBROUTINE airbaga1(IVOLU ,NJET ,IBAGJET ,NVENT ,IBAGHOL ,
33 2 ICBAG ,RVOLU ,RBAGJET ,RBAGHOL ,RCBAG ,
34 3 RVOLUV ,NPC ,TF ,NSENSOR ,SENSOR_TAB ,
35 4 VOL ,PMAIN ,GEO ,IGEO ,PM ,
46#include "implicit_f.inc"
62 INTEGER ,
INTENT(IN) :: NSENSOR
63 INTEGER NPC(*),IVOLU(*),NJET,IBAGJET(NIBJET,*),
64 . NVENT,IBAGHOL(NIBHOL,*),ICBAG(NICBAG,*),PMAIN,
67 . tf(*),rvolu(*),rbagjet(nrbjet,*),
68 . rbaghol(nrbhol,*),rcbag(nrcbag,*),rvoluv
69 . geo(npropg,*),pm(npropm,*)
70 TYPE (SENSOR_STR_) ,
DIMENSION(NSENSOR) ,
INTENT(IN) :: SENSOR_TAB
71 DOUBLE PRECISION,
INTENT(INOUT) :: WFEXT
72 TYPE(PYTHON_),
intent(inout) :: PYTHON
76 INTEGER I, IMASS, ITEMP, ISENS, IFLU, IEQUI,
77 . IDEF, NAV, II, IS, IDTPDEF,IDPDEF,
79 INTEGER IK, KK, I_GAS, I_INJ, IMOL, NGASES, I_TYPINJ
81 . pdef, pext, pvois, dtpdefc,
82 . gama, amu, tstart, tsg,tsg2,
84 . rot, ftemp, fmass, dt,
area,
85 . cv, cp, cvg, cpg, cpa, cpb, cpc, cvi, cpi, cpai, cpbi, cpci,
88 . gmtot, gmtot_old, gmass, gmass_old, dgmass, dgmout,
90 . efac, dgeout, right, left,
91 . vold, veps, vmin, amtot_old, tbag_old, tbag,
94 . mw, cpd, cpe, cpf, cpdi, cpei, cpfi, r_igc1, dgmin, astime,
95 . dgein, hconv, text, molfr, mw_mix
100 r_igc1 =pm(27,ivolu(66))
113 dtpdefc= rbaghol(5,iv)
114 idtpdef= ibaghol(11,iv)
115 idpdef = ibaghol(12,iv)
118 IF(idef==0.AND.pold>pdef+pext)
THEN
119 dtpdefc = dtpdefc+dt1
121 ELSE IF (idtpdef==1)
THEN
122 IF (pold>pdef+pext)
THEN
126 dtpdefc = dtpdefc+dt1
129 ibaghol(12,iv) = idpdef
130 rbaghol(5,iv) = dtpdefc
132 IF(ispmd+1==pmain)
THEN
135 rbaghol(19,iv)= rbaghol(19,iv) + rbaghol(21,iv)*dt1
136 rbaghol(20,iv)= rbaghol(20,iv) + rbaghol(22,iv)*dt1
139 rvolu(54)=rvolu(54)+rvolu(55)*dt1
155 IF(idef==0.AND.pold>pdef+pvois)
156 . rcbag(5,i)=dtpdefc+dt1
170 tstart=sensor_tab(isens)%TSTART
177 IF(is==1.AND.(ittf==1.OR.ittf==2.OR.ittf==3))
THEN
203 vmin =em4*
area**three_half
204 veps =
max(zero,vmin-vol)
207 gmi = pext*(vol+veps)/(rmwi*tbag_old)
211 IF(ispmd+1==pmain)
THEN
213 .
' *** MONITORED VOLUME : INITIAL EQUILIBRIUM IS SET ***'
214 WRITE(iout,
'(A,I10,A,G20.13,A)')
215 .
' *** MONITORED VOLUME ',ivolu(1),
' VOLUME ',vol,
' ***'
217 .
' *** MONITORED VOLUME : INITIAL EQUILIBRIUM IS SET ***'
236 IF(dgmin > zero) is=1
243 i_inj = ibagjet(13,ij)
245 i_typinj = igeo(22,i_inj)
246 IF(i_typinj /= 2) cycle
251 tstart=sensor_tab(isens)%TSTART
253 IF(tt < tstart) cycle
255 astime = geo(201,i_inj)
256 tsg = (tt - tstart) / astime
257 ngases = igeo(23,i_inj)
261 molfr = geo(211+(ik-1)+1,i_inj)
262 i_gas = igeo(100+(ik-1)*2+1,i_inj)
263 imol = igeo(100+(ik-1)*2+2,i_inj)
266 mw_mix = mw_mix + mw*molfr
268 mw_mix = mw_mix + mw*finter_mixed(python,nfunct,imol,tsg,npc,tf)
271 rbagjet(19,ij) = mw_mix
288 i_inj = ibagjet(13,ij)
291 i_typinj = igeo(22,i_inj)
292 ngases = igeo(23,i_inj)
293 iflu = igeo(24,i_inj)
294 astime = geo(201,i_inj)
300 tstart=sensor_tab(isens)%TSTART
304 IF (i_typinj==1)
THEN
305 fmass = geo(208+(ik-1)*2+1,i_inj)
306 ftemp = geo(208+(ik-1)*2+2,i_inj)
307 i_gas = igeo(100+(ik-1)*3+1,i_inj)
308 imass = igeo(100+(ik-1)*3+2,i_inj)
309 itemp = igeo(100+(ik-1)*3+3,i_inj)
310 ELSE IF (i_typinj==2)
THEN
311 fmass = geo(209,i_inj)
312 ftemp = geo(210,i_inj)
313 molfr = geo(211+(ik-1)+1,i_inj)
314 imass = igeo(25,i_inj)
315 itemp = igeo(26,i_inj)
316 i_gas = igeo(100+(ik-1)*2+1,i_inj)
317 imol = igeo(100+(ik-1)*2+2,i_inj)
329 tsg = (tt - tstart) / astime
330 tsg2 = (tt - dt1 - tstart) / astime
331 IF (tsg2 <= zero) tsg2 = tsg
334 temp=ftemp*finter_mixed(python,nfunct,itemp,tsg,npc,tf)
338 efac= temp*(cpa+half*cpb*temp+third*cpc*temp*temp
339 . +fourth*cpd*temp*temp*temp
341 . +one_fifth*cpf*temp*temp*temp*temp)
347 gmtot_old=rbagjet(kk+1,ij)
348 gmass_old=rbagjet(kk+2,ij)
351 gmass=half * fmass * (finter_mixed(python,nfunct,imass,tsg,npc,tf) +
352 . finter_mixed(python,nfunct,imass,tsg2,npc,tf))
353 IF(i_typinj == 2)
THEN
354 mw_mix = rbagjet(19,ij)
356 gmass=gmass*mw*molfr/mw_mix
358 gmass=gmass*mw*finter_mixed(python,nfunct,imol,tsg,npc,tf)/mw_mix
361 IF(iflu==1)gmass = gmass*dt1 + gmass_old
362 dgmass=
max(zero,gmass-gmass_old)
363 right =right+dgmass*efac
364 rbagjet(11,ij) = rbagjet(11,ij)+dgmass*efac
375 gmtot = gmtot_old + dgmass
376 right = right -dgmass*tbag_old*
377 . (cpa+half*cpb*tbag_old
378 . +third*cpc*tbag_old*tbag_old
379 . +fourth*cpd*tbag_old*tbag_old*tbag_old
380 . -cpe/(tbag_old*tbag_old)
381 . +one_fifth*cpf*tbag_old*tbag_old*tbag_old*tbag_old
384 rbagjet(kk+1,ij) = gmtot
385 rbagjet(kk+2,ij) = gmass
386 amtot = amtot + dgmass
393 i_inj = iabs(ibagjet(13,ij))
394 i_typinj = igeo(22,i_inj)
395 ngases = igeo(23,i_inj)
397 IF (i_typinj==1)
THEN
398 i_gas = igeo(100+(ik-1)*3+1,i_inj)
399 ELSE IF (i_typinj==2)
THEN
400 i_gas = igeo(100+(ik-1)*2+1,i_inj)
413 dgmout = rbagjet(kk+3,ij)*dt1
414 dgeout = rbagjet(kk+4,ij)*dt1
416 right = right -dgeout
417 right = right +dgmout*tbag_old*
418 . (cpa+half*cpb*tbag_old
419 . +third*cpc*tbag_old*tbag_old
420 . +fourth*cpd*tbag_old*tbag_old*tbag_old
421 . -cpe/(tbag_old*tbag_old)
422 . +one_fifth*cpf*tbag_old*tbag_old*tbag_old*tbag_old
424 cvg = cpa+cpb*tbag_old+cpc*tbag_old*tbag_old
425 . +cpd*tbag_old*tbag_old*tbag_old
426 . +cpe/(tbag_old*tbag_old)
427 . +cpf*tbag_old*tbag_old*tbag_old*tbag_old-rmwg
429 gmtot = rbagjet(kk+1,ij)-dgmout
430 left = left +gmtot*cvg
431 right = right+gmtot*cvg*tbag_old
433 rbagjet(kk+1,ij) = gmtot
434 amtot = amtot - dgmout
451 cvi = cpai+cpbi*tbag_old+cpci*tbag_old*tbag_old
452 . +cpdi*tbag_old*tbag_old*tbag_old
453 . +cpei/(tbag_old*tbag_old)
455 gmi=gmi_old-dgmout+dgmin
460 right = right+(dgmout-dgmin)*tbag_old
461 . *(cpai+half*cpbi*tbag_old
462 . +third*cpci*tbag_old*tbag_old
463 . +fourth*cpdi*tbag_old*tbag_old*tbag_old
464 . -cpei/(tbag_old*tbag_old)
465 . +one_fifth*cpfi*tbag_old*tbag_old*tbag_old*tbag_old
467 right = right+dgein-dgeout
469 right = right+gmi*cvi*tbag_old
471 amtot = amtot-dgmout+dgmin
479 i_inj = iabs(ibagjet(13,ij))
480 i_typinj = igeo(22,i_inj)
481 ngases = igeo(23,i_inj)
483 IF (i_typinj==1)
THEN
484 i_gas = igeo(100+(ik-1)*3+1,i_inj)
485 ELSE IF (i_typinj==2)
THEN
486 i_gas = igeo(100+(ik-1)*2+1,i_inj)
491 gmtot= rbagjet(kk+1,ij)
499 left = left + half*(rnm*dv/vol+hconv*
area*dt1)
500 right = right- half*tbag_old*(rnm_old*dv/vold+hconv*
area*dt1)
501 . + hconv*
area*text*dt1
504 tbag =
max(tbag,zero)
509 rvolu(55) = hconv*
area*
max((tbag-text),zero)
513 cpi=cpai+cpbi*tbag+cpci*tbag*tbag
514 . +cpdi*tbag*tbag*tbag
516 . +cpfi*tbag*tbag*tbag*tbag
521 i_inj = iabs(ibagjet(13,ij))
522 i_typinj = igeo(22,i_inj)
523 ngases = igeo(23,i_inj)
525 IF (i_typinj==1)
THEN
526 i_gas = igeo(100+(ik-1)*3+1,i_inj)
527 ELSE IF (i_typinj==2)
THEN
528 i_gas = igeo(100+(ik-1)*2+1,i_inj)
538 cpg =cpa+cpb*tbag+cpc*tbag*tbag
541 . +cpf*tbag*tbag*tbag*tbag
544 gmtot= rbagjet(kk+1,ij)
556 IF(dt1==zero.OR.dv>zero)
THEN
559 q=-amu*sqrt(p*
area*rot/vol)*dv/
area/dt1
561 IF (ispmd+1==pmain)
THEN
562 wfext=wfext+(half*(p+pold+q+qold)-pext)*dv
563 rvolu(32)=rvolu(32) + (half*(p+pold)-pext)*dv
575 i_inj = iabs(ibagjet(13,ij))
576 ngases = igeo(23,i_inj)
579 rbagjet(kk+3,ij)=zero
580 rbagjet(kk+4,ij)=zero
587 cx = sqrt(2.*gama*p*vol/(gama-1.)/(amtot+
area*rot))
589 dt = dtfac1(9)*vol/
area/
max(em20,qx+sqrt(qx*qx+cx*cx))
595 IF(idtmin(9)==1.AND.dt<dtmin1(9))
THEN
597 IF (ispmd+1==pmain)
THEN
598 WRITE(iout,*)
'-- MINIMUM MONITORED VOLUME TIME STEP '
599 WRITE(istdo,*)
'-- MINIMUM MONITORED VOLUME TIME STEP '
601 ELSEIF(idtmin(9)==5.AND.dt<dtmin1(9))
THEN
603 IF (ispmd+1==pmain)
THEN
604 WRITE(iout,*)
'-- MINIMUM MONITORED VOLUME TIME STEP '
605 WRITE(istdo,*)
'-- MINIMUM MONITORED VOLUME TIME STEP '