IPPL (Independent Parallel Particle Layer)
IPPL
Loading...
Searching...
No Matches
ippl::FFT< Cos1Transform, Field > Class Template Reference

#include <FFT.h>

Inheritance diagram for ippl::FFT< Cos1Transform, Field >:
Collaboration diagram for ippl::FFT< Cos1Transform, Field >:

Public Member Functions

void warmup (Field &f)
void transform (TransformDirection direction, Field &f)

Private Types

using Base = IN_PLACE_FFT_BASE_CLASS(Field, backendCos1)

Static Private Attributes

static constexpr unsigned Dim = Field::dim

Detailed Description

template<typename Field>
class ippl::FFT< Cos1Transform, Field >

Cosine type 1 transform class

Definition at line 313 of file FFT.h.

Member Typedef Documentation

◆ Base

template<typename Field>
using ippl::FFT< Cos1Transform, Field >::Base = IN_PLACE_FFT_BASE_CLASS(Field, backendCos1)
private

Definition at line 315 of file FFT.h.

Member Function Documentation

◆ transform()

template<typename Field>
void ippl::FFT< Cos1Transform, Field >::transform ( TransformDirection direction,
Field & f )

Perform in-place FFT

Parameters
directionForward or backward transformation
fField whose transformation to compute (and overwrite)

This rescaling is needed to match the normalization constant between fftw and the other gpu interfaces. fftw rescales with an extra factor of 8.

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

This rescaling is needed to match the normalization constant between fftw and the other gpu interfaces. fftw rescales with an extra factor of 8.

Definition at line 390 of file FFT.hpp.

References ippl::apply(), ippl::BACKWARD, Dim, ippl::FORWARD, ippl::BareField< T, Dim, ViewArgs >::getNghost(), ippl::BareField< T, Dim, ViewArgs >::getOwned(), ippl::getRangePolicy(), ippl::BareField< T, Dim, ViewArgs >::getView(), ippl::parallel_for(), ippl::detail::shrinkView(), and ippl::NDIndex< Dim >::size().

Referenced by warmup().

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

◆ warmup()

template<typename Field>
void ippl::FFT< Cos1Transform, Field >::warmup ( Field & f)

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

Parameters
fField whose transformation to compute (and overwrite)

Definition at line 384 of file FFT.hpp.

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

Here is the call graph for this function:

Member Data Documentation

◆ Dim

template<typename Field>
unsigned ippl::FFT< Cos1Transform, Field >::Dim = Field::dim
staticconstexprprivate

Definition at line 314 of file FFT.h.

Referenced by transform().


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