aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/SpectralSolver/SpectralFieldDataRZ.H
diff options
context:
space:
mode:
authorGravatar David Grote <grote1@llnl.gov> 2020-07-27 09:19:47 -0700
committerGravatar GitHub <noreply@github.com> 2020-07-27 09:19:47 -0700
commitdf0ec5715c081e71f7f4bcd13a1a895fcd942436 (patch)
tree70e203bd6a8e06a0eda68695ca0eb1d7687c5f6b /Source/FieldSolver/SpectralSolver/SpectralFieldDataRZ.H
parentf68983f03ff24d6207c76a6a0ca30ed87ce1adad (diff)
downloadWarpX-df0ec5715c081e71f7f4bcd13a1a895fcd942436.tar.gz
WarpX-df0ec5715c081e71f7f4bcd13a1a895fcd942436.tar.zst
WarpX-df0ec5715c081e71f7f4bcd13a1a895fcd942436.zip
Added k-space filter for RZ spectral solver (#1006)
* Added k-space filter for RZ spectral solver * Added SpectralBinomialFilter files for RZ spectral solver * Added RZspectral binomial filter to CMakeLists.txt * Update Docs/source/running_cpp/parameters.rst Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * Update Docs/source/running_cpp/parameters.rst Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * Update Source/FieldSolver/SpectralSolver/SpectralBinomialFilter.H Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * Update Source/FieldSolver/SpectralSolver/SpectralBinomialFilter.cpp Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * Update Source/FieldSolver/SpectralSolver/SpectralFieldDataRZ.H Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * Fixed literals in SpectralBinomialFilter.cpp * For RZ spectral, apply filter to rho old and new * Added SpectralBinomialFilter::InitFilterArray * For SpectralBinomialFilter, combine R and Z into one routine Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * For SpectralBinomialFilter, combine R and Z into one routine, part 2 Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> * For SpectralBinomialFilter, combine R and Z into one routine, part 3 Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
Diffstat (limited to 'Source/FieldSolver/SpectralSolver/SpectralFieldDataRZ.H')
-rw-r--r--Source/FieldSolver/SpectralSolver/SpectralFieldDataRZ.H12
1 files changed, 11 insertions, 1 deletions
diff --git a/Source/FieldSolver/SpectralSolver/SpectralFieldDataRZ.H b/Source/FieldSolver/SpectralSolver/SpectralFieldDataRZ.H
index d0e29d070..a2ab2b9cb 100644
--- a/Source/FieldSolver/SpectralSolver/SpectralFieldDataRZ.H
+++ b/Source/FieldSolver/SpectralSolver/SpectralFieldDataRZ.H
@@ -10,6 +10,7 @@
#include "SpectralKSpaceRZ.H"
#include "SpectralFieldData.H"
#include "SpectralHankelTransform/SpectralHankelTransformer.H"
+#include "SpectralBinomialFilter.H"
#include <AMReX_MultiFab.H>
/* \brief Class that stores the fields in spectral space, and performs the
@@ -28,9 +29,11 @@ class SpectralFieldDataRZ
#else
using FFTplans = amrex::LayoutData<fftw_plan>;
#endif
- // Similarly, define the Hankel transformers for each box.
+ // Similarly, define the Hankel transformers and filter for each box.
using MultiSpectralHankelTransformer = amrex::LayoutData<SpectralHankelTransformer>;
+ using BinomialFilter = amrex::LayoutData<SpectralBinomialFilter>;
+
SpectralFieldDataRZ(const amrex::BoxArray& realspace_ba,
const SpectralKSpaceRZ& k_space,
const amrex::DistributionMapping& dm,
@@ -57,6 +60,12 @@ class SpectralFieldDataRZ
amrex::MultiFab & tempHTransformedSplit,
const bool is_nodal_z);
+ void InitFilter (amrex::IntVect const & filter_npass_each_dir, bool const compensation,
+ SpectralKSpaceRZ const & k_space);
+
+ void ApplyFilter (int const field_index);
+ void ApplyFilter (int const field_index1, int const field_index2, int const field_index3);
+
// Returns an array that holds the kr for all of the modes
HankelTransform::RealVector const & getKrArray(amrex::MFIter const & mfi) const {
return multi_spectral_hankel_transformer[mfi].getKrArray();
@@ -78,6 +87,7 @@ class SpectralFieldDataRZ
// a cell-centered grid in real space, instead of a nodal grid
SpectralShiftFactor zshift_FFTfromCell, zshift_FFTtoCell;
MultiSpectralHankelTransformer multi_spectral_hankel_transformer;
+ BinomialFilter binomialfilter;
};