diff options
author | Erik Schnetter <schnetter@cct.lsu.edu> | 2010-09-07 13:03:36 -0500 |
---|---|---|
committer | Barry Wardell <barry.wardell@gmail.com> | 2011-12-14 18:25:19 +0000 |
commit | 2abc7ebb35006501498d5b0c8a72df11f4acab82 (patch) | |
tree | fc13cb1de31982ad4e226e38a5868a74533a1978 /Carpet | |
parent | f0c6b91abb6bc0b8dc6a59185b5f2ec0382d9b8c (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.cc | 21 |
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 |