42 1 IFLAG,NEL ,PMIN ,OFF ,EINT ,MU ,MU2 ,
43 2 ESPE ,DVOL ,DF ,VNEW ,PSH ,
44 3 PNEW ,DPDM ,DPDE ,EOS_STRUCT)
48 USE constant_mod ,
ONLY : zero, em15, half, one, two, three, three100
49 USE eos_param_mod ,
ONLY : eos_param_
77 INTEGER,
INTENT(IN) :: IFLAG, NEL
78 my_real,
INTENT(IN) :: OFF(NEL),MU(NEL),MU2(NEL),ESPE(NEL),DVOL(NEL),DF(NEL),VNEW(NEL)
79 my_real,
INTENT(INOUT) :: PSH(NEL),PNEW(NEL) ,DPDM(NEL), DPDE(NEL),EINT(NEL)
80 my_real,
INTENT(IN) :: pmin
81 TYPE(eos_param_),
INTENT(IN) :: EOS_STRUCT
86 my_real :: P0,GAMMA,E0,AA, BB, DVV, PP, PSTAR
90 gamma = eos_struct%UPARAM(1)
91 p0 = eos_struct%UPARAM(2)
92 pstar = eos_struct%UPARAM(3)
93 psh(1:nel) = eos_struct%PSH
98 pp = -gamma*pstar-psh(i) + (gamma-one)*(one+mu(i))*espe(i)
99 dpdm(i) = (gamma-one) *espe(i)+(gamma-one)*(one+mu(i))*df(i)*df(i)*(pp+psh(i) )
100 dpde(i) = (gamma-one)*(one+mu(i))
101 pnew(i) =
max(pp,pmin-psh(i))*off(i)
104 ELSEIF(iflag == 1)
THEN
106 aa = -gamma*pstar-psh(i)
107 bb = (gamma-one)*(one+mu(i))
108 dpde(i) = (gamma-one)*(one+mu(i))
109 dvv = half*dvol(i)*df(i) /
max(em15,vnew(i))
110 pnew(i) = (aa+bb*(espe(i)-psh(i) *dvv))/(one+bb*dvv)
111 pnew(i) =
max(pnew(i),pmin-psh(i) )*off(i)
112 eint(i) = eint(i) - half*dvol(i)*(pnew(i)+psh(i) )
115 ELSEIF(iflag == 2)
THEN
117 IF (vnew(i) > zero)
THEN
118 pnew(i) = (gamma-one)*(one+mu(i))*espe(i) - gamma*pstar
121 dpdm(i) = (gamma-one)*(espe(i)+pnew(i)*df(i))
122 dpde(i) = (gamma-one)*(one+mu(i))
123 pnew(i) = pnew(i)-psh(i)
subroutine stiffgas(iflag, nel, pmin, off, eint, mu, mu2, espe, dvol, df, vnew, psh, pnew, dpdm, dpde, eos_struct)