32 1 IFLAG , NEL ,PM ,OFF , EINT ,MU ,MU2 ,
33 2 ESPE , DVOL ,DF ,VNEW , MAT ,PSH ,
34 3 PNEW , DPDM ,DPDE ,MAT_PARAM ,
35 4 VAREOS, NVAREOS,NPROPM,NUMMAT ,DT1 ,RHO0 ,BFRAC)
61 USE matparam_def_mod,
ONLY : matparam_struct_
62 use constant_mod ,
only : zero, one, zep07, three100, em04
76 INTEGER,
INTENT(IN) :: NVAREOS,NUMMAT,NPROPM
77 INTEGER MAT(NEL), IFLAG, NEL
78 my_real,
INTENT(IN) :: PM(NPROPM,NUMMAT),OFF(NEL),MU(NEL),MU2(NEL),DVOL(NEL),DF(NEL),VNEW(NEL)
79 my_real,
INTENT(INOUT) :: PNEW(NEL),DPDM(NEL),DPDE(NEL),EINT(NEL),RHO0(NEL),ESPE(NEL)
80 my_real,
INTENT(INOUT) :: vareos(nel,nvareos),bfrac(nel)
81 my_real,
INTENT(IN) :: dt1
82 TYPE(matparam_struct_),
INTENT(IN) :: MAT_PARAM
87 my_real :: bulk,P0,PSH,DD,EG,Gr,CC,ALPHA,FSCALE_B,FSCALE_P,FSCALE_G,FSCALE_RHO, C1,C2
90 my_real :: total_bfrac
91 my_real :: dpdm_gas, dpdm_powder
92 my_real :: mass,ps,pg,rho_s, rho_g,pold
94 INTEGER :: funcb,funcg
98 my_real,
EXTERNAL :: finter
103 ! dydx : f
'(x) = dy/dx
104 ! IFUNC(J): FUNCTION INDEX
105 ! J : FIRST(J=1), SECOND(J=2) .. FUNCTION USED FOR THIS LAW
106 ! NPF,TF : FUNCTION PARAMETER
111 ! --- STAGGERED SCHEME IFLG=0
113 BULK = MAT_PARAM%EOS%UPARAM(01)
114 P0 = MAT_PARAM%EOS%UPARAM(02)
115 PSH = MAT_PARAM%EOS%UPARAM(03)
116 DD = MAT_PARAM%EOS%UPARAM(04)
117 EG = MAT_PARAM%EOS%UPARAM(05)
118 Gr = MAT_PARAM%EOS%UPARAM(06)
119 CC = MAT_PARAM%EOS%UPARAM(07)
120 ALPHA = MAT_PARAM%EOS%UPARAM(08)
121 FSCALE_B = MAT_PARAM%EOS%UPARAM(09)
122 FSCALE_P = MAT_PARAM%EOS%UPARAM(10)
123 FSCALE_G = MAT_PARAM%EOS%UPARAM(11)
124 FSCALE_RHO = MAT_PARAM%EOS%UPARAM(12)
125 C1 = MAT_PARAM%EOS%UPARAM(13)
126 C2 = MAT_PARAM%EOS%UPARAM(14)
127 funcb = MAT_PARAM%EOS%FUNC(1)
128 funcg = MAT_PARAM%EOS%FUNC(2)
129 compac = one - zep07 !1-0.07 = 0.93
134 EINT(I) = EG*RHO0(I)*VNEW(I)
136 VAREOS(I,2) = ZERO !PG
137 VAREOS(I,3) = RHO0(I)/compac !RHO_S
138 VAREOS(I,4) = ZERO !RHO_G
139 VAREOS(I,5) = P0 !POLD
140 VAREOS(I,6) = ZERO !F(t_old)
141 VAREOS(I,7) = RHO0(I)*VNEW(I) !Mass0
147 !--------------------------------!
149 !--------------------------------!
150 RHO(I) = RHO0(I) * (ONE + MU(I))
151 MASS = RHO(I)*VNEW(I)
158 !--------------------------------------------------------------------!
159 ! SOUND SPEED DERIVATIVE !
160 ! DPDM ! dP/dmu total derivative !
161 ! dPdE ! partial derivative (where E=Eint/V0 , and rho0V0=rho.V) !
162 !--------------------------------------------------------------------!
163 TMP = (one+mu(i))*rho0(i)/DD
164 TMP2 = (one+mu(i)) ; TMP2=TMP2*TMP2
165 DPDM_gas = EG*exp(TMP)*(one+TMP) + Pg/TMP2*(one+mu(i))*exp(TMP)
167 DPDM(I) = TOTAL_BFRAC * DPDM_gas + (one-TOTAL_BFRAC)*DPDM_powder !total derivative of mixture
168 dPdE(I) = TOTAL_BFRAC * (one+mu(i)*TMP) !partial derivative of mixture
171 ELSEIF(IFLAG == 1) THEN
173 ELSEIF (IFLAG == 2) THEN
175 IF (VNEW(I) > ZERO) THEN
177 DPDM(I) = zero !total derivative
178 DPDE(I) = zero !partial derivative
subroutine powder_burn(iflag, nel, pm, off, eint, mu, mu2, espe, dvol, df, vnew, mat, psh, pnew, dpdm, dpde, mat_param, vareos, nvareos, npropm, nummat, dt1, rho0, bfrac)