49 2 IBAGJET, RBAGJET, NVENT , IBAGHOL, RBAGHOL ,
50 3 P , RHO , TK , U , SSPK ,
51 4 X , V , A , NSENSOR, SENSOR_TAB,
52 5 FSAV , NPC , TF , IVOLU , RVOLU ,
53 6 MPOLH , QPOLH , EPOLH ,
54 7 PPOLH , RPOLH , GPOLH ,
55 8 NPOLH , IFVNOD , RFVNOD , IFVTRI ,
56 9 IFVPOLY, IFVTADR, IFVPOLH ,
57 A IFVPADR, INFO , NNS , NNTR , IFV ,
58 B NPOLHA , DLH , CPAPOLH ,
59 C CPBPOLH, CPCPOLH, RMWPOLH ,
60 D ITAGEL , ELSINI , ICONTACT , IDPOLH ,
61 E ELFMASS, ELFVEL , IBUFA , ELEMA , TAGELA ,
62 F PA , RHOA , TKA , UA , BRNA ,
63 G NNA , NTGA , IBPOLH , DTPOLH , NNT ,
64 H NELT , XXXA , VVVA , NCONA , POROSITY,
65 I ITYP , IGEO , SSPKA ,
66 J GEO , PM , IPM , TPOLH , ELFEHPY ,
67 K CPDPOLH, CPEPOLH, CPFPOLH ,
68 L ELTG , IPARG , MATTG ,
69 M IGROUPTG,IGROUPC, ELBUF_TAB, CFL_COEF,
70 N PDISP_OLD, PDISP, WFEXT, PYTHON )
86#include "implicit_f.inc"
100#include "tabsiz_c.inc"
101#include "mvsiz_p.inc"
105 INTEGER,
INTENT(IN) :: NPOLY, LENH, NPOLH, NBA,NSENSOR
106 INTEGER,
INTENT(IN) :: NN, NEL, NELT, ELEM(3, NELT), NJET, IBAGJET(NIBJET, NJET),
107 . NVENT, NPC(SNPC), IFVNOD(3,NNS), IFVTRI(6,NNTR),
108 . IFVPOLY(NNTR),IFVTADR(NPOLY+1), IFVPOLH(LENH), IFVPADR(NPOLH + 1),
109 . NNS, NNTR, IFV, NPOLHA, ITAGEL(NELT), (SICONTACT),
110 . IDPOLH(NPOLH), IBUFA(NNA), ELEMA(3,NTGA), TAGELA(NTGA), BRNA(8,NBA),
111 . NNA, NTGA, IBPOLH(NPOLH), NNT, NCONA(16,NNA),
112 . ITYP, IGEO(NPROPGI,*), IPM(NPROPMI,NUMMAT), IPARG(NPARG,NGROUP)
113 INTEGER,
INTENT(INOUT) :: IVOLU(), INFO, IBAGHOL(NIBHOL, NVENT)
114 INTEGER,
INTENT(IN) :: ELTG(NELT), MATTG(NELT), IGROUPTG(NUMELTG), IGROUPC(NUMELC)
116 MY_REAL,
INTENT(IN) ::
117 . X(3,NUMNOD), V(3,NUMNOD), A(3,NUMNOD),
118 . TF(STF), XXXA(3,NNA), VVVA(3,NNA),
119 . GEO(,NUMGEO), PM(NPROPM,NUMMAT), CFL_COEF, PDISP_OLD
120 MY_REAL,
INTENT(INOUT) :: POROSITY(NELT - NEL)
121 MY_REAL,
INTENT(INOUT) :: RBAGJET(NRBJET,NJET)
122 MY_REAL,
INTENT(INOUT) ::
123 . P(NNT), RHO(NNT), TK(NNT), U(3,NNT), SSPK(NNT), MPOLH(NPOLH), QPOLH(3,NPOLH),
124 . EPOLH(NPOLH), PPOLH(NPOLH), RPOLH(NPOLH), GPOLH(), RFVNOD(2,NNS), DLH,
125 . CPAPOLH(NPOLH), CPBPOLH(NPOLH), CPCPOLH(NPOLH), RMWPOLH(NPOLH), ELSINI(NELT),
126 . ELFMASS(NELT), ELFVEL(NELT), PA(NNA), RHOA(NNA), TKA(NNA),SSPKA(NNA), UA(3,NNA),
127 . dtpolh(npolh), fsav(nthvki), tpolh(npolh), cpdpolh(npolh), cpepolh(npolh),
128 . cpfpolh(npolh), rbaghol(nrbhol,nvent), pdisp, elfehpy(nelt), rvolu(nrvolu)
129 TYPE(elbuf_struct_),
DIMENSION(NGROUP),
INTENT(IN) :: ELBUF_TAB
130 TYPE (SENSOR_STR_) ,
DIMENSION(NSENSOR) ,
INTENT(IN) :: SENSOR_TAB
131 DOUBLE PRECISION,
INTENT(INOUT) :: WFEXT
132 TYPE(PYTHON_),
INTENT(IN) :: PYTHON
136 INTEGER I, II, IINJ, IEL, N1, N2, N3, JEL,
137 . NN1, NN2, NN3, J, JJ, K, KK, ISENS, ,
138 . itagp(npolh), nv, ilvout, ipri,
139 . ivent, idef, iporp,
140 . itvent, phdt, i1, i2, icont(nnt),ivdp,ittf, idpdef,
142 . prepare_anim,iventyp
143 INTEGER TITREVENT(20)
146 . nodarea(nnt), x1, y1, z1, x2, y2, z2, x3, y3, z3,
147 . x12, y12, z12, x13, y13, z13, nrx, nry, nrz, area2,
148 . elarea(nelt),
norm(3,nelt), ksi, eta,
149 . pnorm(3,nntr), pvolu(npolh),
area, nx, ny,
150 . nz, gamai, cpai, cpbi, cpci, rmwi, ti,
152 . rhoi, datainj(6,njet), scalt,
153 . fvel, tstart, tsg, injvel,
154 . cpa, cpb, cpc, efac,
155 . pu(3,npolh), gama, fel(nelt), dm(npolh),
156 . dq(3,npolh), de(npolh), dmi, rho1, re1, ux1,
157 . uy1, uz1, rho2, re2, ux2, uy2, uz2, vfx, vfy, vfz, vrel(nelt), ss(nelt), ss_,
158 .
alpha, rhom, rem, ruxm, ruym, ruzm, p1, p2,
159 . uel(3,nelt), area1, area3, ff, temp, pext, volg, volph,
160 . areap, areael, qa, qb, dtx, al, dd, ad, ssp,
161 . qx, vv, dmini(npolh), dmcpa(npolh), dmcpb(npolh),
162 . dmcpc(npolh), dmrmw(npolh), msini,
163 . rmw, cp, cv, rhoel(nelt), tkel(nelt), sspel(nelt), gama1, gama2,
164 . qvisc(npolh), amtot, pmean, pmean2, elsout(nelt),tmp(nel),
165 . area_vent(nvent), pm_vent(nvent), scalp, scals,
166 . aout, deri, pdef, pvoltmp,
167 . dtpdefi, dtpdefc, tvent,
poro(nelt), vola(nna),
168 . x23, y23, z23, x31, y31, z31, l12, l23, l31, h1,
169 . fac1, fac2, fac3, area_old, pp, dls(npolh), vmax, uu,
170 . pcrit, vx1, vy1, vz1, vx2, vy2, vz2,
171 . vx3, vy3, vz3, vvx, vvy, vvz, vel(nelt), fac,
172 . aoutot, svent(nvent), sventot, xxx(3,nnt),
173 . vvv(3,nnt), fvdp, rbid, ttf,
174 . dmcpd(npolh), dmcpe(npolh), dmcpf(npolh),
175 . cpd, cpe, cpf, temp0, pel(nelt), pstag, volno,tstope,
176 . enint, massflow, wfext0, eldmass(nel), eldehpy(nel), dmout, dhout,
177 . xx1, xx2, xx3, yy1, yy2, yy3, zz1, zz2, zz3, nnx, nny, nnz,
178 . pres_av, cp_av, cv_av, rgas_av, rho_av
181 LOGICAL :: EXIT_NEG_VOL,INJECTION_STARTED
187 CHARACTER*20 VENTTITLE
188 INTEGER :: NODE_ID(5), INODE
189 MY_REAL :: TAB_PVOL(NELT), DOT_PROD
190 MY_REAL :: MOMENTUM_FLUX_X(NELT), (NELT), MOMENTUM_FLUX_Z(NELT),
191 . MASS_FLUX(NELT), (NELT),
192 . CPA_FLUX(), CPB_FLUX(NELT), CPC_FLUX(NELT), CPD_FLUX(NELT),
193 . CPE_FLUX(), CPF_FLUX(NELT), RGAS_FLUX(NELT)
194 INTEGER(8) :: VEC_PTR_PLUS, VEC_PTR_MINUS
195 INTEGER :: COUNT, , PARAM_L_TYPE
196 MY_REAL :: CPAM, CPBM, CPCM, RGASM, CPDM, CPEM, CPFM
197 MY_REAL :: DTOLD, LAMBDA
217 IF(nbgauge > 0 )
THEN
218 ALLOCATE(
fvspmd(ifv)%GGG(3,nnt))
219 ALLOCATE(
fvspmd(ifv)%GGA(3,nna
221 ALLOCATE(
fvspmd(ifv)%AAA(3,nnt))
222 fvspmd(ifv)%AAA(1:3,1:nnt) = zero
229 i1=
fvspmd(ifv)%IBUF_L(1,i)
230 i2=
fvspmd(ifv)%IBUF_L(2,i)
237 i1=
fvspmd(ifv)%IBUF_L(1,i)
238 i2=
fvspmd(ifv)%IBUF_L(2,i)
244 IF (intbag/=0.AND.nvent>0.AND.ivolu(39)/=0)
THEN
246 i1=
fvspmd(ifv)%IBUF_L(1,i)
247 i2=
fvspmd(ifv)%IBUF_L(2,i)
248 icont(i1)=icontact(i2)
257 IF (intbag/=0.AND.nvent>0.AND.ivolu(39)/=0)
261 IF (ispmd/=
fvspmd(ifv)%PMAIN-1)
RETURN
274 IF (ivolu(74) == -2)
THEN
275 ALLOCATE(
fvdata(ifv)%TRI_TO_ELEM(2, nelt))
276 fvdata(ifv)%TRI_TO_ELEM(:, :) = 0
277 ALLOCATE(
fvdata(ifv)%ELEM_TO_TRI(npolh))
278 CALL intvector_create(vec_ptr_plus)
279 CALL intvector_create(vec_ptr_minus)
282 CALL intvector_clear(vec_ptr_plus)
283 CALL intvector_clear(vec_ptr_minus)
286 DO j = ifvpadr(i), ifvpadr(i+1)-1
289 DO k = ifvtadr(jj), ifvtadr(jj+1)-1
293 IF (ifvnod(1, n1) /= 2)
THEN
301 IF (ifvnod(1, n2) /= 2)
THEN
309 IF (ifvnod(1, n3) /= 2)
THEN
316 nx = (y2 - y1) * (z3 - z1) - (z2 - z1) * (y3 - y1)
317 ny = (z2 - z1) * (x3 - x1) - (x2 - x1) * (z3 - z1)
318 nz = (x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1)
321 nn1 = elem(1, abs(iel))
322 nn2 = elem(2, abs(iel))
323 nn3 = elem(3, abs(iel))
333 nnx = (yy2 - yy1) * (zz3 - zz1) - (zz2 - zz1) * (yy3 - yy1)
334 nny = (zz2 - zz1) * (xx3 - xx1) - (xx2 - xx1) * (zz3 - zz1)
335 nnz = (xx2 - xx1) * (yy3 - yy1) - (yy2 - yy1) * (xx3 - xx1)
336 dot_prod = nx * nnx + ny * nny + nz * nnz
346 fvdata(ifv)%TRI_TO_ELEM(1, iel) = i1
347 fvdata(ifv)%TRI_TO_ELEM(2, iel) = i2
349 IF (dot_prod >= zero)
THEN
350 CALL intvector_push_back(vec_ptr_minus, iel)
352 CALL intvector_push_back(vec_ptr_plus, iel)
353 fvdata(ifv)%TRI_TO_ELEM(1, iel
357 IF (dot_prod >= zero)
THEN
358 CALL intvector_push_back(vec_ptr_plus, iel)
360 CALL intvector_push_back(vec_ptr_minus, iel)
361 fvdata(ifv)%TRI_TO_ELEM(1, iel) = i2
362 fvdata(ifv)%TRI_TO_ELEM(2, iel) = i1
367 IF (ifvtri(5, kk) /= ifvtri(6, kk))
THEN
370 fvdata(ifv)%TRI_TO_ELEM(1, iel) = i
371 fvdata(ifv)%TRI_TO_ELEM(2, iel) = i
372 IF (dot_prod >= zero)
THEN
373 CALL intvector_push_back(vec_ptr_minus, iel)
375 CALL intvector_push_back(vec_ptr_plus, iel)
383 CALL intvector_get_size(vec_ptr_minus,
fvdata(ifv)%ELEM_TO_TRI(i)%MINUS_SIZE)
384 CALL intvector_get_size(vec_ptr_plus,
fvdata(ifv)%ELEM_TO_TRI(i)%PLUS_SIZE)
385 ALLOCATE(
fvdata(ifv)%ELEM_TO_TRI(i)%MINUS(
fvdata(ifv)%ELEM_TO_TRI(i)%MINUS_SIZE))
386 CALL intvector_copy_to(vec_ptr_minus,
fvdata(ifv)%ELEM_TO_TRI(i)%MINUS(1))
387 ALLOCATE(
fvdata(ifv)%ELEM_TO_TRI(i)%PLUS(
fvdata(ifv)%ELEM_TO_TRI(i)%PLUS_SIZE))
388 CALL intvector_copy_to(vec_ptr_plus,
fvdata(ifv)%ELEM_TO_TRI(i)%PLUS(1))
391 CALL intvector_delete(vec_ptr_plus)
392 CALL intvector_delete(vec_ptr_minus)
434 area2=sqrt(nrx**2+nry**2+nrz**2)
436 norm(1,iel)=nrx/area2
437 norm(2,iel)=nry/area2
438 norm(3,iel)=nrz/area2
440 tmp(iel) = one_over_6 * (x1*nrx+y1*nry+z1*nrz)
453 elarea(iel) = half * area2
454 nodarea(n1)=nodarea(n1)+one_over_6*area2
455 nodarea(n2)=nodarea(n2)+one_over_6*area2
456 nodarea(n3)=nodarea(n3)+one_over_6*area2
462 IF (dt1==zero.OR.ivolu(39)==0)
THEN
485 pvoltmp = third *
area * (nx * x1 + ny * x2 + nz * x3)
486 tab_pvol(iel) = pvoltmp
493 DO j = 1,
fvdata(ifv)%ELEM_TO_TRI(i)%MINUS_SIZE
494 iel =
fvdata(ifv)%ELEM_TO_TRI(i)%MINUS(j)
496 pvolu(i) = pvolu(i) + tab_pvol(iel)
498 DO j = 1,
fvdata(ifv)%ELEM_TO_TRI(i)%PLUS_SIZE
499 iel =
fvdata(ifv)%ELEM_TO_TRI(i)%PLUS(j)
501 pvolu(i) = pvolu(i) - tab_pvol(iel)
513 areael=areael+elarea(iel)
519 exit_neg_vol = .false.
522 IF(pvolu(i) <= 0) exit_neg_vol = .true.
525 ipri=mod(ncycle,iabs(ncpri))
526 IF(exit_neg_vol)
THEN
528 IF (pvolu(i)<=zero)
THEN
531 CALL ancmsg(msgid=185,anmode=aninfo,
532 . i1=idpolh(i),r1=pvolu(i),i3=i,i4=npolh)
546 cpapolh(1:npolh)=cpai
548 cpbpolh(1:npolh)=cpbi
550 cpcpolh(1:npolh)=cpci
552 rmwpolh(1:npolh)=rmwi
556 cpdpolh(1:npolh)=cpdi
558 cpepolh(1:npolh)=cpei
560 cpfpolh(1:npolh)=cpfi
564 IF (dt1==zero.OR.ivolu(39)==0)
THEN
567 mpolh(1:npolh)=rhoi*pvolu(1:npolh)
568 epolh(1:npolh)=mpolh(1:npolh)*efac
569 pu(1,1:npolh) = rvolu(67)
570 pu(2,1:npolh) = rvolu(68)
571 pu(3,1:npolh) = rvolu(69)
572 qpolh(1,1:npolh) = mpolh(1:npolh)*pu(1,1:npolh)
573 qpolh(2,1:npolh) = mpolh(1:npolh)*pu(2,1:npolh)
574 qpolh(3,1:npolh) = mpolh(1:npolh)*pu(3,1:npolh)
578 IF(ivolu(39) /= 0)
THEN
583 datainj(1:6,1:njet)=zero
585 IF (itagel(iel)>0)
THEN
587 datainj(1,iinj)=datainj(1,iinj)+elarea(iel)
593 CALL fvinjt6(njet, ibagjet, rbagjet, npc, tf,nsensor,
594 . sensor_tab,scalt, datainj, python )
596 CALL fvinjt8(njet, ibagjet, rbagjet, npc, tf,nsensor,
597 . sensor_tab,scalt, igeo, geo, pm, ivolu, datainj,python)
601 isens=ibagjet(4,iinj)
602 fvel=rbagjet(15,iinj)
603 ivel=ibagjet(11,iinj)
607 tstart=sensor_tab(isens)%TSTART
613 IF (tt>=tstart.AND.(ittf==1.OR.ittf==2.OR.ittf==3))
THEN
618 IF (tt>=tstart.AND.dt1>zero)
THEN
619 tsg=(tt-tstart)*scalt
621 injvel=fvel*finter_mixed(python,nfunct,ivel,tsg,npc,tf)
628 datainj(3,iinj)=injvel
643 IF (icont(n1)/=0)
poro(iel)=
poro(iel)+third
644 IF (icont(n2)/=0)
poro(iel)=
poro(iel)+third
645 IF (icont(n3)/=0)
poro(iel)=
poro(iel)+third
661 1 elsout ,aoutot ,nvent ,nelt ,ittf ,
662 2 elarea ,elsini ,elem ,itagel ,svent ,
663 3 ibaghol ,rvolu ,rbaghol ,
poro ,p ,
664 4 eltg ,iparg ,mattg ,nel ,porosity,
665 5 ipm ,pm ,elbuf_tab,igroupc ,igrouptg)
708 pu(1,1:npolh)=qpolh(1,1:npolh)/mpolh(1:npolh)
709 pu(2,1:npolh)=qpolh(2,1:npolh)/mpolh(1:npolh)
710 pu(3,1:npolh)=qpolh(3,1:npolh)/mpolh(1:npolh)
719 mass_flux(iel) = zero
720 momentum_flux_x(iel) = zero
721 momentum_flux_y(iel) = zero
722 momentum_flux_z(iel) = zero
723 energy_flux(iel) = zero
727 rgas_flux(iel) = zero
745 IF (itagel(iel) > 0)
THEN
748 dmi = datainj(2, iinj) *
area / datainj(1, iinj)
750 momentum_flux_x(iel) = -dmi * nx * datainj(3, iinj)
751 momentum_flux_y(iel) = -dmi * ny * datainj(3, iinj)
752 momentum_flux_z(iel) = -dmi * nz * datainj(3, iinj)
753 energy_flux(iel) = dmi * datainj(4, iinj)
754 cpa_flux(iel) = dmi * rbagjet(2, iinj)
755 cpb_flux(iel) = dmi * rbagjet(3, iinj)
756 cpc_flux(iel) = dmi * rbagjet(4, iinj)
757 rgas_flux(iel) = dmi * rbagjet
759 cpd_flux(iel) = dmi * rbagjet(16, iinj)
760 cpe_flux(iel) = dmi * rbagjet(17, iinj)
761 cpf_flux(iel) = dmi * rbagjet(18, iinj)
763 elfmass(iel) = elfmass(iel) + dmi * dt1
764 elfehpy(iel) = elfehpy(iel) + dmi * datainj(4, iinj) * dt1
765 elfvel(iel) = -datainj(3, iinj)
766 ELSE IF (itagel(iel) < 0)
THEN
769 idef = ibaghol(1, ivent)
770 itvent = ibaghol(10, ivent)
772 IF (
fvdata(ifv)%TRI_TO_ELEM(1, iel) /=
fvdata(ifv)%TRI_TO_ELEM(2, iel))
THEN
775 i =
fvdata(ifv)%TRI_TO_ELEM(1, iel)
778 re1 = epolh(i) / pvolu(i)
785 IF (itvent == 1)
THEN
786 uu = nx * ux1 + ny * uy1 + nz * uz1
788 IF (p1 < pext) uu = zero
790 ELSEIF ((itvent == 2 .AND. p1 > zero) .OR. (itvent == 4 .AND. p1 >= pext))
THEN
791 vv = nx * ux1 + ny * uy1 + nz * uz1
793 eta = (gama1 - one) / gama1
795 pstag = p1 * (one + half * eta * rho1 * vv * vv / p1)**ksi
796 pcrit = pstag * (two / (gama1+one))**ksi
797 p2 =
max(pext, pcrit)
798 rho2 = rho1 * (p2 / p1)**(one / gama1)
799 uu = two * p1 * (one - (p2 / p1)**eta) / (rho1 * eta)
802 vmax = half * ((p1 - pext) * pvolu(i) / (gama1 - one))
803 . /
max(em20, rho2 * aout * dt1 * gama1 * re1 / rho1)
804 vmax =
max(vmax, zero)
807 ELSE IF (itvent == 3)
THEN
809 ivdp = ibaghol(9, ivent)
810 fvdp = rbaghol(13, ivent)
811 uu = fvdp * get_u_func(ivdp, p2 * scalp, deri)
818 ELSEIF (itvent == 4 .AND. p1 < pext)
THEN
821 eta = (gamai - one) / gamai
822 pcrit = pext * (two / (gamai + one))**(one / eta)
824 rho2 = rhoi * (p2 / pext)**(one / gamai)
825 uu = two * pext * (one - (p2 / pext)**eta)/(rhoi * eta)
828 vmax = half*((pext - p1) * pvolu(i) / (gama1 - one))
829 . /
max(em20, rho2 * aout * dt1 * rvolu(63))
830 vmax =
max(vmax, zero)
834 ELSE IF (itvent == 5)
THEN
842 IF (uu > zero .AND. idef == 1)
THEN
843 dmout = uu * rho2 * aout
844 mass_flux(iel) = -dmout
845 momentum_flux_x(iel) = -dmout * ux1
846 momentum_flux_y(iel) = -dmout * uy1
847 momentum_flux_z(iel) = -dmout * uz1
848 dhout = dmout * gama1 * re1 / rho1
849 energy_flux(iel) = -dhout
854 cpa_flux(iel) = -dmout * cpai
855 cpb_flux(iel) = -dmout * cpbi
856 cpc_flux(iel) = -dmout * cpci
857 rgas_flux(iel) = -dmout * rmwi
862 cpd_flux(iel) = -dmout * cpdi
863 cpe_flux(iel) = -dmout * cpei
864 cpf_flux(iel) = -dmout * cpfi
868 elfmass(iel)=elfmass(iel)-dmout*dt1
869 elfehpy(iel)=elfehpy(iel)-dhout*dt1
870 elfvel(iel)=elfvel(iel)+uu*
area/elarea(iel)
875 IF (uu < zero .AND. idef == 1)
THEN
876 dmi = -uu * rho2 * aout
878 momentum_flux_x(iel) = dmi * ux1
879 momentum_flux_y(iel) = dmi * uy1
880 momentum_flux_z(iel) = dmi * uz1
885 cpa_flux(iel) = dmi * cpai
886 cpb_flux(iel) = dmi * cpbi
887 cpc_flux(iel) = dmi * cpci
888 rgas_flux(iel) = dmi * rmwi
893 cpd_flux(iel) = dmi * cpdi
894 cpe_flux(iel) = dmi * cpei
895 cpf_flux(iel) = dmi * cpfi
897 energy_flux(iel) = dmi * rvolu(63)
898 elfmass(iel) = elfmass(iel) + dmi * dt1
899 elfehpy(iel) = elfehpy(iel) + dmi * dt1 * rvolu(63)
900 elfvel(iel) = elfvel(iel) + uu *
area / elarea(iel)
902 eldehpy(iel) = dmi * rvolu(63)
904 ELSE IF (iel > nel)
THEN
906 IF (porosity(iel - nel) /= zero)
THEN
910 IF (tagela(iel) > 0)
THEN
932 vvx=third*(vx1+vx2+vx3)
933 vvy=third*(vy1+vy2+vy3)
934 vvz=third*(vz1+vz2+vz3)
940 vel(iel)=nx*vvx+ny*vvy+nz*vvz
941 i1 =
fvdata(ifv)%TRI_TO_ELEM(1, iel)
942 i2 =
fvdata(ifv)%TRI_TO_ELEM(2, iel)
946 area = elarea(iel) * porosity(iel - nel)
948 re1 = epolh(i1) / pvolu(i1)
954 re2 = epolh(i2) / pvolu(i2)
959 vfx = half * (ux1 + ux2)
960 vfy = half * (uy1 + uy2)
961 vfz = half * (uz1 + uz2)
962 vrel(iel) = (vfx - vvx)*(vfx - vvx) + (vfy - vvy
963 ss_= nx * (vfx - vvx) + ny * (vfy - vvy) + nz
964 ss(iel) = elarea(iel)*abs(ss_)
965 IF (ss_ <= zero)
THEN
971 ruxm =
alpha * rho1 * ux1 + (one -
alpha) * rho2 * ux2
972 ruym =
alpha * rho1 * uy1 + (one -
alpha) * rho2 * uy2
973 ruzm =
alpha * rho1 * uz1 + (one -
alpha) * rho2 * uz2
974 rem =
alpha * gama1 * re1 + (one -
alpha) * gama2 * re2
976 massflow = rhom * ss_ *
area
977 mass_flux(iel) = -massflow
978 momentum_flux_x(iel) = -ruxm * ss_ *
area
979 momentum_flux_y(iel) = -ruym * ss_ *
area
981 energy_flux(iel) = -rem * ss_ *
area
983 elfmass(iel) = elfmass(iel) + massflow * dt1
984 elfvel(iel) = elfvel(iel) + ss_ *
area
987 cpbm =
alpha * cpbpolh(i1) + (one -
alpha) * cpbpolh(i2)
989 rgasm =
alpha * rmwpolh(i1) + (one -
alpha) * rmwpolh(i2)
990 cpa_flux(iel) = -massflow * cpam
991 cpb_flux(iel) = -massflow * cpbm
992 cpc_flux(iel) = -massflow * cpcm
996 cpem =
alpha * cpepolh(i1) + (one -
alpha) * cpepolh(i2)
997 cpfm =
alpha * cpfpolh(i1) + (one -
alpha) * cpfpolh(i2)
998 cpd_flux(iel) = -massflow * cpdm
999 cpe_flux(iel) = -massflow * cpem
1000 cpf_flux(iel) = -massflow * cpfm
1018 cpapolh(i) = msini * cpapolh(i)
1019 cpbpolh(i) = msini * cpbpolh(i)
1020 cpcpolh(i) = msini * cpcpolh(i)
1021 rmwpolh(i) = msini * rmwpolh(i)
1023 cpdpolh(i) = msini * cpdpolh(i)
1024 cpepolh(i) = msini * cpepolh(i)
1025 cpfpolh(i) = msini * cpfpolh(i)
1027 DO j = 1,
fvdata(ifv)%ELEM_TO_TRI(i)%MINUS_SIZE
1028 iel =
fvdata(ifv)%ELEM_TO_TRI(i)%MINUS(j)
1030 mpolh(i) = mpolh(i) + mass_flux(iel) * dt1
1031 qpolh(1, i) = qpolh(1, i) + momentum_flux_x(iel) * dt1
1032 qpolh(2, i) = qpolh(2, i) + momentum_flux_y(iel) * dt1
1033 qpolh(3, i) = qpolh(3, i) + momentum_flux_z(iel) * dt1
1034 epolh(i) = epolh(i) + energy_flux(iel) * dt1
1035 IF (mpolh(i) <= zero .OR. epolh(i) <= zero)
THEN
1038 cpapolh(i) = cpapolh
1039 cpbpolh(i) = cpbpolh(i) + cpb_flux(iel) * dt1
1040 cpcpolh(i) = cpcpolh(i) + cpc_flux
1041 rmwpolh(i) = rmwpolh(i) + rgas_flux(iel) * dt1
1043 cpdpolh(i) = cpdpolh(i) + cpd_flux(iel) * dt1
1044 cpepolh(i) = cpepolh(i) + cpe_flux(iel) * dt1
1045 cpfpolh(i) = cpfpolh(i) + cpf_flux(iel) * dt1
1049 DO j = 1,
fvdata(ifv)%ELEM_TO_TRI(i)%PLUS_SIZE
1050 iel =
fvdata(ifv)%ELEM_TO_TRI(i)%PLUS(j)
1052 mpolh(i) = mpolh(i) - mass_flux(iel) * dt1
1053 qpolh(1, i) = qpolh(1, i
1054 qpolh(2, i) = qpolh(2, i) - momentum_flux_y(iel) * dt1
1055 qpolh(3, i) = qpolh(3, i) - momentum_flux_z(iel) * dt1
1056 epolh(i) = epolh(i) - energy_flux(iel) * dt1
1057 IF (mpolh(i) <= zero .OR. epolh(i) <= zero)
THEN
1060 cpapolh(i) = cpapolh(i) - cpa_flux(iel) * dt1
1061 cpbpolh(i) = cpbpolh(i) - cpb_flux(iel) * dt1
1062 cpcpolh(i) = cpcpolh(i) - cpc_flux(iel) * dt1
1063 rmwpolh(i) = rmwpolh(i) - rgas_flux(iel) * dt1
1065 cpdpolh(i) = cpdpolh(i) - cpd_flux(iel) * dt1
1066 cpepolh(i) = cpepolh(i) - cpe_flux(iel) * dt1
1067 cpfpolh(i) = cpfpolh(i) - cpf_flux(iel) * dt1
1072 efac = epolh(i) / mpolh(i)
1073 cpapolh(i) = cpapolh(i) / mpolh(i)
1074 cpbpolh(i) = cpbpolh(i) / mpolh(i)
1075 cpcpolh(i) = cpcpolh(i) / mpolh(i)
1076 rmwpolh(i) = rmwpolh(i) / mpolh(i)
1078 cpdpolh(i) = cpdpolh(i) / mpolh(i)
1079 cpepolh(i) = cpepolh(i) / mpolh(i)
1080 cpfpolh(i) = cpfpolh(i) / mpolh(i)
1092 CALL fvtemp(ityp , efac , cpa , cpb , cpc ,
1093 . cpd , cpe , cpf , rmw , temp0,
1095 cp = cpa + cpb * temp + cpc * temp * temp
1097 cp = cp + cpd * temp**3 + cpf * temp**4
1098 IF (cpe /= zero .AND. temp > zero)
THEN
1099 cp = cp + cpe / (temp * temp)
1107 rpolh(i) = mpolh(i) / pvolu(i)
1108 ppolh(i) = rpolh(i) * rmw * temp
1133 idt_fvmbag =
fvdata(ifv)%ID_DT_OPTION
1145 idt_fvmbag =
fvdata(ifv)%ID_DT_OPTION
1147 SELECT CASE(idt_fvmbag)
1155 IF (ibpolh(i) == 0)
THEN
1158 dls(i)=pvolu(i)**third
1166 param_l_type =
fvdata(ifv)%L_TYPE
1168 SELECT CASE(param_l_type)
1180 dls(i)=pvolu(i)**third
1198 SELECT CASE (idt_fvmbag)
1203 IF(mpolh(i)<=zero.OR.epolh(i)<=zero.OR.gpolh(i)<=one)
THEN
1212 ssp=sqrt((gama-one)*gama*epolh(i)/mpolh(i))
1213 qvisc(i)=rpolh(i)*ad*al*(qa*qa*al*ad+qb*ssp)
1215 qx=qb*ssp+al*qa*qa*ad
1216 ssp=qx+sqrt(qx*qx+ssp*ssp)
1217 vv=sqrt(pu(1,i)**2+pu(2,i)**2+pu(3,i)**2)
1218 dtpolh(i)=cfl_coef*dls(i)/(ssp+vv)
1225 param_l_type = fvdata(ifv)%L_TYPE
1227 IF(param_l_type /= 3)
THEN
1230 IF(mpolh(i) <= zero.OR.epolh
THEN
1239 DO j = 1, fvdata(ifv)%ELEM_TO_TRI(i)%MINUS_SIZE
1240 iel = fvdata(ifv)%ELEM_TO_TRI(i)%MINUS(j)
1244 vv = vv+sqrt(vrel(iel))
1247 DO j = 1, fvdata(ifv)%ELEM_TO_TRI(i)%PLUS_SIZE
1248 iel = fvdata(ifv)%ELEM_TO_TRI(i)%PLUS(j)
1250 vv = vv+sqrt(vrel(iel))
1257 ssp=sqrt((gama-one)*gama*epolh(i)/mpolh(i))
1258 qvisc(i)=rpolh(i)*ad*al*(qa*qa*al*ad+qb*ssp)
1259 qx=qb*ssp+al*qa*qa*ad
1260 ssp=qx+sqrt(qx*qx+ssp*ssp)
1263 vv = vv / float(count)
1266 dtpolh(i)=cfl_coef*dls(i)/(ssp+vv)
1275 DO j = 1, fvdata(ifv)%ELEM_TO_TRI(i)%MINUS_SIZE
1276 iel = fvdata(ifv)%ELEM_TO_TRI(i)%MINUS(j)
1278 ss_=
max(ss_,ss(iel))
1280 DO j = 1, fvdata(ifv)%ELEM_TO_TRI(i)%PLUS_SIZE
1281 iel = fvdata(ifv)%ELEM_TO_TRI(i)%PLUS(j)
1283 ss_=
max(ss_,ss(iel))
1290 ssp=sqrt((gama-one)*gama*epolh(i)/mpolh(i))
1291 qvisc(i)=rpolh(i)*ad*al*(qa*qa*al*ad+qb*ssp)
1292 qx=qb*ssp+al*qa*qa*ad
1293 ssp=qx+sqrt(qx*qx+ssp*ssp)
1298 dtpolh(i)=cfl_coef*dls(i)/(ssp+ss_)
1309 IF (dtpolh(i)<dtx)
THEN
1316 IF(ncycle > 0 .AND. idt_fvmbag == 2)
THEN
1317 lambda = fvdata(ifv)%LAMBDA
1318 IF(lambda > zero)
THEN
1319 dtold = fvdata(ifv)%DTOLD
1320 IF(dtold > zero)
THEN
1321 dtx =
min( dtx, dtold*(one+lambda))
1325 fvdata(ifv)%DTOLD = dtx
1327 IF (ilvout >= 1.AND.ipri==0)
THEN
1328 WRITE(iout,
'(A,I10,A,E12.4,A,I10)')
' ** MONITORED VOLUME ID: ',ivolu(1),
' TIME STEP:',dtx,
' FINITE VOLUME:',idpolh(phdt)
1357 vvx=third*(vx1+vx2+vx3)
1358 vvy=third*(vy1+vy2+vy3)
1359 vvz=third*(vz1+vz2+vz3)
1363 vel(iel)=nx*vvx+ny*vvy+nz*vvz
1364 i1 = fvdata(ifv)%TRI_TO_ELEM(1, iel)
1365 i2 = fvdata(ifv)%TRI_TO_ELEM(2, iel)
1367 momentum_flux_x(iel) = zero
1368 momentum_flux_y(iel) = zero
1369 momentum_flux_z(iel) = zero
1370 energy_flux(iel) = zero
1374 IF (itagel(iel) < 0)
THEN
1376 ivent = -itagel(iel)
1377 idef = ibaghol(1, ivent)
1378 iventyp = ibaghol(13, ivent)
1379 IF (idef == 1 .AND. iventyp == 0)
THEN
1383 fel(iel) = pp * aout
1384 momentum_flux_x(iel) = -pp * aout * nx
1385 momentum_flux_y(iel) = -pp * aout * ny
1386 momentum_flux_z(iel) = -pp * aout * nz
1387 energy_flux(iel) = -pp * vel(iel) * aout
1390 pp = ppolh(i1) + qvisc(i1)
1391 fel(iel) = fel(iel) + pp *
area
1392 momentum_flux_x(iel) = momentum_flux_x(iel) - pp *
area * nx
1393 momentum_flux_y(iel) = momentum_flux_y(iel) - pp *
area * ny
1394 momentum_flux_z(iel) = momentum_flux_z(iel) - pp *
area * nz
1395 energy_flux(iel) = energy_flux(iel) - pp * vel(iel) *
area
1396 energy_flux(iel) = energy_flux(iel) - rvolu(19) *
area * (tpolh(i1) - rvolu(25))
1399 p1 = ppolh(i1) + qvisc(i1)
1400 p2 = ppolh(i2) + qvisc(i2)
1401 pmean = half * (p1 + p2)
1404 area1 = area_old -
area
1405 ss_ = nx * vvx + ny * vvy + nz * vvz
1406 IF (itagel(iel) > 0)
THEN
1408 fel(iel) = (p1 - p2) * area1
1409 momentum_flux_x(iel) = -pmean * nx *
area
1410 momentum_flux_y(iel) = -pmean * ny *
area
1411 momentum_flux_z(iel) = -pmean * nz *
area
1412 energy_flux(iel) = -pmean * ss_ *
area
1414 fel(iel) = (p1 - p2) * area1
1415 momentum_flux_x(iel) = -pmean * nx *
area
1416 momentum_flux_y(iel) = -pmean * ny *
area
1417 momentum_flux_z(iel) = -pmean * nz *
area
1418 energy_flux(iel) = -pmean * ss_ *
area
1433 DO j = 1, fvdata(ifv)%ELEM_TO_TRI(i)%MINUS_SIZE
1434 iel = fvdata(ifv)%ELEM_TO_TRI(i)%MINUS(j)
1450 vvx=third*(vx1+vx2+vx3)
1451 vvy=third*(vy1+vy2+vy3)
1452 vvz=third*(vz1+vz2+vz3)
1454 i1 = fvdata(ifv)%TRI_TO_ELEM(1, iel)
1455 i2 = fvdata(ifv)%TRI_TO_ELEM(2, iel)
1459 pp = ppolh(i) + qvisc(i)
1463 area1 = area_old -
area
1468 ss_ = nx * vvx + ny * vvy + nz * vvz
1471 qpolh(1, i) = qpolh(1, i) + (momentum_flux_x(iel) - pp * nx * area1) * dt1
1472 qpolh(2, i) = qpolh(2, i) + (momentum_flux_y(iel) - pp * ny * area1) * dt1
1473 qpolh(3, i) = qpolh(3, i) + (momentum_flux_z(iel) - pp * nz * area1) * dt1
1474 IF (itagel(iel) > 0)
THEN
1475 epolh(i) = epolh(i) + (energy_flux(iel) + pp * vel(iel) * area1) * dt1
1480 DO j = 1, fvdata(ifv)%ELEM_TO_TRI(i)%PLUS_SIZE
1481 iel = fvdata(ifv)%ELEM_TO_TRI(i)%PLUS(j)
1497 vvx=third*(vx1+vx2+vx3)
1498 vvy=third*(vy1+vy2+vy3)
1499 vvz=third*(vz1+vz2+vz3)
1501 i1 = fvdata(ifv)%TRI_TO_ELEM(1, iel)
1502 i2 = fvdata(ifv)%TRI_TO_ELEM(2, iel)
1506 pp = ppolh(i) + qvisc(i)
1510 area1 = area_old -
area
1515 ss_ = nx * vvx + ny * vvy + nz * vvz
1519 qpolh(1, i) = qpolh(1, i) - (momentum_flux_x(iel) - pp * nx * area1) * dt1
1520 qpolh(2, i) = qpolh(2, i) - (momentum_flux_y(iel) - pp * ny * area1) * dt1
1521 qpolh(3, i) = qpolh(3, i) - (momentum_flux_z(iel) - pp * nz * area1) * dt1
1522 IF (itagel(iel) > 0)
THEN
1523 epolh(i) = epolh(i) - (energy_flux(iel) - pp * vel(iel) * area1) * dt1
1525 epolh(i) = epolh(i) - (energy_flux(iel) - pp * ss_ * area1) * dt1
1537 250
IF (ilvout >= 1 .AND. ipri == 0)
THEN
1539 WRITE(iout,
'(A25,I10,A31)')
' ** MONITORED VOLUME ID: ',ivolu(1),
' - FINITE VOLUME MESH UPDATE **'
1540 WRITE(iout,
'(A,I8)')
' NUMBER OF FINITE VOLUMES : ',npolh
1541 WRITE(iout,
'(A,G16.9,A17,G16.9,A1)')
' SUM VOLUME FINITE VOLUMES : ',volph,
' (VOLUME AIRBAG: ',volg,
')'
1542 WRITE(iout,
'(A,G16.9,A17,G16.9,A1)')
' SUM AREA SURFACE POLYGONS : ',areap
' (AREA AIRBAG : '')'
1553 amtot=amtot+mpolh(i)
1554 enint=enint+epolh(i)
1555 pmean=pmean+ppolh(i)*pvolu(i)
1562 cp=cpa+cpb*temp+cpc*temp*temp
1567 cp=cp+cpd*temp**3+cpf*temp**4
1568 IF(temp > zero) cp=cp+cpe/(temp*temp)
1571 fsav(5) =fsav(5) +mpolh(i)*temp
1572 fsav(10)=fsav(10)+mpolh(i)*cp
1573 fsav(11)=fsav(11)+mpolh(i)*cv
1574 fsav(12)=fsav(12)+mpolh(i)*gama
1578 pmean2 = pmean / volph
1580 pdisp = pdisp + pvolu(i) * (ppolh(i) - pmean2)**2
1582 pdisp = sqrt(pdisp / volph) / pmean2
1584 injection_started = .false.
1586 injection_started = injection_started .OR. (datainj(2, iinj) > zero)
1588 IF (.NOT. injection_started)
THEN
1595 pres_av = pmean / volph
1601 cp_av = fsav(10) / amtot
1603 cv_av = fsav(11) / amtot
1605 fsav(12) = cp_av / cv_av
1607 rgas_av = cp_av - cv_av
1608 rho_av = amtot / volph
1609 fsav(5) = fsav(5) / amtot
1611 IF(ivolu(39) == 0)
THEN
1617 IF (itagel(iel)<0)
THEN
1619 rbaghol(18,ivent)=rbaghol(18,ivent)+elfvel(iel)*elsout(iel)
1620 rbaghol(19,ivent)=rbaghol(19,ivent)-elfmass(iel)
1621 rbaghol(20,ivent)=rbaghol(20,ivent)-elfehpy(iel)
1622 rbaghol(21,ivent)=rbaghol(21,ivent)+eldmass(iel)
1623 rbaghol(22,ivent)=rbaghol(22,ivent)+eldehpy(iel)
1627 sventot=rbaghol(16,ivent)+rbaghol(17,ivent)
1628 IF(sventot <= zero) cycle
1629 rbaghol(18,ivent)=rbaghol(18,ivent)/sventot
1632 fsav(7)=fsav(7)+(rbaghol(16,ivent)+rbaghol(17,ivent))*rbaghol(18,ivent)
1633 dmout =dmout+rbaghol(21,ivent)
1634 dhout =dhout+rbaghol(22,ivent)
1636 fsav(7) =fsav(7) /
max(aoutot,em20)
1640 CALL fvinjt8_1(njet, ibagjet , rbagjet , igeo, geo, pm,
1641 . ivolu, rvolu, dmout, dhout)
1643 IF (ivolu(74) == 0)
THEN
1648 up_switch = ((pdisp < pdisp_old) .AND. (pdisp < rvolu(73)))
1649 up_switch = up_switch .OR. tt-ttf >= rvolu(70)
1651 IF (ivolu(74) == 2)
THEN
1653 up_switch = ((pdisp < pdisp_old) .AND. (pdisp < rvolu(73)))
1654 up_switch = up_switch .AND. tt-ttf >= rvolu(70)
1668 IF (itagel(iel) > 0)
THEN
1669 fsav(15)=fsav(15)+elfmass(iel)
1670 fsav(16)=fsav(16)+elfehpy(iel)
1679 IF( (tt>=tanim .AND. tt<=tanim_stop) .OR.tt>=toutp.OR. nbgauge > 0 .OR.
1680 . (manim>=4.AND.manim<=15) )
THEN
1683 uel(1:3,1:nelt)=zero
1699 i1 = fvdata(ifv)%TRI_TO_ELEM(1, iel)
1700 i2 = fvdata(ifv)%TRI_TO_ELEM(2, iel)
1701 pel(iel) = half * (ppolh(i1) + ppolh(i2))
1702 IF (prepare_anim == 1)
THEN
1703 uel(1, iel) = half * (pu(1, i1) + pu(1, i2))
1704 uel(2, iel) = half * (pu(2, i1) + pu(2, i2))
1705 uel(3, iel) = half * (pu(3, i1) + pu(3, i2))
1706 rhoel(iel) = half * (rpolh(i1) + rpolh(i2))
1707 tkel(iel) = half * (tpolh(i1) + tpolh(i2))
1708 sspel(iel) = half * (sqrt(gpolh(i1)*ppolh(i1)/rpolh(i1)) + sqrt(gpolh(i2)*ppolh(i2)/rpolh(i2)))
1716 IF(prepare_anim == 1)
THEN
1719 IF(itagel(iel)<0)
THEN
1720 uel(1,iel)=elfvel(iel)*
norm(1,iel)
1721 uel(2,iel)=elfvel(iel)*
norm(2,iel)
1722 uel(3,iel)=elfvel(iel)*
norm(3,iel)
1754 fac1=third*elarea(iel)/area1
1755 fac2=third*elarea(iel)/area2
1757 p(n1) =p(n1) +fac1*pel(iel)
1758 p(n2) =p(n2) +fac2*pel(iel)
1759 p(n3) =p(n3) +fac3*pel(iel)
1762 IF(prepare_anim == 1)
THEN
1770 fac1=third*elarea(iel)/area1
1771 fac2=third*elarea(iel)/area2
1772 fac3=third*elarea(iel)/area3
1773 u(1,n1)=u(1,n1)+fac1*uel(1,iel)
1774 u(2,n1)=u(2,n1)+fac1*uel(2,iel)
1775 u(3,n1)=u(3,n1)+fac1*uel(3,iel)
1776 u(1,n2)=u(1,n2)+fac2*uel(1,iel)
1777 u(2,n2)=u(2,n2)+fac2*uel(2,iel)
1778 u(3,n2)=u(3,n2)+fac2*uel(3,iel)
1779 u(1,n3)=u(1,n3)+fac3*uel(1,iel)
1780 u(2,n3)=u(2,n3)+fac3*uel(2,iel)
1781 u(3,n3)=u(3,n3)+fac3*uel(3,iel)
1782 rho(n1)=rho(n1)+fac1*rhoel(iel)
1783 rho(n2)=rho(n2)+fac2*rhoel(iel)
1784 rho(n3)=rho(n3)+fac3*rhoel(iel)
1785 tk(n1)=tk(n1)+fac1*tkel(iel)
1786 tk(n2)=tk(n2)+fac2*tkel(iel)
1787 tk(n3)=tk(n3)+fac3*tkel(iel)
1788 sspk(n1)=sspk(n1)+fac1*sspel(iel)
1789 sspk(n2)=sspk(n2)+fac2*sspel(iel)
1790 sspk(n3)=sspk(n3)+fac3*sspel(iel)
1794 IF (ibpolh(i)/=0)
THEN
1797 IF(brna(1,ii)==brna(4,ii).AND.brna(5,ii)==brna(8,ii))
THEN
1803 vola(jj)=vola(jj)+one_over_6*pvolu(i)
1804 pa(jj)=pa(jj)+one_over_6*ppolh(i)*pvolu(i)
1805 rhoa(jj)=rhoa(jj)+one_over_6*rpolh(i)*pvolu(i)
1806 tka(jj)=tka(jj)+one_over_6*temp*pvolu(i)
1807 sspka(jj)=sspka(jj)+one_over_6*sqrt(gpolh(i)*ppolh(i)/rpolh(i))*pvolu(i)
1808 ua(1,jj)=ua(1,jj)+one_over_6*pu(1,i)*pvolu(i)
1809 ua(2,jj)=ua(2,jj)+one_over_6*pu(2,i)*pvolu(i)
1810 ua(3,jj)=ua(3,jj)+one_over_6*pu(3,i)*pvolu(i)
1812 ELSEIF(brna(5,ii)==brna(8,ii).AND.
1813 . brna(6,ii)==brna(8,ii).AND.
1814 . brna(7,ii)==brna(8,ii))
THEN
1818 vola(jj)=vola(jj)+one_fifth*pvolu(i)
1819 pa(jj)=pa(jj)+one_fifth*ppolh(i)*pvolu(i)
1820 rhoa(jj)=rhoa(jj)+one_fifth*rpolh(i)*pvolu(i)
1821 tka(jj)=tka(jj)+one_fifth*temp*pvolu(i)
1822 sspka(jj)=sspka(jj)+one_fifth*sqrt(gpolh(i)*ppolh(i)/rpolh(i))*pvolu(i)
1823 ua(1,jj)=ua(1,jj)+one_fifth*pu(1,i)*pvolu(i)
1824 ua(2,jj)=ua(2,jj)+one_fifth*pu(2,i)*pvolu(i)
1825 ua(3,jj)=ua(3,jj)+one_fifth*pu(3,i)*pvolu(i)
1831 vola(jj)=vola(jj)+one_over_8*pvolu(i)
1832 pa(jj)=pa(jj)+one_over_8*ppolh(i)*pvolu(i)
1833 rhoa(jj)=rhoa(jj)+one_over_8*rpolh(i)*pvolu(i)
1834 tka(jj)=tka(jj)+one_over_8*temp*pvolu(i)
1835 sspka(jj)=sspka(jj)+one_over_8*sqrt(gpolh(i)*ppolh(i)/rpolh(i))*pvolu(i)
1836 ua(1,jj)=ua(1,jj)+one_over_8*pu(1,i)*pvolu(i)
1838 ua(3,jj)=ua(3,jj)+one_over_8*pu(3,i)*pvolu(i)
1846 IF(volno > zero)
THEN
1848 rhoa(i)=rhoa(i)/volno
1849 tka(i) =tka(i)/volno
1850 sspka(i) =sspka(i)/volno
1852 ua(2,i)=ua(2,i)/volno
1853 ua(3,i)=ua(3,i)/volno
1863 area_vent(ivent)=zero
1869 IF (itagel(iel)<0)
THEN
1871 area_vent(ivent)=area_vent(ivent)+elarea(iel)
1872 pm_vent(ivent)=pm_vent(ivent)+fel(iel)
1879 IF (area_vent(ivent)>zero)
THEN
1880 pm_vent(ivent)=pm_vent(ivent)/area_vent(ivent)
1885 idef =ibaghol(1,ivent)
1886 idtpdef= ibaghol(11,ivent)
1887 idpdef = ibaghol(12,ivent)
1891 pdef =rbaghol(1,ivent)
1892 dtpdefi=rbaghol(4,ivent)
1893 dtpdefc=rbaghol(5,ivent)
1894 tvent =rbaghol(3,ivent)
1895 tstope =rbaghol(14,ivent)
1896 IF (idtpdef==0)
THEN
1897 IF(pm_vent(ivent)>pdef+pext)
THEN
1898 dtpdefc = dtpdefc+dt1
1900 ELSE IF (idtpdef==1)
THEN
1901 IF (pm_vent(ivent)>pdef+pext)
THEN
1905 dtpdefc = dtpdefc+dt1
1908 ibaghol(12,ivent) = idpdef
1909 rbaghol(5,ivent) = dtpdefc
1914 titrevent(k)=ibaghol(14+k,ivent)
1915 venttitle(k:k) = achar(titrevent(k))
1917 IF(ittf==11.OR.ittf==12.OR.ittf==13)
THEN
1918 IF (idef==0.AND.pm_vent(ivent)>pdef+pext
1919 . .AND.dtpdefc>dtpdefi
1920 . .AND.volph>em3*areap**three_half
1921 . .AND.tt<tstope+ttf)
THEN
1924 .
' ** AIRBAG VENT HOLE MEMBRANE IS DEFLATED **'
1925 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(
1926 .
' VENT HOLE NUMBER',ivent,
' ',venttitle
1928 .
' ** VENT HOLE MEMBRANE IS DEFLATED ',venttitle
1930 IF(idef==0 .AND. tt>tvent+ttf
1931 . .AND. tt<tstope+ttf)
THEN
1933 WRITE(iout,
'(A)')
' ** AIRBAG VENTING STARTS **'
1934 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
1935 .
' VENT HOLE NUMBER',ivent,
' ',venttitle
1936 WRITE(istdo,
'(2A)')
' ** VENTING STARTS ',venttitle
1938 IF(idef==1 .AND. tt>=tstope+ttf)
THEN
1940 WRITE(iout,
'(A)')
' ** AIRBAG VENTING STOPS **'
1941 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(
1942 .
' VENT HOLE NUMBER',ivent,
' ',venttitle
1943 WRITE(istdo,
'(2A)'' ** VENTING STOPS '
1946 ELSE IF(ittf==0)
THEN
1947 IF (idef==0.AND.pm_vent(ivent)>pdef+pext
1948 . .AND.dtpdefc>dtpdefi
1949 . .AND.volph>em3*areap**three_half
1950 . .AND.tt<tstope
THEN
1953 .
' ** AIRBAG VENT HOLE MEMBRANE IS DEFLATED **'
1954 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
1955 .
' VENT HOLE NUMBER',ivent,
' ',venttitle
1957 .
' ** VENT HOLE MEMBRANE IS DEFLATED ',venttitle
1959 IF(idef==0 .AND. tt>tvent
1960 . .AND. tt<tstope)
THEN
1962 WRITE(iout,
'(A)')
' ** AIRBAG VENTING STARTS **'
1963 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
1964 .
' VENT HOLE NUMBER',ivent,
' ',venttitle
1965 WRITE(istdo,
'(2A)')
' ** VENTING STARTS ',venttitle
1967 IF(idef==1 .AND. tt>=tstope)
THEN
1969 WRITE(iout,
'(A)')
' ** AIRBAG VENTING STOPS **'
1970 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
1971 .
' VENT HOLE NUMBER',ivent,
' ',venttitle
1972 WRITE(istdo,
'(2A)')
' ** VENTING STOPS ',venttitle
1976 ibaghol(1,ivent)=idef
1983 IF(ivolu(39)==1)
THEN
1993 ff=fel(iel)-pext*elarea(iel)
1997 fvspmd(ifv)%AAA(1,n1)=fvspmd(ifv)%AAA(
1998 fvspmd(ifv)%AAA(2,n1)=fvspmd(ifv)%AAA(2,n1)+third*ff*nry
1999 fvspmd(ifv)%AAA(3,n1)=fvspmd(ifv)%AAA(3,n1)+third*ff*nrz
2000 fvspmd(ifv)%AAA(1,n2)=fvspmd(ifv)%AAA(1,n2)+third*ff*nrx
2001 fvspmd(ifv)%AAA(2,n2)=fvspmd(ifv)%AAA(2,n2)+third*ff*nry
2002 fvspmd(ifv)%AAA(3,n2)=fvspmd(ifv)%AAA(3,n2)+third*ff*nrz
2003 fvspmd(ifv)%AAA(1,n3)=fvspmd(ifv)%AAA(1,n3)+third*ff*nrx
2004 fvspmd(ifv)%AAA(2,n3)=fvspmd(ifv)%AAA(2,n3)+third*ff*nry
2005 fvspmd(ifv)%AAA(3,n3)=fvspmd(ifv)%AAA(3,n3)+third*ff*nrz
2007 wfext=wfext+ff*vel(iel)*dt1
2009 fsav(18)=fsav(18)+wfext-wfext0
2014 IF (nbgauge > 0)
THEN
2016 fvspmd(ifv)%GGG(1,i)=p(i)
2017 fvspmd(ifv)%GGG(2,i)=rho(i)
2018 fvspmd(ifv)%GGG(3,i)=tk(i)
2022 fvspmd(ifv)%GGA(1,i)=pa(i)
2023 fvspmd(ifv)%GGA(2,i)=rhoa(i)
2024 fvspmd(ifv)%GGA(3,i)=tka(i)