[Commits] [svn:einsteintoolkit] incoming/EOS_Omni/src/ (Rev. 14)

cott at tapir.caltech.edu cott at tapir.caltech.edu
Thu Nov 11 00:02:13 CST 2010


User: cott
Date: 2010/11/11 12:02 AM

Added:
 /EOS_Omni/src/
  EOS_Omni_MultiVarCalls.F90

Log:
 * add a multi-var call

File Changes:

Directory: /EOS_Omni/src/
=========================

File [added]: EOS_Omni_MultiVarCalls.F90
Delta lines: +84 -0
===================================================================
--- EOS_Omni/src/EOS_Omni_MultiVarCalls.F90	                        (rev 0)
+++ EOS_Omni/src/EOS_Omni_MultiVarCalls.F90	2010-11-11 06:02:12 UTC (rev 14)
@@ -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



More information about the Commits mailing list