48 SUBROUTINE fv_up_switch(OUTPUT,NN, NEL, ELEM, NJET, NPOLY,LENH,NBA,
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 )
87#include "implicit_f.inc"
101#include "tabsiz_c.inc"
102#include "mvsiz_p.inc"
106 TYPE(output_),
INTENT(INOUT) :: OUTPUT
107 INTEGER,
INTENT(IN) :: NPOLY, LENH, NPOLH, NBA,NSENSOR
108 INTEGER,
INTENT(IN) :: NN, NEL, NELT, ELEM(3, NELT), NJET, IBAGJET(NIBJET, NJET),
109 . NVENT, NPC(SNPC), IFVNOD(3,NNS), IFVTRI(6,NNTR),
110 . IFVPOLY(NNTR),IFVTADR(NPOLY+1), IFVPOLH(LENH), IFVPADR(NPOLH + 1),
111 . NNS, NNTR, IFV, NPOLHA, ITAGEL(NELT), ICONTACT(SICONTACT),
112 . IDPOLH(NPOLH), IBUFA(NNA), ELEMA(3,NTGA), TAGELA(NTGA), BRNA(8,NBA),
113 . NNA, NTGA, IBPOLH(NPOLH), NNT, NCONA(16,NNA),
114 . ITYP, IGEO(NPROPGI,*), IPM(NPROPMI,NUMMAT), IPARG(NPARG,NGROUP)
115 INTEGER,
INTENT(INOUT) :: IVOLU(NIMV), INFO, IBAGHOL(, NVENT)
116 INTEGER,
INTENT(IN) :: ELTG(NELT), MATTG(NELT), IGROUPTG(NUMELTG), IGROUPC(NUMELC)
118 MY_REAL,
INTENT(IN) ::
119 . X(3,NUMNOD), V(3,NUMNOD), A(3,NUMNOD),
120 . TF(STF), XXXA(3,NNA), VVVA(3,NNA),
121 . GEO(NPROPG,NUMGEO), PM(NPROPM,NUMMAT), CFL_COEF, PDISP_OLD
122 MY_REAL,
INTENT(INOUT) :: POROSITY(NELT - NEL)
123 MY_REAL,
INTENT(INOUT) :: RBAGJET(NRBJET,NJET)
124 MY_REAL,
INTENT(INOUT) ::
125 . P(NNT), RHO(NNT), TK(NNT), U(3,NNT), SSPK(NNT), MPOLH(NPOLH), QPOLH(3,NPOLH),
126 . EPOLH(NPOLH), PPOLH(NPOLH), RPOLH(NPOLH), GPOLH(NPOLH), RFVNOD(2,NNS), DLH,
127 . CPAPOLH(NPOLH), CPBPOLH(NPOLH), CPCPOLH(NPOLH), RMWPOLH(NPOLH), ELSINI(NELT),
128 . elfmass(nelt), elfvel(nelt), pa(nna), rhoa(nna), tka(nna),sspka(nna), ua(3,nna),
129 . dtpolh(npolh), fsav(nthvki), tpolh(npolh), cpdpolh(npolh), cpepolh(npolh),
130 . cpfpolh(npolh), rbaghol(nrbhol,nvent), pdisp, elfehpy(nelt), rvolu(nrvolu)
131 TYPE(),
DIMENSION(NGROUP),
INTENT(IN) :: ELBUF_TAB
132 TYPE (SENSOR_STR_) ,
DIMENSION(NSENSOR) ,
INTENT(IN) :: SENSOR_TAB
133 DOUBLE PRECISION,
INTENT(INOUT) :: WFEXT
134 TYPE(PYTHON_),
INTENT(IN) :: PYTHON
138 INTEGER I, , IINJ, IEL, N1, N2, N3, JEL,
139 . NN1, NN2, NN3, J, JJ, ISENS, IVEL,
140 . itagp(npolh), nv, ilvout, ipri,
141 . ivent, idef, iporp,
142 . itvent, phdt, i1, i2, icont(nnt),ivdp,ittf, idpdef,
144 . prepare_anim,iventyp
145 INTEGER TITREVENT(20)
148 . nodarea(nnt), x1, y1, z1, x2, y2, z2, x3, y3
149 . x12, y12, z12, x13, y13, z13, nrx, nry, nrz, area2,
150 . elarea(nelt),
norm(3,nelt), ksi, eta,
151 . pnorm(3,nntr), pvolu(npolh),
area, nx, ny,
152 . nz, gamai, cpai, cpbi, cpci, rmwi, ti,
154 . rhoi, datainj(6,njet), scalt,
155 . fvel, tstart, tsg, injvel,
156 . cpa, cpb, cpc, efac,
157 . pu(3,npolh), gama, fel(nelt), dm(npolh),
158 . dq(3,npolh), de(npolh), dmi, rho1, re1, ux1,
159 . uy1, uz1, rho2, re2, ux2, uy2, uz2, vfx, vfy, vfz, vrel(nelt), ss(nelt), ss_,
160 .
alpha, rhom, rem, ruxm, ruym, ruzm, p1, p2,
161 . uel(3,nelt), area1, area3, ff, temp, pext, volg, volph,
162 . areap, areael, qa, qb, dtx, al, dd, ad, ssp,
163 . qx, vv, dmini(npolh), dmcpa(npolh), dmcpb(npolh),
164 . dmcpc(npolh), dmrmw(npolh), msini,
165 . rmw, cp, cv, rhoel(nelt), tkel(nelt), sspel(nelt), gama1, gama2,
166 . qvisc(npolh), amtot, pmean, pmean2, elsout(nelt),tmp(nel),
167 . area_vent(nvent), pm_vent(nvent), scalp, scals,
168 . aout, deri, pdef, pvoltmp,
169 . dtpdefi, dtpdefc, tvent,
poro(nelt), vola(nna),
170 . x23, y23, z23, x31, y31, z31, l12, l23, l31, h1,
171 . fac1, fac2, fac3, area_old, pp, dls(npolh), vmax, uu,
172 . pcrit, vx1, vy1, vz1, vx2, vy2, vz2,
173 . vx3, vy3, vz3, vvx, vvy, vvz, vel(nelt), fac,
174 . aoutot, svent(nvent), sventot, xxx(3,nnt),
175 . vvv(3,nnt), fvdp, rbid, ttf,
176 . dmcpd(npolh), dmcpe(npolh), dmcpf(npolh),
177 . cpd, cpe, cpf, temp0, pel(nelt), pstag, volno,tstope,
178 . enint, massflow, wfext0, eldmass(nel), eldehpy(nel), dmout, dhout,
179 . xx1, xx2, xx3, yy1, yy2, yy3, zz1, zz2, zz3, nnx, nny, nnz,
180 . pres_av, cp_av, cv_av, rgas_av, rho_av
183 LOGICAL :: EXIT_NEG_VOL,INJECTION_STARTED
189 CHARACTER*20 VENTTITLE
190 INTEGER :: NODE_ID(5), INODE
191 MY_REAL :: TAB_PVOL(NELT), DOT_PROD
192 MY_REAL :: MOMENTUM_FLUX_X(NELT), MOMENTUM_FLUX_Y(NELT), MOMENTUM_FLUX_Z(NELT),
193 . MASS_FLUX(NELT), ENERGY_FLUX(NELT),
194 . CPA_FLUX(NELT), CPB_FLUX(NELT), CPC_FLUX(NELT), CPD_FLUX(NELT),
195 . CPE_FLUX(NELT), CPF_FLUX(NELT), RGAS_FLUX(NELT)
196 INTEGER(8) :: VEC_PTR_PLUS, VEC_PTR_MINUS
197 INTEGER :: COUNT, IDT_FVMBAG, PARAM_L_TYPE
198 MY_REAL :: CPAM, CPBM, CPCM, RGASM, CPDM, CPEM, CPFM
199 MY_REAL :: DTOLD, LAMBDA
219 IF(nbgauge > 0 )
THEN
220 ALLOCATE(
fvspmd(ifv)%GGG(3,nnt))
221 ALLOCATE(
fvspmd(ifv)%GGA(3,nna))
223 ALLOCATE(
fvspmd(ifv)%AAA(3,nnt))
224 fvspmd(ifv)%AAA(1:3,1:nnt) = zero
231 i1=
fvspmd(ifv)%IBUF_L(1,i)
232 i2=
fvspmd(ifv)%IBUF_L(2,i)
239 i1=
fvspmd(ifv)%IBUF_L(1,i)
240 i2=
fvspmd(ifv)%IBUF_L(2,i)
246 IF (intbag/=0.AND.nvent>0.AND.ivolu(39)/=0)
THEN
248 i1=
fvspmd(ifv)%IBUF_L(1,i)
249 i2=
fvspmd(ifv)%IBUF_L(2,i)
250 icont(i1)=icontact(i2)
259 IF (intbag/=0.AND.nvent>0.AND.ivolu(39)/=0)
263 IF (ispmd/=
fvspmd(ifv)%PMAIN-1)
RETURN
276 IF (ivolu(74) == -2)
THEN
277 ALLOCATE(
fvdata(ifv)%TRI_TO_ELEM(2, nelt))
278 fvdata(ifv)%TRI_TO_ELEM(:, :) = 0
279 ALLOCATE(
fvdata(ifv)%ELEM_TO_TRI(npolh))
280 CALL intvector_create(vec_ptr_plus)
281 CALL intvector_create(vec_ptr_minus)
284 CALL intvector_clear(vec_ptr_plus)
285 CALL intvector_clear(vec_ptr_minus)
288 DO j = ifvpadr(i), ifvpadr(i+1)-1
291 DO k = ifvtadr(jj), ifvtadr(jj+1)-1
295 IF (ifvnod(1, n1) /= 2)
THEN
303 IF (ifvnod(1, n2) /= 2)
THEN
311 IF (ifvnod(1, n3) /= 2)
THEN
318 nx = (y2 - y1) * (z3 - z1) - (z2 - z1) * (y3 - y1)
319 ny = (z2 - z1) * (x3 - x1) - (x2 - x1) * (z3 - z1)
320 nz = (x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1)
323 nn1 = elem(1, abs(iel))
324 nn2 = elem(2, abs(iel))
325 nn3 = elem(3, abs(iel))
335 nnx = (yy2 - yy1) * (zz3 - zz1) - (zz2 - zz1) * (yy3 - yy1)
336 nny = (zz2 - zz1) * (xx3 - xx1) - (xx2 - xx1) * (zz3 - zz1)
337 nnz = (xx2 - xx1) * (yy3 - yy1) - (yy2 - yy1) * (xx3 - xx1)
338 dot_prod = nx * nnx + ny * nny + nz * nnz
348 fvdata(ifv)%TRI_TO_ELEM(1, iel) = i1
349 fvdata(ifv)%TRI_TO_ELEM(2, iel) = i2
351 IF (dot_prod >= zero)
THEN
352 CALL intvector_push_back(vec_ptr_minus, iel)
354 CALL intvector_push_back(vec_ptr_plus, iel)
355 fvdata(ifv)%TRI_TO_ELEM(1, iel) = i2
356 fvdata(ifv)%TRI_TO_ELEM(2, iel) = i1
359 IF (dot_prod >= zero)
THEN
360 CALL intvector_push_back(vec_ptr_plus, iel)
362 CALL intvector_push_back(vec_ptr_minus, iel)
363 fvdata(ifv)%TRI_TO_ELEM(1, iel) = i2
364 fvdata(ifv)%TRI_TO_ELEM(2, iel) = i1
369 IF (ifvtri(5, kk) /= ifvtri(6, kk))
THEN
372 fvdata(ifv)%TRI_TO_ELEM(1, iel) = i
373 fvdata(ifv)%TRI_TO_ELEM(2, iel) = i
374 IF (dot_prod >= zero)
THEN
375 CALL intvector_push_back(vec_ptr_minus, iel)
377 CALL intvector_push_back(vec_ptr_plus, iel)
385 CALL intvector_get_size(vec_ptr_minus,
fvdata(ifv)%ELEM_TO_TRI(i)%MINUS_SIZE)
386 CALL intvector_get_size(vec_ptr_plus,
fvdata(ifv)%ELEM_TO_TRI(i)%PLUS_SIZE)
387 ALLOCATE(
fvdata(ifv)%ELEM_TO_TRI(i)%MINUS(
fvdata(ifv)%ELEM_TO_TRI(i)%MINUS_SIZE))
388 CALL intvector_copy_to(vec_ptr_minus,
fvdata(ifv)%ELEM_TO_TRI(i)%MINUS(1))
389 ALLOCATE(
fvdata(ifv)%ELEM_TO_TRI(i)%PLUS(
fvdata(ifv)%ELEM_TO_TRI(i)%PLUS_SIZE))
390 CALL intvector_copy_to(vec_ptr_plus,
fvdata(ifv)%ELEM_TO_TRI(i)%PLUS(1))
393 CALL intvector_delete(vec_ptr_plus)
394 CALL intvector_delete(vec_ptr_minus)
436 area2=sqrt(nrx**2+nry**2+nrz**2)
438 norm(1,iel)=nrx/area2
439 norm(2,iel)=nry/area2
440 norm(3,iel)=nrz/area2
442 tmp(iel) = one_over_6 * (x1*nrx+y1*nry+z1*nrz)
455 elarea(iel) = half * area2
456 nodarea(n1)=nodarea(n1)+one_over_6*area2
457 nodarea(n2)=nodarea(n2)+one_over_6*area2
458 nodarea(n3)=nodarea(n3)+one_over_6*area2
464 IF (dt1==zero.OR.ivolu(39)==0)
THEN
487 pvoltmp = third *
area * (nx * x1 + ny * x2 + nz * x3)
488 tab_pvol(iel) = pvoltmp
495 DO j = 1,
fvdata(ifv)%ELEM_TO_TRI(i)%MINUS_SIZE
496 iel =
fvdata(ifv)%ELEM_TO_TRI(i)%MINUS(j)
498 pvolu(i) = pvolu(i) + tab_pvol(iel)
500 DO j = 1,
fvdata(ifv)%ELEM_TO_TRI(i)%PLUS_SIZE
501 iel =
fvdata(ifv)%ELEM_TO_TRI(i)%PLUS(j)
502! finite volume i is on
the right side of element iel, hence a - sign
503 pvolu(i) = pvolu(i) - tab_pvol(iel)
515 areael=areael+elarea(iel)
521 exit_neg_vol = .false.
524 IF(pvolu(i) <= 0) exit_neg_vol = .true.
527 ipri=mod(ncycle,iabs(ncpri))
528 IF(exit_neg_vol)
THEN
530 IF (pvolu(i)<=zero)
THEN
533 CALL ancmsg(msgid=185,anmode=aninfo,
534 . i1=idpolh(i),r1=pvolu(i),i3=i,i4=npolh)
548 cpapolh(1:npolh)=cpai
550 cpbpolh(1:npolh)=cpbi
552 cpcpolh(1:npolh)=cpci
554 rmwpolh(1:npolh)=rmwi
558 cpdpolh(1:npolh)=cpdi
560 cpepolh(1:npolh)=cpei
562 cpfpolh(1:npolh)=cpfi
566 IF (dt1==zero.OR.ivolu(39)==0)
THEN
569 mpolh(1:npolh)=rhoi*pvolu(1:npolh)
570 epolh(1:npolh)=mpolh(1:npolh)*efac
571 pu(1,1:npolh) = rvolu(67)
572 pu(2,1:npolh) = rvolu(68)
573 pu(3,1:npolh) = rvolu(69)
574 qpolh(1,1:npolh) = mpolh(1:npolh)*pu(1,1:npolh)
575 qpolh(2,1:npolh) = mpolh(1:npolh)*pu
576 qpolh(3,1:npolh) = mpolh(1:npolh)*pu(3,1:npolh)
580 IF(ivolu(39) /= 0)
THEN
585 datainj(1:6,1:njet)=zero
587 IF (itagel(iel)>0)
THEN
589 datainj(1,iinj)=datainj(1,iinj)+elarea(iel)
595 CALL fvinjt6(njet, ibagjet, rbagjet, npc, tf,nsensor,
596 . sensor_tab,scalt, datainj, python )
598 CALL fvinjt8(njet, ibagjet, rbagjet, npc, tf,nsensor,
599 . sensor_tab,scalt, igeo, geo, pm, ivolu, datainj,python)
603 isens=ibagjet(4,iinj)
604 fvel=rbagjet(15,iinj)
605 ivel=ibagjet(11,iinj)
609 tstart=sensor_tab(isens)%TSTART
615 IF (tt>=tstart.AND.(ittf==1.OR.ittf==2.OR.ittf==3))
THEN
620 IF (tt>=tstart.AND.dt1>zero)
THEN
621 tsg=(tt-tstart)*scalt
623 injvel=fvel*finter_mixed(python,nfunct,ivel,tsg,npc,tf)
630 datainj(3,iinj)=injvel
645 IF (icont(n1)/=0)
poro(iel)=
poro(iel)+third
646 IF (icont(n2)/=0)
poro(iel)=
poro(iel)+third
647 IF (icont(n3)/=0)
poro(iel)=
poro(iel)+third
663 1 elsout ,aoutot ,nvent ,nelt ,ittf ,
664 2 elarea ,elsini ,elem ,itagel ,svent ,
665 3 ibaghol ,rvolu ,rbaghol ,
poro ,p ,
666 4 eltg ,iparg ,mattg ,nel ,porosity,
667 5 ipm ,pm ,elbuf_tab,igroupc ,igrouptg)
710 pu(1,1:npolh)=qpolh(1,1:npolh)/mpolh(1:npolh)
711 pu(2,1:npolh)=qpolh(2,1:npolh)/mpolh(1:npolh)
712 pu(3,1:npolh)=qpolh(3,1:npolh)/mpolh(1:npolh)
721 mass_flux(iel) = zero
722 momentum_flux_x(iel) = zero
723 momentum_flux_y(iel) = zero
724 momentum_flux_z(iel) = zero
725 energy_flux(iel) = zero
729 rgas_flux(iel) = zero
747 IF (itagel(iel) > 0)
THEN
750 dmi = datainj(2, iinj) *
area / datainj(1, iinj)
752 momentum_flux_x(iel) = -dmi * nx * datainj(3, iinj)
753 momentum_flux_y(iel) = -dmi * ny * datainj(3, iinj)
754 momentum_flux_z(iel) = -dmi * nz * datainj(3, iinj)
755 energy_flux(iel) = dmi * datainj(4, iinj)
756 cpa_flux(iel) = dmi * rbagjet(2, iinj)
757 cpb_flux(iel) = dmi * rbagjet(3, iinj)
758 cpc_flux(iel) = dmi * rbagjet(4, iinj)
759 rgas_flux(iel) = dmi * rbagjet(1, iinj)
761 cpd_flux(iel) = dmi * rbagjet(16, iinj)
762 cpe_flux(iel) = dmi * rbagjet(17, iinj)
763 cpf_flux(iel) = dmi * rbagjet(18, iinj)
765 elfmass(iel) = elfmass(iel) + dmi * dt1
766 elfehpy(iel) = elfehpy(iel) + dmi * datainj(4, iinj) * dt1
767 elfvel(iel) = -datainj(3, iinj)
768 ELSE IF (itagel(iel) < 0)
THEN
771 idef = ibaghol(1, ivent)
772 itvent = ibaghol(10, ivent)
774 IF (
fvdata(ifv)%TRI_TO_ELEM(1, iel) /=
fvdata(ifv)%TRI_TO_ELEM(2, iel))
THEN
777 i =
fvdata(ifv)%TRI_TO_ELEM(1, iel)
780 re1 = epolh(i) / pvolu(i)
787 IF (itvent == 1)
THEN
788 uu = nx * ux1 + ny * uy1 + nz * uz1
790 IF (p1 < pext) uu = zero
792 ELSEIF ((itvent == 2 .AND. p1 > zero) .OR. (itvent == 4 .AND. p1 >= pext))
THEN
793 vv = nx * ux1 + ny * uy1 + nz * uz1
795 eta = (gama1 - one) / gama1
797 pstag = p1 * (one + half * eta * rho1 * vv * vv / p1)**ksi
798 pcrit = pstag * (two / (gama1+one))**ksi
799 p2 =
max(pext, pcrit)
800 rho2 = rho1 * (p2 / p1)**(one / gama1)
801 uu = two * p1 * (one - (p2 / p1)**eta) / (rho1 * eta)
804 vmax = half * ((p1 - pext) * pvolu(i) / (gama1 - one))
805 . /
max(em20, rho2 * aout * dt1 * gama1 * re1 / rho1)
806 vmax =
max(vmax, zero)
809 ELSE IF (itvent == 3)
THEN
811 ivdp = ibaghol(9, ivent)
812 fvdp = rbaghol(13, ivent)
813 uu = fvdp * get_u_func(ivdp, p2 * scalp, deri)
820 ELSEIF (itvent == 4 .AND. p1 < pext)
THEN
823 eta = (gamai - one) / gamai
824 pcrit = pext * (two / (gamai + one))**(one / eta)
826 rho2 = rhoi * (p2 / pext)**(one / gamai)
827 uu = two * pext * (one - (p2 / pext)**eta)/(rhoi * eta)
830 vmax = half*((pext - p1) * pvolu(i) / (gama1 - one))
831 . /
max(em20, rho2 * aout * dt1 * rvolu(63))
832 vmax =
max(vmax, zero)
836 ELSE IF (itvent == 5)
THEN
844 IF (uu > zero .AND. idef == 1)
THEN
845 dmout = uu * rho2 * aout
846 mass_flux(iel) = -dmout
847 momentum_flux_x(iel) = -dmout * ux1
848 momentum_flux_y(iel) = -dmout * uy1
849 momentum_flux_z(iel) = -dmout * uz1
850 dhout = dmout * gama1 * re1 / rho1
851 energy_flux(iel) = -dhout
856 cpa_flux(iel) = -dmout * cpai
857 cpb_flux(iel) = -dmout * cpbi
858 cpc_flux(iel) = -dmout * cpci
859 rgas_flux(iel) = -dmout * rmwi
864 cpd_flux(iel) = -dmout * cpdi
865 cpe_flux(iel) = -dmout * cpei
866 cpf_flux(iel) = -dmout * cpfi
870 elfmass(iel)=elfmass(iel)-dmout*dt1
871 elfehpy(iel)=elfehpy(iel)-dhout*dt1
872 elfvel(iel)=elfvel(iel)+uu*
area/elarea(iel)
877 IF (uu < zero .AND. idef == 1)
THEN
878 dmi = -uu * rho2 * aout
880 momentum_flux_x(iel) = dmi * ux1
881 momentum_flux_y(iel) = dmi * uy1
882 momentum_flux_z(iel) = dmi * uz1
887 cpa_flux(iel) = dmi * cpai
888 cpb_flux(iel) = dmi * cpbi
889 cpc_flux(iel) = dmi * cpci
890 rgas_flux(iel) = dmi * rmwi
895 cpd_flux(iel) = dmi * cpdi
896 cpe_flux(iel) = dmi * cpei
897 cpf_flux(iel) = dmi * cpfi
899 energy_flux(iel) = dmi * rvolu(63)
900 elfmass(iel) = elfmass(iel) + dmi * dt1
901 elfehpy(iel) = elfehpy(iel) + dmi * dt1 * rvolu(63)
902 elfvel(iel) = elfvel(iel) + uu *
area / elarea(iel)
904 eldehpy(iel) = dmi * rvolu(63)
906 ELSE IF (iel > nel)
THEN
908 IF (porosity(iel - nel) /= zero)
THEN
912 IF (tagela(iel) > 0)
THEN
934 vvx=third*(vx1+vx2+vx3)
935 vvy=third*(vy1+vy2+vy3)
936 vvz=third*(vz1+vz2+vz3)
942 vel(iel)=nx*vvx+ny*vvy+nz*vvz
943 i1 =
fvdata(ifv)%TRI_TO_ELEM(1, iel)
944 i2 =
fvdata(ifv)%TRI_TO_ELEM(2, iel)
948 area = elarea(iel) * porosity(iel - nel)
950 re1 = epolh(i1) / pvolu(i1)
956 re2 = epolh(i2) / pvolu(i2)
961 vfx = half * (ux1 + ux2)
962 vfy = half * (uy1 + uy2)
963 vfz = half * (uz1 + uz2)
964 vrel(iel) = (vfx - vvx)*(vfx - vvx) + (vfy - vvy)*(vfy - vvy) + (vfz - vvz)*(vfz - vvz)
965 ss_= nx * (vfx - vvx) + ny * (vfy - vvy) + nz * (vfz - vvz)
966 ss(iel) = elarea(iel)*abs(ss_)
967 IF (ss_ <= zero)
THEN
973 ruxm =
alpha * rho1 * ux1 + (one -
alpha) * rho2 * ux2
974 ruym =
alpha * rho1 * uy1 + (one -
alpha) * rho2 * uy2
975 ruzm =
alpha * rho1 * uz1 + (one -
alpha) * rho2 * uz2
976 rem =
alpha * gama1 * re1 + (one -
alpha) * gama2 * re2
978 massflow = rhom * ss_ *
area
979 mass_flux(iel) = -massflow
980 momentum_flux_x(iel) = -ruxm * ss_ *
area
981 momentum_flux_y(iel) = -ruym * ss_ *
area
982 momentum_flux_z(iel) = -ruzm * ss_ *
area
983 energy_flux(iel) = -rem * ss_ *
area
985 elfmass(iel) = elfmass(iel) + massflow * dt1
986 elfvel(iel) = elfvel(iel) + ss_ *
area
988 cpam =
alpha * cpapolh(i1) + (one -
alpha) * cpapolh(i2)
989 cpbm =
alpha * cpbpolh(i1) + (one -
alpha) * cpbpolh(i2)
990 cpcm =
alpha * cpcpolh(i1) + (one -
alpha) * cpcpolh(i2)
991 rgasm =
alpha * rmwpolh(i1) + (one -
alpha) * rmwpolh(i2)
992 cpa_flux(iel) = -massflow * cpam
993 cpb_flux(iel) = -massflow * cpbm
994 cpc_flux(iel) = -massflow * cpcm
995 rgas_flux(iel) = -massflow * rgasm
997 cpdm =
alpha * cpdpolh(i1) + (one -
alpha) * cpdpolh(i2)
998 cpem =
alpha * cpepolh(i1) + (one -
alpha) * cpepolh(i2)
999 cpfm =
alpha * cpfpolh(i1) + (one -
alpha) * cpfpolh(i2)
1000 cpd_flux(iel) = -massflow * cpdm
1001 cpe_flux(iel) = -massflow * cpem
1002 cpf_flux(iel) = -massflow * cpfm
1020 cpapolh(i) = msini * cpapolh(i)
1021 cpbpolh(i) = msini * cpbpolh(i)
1022 cpcpolh(i) = msini * cpcpolh(i)
1023 rmwpolh(i) = msini * rmwpolh(i)
1025 cpdpolh(i) = msini * cpdpolh(i)
1026 cpepolh(i) = msini * cpepolh(i)
1027 cpfpolh(i) = msini * cpfpolh(i)
1029 DO j = 1,
fvdata(ifv)%ELEM_TO_TRI(i)%MINUS_SIZE
1030 iel =
fvdata(ifv)%ELEM_TO_TRI(i)%MINUS(j)
1032 mpolh(i) = mpolh(i) + mass_flux(iel) * dt1
1033 qpolh(1, i) = qpolh(1, i) + momentum_flux_x(iel) * dt1
1034 qpolh(2, i) = qpolh(2, i) + momentum_flux_y(iel) * dt1
1035 qpolh(3, i) = qpolh(3, i) + momentum_flux_z(iel) * dt1
1036 epolh(i) = epolh(i) + energy_flux(iel) * dt1
1037 IF (mpolh(i) <= zero .OR. epolh(i) <= zero)
THEN
1040 cpapolh(i) = cpapolh(i) + cpa_flux(iel) * dt1
1041 cpbpolh(i) = cpbpolh(i) + cpb_flux(iel) * dt1
1042 cpcpolh(i) = cpcpolh(i) + cpc_flux(iel) * dt1
1043 rmwpolh(i) = rmwpolh(i) + rgas_flux(iel) * dt1
1045 cpdpolh(i) = cpdpolh(i) + cpd_flux(iel) * dt1
1046 cpepolh(i) = cpepolh(i) + cpe_flux(iel) * dt1
1047 cpfpolh(i) = cpfpolh(i) + cpf_flux(iel) * dt1
1051 DO j = 1,
fvdata(ifv)%ELEM_TO_TRI(i)%PLUS_SIZE
1052 iel =
fvdata(ifv)%ELEM_TO_TRI(i)%PLUS(j)
1054 mpolh(i) = mpolh(i) - mass_flux(iel) * dt1
1055 qpolh(1, i) = qpolh(1, i) - momentum_flux_x(iel) * dt1
1056 qpolh(2, i) = qpolh(2, i) - momentum_flux_y(iel) * dt1
1057 qpolh(3, i) = qpolh(3, i) - momentum_flux_z(iel) * dt1
1058 epolh(i) = epolh(i) - energy_flux(iel) * dt1
1059 IF (mpolh(i) <= zero .OR. epolh(i) <= zero)
THEN
1062 cpapolh(i) = cpapolh(i) - cpa_flux(iel) * dt1
1063 cpbpolh(i) = cpbpolh(i) - cpb_flux(iel) * dt1
1064 cpcpolh(i) = cpcpolh(i) - cpc_flux(iel) * dt1
1065 rmwpolh(i) = rmwpolh(i) - rgas_flux(iel) * dt1
1067 cpdpolh(i) = cpdpolh(i) - cpd_flux(iel) * dt1
1068 cpepolh(i) = cpepolh(i) - cpe_flux(iel) * dt1
1069 cpfpolh(i) = cpfpolh(i) - cpf_flux(iel) * dt1
1074 efac = epolh(i) / mpolh(i)
1075 cpapolh(i) = cpapolh(i) / mpolh(i)
1076 cpbpolh(i) = cpbpolh(i) / mpolh(i)
1077 cpcpolh(i) = cpcpolh(i) / mpolh(i)
1078 rmwpolh(i) = rmwpolh(i) / mpolh(i)
1080 cpdpolh(i) = cpdpolh(i) / mpolh(i)
1081 cpepolh(i) = cpepolh(i) / mpolh(i)
1082 cpfpolh(i) = cpfpolh(i) / mpolh(i)
1094 CALL fvtemp(ityp , efac , cpa , cpb , cpc ,
1095 . cpd , cpe , cpf , rmw , temp0,
1097 cp = cpa + cpb * temp + cpc * temp * temp
1099 cp = cp + cpd * temp**3 + cpf * temp**4
1100 IF (cpe /= zero .AND. temp > zero)
THEN
1101 cp = cp + cpe / (temp * temp)
1109 rpolh(i) = mpolh(i) / pvolu(i)
1110 ppolh(i) = rpolh(i) * rmw * temp
1135 idt_fvmbag =
fvdata(ifv)%ID_DT_OPTION
1147 idt_fvmbag =
fvdata(ifv)%ID_DT_OPTION ! /dt/fvmbag/[idt_fvmbag]
1149 SELECT CASE(idt_fvmbag)
1157 IF (ibpolh(i) == 0)
THEN
1160 dls(i)=pvolu(i)**third
1168 param_l_type =
fvdata(ifv)%L_TYPE
1170 SELECT CASE(param_l_type)
1182 dls(i)=pvolu(i)**third
1200 SELECT CASE (idt_fvmbag)
1205 IF(mpolh(i)<=zero.OR.epolh(i)<=zero.OR.gpolh(i)<=one)
THEN
1214 ssp=sqrt((gama-one)*gama*epolh(i)/mpolh(i))
1215 qvisc(i)=rpolh(i)*ad*al*(qa*qa*al*ad+qb*ssp)
1217 qx=qb*ssp+al*qa*qa*ad
1218 ssp=qx+sqrt(qx*qx+ssp*ssp)
1219 vv=sqrt(pu(1,i)**2+pu(2,i)**2+pu(3,i)**2)
1220 dtpolh(i)=cfl_coef*dls(i)/(ssp+vv)
1227 param_l_type = fvdata(ifv)%L_TYPE
1229 IF(param_l_type /= 3)
THEN
1232 IF(mpolh(i) <= zero.OR.epolh(i) <= zero.OR.gpolh(i) <= one)
THEN
1241 DO j = 1, fvdata(ifv)%ELEM_TO_TRI(i)%MINUS_SIZE
1242 iel = fvdata(ifv)%ELEM_TO_TRI(i)%MINUS(j)
1246 vv = vv+sqrt(vrel(iel))
1249 DO j = 1, fvdata(ifv)%ELEM_TO_TRI(i)%PLUS_SIZE
1250 iel = fvdata(ifv)%ELEM_TO_TRI(i)%PLUS(j)
1252 vv = vv+sqrt(vrel(iel))
1259 ssp=sqrt((gama-one)*gama*epolh(i)/mpolh(i))
1260 qvisc(i)=rpolh(i)*ad*al*(qa*qa*al*ad+qb*ssp)
1261 qx=qb*ssp+al*qa*qa*ad
1262 ssp=qx+sqrt(qx*qx+ssp*ssp)
1265 vv = vv / float(count)
1268 dtpolh(i)=cfl_coef*dls(i)/(ssp+vv)
1277 DO j = 1, fvdata(ifv)%ELEM_TO_TRI(i)%MINUS_SIZE
1280 ss_=
max(ss_,ss(iel))
1282 DO j = 1, fvdata(ifv)%ELEM_TO_TRI(i)%PLUS_SIZE
1283 iel = fvdata(ifv)%ELEM_TO_TRI(i)%PLUS(j)
1285 ss_=
max(ss_,ss(iel))
1292 ssp=sqrt((gama-one)*gama*epolh(i)/mpolh(i))
1293 qvisc(i)=rpolh(i)*ad*al*(qa*qa*al*ad+qb*ssp)
1294 qx=qb*ssp+al*qa*qa*ad
1295 ssp=qx+sqrt(qx*qx+ssp*ssp)
1300 dtpolh(i)=cfl_coef*dls(i)/(ssp+ss_)
1311 IF (dtpolh(i)<dtx)
THEN
1318 IF(ncycle > 0 .AND. idt_fvmbag == 2)
THEN
1319 lambda = fvdata(ifv)%LAMBDA
1320 IF(lambda > zero)
THEN
1321 dtold = fvdata(ifv)%DTOLD
1322 IF(dtold > zero)
THEN
1323 dtx =
min( dtx, dtold*(one+lambda))
1327 fvdata(ifv)%DTOLD = dtx
1329 IF (ilvout >= 1.AND.ipri==0)
THEN
1330 WRITE(iout,
'(A,I10,A,E12.4,A,I10)')
' ** MONITORED VOLUME ID: ',ivolu(1),
' TIME STEP:',dtx,
' FINITE VOLUME:',idpolh(phdt)
1359 vvx=third*(vx1+vx2+vx3)
1360 vvy=third*(vy1+vy2+vy3)
1361 vvz=third*(vz1+vz2+vz3)
1365 vel(iel)=nx*vvx+ny*vvy+nz*vvz
1366 i1 = fvdata(ifv)%TRI_TO_ELEM(1, iel)
1367 i2 = fvdata(ifv)%TRI_TO_ELEM(2, iel)
1369 momentum_flux_x(iel) = zero
1370 momentum_flux_y(iel) = zero
1371 momentum_flux_z(iel) = zero
1372 energy_flux(iel) = zero
1376 IF (itagel(iel) < 0)
THEN
1378 ivent = -itagel(iel)
1379 idef = ibaghol(1, ivent)
1380 iventyp = ibaghol(13, ivent)
1381 IF (idef == 1 .AND. iventyp == 0)
THEN
1385 fel(iel) = pp * aout
1386 momentum_flux_x(iel) = -pp * aout * nx
1387 momentum_flux_y(iel) = -pp * aout * ny
1388 momentum_flux_z(iel) = -pp * aout * nz
1389 energy_flux(iel) = -pp * vel(iel) * aout
1392 pp = ppolh(i1) + qvisc(i1)
1393 fel(iel) = fel(iel) + pp *
area
1394 momentum_flux_x(iel) = momentum_flux_x(iel) - pp *
area * nx
1395 momentum_flux_y(iel) = momentum_flux_y(iel) - pp *
area * ny
1396 momentum_flux_z(iel) = momentum_flux_z(iel) - pp *
area * nz
1397 energy_flux(iel) = energy_flux(iel) - pp * vel(iel) *
area
1398 energy_flux(iel) = energy_flux(iel) - rvolu(19) *
area * (tpolh(i1) - rvolu(25))
1401 p1 = ppolh(i1) + qvisc(i1)
1402 p2 = ppolh(i2) + qvisc(i2)
1403 pmean = half * (p1 + p2)
1406 area1 = area_old -
area
1407 ss_ = nx * vvx + ny * vvy + nz * vvz
1408 IF (itagel(iel) > 0)
THEN
1410 fel(iel) = (p1 - p2) * area1
1411 momentum_flux_x(iel) = -pmean * nx *
area
1412 momentum_flux_y(iel) = -pmean * ny *
area
1413 momentum_flux_z(iel) = -pmean * nz *
area
1414 energy_flux(iel) = -pmean * ss_ *
area
1416 fel(iel) = (p1 - p2) * area1
1417 momentum_flux_x(iel) = -pmean * nx *
area
1418 momentum_flux_y(iel) = -pmean * ny *
area
1419 momentum_flux_z(iel) = -pmean * nz *
area
1420 energy_flux(iel) = -pmean * ss_ *
area
1435 DO j = 1, fvdata(ifv)%ELEM_TO_TRI(i)%MINUS_SIZE
1436 iel = fvdata(ifv)%ELEM_TO_TRI(i)%MINUS(j)
1452 vvx=third*(vx1+vx2+vx3)
1453 vvy=third*(vy1+vy2+vy3)
1454 vvz=third*(vz1+vz2+vz3)
1456 i1 = fvdata(ifv)%TRI_TO_ELEM(1, iel)
1457 i2 = fvdata(ifv)%TRI_TO_ELEM(2, iel)
1461 pp = ppolh(i) + qvisc(i)
1465 area1 = area_old -
area
1470 ss_ = nx * vvx + ny * vvy + nz * vvz
1473 qpolh(1, i) = qpolh(1, i) + (momentum_flux_x(iel) - pp * nx * area1) * dt1
1474 qpolh(2, i) = qpolh(2, i) + (momentum_flux_y(iel) - pp * ny * area1) * dt1
1475 qpolh(3, i) = qpolh(3, i) + (momentum_flux_z(iel) - pp * nz * area1) * dt1
1476 IF (itagel(iel) > 0)
THEN
1477 epolh(i) = epolh(i) + (energy_flux(iel) + pp * vel(iel) * area1) * dt1
1479 epolh(i) = epolh(i) + (energy_flux(iel) - pp * ss_ * area1) * dt1
1482 DO j = 1, fvdata(ifv)%ELEM_TO_TRI(i)%PLUS_SIZE
1483 iel = fvdata(ifv)%ELEM_TO_TRI(i)%PLUS(j)
1499 vvx=third*(vx1+vx2+vx3)
1500 vvy=third*(vy1+vy2+vy3)
1501 vvz=third*(vz1+vz2+vz3)
1503 i1 = fvdata(ifv)%TRI_TO_ELEM(1, iel)
1504 i2 = fvdata(ifv)%TRI_TO_ELEM(2, iel)
1508 pp = ppolh(i) + qvisc(i)
1512 area1 = area_old -
area
1517 ss_ = nx * vvx + ny * vvy + nz * vvz
1521 qpolh(1, i) = qpolh(1, i) - (momentum_flux_x(iel) - pp * nx * area1) * dt1
1522 qpolh(2, i) = qpolh(2, i) - (momentum_flux_y(iel) - pp * ny * area1) * dt1
1523 qpolh(3, i) = qpolh(3, i) - (momentum_flux_z(iel) - pp * nz * area1) * dt1
1524 IF (itagel(iel) > 0)
THEN
1525 epolh(i) = epolh(i) - (energy_flux(iel) - pp * vel(iel) * area1) * dt1
1527 epolh(i) = epolh(i) - (energy_flux(iel) - pp * ss_ * area1
1539 250
IF (ilvout >= 1 .AND. ipri == 0)
THEN
1541 WRITE(iout,
'(A25,I10,A31)')
' ** MONITORED VOLUME ID: ',ivolu(1),
' - FINITE VOLUME MESH UPDATE **'
1542 WRITE(iout,
'(A,I8)')
' NUMBER OF FINITE VOLUMES : ',npolh
1543 WRITE(iout,
'(A,G16.9,A17,G16.9,A1)')
' SUM VOLUME FINITE VOLUMES : ',volph,
' (VOLUME AIRBAG: ',volg,
')'
1544 WRITE(iout,
'(A,G16.9,A17,G16.9,A1)')
' SUM AREA SURFACE POLYGONS : ',areap,
' (AREA AIRBAG : ',areael,
')'
1555 amtot=amtot+mpolh(i)
1556 enint=enint+epolh(i)
1557 pmean=pmean+ppolh(i)*pvolu(i)
1564 cp=cpa+cpb*temp+cpc*temp*temp
1569 cp=cp+cpd*temp**3+cpf*temp**4
1570 IF(temp > zero) cp=cp+cpe/(temp*temp)
1573 fsav(5) =fsav(5) +mpolh(i)*temp
1574 fsav(10)=fsav(10)+mpolh(i)*cp
1575 fsav(11)=fsav(11)+mpolh(i)*cv
1576 fsav(12)=fsav(12)+mpolh(i)*gama
1580 pmean2 = pmean / volph
1582 pdisp = pdisp + pvolu(i) * (ppolh(i) - pmean2)**2
1584 pdisp = sqrt(pdisp / volph) / pmean2
1586 injection_started = .false.
1588 injection_started = injection_started .OR. (datainj(2, iinj) > zero)
1590 IF (.NOT. injection_started)
THEN
1597 pres_av = pmean / volph
1603 cp_av = fsav(10) / amtot
1605 cv_av = fsav(11) / amtot
1607 fsav(12) = cp_av / cv_av
1609 rgas_av = cp_av - cv_av
1610 rho_av = amtot / volph
1611 fsav(5) = fsav(5) / amtot
1613 IF(ivolu(39) == 0)
THEN
1619 IF (itagel(iel)<0)
THEN
1621 rbaghol(18,ivent)=rbaghol(18,ivent)+elfvel(iel)*elsout(iel)
1622 rbaghol(19,ivent)=rbaghol(19,ivent)-elfmass(iel)
1623 rbaghol(20,ivent)=rbaghol(20,ivent)-elfehpy(iel)
1624 rbaghol(21,ivent)=rbaghol(21,ivent)+eldmass(iel)
1625 rbaghol(22,ivent)=rbaghol(22,ivent)+eldehpy(iel)
1629 sventot=rbaghol(16,ivent)+rbaghol(17,ivent)
1630 IF(sventot <= zero) cycle
1631 rbaghol(18,ivent)=rbaghol(18,ivent)/sventot
1634 fsav(7)=fsav(7)+(rbaghol(16,ivent)+rbaghol(17,ivent))*rbaghol(18,ivent)
1635 dmout =dmout+rbaghol(21,ivent)
1636 dhout =dhout+rbaghol(22,ivent)
1638 fsav(7) =fsav(7) /
max(aoutot,em20)
1642 CALL fvinjt8_1(njet, ibagjet , rbagjet , igeo, geo, pm,
1643 . ivolu, rvolu, dmout, dhout)
1645 IF (ivolu(74) == 0)
THEN
1646 up_switch = tt-ttf >= rvolu(70) .OR. npolh <= ivolu(37)
1648 IF (ivolu(74) == 1)
THEN
1650 up_switch = ((pdisp < pdisp_old) .AND. (pdisp < rvolu(73)))
1651 up_switch = up_switch .OR. tt-ttf >= rvolu(70)
1653 IF (ivolu(74) == 2)
THEN
1655 up_switch = ((pdisp < pdisp_old) .AND. (pdisp < rvolu
1656 up_switch = up_switch .AND. tt-ttf >= rvolu(70)
1670 IF (itagel(iel) > 0)
THEN
1671 fsav(15)=fsav(15)+elfmass(iel)
1681 IF( (tt>=output%TANIM .AND. tt<=output%TANIM_STOP) .OR.tt>=toutp.OR. nbgauge > 0 .OR.
1682 . (manim>=4.AND.manim<=15) )
THEN
1685 uel(1:3,1:nelt)=zero
1701 i1 = fvdata(ifv)%TRI_TO_ELEM(1, iel)
1702 i2 = fvdata(ifv)%TRI_TO_ELEM(2, iel)
1703 pel(iel) = half * (ppolh(i1) + ppolh(i2))
1704 IF (prepare_anim == 1)
THEN
1705 uel(1, iel) = half * (pu(1, i1) + pu(1, i2))
1707 uel(3, iel) = half * (pu(3, i1) + pu(3, i2))
1708 rhoel(iel) = half * (rpolh(i1) + rpolh(i2))
1709 tkel(iel) = half * (tpolh(i1) + tpolh(i2))
1710 sspel(iel) = half * (sqrt(gpolh(i1)*ppolh(i1)/rpolh(i1)) + sqrt(gpolh(i2
1718 IF(prepare_anim == 1)
THEN
1721 IF(itagel(iel)<0)
THEN
1722 uel(1,iel)=elfvel(iel)*
norm(1,iel)
1723 uel(2,iel)=elfvel(iel)*
norm(2,iel)
1724 uel(3,iel)=elfvel(iel)*
norm(3,iel)
1756 fac1=third*elarea(iel)/area1
1757 fac2=third*elarea(iel)/area2
1758 fac3=third*elarea(iel)/area3
1759 p(n1) =p(n1) +fac1*pel(iel)
1760 p(n2) =p(n2) +fac2*pel(iel)
1761 p(n3) =p(n3) +fac3*pel(iel)
1764 IF(prepare_anim == 1)
THEN
1772 fac1=third*elarea(iel)/area1
1773 fac2=third*elarea(iel)/area2
1774 fac3=third*elarea(iel)/area3
1775 u(1,n1)=u(1,n1)+fac1*uel(1,iel)
1776 u(2,n1)=u(2,n1)+fac1*uel(2,iel)
1777 u(3,n1)=u(3,n1)+fac1*uel(3,iel)
1778 u(1,n2)=u(1,n2)+fac2*uel(1,iel)
1779 u(2,n2)=u(2,n2)+fac2*uel(2,iel)
1780 u(3,n2)=u(3,n2)+fac2*uel(3,iel)
1781 u(1,n3)=u(1,n3)+fac3*uel(1,iel)
1782 u(2,n3)=u(2,n3)+fac3*uel(2,iel)
1783 u(3,n3)=u(3,n3)+fac3*uel(3,iel)
1784 rho(n1)=rho(n1)+fac1*rhoel(iel)
1785 rho(n2)=rho(n2)+fac2*rhoel(iel)
1786 rho(n3)=rho(n3)+fac3*rhoel(iel)
1787 tk(n1)=tk(n1)+fac1*tkel(iel)
1788 tk(n2)=tk(n2)+fac2*tkel(iel)
1789 tk(n3)=tk(n3)+fac3*tkel(iel)
1790 sspk(n1)=sspk(n1)+fac1*sspel(iel)
1791 sspk(n2)=sspk(n2)+fac2*sspel(iel)
1792 sspk(n3)=sspk(n3)+fac3*sspel(iel)
1796 IF (ibpolh(i)/=0)
THEN
1799 IF(brna(1,ii)==brna(4,ii).AND.brna(5,ii)==brna(8,ii))
THEN
1805 vola(jj)=vola(jj)+one_over_6*pvolu(i)
1806 pa(jj)=pa(jj)+one_over_6*ppolh(i)*pvolu(i)
1807 rhoa(jj)=rhoa(jj)+one_over_6*rpolh(i)*pvolu(i)
1808 tka(jj)=tka(jj)+one_over_6*temp*pvolu(i)
1809 sspka(jj)=sspka(jj)+one_over_6*sqrt(gpolh(i)*ppolh(i)/rpolh(i))*pvolu(i)
1810 ua(1,jj)=ua(1,jj)+one_over_6*pu(1,i)*pvolu(i)
1811 ua(2,jj)=ua(2,jj)+one_over_6*pu(2,i)*pvolu(i)
1812 ua(3,jj)=ua(3,jj)+one_over_6*pu(3,i)*pvolu(i)
1814 ELSEIF(brna(5,ii)==brna(8,ii).AND.
1815 . brna(6,ii)==brna(8,ii).AND.
1816 . brna(7,ii)==brna(8,ii))
THEN
1820 vola(jj)=vola(jj)+one_fifth*pvolu(i)
1821 pa(jj)=pa(jj)+one_fifth*ppolh(i)*pvolu(i)
1822 rhoa(jj)=rhoa(jj)+one_fifth*rpolh(i)*pvolu(i)
1823 tka(jj)=tka(jj)+one_fifth*temp*pvolu(i)
1824 sspka(jj)=sspka(jj)+one_fifth*sqrt(gpolh(i)*ppolh(i)/rpolh(i))*pvolu(i)
1825 ua(1,jj)=ua(1,jj)+one_fifth*pu(1,i)*pvolu(i)
1826 ua(2,jj)=ua(2,jj)+one_fifth*pu(2,i)*pvolu(i)
1827 ua(3,jj)=ua(3,jj)+one_fifth*pu(3,i)*pvolu(i)
1833 vola(jj)=vola(jj)+one_over_8*pvolu(i)
1834 pa(jj)=pa(jj)+one_over_8*ppolh(i)*pvolu(i)
1835 rhoa(jj)=rhoa(jj)+one_over_8*rpolh(i)*pvolu(i)
1836 tka(jj)=tka(jj)+one_over_8*temp*pvolu(i)
1837 sspka(jj)=sspka(jj)+one_over_8*sqrt(gpolh(i)*ppolh(i)/rpolh(i))*pvolu
1838 ua(1,jj)=ua(1,jj)+one_over_8*pu(1,i)*pvolu(i)
1839 ua(2,jj)=ua(2,jj)+one_over_8*pu(2,i)*pvolu(i)
1840 ua(3,jj)=ua(3,jj)+one_over_8*pu(3,i)*pvolu(i)
1848 IF(volno > zero)
THEN
1850 rhoa(i)=rhoa(i)/volno
1851 tka(i) =tka(i)/volno
1852 sspka(i) =sspka(i)/volno
1853 ua(1,i)=ua(1,i)/volno
1854 ua(2,i)=ua(2,i)/volno
1855 ua(3,i)=ua(3,i)/volno
1865 area_vent(ivent)=zero
1871 IF (itagel(iel)<0)
THEN
1873 area_vent(ivent)=area_vent(ivent)+elarea(iel)
1874 pm_vent(ivent)=pm_vent(ivent)+fel(iel)
1881 IF (area_vent(ivent)>zero)
THEN
1882 pm_vent(ivent)=pm_vent(ivent)/area_vent(ivent)
1887 idef =ibaghol(1,ivent)
1888 idtpdef= ibaghol(11,ivent)
1889 idpdef = ibaghol(12,ivent)
1893 pdef =rbaghol(1,ivent)
1894 dtpdefi=rbaghol(4,ivent)
1895 dtpdefc=rbaghol(5,ivent)
1896 tvent =rbaghol(3,ivent)
1897 tstope =rbaghol(14,ivent)
1898 IF (idtpdef==0)
THEN
1899 IF(pm_vent(ivent)>pdef+pext)
THEN
1900 dtpdefc = dtpdefc+dt1
1902 ELSE IF (idtpdef==1)
THEN
1903 IF (pm_vent(ivent)>pdef+pext)
THEN
1907 dtpdefc = dtpdefc+dt1
1910 ibaghol(12,ivent) = idpdef
1911 rbaghol(5,ivent) = dtpdefc
1916 titrevent(k)=ibaghol(14+k,ivent)
1917 venttitle(k:k) = achar(titrevent(k))
1919 IF(ittf==11.OR.ittf==12.OR.ittf==13)
THEN
1920 IF (idef==0.AND.pm_vent(ivent)>pdef+pext
1921 . .AND.dtpdefc>dtpdefi
1922 . .AND.volph>em3*areap**three_half
1923 . .AND.tt<tstope+ttf)
THEN
1926 .
' ** AIRBAG VENT HOLE MEMBRANE IS DEFLATED **'
1927 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
1928 .
' VENT HOLE NUMBER',ivent,
' ',venttitle
1930 .
' ** VENT HOLE MEMBRANE IS DEFLATED ',venttitle
1932 IF(idef==0 .AND. tt>tvent+ttf
1933 . .AND. tt<tstope+ttf)
THEN
1935 WRITE(iout,
'(A)')
' ** AIRBAG VENTING STARTS **'
1936 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
1937 .
' VENT HOLE NUMBER',ivent,
' ',venttitle
1938 WRITE(istdo,
'(2A)')
' ** VENTING STARTS ',venttitle
1940 IF(idef==1 .AND. tt>=tstope+ttf)
THEN
1942 WRITE(iout,
'(A)')
' ** AIRBAG VENTING STOPS **'
1943 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
1944 .
' VENT HOLE NUMBER',ivent,
' ',venttitle
1945 WRITE(istdo,
'(2A)')
' ** VENTING STOPS ',venttitle
1948 ELSE IF(ittf==0)
THEN
1949 IF (idef==0.AND.pm_vent(ivent)>pdef+pext
1950 . .AND.dtpdefc>dtpdefi
1951 . .AND.volph>em3*areap**three_half
1952 . .AND.tt<tstope)
THEN
1955 .
' ** AIRBAG VENT HOLE MEMBRANE IS DEFLATED **'
1956 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
1957 .
' VENT HOLE NUMBER',ivent,
' ',venttitle
1959 .
' ** VENT HOLE MEMBRANE IS DEFLATED ',venttitle
1961 IF(idef==0 .AND. tt>tvent
1962 . .AND. tt<tstope)
THEN
1964 WRITE(iout,
'(A)')
' ** AIRBAG VENTING STARTS **'
1965 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
1966 .
' VENT HOLE NUMBER',ivent,
' ',venttitle
1967 WRITE(istdo,
'(2A)')
' ** VENTING STARTS ',venttitle
1969 IF(idef==1 .AND. tt>=tstope)
THEN
1971 WRITE(iout,
'(A)')
' ** AIRBAG VENTING STOPS **'
1972 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
1973 .
' VENT HOLE NUMBER',ivent,
' ',venttitle
1974 WRITE(istdo,
'(2A)')
' ** VENTING STOPS ',venttitle
1978 ibaghol(1,ivent)=idef
1985 IF(ivolu(39)==1)
THEN
1995 ff=fel(iel)-pext*elarea(iel)
1999 fvspmd(ifv)%AAA(1,n1)=fvspmd(ifv)%AAA(1,n1)+third*ff*nrx
2000 fvspmd(ifv)%AAA(2,n1)=fvspmd(ifv)%AAA(2,n1)+third*ff*nry
2001 fvspmd(ifv)%AAA(3,n1)=fvspmd(ifv)%AAA(3,n1)+third*ff*nrz
2002 fvspmd(ifv)%AAA(1,n2)=fvspmd(ifv)%AAA(1,n2)+third*ff*nrx
2003 fvspmd(ifv)%AAA(2,n2)=fvspmd(ifv)%AAA(2,n2)+third*ff*nry
2004 fvspmd(ifv)%AAA(3,n2)=fvspmd(ifv)%AAA(3,n2)+third*ff*nrz
2005 fvspmd(ifv)%AAA(1,n3)=fvspmd(ifv)%AAA(1,n3)+third*ff*nrx
2006 fvspmd(ifv)%AAA(2,n3)=fvspmd(ifv)%AAA(2,n3)+third*ff*nry
2007 fvspmd(ifv)%AAA(3,n3)=fvspmd(ifv)%AAA(3,n3)+third*ff*nrz
2009 wfext=wfext+ff*vel(iel)*dt1
2011 fsav(18)=fsav(18)+wfext-wfext0
2016 IF (nbgauge > 0)
THEN
2018 fvspmd(ifv)%GGG(1,i)=p(i)
2019 fvspmd(ifv)%GGG(2,i)=rho(i)
2020 fvspmd(ifv)%GGG(3,i)=tk(i)
2024 fvspmd(ifv)%GGA(1,i)=pa(i)
2025 fvspmd(ifv)%GGA(2,i)=rhoa(i)
2026 fvspmd(ifv)%GGA(3,i)=tka(i)