44 SUBROUTINE sesame(IFLAG , NEL, PMIN ,OFF ,EINT ,RHO ,RHO0 ,
45 2 ESPE , DVOL, PNEW ,DPDM ,DPDE ,THETA ,
50 USE eos_param_mod ,
ONLY : eos_param_
72#include "implicit_f.inc"
77#include "vect01_c.inc"
79#include "tabsiz_c.inc"
84 my_real :: BUFMAT(SBUFMAT),
85 . off(nel) , eint(nel), rho(nel) , rho0(nel),
86 . espe(nel), dvol(nel), pnew(nel),
87 . dpdm(nel), dpde(nel), theta(nel)
88 TYPE(eos_param_),
INTENT(IN) :: EOS_STRUCT
92 INTEGER :: I, NR, NT, IDR, IDT, IDP, IDE
93 my_real :: ESPEM, PRES, DTDE, DPDR, DPDT
98 nr = eos_struct%IPARAM(1)
99 nt = eos_struct%IPARAM(2)
100 idr = eos_struct%IPARAM(3)
107 espem = espe(i)/rho0(i)
109 CALL mintp_re(bufmat(idr),nr,bufmat(idt),nt,bufmat(ide),rho(i),theta(i),espem,dtde)
110 CALL mintp1_rt(bufmat(idr),nr,bufmat(idt),nt,bufmat(idp),rho(i),theta(i),pres,dpdr,dpdt)
111 dpdm(i) = rho0(i)*dpdr
112 dpde(i) = dpdt*dtde/rho0(i)
113 pnew(i) =
max(pres,pmin)*off(i)
116 ELSEIF(iflag == 1)
THEN
121 espem=espe(i)/rho0(i)
122 CALL mintp_re(bufmat(idr),nr,bufmat(idt),nt,bufmat(ide),rho(i),theta(i),espem,dtde)
123 CALL mintp_rt(bufmat(idr),nr,bufmat(idt),nt,bufmat(idp),rho(i),theta(i),pnew(i),dpdr
124 pnew(i)=
max(pnew(i),pmin)*off(i)
125 eint(i)= eint(i)-half*dvol(i)*pnew(i)
128 ELSEIF(iflag == 2)
THEN
133 espem = espe(i)/rho0(i)
134 CALL mintp_re(bufmat(idr),nr,bufmat(idt),nt,bufmat(ide),rho(i),theta(i),espem,dtde)
135 CALL mintp1_rt(bufmat(idr),nr,bufmat(idt),nt,bufmat(idp),rho(i),theta(i),pres,dpdr,dpdt)
136 dpdm(i) = rho0(i)*dpdr
137 dpde(i) = dpdt*dtde/rho0(i)
138 pnew(i) =
max(pres,pmin)*off(i)
subroutine sesame(iflag, nel, pmin, off, eint, rho, rho0, espe, dvol, pnew, dpdm, dpde, theta, bufmat, eos_struct)