From 1ab0d7d9c5f3a9044fa7e3b0c215ace4f7fcd74c Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Tue, 23 Oct 2012 14:34:32 -0400 Subject: Carpet: Correct errors in adaptive step size handling --- Carpet/Carpet/src/Cycle.cc | 2 ++ Carpet/Carpet/src/Evolve.cc | 5 +++-- Carpet/Carpet/src/modes.cc | 2 ++ Carpet/Carpet/src/modes.hh | 1 + 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Carpet/Carpet/src/Cycle.cc b/Carpet/Carpet/src/Cycle.cc index 7e9bf0dd7..a3c254b55 100644 --- a/Carpet/Carpet/src/Cycle.cc +++ b/Carpet/Carpet/src/Cycle.cc @@ -130,6 +130,7 @@ namespace Carpet { assert (timelevel == 0); tt->retreat_time (mglevel, reflevel); + assert (not adaptive_stepsize); cctkGH->cctk_time = tt->get_time (mglevel, reflevel, timelevel); for (int group=0; groupflip_timelevels (mglevel, reflevel); + assert (not adaptive_stepsize); cctkGH->cctk_time = tt->get_time (mglevel, reflevel, timelevel); cctkGH->cctk_delta_time *= -1; diff --git a/Carpet/Carpet/src/Evolve.cc b/Carpet/Carpet/src/Evolve.cc index b427920e3..936414d40 100644 --- a/Carpet/Carpet/src/Evolve.cc +++ b/Carpet/Carpet/src/Evolve.cc @@ -239,7 +239,8 @@ namespace Carpet { cctkGH->cctk_time = global_time; } else { // Take varying step sizes into account - cctkGH->cctk_time += delta_time; + cctkGH->cctk_time += cctkGH->cctk_delta_time; + delta_time = cctkGH->cctk_delta_time; global_time = cctkGH->cctk_time; } @@ -436,8 +437,8 @@ namespace Carpet { = (global_time - delta_time / maxtimereflevelfact + delta_time * mglevelfact / timereflevelfact); - tt->set_time (mglevel, reflevel, timelevel, cctkGH->cctk_time); } + tt->set_time (mglevel, reflevel, timelevel, cctkGH->cctk_time); Waypoint ("Evolution I at iteration %d time %g%s%s%s", cctkGH->cctk_iteration, (double)cctkGH->cctk_time, diff --git a/Carpet/Carpet/src/modes.cc b/Carpet/Carpet/src/modes.cc index 12a36d3b0..88404984b 100644 --- a/Carpet/Carpet/src/modes.cc +++ b/Carpet/Carpet/src/modes.cc @@ -97,6 +97,8 @@ namespace Carpet { // Set time delta if (not adaptive_stepsize) { cctkGH->cctk_delta_time = delta_time * mglevelfact; + } else { + delta_time = cctkGH->cctk_delta_time; } if (maps == 1) { // Set space delta diff --git a/Carpet/Carpet/src/modes.hh b/Carpet/Carpet/src/modes.hh index 488b7e79f..3d6c0c76b 100644 --- a/Carpet/Carpet/src/modes.hh +++ b/Carpet/Carpet/src/modes.hh @@ -254,6 +254,7 @@ namespace Carpet { assert (do_allow_past_timelevels); \ do_allow_past_timelevels = false; \ assert (timelevel == 0); \ + assert (not adaptive_stepsize); \ for (timelevel = timelevels - 1; timelevel >= 0; -- timelevel) { \ cctkGH->cctk_time = tt->get_time (mglevel, reflevel, timelevel); \ { -- cgit v1.2.3