diff options
author | rhaas <rhaas@c83d129a-5a75-4d5a-9c4d-ed3a5855bf45> | 2013-07-06 18:10:28 +0000 |
---|---|---|
committer | rhaas <rhaas@c83d129a-5a75-4d5a-9c4d-ed3a5855bf45> | 2013-07-06 18:10:28 +0000 |
commit | e89135a8b7c2073f8e547400e192ff4a6d4829d2 (patch) | |
tree | 7983c4cd81fcdb44b945b97e4df3d0a01bff0ca7 /src/GRHydro_ReconstructPoly.F90 | |
parent | 1868b94aa42e4d750d324a8ecdf08908df43acb1 (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.F90 | 37 |
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,:)) |