OPAL (Object Oriented Parallel Accelerator Library) 2022.1
OPAL
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
FFT< RCTransform, 1U, T > Class Template Reference

#include <FFT.h>

Inheritance diagram for FFT< RCTransform, 1U, T >:
Inheritance graph
[legend]
Collaboration diagram for FFT< RCTransform, 1U, T >:
Collaboration graph
[legend]

Public Types

typedef FieldLayout< 1U > Layout_t
 
typedef BareField< T, 1U > RealField_t
 
typedef LField< T, 1U > RealLField_t
 
typedef std::complex< T > Complex_t
 
typedef BareField< Complex_t, 1U > ComplexField_t
 
typedef LField< Complex_t, 1U > ComplexLField_t
 
typedef FFTBase< 1U, T >::Domain_t Domain_t
 
- Public Types inherited from FFTBase< 1U, T >
enum  
 
enum  FFT_e
 
typedef T Precision_t
 
typedef NDIndex< DimDomain_t
 
typedef FFTPACK< T > InternalFFT_t
 

Public Member Functions

 FFT (const Domain_t &rdomain, const Domain_t &cdomain, const bool transformTheseDims[1U], const bool &compressTemps=false)
 
 FFT (const Domain_t &rdomain, const Domain_t &cdomain, const bool &compressTemps=false)
 
 ~FFT (void)
 
void transform (int direction, RealField_t &f, ComplexField_t &g, const bool &constInput=false)
 
void transform (const char *directionName, RealField_t &f, ComplexField_t &g, const bool &constInput=false)
 
void transform (int direction, ComplexField_t &f, RealField_t &g, const bool &constInput=false)
 
void transform (const char *directionName, ComplexField_t &f, RealField_t &g, const bool &constInput=false)
 
- Public Member Functions inherited from FFTBase< 1U, T >
 FFTBase ()
 
 FFTBase (FFT_e transform, const Domain_t &domain, const bool transformTheseDims[Dim], bool compressTemps)
 
 FFTBase (FFT_e transform, const Domain_t &domain, bool compressTemps)
 
virtual ~FFTBase (void)
 
void write (std::ostream &out) const
 
void setDirectionName (int direction, const char *directionName)
 
void setNormFact (Precision_t nf)
 
int transVnodes () const
 

Private Member Functions

void setup (void)
 

Private Attributes

Layout_ttempLayouts_m
 
ComplexField_ttempFields_m
 
Layout_ttempRLayout_m
 
Domain_t complexDomain_m
 

Additional Inherited Members

- Protected Member Functions inherited from FFTBase< 1U, T >
int getDirection (const char *directionName) const
 translate direction name string into dimension number More...
 
bool transformDim (unsigned d) const
 query whether this dimension is to be transformed More...
 
unsigned numTransformDims (void) const
 query number of transform dimensions More...
 
unsigned activeDimension (unsigned d) const
 get dimension number from list of transformed dimensions More...
 
InternalFFT_tgetEngine (void)
 access the internal FFT Engine More...
 
Precision_tgetNormFact (void)
 get the FFT normalization factor More...
 
const Domain_tgetDomain (void) const
 get our domain More...
 
bool checkDomain (const Domain_t &dom1, const Domain_t &dom2) const
 compare indexes of two domains More...
 
bool compressTemps (void) const
 do we compress temps? More...
 
- Static Protected Attributes inherited from FFTBase< 1U, T >
static GuardCellSizes< DimnullGC
 null GuardCellSizes object for checking BareField arguments to transform More...
 

Detailed Description

template<class T>
class FFT< RCTransform, 1U, T >

1D real-to-complex FFT class

Definition at line 537 of file FFT.h.

Member Typedef Documentation

◆ Complex_t

template<class T >
typedef std::complex<T> FFT< RCTransform, 1U, T >::Complex_t

Definition at line 545 of file FFT.h.

◆ ComplexField_t

template<class T >
typedef BareField<Complex_t,1U> FFT< RCTransform, 1U, T >::ComplexField_t

Definition at line 546 of file FFT.h.

◆ ComplexLField_t

