aboutsummaryrefslogtreecommitdiff
path: root/Carpet/Carpet/src/Cycle.cc
diff options
context:
space:
mode:
authorschnetter <>2001-07-04 10:29:00 +0000
committerschnetter <>2001-07-04 10:29:00 +0000
commitf1aa84c14ac110f5802603b4bf9ceb7923c5b471 (patch)
tree6a45cd17c5c96c90307302e699f521d2c80bd79f /Carpet/Carpet/src/Cycle.cc
parente1cce75b6dc96e7c88ccebff3ee4e03e8fdfc28e (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.cc135
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