73 SUBROUTINE eosmain(IFLAG ,NEL ,EOSTYP ,PM ,OFF ,EINT ,
74 2 RHO ,RHO0 ,MU ,MU2 ,ESPE ,
75 3 DVOL ,DF ,VNEW ,MAT ,PSH ,
76 4 PNEW ,DPDM ,DPDE ,THETA ,
77 5 BUFMAT,SIG ,MU_BAK ,MLW ,
78 6 NPF ,TF ,VAREOS ,NVAREOS ,MAT_PARAM,
79 7 BFRAC ,NVARTMP,VARTMP)
81 use eosexponential_mod
119 USE matparam_def_mod ,
ONLY : matparam_struct_
120 USE compaction_mod ,
ONLY : compaction
121 USE compaction2_mod ,
ONLY : compaction2
122 USE compaction_tab_mod ,
ONLY : compaction_tab
126#include "implicit_f.inc"
130#include "param_c.inc"
134#include "com04_c.inc"
135#include "com08_c.inc"
136#include "tabsiz_c.inc"
140 INTEGER MAT(NEL),IFLAG, EOSTYP, NEL, MLW, NVAREOS
141 my_real PM(NPROPM,NUMMAT),BUFMAT(SBUFMAT),OFF(NEL),EINT(NEL),RHO(NEL),RHO0(NEL),MU(NEL),MU2(NEL),ESPE(NEL),DVOL(NEL),
142 . DF(NEL),VNEW(NEL),PSH(NEL),PNEW(NEL),(NEL),DPDE(NEL),THETA(NEL),MU_BAK(NEL),
143 . SIG(NEL,6),VAREOS(NVAREOS*NEL)
144 my_real,
INTENT(INOUT) :: BFRAC(NEL)
145 INTEGER,
INTENT(IN)::NPF(SNPC)
146 my_real,
INTENT(IN)::tf(stf)
147 TYPE(matparam_struct_),
INTENT(IN) ::
148 my_real :: DTEMP(NEL)
151 my_real :: tab_temp(nel)
152 integer ,
intent(in) :: nvartmp
153 integer ,
dimension(nel,nvartmp) ,
intent(inout) :: vartmp
163 mu2(i)=
max(zero,mu(i))**2
164 espe(i)=df(i)*eint(i)/
max(em15,vnew(i))
167 ELSEIF (iflag == 2)
THEN
170 IF (vnew(i) > zero)
THEN
171 mu2(i)=
max(zero,mu(i))**2
173 espe(i) = df(i) * eint(i)
185 1 iflag ,nel ,pm ,off ,eint ,mu ,mu2,
186 2 espe ,dvol ,df ,vnew ,mat ,psh ,
194 1 iflag ,nel ,pm ,off ,eint ,mu ,mu2,
195 2 espe ,dvol ,df ,vnew ,mat ,rho0,
196 3 pnew ,dpdm ,dpde ,psh ,
204 1 iflag ,nel ,pm ,off ,eint ,mu ,mu2,
205 2 espe ,dvol ,df ,vnew ,mat ,psh ,
206 3 pnew ,dpdm ,dpde ,vareos ,nvareos)
213 1 iflag ,nel ,pm ,off ,eint ,mu ,mu2,
214 2 espe ,dvol ,df ,vnew ,mat ,
221 tab_temp(1:nel) = theta(1:nel)
223 1 iflag ,nel ,pm ,off ,eint ,rho ,rho0 ,
224 2 espe ,dvol ,mat ,pnew ,dpdm ,dpde,
232 1 iflag ,nel ,pm ,off ,eint ,mu ,
233 2 espe ,dvol ,df ,vnew ,mat ,psh ,
241 1 iflag ,nel ,pm ,off ,eint ,mu ,
242 2 espe ,dvol ,df ,vnew ,mat ,psh ,
250 1 iflag ,nel ,pm ,off ,eint ,mu ,
251 2 dvol ,vnew ,mat ,psh ,
259 1 iflag ,nel ,pm ,off ,eint ,mu ,
260 2 espe ,dvol ,df ,vnew ,mat ,psh ,
268 1 iflag ,nel ,pm ,off ,eint ,mu ,mu2,
269 2 espe ,dvol ,df ,vnew ,mat ,psh ,
277 1 iflag ,nel ,pm ,off ,eint ,mu ,
278 2 espe ,dvol ,df ,vnew ,mat ,psh ,
286 1 iflag ,nel ,pm ,off ,eint ,mu ,mu2,
287 2 espe ,dvol ,df ,vnew ,mat ,psh ,
288 3 pnew ,dpdm ,dpde ,mat_param,
289 4 vareos ,nvareos ,nummat,npropm ,dt1 ,rho0 ,bfrac)
296 1 iflag ,nel ,pm ,off ,eint ,mu ,mu2,
298 3 pnew ,dpdm ,dpde ,mu_bak,
299 4 npropm,nummat,mat_param%EOS)
306 1 iflag ,nel ,pm ,off ,eint ,mu ,
307 2 espe ,dvol ,vnew ,mat ,psh ,
314 1 iflag ,nel ,pm ,off , eint ,mu ,mu2,
315 2 espe ,dvol ,df ,vnew , mat ,psh ,
323 1 iflag ,nel ,pm ,off ,eint ,mu ,mu2,
324 2 espe ,dvol ,df ,vnew ,mat ,psh ,
325 3 pnew ,dpdm ,dpde ,tab_temp,sig)
332 1 iflag ,nel ,pm ,off ,eint ,mu ,
333 2 espe ,dvol ,df ,vnew ,mat ,psh ,
342 1 iflag ,nel ,pm ,off ,eint ,mu ,
343 2 dvol ,vnew ,mat ,psh ,pnew ,dpdm,
351 1 iflag ,nel ,pm ,off ,eint ,
352 2 dvol ,vnew ,mat ,psh ,
353 3 pnew ,dpdm ,dpde ,tt ,
361 1 iflag ,nel ,pm ,off ,eint ,mu ,
363 3 pnew ,dpdm ,dpde ,mu_bak,
364 4 npf ,tf ,snpc ,stf ,npropm,nummat,
372 1 iflag ,nel ,pm ,off ,eint ,
373 2 dvol ,mat ,psh ,dt1 ,rho ,rho0 ,
374 3 pnew ,dpdm ,dpde ,mu_bak,
375 4 npropm,nummat,nvareos,vareos,nvartmp,vartmp,
383 IF(iflag == 0)
RETURN
393 IF(off(i) == one .AND. vnew(i) > zero)
THEN
394 theta(i) = tab_temp(i)
401 cp = pm(69,mat(1)) / rho0(1)
405 IF(off(i) == one .AND. vnew(i) > zero)
THEN
406 dtemp(i) = (pnew(i)+psh(i))*dvol(i)/cv
414 IF(off(i) == one .AND. vnew(i) > zero)
THEN
415 dtemp(i) = -(theta(i)*dpde(i)*df(i))*dvol(i)/vnew(i)
422 isfluid = mat_param%eos%isfluid
426 IF(dtemp(i) > zero)
THEN
427 theta(i) = theta(i) + dtemp(i)
429 theta(i) =
max(zero,theta(i))
434 theta(i) = theta(i) + dtemp(i)
435 theta(i) =
max(zero,theta(i))
subroutine eosmain(iflag, nel, eostyp, pm, off, eint, rho, rho0, mu, mu2, espe, dvol, df, vnew, mat, psh, pnew, dpdm, dpde, theta, bufmat, sig, mu_bak, mlw, npf, tf, vareos, nvareos, mat_param, bfrac, nvartmp, vartmp)