IPPL API Reference
Independent Parallel Particle Layer C++ API
Loading...
Searching...
No Matches
ippl::FFT< RCTransform, RealField > Class Template Reference

#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 &params)
 
void warmup (RealField &f, ComplexField &g)
 
void transform (TransformDirection direction, RealField &f, ComplexField &g)
 

Detailed Description

template<typename RealField>
class ippl::FFT< RCTransform, RealField >

real-to-complex FFT class

Constructor & Destructor Documentation

◆ FFT()

template<typename RealField >
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.

Member Function Documentation

◆ transform()

template<typename RealField >
void ippl::FFT< RCTransform, RealField >::transform ( TransformDirection  direction,
RealField &  f,
ComplexField &  g 
)

Perform FFT

Parameters
directionForward or backward transformation
fField whose transformation to compute
gField 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

◆ warmup()

template<typename RealField >
void ippl::FFT< RCTransform, RealField >::warmup ( RealField &  f,
ComplexField &  g 
)

Warmup the FFT object by forward & backward FFT on an empty field

Parameters
fField whose transformation to compute
gField in which to store the transformation

The documentation for this class was generated from the following files: