aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Carpet/Carpet/src/Cycle.cc3
-rw-r--r--Carpet/Carpet/src/Poison.cc3
-rw-r--r--Carpet/Carpet/src/SetupGH.cc46
-rw-r--r--Carpet/Carpet/src/Storage.cc9
-rw-r--r--Carpet/Carpet/src/carpet_public.hh10
-rw-r--r--Carpet/Carpet/src/helpers.cc56
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;
+ }
}
}
}