diff options
author | schnetter <> | 2004-07-06 12:44:00 +0000 |
---|---|---|
committer | schnetter <> | 2004-07-06 12:44:00 +0000 |
commit | f77e0f789185ab353fc2ead6478fd795eb60f290 (patch) | |
tree | 5cb6377b2ebefad6c35ffa7c07209f06ae15c5d1 /Carpet/CarpetReduce | |
parent | 33737d2576430e148893dd1244dd4eafa35b138a (diff) |
Support multi-patch.
darcs-hash:20040706124432-07bb3-194cca535ccc5d222c4abc99c6a6dd678e61732b.gz
Diffstat (limited to 'Carpet/CarpetReduce')
-rw-r--r-- | Carpet/CarpetReduce/src/reduce.cc | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/Carpet/CarpetReduce/src/reduce.cc b/Carpet/CarpetReduce/src/reduce.cc index cfd0f6631..9d6a8453a 100644 --- a/Carpet/CarpetReduce/src/reduce.cc +++ b/Carpet/CarpetReduce/src/reduce.cc @@ -1,4 +1,4 @@ -// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.cc,v 1.41 2004/07/02 17:47:38 schnetter Exp $ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.cc,v 1.42 2004/07/06 14:44:32 schnetter Exp $ #include <assert.h> #include <float.h> @@ -23,7 +23,7 @@ #include "reduce.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.cc,v 1.41 2004/07/02 17:47:38 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.cc,v 1.42 2004/07/06 14:44:32 schnetter Exp $"; CCTK_FILEVERSION(Carpet_CarpetReduce_reduce_cc); } @@ -896,6 +896,7 @@ namespace CarpetReduce { bool const reduce_arrays = CCTK_GroupTypeFromVarI(vi) != CCTK_GF; bool const want_global_mode = is_global_mode() && ! reduce_arrays; + bool const want_level_mode = is_level_mode() && ! reduce_arrays; for (int n=0; n<num_invars; ++n) { if ((CCTK_GroupTypeFromVarI(invars[n]) != CCTK_GF) != reduce_arrays) { @@ -903,17 +904,14 @@ namespace CarpetReduce { } } - // Multiple maps are not supported - // (because we don't know how to select a map) - assert (maps == 1); - const int m = 0; - // Ensure that all maps have the same number of refinement levels for (int m=0; m<(int)vhh.size(); ++m) { assert (vhh.at(m)->reflevels() == vhh.at(0)->reflevels()); } int const minrl = reduce_arrays ? 0 : want_global_mode ? 0 : reflevel; int const maxrl = reduce_arrays ? 1 : want_global_mode ? vhh.at(0)->reflevels() : reflevel+1; + int const minm = reduce_arrays ? 0 : want_global_mode || want_level_mode ? 0 : Carpet::map; + int const maxm = reduce_arrays ? 1 : want_global_mode || want_level_mode ? maps : Carpet::map+1; @@ -978,7 +976,7 @@ namespace CarpetReduce { CCTK_REAL const time = current_time; vector<CCTK_REAL> times(num_tl); for (int tl=0; tl<num_tl; ++tl) { - times.at(tl) = vtt.at(m)->time (-tl, reflevel, mglevel); + times.at(tl) = vtt.at(0)->time (-tl, reflevel, mglevel); } // Calculate interpolation weights @@ -1012,7 +1010,8 @@ namespace CarpetReduce { - BEGIN_MAP_LOOP(cgh, reduce_arrays ? CCTK_ARRAY : CCTK_GF) { + for (int m=minm; m<maxm; ++m) { + enter_singlemap_mode (const_cast<cGH*>(cgh), m); BEGIN_LOCAL_COMPONENT_LOOP(cgh, reduce_arrays ? CCTK_ARRAY : CCTK_GF) { @@ -1081,7 +1080,9 @@ namespace CarpetReduce { } END_LOCAL_COMPONENT_LOOP; - } END_MAP_LOOP; + leave_singlemap_mode (const_cast<cGH*>(cgh)); + } // for m + leave_level_mode (const_cast<cGH*>(cgh)); } // for rl } END_GLOBAL_MODE; |