51 SUBROUTINE fvbag1(OUTPUT,NN , NEL , IBUF , ELEM , NJET ,
52 2 IBAGJET , RBAGJET, NVENT , IBAGHOL , RBAGHOL ,
53 3 P , RHO , TK , U , SSPK ,
54 4 X , V , A , NSENSOR ,SENSOR_TAB,
55 5 FSAV , NPC , TF , IVOLU , RVOLU ,
56 6 MPOLH , QPOLH , EPOLH , CENTROID_POLH ,
57 7 PPOLH , RPOLH , GPOLH , SSPPOLH ,
58 8 NPOLH , IFVNOD , RFVNOD , IFVTRI ,
59 9 IFVPOLY , IFVTADR, IFVPOLH ,
60 A IFVPADR , INFO , NNS , NNTR , IFV ,
61 B NPOLHA , DLH , CPAPOLH ,
62 C CPBPOLH , CPCPOLH, RMWPOLH ,
63 D ITAGEL , ELSINI , ICONTACT , IDPOLH ,
64 E ELFMASS , ELFVEL , IBUFA , ELEMA , TAGELA ,
65 F PA , RHOA , TKA , UA , BRNA ,
66 G NNA , NTGA , IBPOLH , DTPOLH , NNT ,
67 H NELT , XXXA , VVVA , NCONA , POROSITY,
68 I LGAUGE , GAUGE , ITYP , IGEO , SSPKA ,
69 J GEO , PM , IPM , TPOLH , ELFEHPY ,
70 K CPDPOLH , CPEPOLH, CPFPOLH ,
71 L ELTG , IPARG , MATTG ,
72 M IGROUPTG , IGROUPC, ELBUF_TAB, FEXT , CFL_COEF ,
73 N PDISP_OLD, PDISP , H3D_DATA , ITAB , WFEXT, PYTHON)
85 USE cast_mod,
only: double_to_my_real
86 USE python_funct_mod,
only : python_
87 USE finter_mixed_mod,
only: finter_mixed
91#include "implicit_f.inc"
100#include "scr07_c.inc"
101#include "scr18_c.inc"
102#include "param_c.inc"
103#include "units_c.inc"
106#include "mvsiz_p.inc"
110 TYPE(output_),
INTENT(INOUT) :: OUTPUT
111 INTEGER ,
INTENT(IN) :: NSENSOR, NPOLH
112 INTEGER NN, NEL, IBUF(*), ELEM(3,*), NJET, IBAGJET(NIBJET,*),
113 . NVENT, IBAGHOL(NIBHOL,*),
114 . NPC(*), IVOLU(*), IFVNOD(3,*), IFVTRI(6,*),
115 . IFVPOLY(*),IFVTADR(*), IFVPOLH(*), IFVPADR(*), ,
116 . NNS, NNTR, IFV, NPOLHA, ITAGEL(*), ICONTACT(*),
117 . IDPOLH(NPOLH), IBUFA(*), ELEMA(3,*), TAGELA(*), BRNA(8,*),
118 . NNA, NTGA, IBPOLH(NPOLH), NNT, NELT, NCONA(16,*),
119 . LGAUGE(3,NBGAUGE), ITYP, IGEO(NPROPGI,NUMGEO)
121 INTEGER IPM(NPROPMI,NUMMAT), IPARG(NPARG,NGROUP)
122 INTEGER MATTG(*), IGROUPTG(NUMELTG), IGROUPC(NUMELC)
124 my_real RBAGJET(NRBJET,*), RBAGHOL(NRBHOL,*), P(*), RHO(*),
125 . TK(*), U(3,*), (*), X(3,NUMNOD), V(3,NUMNOD), A(3,NUMNOD),
126 . FSAV(NTHVKI), TF(*), RVOLU(*), MPOLH(NPOLH), QPOLH(3,NPOLH),
127 . EPOLH(NPOLH), PPOLH(NPOLH), RPOLH(NPOLH), GPOLH(NPOLH), RFVNOD(2,*), DLH,
128 . CPAPOLH(NPOLH), (NPOLH), CPCPOLH(NPOLH), RMWPOLH(NPOLH), ELSINI(*),
129 . ELFMASS(*), (*), PA(*), RHOA(*), TKA(*),SSPKA(*), UA(3,*),
130 . DTPOLH(NPOLH), XXXA(3,*), VVVA(3,*), POROSITY(*),
131 . GAUGE(LLGAUGE,NBGAUGE), GEO(NPROPG,NUMGEO), PM(NPROPM,NUMMAT), ELFEHPY(*),
132 . tpolh(npolh), cpdpolh(npolh), cpepolh(npolh), cpfpolh(npolh), fext(3,numnod), cfl_coef,
134 my_real,
INTENT(INOUT) :: ssppolh(npolh)
136 TYPE(elbuf_struct_),
DIMENSION(NGROUP) :: ELBUF_TAB
137 TYPE (SENSOR_STR_) ,
DIMENSION(NSENSOR) ,
INTENT(IN) :: SENSOR_TAB
138 TYPE(H3D_DATABASE) :: H3D_DATA
139 INTEGER,
INTENT(IN)::ITAB(NUMNOD)
140 my_real,
INTENT(INOUT) :: CENTROID_POLH(3,NPOLH)
141 DOUBLE PRECISION,
INTENT(INOUT) :: WFEXT
142 type(python_) :: PYTHON
146 INTEGER I, II, IINJ, IEL, N1, N2, N3, JEL,
147 . NN1, NN2, NN3, J, JJ, K, KK, IMASS, IFLU, ISENS, IVEL,
148 . ITEMP, NV, ILVOUT, NPOLYG,NTRIA, IPRI,
149 . IVENT, IDEF, IPORT, IPORP, IPORA, IPORT1, IPORP1, IPORA1,
150 . ITVENT, PHDT, I1, I2, NNSA, ,ITTF, IDPDEF,
151 . IDTPDEF,PMAIN,N21,N22,ITYPL,
152 . PREPARE_ANIM,IVENTYP,IMETHOD_LC, IEL1, IEL2, IDT_FVMBAG
153 INTEGER TITREVENT(20)
155 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: TAGSURF
156 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ICONT
157 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ITAGP
159 my_real,
DIMENSION(:),
ALLOCATABLE :: dm
160 my_real,
DIMENSION(:),
ALLOCATABLE :: nodarea
161 my_real,
DIMENSION(:),
ALLOCATABLE :: area_max
162 my_real,
DIMENSION(:),
ALLOCATABLE :: parea
163 my_real,
DIMENSION(:),
ALLOCATABLE :: pvolu
164 my_real,
DIMENSION(:),
ALLOCATABLE :: rhoel
165 my_real,
DIMENSION(:),
ALLOCATABLE :: tkel
166 my_real,
DIMENSION(:),
ALLOCATABLE :: sspel
167 my_real,
DIMENSION(:),
ALLOCATABLE :: elarea
168 my_real,
DIMENSION(:),
ALLOCATABLE :: dmini
169 my_real,
DIMENSION(:),
ALLOCATABLE :: dmcpa
170 my_real,
DIMENSION(:),
ALLOCATABLE :: dmcpb
171 my_real,
DIMENSION(:),
ALLOCATABLE :: dmcpc
172 my_real,
DIMENSION(:),
ALLOCATABLE :: dmrmw
173 my_real,
DIMENSION(:),
ALLOCATABLE :: elsout
174 my_real,
DIMENSION(:),
ALLOCATABLE :: tmp
175 my_real,
DIMENSION(:),
ALLOCATABLE ::
poro
176 my_real,
DIMENSION(:),
ALLOCATABLE :: vola
177 my_real,
DIMENSION(:),
ALLOCATABLE :: hmin
178 my_real,
DIMENSION(:),
ALLOCATABLE :: vel
179 my_real,
DIMENSION(:),
ALLOCATABLE :: svent
180 my_real,
DIMENSION(:),
ALLOCATABLE :: dmcpd
181 my_real,
DIMENSION(:),
ALLOCATABLE :: dmcpe
182 my_real,
DIMENSION(:),
ALLOCATABLE :: dmcpf
183 my_real,
DIMENSION(:),
ALLOCATABLE :: pel
184 my_real,
DIMENSION(:),
ALLOCATABLE :: dls
185 my_real,
DIMENSION(:),
ALLOCATABLE :: eldmass
186 my_real,
DIMENSION(:),
ALLOCATABLE :: eldehpy
187 my_real,
DIMENSION(:,:),
ALLOCATABLE :: pnod
188 my_real,
DIMENSION(:,:),
ALLOCATABLE ::
norm
189 my_real,
DIMENSION(:,:),
ALLOCATABLE :: pnorm
190 my_real,
DIMENSION(:,:),
ALLOCATABLE :: pu
191 my_real,
DIMENSION(:,:),
ALLOCATABLE :: pw
192 my_real,
DIMENSION(:,:),
ALLOCATABLE :: vnod
193 my_real,
DIMENSION(:,:),
ALLOCATABLE :: vgrid
194 my_real,
DIMENSION(:,:),
ALLOCATABLE :: xxx
195 my_real,
DIMENSION(:,:),
ALLOCATABLE :: vvv
197 my_real x1, y1, z1, x2, y2, z2, x3, y3, z3,
198 . x12, y12, z12, x13, y13, z13, nrx, nry, nrz, area2,
200 .
area,denom,denom_max, nx, ny,
201 . nz, gamai, cpai, cpbi, cpci, rmwi, ti,
203 . rhoi, datainj(6,njet), scalt, fmass, gmass_old,
204 . gmtot_old, fvel, tstart, tsg, gmass, dgmass, injvel,
205 . gmtot, rmwg, cpa, cpb, cpc, ftemp, efac, cpg,
206 . cvg, wsurf(3), gama, fel(nelt),
207 . dq(3,npolh), de(npolh), dmi, dqi(3), dei, rho1, re1, ux1,
208 . uy1, uz1, rho2, re2, ux2, uy2, uz2, vfx, vfy, vfz, ss,
209 .
alpha, rhom, rem, ruxm, ruym, ruzm, p1, p2,
210 . uel(3,nelt), area1, area3, ff, temp, temp2, pext, volg, volph,
211 . areap, areael, xx, yy, zz, qa, qb, dtx, al, dd, ad, ssp,
212 . qx, vv, msini, rmw, cv, gama1, gama2,
213 . qvisc(npolh), amtot, pmean, pmean2,
214 . area_vent(nvent), pm_vent(nvent), scalp, scals, exten,
215 . avent, bvent, aini, fport, fporp, fpora, fport1
216 . fpora1, aout, aout1, deri, pdef, pvoltmp,
217 . dtpdefi, dtpdefc, tvent,aoutot, sventot,
218 . x23, y23, z23, x31, y31, z31, l12, l23, l31, h1, h2, h3,
219 . fac1, fac2, fac3, hm1, area_old, pp, vmax, uu,
220 . pcrit, rhoinj, pinj, vx1, vy1, vz1, vx2, vy2, vz2,
221 . vx3, vy3, vz3, vvx, vvy, vvz, fac,
223 . cpd, cpe, cpf, temp0, tt1,pstag, volno,tstope,
224 . enint, massflow, wfext0, dmout, dhout,
225 . cpam, cpbm, cpcm, cpdm, cpem, cpfm, rmwm, tmp_vec(3), vmat(3),ssp1,ssp2,sspt,ntria_tot,
226 . pres_av, rho_av, temp_av, cp_av, cv_av, rgas_av, centroid(3)
227 DOUBLE PRECISION :: CP
229 LOGICAL :: boolTAGEL,EXIT_NEG_VOL,INJECTION_STARTED
234 CHARACTER*20 VENTTITLE
235 MY_REAL :: DTOLD, PARAM_LAMBDA
236 INTEGER :: PARAM_L_TYPE
253 CALL my_alloc(tagsurf,2,nelt+1)
254 CALL my_alloc(icont,nnt)
255 CALL my_alloc(itagp,npolh)
257 CALL my_alloc(area_max,npolh)
258 CALL my_alloc(dm,npolh)
259 CALL my_alloc(nodarea,nnt)
260 CALL my_alloc(pnod,3,nns)
261 CALL my_alloc(elarea,nelt)
262 CALL my_alloc(
norm,3,nelt)
263 CALL my_alloc(parea,nntr)
264 CALL my_alloc(pnorm,3,nntr)
265 CALL my_alloc(pvolu,npolh)
266 CALL my_alloc(rhoel,nelt)
267 CALL my_alloc(tkel,nelt)
268 CALL my_alloc(sspel,nelt)
269 CALL my_alloc(pu,3,npolh)
270 CALL my_alloc(pw,3,npolh)
271 CALL my_alloc(dmini,npolh)
272 CALL my_alloc(dmcpa,npolh)
273 CALL my_alloc(dmcpb,npolh)
274 CALL my_alloc(dmcpc,npolh)
275 CALL my_alloc(dmrmw,npolh)
276 CALL my_alloc(elsout,nelt)
277 CALL my_alloc(tmp,nel)
278 CALL my_alloc(
poro,nelt)
279 CALL my_alloc(vola,nna)
280 CALL my_alloc(hmin,nntr)
281 CALL my_alloc(vel,nelt)
282 CALL my_alloc(vnod,3,nns)
283 CALL my_alloc(vgrid,3,nntr)
284 CALL my_alloc(svent,nvent)
285 CALL my_alloc(xxx,3,nnt)
286 CALL my_alloc(dmcpd,npolh)
287 CALL my_alloc(dmcpe,npolh)
288 CALL my_alloc(dmcpf,npolh)
289 CALL my_alloc(pel,nelt)
290 CALL my_alloc(dls,npolh)
291 CALL my_alloc(eldmass,nel)
292 CALL my_alloc(eldehpy,nel)
293 CALL my_alloc(vvv,3,nnt)
297 IF(nbgauge > 0 )
THEN
298 ALLOCATE(
fvspmd(ifv)%GGG(3,nnt))
299 ALLOCATE(
fvspmd(ifv)%GGA(3,nna))
301 ALLOCATE(
fvspmd(ifv)%AAA(3,nnt))
302 fvspmd(ifv)%AAA(1:3,1:nnt) = zero
307 i1=
fvspmd(ifv)%IBUF_L(1,i)
308 i2=
fvspmd(ifv)%IBUF_L(2,i)
315 i1=
fvspmd(ifv)%IBUF_L(1,i)
316 i2=
fvspmd(ifv)%IBUF_L(2,i)
322 IF (intbag /= 0.AND.nvent > 0.AND.ivolu(39)
THEN
324 i1=
fvspmd(ifv)%IBUF_L(1,i)
326 icont(i1)=icontact(i2)
335 IF (intbag /= 0.AND.nvent > 0.AND.ivolu(39) /= 0)
339 IF (ispmd/=
fvspmd(ifv)%PMAIN-1)
GOTO 1000
386 area2=sqrt(nrx**2+nry**2+nrz**2)
388 norm(1,iel)=nrx/area2
389 norm(2,iel)=nry/area2
390 norm(3,iel)=nrz/area2
392 tmp(iel) = one_over_6 * (x1*nrx+y1*nry+z1*nrz)
405 elarea(iel) = half * area2
406 nodarea(n1)=nodarea(n1)+one_over_6*area2
407 nodarea(n2)=nodarea(n2)+one_over_6*area2
408 nodarea(n3)=nodarea(n3)+one_over_6*area2
414 IF (dt1==zero.OR.ivolu(39)==0)
THEN
431 IF (ifvnod(1,i) == 1)
THEN
440 IF (tagela(iel) > 0)
THEN
459 ELSEIF (tagela(iel) < 0)
THEN
479 pnod(1,i)=(one-ksi-eta)*x1+ksi*x2+eta*x3
480 pnod(2,i)=(one-ksi-eta)*y1+ksi*y2+eta*y3
481 pnod(3,i)=(one-ksi-eta)*z1+ksi*z2+eta*z3
482 vnod(1,i)=(one-ksi-eta)*vx1+ksi*vx2+eta*vx3
483 vnod(2,i)=(one-ksi-eta)*vy1+ksi*vy2+eta*vy3
484 vnod(3,i)=(one-ksi-eta)*vz1+ksi*vz2+eta*vz3
486 ELSEIF (ifvnod(1,i) == 2)
THEN
488 pnod(1:3,i) = xxxa(1:3,i2)
489 vnod(1:3,i) = vvva(1:3,i2)
497 IF (ifvnod(1,i) == 3)
THEN
501 pnod(1,i)=fac*pnod(1,i1)+(one-fac)*pnod(1,i2)
502 pnod(2,i)=fac*pnod(2,i1)+(one-fac)*pnod(2,i2)
503 pnod(3,i)=fac*pnod(3,i1)+(one-fac)*pnod(3,i2)
504 vnod(1,i)=fac*vnod(1,i1)+(one-fac)*vnod(1,i2)
505 vnod(2,i)=fac*vnod(2,i1)+(one-fac)*vnod(2,i2)
506 vnod(3,i)=fac*vnod(3,i1)+(one-fac)*vnod(3,i2)
534 area2=sqrt(nrx**2+nry**2+nrz**2)
545 IF(ivolu(39)==0)
THEN
559 vgrid(1,i)=third*(vx1+vx2+vx3)
560 vgrid(2,i)=third*(vy1+vy2+vy3)
561 vgrid(3,i)=third*(vz1+vz2+vz3)
572 DO j=ifvpadr(i),ifvpadr(i+1)-1
574 DO k=ifvtadr(jj), ifvtadr(jj+1)-1
577 area_max(i)=
max(area_max(i),
area)
596 IF (i1 == i.AND.i2 == i)
THEN
606 pvoltmp=pvoltmp+third*
area*(x1*nx+y1*ny+z1*nz)
608 enddo! next k(triangle)
620 IF (iel > 0) areap=areap+parea(i)
624 areael=areael+elarea(iel)
629 exit_neg_vol = .false.
632 IF(pvolu(i) <= 0) exit_neg_vol = .true.
635 ipri=mod(ncycle,iabs(ncpri))
636 IF(exit_neg_vol)
THEN
638 IF (pvolu(i) <= zero)
THEN
641 CALL ancmsg(msgid=185,anmode=aninfo,
642 . i1=idpolh(i),r1=pvolu(i),i3=i,i4=npolh)
652 IF (dt1 == zero)
THEN
656 cpapolh(1:npolh)=cpai
658 cpbpolh(1:npolh)=cpbi
660 cpcpolh(1:npolh)=cpci
662 rmwpolh(1:npolh)=rmwi
666 cpdpolh(1:npolh)=cpdi
668 cpepolh(1:npolh)=cpei
670 cpfpolh(1:npolh)=cpfi
674 IF (dt1==zero.OR.ivolu(39)==0)
THEN
677 mpolh(1:npolh)=rhoi*pvolu(1:npolh)
678 epolh(1:npolh)=mpolh(1:npolh)*efac
679 pu(1,1:npolh) = rvolu(67)
680 pu(2,1:npolh) = rvolu(68)
681 pu(3,1:npolh) = rvolu(69)
682 qpolh(1,1:npolh) = mpolh(1:npolh)*pu(1,1:npolh)
683 qpolh(2,1:npolh) = mpolh(1:npolh)*pu(2,1:npolh)
684 qpolh(3,1:npolh) = mpolh(1:npolh)*pu(3,1:npolh)
688 datainj(1:6,1:njet)=zero
689 IF(ivolu(39) == 0)
GO TO 250
695 IF (itagel(iel) > 0)
THEN
697 datainj(1,iinj)=datainj(1,iinj)+elarea(iel)
703 CALL fvinjt6(njet, ibagjet, rbagjet, npc, tf, nsensor,
704 . sensor_tab,scalt, datainj, python )
705 ELSEIF(ityp == 8)
THEN
706 CALL fvinjt8(njet, ibagjet, rbagjet, npc, tf, nsensor,
707 . sensor_tab,scalt, igeo, geo, pm, ivolu, datainj,python)
711 isens=ibagjet(4,iinj)
712 fvel=rbagjet(15,iinj)
713 ivel=ibagjet(11,iinj)
717 tstart=sensor_tab(isens)%TSTART
723 IF (tt >= tstart.AND.(ittf == 1.OR.ittf == 2.OR.ittf == 3))
THEN
728 IF (tt >= tstart.AND.dt1 > zero)
THEN
729 tsg=(tt-tstart)*scalt
731 injvel=fvel*finter_mixed(python,nfunct,ivel,tsg,npc,tf)
738 datainj(3,iinj)=injvel
743 IF (intbag == 0)
THEN
753 IF (icont(n1) /= 0)
poro(iel)=
poro(iel)+third
754 IF (icont(n2) /= 0)
poro(iel)=
poro(iel)+third
755 IF (icont(n3) /= 0)
poro(iel)=
poro(iel)+third
771 1 elsout ,aoutot ,nvent ,nelt ,ittf ,
773 3 ibaghol ,rvolu ,rbaghol ,
poro ,p ,
774 4 eltg ,iparg ,mattg ,nel ,porosity,
775 5 ipm ,pm ,elbuf_tab,igroupc ,igrouptg)
814 pu(1,1:npolh)=qpolh(1,1:npolh)/mpolh(1:npolh)
815 pu(2,1:npolh)=qpolh(2,1:npolh)/mpolh(1:npolh)
816 pu(3,1:npolh)=qpolh(3,1:npolh)/mpolh(1:npolh)
820 DO j=ifvpadr(i),ifvpadr(i+1)-1
822 DO k=ifvtadr(jj),ifvtadr(jj+1)-1
824 iel=abs(ifvtri(4,kk))
850 l12=x12**2+y12**2+z12**2
851 l23=x23**2+y23**2+z23**2
852 l31=x31**2+y31**2+z31**2
853 h1=four*
area**2/
max(l12,l23,l31)
864 DO j=ifvpadr(i),ifvpadr(i+1)-1
866 DO k=ifvtadr(jj),ifvtadr(jj+1)-1
868 iel =abs(ifvtri(4,kk))
871 IF (
area == zero) cycle
874 IF(itagel(iel) > 0)booltagel = .true.
877 IF (jel > 0.OR.(jel < 0.AND.booltagel))
THEN
884 IF (ifvtri(5,kk) == i)
THEN
889 ELSEIF(ifvtri(6,kk) == i)
THEN
897 fac=nx*nrx+ny*nry+nz*nrz
904 IF (itagel(iel) > 0)
THEN
907 dmi=datainj(2,iinj)*
area/datainj(1,iinj)
908 IF (nv == i .AND. jel < 0) dmi=dmi*half
909 dqi(1)=-dmi*datainj(3,iinj)*nrx
910 dqi(2)=-dmi*datainj(3,iinj)*nry
911 dqi(3)=-dmi*datainj(3,iinj)*nrz
913 dei=dmi*datainj(4,iinj)
916 dq(1,ii)=dq(1,ii)+dqi(1)
917 dq(2,ii)=dq(2,ii)+dqi(2)
918 dq(3,ii)=dq(3,ii)+dqi(3)
921 dmcpa(ii)=dmcpa(ii)+dmi*rbagjet(2,iinj)
922 dmcpb(ii)=dmcpb(ii)+dmi*rbagjet(3,iinj)
923 dmcpc(ii)=dmcpc(ii)+dmi*rbagjet(4,iinj)
924 dmrmw(ii)=dmrmw(ii)+dmi*rbagjet(1,iinj)
926 dmcpd(ii)=dmcpd(ii)+dmi*rbagjet(16,iinj)
927 dmcpe(ii)=dmcpe(ii)+dmi*rbagjet(17,iinj)
928 dmcpf(ii)=dmcpf(ii)+dmi*rbagjet(18,iinj)
931 elfmass(iel)=elfmass(iel)+dmi*dt1
932 elfehpy(iel)=elfehpy(iel)+dei*dt1
933 elfvel(iel) =-datainj(3,iinj)
934 ELSEIF (itagel(iel) < 0)
THEN
937 idef =ibaghol(1,ivent)
938 itvent =ibaghol(10,ivent)
943 aout=elsout(iel)*
area/elarea(iel)
946 re1=epolh(i)/pvolu(i)
953 IF (itvent == 1)
THEN
954 uu=nx*ux1+ny*uy1+nz*uz1
956 IF(p1 < pext) uu=zero
958 ELSEIF ((itvent==2.AND.p1>zero).OR.(itvent==4.AND.p1>=pext))
THEN
959 vv=nx*ux1+ny*uy1+nz*uz1
961 eta=(gama1-one)/gama1
963 pstag=p1*(one+half*eta*rho1*vv*vv/p1)**ksi
964 pcrit=pstag*(two/(gama1+one))**ksi
966 rho2 =rho1*(p2/p1)**(one/gama1)
967 uu=two*p1*(one-(p2/p1)**eta)/(rho1*eta)
970 vmax=half*((p1-pext)*pvolu(i)/(gama1-one))
971 . /
max(em20,rho2*aout*dt1*gama1*re1/rho1)
975 ELSEIF (itvent == 3)
THEN
977 ivdp=ibaghol(9,ivent)
978 fvdp=rbaghol(13,ivent)
979 uu=fvdp*get_u_func(ivdp,p2*scalp,deri)
986 ELSEIF (itvent==4.AND.p1<pext)
THEN
989 eta=(gamai-one)/gamai
990 pcrit=pext*(two/(gamai+one))**(one/eta)
992 rho2 =rhoi*(p2/pext)**(one/gamai)
993 uu=two*pext*(one-(p2/pext)**eta)/(rhoi*eta)
996 vmax=half*((pext-p1)*pvolu(i)/(gama1-one))
997 . /
max(em20,rho2*aout*dt1*rvolu(63))
1002 ELSEIF (itvent==5)
THEN
1011 IF (uu > zero.AND.idef == 1)
THEN
1014 dq(1,i)=dq(1,i)-dmout*ux1
1015 dq(2,i)=dq(2,i)-dmout*uy1
1016 dq(3,i)=dq(3,i)-dmout*uz1
1017 dhout=dmout*gama1*re1/rho1
1024 dmcpa(i)=dmcpa(i)-dmout*cpai
1025 dmcpb(i)=dmcpb(i)-dmout*cpbi
1026 dmcpc(i)=dmcpc(i)-dmout*cpci
1027 dmrmw(i)=dmrmw(i)-dmout*rmwi
1032 dmcpd(i)=dmcpd(i)-dmout*cpdi
1033 dmcpe(i)=dmcpe(i)-dmout*cpei
1034 dmcpf(i)=dmcpf(i)-dmout*cpfi
1036 elfmass(iel)=elfmass(iel)-dmout*dt1
1037 elfehpy(iel)=elfehpy(iel)-dhout*dt1
1038 elfvel(iel)=elfvel(iel)+uu*
area/elarea(iel)
1043 IF (uu < zero.AND.idef == 1)
THEN
1046 dq(1,i)=dq(1,i)+dmi*ux1
1047 dq(2,i)=dq(2,i)+dmi*uy1
1048 dq(3,i)=dq(3,i)+dmi*uz1
1053 dmcpa(i)=dmcpa(i)+dmi*cpai
1054 dmcpb(i)=dmcpb(i)+dmi*cpbi
1056 dmrmw(i)=dmrmw(i)+dmi*rmwi
1061 dmcpd(i)=dmcpd(i)+dmi*cpdi
1062 dmcpe(i)=dmcpe(i)+dmi*cpei
1063 dmcpf(i)=dmcpf(i)+dmi*cpfi
1065 de(i)=de(i)+dmi*rvolu(63)
1066 elfmass(iel)=elfmass(iel)+dmi*dt1
1067 elfehpy(iel)=elfehpy(iel)+dmi*dt1*rvolu(63)
1068 elfvel(iel) =elfvel(iel) +uu*
area/elarea(iel)
1070 eldehpy(iel)=dmi*rvolu(63)
1078 IF (ifvtri(5,kk) == i)
THEN
1083 ELSEIF (ifvtri(6,kk) == i)
THEN
1090 IF (nv <= i)
GOTO 100
1092 re1=epolh(i)/pvolu(i)
1098 re2=epolh(nv)/pvolu(nv)
1110 h1 = one-rvolu(51)/hm1
1120 IF(porosity(iel-nel) == zero)
GOTO 50
1124 ss=nx*(vfx-vgrid(1,kk))+ny*(vfy-vgrid(2,kk))
1125 . +nz*(vfz-vgrid(3,kk))
1127 IF (ss <= zero)
THEN
1139 massflow = rhom*ss*
area
1140 dm(i)=dm(i)-massflow
1141 dq(1,i)=dq(1,i)-ruxm*ss*
area
1142 dq(2,i)=dq(2,i)-ruym*ss*
area
1143 dq(3,i)=dq(3,i)-ruzm*ss*
area
1144 de(i)=de(i)-rem*ss*
area
1145 dm(nv)=dm(nv)+massflow
1146 dq(1,nv)=dq(1,nv)+ruxm*ss*
area
1147 dq(2,nv)=dq(2,nv)+ruym*ss*
area
1148 dq(3,nv)=dq(3,nv)+ruzm*ss*
area
1149 de(nv)=de(nv)+rem*ss*
area
1150 cpam =
alpha * cpapolh(i) + (one -
alpha) * cpapolh(nv)
1151 cpbm =
alpha * cpbpolh(i) + (one -
alpha) * cpbpolh(nv)
1152 cpcm =
alpha * cpcpolh(i) + (one -
alpha) * cpcpolh(nv)
1153 rmwm =
alpha * rmwpolh(i) + (one -
alpha) * rmwpolh(nv)
1154 dmcpa(i) = dmcpa(i) - massflow * cpam
1155 dmcpa(nv) = dmcpa(nv) + massflow * cpam
1156 dmcpb(i) = dmcpb(i) - massflow * cpbm
1157 dmcpb(nv) = dmcpb(nv) + massflow * cpbm
1158 dmcpc(i) = dmcpc(i) - massflow * cpcm
1159 dmcpc(nv) = dmcpc(nv) + massflow * cpcm
1160 dmrmw(i) = dmrmw(i) - massflow * rmwm
1161 dmrmw(nv) = dmrmw(nv) + massflow * rmwm
1163 cpdm =
alpha * cpdpolh(i) + (one -
alpha) * cpdpolh(nv)
1164 cpem =
alpha * cpepolh(i) + (one -
alpha) * cpepolh(nv)
1165 cpfm =
alpha * cpfpolh(i) + (one -
alpha) * cpfpolh(nv)
1166 dmcpd(i) = dmcpd(i) - massflow * cpdm
1167 dmcpd(nv) = dmcpd(nv) + massflow * cpdm
1168 dmcpe(i) = dmcpe(i) - massflow * cpem
1169 dmcpe(nv) = dmcpe(nv) + massflow * cpem
1170 dmcpf(i) = dmcpf(i) - massflow * cpfm
1171 dmcpf(nv) = dmcpf(nv) + massflow * cpfm
1175 elfmass(iel)=elfmass(iel)+massflow*dt1
1176 elfvel(iel) =elfvel(iel) +ss*
area/elarea(iel)
1212!$omp+ private(temp,cp,cv,rmw,denom,denom_max,vmat,kk,
area,iel1,iel2)
1214!$omp+ private(itypl, temp2)
1221 mpolh(i)=mpolh(i)+dm(i)*dt1
1222 qpolh(1,i)=qpolh(1,i)+dq(1,i)*dt1
1223 qpolh(2,i)=qpolh(2,i)+dq(2,i)*dt1
1224 qpolh(3,i)=qpolh(3,i)+dq(3,i)*dt1
1225 epolh(i)=epolh(i)+de(i)*dt1
1230 IF(mpolh(i) <= zero.OR.epolh(i) <= zero)
THEN
1234 msini=msini+dmini(i)*dt1
1235 cpa=(msini*cpapolh(i)+dmcpa(i)*dt1)/mpolh(i)
1236 cpb=(msini*cpbpolh(i)+dmcpb(i)*dt1)/mpolh(i)
1237 cpc=(msini*cpcpolh(i)+dmcpc(i)*dt1)/mpolh(i
1238 rmw=(msini*rmwpolh(i)+dmrmw(i)*dt1)/mpolh(i)
1239 efac=epolh(i)/mpolh(i)
1241 cpd=(msini*cpdpolh(i)+dmcpd(i)*dt1)/mpolh(i)
1242 cpe=(msini*cpepolh(i)+dmcpe(i)*dt1)/mpolh(i)
1243 cpf=(msini*cpfpolh(i)+dmcpf(i)*dt1)/mpolh(i)
1250 CALL fvtemp(itypl , efac , cpa , cpb , cpc ,
1251 . cpd , cpe , cpf , rmw , temp0,
1253 cp=cpa+cpb*temp+cpc*temp*temp
1261 cp=cp+cpd*temp**3+cpf*temp**4
1263 IF(cpe /= zero .AND. temp2 > zero)
THEN
1267 cv=double_to_my_real(cp)-rmw
1269 IF(cp > huge(cv) .OR. cp < -huge(cv) .OR. cv == zero)
THEN
1273 gpolh(i)=double_to_my_real(cp)/cv
1279 rpolh(i)=mpolh(i)/pvolu(i)
1280 ppolh(i)=rpolh(i)*rmw*temp
1310 idt_fvmbag =
fvdata(ifv)%ID_DT_OPTION
1312 SELECT CASE(idt_fvmbag)
1321 IF (ibpolh(i) == 0 .AND.idtmin(52) < 2)
THEN
1324 dls(i)=pvolu(i)**third
1332 param_l_type =
fvdata(ifv)%L_TYPE
1334 SELECT CASE(param_l_type)
1348 dls(i)=pvolu(i)**third
1368 SELECT CASE (idt_fvmbag)
1373 IF(mpolh(i)<=zero.OR.epolh(i)<=zero.OR.gpolh(i)<=one)
THEN
1381 ssp=sqrt((gama-one)*gama*epolh(i)/mpolh(i))
1382 qvisc(i)=rpolh(i)*ad*al*(qa*qa*al*ad+qb*ssp)
1383 qx=qb*ssp+al*qa*qa*ad
1384 ssp=qx+sqrt(qx*qx+ssp*ssp)
1385 vv=sqrt(pu(1,i)**2+pu(2,i)**2+pu(3,i)**2)
1386 dtpolh(i)=cfl_coef*dls(i)/(ssp+vv)
1393 param_l_type = fvdata(ifv)%L_TYPE
1395 IF(param_l_type /= 3)
THEN
1398 IF(mpolh(i) <= zero.OR.epolh(i) <= zero.OR.gpolh(i) <= one)
THEN
1404 npolyg = ifvpadr(i+1) - ifvpadr(i)
1407 DO j=ifvpadr(i),ifvpadr(i+1)-1
1409 ntria = ifvtadr(jj+1) - ifvtadr(jj)
1411 ntria_tot = ntria_tot + ntria
1413 DO k=ifvtadr(jj),ifvtadr(jj+1)-1
1416 wsurf(1)=wsurf(1)+vgrid(1,kk)
1417 wsurf(2)=wsurf(2)+vgrid(2,kk)
1418 wsurf(3)=wsurf(3)+vgrid(3,kk)
1421 pw(1,i)=pw(1,i)+wsurf(1)
1422 pw(2,i)=pw(2,i)+wsurf(2)
1423 pw(3,i)=pw(3,i)+wsurf(3)
1426 pw(1,i)=pw(1,i)/ntria_tot
1427 pw(2,i)=pw(2,i)/ntria_tot
1428 pw(3,i)=pw(3,i)/ntria_tot
1434 ssp=sqrt((gama-one)*gama*epolh(i)/mpolh(i))
1435 qvisc(i)=rpolh(i)*ad*al*(qa*qa*al*ad+qb*ssp)
1436 qx=qb*ssp+al*qa*qa*ad
1437 ssp=qx+sqrt(qx*qx+ssp*ssp)
1439 tmp_vec(1)=pu(1,i)-pw(1,i)
1440 tmp_vec(2)=pu(2,i)-pw(2,i)
1441 tmp_vec(3)=pu(3,i)-pw(3,i)
1442 vv=sqrt(tmp_vec(1)*tmp_vec(1)+tmp_vec(2)*tmp_vec(2)+tmp_vec(3)*tmp_vec(3))
1444 dtpolh(i)=cfl_coef*dls(i)/(ssp+vv)
1454 IF(mpolh(i) <= zero.OR.epolh(i) <= zero.OR.gpolh(i) <= one)
THEN
1461 DO j=ifvpadr(i),ifvpadr(i+1)-1
1463 ntria = ifvtadr(jj+1) - ifvtadr(jj)
1465 DO k=ifvtadr(jj),ifvtadr(jj+1)-1
1472 vmat(1) = half*(pu(1,iel1)+pu(1,iel2))
1473 vmat(2) = half*(pu(2,iel1)+pu(2,iel2))
1474 vmat(3) = half*(pu(3,iel1)+pu(3,iel2))
1476 ssp1= sqrt((gama-one)*gama*epolh(iel1)/mpolh(iel1))
1477 ssp2= sqrt((gama-one)*gama*epolh(iel2)/mpolh(iel2))
1478 sspt = half*(ssp1+ssp2)
1479 tmp_vec(1) = (vmat(1)-vgrid(1,kk))*pnorm(1,kk)
1480 tmp_vec(2) = (vmat(2)-vgrid(2,kk))*pnorm(2,kk)
1481 tmp_vec(3) = (vmat(3)-vgrid(3,kk))*pnorm(3,kk)
1482 denom =
area*(sqrt(tmp_vec(1)*tmp_vec(1)+tmp_vec(2)*tmp_vec(2)+tmp_vec(3)*tmp_vec(3)) + sspt)
1483 denom_max =
max(denom, denom_max)
1491 ssp=sqrt((gama-one)*gama*epolh(i)/mpolh(i))
1492 qvisc(i)=rpolh(i)*ad*al*(qa*qa*al*ad+qb*ssp)
1493 qx=qb*ssp+al*qa*qa*ad
1494 ssp=qx+sqrt(qx*qx+ssp*ssp)
1496 dtpolh(i)=cfl_coef*dls(i)/(denom_max)
1512 IF (dtpolh(i) < dtx)
THEN
1519 IF(ncycle > 0 .AND. idt_fvmbag == 2)
THEN
1520 param_lambda = fvdata(ifv)%LAMBDA
1521 IF(param_lambda > zero)
THEN
1522 dtold = fvdata(ifv)%DTOLD
1523 IF(dtold > zero)
THEN
1524 dtx =
min( dtx, dtold*(one+param_lambda))
1528 fvdata(ifv)%DTOLD = dtx
1530 IF (ilvout >= 1.AND.ipri == 0)
THEN
1531 WRITE(iout,
'(A,I10,A,E12.4,A,I10)')
' ** MONITORED VOLUME ID: ',ivolu(1),
' TIME STEP:',dtx,
' FINITE VOLUME:',idpolh(phdt)
1559 vvx=third*(vx1+vx2+vx3)
1560 vvy=third*(vy1+vy2+vy3)
1561 vvz=third*(vz1+vz2+vz3)
1565 vel(iel)=nx*vvx+ny*vvy+nz*vvz
1570 IF (mpolh(i) <= zero.OR.epolh(i) <= zero) cycle
1571 DO j=ifvpadr(i),ifvpadr(i+1)-1
1573 DO k=ifvtadr(jj),ifvtadr(jj+1)-1
1577 IF (
area == zero) cycle
1582 IF (itagel(iel) < 0)
THEN
1585 idef =ibaghol(1,ivent)
1586 iventyp=ibaghol(13,ivent)
1588 IF(idef==1.AND.iventyp==0)
THEN
1589 aout=elsout(iel)*
area/elarea(iel)
1592 fel(iel)=fel(iel)+pp*aout
1593 dq(1,i)=dq(1,i)-pp*aout*nx
1594 dq(2,i)=dq(2,i)-pp*aout*ny
1595 dq(3,i)=dq(3,i)-pp*aout*nz
1596 de(i)=de(i)-pp*vel(iel)*aout
1600 pp=ppolh(i)+qvisc(i)
1601 fel(iel)=fel(iel)+pp*
area
1602 dq(1,i)=dq(1,i)-pp*
area*nx
1603 dq(2,i)=dq(2,i)-pp*
area*ny
1604 dq(3,i)=dq(3,i)-pp*
area*nz
1606 de(i)=de(i)-pp*vel(iel)*
area
1608 de(i)=de(i)-rvolu(19)*
area*(tpolh(i)-rvolu(25))
1609 ELSEIF(iel == 0)
THEN
1616 IF (ifvtri(5,kk) == i)
THEN
1621 ELSEIF (ifvtri(6,kk) == i)
THEN
1627 IF (nv < i .OR.mpolh(nv) <= zero.OR.
1628 . epolh(nv) <= zero)
GOTO 200
1629 p1=ppolh(i)+qvisc(i)
1630 p2=ppolh(nv)+qvisc(nv)
1633 dq(1,i)=dq(1,i)-pmean*nx*
area-p1*nx*area1
1634 dq(2,i)=dq(2,i)-pmean*ny*
area-p1*ny*area1
1635 dq(3,i)=dq(3,i)-pmean*nz*
area-p1*nz*area1
1636 dq(1,nv)=dq(1,nv)+pmean*nx*
area+p2*nx*area1
1637 dq(2,nv)=dq(2,nv)+pmean*ny*
area+p2*ny*area1
1638 dq(3,nv)=dq(3,nv)+pmean*nz*
area+p2*nz*area1
1640 ss=nx*vgrid(1,kk)+ny*vgrid(2,kk)+nz*vgrid(3,kk)
1641 de(i) =de(i) -pmean*ss*
area-p1*ss*area1
1642 de(nv)=de(nv)+pmean*ss*
area+p2*ss*area1
1643 ELSEIF(iel < 0)
THEN
1646 IF (ifvtri(5,kk) == i)
THEN
1651 ELSEIF (ifvtri(6,kk) == i)
THEN
1657 IF (nv <= i .OR.mpolh(nv) <= zero.OR.
1658 . epolh(nv) <= zero)
GOTO 200
1659 p1=ppolh(i)+qvisc(i)
1660 p2=ppolh(nv)+qvisc(nv)
1666 ss=nx*vgrid(1,kk)+ny*vgrid(2,kk)+nz*vgrid(3,kk)
1671 fac=nx*nrx+ny*nry+nz*nrz
1673 IF(itagel(jel) > 0)
THEN
1675 fel(jel)=fel(jel)+(p2-p1)*area1
1676 dq(1,i)=dq(1,i)-pmean*nx*
area+p1*nrx*area1
1677 dq(2,i)=dq(2,i)-pmean*ny*
area+p1*nry*area1
1678 dq(3,i)=dq(3,i)-pmean*nz*
area+p1*nrz*area1
1679 de(i)=de(i)-pmean*ss*
area+p1*vel(jel)*area1
1680 dq(1,nv)=dq(1,nv)+pmean*nx*
area-p2*nrx*area1
1681 dq(2,nv)=dq(2,nv)+pmean*ny*
area-p2*nry*area1
1682 dq(3,nv)=dq(3,nv)+pmean*nz*
area-p2*nrz*area1
1683 de(nv)=de(nv)+pmean*ss*
area-p2*vel(jel)*area1
1685 fel(jel)=fel(jel)+(p1-p2)*area1
1686 dq(1,i)=dq(1,i)-pmean*nx*
area-p1*nrx*area1
1687 dq(2,i)=dq(2,i)-pmean*ny*
area-p1*nry*area1
1688 dq(3,i)=dq(3,i)-pmean*nz*
area-p1*nrz*area1
1689 de(i)=de(i)-pmean*ss*
area-p1*vel(jel)*area1
1690 dq(1,nv)=dq(1,nv)+pmean*nx*
area+p2*nrx*area1
1691 dq(2,nv)=dq(2,nv)+pmean*ny*
area+p2*nry*area1
1692 dq(3,nv)=dq(3,nv)+pmean*nz*
area+p2*nrz*area1
1693 de(nv)=de(nv)+pmean*ss*
area+p2*vel(jel)*area1
1697 fel(jel)=fel(jel)+(p2-p1)*area1
1699 fel(jel)=fel(jel)+(p1-p2)*area1
1701 dq(1,i)=dq(1,i)-pmean*nx*
area-p1*nx*area1
1702 dq(2,i)=dq(2,i)-pmean*ny*
area-p1*ny*area1
1703 dq(3,i)=dq(3,i)-pmean*nz*
area-p1*nz*area1
1704 de(i)=de(i)-pmean*ss*
area-p1*ss*area1
1705 dq(1,nv)=dq(1,nv)+pmean*nx*
area+p2*nx*area1
1706 dq(2,nv)=dq(2,nv)+pmean*ny*
area+p2*ny*area1
1707 dq(3,nv)=dq(3,nv)+pmean*nz*
area+p2*nz*area1
1708 de(nv)=de(nv)+pmean*ss*
area+p2*ss*area1
1721 qpolh(1,i)=qpolh(1,i)+dq(1,i)*dt1
1722 qpolh(2,i)=qpolh(2,i)+dq(2,i)*dt1
1723 qpolh(3,i)=qpolh(3,i)+dq(3,i)*dt1
1724 epolh(i)=epolh(i)+de(i)*dt1
1732 250
IF (ilvout >= 1 .AND. ipri == 0)
THEN
1734 WRITE(iout,
'(A25,I10,A31)')
' ** MONITORED VOLUME ID: ',ivolu(1),
' - FINITE VOLUME MESH UPDATE **'
1735 WRITE(iout,
'(A,I8)')
' NUMBER OF FINITE VOLUMES : ',npolh
1736 WRITE(iout,
'(A,G16.9,A17,G16.9,A1)')
' SUM VOLUME FINITE VOLUMES : ',volph,
' (VOLUME AIRBAG: ',volg,
')'
1737 WRITE(iout,
'(A,G16.9,A17,G16.9,A1)')
' SUM AREA SURFACE POLYGONS : ',areap,
' (AREA AIRBAG : ',areael,
')'
1748 amtot=amtot+mpolh(i)
1749 enint=enint+epolh(i)
1750 pmean=pmean+ppolh(i)*pvolu(i)
1757 cp=cpa+cpb*temp+cpc*temp*temp
1762 cp=cp+cpd*temp**3+cpf*temp**4
1764 IF(temp2 > zero) cp=cp+cpe/(temp*temp)
1766 cv=double_to_my_real(cp)-rmw
1767 fsav(5) =fsav(5) +mpolh(i)*temp
1768 fsav(10)=fsav(10)+mpolh(i)*double_to_my_real(cp)
1769 fsav(11)=fsav(11)+mpolh(i)*cv
1770 fsav(12)=fsav(12)+mpolh(i)*gama
1774 pmean2 = pmean / volph
1776 pdisp = pdisp + pvolu(i) * (ppolh(i) - pmean2)**2
1778 pdisp = sqrt(pdisp / volph) / pmean2
1780 injection_started = .false.
1782 injection_started = injection_started .OR. (datainj(2, iinj) > zero)
1784 IF (.NOT. injection_started)
THEN
1791 pres_av = pmean / volph
1797 cp_av = fsav(10) / amtot
1799 cv_av = fsav(11) / amtot
1801 fsav(12) = cp_av / cv_av
1803 rgas_av = cp_av - cv_av
1804 rho_av = amtot / volph
1805 fsav(5) = fsav(5) / amtot
1807 IF(ivolu(39) == 0)
THEN
1813 IF (itagel(iel) < 0)
THEN
1815 rbaghol(18,ivent)=rbaghol(18,ivent)+elfvel(iel)*elsout(iel)
1816 rbaghol(19,ivent)=rbaghol(19,ivent)-elfmass(iel)
1817 rbaghol(20,ivent)=rbaghol(20,ivent)-elfehpy(iel)
1818 rbaghol(21,ivent)=rbaghol(21,ivent)+eldmass(iel)
1819 rbaghol(22,ivent)=rbaghol(22,ivent)+eldehpy(iel)
1823 sventot=rbaghol(16,ivent)+rbaghol(17,ivent)
1824 IF(sventot <= zero) cycle
1825 rbaghol(18,ivent)=rbaghol(18,ivent)/sventot
1828 fsav(7)=fsav(7)+(rbaghol(16,ivent)+rbaghol(17,ivent))*rbaghol(18,ivent)
1829 dmout =dmout+rbaghol(21,ivent)
1830 dhout =dhout+rbaghol(22,ivent)
1832 fsav(7) =fsav(7) /
max(aoutot,em20)
1836 CALL fvinjt8_1(njet, ibagjet , rbagjet , igeo, geo, pm,
1837 . ivolu, rvolu, dmout, dhout)
1839 IF (ivolu(74) == 0)
THEN
1840 up_switch = tt-ttf >= rvolu(70) .OR. npolh <= ivolu(37)
1842 IF (ivolu(74) == 1)
THEN
1844 up_switch = ((pdisp < pdisp_old) .AND. (pdisp < rvolu(73)))
1845 up_switch = up_switch .OR. tt-ttf >= rvolu(70)
1847 IF (ivolu(74) == 2)
THEN
1849 up_switch = ((pdisp < pdisp_old) .AND. (pdisp < rvolu(73)))
1850 up_switch = up_switch .AND. tt-ttf >= rvolu(70)
1866 IF (itagel(iel) > 0)
THEN
1867 fsav(15)=fsav(15)+elfmass(iel)
1868 fsav(16)=fsav(16)+elfehpy(iel)
1877 IF( (tt>=output%TANIM .AND. tt<=output%TANIM_STOP) .OR.tt >= toutp.OR. nbgauge > 0 .OR.
1878 . (manim >= 4.AND.manim <= 15))
THEN
1881 uel(1:3,1:nelt)=zero
1894 DO j=ifvpadr(i),ifvpadr(i+1)-1
1896 DO k=ifvtadr(jj),ifvtadr(jj+1)-1
1898 iel=abs(ifvtri(4,kk))
1902 pel(iel) =pel(iel) +ppolh(i)*
area/elarea(iel)
1903 ELSEIF (jel < 0)
THEN
1907 IF (ifvtri(5,kk) == i)
THEN
1912 ELSEIF(ifvtri(6,kk) == i)
THEN
1921 fac=nx*nrx+ny*nry+nz*nrz
1923 pel(iel) =pel(iel) +ppolh(ii)*
area/elarea(iel)
1931 IF(prepare_anim == 1)
THEN
1934 DO j=ifvpadr(i),ifvpadr(i+1)-1
1936 DO k=ifvtadr(jj),ifvtadr(jj+1)-1
1938 iel=abs(ifvtri(4,kk))
1942 uel(1,iel)=uel(1,iel)+pu(1,i)*
area/elarea(iel)
1943 uel(2,iel)=uel(2,iel)+pu(2,i)*
area/elarea(iel)
1944 uel(3,iel)=uel(3,iel)+pu(3,i)*
area/elarea(iel)
1945 rhoel(iel)=rhoel(iel)+rpolh(i)*
area/elarea(iel)
1946 tkel(iel) =tkel(iel) +tpolh(i)*
area/elarea(iel)
1947 sspel(iel)=sspel(iel)+sqrt(gpolh(i)*ppolh(i)/rpolh(i))*
area/elarea(iel)
1948 ELSEIF (jel < 0)
THEN
1952 IF (ifvtri(5,kk) == i)
THEN
1957 ELSEIF(ifvtri(6,kk) == i)
THEN
1963 IF (nv < i)
GOTO 310
1966 fac=nx*nrx+ny*nry+nz*nrz
1968 uel(1,iel)=uel(1,iel)+pu(1,ii)*
area/elarea(iel)
1969 uel(2,iel)=uel(2,iel)+pu(2,ii)*
area/elarea(iel)
1970 uel(3,iel)=uel(3,iel)+pu(3,ii)*
area/elarea(iel)
1971 rhoel(iel)=rhoel(iel)+rpolh(ii)*
area/elarea(iel)
1972 tkel(iel) =tkel(iel) +tpolh(ii)*
area/elarea(iel)
1973 sspel(iel)=sspel(iel)+sqrt(gpolh(ii)*ppolh(ii)/rpolh(ii))*
area/elarea(iel)
1986 IF(prepare_anim == 1)
THEN
1989 IF(itagel(iel)<0)
THEN
1990 uel(1,iel)=elfvel(iel)*
norm(1,iel)
1991 uel(2,iel)=elfvel(iel)*
norm(2,iel)
1992 uel(3,iel)=elfvel(iel)*
norm(3,iel)
2037 fac1=third*elarea(iel)/area1
2038 fac2=third*elarea(iel)/area2
2039 fac3=third*elarea(iel)/area3
2040 p(n1) =p(n1) +fac1*pel(iel)
2041 p(n2) =p(n2) +fac2*pel(iel)
2042 p(n3) =p(n3) +fac3*pel(iel)
2045 IF(prepare_anim == 1)
THEN
2053 fac1=third*elarea(iel)/area1
2054 fac2=third*elarea(iel)/area2
2055 fac3=third*elarea(iel)/area3
2056 u(1,n1)=u(1,n1)+fac1*uel(1,iel)
2057 u(2,n1)=u(2,n1)+fac1*uel(2,iel)
2058 u(3,n1)=u(3,n1)+fac1*uel(3,iel)
2059 u(1,n2)=u(1,n2)+fac2*uel(1,iel)
2060 u(2,n2)=u(2,n2)+fac2*uel(2,iel)
2061 u(3,n2)=u(3,n2)+fac2*uel(3,iel)
2062 u(1,n3)=u(1,n3)+fac3*uel(1,iel)
2063 u(2,n3)=u(2,n3)+fac3*uel(2,iel)
2064 u(3,n3)=u(3,n3)+fac3*uel(3,iel)
2065 rho(n1)=rho(n1)+fac1*rhoel(iel)
2066 rho(n2)=rho(n2)+fac2*rhoel(iel)
2067 rho(n3)=rho(n3)+fac3*rhoel(iel)
2068 tk(n1)=tk(n1)+fac1*tkel(iel)
2069 tk(n2)=tk(n2)+fac2*tkel(iel)
2070 tk(n3)=tk(n3)+fac3*tkel(iel)
2071 sspk(n1)=sspk(n1)+fac1*sspel(iel)
2072 sspk(n2)=sspk(n2)+fac2*sspel(iel)
2073 sspk(n3)=sspk(n3)+fac3*sspel(iel)
2077 IF (ibpolh(i) /= 0)
THEN
2080 IF(brna(1,ii) == brna(4,ii).AND.brna(5,ii) == brna(8,ii))
THEN
2086 vola(jj)=vola(jj)+one_over_6*pvolu(i)
2087 pa(jj)=pa(jj)+one_over_6*ppolh(i)*pvolu(i)
2088 rhoa(jj)=rhoa(jj)+one_over_6*rpolh(i)*pvolu(i)
2089 tka(jj)=tka(jj)+one_over_6*temp*pvolu(i)
2090 sspka(jj)=sspka(jj)+one_over_6*sqrt(gpolh(i)*ppolh(i)/rpolh(i))*pvolu(i)
2091 ua(1,jj)=ua(1,jj)+one_over_6*pu(1,i)*pvolu(i)
2092 ua(2,jj)=ua(2,jj)+one_over_6*pu(2,i)*pvolu(i)
2093 ua(3,jj)=ua(3,jj)+one_over_6*pu(3,i)*pvolu(i)
2095 ELSEIF(brna(5,ii)==brna(8,ii).AND.
2096 . brna(6,ii)==brna(8,ii).AND.
2097 . brna(7,ii)==brna(8,ii))
THEN
2101 vola(jj)=vola(jj)+one_fifth*pvolu(i)
2102 pa(jj)=pa(jj)+one_fifth*ppolh(i)*pvolu(i)
2103 rhoa(jj)=rhoa(jj)+one_fifth*rpolh(i)*pvolu(i)
2104 tka(jj)=tka(jj)+one_fifth*temp*pvolu(i)
2105 sspka(jj)=sspka(jj)+one_fifth*sqrt(gpolh(i)*ppolh(i)/rpolh(i))*pvolu(i)
2106 ua(1,jj)=ua(1,jj)+one_fifth*pu(1,i)*pvolu(i)
2107 ua(2,jj)=ua(2,jj)+one_fifth*pu(2,i)*pvolu(i)
2108 ua(3,jj)=ua(3,jj)+one_fifth*pu(3,i)*pvolu(i)
2114 vola(jj)=vola(jj)+one_over_8*pvolu(i)
2115 pa(jj)=pa(jj)+one_over_8*ppolh(i)*pvolu(i)
2116 rhoa(jj)=rhoa(jj)+one_over_8*rpolh(i)*pvolu(i)
2117 tka(jj)=tka(jj)+one_over_8*temp*pvolu(i)
2118 sspka(jj)=sspka(jj)+one_over_8*sqrt(gpolh(i)*ppolh(i)/rpolh(i))*pvolu(i)
2119 ua(1,jj)=ua(1,jj)+one_over_8*pu(1,i)*pvolu(i)
2120 ua(2,jj)=ua(2,jj)+one_over_8*pu(2,i)*pvolu(i)
2121 ua(3,jj)=ua(3,jj)+one_over_8*pu(3,i)*pvolu(i)
2129 IF(volno > zero)
THEN
2131 rhoa(i)=rhoa(i)/volno
2132 tka(i) =tka(i)/volno
2133 sspka(i) =sspka(i)/volno
2134 ua(1,i)=ua(1,i)/volno
2135 ua(2,i)=ua(2,i)/volno
2136 ua(3,i)=ua(3,i)/volno
2146 area_vent(ivent)=zero
2152 IF (itagel(iel) < 0)
THEN
2154 area_vent(ivent)=area_vent(ivent)+elarea(iel)
2155 pm_vent(ivent)=pm_vent(ivent)+fel(iel)
2162 IF (area_vent(ivent) > zero)
THEN
2163 pm_vent(ivent)=pm_vent(ivent)/area_vent(ivent)
2168 idef =ibaghol(1,ivent)
2169 idtpdef= ibaghol(11,ivent)
2170 idpdef = ibaghol(12,ivent)
2174 pdef =rbaghol(1,ivent)
2175 dtpdefi=rbaghol(4,ivent)
2176 dtpdefc=rbaghol(5,ivent)
2177 tvent =rbaghol(3,ivent)
2178 tstope =rbaghol(14,ivent)
2179 IF (idtpdef == 0)
THEN
2180 IF(pm_vent(ivent) > pdef+pext)
THEN
2181 dtpdefc = dtpdefc+dt1
2183 ELSE IF (idtpdef == 1)
THEN
2184 IF (pm_vent(ivent) > pdef+pext)
THEN
2187 IF (idpdef == 1)
THEN
2188 dtpdefc = dtpdefc+dt1
2191 ibaghol(12,ivent) = idpdef
2192 rbaghol(5,ivent) = dtpdefc
2197 titrevent(k)=ibaghol(14+k,ivent)
2198 venttitle(k:k) = achar(titrevent(k))
2200 IF(ittf==11.OR.ittf==12.OR.ittf==13)
THEN
2201 IF (idef==0.AND.pm_vent(ivent) > pdef+pext
2202 . .AND.dtpdefc > dtpdefi
2203 . .AND.volph > em3*areap**three_half
2204 . .AND.tt < tstope+ttf)
THEN
2206 WRITE(iout,
'(A)')
' ** AIRBAG VENT HOLE MEMBRANE IS DEFLATED **'
2207 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
' VENT HOLE NUMBER',ivent,
' ',venttitle
2208 WRITE(istdo,
'(2A)')
' ** VENT HOLE MEMBRANE IS DEFLATED ',venttitle
2210 IF(idef == 0 .AND. tt > tvent+ttf.AND. tt < tstope+ttf)
THEN
2212 WRITE(iout,
'(A)')
' ** AIRBAG VENTING STARTS **'
2213 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
' VENT HOLE NUMBER',ivent,
' ',venttitle
2214 WRITE(istdo,
'(2A)')
' ** VENTING STARTS ',venttitle
2216 IF(idef == 1 .AND. tt >= tstope+ttf)
THEN
2218 WRITE(iout,
'(A)')
' ** AIRBAG VENTING STOPS **'
2219 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
' VENT HOLE NUMBER',ivent,
' ',venttitle
2220 WRITE(istdo,
'(2A)')
' ** VENTING STOPS ',venttitle
2223 ELSE IF(ittf==0)
THEN
2224 IF (idef==0.AND.pm_vent(ivent)>pdef+pext
2225 . .AND.dtpdefc>dtpdefi
2226 . .AND.volph>em3*areap**three_half
2227 . .AND.tt<tstope)
THEN
2229 WRITE(iout,
'(A)')
' ** AIRBAG VENT HOLE MEMBRANE IS DEFLATED **'
2230 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
' VENT HOLE NUMBER',ivent,
' ',venttitle
2231 WRITE(istdo,
'(2A)')
' ** VENT HOLE MEMBRANE IS DEFLATED ',venttitle
2233 IF(idef == 0 .AND. tt > tvent .AND. tt < tstope)
THEN
2235 WRITE(iout,
'(A)')
' ** AIRBAG VENTING STARTS **'
2236 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
' VENT HOLE NUMBER',ivent,
' ',venttitle
2237 WRITE(istdo,
'(2A)')
' ** VENTING STARTS ',venttitle
2239 IF(idef == 1 .AND. tt >= tstope)
THEN
2241 WRITE(iout,
'(A)')
' ** AIRBAG VENTING STOPS **'
2242 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
2243 .
' VENT HOLE NUMBER',ivent,
' ',venttitle
2244 WRITE(istdo,
'(2A)')
' ** VENTING STOPS ',venttitle
2247 ibaghol(1,ivent)=idef
2252 IF(ivolu(39)==1)
THEN
2262 ff=fel(iel)-pext*elarea(iel)
2266 fvspmd(ifv)%AAA(1,n1)=fvspmd(ifv)%AAA(1,n1)+third*ff*nrx
2267 fvspmd(ifv)%AAA(2,n1)=fvspmd(ifv)%AAA(2,n1)+third*ff*nry
2268 fvspmd(ifv)%AAA(3,n1)=fvspmd(ifv)%AAA(3,n1)+third*ff*nrz
2269 fvspmd(ifv)%AAA(1,n2)=fvspmd(ifv)%AAA(1,n2)+third*ff*nrx
2270 fvspmd(ifv)%AAA(2,n2)=fvspmd(ifv)%AAA(2,n2)+third*ff*nry
2271 fvspmd(ifv)%AAA(3,n2)=fvspmd(ifv)%AAA(3,n2)+third*ff*nrz
2272 fvspmd(ifv)%AAA(1,n3)=fvspmd(ifv)%AAA(1,n3)+third*ff*nrx
2273 fvspmd(ifv)%AAA(2,n3)=fvspmd(ifv)%AAA(2,n3)+third*ff*nry
2274 fvspmd(ifv)%AAA(3,n3)=fvspmd(ifv)%AAA(3,n3)+third*ff*nrz
2276 wfext=wfext+ff*vel(iel)*dt1
2278 fsav(18)=fsav(18)+wfext-wfext0
2287 IF((tt>=output%TANIM .AND. tt<=output%TANIM_STOP) .OR. tt>=toutp .OR.
2288 . (tt>=h3d_data%TH3D .AND. tt<=h3d_data%TH3D_STOP) .OR.
2289 . (manim>=4.AND.manim<=15).OR.h3d_data%MH3D/=0)
THEN
2292 IF(ivolu(75)==1)
THEN
2297 DO j=ifvpadr(i),ifvpadr(i+1)-1
2299 DO k=ifvtadr(jj),ifvtadr(jj+1)-1
2318 nx= (y2-y1)*(z3-z1)-(z2-z1)*(y3-y1)
2319 ny= (z2-z1)*(x3-x1)-(x2-x1)*(z3-z1)
2320 nz= (x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)
2321 area=half*sqrt(nx*nx + ny*ny + nz*nz)
2327 centroid(1) = centroid(1)+
area*( third*(x1+x2+x3) )
2328 centroid(2) = centroid(2)+
area*( third*(y1+y2+y3) )
2329 centroid(3) = centroid(3)+
area*( third*(z1+z2+z3) )
2334 centroid(1) = centroid(1)/denom
2335 centroid(2) = centroid(2)/denom
2336 centroid(3) = centroid(3)/denom
2339 centroid_polh(1,i) = centroid(1)
2340 centroid_polh(2,i) = centroid(2)
2341 centroid_polh(3,i) = centroid(3)
2351 IF (nbgauge > 0)
THEN
2355 fvspmd(ifv)%GGG(1,i)=p(i)
2356 fvspmd(ifv)%GGG(2,i)=rho(i)
2357 fvspmd(ifv)%GGG(3,i)=tk(i)
2361 fvspmd(ifv)%GGA(1,i)=pa(i)
2362 fvspmd(ifv)%GGA(2,i)=rhoa(i)
2363 fvspmd(ifv)%GGA(3,i)=tka(i)
2368 IF (
ALLOCATED(nodarea))
DEALLOCATE(nodarea)
2369 IF (
ALLOCATED(tagsurf))
DEALLOCATE(tagsurf)
2370 IF (
ALLOCATED(icont))
DEALLOCATE(icont)
2371 IF (
ALLOCATED(itagp))
DEALLOCATE(itagp)
2373 IF (
ALLOCATED(area_max))
DEALLOCATE(area_max
2374 IF (
ALLOCATED(dm))
DEALLOCATE(dm)
2375 IF (
ALLOCATED(pnod))
DEALLOCATE(pnod)
2376 IF (
ALLOCATED(elarea))
DEALLOCATE(elarea)
2377 IF (
ALLOCATED(
norm))
DEALLOCATE(
norm)
2378 IF (
ALLOCATED(parea))
DEALLOCATE(parea)
2379 IF (
ALLOCATED(pnorm))
DEALLOCATE(pnorm)
2380 IF (
ALLOCATED(pvolu))
DEALLOCATE(pvolu)
2381 IF (
ALLOCATED(rhoel))
DEALLOCATE(rhoel)
2382 IF (
ALLOCATED(tkel))
DEALLOCATE(tkel)
2383 IF (
ALLOCATED(sspel))
DEALLOCATE(sspel)
2384 IF (
ALLOCATED(pu))
DEALLOCATE(pu)
2385 IF (
ALLOCATED(pw))
DEALLOCATE(pw)
2386 IF (
ALLOCATED(dmini))
DEALLOCATE(dmini)
2387 IF (
ALLOCATED(dmcpa))
DEALLOCATE(dmcpa)
2388 IF (
ALLOCATED(dmcpb))
DEALLOCATE(dmcpb)
2389 IF (
ALLOCATED(dmcpc))
DEALLOCATE(dmcpc)
2390 IF (
ALLOCATED(dmrmw))
DEALLOCATE(dmrmw)
2391 IF (
ALLOCATED(elsout))
DEALLOCATE(elsout)
2392 IF (
ALLOCATED(tmp))
DEALLOCATE(tmp)
2393 IF (
ALLOCATED(
poro))
DEALLOCATE(
poro)
2394 IF (
ALLOCATED(vola))
DEALLOCATE(vola)
2395 IF (
ALLOCATED(hmin))
DEALLOCATE(hmin)
2396 IF (
ALLOCATED(vel))
DEALLOCATE(vel)
2397 IF (
ALLOCATED(vnod))
DEALLOCATE(vnod)
2398 IF (
ALLOCATED(vgrid))
DEALLOCATE(vgrid)
2399 IF (
ALLOCATED(svent))
DEALLOCATE(svent)
2400 IF (
ALLOCATED(xxx))
DEALLOCATE(xxx)
2401 IF (
ALLOCATED(dmcpd))
DEALLOCATE(dmcpd)
2402 IF (
ALLOCATED(dmcpe))
DEALLOCATE(dmcpe)
2403 IF (
ALLOCATED(dmcpf))
DEALLOCATE(dmcpf)
2404 IF (
ALLOCATED(pel))
DEALLOCATE(pel)
2405 IF (
ALLOCATED(dls))
DEALLOCATE(dls)
2406 IF (
ALLOCATED(eldmass))
DEALLOCATE(eldmass)
2407 IF (
ALLOCATED(eldehpy))
DEALLOCATE(eldehpy)
2408 IF (
ALLOCATED(vvv))
DEALLOCATE(vvv)