|
IPPL (Independent Parallel Particle Layer)
IPPL
|
#include <FFT.h>
Public Types | |
| using | Complex_t = Kokkos::complex<Real_t> |
| using | ComplexField |
Public Member Functions | |
| FFT (const Layout_t &layoutInput, const Layout_t &layoutOutput, const ParameterList ¶ms) | |
| void | warmup (RealField &f, ComplexField &g) |
| void | transform (TransformDirection direction, RealField &f, ComplexField &g) |
Private Types | |
| using | Real_t = typename RealField::value_type |
| using | Base |
Private Attributes | |
| Base::template temp_view_type< ComplexField > | tempFieldComplex |
Static Private Attributes | |
| static constexpr unsigned | Dim = RealField::dim |
real-to-complex FFT class
|
private |
| using ippl::FFT< RCTransform, RealField >::Complex_t = Kokkos::complex<Real_t> |
| using ippl::FFT< RCTransform, RealField >::ComplexField |
|
private |
| ippl::FFT< RCTransform, RealField >::FFT | ( | const Layout_t & | layoutInput, |
| const Layout_t & | layoutOutput, | ||
| const ParameterList & | params ) |
Create a new FFT object with the layout for the input and output Fields and parameters for heffte.
Create a new FFT object of type RCTransform, with given input and output layouts and heffte parameters.
Heffte requires to pass a 3D array even for 2D and 1D FFTs we just have to make the length in other dimensions to be 1.
Definition at line 172 of file FFT.hpp.
References FFT().
Referenced by FFT(), transform(), and warmup().
| void ippl::FFT< RCTransform, RealField >::transform | ( | TransformDirection | direction, |
| RealField & | f, | ||
| ComplexField & | g ) |
Perform FFT
| direction | Forward or backward transformation |
| f | Field whose transformation to compute |
| g | Field in which to store the transformation |
This copy to a temporary Kokkos view is needed because of following reasons: 1) heffte wants the input and output fields without ghost layers 2) heffte accepts data in layout left (by default) eventhough this can be changed during heffte box creation
Definition at line 203 of file FFT.hpp.
References ippl::apply(), ippl::BACKWARD, Dim, FFT(), ippl::FORWARD, ippl::getRangePolicy(), ippl::parallel_for(), ippl::detail::shrinkView(), and tempFieldComplex.
Referenced by warmup().
| void ippl::FFT< RCTransform, RealField >::warmup | ( | RealField & | f, |
| ComplexField & | g ) |
Warmup the FFT object by forward & backward FFT on an empty field
Definition at line 197 of file FFT.hpp.
References ippl::BACKWARD, FFT(), ippl::FORWARD, and transform().
|
staticconstexprprivate |
Definition at line 222 of file FFT.h.
Referenced by transform().
|
private |
Definition at line 256 of file FFT.h.
Referenced by transform().