diff options
author | rhaas <rhaas@c83d129a-5a75-4d5a-9c4d-ed3a5855bf45> | 2012-07-05 05:36:34 +0000 |
---|---|---|
committer | rhaas <rhaas@c83d129a-5a75-4d5a-9c4d-ed3a5855bf45> | 2012-07-05 05:36:34 +0000 |
commit | 29cf2193962132b07d38f135f4a0a9d633ef506d (patch) | |
tree | 2a7aba0e9dc10f9e1efaa955880f12b129a731d0 /src/GRHydro_Boundaries.F90 | |
parent | 03389d62d0ddb2c3e35d2e197d92990b105c60b1 (diff) |
GRHydro: Fixes to atmosphere mask and the way we sync.
These are the changes as discussed with Roland. In
particular, we sync the atmo mask in an extra call
before all other syncs and then do atmo reset.
Furthermore, primitives must always be synced in last
post step in order to get initial guesses in the
buffer zones via prolongation. Atmo reset must be
done before prolongation to ensure we don't overwrite
"good" data from the coarse grid!
git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinEvolve/GRHydro/trunk@377 c83d129a-5a75-4d5a-9c4d-ed3a5855bf45
Diffstat (limited to 'src/GRHydro_Boundaries.F90')
-rw-r--r-- | src/GRHydro_Boundaries.F90 | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/GRHydro_Boundaries.F90 b/src/GRHydro_Boundaries.F90 index b3d153d..61f6664 100644 --- a/src/GRHydro_Boundaries.F90 +++ b/src/GRHydro_Boundaries.F90 @@ -99,6 +99,8 @@ subroutine GRHydro_InitSymBound(CCTK_ARGUMENTS) !endif endif + call SetCartSymVN(ierr, cctkGH, sym, "GRHydro::atmosphere_mask_real") + sym(1) = -1 sym(2) = 1 sym(3) = 1 @@ -490,3 +492,49 @@ subroutine GRHydro_SelectPrimitiveBoundaries(CCTK_ARGUMENTS) end subroutine GRHydro_SelectPrimitiveBoundaries + + + + + +subroutine GRHydro_SelectAtmosphereMaskBoundaries(CCTK_ARGUMENTS) + + implicit none + + DECLARE_CCTK_ARGUMENTS + DECLARE_CCTK_PARAMETERS + DECLARE_CCTK_FUNCTIONS + + integer, dimension(3) :: sw + integer :: ierr = 0 + integer :: i,j,k + + CCTK_INT, parameter :: faces=CCTK_ALL_FACES + CCTK_INT, parameter :: ione=1 + + sw = GRHydro_stencil + + +!!$Flat boundaries if required + + if (verbose.eq.1) call CCTK_INFO("Selecting atmosphere mask BC") + + + if (CCTK_EQUALS(bound,"flat")) then + ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, & + "GRHydro::GRHydro_atmosphere_mask_real", "Flat") + endif + + if (CCTK_EQUALS(bound,"none")) then + ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, & + "GRHydro::GRHydro_atmosphere_mask_real", "None") + end if + + if (CCTK_EQUALS(bound,"scalar")) then + call CCTK_WARN(0, "Until somebody uses this I see no reason to support it") + end if + + if (ierr < 0) call CCTK_WARN(0, "problems with applying the chosen boundary condition") + +end subroutine GRHydro_SelectAtmosphereMaskBoundaries + |