42 1 IFLAG , NEL ,OFF ,EINT ,MU ,
43 2 ESPE , DVOL ,DF ,VNEW ,PSH ,
44 3 PNEW , DPDM ,DPDE ,EOS_STRUCT)
67 USE eos_param_mod ,
ONLY : eos_param_
77 INTEGER,
INTENT(IN) :: IFLAG
78 INTEGER,
INTENT(IN) :: NEL
79 my_real,
INTENT(INOUT) :: DPDM(NEL),DPDE(NEL),PSH(NEL) ,EINT(NEL),PNEW(NEL)
80 my_real,
INTENT(IN) :: off(nel) ,mu(nel)
81 my_real,
INTENT(IN) :: espe(nel) ,dvol(nel) ,df(nel), vnew(nel)
82 TYPE(eos_param_),
INTENT(IN) :: EOS_STRUCT
87 my_real :: GM1, DVV, PP,BB_,RHO0,DENOM,BB
90 bb_ = eos_struct%UPARAM(1)
91 gm1 = eos_struct%UPARAM(2)
92 rho0 = eos_struct%UPARAM(3)
93 psh(1:nel) = eos_struct%PSH
97 denom = one-bb_*rho0*(one+mu(i))
98 pp = espe(i)*gm1*(mu(i)+one)/denom
99 dpde(i) = gm1*(one+mu(i))/denom
100 dpdm(i) = gm1*espe(i)/denom + pp/denom*bb_*rho0 + pp*df(i)*df(i)*dpde(i)
101 pnew(i) =
max(pp,zero)*off(i)
102 pnew(i) = pnew(i)-psh(i)
105 ELSEIF(iflag == 1)
THEN
107 denom = one-bb_*rho0*(one+mu(i))
108 bb = gm1*(one+mu(i))/denom
110 dvv = half*dvol(i)*df(i) /
max(em15,vnew(i))
111 pnew(i) = (bb*espe(i))/(one+bb*dvv)
112 pnew(i) = pnew(i)*off(i)
113 eint(i) = eint(i) - half*dvol(i)*pnew(i)
114 pnew(i) = pnew(i)-psh(i)
117 ELSEIF(iflag == 2)
THEN
119 IF (vnew(i) > zero)
THEN
120 denom = one-bb_*rho0*(one+mu(i))
121 pp = espe(i)*gm1*(mu(i)+one)/denom
122 dpde(i) = gm1*(one+mu(i))/denom
123 dpdm(i) = gm1*espe(i)/denom + pp/denom*bb_*rho0 + pp*df(i)*df(i)*dpde(i)
subroutine noble_abel(iflag, nel, off, eint, mu, espe, dvol, df, vnew, psh, pnew, dpdm, dpde, eos_struct)