diff options
author | schnetter <> | 2002-06-06 19:38:00 +0000 |
---|---|---|
committer | schnetter <> | 2002-06-06 19:38:00 +0000 |
commit | 9e490afcfebf8b46c28f286be44a558261622106 (patch) | |
tree | 4efa3695566ef1e13e29f9311c56651e93a4b7c1 /Carpet | |
parent | 911156a7bbc76aa1166c91d1f5d123e70640d211 (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.cc | 11 | ||||
-rw-r--r-- | Carpet/Carpet/src/helpers.cc | 83 |
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 |