aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcott <cott@c83d129a-5a75-4d5a-9c4d-ed3a5855bf45>2012-02-09 01:03:16 +0000
committercott <cott@c83d129a-5a75-4d5a-9c4d-ed3a5855bf45>2012-02-09 01:03:16 +0000
commit0a5f2247d543da932fe3a1459be8e44a369dc8e0 (patch)
tree83e3293001b3491a194e9f79eeb27d8d6476696d /src
parentf419a8fba9ea693f86fd59e05b4c58bdc3547814 (diff)
make EOS change work with MP
git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinEvolve/GRHydro/trunk@313 c83d129a-5a75-4d5a-9c4d-ed3a5855bf45
Diffstat (limited to 'src')
-rw-r--r--src/GRHydro_EoSChangeGamma.F9056
1 files changed, 53 insertions, 3 deletions
diff --git a/src/GRHydro_EoSChangeGamma.F90 b/src/GRHydro_EoSChangeGamma.F90
index 2820c1b..fb075e2 100644
--- a/src/GRHydro_EoSChangeGamma.F90
+++ b/src/GRHydro_EoSChangeGamma.F90
@@ -148,6 +148,12 @@ subroutine GRHydro_EoSChangeK(CCTK_ARGUMENTS)
implicit none
+ ! save memory when MP is not used
+ ! TARGET has to be before DECLARE_CCTK_ARGUMENTS for gcc 4.1
+ TARGET gaa, gab, gac, gbb, gbc, gcc
+ TARGET gxx, gxy, gxz, gyy, gyz, gzz
+ TARGET lvel, vel
+
DECLARE_CCTK_ARGUMENTS
DECLARE_CCTK_PARAMETERS
@@ -158,6 +164,11 @@ subroutine GRHydro_EoSChangeK(CCTK_ARGUMENTS)
CCTK_REAL, dimension(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)) :: Q
+ ! save memory when MP is not used
+ CCTK_INT :: GRHydro_UseGeneralCoordinates
+ CCTK_REAL, DIMENSION(:,:,:), POINTER :: g11, g12, g13, g22, g23, g33
+ CCTK_REAL, DIMENSION(:,:,:,:), POINTER :: vup
+
!!$ Set up the fluid constants
! begin EOS Omni vars
integer :: n,keytemp,anyerr,keyerr(1)
@@ -174,12 +185,16 @@ subroutine GRHydro_EoSChangeK(CCTK_ARGUMENTS)
local_Gamma = 1.0d0 + xpress/xeps
local_K = xpress
+ call CCTK_INFO("Adjusting EOS via K change!")
+
if (abs(local_Gamma - 2.d0) < 1.d-10) then
rho = -0.5d0/local_k+sqrt(0.25d0/local_k**2+(rho+initial_k*rho**2)/local_k)
else if (abs(local_Gamma - 3.d0) < 1.d-10) then
+ call CCTK_WARN(0, "This part of the code is not tested!")
+
!!$ This code is probably just wrong. We have never used it anyway.
Q = -9.d0 * local_k**2 * rho * (2.d0 + 3.d0 * initial_k * rho**2) + &
sqrt(local_k**3 * (32.d0 + 81.d0 * local_k * rho**2 * &
@@ -193,11 +208,46 @@ subroutine GRHydro_EoSChangeK(CCTK_ARGUMENTS)
else
call CCTK_WARN(0, "EoSChangeK only knows how to do Gamma=2 or 3!")
end if
-
+
press = local_k * rho**local_gamma
- eps = local_k / (local_gamma - 1.d0) * rho**(local_gamma-1)
+ eps = local_k / (local_gamma - 1.d0) * rho**(local_gamma-1.0d0)
+
+ ! save memory when MP is not used
+ if (GRHydro_UseGeneralCoordinates(cctkGH).ne.0) then
+ g11 => gaa
+ g12 => gab
+ g13 => gac
+ g22 => gbb
+ g23 => gbc
+ g33 => gcc
+ vup => lvel
+ else
+ g11 => gxx
+ g12 => gxy
+ g13 => gxz
+ g22 => gyy
+ g23 => gyz
+ g33 => gzz
+ vup => vel
+ end if
+
+ do k = 1, cctk_lsh(3)
+ do j = 1, cctk_lsh(2)
+ do i = 1, cctk_lsh(1)
+
+ det = SPATIAL_DETERMINANT(g11(i,j,k),g12(i,j,k),g13(i,j,k),\
+ g22(i,j,k),g23(i,j,k),g33(i,j,k))
+ call prim2conpolytype(GRHydro_polytrope_handle,g11(i,j,k),g12(i,j,k),&
+ g13(i,j,k),g22(i,j,k),g23(i,j,k),g33(i,j,k),&
+ det, dens(i,j,k),sx(i,j,k),sy(i,j,k),sz(i,j,k),&
+ tau(i,j,k),rho(i,j,k),velx(i,j,k),vely(i,j,k),velz(i,j,k),&
+ eps(i,j,k),press(i,j,k),w_lorentz(i,j,k))
+
+ end do
+ end do
+ end do
+
- call Primitive2ConservativePolyCells(CCTK_ARGUMENTS)
end subroutine GRHydro_EoSChangeK