aboutsummaryrefslogtreecommitdiff
path: root/src/GRHydro_HLLE.F90
diff options
context:
space:
mode:
Diffstat (limited to 'src/GRHydro_HLLE.F90')
-rw-r--r--src/GRHydro_HLLE.F90110
1 files changed, 86 insertions, 24 deletions
diff --git a/src/GRHydro_HLLE.F90 b/src/GRHydro_HLLE.F90
index ee6c0ad..474a2aa 100644
--- a/src/GRHydro_HLLE.F90
+++ b/src/GRHydro_HLLE.F90
@@ -50,6 +50,37 @@ subroutine GRHydro_HLLE(CCTK_ARGUMENTS)
CCTK_INT :: type_bits, trivial, not_trivial
+ ! save memory when MP is not used
+ CCTK_INT :: GRHydro_UseGeneralCoordinates
+ TARGET gaa, gab, gac, gbb, gbc, gcc
+ TARGET gxx, gxy, gxz, gyy, gyz, gzz
+ TARGET betaa, betab, betac
+ TARGET betax, betay, betaz
+ CCTK_REAL, DIMENSION(:,:,:), POINTER :: g11, g12, g13, g22, g23, g33
+ CCTK_REAL, DIMENSION(:,:,:), POINTER :: beta1, beta2, beta3
+
+ if (GRHydro_UseGeneralCoordinates(cctkGH).ne.0) then
+ g11 => gaa
+ g12 => gab
+ g13 => gac
+ g22 => gbb
+ g23 => gbc
+ g33 => gcc
+ beta1 => betaa
+ beta2 => betab
+ beta3 => betac
+ else
+ g11 => gxx
+ g12 => gxy
+ g13 => gxz
+ g22 => gyy
+ g23 => gyz
+ g33 => gzz
+ beta1 => betax
+ beta2 => betay
+ beta3 => betaz
+ end if
+
if (flux_direction == 1) then
call SpaceMask_GetTypeBits(type_bits, "Hydro_RiemannProblemX")
call SpaceMask_GetStateBits(trivial, "Hydro_RiemannProblemX", &
@@ -104,26 +135,26 @@ subroutine GRHydro_HLLE(CCTK_ARGUMENTS)
!!$ left and right points.
if (flux_direction == 1) then
- avg_beta = 0.5d0 * (betaa(i+xoffset,j+yoffset,k+zoffset) + &
- betaa(i,j,k))
+ avg_beta = 0.5d0 * (beta1(i+xoffset,j+yoffset,k+zoffset) + &
+ beta1(i,j,k))
else if (flux_direction == 2) then
- avg_beta = 0.5d0 * (betab(i+xoffset,j+yoffset,k+zoffset) + &
- betab(i,j,k))
+ avg_beta = 0.5d0 * (beta2(i+xoffset,j+yoffset,k+zoffset) + &
+ beta2(i,j,k))
else if (flux_direction == 3) then
- avg_beta = 0.5d0 * (betac(i+xoffset,j+yoffset,k+zoffset) + &
- betac(i,j,k))
+ avg_beta = 0.5d0 * (beta3(i+xoffset,j+yoffset,k+zoffset) + &
+ beta3(i,j,k))
else
call CCTK_WARN(0, "Flux direction not x,y,z")
end if
avg_alp = 0.5 * (alp(i,j,k) + alp(i+xoffset,j+yoffset,k+zoffset))
- gxxh = 0.5d0 * (gaa(i+xoffset,j+yoffset,k+zoffset) + gaa(i,j,k))
- gxyh = 0.5d0 * (gab(i+xoffset,j+yoffset,k+zoffset) + gab(i,j,k))
- gxzh = 0.5d0 * (gac(i+xoffset,j+yoffset,k+zoffset) + gac(i,j,k))
- gyyh = 0.5d0 * (gbb(i+xoffset,j+yoffset,k+zoffset) + gbb(i,j,k))
- gyzh = 0.5d0 * (gbc(i+xoffset,j+yoffset,k+zoffset) + gbc(i,j,k))
- gzzh = 0.5d0 * (gcc(i+xoffset,j+yoffset,k+zoffset) + gcc(i,j,k))
+ gxxh = 0.5d0 * (g11(i+xoffset,j+yoffset,k+zoffset) + g11(i,j,k))
+ gxyh = 0.5d0 * (g12(i+xoffset,j+yoffset,k+zoffset) + g12(i,j,k))
+ gxzh = 0.5d0 * (g13(i+xoffset,j+yoffset,k+zoffset) + g13(i,j,k))
+ gyyh = 0.5d0 * (g22(i+xoffset,j+yoffset,k+zoffset) + g22(i,j,k))
+ gyzh = 0.5d0 * (g23(i+xoffset,j+yoffset,k+zoffset) + g23(i,j,k))
+ gzzh = 0.5d0 * (g33(i+xoffset,j+yoffset,k+zoffset) + g33(i,j,k))
avg_det = SPATIAL_DETERMINANT(gxxh,gxyh,gxzh,\
gyyh,gyzh,gzzh)
@@ -427,6 +458,37 @@ subroutine GRHydro_HLLE_Tracer(CCTK_ARGUMENTS)
CCTK_INT :: type_bits, trivial, not_trivial
+ ! save memory when MP is not used
+ CCTK_INT :: GRHydro_UseGeneralCoordinates
+ TARGET gaa, gab, gac, gbb, gbc, gcc
+ TARGET gxx, gxy, gxz, gyy, gyz, gzz
+ TARGET betaa, betab, betac
+ TARGET betax, betay, betaz
+ CCTK_REAL, DIMENSION(:,:,:), POINTER :: g11, g12, g13, g22, g23, g33
+ CCTK_REAL, DIMENSION(:,:,:), POINTER :: beta1, beta2, beta3
+
+ if (GRHydro_UseGeneralCoordinates(cctkGH).ne.0) then
+ g11 => gaa
+ g12 => gab
+ g13 => gac
+ g22 => gbb
+ g23 => gbc
+ g33 => gcc
+ beta1 => betaa
+ beta2 => betab
+ beta3 => betac
+ else
+ g11 => gxx
+ g12 => gxy
+ g13 => gxz
+ g22 => gyy
+ g23 => gyz
+ g33 => gzz
+ beta1 => betax
+ beta2 => betay
+ beta3 => betaz
+ end if
+
if (flux_direction == 1) then
call SpaceMask_GetTypeBits(type_bits, "Hydro_RiemannProblemX")
call SpaceMask_GetStateBits(trivial, "Hydro_RiemannProblemX", &
@@ -467,26 +529,26 @@ subroutine GRHydro_HLLE_Tracer(CCTK_ARGUMENTS)
!!$ left and right points.
if (flux_direction == 1) then
- avg_beta = 0.5d0 * (betaa(i+xoffset,j+yoffset,k+zoffset) + &
- betaa(i,j,k))
+ avg_beta = 0.5d0 * (beta1(i+xoffset,j+yoffset,k+zoffset) + &
+ beta1(i,j,k))
else if (flux_direction == 2) then
- avg_beta = 0.5d0 * (betab(i+xoffset,j+yoffset,k+zoffset) + &
- betab(i,j,k))
+ avg_beta = 0.5d0 * (beta2(i+xoffset,j+yoffset,k+zoffset) + &
+ beta2(i,j,k))
else if (flux_direction == 3) then
- avg_beta = 0.5d0 * (betac(i+xoffset,j+yoffset,k+zoffset) + &
- betac(i,j,k))
+ avg_beta = 0.5d0 * (beta3(i+xoffset,j+yoffset,k+zoffset) + &
+ beta3(i,j,k))
else
call CCTK_WARN(0, "Flux direction not x,y,z")
end if
avg_alp = 0.5 * (alp(i,j,k) + alp(i+xoffset,j+yoffset,k+zoffset))
- gxxh = 0.5d0 * (gaa(i+xoffset,j+yoffset,k+zoffset) + gaa(i,j,k))
- gxyh = 0.5d0 * (gab(i+xoffset,j+yoffset,k+zoffset) + gab(i,j,k))
- gxzh = 0.5d0 * (gac(i+xoffset,j+yoffset,k+zoffset) + gac(i,j,k))
- gyyh = 0.5d0 * (gbb(i+xoffset,j+yoffset,k+zoffset) + gbb(i,j,k))
- gyzh = 0.5d0 * (gbc(i+xoffset,j+yoffset,k+zoffset) + gbc(i,j,k))
- gzzh = 0.5d0 * (gcc(i+xoffset,j+yoffset,k+zoffset) + gcc(i,j,k))
+ gxxh = 0.5d0 * (g11(i+xoffset,j+yoffset,k+zoffset) + g11(i,j,k))
+ gxyh = 0.5d0 * (g12(i+xoffset,j+yoffset,k+zoffset) + g12(i,j,k))
+ gxzh = 0.5d0 * (g13(i+xoffset,j+yoffset,k+zoffset) + g13(i,j,k))
+ gyyh = 0.5d0 * (g22(i+xoffset,j+yoffset,k+zoffset) + g22(i,j,k))
+ gyzh = 0.5d0 * (g23(i+xoffset,j+yoffset,k+zoffset) + g23(i,j,k))
+ gzzh = 0.5d0 * (g33(i+xoffset,j+yoffset,k+zoffset) + g33(i,j,k))
avg_det = SPATIAL_DETERMINANT(gxxh,gxyh,gxzh,\
gyyh,gyzh,gzzh)