diff options
Diffstat (limited to 'Source/Diagnostics/WarpXIO.cpp')
-rw-r--r-- | Source/Diagnostics/WarpXIO.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/Source/Diagnostics/WarpXIO.cpp b/Source/Diagnostics/WarpXIO.cpp index 2e55dbc01..01365cba4 100644 --- a/Source/Diagnostics/WarpXIO.cpp +++ b/Source/Diagnostics/WarpXIO.cpp @@ -16,6 +16,7 @@ #include "Utils/TextMsg.H" #include "Utils/WarpXProfilerWrapper.H" #include "WarpX.H" +#include "Diagnostics/MultiDiagnostics.H" #include <ablastr/utils/Communication.H> @@ -223,6 +224,56 @@ WarpX::InitFromCheckpoint () is >> time_of_last_gal_shift; GotoNextLine(is); + + + auto & warpx = WarpX::GetInstance(); + for (int idiag = 0; idiag < warpx.GetMultiDiags().GetTotalDiags(); ++idiag) + { + if( warpx.GetMultiDiags().diagstypes(idiag) == DiagTypes::BackTransformed ) + { + auto& diag = warpx.GetMultiDiags().GetDiag(idiag); + if (diag.getnumbuffers() > 0) { + diag.InitDataBeforeRestart(); + for (int i_buffer=0; i_buffer<diag.getnumbuffers(); ++i_buffer){ + amrex::Real tlab; + is >> tlab; + diag.settlab(i_buffer, tlab); + int kindex_hi; + is >> kindex_hi; + diag.set_buffer_k_index_hi(i_buffer, kindex_hi); + + for (int idim = 0; idim < AMREX_SPACEDIM; ++idim) { + amrex::Real snapshot_lo; + is >> snapshot_lo; + diag.setSnapshotDomainLo(i_buffer, idim, snapshot_lo); + } + for (int idim = 0; idim < AMREX_SPACEDIM; ++idim) { + amrex::Real snapshot_hi; + is >> snapshot_hi; + diag.setSnapshotDomainHi(i_buffer, idim, snapshot_hi); + } + + int flush_counter; + is >> flush_counter; + diag.set_flush_counter(i_buffer, flush_counter); + + int last_valid_Zslice; + is >> last_valid_Zslice; + diag.set_last_valid_Zslice(i_buffer, last_valid_Zslice); + + int snapshot_full_flag; + is >> snapshot_full_flag; + diag.set_snapshot_full(i_buffer, snapshot_full_flag); + + } + diag.InitDataAfterRestart(); + } else { + diag.InitData(); + } + } else { + warpx.GetMultiDiags().GetDiag(idiag).InitData(); + } + } } const int nlevs = finestLevel()+1; |