diff options
author | schnetter <> | 2004-01-30 09:40:00 +0000 |
---|---|---|
committer | schnetter <> | 2004-01-30 09:40:00 +0000 |
commit | c49c649924666ffe5a11ed9b0a2fd03b3a940d78 (patch) | |
tree | af83d82c30201621c9ce68aaa03916bb116e7842 | |
parent | 83397adaa1a0a7e255c5878815f75e65ebaa0d16 (diff) |
Call global mode routines at each time and for the coarsest possible
Call global mode routines at each time and for the coarsest possible
grid there, instead of (wrongly) at each time when the level 0 grid is
active there.
darcs-hash:20040130094052-07bb3-552e064e7f69fb827479e404c739f62cc7570887.gz
-rw-r--r-- | Carpet/Carpet/src/Evolve.cc | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/Carpet/Carpet/src/Evolve.cc b/Carpet/Carpet/src/Evolve.cc index b9a9d4bcf..4d06a7c17 100644 --- a/Carpet/Carpet/src/Evolve.cc +++ b/Carpet/Carpet/src/Evolve.cc @@ -31,7 +31,7 @@ #include "carpet.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Evolve.cc,v 1.31 2004/01/25 14:57:27 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Evolve.cc,v 1.32 2004/01/30 10:40:52 schnetter Exp $"; CCTK_FILEVERSION(Carpet_Carpet_Evolve_cc); } @@ -145,7 +145,12 @@ namespace Carpet { enter_level_mode (cgh, rl); const int do_every = mglevelfact * (maxreflevelfact/reflevelfact); if ((cgh->cctk_iteration-1) % do_every == 0) { - do_global_mode = reflevel==0; + const int coarsest_reflevel = rl; + while (coarsest_reflevel > 0 + && (cgh->cctk_iteration-1) % (mglevelfact * (maxreflevelfact / ipow(reffact, coarsest_reflevel-1))) == 0) { + --coarsest_reflevel; + } + do_global_mode = reflevel==coarsest_reflevel; do_meta_mode = do_global_mode && mglevel==mglevels-1; // Advance times @@ -187,7 +192,12 @@ namespace Carpet { enter_level_mode (cgh, rl); const int do_every = mglevelfact * (maxreflevelfact/reflevelfact); if (cgh->cctk_iteration % do_every == 0) { - do_global_mode = reflevel==0; + const int coarsest_reflevel = rl; + while (coarsest_reflevel > 0 + && (cgh->cctk_iteration-1) % (mglevelfact * (maxreflevelfact / ipow(reffact, coarsest_reflevel-1))) == 0) { + --coarsest_reflevel; + } + do_global_mode = reflevel==coarsest_reflevel; do_meta_mode = do_global_mode && mglevel==mglevels-1; Checkpoint ("Evolution II at iteration %d time %g%s%s", |