aboutsummaryrefslogtreecommitdiff
path: root/Source/Evolve/WarpXEvolve.cpp
diff options
context:
space:
mode:
authorGravatar Revathi Jambunathan <41089244+RevathiJambunathan@users.noreply.github.com> 2021-07-13 00:27:49 -0700
committerGravatar GitHub <noreply@github.com> 2021-07-13 00:27:49 -0700
commitb739ed9ccdbfeb878ead2a9d2a9ad61fbcfce35e (patch)
tree8f3891e1606f37189458c877fdefc9e51a1383d5 /Source/Evolve/WarpXEvolve.cpp
parent02e3b8cce573fb54253b10fc9104695d9c24b188 (diff)
downloadWarpX-b739ed9ccdbfeb878ead2a9d2a9ad61fbcfce35e.tar.gz
WarpX-b739ed9ccdbfeb878ead2a9d2a9ad61fbcfce35e.tar.zst
WarpX-b739ed9ccdbfeb878ead2a9d2a9ad61fbcfce35e.zip
Interface silver mueller (#2051)
* interface silvermueller with refactored boundary interface * add interface in silver mueller input files * define first and second half for EvolveB * add do_pml parse snce RZ needs do_pml to be st to false * Silver-Mueller boundary condition in docs * add firsthalf in ApplyBfieldBoundary within PushPSATD as only first first half is used to apply silvermueller * CallSilverMueller once for all boundaries * remove unused do silvermueller flag * fix typo in input file * Apply suggestions from code review Co-authored-by: Remi Lehe <remi.lehe@normalesup.org> * abort message if silver-mueller is not selected on all valid boundaries * fix typo * fix eol * remove ifdef from inside the Assert message * check silver-mueller selection after reading all boundaries Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
Diffstat (limited to 'Source/Evolve/WarpXEvolve.cpp')
-rw-r--r--Source/Evolve/WarpXEvolve.cpp21
1 files changed, 10 insertions, 11 deletions
diff --git a/Source/Evolve/WarpXEvolve.cpp b/Source/Evolve/WarpXEvolve.cpp
index 02bb1e1a1..eae665d44 100644
--- a/Source/Evolve/WarpXEvolve.cpp
+++ b/Source/Evolve/WarpXEvolve.cpp
@@ -412,9 +412,8 @@ WarpX::OneStep_nosub (Real cur_time)
EvolveG(0.5_rt * dt[0], DtType::FirstHalf);
FillBoundaryF(guard_cells.ng_FieldSolverF);
FillBoundaryG(guard_cells.ng_FieldSolverG);
- EvolveB(0.5_rt * dt[0]); // We now have B^{n+1/2}
+ EvolveB(0.5_rt * dt[0], DtType::FirstHalf); // We now have B^{n+1/2}
- if (do_silver_mueller) ApplySilverMuellerBoundary( dt[0] );
FillBoundaryB(guard_cells.ng_FieldSolver);
if (WarpX::em_solver_medium == MediumForEM::Vacuum) {
@@ -430,7 +429,7 @@ WarpX::OneStep_nosub (Real cur_time)
FillBoundaryE(guard_cells.ng_FieldSolver);
EvolveF(0.5_rt * dt[0], DtType::SecondHalf);
EvolveG(0.5_rt * dt[0], DtType::SecondHalf);
- EvolveB(0.5_rt * dt[0]); // We now have B^{n+1}
+ EvolveB(0.5_rt * dt[0], DtType::SecondHalf); // We now have B^{n+1}
// Synchronize E and B fields on nodal points
NodalSyncE();
@@ -616,7 +615,7 @@ WarpX::OneStep_sub1 (Real curtime)
ApplyFilterandSumBoundaryRho(fine_lev, PatchType::fine, 0, 2*ncomps);
NodalSyncRho(fine_lev, PatchType::fine, 0, 2);
- EvolveB(fine_lev, PatchType::fine, 0.5_rt*dt[fine_lev]);
+ EvolveB(fine_lev, PatchType::fine, 0.5_rt*dt[fine_lev], DtType::FirstHalf);
EvolveF(fine_lev, PatchType::fine, 0.5_rt*dt[fine_lev], DtType::FirstHalf);
FillBoundaryB(fine_lev, PatchType::fine, guard_cells.ng_FieldSolver);
FillBoundaryF(fine_lev, PatchType::fine, guard_cells.ng_alloc_F);
@@ -624,7 +623,7 @@ WarpX::OneStep_sub1 (Real curtime)
EvolveE(fine_lev, PatchType::fine, dt[fine_lev]);
FillBoundaryE(fine_lev, PatchType::fine, guard_cells.ng_FieldGather);
- EvolveB(fine_lev, PatchType::fine, 0.5_rt*dt[fine_lev]);
+ EvolveB(fine_lev, PatchType::fine, 0.5_rt*dt[fine_lev], DtType::SecondHalf);
EvolveF(fine_lev, PatchType::fine, 0.5_rt*dt[fine_lev], DtType::SecondHalf);
if (do_pml) {
@@ -643,7 +642,7 @@ WarpX::OneStep_sub1 (Real curtime)
AddCurrentFromFineLevelandSumBoundary(coarse_lev);
AddRhoFromFineLevelandSumBoundary(coarse_lev, 0, ncomps);
- EvolveB(fine_lev, PatchType::coarse, dt[fine_lev]);
+ EvolveB(fine_lev, PatchType::coarse, dt[fine_lev], DtType::FirstHalf);
EvolveF(fine_lev, PatchType::coarse, dt[fine_lev], DtType::FirstHalf);
FillBoundaryB(fine_lev, PatchType::coarse, guard_cells.ng_FieldGather);
FillBoundaryF(fine_lev, PatchType::coarse, guard_cells.ng_FieldSolverF);
@@ -651,7 +650,7 @@ WarpX::OneStep_sub1 (Real curtime)
EvolveE(fine_lev, PatchType::coarse, dt[fine_lev]);
FillBoundaryE(fine_lev, PatchType::coarse, guard_cells.ng_FieldGather);
- EvolveB(coarse_lev, PatchType::fine, 0.5_rt*dt[coarse_lev]);
+ EvolveB(coarse_lev, PatchType::fine, 0.5_rt*dt[coarse_lev], DtType::FirstHalf);
EvolveF(coarse_lev, PatchType::fine, 0.5_rt*dt[coarse_lev], DtType::FirstHalf);
FillBoundaryB(coarse_lev, PatchType::fine, guard_cells.ng_FieldGather);
FillBoundaryF(coarse_lev, PatchType::fine, guard_cells.ng_FieldSolverF);
@@ -674,7 +673,7 @@ WarpX::OneStep_sub1 (Real curtime)
ApplyFilterandSumBoundaryRho(fine_lev, PatchType::fine, 0, ncomps);
NodalSyncRho(fine_lev, PatchType::fine, 0, 2);
- EvolveB(fine_lev, PatchType::fine, 0.5_rt*dt[fine_lev]);
+ EvolveB(fine_lev, PatchType::fine, 0.5_rt*dt[fine_lev], DtType::FirstHalf);
EvolveF(fine_lev, PatchType::fine, 0.5_rt*dt[fine_lev], DtType::FirstHalf);
FillBoundaryB(fine_lev, PatchType::fine, guard_cells.ng_FieldSolver);
FillBoundaryF(fine_lev, PatchType::fine, guard_cells.ng_FieldSolverF);
@@ -682,7 +681,7 @@ WarpX::OneStep_sub1 (Real curtime)
EvolveE(fine_lev, PatchType::fine, dt[fine_lev]);
FillBoundaryE(fine_lev, PatchType::fine, guard_cells.ng_FieldSolver);
- EvolveB(fine_lev, PatchType::fine, 0.5_rt*dt[fine_lev]);
+ EvolveB(fine_lev, PatchType::fine, 0.5_rt*dt[fine_lev], DtType::SecondHalf);
EvolveF(fine_lev, PatchType::fine, 0.5_rt*dt[fine_lev], DtType::SecondHalf);
if (do_pml) {
@@ -703,7 +702,7 @@ WarpX::OneStep_sub1 (Real curtime)
EvolveE(fine_lev, PatchType::coarse, dt[fine_lev]);
FillBoundaryE(fine_lev, PatchType::coarse, guard_cells.ng_FieldSolver);
- EvolveB(fine_lev, PatchType::coarse, dt[fine_lev]);
+ EvolveB(fine_lev, PatchType::coarse, dt[fine_lev], DtType::SecondHalf);
EvolveF(fine_lev, PatchType::coarse, dt[fine_lev], DtType::SecondHalf);
if (do_pml) {
@@ -720,7 +719,7 @@ WarpX::OneStep_sub1 (Real curtime)
EvolveE(coarse_lev, PatchType::fine, 0.5_rt*dt[coarse_lev]);
FillBoundaryE(coarse_lev, PatchType::fine, guard_cells.ng_FieldSolver);
- EvolveB(coarse_lev, PatchType::fine, 0.5_rt*dt[coarse_lev]);
+ EvolveB(coarse_lev, PatchType::fine, 0.5_rt*dt[coarse_lev], DtType::SecondHalf);
EvolveF(coarse_lev, PatchType::fine, 0.5_rt*dt[coarse_lev], DtType::SecondHalf);
if (do_pml) {