diff options
author | schnetter <> | 2001-07-04 10:29:00 +0000 |
---|---|---|
committer | schnetter <> | 2001-07-04 10:29:00 +0000 |
commit | f1aa84c14ac110f5802603b4bf9ceb7923c5b471 (patch) | |
tree | 6a45cd17c5c96c90307302e699f521d2c80bd79f /Carpet/Carpet/src/Cycle.cc | |
parent | e1cce75b6dc96e7c88ccebff3ee4e03e8fdfc28e (diff) |
Broke the file "carpet.cc" into several files.
Broke the file "carpet.cc" into several files.
Simplified support for arrays with a dimension different from 3.
Added a testing thorn.
darcs-hash:20010704102946-07bb3-82132f0c643e91f0de33bbaef93f9c693ce7227f.gz
Diffstat (limited to 'Carpet/Carpet/src/Cycle.cc')
-rw-r--r-- | Carpet/Carpet/src/Cycle.cc | 135 |
1 files changed, 44 insertions, 91 deletions
diff --git a/Carpet/Carpet/src/Cycle.cc b/Carpet/Carpet/src/Cycle.cc index 69a195563..d0c841cae 100644 --- a/Carpet/Carpet/src/Cycle.cc +++ b/Carpet/Carpet/src/Cycle.cc @@ -3,15 +3,12 @@ #include "cctk.h" -#include "ggf.hh" -#include "gh.hh" +#include "Carpet/CarpetLib/src/ggf.hh" +#include "Carpet/CarpetLib/src/gh.hh" #include "carpet.hh" -extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Cycle.cc,v 1.19 2004/05/21 18:16:23 schnetter Exp $"; - CCTK_FILEVERSION(Carpet_Carpet_Cycle_cc); -} +static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Cycle.cc,v 1.1 2001/07/04 12:29:46 schnetter Exp $"; @@ -21,95 +18,51 @@ namespace Carpet { - void CycleTimeLevels (const cGH* cgh) + void CycleTimeLevels (cGH* cgh) { - Checkpoint ("CycleTimeLevels"); - assert (is_level_mode()); + Checkpoint ("%*sCycleTimeLevels", 2*reflevel, ""); for (int group=0; group<CCTK_NumGroups(); ++group) { - assert (group<(int)arrdata.size()); if (CCTK_QueryGroupStorageI(cgh, group)) { - switch (CCTK_GroupTypeI(group)) { - - case CCTK_GF: - assert (reflevel>=0 && reflevel<reflevels); - for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { - for (int m=0; m<(int)arrdata.at(group).size(); ++m) { - assert (m<(int)arrdata.at(group).size()); - assert (var<(int)arrdata.at(group).at(m).data.size()); - for (int c=0; c<arrdata.at(group).at(m).hh->components(reflevel); ++c) { - arrdata.at(group).at(m).data.at(var)->cycle (reflevel, c, mglevel); - } - } - } - break; - - case CCTK_SCALAR: - case CCTK_ARRAY: - if (do_global_mode) { - for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { - assert (var<(int)arrdata.at(group).at(0).data.size()); - for (int c=0; c<arrdata.at(group).at(0).hh->components(0); ++c) { - arrdata.at(group).at(0).data.at(var)->cycle (0, c, mglevel); - } - } - } - break; - - default: - assert (0); - } // switch grouptype - } // if storage - } // for group - } - - - - void FlipTimeLevels (const cGH* cgh) - { - Checkpoint ("FlipTimeLevels"); - assert (is_level_mode()); - - for (int group=0; group<CCTK_NumGroups(); ++group) { - assert (group<(int)arrdata.size()); - if (CCTK_QueryGroupStorageI(cgh, group)) { - const int num_vars = CCTK_NumVarsInGroupI(group); - if (num_vars>0) { - const int var0 = CCTK_FirstVarIndexI(group); - assert (var0>=0); - - switch (CCTK_GroupTypeI(group)) { - - case CCTK_GF: - for (int m=0; m<(int)arrdata.at(group).size(); ++m) { - for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { - assert (var<(int)arrdata.at(group).at(m).data.size()); - for (int c=0; c<arrdata.at(group).at(m).hh->components(reflevel); ++c) { - arrdata.at(group).at(m).data.at(var)->flip (reflevel, c, mglevel); - } - } - } - break; - - case CCTK_SCALAR: - case CCTK_ARRAY: - if (do_global_mode) { - for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { - assert (var<(int)arrdata.at(group).at(0).data.size()); - for (int c=0; c<arrdata.at(group).at(0).hh->components(0); ++c) { - arrdata.at(group).at(0).data.at(var)->flip (0, c, mglevel); - } - } - } - break; - - default: - assert (0); - } // switch grouptype - - } // if num_vars>0 - } // if storage - } // for group + for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { + const int n = CCTK_FirstVarIndexI(group) + var; + switch (CCTK_GroupTypeFromVarI(n)) { + case CCTK_SCALAR: { + assert (group<(int)scdata.size()); + assert (var<(int)scdata[group].data.size()); + const int num_tl = CCTK_NumTimeLevelsFromVarI(n); + assert (num_tl>0); + void* tmpdata = scdata[group].data[var][reflevel][0]; + for (int tl=1; tl<num_tl; ++tl) { + scdata[group].data[var][reflevel][tl] + = scdata[group].data[var][reflevel][tl-1]; + } + scdata[group].data[var][reflevel][0] = tmpdata; + tmpdata = 0; + break; + } + case CCTK_ARRAY: { + assert (group<(int)arrdata.size()); + assert (var<(int)arrdata[group].data.size()); + for (int c=0; c<arrdata[group].hh->components(reflevel); ++c) { + arrdata[group].data[var]->cycle (reflevel, c, mglevel); + } + break; + } + case CCTK_GF: { + assert (group<(int)gfdata.size()); + assert (var<(int)gfdata[group].data.size()); + for (int c=0; c<hh->components(reflevel); ++c) { + gfdata[group].data[var]->cycle (reflevel, c, mglevel); + } + break; + } + default: + abort(); + } + } + } + } } } // namespace Carpet |