aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhinder <hinder@d576a68a-b34a-40ae-82fc-004fa1a9d16f>2011-08-17 22:07:20 +0000
committerhinder <hinder@d576a68a-b34a-40ae-82fc-004fa1a9d16f>2011-08-17 22:07:20 +0000
commitf3af8764fac614153bb90de8c99257fda51ea094 (patch)
treef5911bdcd915556e0fa8152a673f0c4b03982d6d /src
parent728bdea31e3a9f2b2a80b41770402ee5ea048e6e (diff)
Apply "flat" boundary condition instead of "none" to ADMBase variables
In the development version of Carpet, only the interior of the newly created grid is initialized by interpolation, so non-trivial boundary conditions need to be applied. git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinBase/ADMBase/trunk@62 d576a68a-b34a-40ae-82fc-004fa1a9d16f
Diffstat (limited to 'src')
-rw-r--r--src/InitSymBound.c34
1 files changed, 26 insertions, 8 deletions
diff --git a/src/InitSymBound.c b/src/InitSymBound.c
index b8f7386..cf20057 100644
--- a/src/InitSymBound.c
+++ b/src/InitSymBound.c
@@ -123,35 +123,53 @@ void Einstein_InitSymBound(CCTK_ARGUMENTS)
}
/* 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) \
+#define ADMBASE_BC(NAME, STENCIL) \
+ {if (Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, STENCIL, -1, NAME, "flat") < 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;
+
+ CCTK_INT width[6];
+ CCTK_INT ierr;
+ CCTK_INT is_internal[6];
+ CCTK_INT is_staggered[6];
+ CCTK_INT shiftout[6];
+ CCTK_INT stencil = 0, i;
+
+ ierr = GetBoundarySpecification
+ (6, width, is_internal, is_staggered, shiftout);
+ if (ierr < 0)
+ {
+ CCTK_WARN (0, "Could not get the boundary specification");
+ }
+ for (i = 0; i < 6; i++)
+ {
+ stencil = stencil > width[i] ? stencil : width[i];
+ }
if (CCTK_EQUALS(evolution_method, "none" ) ||
CCTK_EQUALS(evolution_method, "static"))
{
- ADMBASE_BC("ADMBase::metric");
- ADMBASE_BC("ADMBase::curv");
+ ADMBASE_BC("ADMBase::metric", stencil);
+ ADMBASE_BC("ADMBase::curv", stencil);
}
if (CCTK_EQUALS(lapse_evolution_method, "static"))
- ADMBASE_BC("ADMBase::lapse");
+ ADMBASE_BC("ADMBase::lapse", stencil);
if (!CCTK_EQUALS(initial_dtlapse, "none") &&
CCTK_EQUALS(dtlapse_evolution_method, "static"))
- ADMBASE_BC("ADMBase::dtlapse");
+ ADMBASE_BC("ADMBase::dtlapse", stencil);
if (!CCTK_EQUALS(initial_shift, "none") &&
CCTK_EQUALS(shift_evolution_method, "static"))
- ADMBASE_BC("ADMBase::shift");
+ ADMBASE_BC("ADMBase::shift", stencil);
if (!CCTK_EQUALS(initial_dtshift, "none") &&
CCTK_EQUALS(dtshift_evolution_method, "static"))
- ADMBASE_BC("ADMBase::dtshift");
+ ADMBASE_BC("ADMBase::dtshift", stencil);
}
#undef ADMBase_BC