aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschnetter <>2004-08-04 11:03:00 +0000
committerschnetter <>2004-08-04 11:03:00 +0000
commit9eedc6c0a0bb423ed650d301a371beabd9c5a209 (patch)
tree5c2ef3431c2904742292ce666c3c2a63de5aac3b
parent043b48320dfc7e1512d0e9353546602478534693 (diff)
Correct error in setting up the edges and corners of the weight
Correct error in setting up the edges and corners of the weight function. darcs-hash:20040804110328-07bb3-79be97be201e736d66480f0774e877fa9006c39d.gz
-rw-r--r--Carpet/CarpetReduce/src/mask_carpet.cc44
1 files changed, 42 insertions, 2 deletions
diff --git a/Carpet/CarpetReduce/src/mask_carpet.cc b/Carpet/CarpetReduce/src/mask_carpet.cc
index 2e6f558ae..aba8c84e9 100644
--- a/Carpet/CarpetReduce/src/mask_carpet.cc
+++ b/Carpet/CarpetReduce/src/mask_carpet.cc
@@ -10,7 +10,7 @@
#include "mask_carpet.hh"
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/mask_carpet.cc,v 1.3 2004/08/02 11:43:35 schnetter Exp $";
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/mask_carpet.cc,v 1.4 2004/08/04 13:03:28 schnetter Exp $";
CCTK_FILEVERSION(Carpet_CarpetMask_Mask_cc);
}
@@ -115,6 +115,10 @@ namespace CarpetMask {
{
ibbox const & box = (*bi) & ext;
+ assert (all ((box.lower() - ext.lower() ) >= 0));
+ assert (all ((box.upper() - ext.lower() + ext.stride()) >= 0));
+ assert (all ((box.lower() - ext.lower() ) % ext.stride() == 0));
+ assert (all ((box.upper() - ext.lower() + ext.stride()) % ext.stride() == 0));
ivect const imin = (box.lower() - ext.lower() ) / ext.stride();
ivect const imax = (box.upper() - ext.lower() + ext.stride()) / ext.stride();
assert (all (izero <= imin));
@@ -168,6 +172,10 @@ namespace CarpetMask {
{
ibbox const & box = (*bi).contracted_for(ext) & ext;
+ assert (all ((box.lower() - ext.lower() ) >= 0));
+ assert (all ((box.upper() - ext.lower() + ext.stride()) >= 0));
+ assert (all ((box.lower() - ext.lower() ) % ext.stride() == 0));
+ assert (all ((box.upper() - ext.lower() + ext.stride()) % ext.stride() == 0));
ivect const imin = (box.lower() - ext.lower() ) / ext.stride();
ivect const imax = (box.upper() - ext.lower() + ext.stride()) / ext.stride();
assert (all (izero <= imin));
@@ -193,6 +201,19 @@ namespace CarpetMask {
} // for box
+ assert (dim == 3);
+ vector<int> mask (cctk_lsh[0] * cctk_lsh[1] * cctk_lsh[2]);
+
+ assert (dim == 3);
+ for (int k=0; k<cctk_lsh[2]; ++k) {
+ for (int j=0; j<cctk_lsh[1]; ++j) {
+ for (int i=0; i<cctk_lsh[0]; ++i) {
+ int const ind = CCTK_GFINDEX3D (cctkGH, i, j, k);
+ mask[ind] = 0;
+ }
+ }
+ }
+
for (int d=0; d<dim; ++d) {
for (ibset::const_iterator bi = boundaries[d].begin();
bi != boundaries[d].end();
@@ -200,6 +221,10 @@ namespace CarpetMask {
{
ibbox const & box = (*bi).contracted_for(ext) & ext;
+ assert (all ((box.lower() - ext.lower() ) >= 0));
+ assert (all ((box.upper() - ext.lower() + ext.stride()) >= 0));
+ assert (all ((box.lower() - ext.lower() ) % ext.stride() == 0));
+ assert (all ((box.upper() - ext.lower() + ext.stride()) % ext.stride() == 0));
ivect const imin = (box.lower() - ext.lower() ) / ext.stride();
ivect const imax = (box.upper() - ext.lower() + ext.stride()) / ext.stride();
assert (all (izero <= imin));
@@ -218,7 +243,10 @@ namespace CarpetMask {
for (int j=imin[1]; j<imax[1]; ++j) {
for (int i=imin[0]; i<imax[0]; ++i) {
int const ind = CCTK_GFINDEX3D (cctkGH, i, j, k);
- weight[ind] *= 0.5;
+ if (mask[ind] == 0) {
+ mask[ind] = 1;
+ }
+ mask[ind] *= 2;
}
}
}
@@ -226,6 +254,18 @@ namespace CarpetMask {
} // for box
} // for d
+ assert (dim == 3);
+ for (int k=0; k<cctk_lsh[2]; ++k) {
+ for (int j=0; j<cctk_lsh[1]; ++j) {
+ for (int i=0; i<cctk_lsh[0]; ++i) {
+ int const ind = CCTK_GFINDEX3D (cctkGH, i, j, k);
+ if (mask[ind] > 0) {
+ weight[ind] *= 1.0 - 1.0 / mask[ind];
+ }
+ }
+ }
+ }
+
} END_LOCAL_COMPONENT_LOOP;
leave_singlemap_mode (cctkGH);