IPPL (Independent Parallel Particle Layer)
IPPL
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

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)

Private Types

using Real_t = typename RealField::value_type
using Base

Private Attributes

Base::template temp_view_type< ComplexFieldtempFieldComplex

Static Private Attributes

static constexpr unsigned Dim = RealField::dim

Detailed Description

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

real-to-complex FFT class

Definition at line 219 of file FFT.h.

Member Typedef Documentation

◆ Base

template<typename RealField>
using ippl::FFT< RCTransform, RealField >::Base
private
Initial value:

Definition at line 224 of file FFT.h.

◆ Complex_t

template<typename RealField>
using ippl::FFT< RCTransform, RealField >::Complex_t = Kokkos::complex<Real_t>

Definition at line 228 of file FFT.h.

◆ ComplexField

template<typename RealField>
using ippl::FFT< RCTransform, RealField >::ComplexField
Initial value:

Definition at line 229 of file FFT.h.

◆ Real_t

template<typename RealField>
using ippl::FFT< RCTransform, RealField >::Real_t = typename RealField::value_type
private

Definition at line 223 of file FFT.h.

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.

Definition at line 172 of file FFT.hpp.

References FFT().

Referenced by FFT(), transform(), and warmup().

Here is the call graph for this function:
Here is the caller graph for this function:

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

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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ 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

Definition at line 197 of file FFT.hpp.

References ippl::BACKWARD, FFT(), ippl::FORWARD, and transform().

Here is the call graph for this function:

Member Data Documentation

◆ Dim

template<typename RealField>
unsigned ippl::FFT< RCTransform, RealField >::Dim = RealField::dim
staticconstexprprivate

Definition at line 222 of file FFT.h.

Referenced by transform().

◆ tempFieldComplex

template<typename RealField>
Base::template temp_view_type<ComplexField> ippl::FFT< RCTransform, RealField >::tempFieldComplex
private

Definition at line 256 of file FFT.h.

Referenced by transform().


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