aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5>2003-09-11 19:06:38 +0000
committerjthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5>2003-09-11 19:06:38 +0000
commit1a657ea6c97b47dc71dd37ac24bb913021376468 (patch)
treedc3a8a166b732b9fdf8881751d126b3545b9b82a /src
parent376e513a41d09241d4054641bcd671f0320728a4 (diff)
change mask semantics so "offset" is always interpreted in terms of
BASE grid spacings --> this is needed to keep excision consistent when doing mesh refinement (thanks to Ian Hawke for spotting this) git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinAnalysis/AHFinderDirect/trunk@1187 f88db872-0e4f-0410-b76b-b9085cfa78c5
Diffstat (limited to 'src')
-rw-r--r--src/driver/mask.cc19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/driver/mask.cc b/src/driver/mask.cc
index b556e1e..725a992 100644
--- a/src/driver/mask.cc
+++ b/src/driver/mask.cc
@@ -85,7 +85,12 @@ struct mask_grid_info
// of (i,j,k) = (0,0,0)
// on this processor
fp coord_delta[N_GRID_DIMS]; // (x,y,z) grid spacing
- fp mean_coord_delta; // geometric mean of x,y,z grid spacings
+
+ // geometric mean of x,y,z grid spacings,
+ // on the *base* grid if we are doing mesh refinement
+ // (we need the base-grid semantics to make excision consistent
+ // across refinement levels)
+ fp base_grid_mean_coord_delta;
// dimensions of gridfn data on this processor, viewed as a 3-D array
// n.b. storage ordering is Fortran,
@@ -197,13 +202,14 @@ DECLARE_CCTK_ARGUMENTS
mgi.GH = cctkGH;
-// Cactus grid spacing
+// Cactus grid spacing on *this* grid
mgi.coord_delta[X_AXIS] = CCTK_DELTA_SPACE(X_AXIS);
mgi.coord_delta[Y_AXIS] = CCTK_DELTA_SPACE(Y_AXIS);
mgi.coord_delta[Z_AXIS] = CCTK_DELTA_SPACE(Z_AXIS);
-mgi.mean_coord_delta
- = pow(mgi.coord_delta[X_AXIS]*mgi.coord_delta[Y_AXIS]*mgi.coord_delta[Z_AXIS],
- 1.0/3.0);
+const fp base_grid_delta_product = cctk_delta_space[X_AXIS]
+ * cctk_delta_space[Y_AXIS]
+ * cctk_delta_space[Z_AXIS];
+mgi.base_grid_mean_coord_delta = pow(base_grid_delta_product, 1.0/3.0);
// get global/local Cactus grid origin
// KLUDGE -- is this the right way to get this??
@@ -347,7 +353,6 @@ void set_mask_gridfn(int N_horizons,
const struct mask_info& mask_info,
const struct verbose_info& verbose_info)
{
-const fp Cactus_dx = mgi.mean_coord_delta;
const bool set_old_style_mask = mask_info.set_old_style_mask;
const bool set_new_style_mask = mask_info.set_new_style_mask;
const struct mask_info::old_style_mask_info& osmi = mask_info.old_style_mask_info;
@@ -594,7 +599,7 @@ const bool set_old_style_mask = mask_info.set_old_style_mask;
const bool set_new_style_mask = mask_info.set_new_style_mask;
const struct mask_info::old_style_mask_info& osmi = mask_info.old_style_mask_info;
const struct mask_info::new_style_mask_info& nsmi = mask_info.new_style_mask_info;
-const fp Cactus_dx = mgi.mean_coord_delta;
+const fp Cactus_dx = mgi.base_grid_mean_coord_delta;
long inside_count = 0;
long buffer_count = 0;