|
IPPL API Reference
Independent Parallel Particle Layer C++ API
|
#include <FFT.h>
Inheritance diagram for ippl::FFT< RCTransform, RealField >:
Collaboration diagram for ippl::FFT< RCTransform, RealField >:Public Types | |
| using | Complex_t = Kokkos::complex< Real_t > |
| using | ComplexField = typename Field< Complex_t, Dim, typename RealField::Mesh_t, typename RealField::Centering_t, typename RealField::execution_space >::uniform_type |
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) |
real-to-complex FFT class
| 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.
| 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
| void ippl::FFT< RCTransform, RealField >::warmup | ( | RealField & | f, |
| ComplexField & | g | ||
| ) |