42 1 IFLAG,NEL ,PMIN ,OFF ,EINT ,MU ,
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) :: PMIN, OFF(NEL) ,MU(NEL), DVOL(NEL) ,(NEL)
79 my_real,
INTENT(INOUT) :: PSH(NEL),PNEW(NEL) ,DPDM(NEL),DPDE(NEL),EINT(NEL)
80 TYPE(eos_param_),
INTENT(IN) :: EOS_STRUCT
89 k0 = eos_struct%UPARAM(1)
90 p0 = eos_struct%UPARAM(2)
91 psh(1:nel) = eos_struct%PSH
92 k1 = eos_struct%UPARAM(3)
96 dpdm(i) = k0*exp( k1*log(1+mu(i)) )/(one+mu(i))
98 pnew(i) = k0/k1 * (exp(k1*log(one+mu(i))) - one ) + p0
99 pnew(i) =
max(pnew(i),pmin)*off(i)
100 pnew(i) = pnew(i)-psh(i)
103 ELSEIF(iflag == 1)
THEN
105 pnew(i) = k0/k1 * (exp(k1*log(one+mu(i))) - one ) + p0
106 pnew(i) =
max(pnew(i),pmin)*off(i)
107 eint(i) = eint(i) - half*dvol(i)*(pnew(i)+psh(i))
108 pnew(i) = pnew(i)-psh(i)
112 ELSEIF(iflag == 2)
THEN
114 IF (vnew(i) > zero)
THEN
115 pnew(i) = k0/k1 * (exp(k1*log(1+mu(i))) - one ) + p0
116 dpdm(i) = k0*exp( k1*log(1+mu(i)) )/(one+mu(i))
118 pnew(i) =
max(pnew(i),pmin)*off(i)
119 pnew(i) = pnew(i)-psh(i)
subroutine murnaghan(iflag, nel, pmin, off, eint, mu, dvol, vnew, psh, pnew, dpdm, dpde, eos_struct)