From dd754fc5be4955b18b6f0a6911d5a589bd5d0c0a Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Tue, 26 Feb 2008 14:04:00 +0000 Subject: Carpet: Set time on refinement levels explicitly from global time Set time on the refinement levels explicitly from the global time. This avoids accumulation of round-off errors. darcs-hash:20080226140439-dae7b-999dc372d9586fa34ccc181d39572338d5f23e9e.gz --- Carpet/Carpet/src/Evolve.cc | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'Carpet/Carpet/src/Evolve.cc') diff --git a/Carpet/Carpet/src/Evolve.cc b/Carpet/Carpet/src/Evolve.cc index 574dbc246..1cf712c8b 100644 --- a/Carpet/Carpet/src/Evolve.cc +++ b/Carpet/Carpet/src/Evolve.cc @@ -1,3 +1,4 @@ +#include #include #include #include @@ -358,13 +359,21 @@ namespace Carpet { have_done_anything = true; // Advance times - for (int m=0; madvance_time (reflevel, mglevel); - } cctkGH->cctk_time = (global_time - delta_time / maxtimereflevelfact + delta_time * mglevelfact / timereflevelfact); + CCTK_REAL const carpet_time = cctkGH->cctk_time / delta_time; + for (int m=0; madvance_time (reflevel, mglevel); + CCTK_REAL const eps = 1.0e-12; + static_assert (abs(0.1) > 0, + "Function CarpetLib::abs has wrong signature"); + CCTK_REAL const level_time = + vtt.at(m)->get_time (reflevel, mglevel); + assert (abs (level_time - carpet_time) < eps); + vtt.at(m)->set_time (reflevel, mglevel, carpet_time); + } CycleTimeLevels (cctkGH); Waypoint ("Evolution I at iteration %d time %g%s%s", -- cgit v1.2.3