diff options
author | 2021-07-13 00:27:49 -0700 | |
---|---|---|
committer | 2021-07-13 00:27:49 -0700 | |
commit | b739ed9ccdbfeb878ead2a9d2a9ad61fbcfce35e (patch) | |
tree | 8f3891e1606f37189458c877fdefc9e51a1383d5 /Source/WarpX.cpp | |
parent | 02e3b8cce573fb54253b10fc9104695d9c24b188 (diff) | |
download | WarpX-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/WarpX.cpp')
-rw-r--r-- | Source/WarpX.cpp | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/Source/WarpX.cpp b/Source/WarpX.cpp index 3c5604a8b..027317501 100644 --- a/Source/WarpX.cpp +++ b/Source/WarpX.cpp @@ -642,11 +642,26 @@ WarpX::ReadParameters () quantum_xi_c2 = static_cast<amrex::Real>(quantum_xi * PhysConst::c * PhysConst::c); } - pp_warpx.query("do_pml", do_pml); - pp_warpx.query("do_silver_mueller", do_silver_mueller); - if ( (do_pml==1)&&(do_silver_mueller==1) ) { - amrex::Abort("PML and Silver-Mueller boundary conditions cannot be activated at the same time."); + for (int idim = 0; idim < AMREX_SPACEDIM; ++idim) { + if ( ( WarpX::field_boundary_lo[idim] == FieldBoundaryType::PML && + WarpX::field_boundary_lo[idim] == FieldBoundaryType::Absorbing_SilverMueller ) || + ( WarpX::field_boundary_hi[idim] == FieldBoundaryType::PML && + WarpX::field_boundary_hi[idim] == FieldBoundaryType::Absorbing_SilverMueller ) ) + { + amrex::Abort("PML and Silver-Mueller boundary conditions cannot be activated at the same time."); + } + + if (WarpX::field_boundary_lo[idim] == FieldBoundaryType::Absorbing_SilverMueller || + WarpX::field_boundary_hi[idim] == FieldBoundaryType::Absorbing_SilverMueller) + { + // SilverMueller is implemented for Yee + if (maxwell_solver_id != MaxwellSolverAlgo::Yee) { + amrex::Abort("The Silver-Mueller boundary condition can only be used with the Yee solver."); + } + } } + + pp_warpx.query("do_pml", do_pml); pp_warpx.query("pml_ncell", pml_ncell); pp_warpx.query("pml_delta", pml_delta); pp_warpx.query("pml_has_particles", pml_has_particles); |