aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@gmail.com>2012-10-23 14:34:32 -0400
committerErik Schnetter <schnetter@gmail.com>2012-10-23 14:34:32 -0400
commit1ab0d7d9c5f3a9044fa7e3b0c215ace4f7fcd74c (patch)
treecea7b52dab2316e6866a37e55bbb702559b94ebd
parent05f213b500cccb3aae0eb97ee775414ec077f713 (diff)
Carpet: Correct errors in adaptive step size handling
-rw-r--r--Carpet/Carpet/src/Cycle.cc2
-rw-r--r--Carpet/Carpet/src/Evolve.cc5
-rw-r--r--Carpet/Carpet/src/modes.cc2
-rw-r--r--Carpet/Carpet/src/modes.hh1
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; group<CCTK_NumGroups(); ++group) {
@@ -188,6 +189,7 @@ namespace Carpet {
assert (timelevel == 0);
tt->flip_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); \
{