28 SUBROUTINE idealgas(IFLAG ,NEL ,PM ,OFF ,EINT ,MU ,
29 2 ESPE ,DVOL ,DF ,VNEW ,MAT ,PSH ,
57#include "implicit_f.inc"
66#include "vect01_c.inc"
71 INTEGER MAT(NEL), IFLAG, NEL
72 my_real PM(NPROPM,NUMMAT),
73 . off(nel) ,eint(nel) ,mu(nel) ,
74 . espe(nel) ,dvol(nel) ,df(nel) ,
75 . vnew(nel) ,pnew(nel) ,dpdm(nel),
77 my_real,
INTENT(INOUT) :: psh(nel)
82 :: P0,,T0,E0,SPH,BB,DVV,PP
91 psh(1:nel) = pm(88,mx)
95 pp = (gamma-one)*(one+mu(i))*espe(i)
96 dpdm(i) = (gamma-one)*(espe(i)+pp*df(i))
97 dpde(i) = (gamma-one)*(one+mu(i))
98 pnew(i) = (
max(pp,zero)-psh
101 ELSEIF(iflag == 1)
THEN
106 psh(1:nel) = pm(88,mx)
111 bb = (gamma-one)*(one+mu(i))
113 dvv = half*dvol(i)*df(i) /
max(em15,vnew(i))
114 pnew(i) = bb*espe(i) / (one+bb*dvv)
115 pnew(i) = (
max(pnew(i),zero)-psh(i))*off(i)
116 eint(i) = eint(i) - half*dvol(i)*(pnew(i)+psh(i))
119 ELSEIF (iflag == 2)
THEN
124 psh(1:nel) = pm(88,mx)
128 IF (vnew(i) > zero)
THEN
129 pp = (gamma-one)*(one+mu(i))*espe(i) - psh
130 dpdm(i) = (gamma-one)*(espe(i)+(pp+psh(i))*df(i))
131 dpde(i) = (gamma-one)*(one+mu(i))
subroutine idealgas(iflag, nel, pm, off, eint, mu, espe, dvol, df, vnew, mat, psh, pnew, dpdm, dpde)