28 SUBROUTINE jwlun51 (TIME,XL,TBURN,UPARAM,DD,MU,MUP1,
29 . VOLUME,DVOL,V1OLD,EINT1,VISCMAX,
31 . RHO,RHO10,MAS1,SSP1, QA,QB,BFRAC)
35#include "implicit_f.inc"
39 my_real,
INTENT(IN) :: time,xl,tburn,dd,
44 my_real,
INTENT(INOUT) :: ssp1, p1, dvol, rho, bfrac, mu, viscmax, q1
49 AA,BB,,VDET,,B1,B2,W1,R1,R2,R1M
62 ibfrac= nint(uparam(68))
64 IF(r1 == zero) r1=ep30
65 IF(r2 == zero) r2=ep30
75 IF(ibfrac/=1 .AND. time > -tburn) bfrac = vdet*(time+tburn)*two_third/xl
76 IF(ibfrac/=2) bfrac =
max( bfrac , bhe * (one - rho10/rho) )
79 ELSEIF(bfrac > one)
THEN
94 p0 = b1*(one-w1/r1m)*er1m + b2*(one-w1/r2m)*er2m
96 dpdmu = b1*er1m*( (-w1*mup1/r1) + r1m - w1) + b2*er2m*( (-w1*mup1/r2) + r2m - w1) + w1*eint1/volume +p1*w1
97 dpdmu = abs(dpdmu) / mup1
98 ssp_reacted = sqrt(dpdmu/rho10)
99 ssp_unreacted = sqrt(c11/rho10)
100 ssp1 =
max(bfrac*ssp_reacted,(one-bfrac)*ssp_unreacted)
104 viscmax = rho*(qal*
max(zero,dd) + qbl*ssp1)
105 q1 = viscmax*
max(zero,dd)
106 bb = half*(volume-v1old)
109 p1 = ( p0-pext + aa*eint1 )
117 psol =
max(psol,psol_min)
121 pgas =
max(pgas,pgas_min)
123 p1 = bfrac*pgas + (one-bfrac)*psol
128 dpdmu = b1*er1m*( (-w1*mup1/r1) + r1m - w1) + b2*er2m*( (-w1*mup1/r2) + r2m - w1) + w1*eint1/volume +(p1+pext)*w1
129 dpdmu = abs(dpdmu) / mup1
130 ssp_reacted = sqrt(dpdmu/rho10)
131 ssp_unreacted = sqrt(c11/rho10)
132 ssp1 =
max(bfrac*ssp_reacted,(one-bfrac)*ssp_unreacted)
144 . V1,V1OLD,MU1,MUP1,EINT1,
146 . RHO1,RHO10,MAS1,SSP1,DVDP1,DPDV1,BFRAC,V10, FLAG)
150#include "implicit_f.inc"
154 my_real,
INTENT(IN) :: v1,v1old,
157 . uparam(*),bfrac, v10
158 INTEGER,
INTENT(IN) :: FLAG
159 my_real,
INTENT(INOUT) :: RHO1, MU1, EINT1, P1, SSP1, DVDP1,DPDV1
164 my_real aa,bb,p0,vdet,bhe,b1,b2,w1,r1,r2,r1m,er1m,r2m,er2m,
165 . mup1,dvdp1i,c11,c01,ssp_products,ssp_unreacted,
166 . psol, pgas, psol_min, pgas_min,dpdmu,dpdv1_reacted,dpdv1_unreacted
177 ibfrac = nint(uparam(68))
193 IF (flag == 1) eint1 = eint1 - (p1old+pext+pext)*bb
194 p0 = b1*(one-w1/r1m)*er1m + b2*(one-w1/r2m)*er2m
196 p1 = ( p0-pext + aa*eint1 ) / (one+aa*bb)
198 p1 = p0 - pext + aa * eint1
206 psol =
max(psol,psol_min)
210 pgas =
max(pgas,pgas_min)
212 p1 = bfrac*pgas + (one-bfrac)*psol
213 IF (flag == 1) eint1 = eint1 - p1*bb
214 IF (flag == 1) eint1 =
max(eint1, zero)
219 dpdmu = b1*er1m*( (-w1*mup1/r1) + r1m - w1) + b2*er2m*( (-w1*mup1/r2) + r2m - w1)
221 dpdmu = abs(dpdmu) / mup1
222 ssp_products = sqrt(dpdmu/rho10)
223 ssp_unreacted = sqrt(c11/rho10)
224 ssp1 = (one-bfrac)*ssp_unreacted + bfrac*ssp_products
229 dpdv1_reacted = -dpdmu*mup1/v1
230 dpdv1_unreacted = -c11*mup1/v1
231 dpdv1 = bfrac*dpdv1_reacted + (one-bfrac)*dpdv1_unreacted
233 IF(abs(dpdv1)<em20)
THEN
subroutine jwl51(uparam, v1, v1old, mu1, mup1, eint1, p1old, pext, p1, pm1, rho1, rho10, mas1, ssp1, dvdp1, dpdv1, bfrac, v10, flag)
subroutine jwlun51(time, xl, tburn, uparam, dd, mu, mup1, volume, dvol, v1old, eint1, viscmax, q1, pext, p1, pm1, rho, rho10, mas1, ssp1, qa, qb, bfrac)