diff options
author | schnetter <> | 2003-05-13 14:31:00 +0000 |
---|---|---|
committer | schnetter <> | 2003-05-13 14:31:00 +0000 |
commit | 48e194f027e1024dd0c96d347c81edadf3f380f3 (patch) | |
tree | 0e20b39041ea09a5b82119a9d1de59e5459d7805 | |
parent | 361ead75fd28f7273dabef58463cc617ee4eb1c1 (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.cc | 6 | ||||
-rw-r--r-- | Carpet/Carpet/src/Poison.cc | 54 | ||||
-rw-r--r-- | Carpet/Carpet/src/helpers.cc | 43 |
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; + } } } |