aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcott <cott@8e189c6b-2ab8-4400-aa02-70a9cfce18b9>2010-11-11 06:02:12 +0000
committercott <cott@8e189c6b-2ab8-4400-aa02-70a9cfce18b9>2010-11-11 06:02:12 +0000
commit64a5845dbf97e93e6bda276b0b046bfcd9a9afb2 (patch)
tree096e1130563f8493cbcadd23cc420e48b2cf3dc6 /src
parent0c741000273f456e94a0ba3f29c3a5adb8f0f139 (diff)
* add a multi-var call
git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinEOS/EOS_Omni/EOS_Omni@14 8e189c6b-2ab8-4400-aa02-70a9cfce18b9
Diffstat (limited to 'src')
-rw-r--r--src/EOS_Omni_MultiVarCalls.F9084
1 files changed, 84 insertions, 0 deletions
diff --git a/src/EOS_Omni_MultiVarCalls.F90 b/src/EOS_Omni_MultiVarCalls.F90
new file mode 100644
index 0000000..8880fa8
--- /dev/null
+++ b/src/EOS_Omni_MultiVarCalls.F90
@@ -0,0 +1,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(out) :: 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
+ 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