1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
#include "cctk.h"
#include "cctk_Parameters.h"
#include "cctk_Arguments.h"
#include "cctk_Functions.h"
! eoskey:
! 1 --- polytropic EOS
! 2 --- gamma-law EOS
! 3 --- hybrid EOS
! 4 --- finite-T microphysical NSE EOS
subroutine EOS_Omni_EOS_short(eoskey,keytemp,rf_precision,npoints,&
rho,eps,temp,ye,press,entropy,cs2,dedt,dpderho,dpdrhoe,munu,&
keyerr,anyerr)
use EOS_Omni_Module
implicit none
DECLARE_CCTK_PARAMETERS
CCTK_INT, intent(in) :: eoskey,keytemp,npoints
CCTK_INT, intent(out) :: keyerr(npoints)
CCTK_INT, intent(out) :: anyerr
CCTK_REAL, intent(in) :: rf_precision
CCTK_REAL, intent(in) :: rho(npoints),ye(npoints)
CCTK_REAL, intent(inout) :: eps(npoints), temp(npoints)
CCTK_REAL, intent(out) :: press(npoints)
CCTK_REAL, intent(inout) :: entropy(npoints)
CCTK_REAL, intent(out) :: cs2(npoints)
CCTK_REAL, intent(out) :: dedt(npoints)
CCTK_REAL, intent(out) :: dpderho(npoints)
CCTK_REAL, intent(out) :: dpdrhoe(npoints)
CCTK_REAL, intent(out) :: munu(npoints)
! local vars
integer :: i
character(256) :: warnstring
! temporary vars for nuc_eos
real*8 :: xrho,xye,xtemp,xenr,xent
real*8 :: xprs,xmunu,xcs2
real*8 :: xdedt,xdpderho,xdpdrhoe
if(eoskey.ne.4) then
call CCTK_WARN(0,"EOS_Omni_EOS_short currently does not work for this eoskey")
endif
anyerr = 0
keyerr(:) = 0
do i=1,npoints
xrho = rho(i) * inv_rho_gf
xtemp = temp(i)
xye = ye(i)
xenr = eps(i) * inv_eps_gf
xent = entropy(i)
call nuc_eos_short(xrho,xtemp,xye,xenr,xprs,&
xent,xcs2,xdedt,xdpderho,xdpdrhoe,xmunu,&
keytemp,keyerr(i),rf_precision)
if(keyerr(i).ne.0) then
anyerr = 1
endif
if(keytemp.eq.1.or.keytemp.eq.2) then
eps(i) = xenr * eps_gf
else if(keytemp.eq.2) then
eps(i) = xenr * eps_gf
temp(i) = xtemp
else
temp(i) = xtemp
endif
press(i) = xprs * press_gf
entropy(i) = xent
cs2(i) = xcs2
dedt(i) = xdedt * eps_gf
dpderho(i) = xdpderho * press_gf * inv_eps_gf
dpdrhoe(i) = xdpdrhoe * press_gf * inv_rho_gf
munu(i) = xmunu
enddo
end subroutine EOS_Omni_EOS_short
|