diff options
-rw-r--r-- | Carpet/Carpet/src/Cycle.cc | 24 | ||||
-rw-r--r-- | Carpet/Carpet/src/Initialise.cc | 6 | ||||
-rw-r--r-- | Carpet/Carpet/src/carpet.hh | 3 | ||||
-rw-r--r-- | Carpet/CarpetLib/src/ggf.cc | 18 | ||||
-rw-r--r-- | Carpet/CarpetLib/src/ggf.hh | 5 | ||||
-rw-r--r-- | Carpet/CarpetReduce/src/reduce.cc | 5 |
6 files changed, 52 insertions, 9 deletions
diff --git a/Carpet/Carpet/src/Cycle.cc b/Carpet/Carpet/src/Cycle.cc index af3e564ee..46faba22f 100644 --- a/Carpet/Carpet/src/Cycle.cc +++ b/Carpet/Carpet/src/Cycle.cc @@ -8,7 +8,7 @@ #include "carpet.hh" -static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Cycle.cc,v 1.6 2002/06/06 00:23:34 schnetter Exp $"; +static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Cycle.cc,v 1.7 2002/06/06 14:20:15 schnetter Exp $"; CCTK_FILEVERSION(Carpet_Cycle_cc) @@ -40,4 +40,26 @@ namespace Carpet { } } + + + void FlipTimeLevels (const cGH* cgh) + { + Checkpoint ("%*sFlipTimeLevels", 2*reflevel, ""); + + for (int group=0; group<CCTK_NumGroups(); ++group) { + if (reflevel<arrdata[group].hh->reflevels() + && CCTK_QueryGroupStorageI(cgh, group)) { + for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { + + 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); + } + + } + } + } + } + } // namespace Carpet diff --git a/Carpet/Carpet/src/Initialise.cc b/Carpet/Carpet/src/Initialise.cc index 005a12991..86d8cdeee 100644 --- a/Carpet/Carpet/src/Initialise.cc +++ b/Carpet/Carpet/src/Initialise.cc @@ -9,7 +9,7 @@ #include "carpet.hh" -static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Initialise.cc,v 1.9 2002/03/26 13:22:27 schnetter Exp $"; +static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Initialise.cc,v 1.10 2002/06/06 14:20:15 schnetter Exp $"; CCTK_FILEVERSION(Carpet_Initialise_cc) @@ -67,8 +67,8 @@ namespace Carpet { } else { // 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; + // This circumvents a bug in CactusBase/Time + cgh->cctk_delta_time = base_delta_time / reflevelfact; } // Set up the initial data diff --git a/Carpet/Carpet/src/carpet.hh b/Carpet/Carpet/src/carpet.hh index 6fded25f4..40be26e61 100644 --- a/Carpet/Carpet/src/carpet.hh +++ b/Carpet/Carpet/src/carpet.hh @@ -1,4 +1,4 @@ -// $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/carpet.hh,v 1.16 2002/03/11 13:17:10 schnetter Exp $ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/carpet.hh,v 1.17 2002/06/06 14:20:15 schnetter Exp $ #include "Carpet/CarpetLib/src/gh.hh" @@ -8,6 +8,7 @@ namespace Carpet { void Regrid (const cGH* cgh); void CycleTimeLevels (const cGH* cgh); + void FlipTimeLevels (const cGH* cgh); void Restrict (const cGH* cgh); void Recompose (const cGH* cgh, diff --git a/Carpet/CarpetLib/src/ggf.cc b/Carpet/CarpetLib/src/ggf.cc index 433ad35ca..5f1c2a8e0 100644 --- a/Carpet/CarpetLib/src/ggf.cc +++ b/Carpet/CarpetLib/src/ggf.cc @@ -6,7 +6,7 @@ copyright : (C) 2000 by Erik Schnetter email : schnetter@astro.psu.edu - $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/ggf.cc,v 1.15 2002/05/05 22:17:02 schnetter Exp $ + $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/ggf.cc,v 1.16 2002/06/06 14:20:15 schnetter Exp $ ***************************************************************************/ @@ -166,6 +166,22 @@ void generic_gf<D>::cycle (int rl, int c, int ml) { storage[tmax-tmin][rl][c][ml] = tmpdata; } +// Flip the time levels by exchanging the data sets +template<int D> +void generic_gf<D>::flip (int rl, int c, int ml) { + assert (rl>=0 && rl<h.reflevels()); + assert (c>=0 && c<h.components(rl)); + assert (ml>=0 && ml<h.mglevels(rl,c)); + for (int t=0; t<(tmax-tmin)/2; ++t) { + const int tl1 = tmin + t; + const int tl2 = tmax - t; + assert (tl1 < tl2); + generic_data<D>* tmpdata = storage[tl1-tmin][rl][c][ml]; + storage[tl1-tmin][rl][c][ml] = storage[tl2-tmin][rl][c][ml]; + storage[tl2-tmin][rl][c][ml] = tmpdata; + } +} + // Operations diff --git a/Carpet/CarpetLib/src/ggf.hh b/Carpet/CarpetLib/src/ggf.hh index df785cd79..00a19fe66 100644 --- a/Carpet/CarpetLib/src/ggf.hh +++ b/Carpet/CarpetLib/src/ggf.hh @@ -6,7 +6,7 @@ copyright : (C) 2000 by Erik Schnetter email : schnetter@astro.psu.edu - $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/ggf.hh,v 1.9 2002/05/05 22:17:02 schnetter Exp $ + $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/ggf.hh,v 1.10 2002/06/06 14:20:16 schnetter Exp $ ***************************************************************************/ @@ -97,6 +97,9 @@ public: // Cycle the time levels by rotating the data sets void cycle (int rl, int c, int ml); + // Flip the time levels by exchanging the data sets + void flip (int rl, int c, int ml); + // Helpers diff --git a/Carpet/CarpetReduce/src/reduce.cc b/Carpet/CarpetReduce/src/reduce.cc index 65cf19c1a..5b602f3b6 100644 --- a/Carpet/CarpetReduce/src/reduce.cc +++ b/Carpet/CarpetReduce/src/reduce.cc @@ -1,9 +1,10 @@ -// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.cc,v 1.9 2002/06/05 19:11:00 schnetter Exp $ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.cc,v 1.10 2002/06/06 14:20:16 schnetter Exp $ #include <assert.h> #include <float.h> #include <limits.h> #include <math.h> +#include <stdio.h> #include <stdlib.h> #include <complex> @@ -18,7 +19,7 @@ #include "reduce.hh" -static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.cc,v 1.9 2002/06/05 19:11:00 schnetter Exp $"; +static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.cc,v 1.10 2002/06/06 14:20:16 schnetter Exp $"; CCTK_FILEVERSION(CarpetReduce_reduce_cc) |