diff options
Diffstat (limited to 'src/InitSymBound.c')
-rw-r--r-- | src/InitSymBound.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/InitSymBound.c b/src/InitSymBound.c index 548e56f..b8f7386 100644 --- a/src/InitSymBound.c +++ b/src/InitSymBound.c @@ -9,6 +9,8 @@ #include "cctk.h" #include "cctk_Arguments.h" +#include "cctk_Parameters.h" +#include "cctk_Functions.h" #include "Symmetry.h" @@ -119,3 +121,37 @@ void Einstein_InitSymBound(CCTK_ARGUMENTS) return; } + +/* A macro for selecting boundary conditions and checking for errors */ +#define ADMBASE_BC(NAME) \ + {if (Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, -1, NAME, "none") < 0) \ + CCTK_WARN(0, "Failed to register BC for "NAME"!");} +/* Select boundary conditions on ADMBase variables */ +void ADMBase_Boundaries(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + if (CCTK_EQUALS(evolution_method, "none" ) || + CCTK_EQUALS(evolution_method, "static")) + { + ADMBASE_BC("ADMBase::metric"); + ADMBASE_BC("ADMBase::curv"); + } + + if (CCTK_EQUALS(lapse_evolution_method, "static")) + ADMBASE_BC("ADMBase::lapse"); + + if (!CCTK_EQUALS(initial_dtlapse, "none") && + CCTK_EQUALS(dtlapse_evolution_method, "static")) + ADMBASE_BC("ADMBase::dtlapse"); + + if (!CCTK_EQUALS(initial_shift, "none") && + CCTK_EQUALS(shift_evolution_method, "static")) + ADMBASE_BC("ADMBase::shift"); + + if (!CCTK_EQUALS(initial_dtshift, "none") && + CCTK_EQUALS(dtshift_evolution_method, "static")) + ADMBASE_BC("ADMBase::dtshift"); +} +#undef ADMBase_BC |