aboutsummaryrefslogtreecommitdiff
path: root/Source/WarpXPML.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WarpXPML.cpp')
-rw-r--r--Source/WarpXPML.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/Source/WarpXPML.cpp b/Source/WarpXPML.cpp
index 7f005eb70..949a44a89 100644
--- a/Source/WarpXPML.cpp
+++ b/Source/WarpXPML.cpp
@@ -4,6 +4,7 @@
#include <WarpXConst.H>
#include <AMReX_Print.H>
+#include <AMReX_VisMF.H>
#include <algorithm>
@@ -602,3 +603,51 @@ PML::FillBoundaryB ()
pml_B_cp[2]->FillBoundary(period);
}
}
+
+void
+PML::CheckPoint (const std::string& dir) const
+{
+ if (pml_E_fp[0])
+ {
+ VisMF::Write(*pml_E_fp[0], dir+"_Ex_fp");
+ VisMF::Write(*pml_E_fp[1], dir+"_Ey_fp");
+ VisMF::Write(*pml_E_fp[2], dir+"_Ez_fp");
+ VisMF::Write(*pml_B_fp[0], dir+"_Bx_fp");
+ VisMF::Write(*pml_B_fp[1], dir+"_By_fp");
+ VisMF::Write(*pml_B_fp[2], dir+"_Bz_fp");
+ }
+
+ if (pml_E_cp[0])
+ {
+ VisMF::Write(*pml_E_cp[0], dir+"_Ex_cp");
+ VisMF::Write(*pml_E_cp[1], dir+"_Ey_cp");
+ VisMF::Write(*pml_E_cp[2], dir+"_Ez_cp");
+ VisMF::Write(*pml_B_cp[0], dir+"_Bx_cp");
+ VisMF::Write(*pml_B_cp[1], dir+"_By_cp");
+ VisMF::Write(*pml_B_cp[2], dir+"_Bz_cp");
+ }
+}
+
+void
+PML::Restart (const std::string& dir)
+{
+ if (pml_E_fp[0])
+ {
+ VisMF::Read(*pml_E_fp[0], dir+"_Ex_fp");
+ VisMF::Read(*pml_E_fp[1], dir+"_Ey_fp");
+ VisMF::Read(*pml_E_fp[2], dir+"_Ez_fp");
+ VisMF::Read(*pml_B_fp[0], dir+"_Bx_fp");
+ VisMF::Read(*pml_B_fp[1], dir+"_By_fp");
+ VisMF::Read(*pml_B_fp[2], dir+"_Bz_fp");
+ }
+
+ if (pml_E_cp[0])
+ {
+ VisMF::Read(*pml_E_cp[0], dir+"_Ex_cp");
+ VisMF::Read(*pml_E_cp[1], dir+"_Ey_cp");
+ VisMF::Read(*pml_E_cp[2], dir+"_Ez_cp");
+ VisMF::Read(*pml_B_cp[0], dir+"_Bx_cp");
+ VisMF::Read(*pml_B_cp[1], dir+"_By_cp");
+ VisMF::Read(*pml_B_cp[2], dir+"_Bz_cp");
+ }
+}