39 1 IVOLU ,ICBAG ,NJET ,IBAGJET ,NVENT ,
40 2 IBAGHOL ,RVOLU ,RVOLUV ,RCBAG ,RBAGJET ,
41 3 RBAGHOL ,FSAV ,NORMAL ,NN ,
42 4 IGRSURF ,PORO ,IVOLUV ,RBAGVJET,
43 5 FR_MV ,IPARG ,IPART ,IPARTC ,IPARTTG ,
44 6 IPM ,PM ,ELBUF_TAB,IGROUPC ,IGROUPTG,
56#include "implicit_f.inc"
70 INTEGER IVOLU(*),ICBAG(NICBAG,*),NJET,IBAGJET(NIBJET,*),
71 . NVENT,IBAGHOL(NIBHOL,*),
72 . NN,IVOLUV(NIMV,*),FR_MV(*),IPARG(NPARG,*),
73 . (LIPART1,*),IPM(NPROPMI,*),
74 . IPARTC(NUMELC) ,IPARTTG(NUMELTG),
75 . IGROUPC(*),IGROUPTG(*)
76 INTEGER IGEO(NPROPGI,*)
79 . rvolu(*), rvoluv(nrvolu,*),rcbag(nrcbag,*),
poro(*),
80 . rbagjet(nrbjet,*),rbaghol(nrbhol,*),fsav(*),normal(3,*),rbagvjet(*),
81 . geo(npropg,*), pm(npropm,*)
83 TYPE(elbuf_struct_),
DIMENSION(NGROUP) :: ELBUF_TAB
84 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF
88 INTEGER I,II, NAV, K,NFT,IEL, IDEF, KK, , NNC,
89 . IPORT,IPORP,IPORA,IPORT1,IPORP1,IPORA1,IVDP,
90 . ij ,iv, radvois,pmain,
92 . ng,im,ifvent,nfunc,ity,mtn,
93 . iventyp,ileakage,iblockage
94 INTEGER NEL,TITREVENT(20)
95 INTEGER IK, I_INJ, I_TYPINJ, I_GAS, NGASES
98 . GAMA, CV, CP, PEXT, PDEF, DTPDEFI, DTPDEFC, TVENT, TSTOPE,
99 . APVENT, AVENT, BVENT,
100 . AMTOT, P, RO, VOL, HSPEC,
101 . gmtot, cpa, cpb, cpc, gmi, cpai, cpbi, cpci, tbag,
102 . cpd, cpe, cpf, cpdi, cpei, cpfi,
103 . u, dmout,
area, pcrit, pvois, aa, veps,
104 . aout, aout1, aoutot, flout, de, vvois,
105 . dgeout, dgmout, rnm, rmwi, rnmi, rmwg, rnmg,
106 . deri, temp, aisent, achemk, fchemk, vmax,
107 . fport,fporp,fpora,fport1,fporp1,fpora1,scalt,scalp,scals,
108 . fvdp, roex, uisent, tt1,
109 . f1(nn), f2(nn), ttf, svtfac, flc, fac, facp,
110 . aisent1, dgmin, dgein, gamai, rhoi, rho2, p2, eta,
116 CHARACTER*20 VENTTITLE
118 . FRMV6(2,6), FRMV6B(6)
121 pmain = fr_mv(nspmd+2)
138 r_igc1= pm(27,ivolu(66))
140 pcrit = p*(two/(gama+one))**(gama/(gama-one))
152 . cpai+half*cpbi*tbag+third*cpci*tbag*tbag
153 . +fourth*cpdi*tbag*tbag*tbag
155 . +one_fifth*cpfi*tbag*tbag*tbag*tbag)
158 i_inj = iabs(ibagjet(13,ij))
159 i_typinj = igeo(22,i_inj)
160 ngases = igeo(23,i_inj)
162 IF (i_typinj==1)
THEN
163 i_gas = igeo(100+(ik-1)*3+1,i_inj)
164 ELSE IF (i_typinj==2)
THEN
165 i_gas = igeo(100+(ik-1)*2+1,i_inj)
173 gmtot= rbagjet(20+(ik-1)*4+1,ij)
174 hspec= hspec+gmtot*tbag*
175 . (cpa+half*cpb*tbag+third*cpc*tbag*tbag
176 . +fourth*cpd*tbag*tbag*tbag
178 . +one_fifth*cpf*tbag*tbag*tbag*tbag)
181 hspec=hspec/
max(em20,amtot)
191 ipvent = ibaghol(2,iv)
192 ifvent = ibaghol(10,iv)
193 idtpdef= ibaghol(11,iv)
194 iventyp= ibaghol(13,iv)
195 iblockage= ibaghol(14,iv)
198 dtpdefi= rbaghol(4,iv)
199 dtpdefc= rbaghol(5,iv)
200 avent = rbaghol(2,iv)
201 tvent = rbaghol(3,iv)
202 bvent = rbaghol(6,iv)
203 tstope = rbaghol(14,iv)
212 titrevent(k)=ibaghol(14+k,iv)
213 venttitle(k:k) = achar(titrevent(k))
216 IF(ittf==11.OR.ittf==12.OR.ittf==13)
THEN
217 IF(idef==0.AND.p>pdef+pext
218 . .AND.dtpdefc>dtpdefi
219 . .AND.vol>em3*
area**three_half
221 . .AND.idtpdef==0)
THEN
223 IF(ispmd+1==pmain)
THEN
225 .
' ** AIRBAG VENT HOLE MEMBRANE IS DEFLATED **'
226 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
227 .
' VENT HOLE NUMBER',iv ,
' ',venttitle
229 .
' ** VENT HOLE MEMBRANE IS DEFLATED ',venttitle
232 IF(idef==0.AND.dtpdefc>dtpdefi
234 . .AND.idtpdef==1)
THEN
237 .
' ** AIRBAG VENT HOLE MEMBRANE IS DEFLATED **'
238 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
239 .
' VENT HOLE NUMBER',iv ,
' ',venttitle
241 .
' ** VENT HOLE MEMBRANE IS DEFLATED ',venttitle
243 IF(idef==0 .AND. tt>tvent+ttf
244 . .AND. tt<tstope+ttf)
THEN
246 IF(ispmd+1==pmain)
THEN
247 WRITE(iout,
'(A)')
' ** AIRBAG VENTING STARTS **'
248 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
249 .
' VENT HOLE NUMBER',iv ,
' ',venttitle
250 WRITE(istdo,
'(2A)')
' ** VENTING STARTS ',venttitle
253 IF(idef==1 .AND. tt>=tstope+ttf)
THEN
255 IF(ispmd+1==pmain)
THEN
256 WRITE(iout,
'(A)')
' ** AIRBAG VENTING STOPS **'
257 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
258 .
' VENT HOLE NUMBER',iv ,
' ',venttitle
259 WRITE(istdo,
'(2A)')
' ** VENTING STOPS ',venttitle
263 ELSE IF(ittf==0)
THEN
264 IF(idef==0.AND.p>pdef+pext.
265 . and.dtpdefc>dtpdefi.
266 . and.vol>em3*
area**three_half.
268 . .AND.idtpdef==0)
THEN
270 IF(ispmd+1==pmain)
THEN
272 .
' ** AIRBAG VENT HOLE MEMBRANE IS DEFLATED **'
273 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
274 .
' VENT HOLE NUMBER',iv ,
' ',venttitle
276 .
' ** VENT HOLE MEMBRANE IS DEFLATED ',venttitle
279 IF(idef==0.AND.dtpdefc>dtpdefi.
281 . .AND.idtpdef==1)
THEN
284 .
' ** AIRBAG VENT HOLE MEMBRANE IS DEFLATED **'
285 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
286 .
' VENT HOLE NUMBER',iv ,
' ',venttitle
288 .
' ** VENT HOLE MEMBRANE IS DEFLATED ',venttitle
290 IF(idef==0 .AND. tt>tvent
291 . .AND. tt<tstope)
THEN
293 IF(ispmd+1==pmain)
THEN
294 WRITE(iout,
'(A)')
' ** AIRBAG VENTING STARTS **'
295 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
296 .
' VENT HOLE NUMBER',iv ,
' ',venttitle
297 WRITE(istdo,
'(2A)')
' ** VENTING STARTS ',venttitle
300 IF(idef==1 .AND. tt>=tstope)
THEN
302 IF(ispmd+1==pmain)
THEN
303 WRITE(iout,
'(A)')
' ** AIRBAG VENTING STOPS **'
304 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
305 .
' VENT HOLE NUMBER',iv ,
' ',venttitle
306 WRITE(istdo,
'(2A)')
' ** VENTING STOPS ',venttitle
316 IF (ittf==13) tt1=tt-ttf-tvent
325 nnc=igrsurf(ipvent)%NSEG
327 IF(igrsurf(ipvent)%ELTYP(kk)==3)
THEN
328 k=igrsurf(ipvent)%ELEM(kk)
329 ELSEIF(igrsurf(ipvent)%ELTYP(kk)==7)
THEN
330 k=igrsurf(ipvent)%ELEM(kk) + numelc
332 k=igrsurf(ipvent)%ELEM(kk) + numelc + numeltg
334 aa = sqrt(normal(1,k)**2+normal(2,k)**2+normal(3,k)**2)
339 f1(kk) = (one -
poro(k))*aa
347 nnc=igrsurf(ipvent)%NSEG
350 ity=igrsurf(ipvent)%ELTYP(kk)
351 k =igrsurf(ipvent)%ELEM(kk)
355 im=ipart(1,ipartc(k))
357 im=ipart(1,iparttg(k))
362 IF (mtn/=19.AND.mtn/=58)
GOTO 200
365 nfunc = ipm(10,im)+ipm(6,im)
368 ELSEIF(ileakage==1)
THEN
372 ELSEIF(ileakage==2.OR.ileakage==3)
THEN
374 iport=ipm(10+nfunc-1,im)
378 flc=fport*get_u_func(iport,tt1*scalt,deri)
381 iporp=ipm(10+nfunc-2,im)
386 fac=fporp*get_u_func(iporp,p*scalp,deri)
388 fac=fporp*get_u_func(iporp,(p-pext)*scalp,deri)
393 IF(ity==3)ng=igroupc(k)
394 IF(ity==7)ng=igrouptg(k)
400 . elbuf_tab(ng)%GBUF%STRA,p,pext,iel,nel
401 ELSEIF(ileakage==5)
THEN
403 . elbuf_tab(ng),p,pext,iel,nel)
404 ELSEIF(ileakage==6)
THEN
406 . elbuf_tab(ng)%GBUF%STRA,p,pext,iel,nel)
411 IF(facp == zero)
THEN
412 iport=ipm(10+nfunc,im)
416 facp=fport*get_u_func(iport,tt1*scalt,deri)
422 IF (ity==7) k=k+numelc
423 aa = sqrt( normal(1,k)**2+normal(2,k)**2+normal(3,k)**2 )
428 IF(iblockage==1)
THEN
429 f1(kk) = (one -
poro(k))*aa*svtfac
432 f1(kk) = (one -
poro(k))*aa*svtfac
433 f2(kk) = facp*
poro(k) *aa*svtfac
452 aout = frmv6(1,1)+frmv6(1,2)+frmv6(1,3)+
453 . frmv6(1,4)+frmv6(1,5)+frmv6(1,6)
454 aout1 = frmv6(2,1)+frmv6(2,2)+frmv6(2,3)+
455 . frmv6(2,4)+frmv6(2,5)+frmv6(2,6)
466 ipora = ibaghol(5,iv)
467 fpora = rbaghol(9,iv)
468 avent=fpora*get_u_func(ipora,(p-pext)*scalp,deri)
471 iport = ibaghol(3,iv)
472 fport = rbaghol(7,iv)
473 bvent=fport*get_u_func(iport,tt1*scalt,deri)
489 fport = rbaghol(7,iv)
490 fporp = rbaghol(8,iv)
491 fpora = rbaghol(9,iv)
492 fport1= rbaghol(10,iv)
493 fporp1= rbaghol(11,iv)
494 fpora1= rbaghol(12,iv)
495 IF(ipora/=0.AND.ipvent/=0)
THEN
496 aout=fpora*avent*get_u_func(ipora,aout*scals,deri)
501 . aout=fport*aout*get_u_func(iport,tt1*scalt,deri)
503 . aout=fporp*aout*get_u_func(iporp,(p-pext)*scalp,deri)
504 IF(ipora1/=0.AND.ipvent/=0)
THEN
505 aout1=fpora1*bvent*get_u_func(ipora1,aout1*scals,deri)
510 . aout1=fport1*aout1*get_u_func(iport1,tt1*scalt,deri)
512 . aout1=fporp1*aout1*get_u_func(iporp1,(p-pext)*scalp,deri)
515 aisent=aisent+aout+aout1
516 ELSEIF(ifvent==2)
THEN
517 achemk=achemk+aout+aout1
520 u=fvdp*get_u_func(ivdp,(p-pext)*scalp,deri)
521 fchemk= fchemk+(aout+aout1)*u
522 IF(ispmd+1==pmain) rbaghol(18,iv)=u
523 ELSEIF(ifvent==4)
THEN
524 aisent1=aisent1+aout+aout1
531 aisent=aisent+aout+aout1
532 ELSEIF(ifvent==2)
THEN
533 achemk=achemk+aout+aout1
536 u=fvdp*get_u_func(ivdp,(p-pext)*scalp,deri)
537 fchemk= fchemk+(aout+aout1)*u
538 IF(ispmd+1==pmain) rbaghol(18,iv)=u
539 ELSEIF(ifvent==3)
THEN
540 achemk=achemk+aout+aout1
541 u=
max(two*(p-pext)/ro,zero)
543 fchemk= fchemk+(aout+aout1)*u
544 IF(ispmd+1==pmain) rbaghol(18,iv)=u
548 IF(ispmd+1==pmain)
THEN
558 aoutot=aisent+aisent1+achemk
565 roex =ro*(pext/p)**(one/gama)
566 temp =roex*aisent+ro*achemk+roex*aisent1
567 vmax =half*(p-pext)*vol/(gama-one)
568 . /
max(em20,hspec*temp*dt1)
569 vmax =
min(vmax,half*vol/
max(em20,aoutot*dt1))
573 pext =
max(pext,pcrit)
574 roex =ro*(pext/p)**(one/gama)
575 uisent=two*gama/(gama-one)*p/ro*(one-(pext/p)**((gama-one)/gama))
576 uisent=
max(uisent,zero)
578 uisent=
min(uisent,vmax)
584 fchemk=
min(fchemk,vmax*achemk)
586 dmout =dmout +ro*fchemk
594 eta=(gamai-one)/gamai
595 pcrit1=pext*(two/(gamai+one))**(one/eta)
597 rho2 =rhoi*(p2/pext)**(one/gamai)
598 uisent=two*pext*(one-(p2/pext)**eta)/(rhoi*eta)
599 uisent=
max(uisent,zero)
601 vmax =half*(pext-p)*vol/(gama-one)
602 . /
max(em20,hspec1*rhoi*aisent1*dt1)
603 uisent=
min(uisent,vmax)
604 flout=flout -aisent1*uisent
605 dgmin=dgmin +aisent1*uisent*rho2
609 pext =
max(pext,pcrit)
610 roex =ro*(pext/p)**(one/gama)
612 uisent=two*p*(one-(pext/p)**eta)/(ro*eta)
613 uisent=
max(uisent,zero)
615 uisent=
min(uisent,vmax)
616 flout=flout +aisent1*uisent
617 dmout=dmout +aisent1*uisent*roex
622 IF(ispmd+1==pmain)
THEN
627 ifvent = ibaghol(10,iv)
629 rbaghol(18,iv)=uisent
630 rbaghol(21,iv)= roex*uisent
631 . *(rbaghol(16,iv)+rbaghol(17,iv))
632 rbaghol(22,iv)=rbaghol(21,iv)*hspec
633 ELSEIF(ifvent==2.OR.ifvent==3)
THEN
634 rbaghol(18,iv)=
min(rbaghol(18,iv),vmax)
635 rbaghol(21,iv)= ro*rbaghol(18,iv)
636 . *(rbaghol(16,iv)+rbaghol(17,iv))
637 rbaghol(22,iv)=rbaghol(21,iv)*hspec
638 ELSEIF(ifvent==4)
THEN
639 rbaghol(18,iv)=uisent
640 rbaghol(21,iv)= roex*uisent
641 . *(rbaghol(16,iv)+rbaghol(17,iv))
642 rbaghol(22,iv)=rbaghol(21,iv)*hspec1
652 cv =rnm/amtot/(gama-one)
654 IF(ispmd+1==pmain)
THEN
661 fsav(7) =flout/
max(em20,aoutot)
670 i_inj = ibagjet(13,ij)
672 ngases = igeo(23,i_inj)
674 fsav(15)=fsav(15)+rbagjet(20+(ik-1)*4+2,ij)
676 fsav(16)=fsav(16)+rbagjet(11,ij)
678 fsav(17)=amtot*cv*tbag
688 dgmout=rnmi/
max(em20,rnm)*dmout
690 . cpai+half*cpbi*tout+third*cpci*tout*tout
691 . +fourth*cpdi*tout*tout*tout
693 . +one_fifth*cpfi*tout*tout*tout*tout)
694 dgein =dgmin*rvolu(63)
695 rvolu(22)=rvolu(22)+dgeout
696 rvolu(24)=rvolu(24)+dgmout
701 i_inj = iabs(ibagjet(13,ij))
702 i_typinj = igeo(22,i_inj)
703 ngases = igeo(23,i_inj)
705 IF (i_typinj==1)
THEN
706 i_gas = igeo(100+(ik-1)*3+1,i_inj)
707 ELSE IF (i_typinj==2)
THEN
708 i_gas = igeo(100+(ik-1)*2+1,i_inj)
719 gmtot= rbagjet(kk+1,ij)
721 dgmout=rnmg/
max(em20,rnm)*dmout
723 . cpa+half*cpb*tout+third*cpc*tout*tout
724 . +fourth*cpd*tout*tout*tout
726 . +one_fifth*cpf*tout*tout*tout*tout)
727 rbagjet(kk+3,ij)=rbagjet(kk+3,ij)+dgmout
728 rbagjet(kk+4,ij)=rbagjet(kk+4,ij)+dgeout
729 rbagjet( 9,ij)=rbagjet(9 ,ij)+dgmout
730 rbagjet(10,ij)=rbagjet(10,ij)+dgeout
751 IF(ittf==0.OR.ittf==11.OR.ittf==12.OR.ittf==13)
THEN
752 IF(idef==0.AND.p>pdef+pvois
753 . .AND.dtpdefc>dtpdefi
754 . .AND.vol>em3*
area**three_half)
THEN
757 IF(ispmd+1==pmain)
THEN
759 .
' ** CHAMBER COMMUNICATION MEMBRANE IS DEFLATED **'
761 .
' ** MONITORED VOLUME ',ivolu(1),
' **'
763 .
' ** CHAMBER COMMUNICATION MEMBRANE IS DEFLATED **'
766 IF(idef==0 .AND. tt>tvent+ttf)
THEN
768 IF(ispmd+1==pmain)
THEN
769 WRITE(iout,*)
' ** CHAMBER COMMUNICATION STARTS **'
770 WRITE(iout,*)
' ** MONITORED VOLUME ',ivolu(1),
' **'
771 WRITE(istdo,*)
' ** COMMUNICATION STARTS **'
777 nnc=igrsurf(ipvent)%NSEG
779 IF(igrsurf(ipvent)%ELTYP(kk)==3)
THEN
780 k=igrsurf(ipvent)%ELEM(kk)
781 ELSEIF(igrsurf(ipvent)%ELTYP(kk)==7)
THEN
782 k=igrsurf(ipvent)%ELEM(kk) + numelc
784 k=igrsurf(ipvent)%ELEM(kk) + numelc + numeltg
786 f1(kk) = sqrt( normal(1,k)**2+normal(2,k)**2+normal(3,k)**2 )
799 apvent = frmv6b(1)+frmv6b(2)+frmv6b(3)+
800 . frmv6b(4)+frmv6b(5)+frmv6b(6)
808 IF(ittf==13) tt1=tt-ttf-tvent
810 aout =aout*fport*get_u_func(iport,tt1*scalt,deri)
814 aout =aout*fporp*get_u_func(iporp,(p-pvois)*scalp,deri)
817 IF(idef==1 .AND. p>pvois.
818 . and.vol>em3*
area**three_half)
THEN
819 pvois =
max(pvois,pcrit)
820 u=two*gama/(gama-one)*p/ro*(one-(pvois/p)**((gama-one)/gama))
822 u=
min(u,half*vol/
max(em20,aout*dt1))
823 de=ro*(pvois/p)**(one/gama)*hspec
824 u=
min(u,(p-pvois)*half*
min(vol,vvois)
825 . /(gama-one)/de/
max(em20,aout*dt1))
827 dmout=flout*ro*(pvois/p)**(one/gama)
834 rcbag(8,i) = rcbag(8,i) + dmout*dt1
840 dgmout=rnmi/
max(em20,rnm)*dmout
842 . cpai+half*cpbi*tbag+third*cpci*tbag*tbag
843 . +fourth*cpdi*tbag*tbag*tbag
845 . +one_fifth*cpfi*tbag*tbag*tbag*tbag)
847 rvolu(22)=rvolu(22) + dgeout
848 rvolu(24)=rvolu(24) + dgmout
850 rvoluv(22,ii)=rvoluv(22,ii) - dgeout
851 rvoluv(24,ii)=rvoluv(24,ii) - dgmout
853 radvois= ivoluv(10,ii)
855 i_inj = iabs(ibagjet(13,ij))
856 i_typinj = igeo(22,i_inj)
857 ngases = igeo(23,i_inj)
858 nft=radvois+nrbjet*(ij-1)
861 IF (i_typinj==1)
THEN
862 i_gas = igeo(100+(ik-1)*3+1,i_inj)
863 ELSE IF (i_typinj==2)
THEN
864 i_gas = igeo(100+(ik-1)*2+1,i_inj)
875 gmtot= rbagjet(kk+1,ij)
877 dgmout=rnmg/
max(em20,rnm)*dmout
879 . cpa+half*cpb*tbag+third*cpc*tbag*tbag
880 . +fourth*cpd*tbag*tbag*tbag
882 . +one_fifth*cpf*tbag*tbag*tbag*tbag)
884 rbagjet(kk+3,ij) = rbagjet(kk+3,ij)+dgmout
885 rbagjet(kk+4,ij) = rbagjet(kk+4,ij)+dgeout
886 rbagjet( 9,ij) = rbagjet( 9,ij)+dgmout
887 rbagjet(10,ij) = rbagjet(10,ij)+dgeout
889 rbagvjet(nft+kk+3) = rbagvjet(nft+kk+3)-dgmout
890 rbagvjet(nft+kk+4) = rbagvjet(nft+kk+4)-dgeout
891 rbagvjet(nft+ 9) = rbagvjet(nft+ 9)-dgmout
892 rbagvjet(nft+10) = rbagvjet(nft+10)-dgeout
895 IF(ispmd+1==pmain)
THEN
897 fsav(9)=fsav(9)+flout
901 IF(ispmd+1==pmain)
THEN
902 fsav(9)=fsav(9)/
max(em20,fsav(8))