From 19c58432407fc822f2aadb0db1b8485d17fd1f35 Mon Sep 17 00:00:00 2001 From: tradke Date: Wed, 16 Mar 2005 14:09:00 +0000 Subject: Carpet: simplify SyncGroup(); merge SyncGFArrayGroup() and SyncGFGroup() into SyncGVGroup() darcs-hash:20050316140925-3fd61-fd64d2290d26975fa5521f57f0d83442d5af7feb.gz --- Carpet/Carpet/src/Comm.cc | 79 +++++++++---------------------------------- Carpet/Carpet/src/Restrict.cc | 2 +- Carpet/Carpet/src/carpet.hh | 2 +- 3 files changed, 18 insertions(+), 65 deletions(-) diff --git a/Carpet/Carpet/src/Comm.cc b/Carpet/Carpet/src/Comm.cc index 4e66f7ace..bc5b81991 100644 --- a/Carpet/Carpet/src/Comm.cc +++ b/Carpet/Carpet/src/Comm.cc @@ -20,7 +20,6 @@ namespace Carpet { const char *groupname ); static void ProlongateGroupBoundaries ( const cGH* cgh, CCTK_REAL initial_time, int group ); - static void SyncGFArrayGroup ( const cGH* cgh, int group ); int SyncGroup (const cGH* cgh, const char* groupname) { @@ -29,54 +28,27 @@ namespace Carpet { const int group = CCTK_GroupIndex(groupname); assert (group>=0 and groupcctk_time); - const int grouptype = CCTK_GroupTypeI(group); retval = CheckSyncGroupConsistency (cgh, groupname); - if (retval == 0 and CCTK_NumVarsInGroupI(group) != 0) { - const int n0 = CCTK_FirstVarIndexI(group); - assert (n0>=0); - const int num_tl = CCTK_NumTimeLevelsFromVarI(n0); - assert (num_tl>0); + if (retval == 0) { // Prolongate the boundaries - if (do_prolongate) { - switch (grouptype) { - - case CCTK_GF: - assert (reflevel>=0 and reflevel 0) { - ProlongateGroupBoundaries ( cgh, cctk_initial_time, group ); - } - break; - - case CCTK_SCALAR: - case CCTK_ARRAY: - // do nothing - break; - - default: - assert (0); + if (do_prolongate && grouptype == CCTK_GF) { + assert (reflevel>=0 and reflevel 0) { + ProlongateGroupBoundaries ( cgh, cctk_initial_time, group ); } } // Sync - switch (CCTK_GroupTypeI(group)) { - - case CCTK_GF: - SyncGFGroup ( cgh, group ); - break; - - case CCTK_SCALAR: - case CCTK_ARRAY: - SyncGFArrayGroup ( cgh, group ); - break; - - default: - assert (0); - } + SyncGVGroup ( cgh, group ); } return retval; } @@ -117,7 +89,7 @@ namespace Carpet { } } - void SyncGFGroup ( const cGH* cgh, int group ) + void SyncGVGroup ( const cGH* cgh, int group ) { DECLARE_CCTK_PARAMETERS; const int tl = 0; @@ -126,7 +98,8 @@ namespace Carpet { // in order to minimise the number of outstanding communications if (minimise_outstanding_communications) { for (int m=0; m<(int)arrdata.at(group).size(); ++m) { - for (int var=0; varcomponents(reflevel); ++c) { for (comm_state state; ! state.done(); state.step()) { arrdata.at(group).at(m).data.at(var)->sync @@ -134,11 +107,12 @@ namespace Carpet { } } } + CCTK_GroupName (group)); } } else { for (comm_state state; ! state.done(); state.step()) { for (int m=0; m<(int)arrdata.at(group).size(); ++m) { - for (int var=0; varcomponents(reflevel); ++c) { arrdata.at(group).at(m).data.at(var)->sync (state, tl, reflevel, c, mglevel); @@ -149,27 +123,6 @@ namespace Carpet { } } - void SyncGFArrayGroup ( const cGH* cgh, int group ) - { - DECLARE_CCTK_PARAMETERS; - - // make the comm_state loop the innermost - // in order to minimise the number of outstanding communications - if (minimise_outstanding_communications) { - for (int var=0; var<(int)arrdata.at(group).at(0).data.size(); ++var) { - for (comm_state state; ! state.done(); state.step()) { - arrdata.at(group).at(0).data.at(var)->sync (state, 0, 0, 0, 0); - } - } - } else { - for (comm_state state; ! state.done(); state.step()) { - for (int var=0; var<(int)arrdata.at(group).at(0).data.size(); ++var) { - arrdata.at(group).at(0).data.at(var)->sync (state, 0, 0, 0, 0); - } - } - } - } - int CheckSyncGroupConsistency ( const cGH* cgh,const char *groupname ) { int retval = 0; diff --git a/Carpet/Carpet/src/Restrict.cc b/Carpet/Carpet/src/Restrict.cc index 81fc38f21..f8d7397bf 100644 --- a/Carpet/Carpet/src/Restrict.cc +++ b/Carpet/Carpet/src/Restrict.cc @@ -108,7 +108,7 @@ namespace Carpet { for (int group=0; group