aboutsummaryrefslogtreecommitdiff
path: root/Carpet/Carpet/src/Comm.cc
diff options
context:
space:
mode:
Diffstat (limited to 'Carpet/Carpet/src/Comm.cc')
-rw-r--r--Carpet/Carpet/src/Comm.cc58
1 files changed, 35 insertions, 23 deletions
diff --git a/Carpet/Carpet/src/Comm.cc b/Carpet/Carpet/src/Comm.cc
index 99f52b5f9..e110bcbc1 100644
--- a/Carpet/Carpet/src/Comm.cc
+++ b/Carpet/Carpet/src/Comm.cc
@@ -10,7 +10,7 @@
#include "carpet.hh"
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Comm.cc,v 1.22 2003/08/10 21:59:51 schnetter Exp $";
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Comm.cc,v 1.23 2003/11/05 16:18:37 schnetter Exp $";
CCTK_FILEVERSION(Carpet_Carpet_Comm_cc);
}
@@ -65,37 +65,49 @@ namespace Carpet {
assert (num_tl>0);
const int tl = 0;
- assert (group<(int)arrdata.size());
- for (int var=0; var<(int)arrdata[group].data.size(); ++var) {
+ // Prolongate the boundaries
+ if (reflevel>0) {
if (grouptype == CCTK_GF) {
if (do_prolongate) {
if (arrdata[group].do_transfer) {
- if (reflevel>0) {
- // use the current time here (which may be modified by the
- // user)
- const CCTK_REAL time = (cgh->cctk_time - cctk_initial_time) / delta_time;
+ for (comm_state<dim> state; !state.done(); state.step()) {
+ assert (group<(int)arrdata.size());
+ for (int var=0; var<(int)arrdata[group].data.size(); ++var) {
+ // use the current time here (which may be modified by
+ // the user)
+ const CCTK_REAL time = (cgh->cctk_time - cctk_initial_time) / delta_time;
#if 0
- const CCTK_REAL time1 = tt->time (tl, reflevel, mglevel);
- const CCTK_REAL time2 = (cgh->cctk_time - cctk_initial_time) / delta_time;
- assert (fabs((time1 - time2) / (fabs(time1) + fabs(time2) + fabs(cgh->cctk_delta_time))) < 1e-12);
+ const CCTK_REAL time1 = tt->time (tl, reflevel, mglevel);
+ const CCTK_REAL time2 = (cgh->cctk_time - cctk_initial_time) / delta_time;
+ assert (fabs((time1 - time2) / (fabs(time1) + fabs(time2) + fabs(cgh->cctk_delta_time))) < 1e-12);
#endif
- for (int c=0; c<arrdata[group].hh->components(reflevel); ++c) {
- arrdata[group].data[var]->ref_bnd_prolongate
- (tl, reflevel, c, mglevel, time);
- }
- }
+ for (int c=0; c<arrdata[group].hh->components(reflevel); ++c) {
+ arrdata[group].data[var]->ref_bnd_prolongate
+ (state, tl, reflevel, c, mglevel, time);
+ }
+ } // for var
+ } // for state
} else {
Checkpoint ("%*s(no prolongating for group %s)",
2*reflevel, "", groupname);
- }
+ } // if ! do_transfer
} // if do_prolongate
- for (int c=0; c<arrdata[group].hh->components(reflevel); ++c) {
- arrdata[group].data[var]->sync (tl, reflevel, c, mglevel);
- }
- } else { // grouptype != CCTK_GF
- arrdata[group].data[var]->sync (0, 0, 0, 0);
- }
- }
+ } // if grouptype == CCTK_GF
+ } // if reflevel>0
+
+ // Sync
+ for (comm_state<dim> state; !state.done(); state.step()) {
+ assert (group<(int)arrdata.size());
+ for (int var=0; var<(int)arrdata[group].data.size(); ++var) {
+ if (grouptype == CCTK_GF) {
+ for (int c=0; c<arrdata[group].hh->components(reflevel); ++c) {
+ arrdata[group].data[var]->sync (state, tl, reflevel, c, mglevel);
+ }
+ } else { // grouptype != CCTK_GF
+ arrdata[group].data[var]->sync (state, 0, 0, 0, 0);
+ } // grouptype != CCTK_GF
+ } // for var
+ } // for state
return 0;
}