aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetLib/src
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@cct.lsu.edu>2007-04-21 03:17:00 +0000
committerErik Schnetter <schnetter@cct.lsu.edu>2007-04-21 03:17:00 +0000
commita3c8d732c81e20fe345759f3e573686adc674d8f (patch)
tree49c424240b8541defa77a40696512edc2415b8a3 /Carpet/CarpetLib/src
parent8b61abe1c2cacd53cacfffe5c365f9b5f76aed8b (diff)
CarpetLib: Synchronise outer boundary points as well
darcs-hash:20070421031755-dae7b-5c3b1adbca478900cae6e98ec7ea792ee7ec976d.gz
Diffstat (limited to 'Carpet/CarpetLib/src')
-rw-r--r--Carpet/CarpetLib/src/dh.cc17
1 files changed, 17 insertions, 0 deletions
diff --git a/Carpet/CarpetLib/src/dh.cc b/Carpet/CarpetLib/src/dh.cc
index 50e522f2b..1172c60e5 100644
--- a/Carpet/CarpetLib/src/dh.cc
+++ b/Carpet/CarpetLib/src/dh.cc
@@ -497,7 +497,17 @@ regrid ()
// Synchronisation should fill as many boundary points as
// possible
+
+#if 0
+ // Outer boundaries are not synchronised, since they cannot be
+ // filled by boundary prolongation either, and therefore the
+ // user code must set them anyway.
ibset needrecv = box.boundaries;
+#else
+ // Outer boundaries are synchronised for backward
+ // compatibility.
+ ibset needrecv = box.ghosts;
+#endif
box.sync_recv.resize (h.components(rl));
box.sync_send.resize (h.components(rl));
@@ -507,7 +517,11 @@ regrid ()
for (int cc = 0; cc < h.components(rl); ++ cc) {
dboxes const & obox = boxes.AT(ml).AT(rl).AT(cc);
+#if 0
ibset ovlp = needrecv & obox.owned;
+#else
+ ibset ovlp = needrecv & obox.interior;
+#endif
ovlp.normalize();
if (cc == c) {
@@ -537,6 +551,9 @@ regrid ()
if (rl > 0) {
int const orl = rl - 1;
+ // Outer boundary points cannot be boundary prolongated
+ needrecv &= box.communicated;
+
// Prolongation must fill what cannot be synchronised, and
// also all buffer zones
needrecv += box.buffers;