29 2 DVOL ,VNEW ,MAT ,PSH ,
57#include "implicit_f.inc"
66#include "vect01_c.inc"
71 INTEGER (NEL), IFLAG, NEL
75 . vnew(nel) ,pnew(nel) ,dpdm(nel),
77 my_real,
INTENT(INOUT) :: psh(nel)
82 my_real :: P0,K0,K1,PC
90 psh(1:nel) = pm(88,mx)
94 dpdm(i) = k0*exp( k1*log(1+mu(i)) )/(one+mu(i))
96 pnew(i) = k0/k1 * (exp(k1*log(one+mu(i))) - one ) + p0
97 pnew(i) =
max(pnew(i),pc)*off(i)
98 pnew(i) = pnew(i)-psh(i)
101 ELSEIF(iflag == 1)
THEN
105 psh(1:nel) = pm(88,mx)
109 pnew(i) = k0/k1 * (exp(k1*log(one+mu(i))) - one ) + p0
110 pnew(i) =
max(pnew(i),pc)*off(i)
111 eint(i) = eint(i) - half*dvol(i)*(pnew(i)+psh(i))
112 pnew(i) = pnew(i)-psh(i)
116 ELSEIF(iflag == 2)
THEN
124 IF (vnew(i) > zero)
THEN
125 pnew(i) = k0/k1 * (exp(k1*log(1+mu(i))) - one ) + p0
126 dpdm(i) = k0*exp( k1*log(1+mu(i)) )/(one+mu(i)) !total derivative
128 pnew(i) =
max(pnew(i),pc)*off(i)
129 pnew(i) = pnew(i)-psh(i)
subroutine murnaghan(iflag, nel, pm, off, eint, mu, dvol, vnew, mat, psh, pnew, dpdm, dpde)