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.cpp49
1 files changed, 47 insertions, 2 deletions
diff --git a/Source/FieldSolver/WarpXPushFieldsEM.cpp b/Source/FieldSolver/WarpXPushFieldsEM.cpp
index a991c539d..222a6ae6f 100644
--- a/Source/FieldSolver/WarpXPushFieldsEM.cpp
+++ b/Source/FieldSolver/WarpXPushFieldsEM.cpp
@@ -192,9 +192,11 @@ WarpX::EvolveB (int lev, PatchType patch_type, amrex::Real a_dt)
// Evolve B field in regular cells
if (patch_type == PatchType::fine) {
- m_fdtd_solver_fp[lev]->EvolveB(Bfield_fp[lev], Efield_fp[lev], m_face_areas[lev], lev, a_dt );
+ m_fdtd_solver_fp[lev]->EvolveB(Bfield_fp[lev], Efield_fp[lev], G_fp[lev],
+ m_face_areas[lev], lev, a_dt);
} else {
- m_fdtd_solver_cp[lev]->EvolveB(Bfield_cp[lev], Efield_cp[lev], m_face_areas[lev], lev, a_dt );
+ m_fdtd_solver_cp[lev]->EvolveB(Bfield_cp[lev], Efield_cp[lev], G_cp[lev],
+ m_face_areas[lev], lev, a_dt);
}
// Evolve B field in PML cells
@@ -318,7 +320,50 @@ WarpX::EvolveF (int lev, PatchType patch_type, amrex::Real a_dt, DtType a_dt_typ
pml[lev]->GetF_cp(), pml[lev]->GetE_cp(), a_dt );
}
}
+}
+
+void
+WarpX::EvolveG (amrex::Real a_dt, DtType a_dt_type)
+{
+ if (!do_divb_cleaning) return;
+
+ for (int lev = 0; lev <= finest_level; ++lev)
+ {
+ EvolveG(lev, a_dt, a_dt_type);
+ }
+}
+
+void
+WarpX::EvolveG (int lev, amrex::Real a_dt, DtType a_dt_type)
+{
+ if (!do_divb_cleaning) return;
+
+ EvolveG(lev, PatchType::fine, a_dt, a_dt_type);
+
+ if (lev > 0)
+ {
+ EvolveG(lev, PatchType::coarse, a_dt, a_dt_type);
+ }
+}
+
+void
+WarpX::EvolveG (int lev, PatchType patch_type, amrex::Real a_dt, DtType /*a_dt_type*/)
+{
+ if (!do_divb_cleaning) return;
+
+ WARPX_PROFILE("WarpX::EvolveG()");
+
+ // Evolve G field in regular cells
+ if (patch_type == PatchType::fine)
+ {
+ m_fdtd_solver_fp[lev]->EvolveG(G_fp[lev], Bfield_fp[lev], a_dt);
+ }
+ else // coarse patch
+ {
+ m_fdtd_solver_cp[lev]->EvolveG(G_cp[lev], Bfield_cp[lev], a_dt);
+ }
+ // TODO Evolution in PML cells will go here
}
void