aboutsummaryrefslogtreecommitdiff
path: root/Carpet
diff options
context:
space:
mode:
authorschnetter <>2002-06-06 19:38:00 +0000
committerschnetter <>2002-06-06 19:38:00 +0000
commit9e490afcfebf8b46c28f286be44a558261622106 (patch)
tree4efa3695566ef1e13e29f9311c56651e93a4b7c1 /Carpet
parent911156a7bbc76aa1166c91d1f5d123e70640d211 (diff)
Set grid extents of scalars and arrays correctly.
darcs-hash:20020606193831-07bb3-3a7b69164a1871feb9e74b6a9571f9684602b441.gz
Diffstat (limited to 'Carpet')
-rw-r--r--Carpet/Carpet/src/SetupGH.cc11
-rw-r--r--Carpet/Carpet/src/helpers.cc83
2 files changed, 56 insertions, 38 deletions
diff --git a/Carpet/Carpet/src/SetupGH.cc b/Carpet/Carpet/src/SetupGH.cc
index 98e13d6f1..c643292b2 100644
--- a/Carpet/Carpet/src/SetupGH.cc
+++ b/Carpet/Carpet/src/SetupGH.cc
@@ -18,7 +18,7 @@
#include "carpet.hh"
-static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/SetupGH.cc,v 1.27 2002/06/06 00:23:35 schnetter Exp $";
+static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/SetupGH.cc,v 1.28 2002/06/06 21:38:31 schnetter Exp $";
CCTK_FILEVERSION(Carpet_SetupGH_cc)
@@ -34,6 +34,8 @@ namespace Carpet {
{
DECLARE_CCTK_PARAMETERS;
+ int ierr;
+
assert (cgh->cctk_dim == dim);
// Not sure what to do with that
@@ -112,7 +114,8 @@ namespace Carpet {
for (int group=0; group<CCTK_NumGroups(); ++group) {
cGroup gp;
- CCTK_GroupData (group, &gp);
+ ierr = CCTK_GroupData (group, &gp);
+ assert (!ierr);
switch (gp.grouptype) {
@@ -136,6 +139,8 @@ namespace Carpet {
disttype = gp.disttype;
const CCTK_INT * const * const sz = CCTK_GroupSizesI(group);
const CCTK_INT * const * const gsz = CCTK_GroupGhostsizesI(group);
+ assert (sz);
+ assert (gsz);
for (int d=0; d<gp.dim; ++d) {
if (sz) sizes[d] = *sz[d];
if (gsz) ghostsizes[d] = *gsz[d];
@@ -209,7 +214,7 @@ namespace Carpet {
}
case CCTK_GF: {
- assert (CCTK_GroupDimI(group) == dim);
+ assert (gp.dim == dim);
arrdata[group].info.dim = dim;
arrdata[group].hh = hh;
arrdata[group].tt = tt;
diff --git a/Carpet/Carpet/src/helpers.cc b/Carpet/Carpet/src/helpers.cc
index d26aad03c..0200f395c 100644
--- a/Carpet/Carpet/src/helpers.cc
+++ b/Carpet/Carpet/src/helpers.cc
@@ -12,7 +12,7 @@
#include "carpet.hh"
-static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/helpers.cc,v 1.21 2002/06/06 00:23:35 schnetter Exp $";
+static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/helpers.cc,v 1.22 2002/06/06 21:38:31 schnetter Exp $";
CCTK_FILEVERSION(Carpet_helpers_cc)
@@ -248,10 +248,12 @@ namespace Carpet {
assert (component==-1
|| (mglevel>=0 && mglevel<hh->mglevels(reflevel,component)));
+
+
+ // Set Cactus parameters
if (component == -1) {
// Global mode -- no component is active
- // Set Cactus parameters to pseudo values
for (int d=0; d<dim; ++d) {
cgh->cctk_lsh[d] = 0xdeadbeef;
cgh->cctk_bbox[2*d ] = 0xdeadbeef;
@@ -262,7 +264,42 @@ namespace Carpet {
cgh->cctk_lssh[CCTK_LSSH_IDX(stg,d)] = 0xdeadbeef;
}
}
- for (int group=0; group<CCTK_NumGroups(); ++group) {
+
+ } else {
+ // Local mode
+
+ assert (reflevel < (int)dd->boxes.size());
+ assert (component < (int)dd->boxes[reflevel].size());
+ assert (mglevel < (int)dd->boxes[reflevel][component].size());
+ const bbox<int,dim>& ext
+ = dd->boxes[reflevel][component][mglevel].exterior;
+ for (int d=0; d<dim; ++d) {
+ cgh->cctk_lsh[d] = (ext.shape() / ext.stride())[d];
+ cgh->cctk_lbnd[d] = (ext.lower() / ext.stride())[d];
+ cgh->cctk_ubnd[d] = (ext.upper() / ext.stride())[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);
+ cgh->cctk_bbox[2*d ] = hh->outer_boundaries[reflevel][component][d][0];
+ cgh->cctk_bbox[2*d+1] = hh->outer_boundaries[reflevel][component][d][1];
+ for (int stg=0; stg<CCTK_NSTAGGER; ++stg) {
+ // TODO: support staggering
+ cgh->cctk_lssh[CCTK_LSSH_IDX(stg,d)] = cgh->cctk_lsh[d];
+ }
+ }
+
+ } // if local mode
+
+
+
+ // Set Cactus parameters for all groups
+ for (int group=0; group<CCTK_NumGroups(); ++group) {
+
+ if (CCTK_GroupTypeI(group) == CCTK_GF
+ && component == -1) {
+ // Global mode for a grid function: not active
+
for (int d=0; d<dim; ++d) {
((int*)arrdata[group].info.lsh)[d] = 0xdeadbeef;
((int*)arrdata[group].info.bbox)[2*d ] = 0xdeadbeef;
@@ -270,35 +307,10 @@ namespace Carpet {
((int*)arrdata[group].info.lbnd)[d] = 0xdeadbeef;
((int*)arrdata[group].info.ubnd)[d] = 0xdeadbeef;
}
- }
-
- } else {
- // Local mode -- a component is active
-
- // Set Cactus parameters
- {
- assert (reflevel < (int)dd->boxes.size());
- assert (component < (int)dd->boxes[reflevel].size());
- assert (mglevel < (int)dd->boxes[reflevel][component].size());
- const bbox<int,dim>& ext
- = dd->boxes[reflevel][component][mglevel].exterior;
- for (int d=0; d<dim; ++d) {
- cgh->cctk_lsh[d] = (ext.shape() / ext.stride())[d];
- cgh->cctk_lbnd[d] = (ext.lower() / ext.stride())[d];
- cgh->cctk_ubnd[d] = (ext.upper() / ext.stride())[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);
- cgh->cctk_bbox[2*d ] = hh->outer_boundaries[reflevel][component][d][0];
- cgh->cctk_bbox[2*d+1] = hh->outer_boundaries[reflevel][component][d][1];
- for (int stg=0; stg<CCTK_NSTAGGER; ++stg) {
- // TODO: support staggering
- cgh->cctk_lssh[CCTK_LSSH_IDX(stg,d)] = cgh->cctk_lsh[d];
- }
- }
- }
- for (int group=0; group<CCTK_NumGroups(); ++group) {
+
+ } else {
+ // Local mode, or array or scalar: active
+
int rl, c;
if (CCTK_GroupTypeI(group) == CCTK_GF) {
rl = reflevel;
@@ -340,10 +352,11 @@ namespace Carpet {
((int*)arrdata[group].info.bbox)[2*d ] = 0;
((int*)arrdata[group].info.bbox)[2*d+1] = 0;
}
- }
- }
+ } // for d
+
+ } // if local mode
- } // if local mode
+ } // for group