28 SUBROUTINE m5law(PM ,SIG ,EINT ,RHO ,PSH ,
29 1 P0 ,TBURN ,BFRAC ,VOLN ,DELTAX,
31 3 ER1V ,ER2V ,WDR1V ,WDR2V ,W1 ,
32 4 RHO0 ,AMU ,NUMMAT,TT, DPDE)
36#include "implicit_f.inc"
45 INTEGER,
INTENT(IN) :: NUMMAT
46 INTEGER,
INTENT(IN) :: (*)
47 INTEGER,
INTENT(IN) :: NEL
48 my_real,
INTENT(IN) :: TT
49 my_real,
INTENT(IN) :: pm(npropm,nummat)
50 my_real,
INTENT(INOUT) :: sig(nel,6)
51 my_real,
INTENT(IN) :: eint(nel)
52 my_real,
INTENT(IN) :: rho(nel)
53 my_real,
INTENT(INOUT) :: psh(*)
54 my_real,
INTENT(INOUT) :: p0(*)
55 my_real,
INTENT(IN) :: tburn(mvsiz)
56 my_real,
INTENT(INOUT) :: bfrac(mvsiz)
57 my_real,
INTENT(IN) :: voln(mvsiz)
58 my_real,
INTENT(IN) :: deltax(nel)
59 my_real,
INTENT(INOUT) :: ssp(nel)
60 my_real,
INTENT(INOUT) :: df(*)
61 my_real,
INTENT(IN) :: amu(*)
62 my_real,
INTENT(INOUT) :: er1v(nel), er2v(nel), wdr1v(nel), wdr2v(nel), w1(nel), rho0(nel)
63 my_real,
INTENT(INOUT) :: dpde(nel)
68 my_real ,B, R1, R2, W, VDET, PSH_PARAM, BULK, P0_PARAM, RHO0_PARAM
70 my_real BFRAC1, BFRAC2, BHE
71 my_real r1v(mvsiz), r2v(mvsiz), dr1v(mvsiz)
79 rho0_param = pm( 1,mx)
90 ibfrac = nint(pm(41,mx))
102 df(i) = rho0(i)/rho(i)
109 IF(bfrac(i) < one)
THEN
113 IF(ibfrac /= 1 .AND. tt > tb) bfrac1=vdet*(tt-tb)/three_half/deltax(i)
114 IF(ibfrac /= 2)bfrac2=bhe*(one-df(i))
115 bfrac(i) =
max(bfrac1,bfrac2)
116 IF(bfrac(i)<em04) bfrac(i)=zero
117 IF(bfrac(i)>one)
THEN
125 r1v(i) = a*w/(r1*df(i))
126 r2v(i) = b*w/(r2*df(i))
129 dr1v(i) = w*eint(i)/
max(em20,voln(i))
130 er1v(i) = exp(-r1*df(i))
131 er2v(i) = exp(-r2*df(i))
135 IF (bulk == zero)
THEN
138 p(i) = p0(i) + (wdr1v(i)*er1v(i)+wdr2v(i)*er2v(i)+dr1v(i))
143 p(i) = (one - bfrac(i))*(p0(i)+bulk*amu(i)) + bfrac(i)*(wdr1v(i)*er1v(i)+wdr2v(i)*er2v(i)+dr1v(i
147 p(i) =
max(zero, p(i)) - psh(i)
155 ! sound speed calculation
157 ssp(i) = a*er1v(i)*( (-w/df(i)/r1) + r1*df(i) - w)
158 . + b*er2v(i)*( (-w/df(i)/r2) + r2*df(i) - w)
159 . + dr1v(i) + (p(i) + psh(i))*w
160 ssp(i) = ssp(i) * df(i)
162 IF (bulk == zero)
THEN
164 ssp(i) = sqrt(abs(ssp(i))/rho0(i))
165 ssp(i) =
max(ssp(i),vdet*(one-bfrac(i)))
169 ssp(i) = bfrac(i) * (ssp(i) / rho0
170 ssp(i) = sqrt(abs(ssp(i)))
subroutine m5law(pm, sig, eint, rho, psh, p0, tburn, bfrac, voln, deltax, mat, nel, ssp, df, er1v, er2v, wdr1v, wdr2v, w1, rho0, amu, nummat, tt, dpde)