aboutsummaryrefslogtreecommitdiff
path: root/src/InitSymBound.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/InitSymBound.c')
-rw-r--r--src/InitSymBound.c36
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