diff options
author | 2021-07-08 02:05:26 -0700 | |
---|---|---|
committer | 2021-07-08 02:05:26 -0700 | |
commit | 6269c20a6c42037c85efd76bfa9ed162a312df96 (patch) | |
tree | 0a12767ff0c56c598f6d684625981fec99f75db7 /Source/FieldSolver/SpectralSolver/SpectralSolver.cpp | |
parent | ecbe32dca65ace0faa092afaf75a3725c65a42e5 (diff) | |
download | WarpX-6269c20a6c42037c85efd76bfa9ed162a312df96.tar.gz WarpX-6269c20a6c42037c85efd76bfa9ed162a312df96.tar.zst WarpX-6269c20a6c42037c85efd76bfa9ed162a312df96.zip |
Do Not Fill Guard Cells with Inverse FFTs, Unless for Field Damping (#2045)
* Do Not Always Fill Guard Cells with Inverse FFTs
* Query psatd.fill_guards from Inputs
* Clean Up and Reduce Style Changes
* Fix Bug for Periodic Single Box
* Clean Up and Reduce Style Changes
* Fix Bug for RZ PSATD
* Remove Input Parameter, Default 0 Unless Damping
* Fix CI Tests (2D)
* Fix CI Tests (3D)
Diffstat (limited to 'Source/FieldSolver/SpectralSolver/SpectralSolver.cpp')
-rw-r--r-- | Source/FieldSolver/SpectralSolver/SpectralSolver.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/Source/FieldSolver/SpectralSolver/SpectralSolver.cpp b/Source/FieldSolver/SpectralSolver/SpectralSolver.cpp index 89a7ce1f5..113ea97c3 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralSolver.cpp +++ b/Source/FieldSolver/SpectralSolver/SpectralSolver.cpp @@ -23,6 +23,7 @@ SpectralSolver::SpectralSolver( const amrex::DistributionMapping& dm, const int norder_x, const int norder_y, const int norder_z, const bool nodal, + const amrex::IntVect& fill_guards, const amrex::Array<amrex::Real,3>& v_galilean, const amrex::Array<amrex::Real,3>& v_comoving, const amrex::RealVect dx, const amrex::Real dt, @@ -45,24 +46,29 @@ SpectralSolver::SpectralSolver( if (pml) { algorithm = std::make_unique<PMLPsatdAlgorithm>( - k_space, dm, norder_x, norder_y, norder_z, nodal, dt, dive_cleaning, divb_cleaning); + k_space, dm, norder_x, norder_y, norder_z, nodal, + fill_guards, dt, dive_cleaning, divb_cleaning); } else { // Comoving PSATD algorithm if (v_comoving[0] != 0. || v_comoving[1] != 0. || v_comoving[2] != 0.) { algorithm = std::make_unique<ComovingPsatdAlgorithm>( - k_space, dm, norder_x, norder_y, norder_z, nodal, v_comoving, dt, update_with_rho); + k_space, dm, norder_x, norder_y, norder_z, nodal, + fill_guards, v_comoving, dt, update_with_rho); } // PSATD algorithms: standard, Galilean, or averaged Galilean else { algorithm = std::make_unique<PsatdAlgorithm>( - k_space, dm, norder_x, norder_y, norder_z, nodal, v_galilean, dt, update_with_rho, fft_do_time_averaging, J_linear_in_time); + k_space, dm, norder_x, norder_y, norder_z, nodal, fill_guards, + v_galilean, dt, update_with_rho, fft_do_time_averaging, J_linear_in_time); } } // - Initialize arrays for fields in spectral space + FFT plans field_data = SpectralFieldData( lev, realspace_ba, k_space, dm, algorithm->getRequiredNumberOfFields(), periodic_single_box); + + m_fill_guards = fill_guards; } void @@ -82,7 +88,7 @@ SpectralSolver::BackwardTransform( const int lev, const int i_comp ) { WARPX_PROFILE("SpectralSolver::BackwardTransform"); - field_data.BackwardTransform( lev, mf, field_index, i_comp ); + field_data.BackwardTransform(lev, mf, field_index, i_comp, m_fill_guards); } void |