diff options
author | Erik Schnetter <schnetter@aei.mpg.de> | 2005-03-03 10:19:00 +0000 |
---|---|---|
committer | Erik Schnetter <schnetter@aei.mpg.de> | 2005-03-03 10:19:00 +0000 |
commit | b49800852e22bb212d54c71a550d6a19daad4c7b (patch) | |
tree | bfed694885ff3c29cc4810b22e69a3ddc8e8aa71 /Carpet/Carpet/src/modes.cc | |
parent | 2a6fa8359b9bdcaa7e99423a548cac72fbb0aab4 (diff) |
Carpet: Handle groups with all time levels active correctly
darcs-hash:20050303101914-891bb-4bd9006f6da972bb3a1d8d9a4a9127359bcf1a4d.gz
Diffstat (limited to 'Carpet/Carpet/src/modes.cc')
-rw-r--r-- | Carpet/Carpet/src/modes.cc | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/Carpet/Carpet/src/modes.cc b/Carpet/Carpet/src/modes.cc index 10237e2df..24bdfa377 100644 --- a/Carpet/Carpet/src/modes.cc +++ b/Carpet/Carpet/src/modes.cc @@ -127,15 +127,18 @@ namespace Carpet { if (numvars>0) { const int firstvar = CCTK_FirstVarIndexI (group); assert (firstvar>=0); - const int num_tl = CCTK_NumTimeLevelsFromVarI (firstvar); + const int max_tl = CCTK_MaxTimeLevelsGI (group); + assert (max_tl>=0); + const int active_tl = CCTK_ActiveTimeLevelsGI (cgh, group); + assert (active_tl>=0 and active_tl<=max_tl); assert (arrdata.at(group).at(m).hh->is_local(rl,c)); for (int var=0; var<numvars; ++var) { assert (firstvar+var<CCTK_NumVars()); - for (int tl=0; tl<num_tl; ++tl) { - ggf * const ff = arrdata.at(group).at(m).data.at(var); - if (ff) { + ggf * const ff = arrdata.at(group).at(m).data.at(var); + for (int tl=0; tl<max_tl; ++tl) { + if (ff and tl<active_tl) { gdata * const data = (*ff) (tl, rl, c, ml); assert (data); cgh->data[firstvar+var][tl] = data->storage(); @@ -198,13 +201,14 @@ namespace Carpet { if (numvars>0) { const int firstvar = CCTK_FirstVarIndexI (group); assert (firstvar>=0); - const int num_tl = CCTK_NumTimeLevelsFromVarI (firstvar); + const int max_tl = CCTK_MaxTimeLevelsGI (group); + assert (max_tl>=0); assert (group<(int)arrdata.size()); for (int var=0; var<numvars; ++var) { assert (firstvar+var<CCTK_NumVars()); - for (int tl=0; tl<num_tl; ++tl) { - cgh->data[firstvar+var][tl] = 0; + for (int tl=0; tl<max_tl; ++tl) { + cgh->data[firstvar+var][tl] = NULL; } } } @@ -406,16 +410,19 @@ namespace Carpet { if (numvars>0) { const int firstvar = CCTK_FirstVarIndexI (group); assert (firstvar>=0); - const int num_tl = CCTK_NumTimeLevelsFromVarI (firstvar); + const int max_tl = CCTK_MaxTimeLevelsGI (group); + assert (max_tl>=0); + const int active_tl = CCTK_ActiveTimeLevelsGI (cgh, group); + assert (active_tl>=0 and active_tl<=max_tl); // assert (vhh.at(map)->is_local(reflevel,component)); assert (group<(int)arrdata.size()); for (int var=0; var<numvars; ++var) { assert (firstvar+var<CCTK_NumVars()); - for (int tl=0; tl<num_tl; ++tl) { - ggf * const ff = arrdata.at(group).at(map).data.at(var); - if (ff) { + ggf * const ff = arrdata.at(group).at(map).data.at(var); + for (int tl=0; tl<max_tl; ++tl) { + if (ff and tl<active_tl) { gdata * const data = (*ff) (tl, reflevel, component, mglevel); assert (data); cgh->data[firstvar+var][tl] = data->storage(); @@ -479,13 +486,14 @@ namespace Carpet { if (numvars>0) { const int firstvar = CCTK_FirstVarIndexI (group); assert (firstvar>=0); - const int num_tl = CCTK_NumTimeLevelsFromVarI (firstvar); + const int max_tl = CCTK_MaxTimeLevelsGI (group); + assert (max_tl>=0); assert (group<(int)arrdata.size()); for (int var=0; var<numvars; ++var) { assert (firstvar+var<CCTK_NumVars()); - for (int tl=0; tl<num_tl; ++tl) { - cgh->data[firstvar+var][tl] = 0; + for (int tl=0; tl<max_tl; ++tl) { + cgh->data[firstvar+var][tl] = NULL; } } } |