51 SUBROUTINE fvbag1(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 INTEGER ,
INTENT(IN) :: NSENSOR, NPOLH
111 INTEGER NN, NEL, IBUF(*), ELEM(3,*), NJET, IBAGJET(NIBJET,*),
112 . NVENT, IBAGHOL(NIBHOL,*),
113 . NPC(*), IVOLU(*), IFVNOD(3,*), IFVTRI(6,*),
114 . IFVPOLY(*),IFVTADR(*), IFVPOLH(*), IFVPADR(*), INFO,
115 . , NNTR, IFV, NPOLHA, ITAGEL(*), ICONTACT(*),
116 . IDPOLH(NPOLH), IBUFA(*), ELEMA(3,*), TAGELA(*), BRNA(8,*),
117 . NNA, NTGA, IBPOLH(NPOLH), NNT, NELT, NCONA(16,*),
118 . LGAUGE(3,NBGAUGE), ITYP, IGEO(NPROPGI,NUMGEO)
120 INTEGER IPM(NPROPMI,NUMMAT), IPARG(NPARG,NGROUP)
121 INTEGER MATTG(*), (NUMELTG), IGROUPC()
123 my_real RBAGJET(NRBJET,*), RBAGHOL(NRBHOL,*), P(*), RHO(*),
124 . TK(*), U(3,*), SSPK(*), X(3,NUMNOD), V(3,NUMNOD), A(3,NUMNOD),
125 . FSAV(NTHVKI), TF(*), RVOLU(*), MPOLH(NPOLH), QPOLH(3,NPOLH),
126 . EPOLH(NPOLH), PPOLH(NPOLH), RPOLH(NPOLH), GPOLH(NPOLH), RFVNOD(2,*), DLH,
127 . CPAPOLH(NPOLH), CPBPOLH(NPOLH), CPCPOLH(NPOLH), RMWPOLH(NPOLH), ELSINI(*),
128 . ELFMASS(*), ELFVEL(*), PA(*), RHOA(*), TKA(*),SSPKA(*), UA(3,*),
129 . DTPOLH(NPOLH), XXXA(3,*), VVVA(3,*), POROSITY(*),
130 . GAUGE(LLGAUGE,NBGAUGE), GEO(NPROPG,NUMGEO), PM(NPROPM,NUMMAT), ELFEHPY(*),
131 . TPOLH(NPOLH), CPDPOLH(NPOLH), CPEPOLH(NPOLH), CPFPOLH(NPOLH), FEXT(3,NUMNOD), CFL_COEF,
133 my_real,
INTENT(INOUT) :: ssppolh(npolh)
135 TYPE(elbuf_struct_),
DIMENSION(NGROUP) :: ELBUF_TAB
136 TYPE (SENSOR_STR_) ,
DIMENSION(NSENSOR) ,
INTENT(IN) :: SENSOR_TAB
137 TYPE(H3D_DATABASE) :: H3D_DATA
138 INTEGER,
INTENT(IN)::ITAB(NUMNOD)
139 my_real,
INTENT(INOUT) :: CENTROID_POLH(3,NPOLH)
140 DOUBLE PRECISION,
INTENT(INOUT) :: WFEXT
141 type(python_) :: PYTHON
145 INTEGER I, II, IINJ, ISU, IEL, N1, N2, N3, JEL,
146 . , NN2, NN3, J, JJ, K, KK, IMASS, IFLU, ISENS, IVEL,
147 . ITEMP, NV, ILVOUT, NPOLYG,NTRIA, IPRI,
148 . IVENT, IDEF, IPORT, IPORP, IPORA, IPORT1, IPORP1, IPORA1,
149 . ITVENT, , I1, I2, NNSA, IVDP,ITTF, IDPDEF,
150 . IDTPDEF,PMAIN,N21,N22,ITYPL,
151 . PREPARE_ANIM,IVENTYP,IMETHOD_LC, IEL1, IEL2, IDT_FVMBAG
152 INTEGER TITREVENT(20)
153 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: SURF_INT,SURF_EXT
154 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: TAGSURF
155 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ICONT
156 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ITAGP
158 my_real,
DIMENSION(:),
ALLOCATABLE :: dm
159 my_real,
DIMENSION(:),
ALLOCATABLE :: nodarea
160 my_real,
DIMENSION(:),
ALLOCATABLE :: area_max
161 my_real,
DIMENSION(:),
ALLOCATABLE :: parea
162 my_real,
DIMENSION(:),
ALLOCATABLE :: pvolu
163 my_real,
DIMENSION(:),
ALLOCATABLE :: rhoel
164 my_real,
DIMENSION(:),
ALLOCATABLE :: tkel
165 my_real,
DIMENSION(:),
ALLOCATABLE :: sspel
166 my_real,
DIMENSION(:),
ALLOCATABLE :: elarea
167 my_real,
DIMENSION(:),
ALLOCATABLE :: dmini
168 my_real,
DIMENSION(:),
ALLOCATABLE :: dmcpa
169 my_real,
DIMENSION(:),
ALLOCATABLE :: dmcpb
170 my_real,
DIMENSION(:),
ALLOCATABLE :: dmcpc
171 my_real,
DIMENSION(:),
ALLOCATABLE :: dmrmw
172 my_real,
DIMENSION(:),
ALLOCATABLE :: elsout
173 my_real,
DIMENSION(:),
ALLOCATABLE :: tmp
174 my_real,
DIMENSION(:),
ALLOCATABLE ::
poro
175 my_real,
DIMENSION(:),
ALLOCATABLE :: vola
176 my_real,
DIMENSION(:),
ALLOCATABLE :: hmin
177 my_real,
DIMENSION(:),
ALLOCATABLE :: vel
178 my_real,
DIMENSION(:),
ALLOCATABLE :: svent
179 my_real,
DIMENSION(:),
ALLOCATABLE :: dmcpd
180 my_real,
DIMENSION(:),
ALLOCATABLE :: dmcpe
181 my_real,
DIMENSION(:),
ALLOCATABLE :: dmcpf
182 my_real,
DIMENSION(:),
ALLOCATABLE :: pel
183 my_real,
DIMENSION(:),
ALLOCATABLE :: dls
184 my_real,
DIMENSION(:),
ALLOCATABLE :: eldmass
185 my_real,
DIMENSION(:),
ALLOCATABLE :: eldehpy
186 my_real,
DIMENSION(:,:),
ALLOCATABLE :: pnod
187 my_real,
DIMENSION(:,:),
ALLOCATABLE ::
norm
188 my_real,
DIMENSION(:,:),
ALLOCATABLE :: pnorm
189 my_real,
DIMENSION(:,:),
ALLOCATABLE :: pu
190 my_real,
DIMENSION(:,:),
ALLOCATABLE :: pw
191 my_real,
DIMENSION(:,:),
ALLOCATABLE :: vnod
192 my_real,
DIMENSION(:,:),
ALLOCATABLE :: vgrid
193 my_real,
DIMENSION(:,:),
ALLOCATABLE :: xxx
194 my_real,
DIMENSION(:,:),
ALLOCATABLE :: vvv
196 my_real x1, y1, z1, x2, y2, z2, x3, y3, z3,
197 . x12, y12, z12, x13, y13, z13, nrx, nry, nrz, area2,
199 .
area,denom,denom_max, nx, ny,
200 . nz, gamai, cpai, cpbi, cpci, rmwi, ti,
202 . rhoi, datainj(6,njet), scalt, fmass, gmass_old,
203 . gmtot_old, fvel, tstart, tsg, gmass, dgmass, injvel,
204 . gmtot, rmwg, cpa, cpb, cpc, ftemp, efac, cpg,
205 . cvg, wsurf(3), gama, fel(nelt),
206 . dq(3,npolh), de(npolh), dmi, dqi(3), dei, rho1, re1, ux1,
207 . uy1, uz1, rho2, re2, ux2, uy2, uz2, vfx, vfy, vfz, ss,
208 .
alpha, rhom, rem, ruxm, ruym, ruzm, p1, p2,
209 . uel(3,nelt), area1, area3, ff, temp, temp2, pext, volg, volph,
210 . areap, areael, xx, yy, zz, qa, qb, dtx, al, dd, ad, ssp,
211 . qx, vv, msini, rmw, cv, gama1, gama2,
212 . qvisc(npolh), amtot, pmean, pmean2,
213 . area_vent(nvent), pm_vent(nvent), scalp, scals, exten,
214 . avent, bvent, aini, fport, fporp, fpora, fport1, fporp1,
215 . fpora1, aout, aout1, deri, pdef, pvoltmp,
216 . dtpdefi, dtpdefc, tvent,aoutot, sventot,
217 . x23, y23, z23, x31, y31, z31, l12, l23, l31, h1, h2, h3,
218 . fac1, fac2, fac3, hm1, area_old, pp, vmax, uu,
219 . pcrit, rhoinj, pinj, vx1, vy1, vz1, vx2, vy2, vz2,
220 . vx3, vy3, vz3, vvx, vvy, vvz, fac,
222 . cpd, cpe, cpf, temp0, tt1,pstag, volno,tstope,
223 . enint, massflow, wfext0, dmout, dhout,
224 . cpam, cpbm, cpcm, cpdm, cpem, cpfm, rmwm, tmp_vec(3), vmat(3),ssp1,ssp2,sspt,ntria_tot,
225 . pres_av, rho_av, temp_av, cp_av, cv_av, rgas_av, centroid(3)
226 DOUBLE PRECISION :: CP
228 LOGICAL :: boolTAGEL,EXIT_NEG_VOL,INJECTION_STARTED
233 CHARACTER*20 VENTTITLE
234 MY_REAL :: DTOLD, PARAM_LAMBDA
235 INTEGER :: PARAM_L_TYPE, NNODES,nodeID
252 CALL my_alloc(tagsurf,2,nelt+1)
253 CALL my_alloc(icont,nnt)
254 CALL my_alloc(itagp,npolh)
256 CALL my_alloc(area_max,npolh)
257 CALL my_alloc(dm,npolh)
258 CALL my_alloc(nodarea,nnt)
259 CALL my_alloc(pnod,3,nns)
260 CALL my_alloc(elarea,nelt)
261 CALL my_alloc(
norm,3,nelt)
262 CALL my_alloc(parea,nntr)
263 CALL my_alloc(pnorm,3,nntr)
264 CALL my_alloc(pvolu,npolh)
265 CALL my_alloc(rhoel,nelt)
266 CALL my_alloc(tkel,nelt)
267 CALL my_alloc(sspel,nelt)
268 CALL my_alloc(pu,3,npolh)
269 CALL my_alloc(pw,3,npolh)
270 CALL my_alloc(dmini,npolh)
271 CALL my_alloc(dmcpa,npolh)
272 CALL my_alloc(dmcpb,npolh)
273 CALL my_alloc(dmcpc,npolh)
274 CALL my_alloc(dmrmw,npolh)
275 CALL my_alloc(elsout,nelt)
276 CALL my_alloc(tmp,nel)
277 CALL my_alloc(
poro,nelt)
278 CALL my_alloc(vola,nna)
279 CALL my_alloc(hmin,nntr)
280 CALL my_alloc(vel,nelt)
281 CALL my_alloc(vnod,3,nns)
282 CALL my_alloc(vgrid,3,nntr)
283 CALL my_alloc(svent,nvent)
284 CALL my_alloc(xxx,3,nnt)
285 CALL my_alloc(dmcpd,npolh)
286 CALL my_alloc(dmcpe,npolh)
287 CALL my_alloc(dmcpf,npolh)
288 CALL my_alloc(pel,nelt)
289 CALL my_alloc(dls,npolh)
290 CALL my_alloc(eldmass,nel)
291 CALL my_alloc(eldehpy,nel)
292 CALL my_alloc(vvv,3,nnt)
296 IF(nbgauge > 0 )
THEN
297 ALLOCATE(
fvspmd(ifv)%GGG(3,nnt))
298 ALLOCATE(
fvspmd(ifv)%GGA(3,nna))
300 ALLOCATE(
fvspmd(ifv)%AAA(3,nnt))
301 fvspmd(ifv)%AAA(1:3,1:nnt) = zero
306 i1=
fvspmd(ifv)%IBUF_L(1,i)
314 i1=
fvspmd(ifv)%IBUF_L(1,i)
315 i2=
fvspmd(ifv)%IBUF_L(2,i)
321 IF (intbag /= 0.AND.nvent > 0.AND.ivolu(39) /= 0)
THEN
323 i1=
fvspmd(ifv)%IBUF_L(1,i)
324 i2=
fvspmd(ifv)%IBUF_L(2,i)
325 icont(i1)=icontact(i2)
334 IF (intbag /= 0.AND.nvent > 0.AND.ivolu(39) /= 0)
338 IF (ispmd/=
fvspmd(ifv)%PMAIN-1)
GOTO 1000
385 area2=sqrt(nrx**2+nry**2+nrz**2)
387 norm(1,iel)=nrx/area2
388 norm(2,iel)=nry/area2
389 norm(3,iel)=nrz/area2
391 tmp(iel) = one_over_6 * (x1*nrx+y1*nry+z1*nrz)
404 elarea(iel) = half * area2
405 nodarea(n1)=nodarea(n1)+one_over_6*area2
406 nodarea(n2)=nodarea(n2)+one_over_6*area2
407 nodarea(n3)=nodarea(n3)+one_over_6*area2
413 IF (dt1==zero.OR.ivolu(39)==0)
THEN
430 IF (ifvnod(1,i) == 1)
THEN
439 IF (tagela(iel) > 0)
THEN
458 ELSEIF (tagela(iel) < 0)
THEN
478 pnod(1,i)=(one-ksi-eta)*x1+ksi*x2+eta
479 pnod(2,i)=(one-ksi-eta)*y1+ksi*y2+eta*y3
480 pnod(3,i)=(one-ksi-eta)*z1+ksi*z2+eta*z3
481 vnod(1,i)=(one-ksi-eta)*vx1+ksi*vx2+eta*vx3
482 vnod(2,i)=(one-ksi-eta)*vy1+ksi*vy2+eta*vy3
483 vnod(3,i)=(one-ksi-eta)*vz1+ksi*vz2+eta*vz3
485 ELSEIF (ifvnod(1,i) == 2)
THEN
487 pnod(1:3,i) = xxxa(1:3,i2)
488 vnod(1:3,i) = vvva(1:3,i2)
496 IF (ifvnod(1,i) == 3)
THEN
500 pnod(1,i)=fac*pnod(1,i1)+(one-fac)*pnod(1,i2)
501 pnod(2,i)=fac*pnod(2,i1)+(one-fac)*pnod(2,i2)
502 pnod(3,i)=fac*pnod(3,i1)+(one-fac)*pnod(3,i2)
503 vnod(1,i)=fac*vnod(1,i1)+(one-fac)*vnod(1,i2)
504 vnod(2,i)=fac*vnod(2,i1)+(one-fac)*vnod(2,i2)
505 vnod(3,i)=fac*vnod(3,i1)+(one-fac)*vnod(3,i2)
533 area2=sqrt(nrx**2+nry**2+nrz**2)
544 IF(ivolu(39)==0)
THEN
558 vgrid(1,i)=third*(vx1+vx2+vx3)
559 vgrid(2,i)=third*(vy1+vy2+vy3)
560 vgrid(3,i)=third*(vz1+vz2+vz3)
571 DO j=ifvpadr(i),ifvpadr(i+1)-1
573 DO k=ifvtadr(jj), ifvtadr(jj+1)-1
576 area_max(i)=
max(area_max(i),
area)
595 IF (i1 == i.AND.i2 == i)
THEN
605 pvoltmp=pvoltmp+third*
area*(x1*nx+y1*ny+z1*nz)
619 IF (iel > 0) areap=areap+parea(i)
623 areael=areael+elarea(iel)
628 exit_neg_vol = .false.
631 IF(pvolu(i) <= 0) exit_neg_vol = .true.
634 ipri=mod(ncycle,iabs(ncpri))
635 IF(exit_neg_vol)
THEN
637 IF (pvolu(i) <= zero)
THEN
640 CALL ancmsg(msgid=185,anmode=aninfo,
641 . i1=idpolh(i),r1=pvolu(i),i3=i,i4=npolh)
651 IF (dt1 == zero)
THEN
655 cpapolh(1:npolh)=cpai
657 cpbpolh(1:npolh)=cpbi
659 cpcpolh(1:npolh)=cpci
661 rmwpolh(1:npolh)=rmwi
665 cpdpolh(1:npolh)=cpdi
667 cpepolh(1:npolh)=cpei
669 cpfpolh(1:npolh)=cpfi
673 IF (dt1==zero.OR.ivolu(39)==0)
THEN
676 mpolh(1:npolh)=rhoi*pvolu(1:npolh)
677 epolh(1:npolh)=mpolh(1:npolh)*efac
678 pu(1,1:npolh) = rvolu(67)
679 pu(2,1:npolh) = rvolu(68)
680 pu(3,1:npolh) = rvolu(69)
681 qpolh(1,1:npolh) = mpolh(1:npolh)*pu(1,1:npolh)
682 qpolh(2,1:npolh) = mpolh(1:npolh)*pu(2,1:npolh)
683 qpolh(3,1:npolh) = mpolh(1:npolh)*pu(3,1:npolh)
687 datainj(1:6,1:njet)=zero
688 IF(ivolu(39) == 0)
GO TO 250
694 IF (itagel(iel) > 0)
THEN
696 datainj(1,iinj)=datainj(1,iinj)+elarea(iel)
702 CALL fvinjt6(njet, ibagjet, rbagjet, npc, tf, nsensor,
703 . sensor_tab,scalt, datainj, python )
704 ELSEIF(ityp == 8)
THEN
705 CALL fvinjt8(njet, ibagjet, rbagjet, npc, tf, nsensor,
706 . sensor_tab,scalt, igeo, geo, pm, ivolu, datainj,python)
710 isens=ibagjet(4,iinj)
711 fvel=rbagjet(15,iinj)
712 ivel=ibagjet(11,iinj)
716 tstart=sensor_tab(isens)%TSTART
722 IF (tt >= tstart.AND.(ittf == 1.OR.ittf == 2.OR.ittf == 3))
THEN
727 IF (tt >= tstart.AND.dt1 > zero)
THEN
728 tsg=(tt-tstart)*scalt
730 injvel=fvel*finter_mixed(python,nfunct,ivel,tsg,npc,tf)
737 datainj(3,iinj)=injvel
742 IF (intbag == 0)
THEN
752 IF (icont(n1) /= 0)
poro(iel)=
poro(iel)+third
753 IF (icont(n2) /= 0)
poro(iel)=
poro(iel)+third
754 IF (icont(n3) /= 0)
poro(iel)=
poro(iel)+third
770 1 elsout ,aoutot ,nvent ,nelt ,ittf ,
771 2 elarea ,elsini ,elem ,itagel ,svent ,
772 3 ibaghol ,rvolu ,rbaghol ,
poro ,p ,
773 4 eltg ,iparg ,mattg ,nel ,porosity,
774 5 ipm ,pm ,elbuf_tab,igroupc ,igrouptg)
813 pu(1,1:npolh)=qpolh(1,1:npolh)/mpolh(1:npolh)
814 pu(2,1:npolh)=qpolh(2,1:npolh)/mpolh(1:npolh)
815 pu(3,1:npolh)=qpolh(3,1:npolh)/mpolh(1:npolh)
819 DO j=ifvpadr(i),ifvpadr(i+1)-1
821 DO k=ifvtadr(jj),ifvtadr
823 iel=abs(ifvtri(4,kk))
849 l12=x12**2+y12**2+z12**2
850 l23=x23**2+y23**2+z23**2
851 l31=x31**2+y31**2+z31**2
852 h1=four*
area**2/
max(l12,l23,l31)
863 DO j=ifvpadr(i),ifvpadr(i+1)-1
865 DO k=ifvtadr(jj),ifvtadr(jj+1)-1
867 iel =abs(ifvtri(4,kk))
870 IF (
area == zero) cycle
873 IF(itagel(iel) > 0)booltagel = .true.
876 IF (jel > 0.OR.(jel < 0.AND.booltagel))
THEN
883 IF (ifvtri(5,kk) == i)
THEN
888 ELSEIF(ifvtri(6,kk) == i)
THEN
896 fac=nx*nrx+ny*nry+nz*nrz
903 IF (itagel(iel) > 0)
THEN
906 dmi=datainj(2,iinj)*
area/datainj(1,iinj)
907 IF (nv == i .AND. jel < 0) dmi=dmi*half
908 dqi(1)=-dmi*datainj(3,iinj)*nrx
909 dqi(2)=-dmi*datainj(3,iinj)*nry
910 dqi(3)=-dmi*datainj(3,iinj)*nrz
912 dei=dmi*datainj(4,iinj)
915 dq(1,ii)=dq(1,ii)+dqi(1)
916 dq(2,ii)=dq(2,ii)+dqi(2)
917 dq(3,ii)=dq(3,ii)+dqi(3)
920 dmcpa(ii)=dmcpa(ii)+dmi*rbagjet(2,iinj)
921 dmcpb(ii)=dmcpb(ii)+dmi*rbagjet(3,iinj)
922 dmcpc(ii)=dmcpc(ii)+dmi*rbagjet(4,iinj)
923 dmrmw(ii)=dmrmw(ii)+dmi*rbagjet(1,iinj)
925 dmcpd(ii)=dmcpd(ii)+dmi*rbagjet(16,iinj)
926 dmcpe(ii)=dmcpe(ii)+dmi*rbagjet(17,iinj)
927 dmcpf(ii)=dmcpf(ii)+dmi*rbagjet(18,iinj)
930 elfmass(iel)=elfmass(iel)+dmi*dt1
931 elfehpy(iel)=elfehpy(iel)+dei*dt1
932 elfvel(iel) =-datainj(3,iinj)
933 ELSEIF (itagel(iel) < 0)
THEN
936 idef =ibaghol(1,ivent)
937 itvent =ibaghol(10,ivent)
942 aout=elsout(iel)*
area/elarea(iel)
945 re1=epolh(i)/pvolu(i)
952 IF (itvent == 1)
THEN
957 ELSEIF ((itvent==2.AND.p1>zero).OR.(itvent==4.AND.p1>=pext))
THEN
958 vv=nx*ux1+ny*uy1+nz*uz1
960 eta=(gama1-one)/gama1
962 pstag=p1*(one+half*eta*rho1
963 pcrit=pstag*(two/(gama1+one))**ksi
965 rho2 =rho1*(p2/p1)**(one/gama1)
966 uu=two*p1*(one-(p2/p1)**eta)/(rho1*eta)
969 vmax=half*((p1-pext)*pvolu(i)/(gama1-one))
970 . /
max(em20,rho2*aout*dt1*gama1*re1/rho1)
974 ELSEIF (itvent == 3)
THEN
976 ivdp=ibaghol(9,ivent)
977 fvdp=rbaghol(13,ivent)
978 uu=fvdp*get_u_func(ivdp,p2*scalp,deri)
985 ELSEIF (itvent==4.AND.p1<pext)
THEN
988 eta=(gamai-one)/gamai
989 pcrit=pext*(two/(gamai+one))**(one/eta)
991 rho2 =rhoi*(p2/pext)**(one/gamai)
992 uu=two*pext*(one-(p2/pext)**eta)/(rhoi*eta)
995 vmax=half*((pext-p1)*pvolu(i
996 . /
max(em20,rho2*aout*dt1*rvolu(63))
1001 ELSEIF (itvent==5)
THEN
1010 IF (uu > zero.AND.idef == 1)
THEN
1013 dq(1,i)=dq(1,i)-dmout*ux1
1014 dq(2,i)=dq(2,i)-dmout*uy1
1015 dq(3,i)=dq(3,i)-dmout*uz1
1016 dhout=dmout*gama1*re1/rho1
1023 dmcpa(i)=dmcpa(i)-dmout*cpai
1024 dmcpb(i)=dmcpb(i)-dmout*cpbi
1025 dmcpc(i)=dmcpc(i)-dmout*cpci
1026 dmrmw(i)=dmrmw(i)-dmout*rmwi
1031 dmcpd(i)=dmcpd(i)-dmout*cpdi
1032 dmcpe(i)=dmcpe(i)-dmout*cpei
1033 dmcpf(i)=dmcpf(i)-dmout*cpfi
1035 elfmass(iel)=elfmass(iel)-dmout*dt1
1036 elfehpy(iel)=elfehpy(iel)-dhout*dt1
1037 elfvel(iel)=elfvel(iel)+uu*
area/elarea(iel)
1042 IF (uu < zero.AND.idef
THEN
1045 dq(1,i)=dq(1,i)+dmi*ux1
1046 dq(2,i)=dq(2,i)+dmi*uy1
1047 dq(3,i)=dq(3,i)+dmi*uz1
1052 dmcpa(i)=dmcpa(i)+dmi*cpai
1053 dmcpb(i)=dmcpb(i)+dmi*cpbi
1054 dmcpc(i)=dmcpc(i)+dmi*cpci
1055 dmrmw(i)=dmrmw(i)+dmi*rmwi
1060 dmcpd(i)=dmcpd(i)+dmi*cpdi
1061 dmcpe(i)=dmcpe(i)+dmi*cpei
1064 de(i)=de(i)+dmi*rvolu(63)
1067 elfvel(iel) =elfvel(iel) +uu*
area/elarea(iel)
1069 eldehpy(iel)=dmi*rvolu(63)
1077 IF (ifvtri(5,kk) == i)
THEN
1082 ELSEIF (ifvtri(6,kk) == i)
THEN
1089 IF (nv <= i)
GOTO 100
1091 re1=epolh(i)/pvolu(i)
1097 re2=epolh(nv)/pvolu(nv)
1109 h1 = one-rvolu(51)/hm1
1119 IF(porosity(iel-nel) == zero)
GOTO 50
1123 ss=nx*(vfx-vgrid(1,kk))+ny*(vfy-vgrid(2,kk))
1124 . +nz*(vfz-vgrid(3,kk))
1126 IF (ss <= zero)
THEN
1138 massflow = rhom*ss*
area
1140 dq(1,i)=dq(1,i)-ruxm*ss*
area
1141 dq(2,i)=dq(2,i)-ruym*ss*
area
1142 dq(3,i)=dq(3,i)-ruzm*ss*
area
1143 de(i)=de(i)-rem*ss*
area
1144 dm(nv)=dm(nv)+massflow
1146 dq(2,nv)=dq(2,nv)+ruym*ss*
area
1147 dq(3,nv)=dq(3,nv)+ruzm*ss*
area
1148 de(nv)=de(nv)+rem*ss*
area
1149 cpam =
alpha * cpapolh(i) + (one -
alpha) * cpapolh(nv)
1150 cpbm =
alpha * cpbpolh(i) + (one -
alpha) * cpbpolh(nv)
1151 cpcm =
alpha * cpcpolh(i) + (one -
alpha) * cpcpolh(nv)
1152 rmwm =
alpha * rmwpolh(i) + (one -
alpha) * rmwpolh(nv)
1153 dmcpa(i) = dmcpa(i) - massflow * cpam
1154 dmcpa(nv) = dmcpa(nv) + massflow * cpam
1155 dmcpb(i) = dmcpb(i) - massflow * cpbm
1156 dmcpb(nv) = dmcpb(nv) + massflow * cpbm
1157 dmcpc(i) = dmcpc(i) - massflow * cpcm
1158 dmcpc(nv) = dmcpc(nv) + massflow * cpcm
1159 dmrmw(i) = dmrmw(i) - massflow * rmwm
1160 dmrmw(nv) = dmrmw(nv) + massflow * rmwm
1162 cpdm =
alpha * cpdpolh(i) + (one -
alpha) * cpdpolh(nv)
1163 cpem =
alpha * cpepolh(i) + (one -
alpha) * cpepolh(nv)
1164 cpfm =
alpha * cpfpolh(i) + (one -
alpha) * cpfpolh(nv)
1165 dmcpd(i) = dmcpd(i) - massflow * cpdm
1166 dmcpd(nv) = dmcpd(nv) + massflow * cpdm
1167 dmcpe(i) = dmcpe(i) - massflow * cpem
1168 dmcpe(nv) = dmcpe(nv) + massflow * cpem
1169 dmcpf(i) = dmcpf(i) - massflow * cpfm
1170 dmcpf(nv) = dmcpf(nv) + massflow * cpfm
1174 elfmass(iel)=elfmass(iel)+massflow*dt1
1175 elfvel(iel) =elfvel(iel) +ss*
area/elarea(iel)
1220 mpolh(i)=mpolh(i)+dm(i)*dt1
1221 qpolh(1,i)=qpolh(1,i)+dq(1,i)*dt1
1222 qpolh(2,i)=qpolh(2,i)+dq(2,i)*dt1
1223 qpolh(3,i)=qpolh(3,i)+dq(3,i)*dt1
1224 epolh(i)=epolh(i)+de(i)*dt1
1229 IF(mpolh(i) <= zero.OR.epolh(i) <= zero)
THEN
1233 msini=msini+dmini(i)*dt1
1234 cpa=(msini*cpapolh(i)+dmcpa(i
1235 cpb=(msini*cpbpolh(i)+dmcpb(i)*dt1)/mpolh(i)
1236 cpc=(msini*cpcpolh(i)+dmcpc(i)*dt1)/mpolh(i)
1237 rmw=(msini*rmwpolh(i)+dmrmw(i)*dt1)/mpolh(i)
1238 efac=epolh(i)/mpolh(i)
1240 cpd=(msini*cpdpolh(i)+dmcpd(i)*dt1)/mpolh(i)
1241 cpe=(msini*cpepolh(i)+dmcpe(i)*dt1)/mpolh(i)
1242 cpf=(msini*cpfpolh(i)+dmcpf(i)*dt1)/mpolh(i)
1249 CALL fvtemp(itypl , efac , cpa , cpb , cpc ,
1250 . cpd , cpe , cpf , rmw , temp0,
1252 cp=cpa+cpb*temp+cpc*temp*temp
1260 cp=cp+cpd*temp**3+cpf*temp**4
1262 IF(cpe /= zero .AND. temp2 > zero)
THEN
1266 cv=double_to_my_real(cp)-rmw
1268 IF(cp > huge(cv) .OR. cp < -huge(cv) .OR. cv == zero)
THEN
1272 gpolh(i)=double_to_my_real(cp)/cv
1278 rpolh(i)=mpolh(i)/pvolu(i)
1279 ppolh(i)=rpolh(i)*rmw*temp
1309 idt_fvmbag = fvdata(ifv)%ID_DT_OPTION
1311 SELECT CASE(idt_fvmbag)
1320 IF (ibpolh(i) == 0 .AND.idtmin(52) < 2)
THEN
1323 dls(i)=pvolu(i)**third
1331 param_l_type = fvdata(ifv)%L_TYPE
1333 SELECT CASE(param_l_type)
1347 dls(i)=pvolu(i)**third
1367 SELECT CASE (idt_fvmbag)
1372 IF(mpolh(i)<=zero.OR.epolh(i)<=zero.OR.gpolh(i)<=one)
THEN
1380 ssp=sqrt((gama-one)*gama*epolh(i)/mpolh(i))
1381 qvisc(i)=rpolh(i)*ad*al*(qa*qa*al*ad+qb*ssp)
1382 qx=qb*ssp+al*qa*qa*ad
1383 ssp=qx+sqrt(qx*qx+ssp*ssp)
1384 vv=sqrt(pu(1,i)**2+pu(2,i)**2+pu(3,i)**2)
1385 dtpolh(i)=cfl_coef*dls(i)/(ssp+vv)
1392 param_l_type = fvdata(ifv)%L_TYPE
1394 IF(param_l_type /= 3)
THEN
1397 IF(mpolh(i) <= zero.OR.epolh(i) <= zero.OR.gpolh(i) <= one)
THEN
1403 npolyg = ifvpadr(i+1) - ifvpadr(i)
1406 DO j=ifvpadr(i),ifvpadr(i+1)-1
1408 ntria = ifvtadr(jj+1) - ifvtadr(jj)
1410 ntria_tot = ntria_tot + ntria
1412 DO k=ifvtadr(jj),ifvtadr(jj+1)-1
1415 wsurf(1)=wsurf(1)+vgrid(1,kk)
1416 wsurf(2)=wsurf(2)+vgrid(2,kk)
1417 wsurf(3)=wsurf(3)+vgrid(3,kk)
1420 pw(1,i)=pw(1,i)+wsurf(1)
1421 pw(2,i)=pw(2,i)+wsurf(2)
1422 pw(3,i)=pw(3,i)+wsurf(3)
1425 pw(1,i)=pw(1,i)/ntria_tot
1426 pw(2,i)=pw(2,i)/ntria_tot
1427 pw(3,i)=pw(3,i)/ntria_tot
1433 ssp=sqrt((gama-one)*gama*epolh(i)/mpolh(i))
1434 qvisc(i)=rpolh(i)*ad*al*(qa
1435 qx=qb*ssp+al*qa*qa*ad
1436 ssp=qx+sqrt(qx*qx+ssp*ssp)
1438 tmp_vec(1)=pu(1,i)-pw(1,i)
1439 tmp_vec(2)=pu(2,i)-pw(2,i)
1440 tmp_vec(3)=pu(3,i)-pw(3,i)
1441 vv=sqrt(tmp_vec(1)*tmp_vec(1)+tmp_vec(2)*tmp_vec(2)+tmp_vec(3)*tmp_vec(3))
1443 dtpolh(i)=cfl_coef*dls(i)/(ssp+vv)
1453 IF(mpolh(i) <= zero.OR.epolh(i) <= zero.OR.gpolh
THEN
1460 DO j=ifvpadr(i),ifvpadr(i+1)-1
1462 ntria = ifvtadr(jj+1) - ifvtadr(jj)
1464 DO k=ifvtadr(jj),ifvtadr(jj+1)-1
1471 vmat(1) = half*(pu(1,iel1)+pu(1,iel2))
1472 vmat(2) = half*(pu(2,iel1)+pu(2,iel2))
1473 vmat(3) = half*(pu(3,iel1)+pu(3,iel2))
1476 ssp2= sqrt((gama-one)*gama*epolh(iel2)/mpolh(iel2))
1478 tmp_vec(1) = (vmat(1)-vgrid(1,kk))*pnorm(1,kk)
1479 tmp_vec(2) = (vmat(2)-vgrid(2,kk))*pnorm(2,kk)
1480 tmp_vec(3) = (vmat(3)-vgrid(3,kk))*pnorm(3,kk)
1481 denom =
area*(sqrt(tmp_vec(1)*tmp_vec(1)+tmp_vec(2)*tmp_vec(2)+tmp_vec(3)*tmp_vec
1482 denom_max =
max(denom, denom_max)
1490 ssp=sqrt((gama-one)*gama*epolh(i)/mpolh(i))
1491 qvisc(i)=rpolh(i)*ad*al*(qa*qa*al*ad+qb*ssp)
1492 qx=qb*ssp+al*qa*qa*ad
1493 ssp=qx+sqrt(qx*qx+ssp*ssp)
1495 dtpolh(i)=cfl_coef*dls(i)/(denom_max)
1511 IF (dtpolh(i) < dtx)
THEN
1518 IF(ncycle > 0 .AND. idt_fvmbag == 2)
THEN
1519 param_lambda = fvdata(ifv)%LAMBDA
1520 IF(param_lambda > zero)
THEN
1521 dtold = fvdata(ifv)%DTOLD
1522 IF(dtold > zero)
THEN
1523 dtx =
min( dtx, dtold*(one+param_lambda
1527 fvdata(ifv)%DTOLD = dtx
1529 IF (ilvout >= 1.AND.ipri == 0)
THEN
1530 WRITE(iout,
'(A,I10,A,E12.4,A,I10)')
' ** MONITORED VOLUME ID: ',ivolu(1),
' TIME STEP:',dtx,
' FINITE VOLUME:',idpolh(phdt)
1558 vvx=third*(vx1+vx2+vx3)
1559 vvy=third*(vy1+vy2+vy3)
1560 vvz=third*(vz1+vz2+vz3)
1564 vel(iel)=nx*vvx+ny*vvy+nz*vvz
1569 IF (mpolh(i) <= zero.OR.epolh(i) <= zero) cycle
1570 DO j=ifvpadr(i),ifvpadr(i+1)-1
1572 DO k=ifvtadr(jj),ifvtadr(jj+1)-1
1576 IF (
area == zero) cycle
1581 IF (itagel(iel) < 0)
THEN
1584 idef =ibaghol(1,ivent)
1585 iventyp=ibaghol(13,ivent)
1587 IF(idef==1.AND.iventyp==0)
THEN
1588 aout=elsout(iel)*
area/elarea(iel)
1591 fel(iel)=fel(iel)+pp*aout
1592 dq(1,i)=dq(1,i)-pp*aout*nx
1593 dq(2,i)=dq(2,i)-pp*aout*ny
1594 dq(3,i)=dq(3,i)-pp*aout*nz
1595 de(i)=de(i)-pp*vel(iel)*aout
1599 pp=ppolh(i)+qvisc(i)
1600 fel(iel)=fel(iel)+pp*
area
1601 dq(1,i)=dq(1,i)-pp*
area*nx
1602 dq(2,i)=dq(2,i)-pp*
area*ny
1603 dq(3,i)=dq(3,i)-pp*
area*nz
1605 de(i)=de(i)-pp*vel(iel)*
area
1607 de(i)=de(i)-rvolu(19)*
area*(tpolh(i)-rvolu(25))
1608 ELSEIF(iel == 0)
THEN
1615 IF (ifvtri(5,kk) == i)
THEN
1620 ELSEIF (ifvtri(6,kk) == i)
THEN
1626 IF (nv < i .OR.mpolh(nv) <= zero.OR.
1627 . epolh(nv) <= zero)
GOTO 200
1628 p1=ppolh(i)+qvisc(i)
1629 p2=ppolh(nv)+qvisc(nv)
1632 dq(1,i)=dq(1,i)-pmean*nx*
area-p1*nx*area1
1633 dq(2,i)=dq(2,i)-pmean*ny*
area-p1*ny*area1
1634 dq(3,i)=dq(3,i)-pmean*nz*
area-p1*nz*area1
1635 dq(1,nv)=dq(1,nv)+pmean*nx*
area+p2*nx*area1
1636 dq(2,nv)=dq(2,nv)+pmean*ny*
area+p2*ny*area1
1637 dq(3,nv)=dq(3,nv)+pmean*nz*
area+p2*nz
1639 ss=nx*vgrid(1,kk)+ny*vgrid(2,kk)+nz*vgrid(3,kk)
1640 de(i) =de(i) -pmean*ss*
area-p1*ss*area1
1641 de(nv)=de(nv)+pmean*ss*
area+p2*ss*area1
1642 ELSEIF(iel < 0)
THEN
1645 IF (ifvtri(5,kk) == i)
THEN
1650 ELSEIF (ifvtri(6,kk) == i)
THEN
1656 IF (nv <= i .OR.mpolh(nv) <= zero.OR.
1657 . epolh(nv) <= zero)
GOTO 200
1658 p1=ppolh(i)+qvisc(i)
1659 p2=ppolh(nv)+qvisc(nv)
1665 ss=nx*vgrid(1,kk)+ny*vgrid(2,kk)+nz*vgrid
1670 fac=nx*nrx+ny*nry+nz*nrz
1672 IF(itagel(jel) > 0)
THEN
1674 fel(jel)=fel(jel)+(p2-p1)*area1
1675 dq(1,i)=dq(1,i)-pmean*nx*
area+p1*nrx*area1
1676 dq(2,i)=dq(2,i)-pmean*ny*
area+p1*nry*area1
1677 dq(3,i)=dq(3,i)-pmean*nz*
area+p1*nrz*area1
1678 de(i)=de(i)-pmean*ss*
area+p1*vel(jel)*area1
1679 dq(1,nv)=dq(1,nv)+pmean*nx*
area-p2*nrx*area1
1680 dq(2,nv)=dq(2,nv)+pmean*ny*
area-p2*nry*area1
1681 dq(3,nv)=dq(3,nv)+pmean*nz*
area-p2*nrz*area1
1682 de(nv)=de(nv)+pmean*ss*
area-p2*vel(jel)*area1
1684 fel(jel)=fel(jel)+(p1-p2)*area1
1685 dq(1,i)=dq(1,i)-pmean*nx*
area-p1*nrx*area1
1686 dq(2,i)=dq(2,i)-pmean*ny*
area-p1*nry*area1
1687 dq(3,i)=dq(3,i)-pmean*nz*
area-p1*nrz*area1
1688 de(i)=de(i)-pmean*ss*
area-p1*vel(jel)*area1
1689 dq(1,nv)=dq(1,nv)+pmean*nx*
area+p2*nrx*area1
1690 dq(2,nv)=dq(2,nv)+pmean*ny*
area+p2*nry*area1
1691 dq(3,nv)=dq(3,nv)+pmean*nz*
area+p2*nrz*area1
1692 de(nv)=de(nv)+pmean*ss*
area+p2*vel(jel)*area1
1696 fel(jel)=fel(jel)+(p2-p1)*area1
1698 fel(jel)=fel(jel)+(p1-p2)*area1
1700 dq(1,i)=dq(1,i)-pmean*nx*
area-p1*nx*area1
1701 dq(2,i)=dq(2,i)-pmean*ny*
area-p1*ny*area1
1702 dq(3,i)=dq(3,i)-pmean*nz*
area-p1*nz*area1
1703 de(i)=de(i)-pmean*ss*
area-p1*ss*area1
1704 dq(1,nv)=dq(1,nv)+pmean*nx*
area+p2*nx*area1
1705 dq(2,nv)=dq(2,nv)+pmean*ny*
area+p2*ny*area1
1706 dq(3,nv)=dq(3,nv)+pmean*nz*
area+p2*nz*area1
1707 de(nv)=de(nv)+pmean*ss*
area+p2*ss*area1
1720 qpolh(1,i)=qpolh(1,i)+dq(1,i)*dt1
1721 qpolh(2,i)=qpolh(2,i)+dq(2,i)*dt1
1722 qpolh(3,i)=qpolh(3,i)+dq(3,i)*dt1
1723 epolh(i)=epolh(i)+de(i)*dt1
1731 250
IF (ilvout >= 1 .AND. ipri == 0)
THEN
1733 WRITE(iout,
'(A25,I10,A31)')
' ** MONITORED VOLUME ID: ',ivolu(1),
' - FINITE VOLUME MESH UPDATE **'
1734 WRITE(iout,
'(A,I8)')
' NUMBER OF FINITE VOLUMES : ',npolh
1735 WRITE(iout,
'(A,G16.9,A17,G16.9,A1)')
' SUM VOLUME FINITE VOLUMES : ',volph,
' (VOLUME AIRBAG: ',volg,
')'
1736 WRITE(iout,
'(A,G16.9,A17,G16.9,A1)')
' SUM AREA SURFACE POLYGONS : ',areap,
' (AREA AIRBAG : ',areael,
')'
1747 amtot=amtot+mpolh(i)
1748 enint=enint+epolh(i)
1749 pmean=pmean+ppolh(i)*pvolu(i)
1756 cp=cpa+cpb*temp+cpc*temp*temp
1761 cp=cp+cpd*temp**3+cpf*temp**4
1763 IF(temp2 > zero) cp=cp+cpe/(temp*temp)
1765 cv=double_to_my_real(cp)-rmw
1766 fsav(5) =fsav(5) +mpolh(i)*temp
1767 fsav(10)=fsav(10)+mpolh(i)*double_to_my_real(cp)
1768 fsav(11)=fsav(11)+mpolh(i)*cv
1769 fsav(12)=fsav(12)+mpolh(i)*gama
1773 pmean2 = pmean / volph
1775 pdisp = pdisp + pvolu(i) * (ppolh(i) - pmean2)**2
1777 pdisp = sqrt(pdisp / volph) / pmean2
1779 injection_started = .false.
1781 injection_started = injection_started .OR. (datainj(2, iinj) > zero)
1783 IF (.NOT. injection_started)
THEN
1790 pres_av = pmean / volph
1796 cp_av = fsav(10) / amtot
1798 cv_av = fsav(11) / amtot
1800 fsav(12) = cp_av / cv_av
1802 rgas_av = cp_av - cv_av
1803 rho_av = amtot / volph
1804 fsav(5) = fsav(5) / amtot
1806 IF(ivolu(39) == 0)
THEN
1812 IF (itagel(iel) < 0)
THEN
1814 rbaghol(18,ivent)=rbaghol(18,ivent)+elfvel(iel)*elsout(iel)
1815 rbaghol(19,ivent)=rbaghol(19,ivent)-elfmass(iel)
1816 rbaghol(20,ivent)=rbaghol(20,ivent)-elfehpy(iel)
1817 rbaghol(21,ivent)=rbaghol(21,ivent)+eldmass(iel)
1818 rbaghol(22,ivent)=rbaghol(22,ivent)+eldehpy(iel)
1822 sventot=rbaghol(16,ivent)+rbaghol(17,ivent)
1823 IF(sventot <= zero) cycle
1824 rbaghol(18,ivent)=rbaghol(18,ivent)/sventot
1827 fsav(7)=fsav(7)+(rbaghol(16,ivent)+rbaghol(17,ivent))*rbaghol(18,ivent)
1828 dmout =dmout+rbaghol(21,ivent)
1829 dhout =dhout+rbaghol(22,ivent)
1831 fsav(7) =fsav(7) /
max(aoutot,em20)
1835 CALL fvinjt8_1(njet, ibagjet , rbagjet , igeo, geo, pm,
1836 . ivolu, rvolu, dmout, dhout)
1838 IF (ivolu(74) == 0)
THEN
1839 up_switch = tt-ttf >= rvolu(70) .OR. npolh <= ivolu(37)
1841 IF (ivolu(74) == 1)
THEN
1843 up_switch = ((pdisp < pdisp_old
1844 up_switch = up_switch .OR. tt-ttf >= rvolu(70)
1846 IF (ivolu(74) == 2)
THEN
1848 up_switch = ((pdisp < pdisp_old) .AND. (pdisp < rvolu(73)))
1849 up_switch = up_switch .AND. tt-ttf >= rvolu(70)
1865 IF (itagel(iel) > 0)
THEN
1866 fsav(15)=fsav(15)+elfmass(iel)
1867 fsav(16)=fsav(16)+elfehpy(iel)
1876 IF( (tt>=tanim .AND. tt<=tanim_stop) .OR.tt >= toutp.OR. nbgauge > 0 .OR.
1877 . (manim >= 4.AND.manim <= 15))
THEN
1880 uel(1:3,1:nelt)=zero
1893 DO j=ifvpadr(i),ifvpadr(i+1)-1
1895 DO k=ifvtadr(jj),ifvtadr(jj+1)-1
1897 iel=abs(ifvtri(4,kk))
1901 pel(iel) =pel(iel) +ppolh(i)*
area/elarea(iel)
1902 ELSEIF (jel < 0)
THEN
1906 IF (ifvtri(5,kk) == i)
THEN
1911 ELSEIF(ifvtri(6,kk) == i)
THEN
1920 fac=nx*nrx+ny*nry+nz*nrz
1922 pel(iel) =pel(iel) +ppolh(ii)*
area/elarea(iel)
1930 IF(prepare_anim == 1)
THEN
1933 DO j=ifvpadr(i),ifvpadr(i+1)-1
1935 DO k=ifvtadr(jj),ifvtadr(jj+1)-1
1937 iel=abs(ifvtri(4,kk))
1941 uel(1,iel)=uel(1,iel)+pu(1,i)*
area/elarea(iel)
1942 uel(2,iel)=uel(2,iel)+pu(2,i)*
area/elarea(iel)
1943 uel(3,iel)=uel(3,iel)+pu(3,i)*
area/elarea(iel)
1944 rhoel(iel)=rhoel(iel)+rpolh(i)*
area/elarea(iel)
1945 tkel(iel) =tkel(iel) +tpolh(i)*
area/elarea(iel)
1946 sspel(iel)=sspel(iel)+sqrt(gpolh(i)*ppolh(i)/rpolh(i))*
area/elarea(iel)
1947 ELSEIF (jel < 0)
THEN
1951 IF (ifvtri(5,kk) == i)
THEN
1956 ELSEIF(ifvtri(6,kk) == i)
THEN
1962 IF (nv < i)
GOTO 310
1965 fac=nx*nrx+ny*nry+nz*nrz
1967 uel(1,iel)=uel(1,iel)+pu(1,ii)*
area/elarea(iel)
1968 uel(2,iel)=uel(2,iel)+pu(2,ii)*
area/elarea(iel)
1969 uel(3,iel)=uel(3,iel)+pu(3,ii)*
area/elarea(iel)
1970 rhoel(iel)=rhoel(iel)+rpolh(ii)*
area/elarea(iel)
1971 tkel(iel) =tkel(iel) +tpolh(ii)*
area/elarea(iel)
1972 sspel(iel)=sspel(iel)+sqrt(gpolh(ii)*ppolh(ii)/rpolh(ii))*
area/elarea(iel)
1985 IF(prepare_anim == 1)
THEN
1988 IF(itagel(iel)<0)
THEN
1989 uel(1,iel)=elfvel(iel)*
norm(1,iel)
1990 uel(2,iel)=elfvel(iel)*
norm(2,iel)
1991 uel(3,iel)=elfvel(iel)*
norm(3,iel)
2036 fac1=third*elarea(iel)/area1
2037 fac2=third*elarea(iel)/area2
2038 fac3=third*elarea(iel)/area3
2039 p(n1) =p(n1) +fac1*pel(iel)
2041 p(n3) =p(n3) +fac3*pel(iel)
2044 IF(prepare_anim == 1)
THEN
2052 fac1=third*elarea(iel)/area1
2053 fac2=third*elarea(iel)/area2
2054 fac3=third*elarea(iel)/area3
2055 u(1,n1)=u(1,n1)+fac1*uel(1,iel)
2056 u(2,n1)=u(2,n1)+fac1*uel(2,iel)
2057 u(3,n1)=u(3,n1)+fac1*uel(3,iel)
2058 u(1,n2)=u(1,n2)+fac2*uel(1,iel)
2059 u(2,n2)=u(2,n2)+fac2*uel(2,iel)
2060 u(3,n2)=u(3,n2)+fac2*uel(3,iel)
2061 u(1,n3)=u(1,n3)+fac3
2062 u(2,n3)=u(2,n3)+fac3*uel(2,iel)
2063 u(3,n3)=u(3,n3)+fac3*uel(3,iel)
2064 rho(n1)=rho(n1)+fac1*rhoel(iel)
2065 rho(n2)=rho(n2)+fac2*rhoel(iel)
2066 rho(n3)=rho(n3)+fac3*rhoel(iel)
2067 tk(n1)=tk(n1)+fac1*tkel(iel)
2068 tk(n2)=tk(n2)+fac2*tkel(iel)
2069 tk(n3)=tk(n3)+fac3*tkel(iel)
2070 sspk(n1)=sspk(n1)+fac1*sspel(iel)
2071 sspk(n2)=sspk(n2)+fac2
2076 IF (ibpolh(i) /= 0)
THEN
2079 IF(brna(1,ii) == brna(4,ii).AND.brna(5,ii) == brna(8,ii))
THEN
2085 vola(jj)=vola(jj)+one_over_6*pvolu(i)
2086 pa(jj)=pa(jj)+one_over_6*ppolh(i)*pvolu(i)
2087 rhoa(jj)=rhoa(jj)+one_over_6*rpolh(i)*pvolu(i)
2088 tka(jj)=tka(jj)+one_over_6*temp*pvolu(i)
2089 sspka(jj)=sspka(jj)+one_over_6*sqrt(gpolh(i)*ppolh(i)/rpolh
2090 ua(1,jj)=ua(1,jj)+one_over_6*pu(1,i)*pvolu(i)
2091 ua(2,jj)=ua(2,jj)+one_over_6*pu(2,i)*pvolu(i)
2092 ua(3,jj)=ua(3,jj)+one_over_6*pu(3,i)*pvolu(i)
2094 ELSEIF(brna(5,ii)==brna(8,ii).AND.
2095 . brna(6,ii)==brna(8,ii).AND.
2096 . brna(7,ii)==brna(8,ii))
THEN
2100 vola(jj)=vola(jj)+one_fifth*pvolu(i)
2101 pa(jj)=pa(jj)+one_fifth*ppolh(i)*pvolu(i)
2102 rhoa(jj)=rhoa(jj)+one_fifth*rpolh(i)*pvolu(i)
2103 tka(jj)=tka(jj)+one_fifth*temp*pvolu(i)
2104 sspka(jj)=sspka(jj)+one_fifth*sqrt(gpolh(i)*ppolh(i)/rpolh(i))*pvolu(i)
2105 ua(1,jj)=ua(1,jj)+one_fifth*pu(1,i)*pvolu(i)
2106 ua(2,jj)=ua(2,jj)+one_fifth*pu(2,i)*pvolu(i)
2107 ua(3,jj)=ua(3,jj)+one_fifth*pu(3,i)*pvolu(i)
2113 vola(jj)=vola(jj)+one_over_8*pvolu(i)
2114 pa(jj)=pa(jj)+one_over_8*ppolh(i)*pvolu(i)
2115 rhoa(jj)=rhoa(jj)+one_over_8*rpolh(i)*pvolu(i)
2116 tka(jj)=tka(jj)+one_over_8*temp*pvolu(i)
2117 sspka(jj)=sspka(jj)+one_over_8*sqrt(gpolh(i)*ppolh(i)/rpolh(i))*pvolu(i)
2118 ua(1,jj)=ua(1,jj)+one_over_8*pu(1,i)*pvolu(i)
2119 ua(2,jj)=ua(2,jj)+one_over_8*pu(2,i)*pvolu(i)
2120 ua(3,jj)=ua(3,jj)+one_over_8*pu(3,i)*pvolu(i)
2128 IF(volno > zero)
THEN
2130 rhoa(i)=rhoa(i)/volno
2131 tka(i) =tka(i)/volno
2132 sspka(i) =sspka(i)/volno
2133 ua(1,i)=ua(1,i)/volno
2134 ua(2,i)=ua(2,i)/volno
2135 ua(3,i)=ua(3,i)/volno
2145 area_vent(ivent)=zero
2151 IF (itagel(iel) < 0)
THEN
2153 area_vent(ivent)=area_vent(ivent)+elarea(iel)
2154 pm_vent(ivent)=pm_vent(ivent)+fel(iel)
2161 IF (area_vent(ivent) > zero)
THEN
2162 pm_vent(ivent)=pm_vent(ivent)/area_vent(ivent)
2167 idef =ibaghol(1,ivent)
2168 idtpdef= ibaghol(11,ivent)
2169 idpdef = ibaghol(12,ivent)
2173 pdef =rbaghol(1,ivent)
2174 dtpdefi=rbaghol(4,ivent)
2175 dtpdefc=rbaghol(5,ivent)
2176 tvent =rbaghol(3,ivent)
2177 tstope =rbaghol(14,ivent)
2178 IF (idtpdef == 0)
THEN
2179 IF(pm_vent(ivent) > pdef+pext)
THEN
2180 dtpdefc = dtpdefc+dt1
2182 ELSE IF (idtpdef == 1)
THEN
2183 IF (pm_vent(ivent) > pdef+pext)
THEN
2186 IF (idpdef == 1)
THEN
2187 dtpdefc = dtpdefc+dt1
2190 ibaghol(12,ivent) = idpdef
2191 rbaghol(5,ivent) = dtpdefc
2196 titrevent(k)=ibaghol(14+k,ivent)
2197 venttitle(k:k) = achar(titrevent(k))
2199 IF(ittf==11.OR.ittf==12.OR.ittf==13)
THEN
2200 IF (idef==0.AND.pm_vent(ivent) > pdef+pext
2201 . .AND.dtpdefc > dtpdefi
2203 . .AND.tt < tstope+ttf)
THEN
2205 WRITE(iout,
'(A)')
' ** AIRBAG VENT HOLE MEMBRANE IS DEFLATED **'
2206 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
' VENT HOLE NUMBER',ivent
' '
2207 WRITE(istdo,
'(2A)')
' ** VENT HOLE MEMBRANE IS DEFLATED ',venttitle
2209 IF(idef == 0 .AND. tt > tvent+ttf.AND. tt < tstope+ttf)
THEN
2211 WRITE(iout,
'(A)')
' ** AIRBAG VENTING STARTS **'
2212 WRITE(iout,
'(3X,2(A,I10),2A)')
' MONITORED VOLUME ',ivolu(1),
' VENT HOLE NUMBER',ivent,
' ',venttitle
2213 WRITE(istdo,
'(2A)')
' ** VENTING STARTS ',venttitle
2215 IF(idef == 1 .AND. tt >= tstope+ttf)
THEN
2217 WRITE(iout,
'(A)')
' ** AIRBAG VENTING STOPS **'
2218 WRITE(iout,'(3x,2(a,i10),2a)
')' monitored volume
',IVOLU(1),' vent hole number
',IVENT,' ',VENTTITLE
2219 WRITE(ISTDO,'(2a)
') ' ** venting stops
',VENTTITLE
2222 ELSE IF(ITTF==0) THEN
2223.AND.
IF (IDEF==0PM_VENT(IVENT)>PDEF+PEXT
2224.AND.
. DTPDEFC>DTPDEFI
2225.AND.
. VOLPH>EM3*AREAP**THREE_HALF
2226.AND.
. TT<TSTOPE) THEN
2228 WRITE(IOUT,'(a)
')' ** airbag vent hole membrane is deflated **
'
2229 WRITE(IOUT,'(3x,2(a,i10),2a)
')' monitored volume
',IVOLU(1), ' vent hole number
',IVENT,' ',VENTTITLE
2230 WRITE(ISTDO,'(2a)
')' ** vent hole membrane is deflated
',VENTTITLE
2232.AND..AND.
IF(IDEF == 0 TT > TVENT TT < TSTOPE) THEN
2234 WRITE(IOUT,'(a)
') ' ** airbag venting starts **
'
2235 WRITE(IOUT,'(3x,2(a,i10),2a)
')' monitored volume
',IVOLU(1),' vent
',IVENT,' ',VENTTITLE
2236 WRITE(ISTDO,'(2a)
') ' ** venting starts
',VENTTITLE
2238.AND.
IF(IDEF == 1 TT >= TSTOPE) THEN
2240 WRITE(IOUT,'(a)
') ' ** airbag venting stops **
'
2241 WRITE(IOUT,'(3x,2(a,i10),2a)
')' monitored volume
',IVOLU(1),
2242 . ' vent hole number
',IVENT,' ',VENTTITLE
2243 WRITE(ISTDO,'(2a)
') ' ** venting stops
',VENTTITLE
2246 IBAGHOL(1,IVENT)=IDEF
2251 IF(IVOLU(39)==1) THEN
2261 FF=FEL(IEL)-PEXT*ELAREA(IEL)
2265 FVSPMD(IFV)%AAA(1,N1)=FVSPMD(IFV)%AAA(1,N1)+THIRD*FF*NRX
2266 FVSPMD(IFV)%AAA(2,N1)=FVSPMD(IFV)%AAA(2,N1)+THIRD*FF*NRY
2267 FVSPMD(IFV)%AAA(3,N1)=FVSPMD(IFV)%AAA(3,N1)+THIRD*FF*NRZ
2268 FVSPMD(IFV)%AAA(1,N2)=FVSPMD(IFV)%AAA(1,N2)+THIRD*FF*NRX
2269 FVSPMD(IFV)%AAA(2,N2)=FVSPMD(IFV)%AAA(2,N2)+THIRD*FF*NRY
2270 FVSPMD(IFV)%AAA(3,N2)=FVSPMD(IFV)%AAA(3,N2)+THIRD*FF*NRZ
2271 FVSPMD(IFV)%AAA(1,N3)=FVSPMD(IFV)%AAA(1,N3)+THIRD*FF*NRX
2272 FVSPMD(IFV)%AAA(2,N3)=FVSPMD(IFV)%AAA(2,N3)+THIRD*FF*NRY
2273 FVSPMD(IFV)%AAA(3,N3)=FVSPMD(IFV)%AAA(3,N3)+THIRD*FF*NRZ
2275 WFEXT=WFEXT+FF*VEL(IEL)*DT1
2277 FSAV(18)=FSAV(18)+WFEXT-WFEXT0
2282 !------------------------------------------------------------!
2283 ! ANIM / H3D : LOCATE POLYHEDRA CENTROIDS !
2284 !------------------------------------------------------------!
2285 !whenever output file is required
2286.AND..OR..OR.
IF((TT>=TANIM TT<=TANIM_STOP) TT>=TOUTP
2287.AND..OR.
. (TT>=H3D_DATA%TH3D TT<=H3D_DATA%TH3D_STOP)
2288.AND..OR.
. (MANIM>=4MANIM<=15)H3D_DATA%MH3D/=0)THEN
2290 !check if IH3D_FLAG ENABLES OUTPUT. OTHERWISE CALCULATION OF CENTROID IS USELESS
2291 IF(IVOLU(75)==1)THEN
2293 DO I=1,NPOLH !loop over polyhedra composing the airbag mesh
2296 DO J=IFVPADR(I),IFVPADR(I+1)-1 !loop over polygons composing the polyhedron
2298 DO K=IFVTADR(JJ),IFVTADR(JJ+1)-1 !loop over triangles composing the polygon
2317 NX= (Y2-Y1)*(Z3-Z1)-(Z2-Z1)*(Y3-Y1)
2318 NY= (Z2-Z1)*(X3-X1)-(X2-X1)*(Z3-Z1)
2319 NZ= (X2-X1)*(Y3-Y1)-(Y2-Y1)*(X3-X1)
2320 AREA=HALF*SQRT(NX*NX + NY*NY + NZ*NZ)
2326 CENTROID(1) = CENTROID(1)+ AREA*( THIRD*(X1+X2+X3) )
2327 CENTROID(2) = CENTROID(2)+ AREA*( THIRD*(Y1+Y2+Y3) )
2328 CENTROID(3) = CENTROID(3)+ AREA*( THIRD*(Z1+Z2+Z3) )
2330 ENDDO! next K (triangle)
2331 ENDDO! next J (polygon)
2333 CENTROID(1) = CENTROID(1)/DENOM
2334 CENTROID(2) = CENTROID(2)/DENOM
2335 CENTROID(3) = CENTROID(3)/DENOM
2338 CENTROID_POLH(1,I) = CENTROID(1)
2339 CENTROID_POLH(2,I) = CENTROID(2)
2340 CENTROID_POLH(3,I) = CENTROID(3)
2342 ENDDO! next I (next polyhedron)
2345 ENDIF! H3D/ANIM CRITERION
2350 IF (NBGAUGE > 0) THEN
2354 FVSPMD(IFV)%GGG(1,I)=P(I)
2355 FVSPMD(IFV)%GGG(2,I)=RHO(I)
2356 FVSPMD(IFV)%GGG(3,I)=TK(I)
2360 FVSPMD(IFV)%GGA(1,I)=PA(I)
2361 FVSPMD(IFV)%GGA(2,I)=RHOA(I)
2362 FVSPMD(IFV)%GGA(3,I)=TKA(I)
2367 IF (ALLOCATED(NODAREA)) DEALLOCATE(NODAREA)
2368 IF (ALLOCATED(TAGSURF)) DEALLOCATE(TAGSURF)
2369 IF (ALLOCATED(ICONT)) DEALLOCATE(ICONT)
2370 IF (ALLOCATED(ITAGP)) DEALLOCATE(ITAGP)
2372 IF (ALLOCATED(AREA_MAX)) DEALLOCATE(AREA_MAX)
2373 IF (ALLOCATED(DM)) DEALLOCATE(DM)
2374 IF (ALLOCATED(PNOD)) DEALLOCATE(PNOD)
2375 IF (ALLOCATED(ELAREA))DEALLOCATE(ELAREA)
2376 IF (ALLOCATED(NORM)) DEALLOCATE(NORM)
2377 IF (ALLOCATED(PAREA)) DEALLOCATE(PAREA)
2378 IF (ALLOCATED(PNORM)) DEALLOCATE(PNORM)
2379 IF (ALLOCATED(PVOLU)) DEALLOCATE(PVOLU)
2380 IF (ALLOCATED(RHOEL)) DEALLOCATE(RHOEL)
2381 IF (ALLOCATED(TKEL)) DEALLOCATE(TKEL)
2382 IF (ALLOCATED(SSPEL)) DEALLOCATE(SSPEL)
2383 IF (ALLOCATED(PU)) DEALLOCATE(PU)
2384 IF (ALLOCATED(PW)) DEALLOCATE(PW)
2385 IF (ALLOCATED(DMINI)) DEALLOCATE(DMINI)
2386 IF (ALLOCATED(DMCPA)) DEALLOCATE(DMCPA)
2387 IF (ALLOCATED(DMCPB)) DEALLOCATE(DMCPB)
2388 IF (ALLOCATED(DMCPC)) DEALLOCATE(DMCPC)
2389 IF (ALLOCATED(DMRMW)) DEALLOCATE(DMRMW)
2390 IF (ALLOCATED(ELSOUT))DEALLOCATE(ELSOUT)
2391 IF (ALLOCATED(TMP)) DEALLOCATE(TMP)
2392 IF (ALLOCATED(PORO)) DEALLOCATE(PORO)
2393 IF (ALLOCATED(VOLA)) DEALLOCATE(VOLA)
2394 IF (ALLOCATED(HMIN)) DEALLOCATE(HMIN)
2395 IF (ALLOCATED(VEL)) DEALLOCATE(VEL)
2396 IF (ALLOCATED(VNOD)) DEALLOCATE(VNOD)
2397 IF (ALLOCATED(VGRID)) DEALLOCATE(VGRID)
2398 IF (ALLOCATED(SVENT)) DEALLOCATE(SVENT)
2399 IF (ALLOCATED(XXX)) DEALLOCATE(XXX)
2400 IF (ALLOCATED(DMCPD)) DEALLOCATE(DMCPD)
2401 IF (ALLOCATED(DMCPE)) DEALLOCATE(DMCPE)
2402 IF (ALLOCATED(DMCPF)) DEALLOCATE(DMCPF)
2403 IF (ALLOCATED(PEL)) DEALLOCATE(PEL)
2404 IF (ALLOCATED(DLS)) DEALLOCATE(DLS)
2405 IF (ALLOCATED(ELDMASS)) DEALLOCATE(ELDMASS)
2406 IF (ALLOCATED(ELDEHPY)) DEALLOCATE(ELDEHPY)
2407 IF (ALLOCATED(VVV)) DEALLOCATE(VVV)