95 SUBROUTINE eosmain(IFLAG ,NEL ,EOSTYP ,PM ,OFF ,EINT ,
96 2 RHO ,RHO0 ,MU ,MU2 ,ESPE ,
97 3 DVOL ,DF ,VNEW ,MAT ,PSH ,
98 4 PNEW ,DPDM ,DPDE ,THETA ,
99 5 BUFMAT,SIG ,MU_BAK ,MLW ,
100 6 NPF ,TF ,VAREOS ,NVAREOS ,MAT_PARAM,
101 7 BFRAC ,NVARTMP,VARTMP)
125 USE compaction_mod ,
ONLY : compaction
131 USE eosexponential_mod ,
ONLY : eosexponential
132 USE compaction2_mod ,
ONLY : compaction2
133 USE compaction_tab_mod ,
ONLY : compaction_tab
144 USE eos_param_mod ,
ONLY : analy_temp
145 USE matparam_def_mod ,
ONLY : matparam_struct_
146 USE compaction_mod ,
ONLY : compaction
147 USE compaction2_mod ,
ONLY : compaction2
148 USE compaction_tab_mod ,
ONLY : compaction_tab
149 USE eosexponential_mod ,
ONLY : eosexponential
153#include
"implicit_f.inc"
157#include "param_c.inc"
161#include "com04_c.inc"
162#include "com08_c.inc"
163#include "tabsiz_c.inc"
167 INTEGER,
INTENT(IN) :: IFLAG
168 INTEGER,
INTENT(IN) :: NEL
169 INTEGER,
INTENT(IN) :: EOSTYP
170 my_real,
INTENT(IN) :: PM(NPROPM,NUMMAT)
171 my_real,
INTENT(IN) :: OFF(NEL)
172 my_real,
INTENT(INOUT) :: EINT(NEL)
173 my_real,
INTENT(IN) :: rho(nel)
174 my_real,
INTENT(IN) :: rho0(nel)
175 my_real,
INTENT(IN) :: mu(nel)
176 my_real,
INTENT(INOUT) :: mu2(nel)
177 my_real,
INTENT(INOUT) :: espe(nel)
178 my_real,
INTENT(IN) :: dvol(nel)
179 my_real,
INTENT(IN) :: df(nel)
180 my_real,
INTENT(IN) :: vnew(nel)
181 INTEGER,
INTENT(IN) :: MAT(NEL)
182 my_real,
INTENT(INOUT) :: psh(nel)
183 my_real,
INTENT(INOUT) :: pnew(nel)
184 my_real,
INTENT(INOUT) :: dpdm(nel)
185 my_real,
INTENT(INOUT) :: dpde(nel)
186 my_real,
INTENT(INOUT) :: theta(nel)
187 my_real,
INTENT(IN) :: bufmat(sbufmat)
188 my_real,
INTENT(IN) :: sig(nel,6)
189 my_real,
INTENT(INOUT) :: mu_bak(nel)
190 INTEGER,
INTENT(IN) :: MLW
191 INTEGER,
INTENT(IN) :: NPF(SNPC)
192 my_real,
INTENT(IN) :: tf(stf)
193 my_real,
INTENT(INOUT) :: bfrac(nel)
194 INTEGER,
INTENT(IN) :: NVAREOS
195 my_real,
INTENT(INOUT) :: vareos(nvareos*nel)
196 TYPE(matparam_struct_),
INTENT(IN) :: MAT_PARAM
197 INTEGER ,
INTENT(IN) :: NVARTMP
198 INTEGER ,
DIMENSION(NEL,NVARTMP) ,
INTENT(INOUT) :: VARTMP
203 my_real :: dtemp(nel)
206 my_real :: tab_temp(nel)
214 mu2(i)=
max(zero,mu(i))**2
215 espe(i)=df(i)*eint(i)/
max(em15,vnew(i))
218 ELSEIF (iflag == 2)
THEN
221 IF (vnew(i) > zero)
THEN
222 mu2(i)=
max(zero,mu(i))**2
224 espe(i) = df(i) * eint(i)
238 1 iflag ,nel ,pmin ,off ,eint ,mu ,mu2,
239 2 espe ,dvol ,df ,vnew ,psh ,
240 3 pnew ,dpdm ,dpde ,mat_param%EOS)
247 1 iflag ,nel ,pmin ,off ,eint ,mu ,mu2,
248 2 espe ,dvol ,df ,vnew ,rho0,
249 3 pnew ,dpdm ,dpde ,psh ,
257 1 iflag ,nel ,pmin ,off ,eint ,mu ,mu2,
258 2 espe ,dvol ,df ,vnew ,psh ,
259 3 pnew ,dpdm ,dpde ,vareos ,nvareos,mat_param%EOS)
266 1 iflag ,nel ,pmin ,off ,eint ,mu ,mu2,
267 2 espe ,dvol ,df ,vnew ,
268 3 pnew ,dpdm ,dpde ,mat_param%EOS)
274 tab_temp(1:nel) = theta(1:nel)
276 1 iflag ,nel ,pmin ,off ,eint ,rho ,rho0 ,
277 2 espe ,dvol ,pnew ,dpdm ,dpde,
278 3 tab_temp ,bufmat ,mat_param%EOS)
285 1 iflag , nel ,off ,eint ,mu ,
286 2 espe , dvol ,df ,vnew ,psh ,
287 3 pnew , dpdm ,dpde ,mat_param%EOS)
294 1 iflag ,nel ,off ,eint ,mu ,
295 2 espe ,dvol ,df ,vnew ,psh ,
296 3 pnew ,dpdm ,dpde ,mat_param%EOS )
303 1 iflag ,nel ,pmin,off ,eint ,mu ,
305 3 pnew ,dpdm ,dpde ,mat_param%EOS)
312 1 iflag ,nel ,pmin ,off ,eint ,mu ,
313 2 espe ,dvol ,df ,vnew ,rho0 ,psh ,
314 3 pnew ,dpdm ,dpde ,mat_param%EOS)
321 1 iflag , nel ,pmin ,off ,eint ,mu ,mu2,
322 2 espe , dvol ,df ,vnew ,psh ,
323 3 pnew , dpdm ,dpde ,mat_param%EOS)
330 1 iflag , nel ,pmin ,off ,eint ,mu ,
331 2 espe , dvol ,df ,vnew ,psh ,
332 3 pnew , dpdm ,dpde ,mat_param%EOS)
339 1 iflag ,nel ,pm ,off ,eint ,mu ,mu2,
340 2 espe ,dvol ,df ,vnew ,mat ,psh ,
341 3 pnew ,dpdm ,dpde ,mat_param,
342 4 vareos ,nvareos ,dt1 ,rho0 ,bfrac)
349 1 iflag ,nel ,pmin ,off ,eint ,mu ,mu2,
351 3 pnew ,dpdm ,dpde ,mu_bak,
359 1 iflag , nel ,pmin ,off ,eint ,mu ,
360 2 espe , dvol ,vnew ,psh ,
361 3 pnew , dpdm ,dpde ,mat_param%EOS)
367 1 iflag ,nel ,pm ,off , eint ,mu ,mu2,
368 2 espe ,dvol ,df ,vnew , mat ,psh ,
376 pold(i) = -third*(sig(i,1)+sig(i,2)+sig(i,3))
379 1 iflag ,nel ,pmin ,off ,eint ,mu ,mu2,
380 2 espe ,dvol ,df ,vnew ,psh ,rho0,rho,
381 3 pnew ,dpdm ,dpde ,tab_temp,pold ,mat_param%EOS)
388 1 iflag , nel ,pmin ,off ,eint ,mu ,
389 2 espe , dvol ,df ,vnew ,psh ,
390 3 pnew , dpdm ,dpde ,
391 4 npf , tf ,snpc ,stf ,mat_param%EOS)
398 1 iflag ,nel ,pmin ,off ,eint ,mu ,
399 2 dvol ,vnew ,psh ,pnew ,dpdm,
400 3 dpde ,mat_param%EOS, pm(104,mat(1)), pm(32,mat(1)))
407 1 iflag ,nel ,off ,eint ,
409 3 pnew ,dpdm ,dpde ,tt ,
417 1 iflag ,nel ,pmin ,off ,eint ,mu ,
419 3 pnew ,dpdm ,dpde ,nvareos, vareos ,
420 4 npf ,tf ,snpc ,stf ,
428 1 iflag ,nel ,pmin ,off ,eint ,
429 2 dvol ,psh ,dt1 ,rho ,rho0 ,
431 4 nvareos,vareos,nvartmp,vartmp,
439 IF(iflag == 0)
RETURN
449 IF(off(i) == one .AND. vnew(i) > zero)
THEN
450 theta(i) = tab_temp(i)
457 cp = pm(69,mat(1)) / rho0(1)
461 IF(off(i) == one .AND. vnew(i) > zero)
THEN
462 dtemp(i) = (pnew(i)+psh(i))*dvol(i)/cv
470 IF(pnew(i) > pmin .AND. vnew(i) > zero)
THEN
471 dtemp(i) = -off(i)*(theta(i)*dpde(i)*df(i))*dvol(i)/vnew(i)
478 isfluid = mat_param%eos%isfluid
479 if(isfluid == 0 .AND. analy_temp == 0)
then
483 theta(i) = theta(i) + dtemp(i)
485 theta(i) =
max(zero,theta(i))
490 theta(i) = theta(i) + dtemp(i)
491 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)