diff options
Diffstat (limited to 'Source/FieldSolver/WarpXPushFieldsEM.cpp')
-rw-r--r-- | Source/FieldSolver/WarpXPushFieldsEM.cpp | 49 |
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 |