aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/WarpXPushFieldsEM.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/FieldSolver/WarpXPushFieldsEM.cpp')
-rw-r--r--Source/FieldSolver/WarpXPushFieldsEM.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/Source/FieldSolver/WarpXPushFieldsEM.cpp b/Source/FieldSolver/WarpXPushFieldsEM.cpp
index 6c14757ea..7043ad809 100644
--- a/Source/FieldSolver/WarpXPushFieldsEM.cpp
+++ b/Source/FieldSolver/WarpXPushFieldsEM.cpp
@@ -311,8 +311,20 @@ WarpX::MacroscopicEvolveE (int lev, PatchType patch_type, amrex::Real a_dt) {
else {
amrex::Abort("Macroscopic EvolveE is not implemented for lev > 0, yet.");
}
- if (do_pml) {
- amrex::Abort("Macroscopic EvolveE is not implemented for pml boundary condition, yet");
+ if (do_pml && pml[lev]->ok()) {
+ if (patch_type == PatchType::fine) {
+ m_fdtd_solver_fp[lev]->EvolveEPML(
+ pml[lev]->GetE_fp(), pml[lev]->GetB_fp(),
+ pml[lev]->Getj_fp(), pml[lev]->GetF_fp(),
+ pml[lev]->GetMultiSigmaBox_fp(),
+ a_dt, pml_has_particles );
+ } else {
+ m_fdtd_solver_cp[lev]->EvolveEPML(
+ pml[lev]->GetE_cp(), pml[lev]->GetB_cp(),
+ pml[lev]->Getj_cp(), pml[lev]->GetF_cp(),
+ pml[lev]->GetMultiSigmaBox_cp(),
+ a_dt, pml_has_particles );
+ }
}
}