aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetLib/src/dh.cc
diff options
context:
space:
mode:
Diffstat (limited to 'Carpet/CarpetLib/src/dh.cc')
-rw-r--r--Carpet/CarpetLib/src/dh.cc62
1 files changed, 56 insertions, 6 deletions
diff --git a/Carpet/CarpetLib/src/dh.cc b/Carpet/CarpetLib/src/dh.cc
index b82337685..7f914e1f6 100644
--- a/Carpet/CarpetLib/src/dh.cc
+++ b/Carpet/CarpetLib/src/dh.cc
@@ -1,5 +1,6 @@
#include <cctk.h>
#include <cctk_Parameters.h>
+#include <unistd.h>
#include <cassert>
#include <cstddef>
@@ -772,7 +773,10 @@ regrid (bool const do_init)
ibset oneedrecv = obox.active;
- i2vect const stencil_size = i2vect (prolongation_stencil_size(rl));
+ int ssize = prolongation_stencil_size(rl);
+ ivect ss = ivect(ssize, 0, ssize);
+ i2vect const stencil_size = i2vect (ss, ss);
+ //i2vect const stencil_size = i2vect (prolongation_stencil_size(rl));
ibset const expanded_active (box.active.expanded_for (obox.interior));
ibset const ovlp = oneedrecv & expanded_active;
@@ -811,8 +815,20 @@ regrid (bool const do_init)
// Refinement prolongation must fill all active points
ibset needrecv = box.active + box.overlaps;
+
+ //for (ibset::iterator ri = needrecv.bs.begin(); ri != needrecv.bs.end(); ++ ri) {
+ // static int center;
+ // if (!center)
+ // center = (ri->_lower.elt[1] + ri->_upper.elt[1]) / 2;
+
+ // ri->_lower.elt[1] = center;
+ // ri->_upper.elt[1] = center;
+ //}
- i2vect const stencil_size = i2vect (prolongation_stencil_size(rl));
+ int ssize = prolongation_stencil_size(rl);
+ ivect ss = ivect(ssize, 0, ssize);
+ i2vect const stencil_size = i2vect (ss, ss);
+ //i2vect const stencil_size = i2vect (prolongation_stencil_size(rl));
ASSERT_c (all (h.reffacts.at(rl) % h.reffacts.at(orl) == 0),
"Refinement factors must be integer multiples of each other");
@@ -888,6 +904,15 @@ regrid (bool const do_init)
// Outer boundaries are synchronised for backward
// compatibility.
ibset needrecv = box.ghosts;
+
+ //for (ibset::iterator ri = needrecv.bs.begin(); ri != needrecv.bs.end(); ++ ri) {
+ // static int center;
+ // if (!center)
+ // center = (ri->_lower.elt[1] + ri->_upper.elt[1]) / 2;
+
+ // ri->_lower.elt[1] = center;
+ // ri->_upper.elt[1] = center;
+ //}
#endif
ibset & sync = box.sync;
@@ -898,14 +923,14 @@ regrid (bool const do_init)
#if 0
ibset const ovlp = needrecv & obox.owned;
#else
- ibset const ovlp = needrecv & obox.interior;
+ ibset ovlp = needrecv & obox.interior;
#endif
if (cc == c) {
ASSERT_cc (ovlp.empty(),
"A region may not synchronise from itself");
}
-
+
for (ibset::const_iterator
ri = ovlp.begin(); ri != ovlp.end(); ++ ri)
{
@@ -948,6 +973,7 @@ regrid (bool const do_init)
// Outer boundaries are synchronised for backward
// compatibility.
ibset needrecv = box.ghosts;
+
#endif
// Points which are synchronised need not be boundary
@@ -960,10 +986,23 @@ regrid (bool const do_init)
// Prolongation must fill what cannot be synchronised, and
// also all buffer zones
needrecv += box.buffers;
+
+ //for (ibset::iterator ri = needrecv.bs.begin(); ri != needrecv.bs.end(); ++ ri)
+ //{
+ // static int center;
+ // if (!center)
+ // center = (ri->_lower.elt[1] + ri->_upper.elt[1]) / 2;
+
+ // ri->_lower.elt[1] = center;
+ // ri->_upper.elt[1] = center;
+ //}
ibset & bndref = box.bndref;
- i2vect const stencil_size = i2vect (prolongation_stencil_size(rl));
+ int ssize = prolongation_stencil_size(rl);
+ ivect ss = ivect(ssize, 0, ssize);
+ i2vect const stencil_size = i2vect (ss, ss);
+ //i2vect const stencil_size = i2vect (prolongation_stencil_size(rl));
ASSERT_c (all (h.reffacts.at(rl) % h.reffacts.at(orl) == 0),
"Refinement factors must be integer multiples of each other");
@@ -1061,6 +1100,14 @@ regrid (bool const do_init)
// NOTE: b/c of this we need a low-level sync after the restrict
needrecv = allrestricted & obox.interior;
}
+ //for (ibset::iterator ri = needrecv.bs.begin(); ri != needrecv.bs.end(); ++ ri) {
+ // static int center;
+ // if (!center)
+ // center = (ri->_lower.elt[1] + ri->_upper.elt[1]) / 2;
+
+ // ri->_lower.elt[1] = center;
+ // ri->_upper.elt[1] = center;
+ //}
// Cannot restrict into buffer zones
assert ((allrestricted & obox.buffers).empty());
@@ -1787,7 +1834,10 @@ regrid (bool const do_init)
// of the new grid structure. It must fill what cannot be
// synchronised.
- i2vect const stencil_size = i2vect (prolongation_stencil_size(rl));
+ int ssize = prolongation_stencil_size(rl);
+ ivect ss = ivect(ssize, 0, ssize);
+ i2vect const stencil_size = i2vect (ss, ss);
+ //i2vect const stencil_size = i2vect (prolongation_stencil_size(rl));
ASSERT_c (all (h.reffacts.at(rl) % h.reffacts.at(orl) == 0),
"Refinement factors must be integer multiples of each other");