diff options
-rw-r--r-- | Carpet/Carpet/src/Cycle.cc | 3 | ||||
-rw-r--r-- | Carpet/Carpet/src/Poison.cc | 3 | ||||
-rw-r--r-- | Carpet/Carpet/src/SetupGH.cc | 46 | ||||
-rw-r--r-- | Carpet/Carpet/src/Storage.cc | 9 | ||||
-rw-r--r-- | Carpet/Carpet/src/carpet_public.hh | 10 | ||||
-rw-r--r-- | Carpet/Carpet/src/helpers.cc | 56 |
6 files changed, 75 insertions, 52 deletions
diff --git a/Carpet/Carpet/src/Cycle.cc b/Carpet/Carpet/src/Cycle.cc index b3d4745a2..ad3b48af2 100644 --- a/Carpet/Carpet/src/Cycle.cc +++ b/Carpet/Carpet/src/Cycle.cc @@ -9,7 +9,7 @@ #include "carpet.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Cycle.cc,v 1.12 2002/11/16 19:10:50 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Cycle.cc,v 1.13 2003/05/23 23:51:17 schnetter Exp $"; CCTK_FILEVERSION(Carpet_Carpet_Cycle_cc); } @@ -51,6 +51,7 @@ namespace Carpet { if (CCTK_QueryGroupStorageI(cgh, group)) { const int var0 = CCTK_FirstVarIndexI(group); + assert (var0>=0); const int num_tl = CCTK_NumTimeLevelsFromVarI(var0); switch (num_tl) { case 1: diff --git a/Carpet/Carpet/src/Poison.cc b/Carpet/Carpet/src/Poison.cc index 2e8922158..a698e1574 100644 --- a/Carpet/Carpet/src/Poison.cc +++ b/Carpet/Carpet/src/Poison.cc @@ -8,7 +8,7 @@ #include "carpet.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Poison.cc,v 1.10 2003/05/13 16:31:47 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Poison.cc,v 1.11 2003/05/23 23:51:17 schnetter Exp $"; CCTK_FILEVERSION(Carpet_Carpet_Poison_cc); } @@ -53,6 +53,7 @@ namespace Carpet { } const int var0 = CCTK_FirstVarIndexI(group); + assert (var0>=0); const int nvar = CCTK_NumVarsInGroupI(group); const int sz = CCTK_VarTypeSize(CCTK_VarTypeI(var0)); assert (sz>0); diff --git a/Carpet/Carpet/src/SetupGH.cc b/Carpet/Carpet/src/SetupGH.cc index ed89334e0..786320839 100644 --- a/Carpet/Carpet/src/SetupGH.cc +++ b/Carpet/Carpet/src/SetupGH.cc @@ -19,7 +19,7 @@ #include "carpet.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/SetupGH.cc,v 1.44 2003/05/13 12:14:00 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/SetupGH.cc,v 1.45 2003/05/23 23:51:17 schnetter Exp $"; CCTK_FILEVERSION(Carpet_Carpet_SetupGH_cc); } @@ -59,6 +59,8 @@ namespace Carpet { # error "Unsupported default real type" #endif + if (CCTK_NumVarsInGroupI(group) == 0) return true; + const int var0 = CCTK_FirstVarIndexI(group); const int type0 = CCTK_VarTypeI(var0); int type1; @@ -89,13 +91,13 @@ namespace Carpet { #ifdef CCTK_REAL16 case CCTK_VARIABLE_REAL16: #endif -#ifdef CCTK_COMPLEX8 +#ifdef CCTK_REAL4 /* CCTK_COMPLEX8 */ case CCTK_VARIABLE_COMPLEX8: #endif -#ifdef CCTK_COMPLEX16 +#ifdef CCTK_REAL8 /* CCTK_COMPLEX16 */ case CCTK_VARIABLE_COMPLEX16: #endif -#ifdef CCTK_COMPLEX32 +#ifdef CCTK_REAL16 /* CCTK_COMPLEX32 */ case CCTK_VARIABLE_COMPLEX32: #endif // This type is not supported, but could be. @@ -118,7 +120,12 @@ namespace Carpet { return false; default: - assert (0); + { + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "Internal error: encountered variable type %d (%s) for group %d (%s)", + type1, CCTK_VarTypeName(type1), + group, CCTK_GroupName(group)); + } } // not reached @@ -380,20 +387,23 @@ namespace Carpet { assert (arrdata[group].info.lbnd[d]<=arrdata[group].info.ubnd[d]+1); } - const int firstvar = CCTK_FirstVarIndexI (group); const int numvars = CCTK_NumVarsInGroupI (group); - const int num_tl = CCTK_NumTimeLevelsFromVarI (firstvar); - - assert (rl>=0 && rl<(int)arrdata[group].dd->boxes.size()); - assert (c>=0 && c<(int)arrdata[group].dd->boxes[rl].size()); - assert (ml>=0 && ml<(int)arrdata[group].dd->boxes[rl][c].size()); - assert (arrdata[group].hh->is_local(rl,c)); - - assert (group<(int)arrdata.size()); - for (int var=0; var<numvars; ++var) { - assert (var<(int)arrdata[group].data.size()); - for (int tl=0; tl<num_tl; ++tl) { - cgh->data[firstvar+var][tl] = 0; + if (numvars>0) { + const int firstvar = CCTK_FirstVarIndexI (group); + assert (firstvar>=0); + const int num_tl = CCTK_NumTimeLevelsFromVarI (firstvar); + + assert (rl>=0 && rl<(int)arrdata[group].dd->boxes.size()); + assert (c>=0 && c<(int)arrdata[group].dd->boxes[rl].size()); + assert (ml>=0 && ml<(int)arrdata[group].dd->boxes[rl][c].size()); + assert (arrdata[group].hh->is_local(rl,c)); + + assert (group<(int)arrdata.size()); + for (int var=0; var<numvars; ++var) { + assert (var<(int)arrdata[group].data.size()); + for (int tl=0; tl<num_tl; ++tl) { + cgh->data[firstvar+var][tl] = 0; + } } } diff --git a/Carpet/Carpet/src/Storage.cc b/Carpet/Carpet/src/Storage.cc index c17842da5..3214ff5fe 100644 --- a/Carpet/Carpet/src/Storage.cc +++ b/Carpet/Carpet/src/Storage.cc @@ -10,7 +10,7 @@ #include "carpet.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Storage.cc,v 1.18 2003/05/21 14:30:25 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Storage.cc,v 1.19 2003/05/23 23:51:17 schnetter Exp $"; CCTK_FILEVERSION(Carpet_Carpet_Storage_cc); } @@ -39,6 +39,8 @@ namespace Carpet { const int group = CCTK_GroupIndex(groupname); assert (group>=0 && group<CCTK_NumGroups()); + if (CCTK_NumVarsInGroupI(group)==0) return 0; + const int grouptype = CCTK_GroupTypeI(group); // No storage change in local mode @@ -48,11 +50,12 @@ namespace Carpet { // storage was enabled previously return 1; } - + // Check whether this group has transfer operators if (grouptype == CCTK_GF) { if (! arrdata[group].do_transfer) { const int var = CCTK_FirstVarIndexI(group); + assert (var>=0); const int vartype = CCTK_VarTypeI(var); const char * vartypename = CCTK_VarTypeName(vartype); CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, @@ -180,6 +183,8 @@ namespace Carpet { } assert (group>=0 && group<CCTK_NumGroups()); + if (CCTK_NumVarsInGroupI(group)==0) return 0; + const int n = CCTK_FirstVarIndexI(group); assert (n>=0 && n<CCTK_NumVars()); const int var = 0; diff --git a/Carpet/Carpet/src/carpet_public.hh b/Carpet/Carpet/src/carpet_public.hh index 320c99561..f74274b8f 100644 --- a/Carpet/Carpet/src/carpet_public.hh +++ b/Carpet/Carpet/src/carpet_public.hh @@ -1,4 +1,4 @@ -// $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/carpet_public.hh,v 1.27 2003/05/12 16:24:25 schnetter Exp $ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/carpet_public.hh,v 1.28 2003/05/23 23:51:17 schnetter Exp $ // It is assumed that the number of components of all arrays is equal // to the number of components of the grid functions, and that their @@ -227,14 +227,14 @@ namespace Carpet { assert (reflevel>=0 && reflevel<hh->reflevels()); \ assert (mglevel>=0 && mglevel<mglevels); \ assert (hh->local_components(reflevel)==1 || component==-1); \ - int const saved_component = component; \ + int const _saved_component = component; \ for (int _c=0; _c<hh->components(reflevel); ++_c) { \ set_component ((cGH*)(cgh), _c); \ { #define END_COMPONENT_LOOP(cgh) \ } \ } \ - set_component ((cGH*)(cgh), saved_component); \ + set_component ((cGH*)(cgh), _saved_component); \ _cl = 0; \ } while (0) @@ -246,7 +246,7 @@ namespace Carpet { assert (reflevel>=0 && reflevel<hh->reflevels()); \ assert (mglevel>=0 && mglevel<mglevels); \ assert (hh->local_components(reflevel)==1 || component==-1); \ - int const saved_component = component; \ + int const _saved_component = component; \ for (int _c=0; _c<hh->components(reflevel); ++_c) { \ if (hh->is_local(reflevel,_c)) { \ set_component ((cGH*)(cgh), _c); \ @@ -255,7 +255,7 @@ namespace Carpet { } \ } \ } \ - set_component ((cGH*)(cgh), saved_component); \ + set_component ((cGH*)(cgh), _saved_component); \ _lcl = 0; \ } while (0) diff --git a/Carpet/Carpet/src/helpers.cc b/Carpet/Carpet/src/helpers.cc index bb8cf9905..91832f078 100644 --- a/Carpet/Carpet/src/helpers.cc +++ b/Carpet/Carpet/src/helpers.cc @@ -14,7 +14,7 @@ #include "carpet.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/helpers.cc,v 1.33 2003/05/13 16:31:47 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/helpers.cc,v 1.34 2003/05/23 23:51:17 schnetter Exp $"; CCTK_FILEVERSION(Carpet_Carpet_helpers_cc); } @@ -279,7 +279,7 @@ namespace Carpet { || (mglevel>=0 && mglevel<hh->mglevels(reflevel,component))); // Set Cactus parameters - if (component == -1) { + if (component == -1 || ! hh->is_local(reflevel,component)) { // Level mode -- no component is active for (int d=0; d<dim; ++d) { @@ -304,15 +304,18 @@ namespace Carpet { ((int*)arrdata[group].info.ubnd)[d] = 0xdeadbeef; } - const int firstvar = CCTK_FirstVarIndexI (group); const int numvars = CCTK_NumVarsInGroupI (group); - const int num_tl = CCTK_NumTimeLevelsFromVarI (firstvar); - - assert (group<(int)arrdata.size()); - for (int var=0; var<numvars; ++var) { - assert (var<(int)arrdata[group].data.size()); - for (int tl=0; tl<num_tl; ++tl) { - cgh->data[firstvar+var][tl] = 0; + if (numvars>0) { + const int firstvar = CCTK_FirstVarIndexI (group); + assert (firstvar>=0); + const int num_tl = CCTK_NumTimeLevelsFromVarI (firstvar); + + assert (group<(int)arrdata.size()); + for (int var=0; var<numvars; ++var) { + assert (var<(int)arrdata[group].data.size()); + for (int tl=0; tl<num_tl; ++tl) { + cgh->data[firstvar+var][tl] = 0; + } } } @@ -390,22 +393,25 @@ namespace Carpet { assert (arrdata[group].info.lbnd[d]<=arrdata[group].info.ubnd[d]+1); } - const int firstvar = CCTK_FirstVarIndexI (group); const int numvars = CCTK_NumVarsInGroupI (group); - const int num_tl = CCTK_NumTimeLevelsFromVarI (firstvar); - - assert (hh->is_local(reflevel,component)); - - assert (group<(int)arrdata.size()); - for (int var=0; var<numvars; ++var) { - assert (var<(int)arrdata[group].data.size()); - for (int tl=0; tl<num_tl; ++tl) { - ggf<dim> * const ff = arrdata[group].data[var]; - if (ff) { - cgh->data[firstvar+var][tl] - = (*ff) (-tl, reflevel, component, mglevel)->storage(); - } else { - cgh->data[firstvar+var][tl] = 0; + if (numvars>0) { + const int firstvar = CCTK_FirstVarIndexI (group); + assert (firstvar>=0); + const int num_tl = CCTK_NumTimeLevelsFromVarI (firstvar); + + assert (hh->is_local(reflevel,component)); + + assert (group<(int)arrdata.size()); + for (int var=0; var<numvars; ++var) { + assert (var<(int)arrdata[group].data.size()); + for (int tl=0; tl<num_tl; ++tl) { + ggf<dim> * const ff = arrdata[group].data[var]; + if (ff) { + cgh->data[firstvar+var][tl] + = (*ff) (-tl, reflevel, component, mglevel)->storage(); + } else { + cgh->data[firstvar+var][tl] = 0; + } } } } |