From a3c8d732c81e20fe345759f3e573686adc674d8f Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 21 Apr 2007 03:17:00 +0000 Subject: CarpetLib: Synchronise outer boundary points as well darcs-hash:20070421031755-dae7b-5c3b1adbca478900cae6e98ec7ea792ee7ec976d.gz --- Carpet/CarpetLib/src/dh.cc | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'Carpet/CarpetLib/src') 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; -- cgit v1.2.3