template<class T >
typedef LField<Complex_t,1U> FFT< RCTransform, 1U, T >::ComplexLField_t

Definition at line 547 of file FFT.h.

◆ Domain_t

template<class T >
typedef FFTBase<1U,T>::Domain_t FFT< RCTransform, 1U, T >::Domain_t

Definition at line 548 of file FFT.h.

◆ Layout_t

template<class T >
typedef FieldLayout<1U> FFT< RCTransform, 1U, T >::Layout_t

Definition at line 542 of file FFT.h.

◆ RealField_t

template<class T >
typedef BareField<T,1U> FFT< RCTransform, 1U, T >::RealField_t

Definition at line 543 of file FFT.h.

◆ RealLField_t

template<class T >
typedef LField<T,1U> FFT< RCTransform, 1U, T >::RealLField_t

Definition at line 544 of file FFT.h.

Constructor & Destructor Documentation

◆ FFT() [1/2]

template<class T >
FFT< RCTransform, 1U, T >::FFT ( const Domain_t rdomain,
const Domain_t cdomain,
const bool  transformTheseDims[1U],
const bool &  compressTemps = false 
)

Create a new FFT object with the given domains for input/output Fields Specify which dimensions to transform along. Optional argument compress indicates whether or not to compress temporary Fields in between uses.

◆ FFT() [2/2]

template<class T >
FFT< RCTransform, 1U, T >::FFT ( const Domain_t rdomain,
const Domain_t cdomain,
const bool &  compressTemps = false 
)

Same as above, but transform all dims:

◆ ~FFT()

template<class T >
FFT< RCTransform, 1U, T >::~FFT ( void  )

Destructor

Definition at line 1518 of file FFT.hpp.

Member Function Documentation

◆ setup()

template<class T >
void FFT< RCTransform, 1U, T >::setup ( void  )
private

setup performs all the initializations necessary after the transform directions have been specified.

Definition at line 1480 of file FFT.hpp.

References FFTBase< Dim, T >::compressTemps(), FFTBase< Dim, T >::getDomain(), PARALLEL, and PInsist.

Here is the call graph for this function:

◆ transform() [1/4]

template<class T >
void FFT< RCTransform, 1U, T >::transform ( const char *  directionName,
ComplexField_t f,
RealField_t g,
const bool &  constInput = false 
)

◆ transform() [2/4]

template<class T >
void FFT< RCTransform, 1U, T >::transform ( const char *  directionName,
RealField_t f,
ComplexField_t g,
const bool &  constInput = false 
)

◆ transform() [3/4]

template<class T >
void FFT< RCTransform, 1U, T >::transform ( int  direction,
ComplexField_t f,
RealField_t g,
const bool &  constInput = false 
)

complex-to-real FFT Same as above, but with input and output field types reversed.

◆ transform() [4/4]

template<class T >
void FFT< RCTransform, 1U, T >::transform ( int  direction,
RealField_t f,
ComplexField_t g,
const bool &  constInput = false 
)

real-to-complex FFT: specify +1 or -1 to indicate forward or inverse transform, or specify the user-defined name string for the direction. Supply a second BareField to store the output. optional argument constInput indicates whether or not to treat the input Field argument f as const. If not, we can use it as a temporary in order to avoid an additional data transpose.

Member Data Documentation

◆ complexDomain_m

template<class T >
Domain_t FFT< RCTransform, 1U, T >::complexDomain_m
private

We need one real internal Field in this case. domain of the resulting complex fields

Definition at line 621 of file FFT.h.

◆ tempFields_m

template<class T >
ComplexField_t* FFT< RCTransform, 1U, T >::tempFields_m
private

The temporary field

Definition at line 609 of file FFT.h.

◆ tempLayouts_m

template<class T >
Layout_t* FFT< RCTransform, 1U, T >::tempLayouts_m
private

The temporary field layout

Definition at line 604 of file FFT.h.

◆ tempRLayout_m

template<class T >
Layout_t* FFT< RCTransform, 1U, T >::tempRLayout_m
private

Real field layout

Definition at line 614 of file FFT.h.


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