aboutsummaryrefslogtreecommitdiff
path: root/src/GRHydro_ReconstructPoly.F90
diff options
context:
space:
mode:
authorrhaas <rhaas@c83d129a-5a75-4d5a-9c4d-ed3a5855bf45>2013-07-06 18:10:28 +0000
committerrhaas <rhaas@c83d129a-5a75-4d5a-9c4d-ed3a5855bf45>2013-07-06 18:10:28 +0000
commite89135a8b7c2073f8e547400e192ff4a6d4829d2 (patch)
tree7983c4cd81fcdb44b945b97e4df3d0a01bff0ca7 /src/GRHydro_ReconstructPoly.F90
parent1868b94aa42e4d750d324a8ecdf08908df43acb1 (diff)
GRHydro: add option to switch to oPPM on a given refinement level
When reconstruction method is enhanced PPM, this change allows using old PPM on one refinement level, whereas the rest of the reflevels will use enhanced PPM. It is only for hydro, but could be extended to MHD also. From: abdik <abdik@tapir.caltech.edu> git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinEvolve/GRHydro/trunk@545 c83d129a-5a75-4d5a-9c4d-ed3a5855bf45
Diffstat (limited to 'src/GRHydro_ReconstructPoly.F90')
-rw-r--r--src/GRHydro_ReconstructPoly.F9037
1 files changed, 28 insertions, 9 deletions
diff --git a/src/GRHydro_ReconstructPoly.F90 b/src/GRHydro_ReconstructPoly.F90
index 9f30cb7..1e3a5b8 100644
--- a/src/GRHydro_ReconstructPoly.F90
+++ b/src/GRHydro_ReconstructPoly.F90
@@ -52,6 +52,8 @@ subroutine ReconstructionPolytype(CCTK_ARGUMENTS)
DECLARE_CCTK_PARAMETERS
DECLARE_CCTK_FUNCTIONS
+ logical :: apply_enhanced_ppm
+
integer :: nx, ny, nz, i, j, k, itracer
logical, dimension(:,:,:), allocatable :: trivial_rp
@@ -109,6 +111,14 @@ subroutine ReconstructionPolytype(CCTK_ARGUMENTS)
call SpaceMask_GetStateBits(not_trivialz, "Hydro_RiemannProblemZ", &
&"not_trivial")
+ ! if use_enhanced_ppm, allow old PPM on one level
+ if (GRHydro_oppm_reflevel .eq. (-1) .or. &
+ GRHydro_reflevel .ne. GRHydro_oppm_reflevel) then
+ apply_enhanced_ppm = use_enhanced_ppm .ne. 0
+ else
+ apply_enhanced_ppm = .false.
+ end if
+
nx = cctk_lsh(1)
ny = cctk_lsh(2)
nz = cctk_lsh(3)
@@ -329,7 +339,8 @@ subroutine ReconstructionPolytype(CCTK_ARGUMENTS)
!$OMP PARALLEL DO PRIVATE(i, j, k)
do k = GRHydro_stencil, nz - GRHydro_stencil + 1
do j = GRHydro_stencil, ny - GRHydro_stencil + 1
- call SimplePPM_1d(GRHydro_eos_handle,1,nx,CCTK_DELTA_SPACE(1),&
+ call SimplePPM_1d(apply_enhanced_ppm,&
+ GRHydro_eos_handle,1,nx,CCTK_DELTA_SPACE(1),&
rho(:,j,k),velx(:,j,k),vely(:,j,k),velz(:,j,k),eps(:,j,k),&
press(:,j,k),rhominus(:,j,k),velxminus(:,j,k),velyminus(:,j,k),&
velzminus(:,j,k),epsminus(:,j,k),rhoplus(:,j,k),&
@@ -356,7 +367,8 @@ subroutine ReconstructionPolytype(CCTK_ARGUMENTS)
!$OMP PARALLEL DO PRIVATE(j, k)
do k = GRHydro_stencil, nz - GRHydro_stencil + 1
do j = GRHydro_stencil, ny - GRHydro_stencil + 1
- call SimplePPM_tracer_1d(nx,CCTK_DELTA_SPACE(1),rho(:,j,k), &
+ call SimplePPM_tracer_1d(apply_enhanced_ppm,&
+ nx,CCTK_DELTA_SPACE(1),rho(:,j,k), &
velx(:,j,k),vely(:,j,k),velz(:,j,k), &
tracer(:,j,k,:),tracerminus(:,j,k,:),tracerplus(:,j,k,:), &
press(:,j,k))
@@ -368,7 +380,8 @@ subroutine ReconstructionPolytype(CCTK_ARGUMENTS)
!$OMP PARALLEL DO PRIVATE(j, k)
do k = GRHydro_stencil, nz - GRHydro_stencil + 1
do j = GRHydro_stencil, ny - GRHydro_stencil + 1
- call SimplePPM_tracer_1d(nx,CCTK_DELTA_SPACE(1),rho(:,j,k), &
+ call SimplePPM_tracer_1d(apply_enhanced_ppm,&
+ nx,CCTK_DELTA_SPACE(1),rho(:,j,k), &
velx(:,j,k),vely(:,j,k),velz(:,j,k), &
Y_e(:,j,k),Y_e_minus(:,j,k),Y_e_plus(:,j,k), &
press(:,j,k))
@@ -440,7 +453,8 @@ subroutine ReconstructionPolytype(CCTK_ARGUMENTS)
!$OMP PARALLEL DO PRIVATE(i, j, k)
do k = GRHydro_stencil, nz - GRHydro_stencil + 1
do j = GRHydro_stencil, nx - GRHydro_stencil + 1
- call SimplePPM_1d(GRHydro_eos_handle,1,ny,CCTK_DELTA_SPACE(2),&
+ call SimplePPM_1d(apply_enhanced_ppm,&
+ GRHydro_eos_handle,1,ny,CCTK_DELTA_SPACE(2),&
rho(j,:,k),vely(j,:,k),velz(j,:,k),velx(j,:,k),eps(j,:,k),&
press(j,:,k),rhominus(j,:,k),velyminus(j,:,k),velzminus(j,:,k),&
velxminus(j,:,k),epsminus(j,:,k),rhoplus(j,:,k),&
@@ -467,7 +481,8 @@ subroutine ReconstructionPolytype(CCTK_ARGUMENTS)
!$OMP PARALLEL DO PRIVATE(j, k)
do k = GRHydro_stencil, nz - GRHydro_stencil + 1
do j = GRHydro_stencil, nx - GRHydro_stencil + 1
- call SimplePPM_tracer_1d(ny,CCTK_DELTA_SPACE(2),rho(j,:,k), &
+ call SimplePPM_tracer_1d(apply_enhanced_ppm,&
+ ny,CCTK_DELTA_SPACE(2),rho(j,:,k), &
vely(j,:,k),velz(j,:,k),velx(j,:,k), &
tracer(j,:,k,:),tracerminus(j,:,k,:),tracerplus(j,:,k,:), &
press(j,:,k))
@@ -479,7 +494,8 @@ subroutine ReconstructionPolytype(CCTK_ARGUMENTS)
!$OMP PARALLEL DO PRIVATE(j, k)
do k = GRHydro_stencil, nz - GRHydro_stencil + 1
do j = GRHydro_stencil, nx - GRHydro_stencil + 1
- call SimplePPM_tracer_1d(ny,CCTK_DELTA_SPACE(2),rho(j,:,k), &
+ call SimplePPM_tracer_1d(apply_enhanced_ppm,&
+ ny,CCTK_DELTA_SPACE(2),rho(j,:,k), &
velx(j,:,k),vely(j,:,k),velz(j,:,k), &
Y_e(j,:,k),Y_e_minus(j,:,k),Y_e_plus(j,:,k), &
press(j,:,k))
@@ -551,7 +567,8 @@ subroutine ReconstructionPolytype(CCTK_ARGUMENTS)
!$OMP PARALLEL DO PRIVATE(i, j, k)
do k = GRHydro_stencil, ny - GRHydro_stencil + 1
do j = GRHydro_stencil, nx - GRHydro_stencil + 1
- call SimplePPM_1d(GRHydro_eos_handle,1,nz,CCTK_DELTA_SPACE(3),&
+ call SimplePPM_1d(apply_enhanced_ppm,&
+ GRHydro_eos_handle,1,nz,CCTK_DELTA_SPACE(3),&
rho(j,k,:),velz(j,k,:),velx(j,k,:),vely(j,k,:),eps(j,k,:),&
press(j,k,:),rhominus(j,k,:),velzminus(j,k,:),velxminus(j,k,:),&
velyminus(j,k,:),epsminus(j,k,:),rhoplus(j,k,:),&
@@ -579,7 +596,8 @@ subroutine ReconstructionPolytype(CCTK_ARGUMENTS)
do k = GRHydro_stencil, ny - GRHydro_stencil + 1
do j = GRHydro_stencil, nx - GRHydro_stencil + 1
- call SimplePPM_tracer_1d(nz,CCTK_DELTA_SPACE(3),rho(j,k,:), &
+ call SimplePPM_tracer_1d(apply_enhanced_ppm,&
+ nz,CCTK_DELTA_SPACE(3),rho(j,k,:), &
velz(j,k,:),velx(j,k,:),vely(j,k,:), &
tracer(j,k,:,:),tracerminus(j,k,:,:),tracerplus(j,k,:,:), &
press(j,k,:))
@@ -591,7 +609,8 @@ subroutine ReconstructionPolytype(CCTK_ARGUMENTS)
!$OMP PARALLEL DO PRIVATE(j, k)
do k = GRHydro_stencil, ny - GRHydro_stencil + 1
do j = GRHydro_stencil, nx - GRHydro_stencil + 1
- call SimplePPM_tracer_1d(nz,CCTK_DELTA_SPACE(3),rho(j,k,:), &
+ call SimplePPM_tracer_1d(apply_enhanced_ppm,&
+ nz,CCTK_DELTA_SPACE(3),rho(j,k,:), &
velx(j,k,:),vely(j,k,:),velz(j,k,:), &
Y_e(j,k,:),Y_e_minus(j,k,:),Y_e_plus(j,k,:), &
press(j,k,:))