aboutsummaryrefslogtreecommitdiff
path: root/Carpet
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@cct.lsu.edu>2010-09-07 13:03:36 -0500
committerBarry Wardell <barry.wardell@gmail.com>2011-12-14 18:25:19 +0000
commit2abc7ebb35006501498d5b0c8a72df11f4acab82 (patch)
treefc13cb1de31982ad4e226e38a5868a74533a1978 /Carpet
parentf0c6b91abb6bc0b8dc6a59185b5f2ec0382d9b8c (diff)
CarpetIOHDF5: Set times correctly after recovering
Recovery happens level-by-level in Cactus. When recovering the refinement level times and the global time, set them correctly according to the current refinement level.
Diffstat (limited to 'Carpet')
-rw-r--r--Carpet/CarpetIOHDF5/src/Input.cc21
1 files changed, 18 insertions, 3 deletions
diff --git a/Carpet/CarpetIOHDF5/src/Input.cc b/Carpet/CarpetIOHDF5/src/Input.cc
index 49e12513d..c29bc7b9a 100644
--- a/Carpet/CarpetIOHDF5/src/Input.cc
+++ b/Carpet/CarpetIOHDF5/src/Input.cc
@@ -205,6 +205,21 @@ void CarpetIOHDF5_RecoverGridStructure (CCTK_ARGUMENTS)
}
}
}
+ // We are in level mode here (we probably shouldn't be, but that's
+ // how Cactus I/O was designed), so we need to fix up certain
+ // things. See Carpet's function leave_level_mode to see what
+ // happens when we leave level mode.
+ {
+ // TODO: Switch to global mode instead of fixing up things
+ // manually
+ assert (reflevel != -1);
+ int const tl = 0;
+ // ignore fileset.global_time
+ global_time = tt->get_time (mglevel, reflevel, tl);
+ cctkGH->cctk_time = global_time;
+ delta_time = fileset.delta_time;
+ cctkGH->cctk_delta_time = delta_time;
+ }
PostRegrid (cctkGH);
@@ -357,14 +372,14 @@ int Recover (cGH* cctkGH, const char *basefilename, int called_from)
// set global Cactus/Carpet variables
if (in_recovery) {
- global_time = fileset->global_time;
- delta_time = fileset->delta_time;
+ // global_time = fileset->global_time;
+ // delta_time = fileset->delta_time;
CCTK_SetMainLoopIndex (fileset->main_loop_index);
cctkGH->cctk_iteration = fileset->cctk_iteration;
// int const idx = mglevel*fileset->num_reflevels + reflevel;
// cctkGH->cctk_time = fileset->mgleveltimes.at(idx);
- cctkGH->cctk_time = global_time;
+ // cctkGH->cctk_time = global_time;
if (use_grid_structure_from_checkpoint) {
// recover the grid structure only once