From 64a5845dbf97e93e6bda276b0b046bfcd9a9afb2 Mon Sep 17 00:00:00 2001 From: cott Date: Thu, 11 Nov 2010 06:02:12 +0000 Subject: * add a multi-var call git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinEOS/EOS_Omni/EOS_Omni@14 8e189c6b-2ab8-4400-aa02-70a9cfce18b9 --- src/EOS_Omni_MultiVarCalls.F90 | 84 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/EOS_Omni_MultiVarCalls.F90 (limited to 'src') 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 -- cgit v1.2.3