Block-Structured AMR Software Framework
amrex::FFT::Plan< T > Struct Template Reference

#include <AMReX_FFT_Helper.H>

Public Types

using VendorPlan = cufftHandle
 
using VendorComplex = std::conditional_t< std::is_same_v< float, T >, cuComplex, cuDoubleComplex >
 

Public Member Functions

void set_ptrs (void *p0, void *p1)
 
void destroy ()
 
template<Direction D>
void init_r2c (Box const &box, T *pr, VendorComplex *pc, bool is_2d_transform=false)
 
template<Direction D, int M>
void init_r2c (IntVectND< M > const &fft_size, void *, void *, bool cache)
 
template<Direction D>
void init_c2c (Box const &box, VendorComplex *p)
 
template<Direction D>
Kind get_r2r_kind (std::pair< Boundary, Boundary > const &bc)
 
template<Direction D>
void init_r2r (Box const &box, T *p, std::pair< Boundary, Boundary > const &bc, int howmany_initval=1)
 
template<Direction D>
void init_r2r (Box const &box, VendorComplex *pc, std::pair< Boundary, Boundary > const &bc)
 
template<Direction D>
void compute_r2c ()
 
template<Direction D>
void compute_c2c ()
 
void * alloc_scratch_space () const
 
void pack_r2r_buffer (void *pbuf, T const *psrc) const
 
void unpack_r2r_buffer (T *pdst, void const *pbuf) const
 
template<Direction D>
void compute_r2r ()
 

Static Public Member Functions

static void free_scratch_space (void *p)
 
static void destroy_vendor_plan (VendorPlan plan)
 

Public Attributes

int n = 0
 
int howmany = 0
 
Kind kind = Kind::none
 
bool r2r_data_is_complex = false
 
bool defined = false
 
bool defined2 = false
 
VendorPlan plan {}
 
VendorPlan plan2 {}
 
void * pf = nullptr
 
void * pb = nullptr
 

Member Typedef Documentation

◆ VendorComplex

template<typename T >
using amrex::FFT::Plan< T >::VendorComplex = std::conditional_t<std::is_same_v<float,T>, cuComplex, cuDoubleComplex>

◆ VendorPlan

template<typename T >
using amrex::FFT::Plan< T >::VendorPlan = cufftHandle

Member Function Documentation

◆ alloc_scratch_space()

template<typename T >
void* amrex::FFT::Plan< T >::alloc_scratch_space ( ) const
inline

◆ compute_c2c()

template<typename T >
template<Direction D>
void amrex::FFT::Plan< T >::compute_c2c ( )
inline

◆ compute_r2c()

template<typename T >
template<Direction D>
void amrex::FFT::Plan< T >::compute_r2c ( )
inline

◆ compute_r2r()

template<typename T >
template<Direction D>
void amrex::FFT::Plan< T >::compute_r2r ( )
inline

◆ destroy()

template<typename T >
void amrex::FFT::Plan< T >::destroy ( )
inline

◆ destroy_vendor_plan()

template<typename T >
static void amrex::FFT::Plan< T >::destroy_vendor_plan ( VendorPlan< T >  plan)
inlinestatic

◆ free_scratch_space()

template<typename T >
static void amrex::FFT::Plan< T >::free_scratch_space ( void *  p)
inlinestatic

◆ get_r2r_kind()

template<typename T >
template<Direction D>
Kind amrex::FFT::Plan< T >::get_r2r_kind ( std::pair< Boundary, Boundary > const &  bc)
inline

◆ init_c2c()

template<typename T >
template<Direction D>
void amrex::FFT::Plan< T >::init_c2c ( Box const &  box,
VendorComplex p 
)
inline

◆ init_r2c() [1/2]

template<typename T >
template<Direction D>
void amrex::FFT::Plan< T >::init_r2c ( Box const &  box,
T *  pr,
VendorComplex pc,
bool  is_2d_transform = false 
)
inline

◆ init_r2c() [2/2]

template<typename T >
template<Direction D, int M>
void amrex::FFT::Plan< T >::init_r2c ( IntVectND< M > const &  fft_size,
void *  pbf,
void *  pbb,
bool  cache 
)

◆ init_r2r() [1/2]

template<typename T >
template<Direction D>
void amrex::FFT::Plan< T >::init_r2r ( Box const &  box,
T *  p,
std::pair< Boundary, Boundary > const &  bc,
int  howmany_initval = 1 
)
inline

◆ init_r2r() [2/2]

template<typename T >
template<Direction D>
void amrex::FFT::Plan< T >::init_r2r ( Box const &  box,
VendorComplex pc,
std::pair< Boundary, Boundary > const &  bc 
)
inline

◆ pack_r2r_buffer()

template<typename T >
void amrex::FFT::Plan< T >::pack_r2r_buffer ( void *  pbuf,
T const *  psrc 
) const
inline

◆ set_ptrs()

template<typename T >
void amrex::FFT::Plan< T >::set_ptrs ( void *  p0,
void *  p1 
)
inline

◆ unpack_r2r_buffer()

template<typename T >
void amrex::FFT::Plan< T >::unpack_r2r_buffer ( T *  pdst,
void const *  pbuf 
) const
inline

Member Data Documentation

◆ defined

template<typename T >
bool amrex::FFT::Plan< T >::defined = false

◆ defined2

template<typename T >
bool amrex::FFT::Plan< T >::defined2 = false

◆ howmany

template<typename T >
int amrex::FFT::Plan< T >::howmany = 0

◆ kind

template<typename T >
Kind amrex::FFT::Plan< T >::kind = Kind::none

◆ n

template<typename T >
int amrex::FFT::Plan< T >::n = 0

◆ pb

template<typename T >
void* amrex::FFT::Plan< T >::pb = nullptr

◆ pf

template<typename T >
void* amrex::FFT::Plan< T >::pf = nullptr

◆ plan

template<typename T >
VendorPlan amrex::FFT::Plan< T >::plan {}

◆ plan2

template<typename T >
VendorPlan amrex::FFT::Plan< T >::plan2 {}

◆ r2r_data_is_complex

template<typename T >
bool amrex::FFT::Plan< T >::r2r_data_is_complex = false

The documentation for this struct was generated from the following file: