aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschnetter <>2003-05-13 14:31:00 +0000
committerschnetter <>2003-05-13 14:31:00 +0000
commit48e194f027e1024dd0c96d347c81edadf3f380f3 (patch)
tree0e20b39041ea09a5b82119a9d1de59e5459d7805
parent361ead75fd28f7273dabef58463cc617ee4eb1c1 (diff)
Poison: Check storage of GFs and GAs differently.
Poison: Check storage of GFs and GAs differently. Small changes; debug helpers. darcs-hash:20030513143147-07bb3-019312f33bda76cdc2a250b0335a9fca76926202.gz
-rw-r--r--Carpet/Carpet/src/Initialise.cc6
-rw-r--r--Carpet/Carpet/src/Poison.cc54
-rw-r--r--Carpet/Carpet/src/helpers.cc43
3 files changed, 68 insertions, 35 deletions
diff --git a/Carpet/Carpet/src/Initialise.cc b/Carpet/Carpet/src/Initialise.cc
index 9dbc80b70..266ab8958 100644
--- a/Carpet/Carpet/src/Initialise.cc
+++ b/Carpet/Carpet/src/Initialise.cc
@@ -12,7 +12,7 @@
#include "carpet.hh"
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Initialise.cc,v 1.26 2003/05/08 15:35:49 schnetter Exp $";
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Initialise.cc,v 1.27 2003/05/13 16:31:47 schnetter Exp $";
CCTK_FILEVERSION(Carpet_Carpet_Initialise_cc);
}
@@ -89,7 +89,7 @@ namespace Carpet {
// assert (abs(cgh->cctk_delta_time - base_delta_time / reflevelfactor)
// < 1e-6 * base_delta_time);
// This circumvents a bug in CactusBase/Time
- cgh->cctk_delta_time = base_delta_time / reflevelfact;
+ cgh->cctk_delta_time = base_delta_time / reflevelfact * mglevelfact;
}
// Set up the initial data
@@ -125,7 +125,7 @@ namespace Carpet {
Waypoint ("%*sCurrent time is %g%s", 2*reflevel, "",
cgh->cctk_time,
do_global_mode ? " (global time)" : "");
- Restrict (cgh);
+ Restrict (cgh);
Waypoint ("%*sScheduling POSTRESTRICT", 2*reflevel, "");
CCTK_ScheduleTraverse ("POSTRESTRICT", cgh, CallFunction);
diff --git a/Carpet/Carpet/src/Poison.cc b/Carpet/Carpet/src/Poison.cc
index ca0292603..2e8922158 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.9 2002/10/24 10:39:38 schnetter Exp $";
+ 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 $";
CCTK_FILEVERSION(Carpet_Carpet_Poison_cc);
}
@@ -52,31 +52,41 @@ namespace Carpet {
return;
}
- for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) {
+ const int var0 = CCTK_FirstVarIndexI(group);
+ const int nvar = CCTK_NumVarsInGroupI(group);
+ const int sz = CCTK_VarTypeSize(CCTK_VarTypeI(var0));
+ assert (sz>0);
+
+ const int num_tl = CCTK_NumTimeLevelsFromVarI(var0);
+ assert (num_tl>0);
+ const int min_tl = mintl(where, num_tl);
+ const int max_tl = maxtl(where, num_tl);
+
+ int np = 1;
+ const int gpdim = CCTK_GroupDimI(group);
+ for (int d=0; d<gpdim; ++d) {
+ np *= *CCTK_ArrayGroupSizeI(cgh, d, group);
+ }
+
+ if (CCTK_GroupTypeI(group) == CCTK_GF) {
- const int n = CCTK_FirstVarIndexI(group) + var;
- const int sz = CCTK_VarTypeSize(CCTK_VarTypeI(n));
- assert (sz>0);
+ BEGIN_LOCAL_COMPONENT_LOOP(cgh) {
+ for (int n=var0; n<var0+nvar; ++n) {
+ for (int tl=min_tl; tl<=max_tl; ++tl) {
+ memset (cgh->data[n][tl], poison_value, np*sz);
+ } // for tl
+ } // for var
+ } END_LOCAL_COMPONENT_LOOP(cgh);
- const int num_tl = CCTK_NumTimeLevelsFromVarI(n);
- assert (num_tl>0);
- const int min_tl = mintl(where, num_tl);
- const int max_tl = maxtl(where, num_tl);
+ } else {
- for (int tl=min_tl; tl<=max_tl; ++tl) {
-
- BEGIN_LOCAL_COMPONENT_LOOP(cgh) {
- int np = 1;
- const int gpdim = arrdata[group].info.dim;
- for (int d=0; d<gpdim; ++d) {
- np *= *CCTK_ArrayGroupSizeI(cgh, d, group);
- }
- memset (cgh->data[n][tl], poison_value, np*sz);
- } END_LOCAL_COMPONENT_LOOP(cgh);
-
- } // for tl
+ for (int n=var0; n<var0+nvar; ++n) {
+ for (int tl=min_tl; tl<=max_tl; ++tl) {
+ memset (cgh->data[n][tl], poison_value, np*sz);
+ } // for tl
+ } // for var
- } // for var
+ } // group type != gf
}
diff --git a/Carpet/Carpet/src/helpers.cc b/Carpet/Carpet/src/helpers.cc
index 0e0d3b48b..bb8cf9905 100644
--- a/Carpet/Carpet/src/helpers.cc
+++ b/Carpet/Carpet/src/helpers.cc
@@ -9,11 +9,12 @@
#include "Carpet/CarpetLib/src/defs.hh"
#include "Carpet/CarpetLib/src/dist.hh"
+#include "Carpet/CarpetLib/src/ggf.hh"
#include "carpet.hh"
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/helpers.cc,v 1.32 2003/05/12 16:24:25 schnetter Exp $";
+ 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 $";
CCTK_FILEVERSION(Carpet_Carpet_helpers_cc);
}
@@ -341,12 +342,24 @@ namespace Carpet {
cgh->cctk_lssh[CCTK_LSSH_IDX(stg,d)] = cgh->cctk_lsh[d];
}
- assert (cgh->cctk_lsh[d]>=0 && cgh->cctk_lsh[d]<=cgh->cctk_gsh[d]);
- assert (cgh->cctk_lbnd[d]>=0 && cgh->cctk_ubnd[d]<cgh->cctk_gsh[d]);
- assert (cgh->cctk_ubnd[d]-cgh->cctk_lbnd[d]+1 == cgh->cctk_lsh[d]);
- assert (cgh->cctk_lbnd[d]<=cgh->cctk_ubnd[d]+1);
-
+ assert (cgh->cctk_lsh[d] >= 0);
+ assert (cgh->cctk_lsh[d] <= cgh->cctk_gsh[d]);
+ assert (cgh->cctk_lbnd[d] >= 0);
+ assert (cgh->cctk_lbnd[d] <= cgh->cctk_ubnd[d] + 1);
+ assert (cgh->cctk_ubnd[d] < cgh->cctk_gsh[d]);
+ assert (cgh->cctk_lbnd[d] + cgh->cctk_lsh[d] - 1 == cgh->cctk_ubnd[d]);
+ assert (cgh->cctk_lbnd[d] <= cgh->cctk_ubnd[d]+1);
+
}
+
+#if 0
+ cout << "set_component: reflevel=" << reflevel << endl;
+ cout << "set_component: gsh=[" << cgh->cctk_gsh[0] << "," << cgh->cctk_gsh[1] << "," << cgh->cctk_gsh[2] << "]" << endl;
+ cout << "set_component: lsh=[" << cgh->cctk_lsh[0] << "," << cgh->cctk_lsh[1] << "," << cgh->cctk_lsh[2] << "]" << endl;
+ cout << "set_component: lbnd=[" << cgh->cctk_lbnd[0] << "," << cgh->cctk_lbnd[1] << "," << cgh->cctk_lbnd[2] << "]" << endl;
+ cout << "set_component: origin_space=[" << cgh->cctk_origin_space[0] << "," << cgh->cctk_origin_space[1] << "," << cgh->cctk_origin_space[2] << "]" << endl;
+ cout << "set_component: delta_space=[" << cgh->cctk_delta_space[0] << "," << cgh->cctk_delta_space[1] << "," << cgh->cctk_delta_space[2] << "]" << endl;
+#endif
for (int group=0; group<CCTK_NumGroups(); ++group) {
if (CCTK_GroupTypeI(group) == CCTK_GF) {
@@ -367,9 +380,13 @@ namespace Carpet {
((int*)arrdata[group].info.bbox)[2*d ] = obnds[d][0];
((int*)arrdata[group].info.bbox)[2*d+1] = obnds[d][1];
- assert (arrdata[group].info.lsh[d]>=0 && arrdata[group].info.lsh[d]<=arrdata[group].info.gsh[d]);
- assert (arrdata[group].info.lbnd[d]>=0 && arrdata[group].info.ubnd[d]<arrdata[group].info.gsh[d]);
- assert (arrdata[group].info.ubnd[d]-arrdata[group].info.lbnd[d]+1 == arrdata[group].info.lsh[d]);
+ assert (arrdata[group].info.lsh[d]>=0);
+ assert (arrdata[group].info.lsh[d]<=arrdata[group].info.gsh[d]);
+ assert (arrdata[group].info.lbnd[d]>=0);
+ assert (arrdata[group].info.lbnd[d]<=arrdata[group].info.ubnd[d]+1);
+ assert (arrdata[group].info.ubnd[d]<arrdata[group].info.gsh[d]);
+ assert (arrdata[group].info.lbnd[d] + arrdata[group].info.lsh[d] - 1
+ == arrdata[group].info.ubnd[d]);
assert (arrdata[group].info.lbnd[d]<=arrdata[group].info.ubnd[d]+1);
}
@@ -383,7 +400,13 @@ namespace Carpet {
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] = ((*arrdata[group].data[var]) (-tl, reflevel, component, mglevel)->storage());
+ 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;
+ }
}
}