42 1 IFLAG ,NEL ,OFF ,EINT ,MU ,
43 2 ESPE ,DVOL ,DF ,VNEW ,PSH ,
44 3 PNEW ,DPDM ,DPDE ,EOS_STRUCT)
49 USE eos_param_mod ,
ONLY : eos_param_
50 USE eos_param_mod ,
ONLY : eos_param_
78 INTEGER,
INTENT(IN) :: IFLAG, NEL
79 my_real,
INTENT(INOUT) :: EINT(NEL), DPDM(NEL), DPDE(NEL), PNEW(NEL), PSH(NEL)
80 my_real,
INTENT(IN) :: OFF(NEL),MU(NEL),ESPE(NEL),DVOL(NEL),DF(NEL),VNEW(NEL)
81 TYPE(eos_param_),
INTENT(IN) :: EOS_STRUCT
86 my_real :: P0,GAMMA,T0,E0,BB,,PP
91 gamma = eos_struct%UPARAM(1)
92 p0 = eos_struct%UPARAM(2)
93 t0 = eos_struct%UPARAM
95 psh(1:nel) = eos_struct%PSH
99 pp = (gamma-one)*(one+mu(i))*espe(i)
100 dpdm(i) = (gamma-one)*(espe(i)+pp*df(i))
101 dpde(i) = (gamma-one)*(one+mu(i))
102 pnew(i) = (
max(pp,zero)-psh(i))*off(i)
105 ELSEIF(iflag == 1)
THEN
107 bb = (gamma-one)*(one+mu(i))
109 dvv = half*dvol(i)*df(i) /
max(em15,vnew(i))
110 pnew(i) = bb*espe(i) / (one+bb*dvv)
111 pnew(i) = (
max(pnew(i),zero)-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 pp = (gamma-one)*(one+mu(i))*espe(i) - psh(i)
119 dpdm(i) = (gamma-one)*(espe(i)+(pp+psh(i))*df(i))
120 dpde(i) = (gamma-one)*(one+mu(i))
subroutine idealgas(iflag, nel, off, eint, mu, espe, dvol, df, vnew, psh, pnew, dpdm, dpde, eos_struct)