aboutsummaryrefslogtreecommitdiff
path: root/Source/BoundaryConditions/PML.cpp
diff options
context:
space:
mode:
authorGravatar Remi Lehe <remi.lehe@normalesup.org> 2021-06-28 16:09:04 -0700
committerGravatar GitHub <noreply@github.com> 2021-06-28 16:09:04 -0700
commit16d1ca457abaa8d057018b69adaa1c3b54d6f995 (patch)
tree29618ee601b824210035e022c1c38a76bed1c0be /Source/BoundaryConditions/PML.cpp
parenta0ee8d81410833fe6480d3303eaa889708659bf7 (diff)
downloadWarpX-16d1ca457abaa8d057018b69adaa1c3b54d6f995.tar.gz
WarpX-16d1ca457abaa8d057018b69adaa1c3b54d6f995.tar.zst
WarpX-16d1ca457abaa8d057018b69adaa1c3b54d6f995.zip
Multi-J scheme (#1828)
* Introduce new option skip_deposition * Properly implement the option to skip deposition * Skip deposition for electrostatic solver * Correct typo * Add Index Enumerator and Equations for F/G Without Averaging * Define new functions for current deposition and charge deposition * Disable interpolation between levels * Correct compilation error in RZ mode * Add argument for relative time * Add Index Enumerator and Equations for F/G With Averaging * [skip ci] Add new OneStep function * Fix compilation errors * Correct more compilation errors * [skip ci] Fix compilation * Split the PSATD push into separate functions * Add guards for rho field * [skip ci] Use new functions in OneStep * [skip ci] Separate the inverse transform of E_avg, B_avg * Add deposition of rho * [skip ci] Prevent deposition of rho if unallocated * Fix error in deposition function * Add subcycling of current deposition * [skip ci] Add inverse transform of averaged fields * [skip ci] Move component of rho * Add function to copy J * Temporarily deactivate contribution from F * [skip ci] Implement call to linear in J * Add psatd time averaging for multiJ * [skip ci] Fix implementation of averaging * [skip ci] Implement divE cleaning * Fix Bug for RZ Builds * Fix Bug for RZ Builds * Fix Bug in Init of PML Spectral Solvers * Cleaning * Cleaning * Add div(B) Cleaning (G Equation) * Multi-J Not Implemented with Galilean PSATD or PMLs * Add 2D CI Test Using Multi-J Scheme * Add More Inline Comments * Add More Inline Comments & Doxygen * Add Doxygen for Constructor of SpectralSolver * More Doxygen in Class SpectralSolver * Add Doxygen for New Functions in WarpXPushFieldsEM.cpp * Add Doxygen for New Functions in WarpX/MultiParticleContainer * do_dive/b_cleaning Must Be True With linear_in_J Option * Cast multij_n_depose to Real in Divisions * New Input Syntax * Add const where Possible, Fix Warnings * Docs for New Input Syntax, Fix Abort Messages * Consistent Use of Idx, IdxAvg, IdxLin * Improve Documentation of psatd.J_linear_in_time * Use const Type Qualifier whenever Possible * Simplify Initialization of Pointer ion_lev * Improve Doxygen * Update documentation * Add Note on NCI to Docs * Make warpx.do_multi_J_n_depositions Not Optional * Simplify Logic in getRequiredNumberOfFields * Use More const Type Qualifiers Co-authored-by: Edoardo Zoni <ezoni@lbl.gov>
Diffstat (limited to 'Source/BoundaryConditions/PML.cpp')
-rw-r--r--Source/BoundaryConditions/PML.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/Source/BoundaryConditions/PML.cpp b/Source/BoundaryConditions/PML.cpp
index c1c4d55a0..3cdb7b9db 100644
--- a/Source/BoundaryConditions/PML.cpp
+++ b/Source/BoundaryConditions/PML.cpp
@@ -452,6 +452,7 @@ PML::PML (const int lev, const BoxArray& grid_ba, const DistributionMapping& /*g
int ncell, int delta, amrex::IntVect ref_ratio,
Real dt, int nox_fft, int noy_fft, int noz_fft, bool do_nodal,
int do_moving_window, int /*pml_has_particles*/, int do_pml_in_domain,
+ const bool J_linear_in_time,
const bool do_pml_dive_cleaning, const bool do_pml_divb_cleaning,
const amrex::IntVect do_pml_Lo, const amrex::IntVect do_pml_Hi)
: m_dive_cleaning(do_pml_dive_cleaning),
@@ -603,7 +604,8 @@ PML::PML (const int lev, const BoxArray& grid_ba, const DistributionMapping& /*g
realspace_ba.enclosedCells().grow(nge); // cell-centered + guard cells
spectral_solver_fp = std::make_unique<SpectralSolver>(lev, realspace_ba, dm,
nox_fft, noy_fft, noz_fft, do_nodal, v_galilean_zero, v_comoving_zero, dx, dt, in_pml,
- periodic_single_box, update_with_rho, fft_do_time_averaging, m_dive_cleaning, m_divb_cleaning);
+ periodic_single_box, update_with_rho, fft_do_time_averaging,
+ J_linear_in_time, m_dive_cleaning, m_divb_cleaning);
#endif
}
@@ -710,7 +712,8 @@ PML::PML (const int lev, const BoxArray& grid_ba, const DistributionMapping& /*g
realspace_cba.enclosedCells().grow(nge); // cell-centered + guard cells
spectral_solver_cp = std::make_unique<SpectralSolver>(lev, realspace_cba, cdm,
nox_fft, noy_fft, noz_fft, do_nodal, v_galilean_zero, v_comoving_zero, cdx, dt, in_pml,
- periodic_single_box, update_with_rho, fft_do_time_averaging, m_dive_cleaning, m_divb_cleaning);
+ periodic_single_box, update_with_rho, fft_do_time_averaging,
+ J_linear_in_time, m_dive_cleaning, m_divb_cleaning);
#endif
}
}