/*@@ @file InitSymBound.F @date March 1999 @author Gerd Lanfermann @desc Sets the symmetries for the Einstein grid functions @enddesc @@*/ #include "cctk.h" #include "cctk_Arguments.h" #include "cctk_Parameters.h" #include "cctk_Functions.h" #include "Symmetry.h" static const char *rcsid = "$Header$"; CCTK_FILEVERSION(CactusEinstein_Einstein_InitSymBound_c) void Einstein_InitSymBound(CCTK_ARGUMENTS); /*@@ @routine Einstein_InitSymBound @date March 1999 @author Gerd Lanfermann @desc Sets the symmetries for the Einstein grid functions @enddesc @calls @calledby @history @endhistory @@*/ void Einstein_InitSymBound(CCTK_ARGUMENTS) { DECLARE_CCTK_ARGUMENTS int one; int sym[3]; one = 1; sym[0] = one; sym[1] = one; sym[2] = one; SetCartSymVN(cctkGH, sym,"admbase::gxx"); SetCartSymVN(cctkGH, sym,"admbase::gyy"); SetCartSymVN(cctkGH, sym,"admbase::gzz"); sym[0] = -one; sym[1] = -one; sym[2] = one; SetCartSymVN(cctkGH, sym,"admbase::gxy"); sym[0] = -one; sym[1] = one; sym[2] = -one; SetCartSymVN(cctkGH, sym,"admbase::gxz"); sym[0] = one; sym[1] = -one; sym[2] = -one; SetCartSymVN(cctkGH, sym,"admbase::gyz"); sym[0] = one; sym[1] = one; sym[2] = one; SetCartSymVN(cctkGH, sym,"admbase::kxx"); SetCartSymVN(cctkGH, sym,"admbase::kyy"); SetCartSymVN(cctkGH, sym,"admbase::kzz"); sym[0] = -one; sym[1] = -one; sym[2] = one; SetCartSymVN(cctkGH, sym,"admbase::kxy"); sym[0] = -one; sym[1] = one; sym[2] = -one; SetCartSymVN(cctkGH, sym,"admbase::kxz"); sym[0] = one; sym[1] = -one; sym[2] = -one; SetCartSymVN(cctkGH, sym,"admbase::kyz"); sym[0] = one; sym[1] = one; sym[2] = one; SetCartSymVN(cctkGH, sym,"admbase::alp"); sym[0] = -one; sym[1] = one; sym[2] = one; SetCartSymVN(cctkGH, sym,"admbase::betax"); sym[0] = one; sym[1] = -one; sym[2] = one; SetCartSymVN(cctkGH, sym,"admbase::betay"); sym[0] = one; sym[1] = one; sym[2] = -one; SetCartSymVN(cctkGH, sym,"admbase::betaz"); sym[0] = one; sym[1] = one; sym[2] = one; SetCartSymVN(cctkGH, sym,"admbase::dtalp"); sym[0] = -one; sym[1] = one; sym[2] = one; SetCartSymVN(cctkGH, sym,"admbase::dtbetax"); sym[0] = one; sym[1] = -one; sym[2] = one; SetCartSymVN(cctkGH, sym,"admbase::dtbetay"); sym[0] = one; sym[1] = one; sym[2] = -one; SetCartSymVN(cctkGH, sym,"admbase::dtbetaz"); 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