OPAL (Object Oriented Parallel Accelerator Library) 2022.1
OPAL
|
#include <FFT.h>
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 |
![]() | |
enum | |
enum | FFT_e |
typedef T | Precision_t |
typedef NDIndex< Dim > | Domain_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) |
![]() | |
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_t * | tempLayouts_m |
ComplexField_t * | tempFields_m |
Layout_t * | tempRLayout_m |
Domain_t | complexDomain_m |
Additional Inherited Members | |
![]() | |
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_t & | getEngine (void) |
access the internal FFT Engine More... | |
Precision_t & | getNormFact (void) |
get the FFT normalization factor More... | |
const Domain_t & | getDomain (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 GuardCellSizes< Dim > | nullGC |
null GuardCellSizes object for checking BareField arguments to transform More... | |
1D real-to-complex FFT class
typedef std::complex<T> FFT< RCTransform, 1U, T >::Complex_t |
typedef BareField<Complex_t,1U> FFT< RCTransform, 1U, T >::ComplexField_t |
typedef LField<Complex_t,1U> FFT< RCTransform, 1U, T >::ComplexLField_t |
typedef FFTBase<1U,T>::Domain_t FFT< RCTransform, 1U, T >::Domain_t |
typedef FieldLayout<1U> FFT< RCTransform, 1U, T >::Layout_t |
typedef BareField<T,1U> FFT< RCTransform, 1U, T >::RealField_t |
typedef LField<T,1U> FFT< RCTransform, 1U, T >::RealLField_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< RCTransform, 1U, T >::FFT | ( | const Domain_t & | rdomain, |
const Domain_t & | cdomain, | ||
const bool & | compressTemps = false |
||
) |
Same as above, but transform all dims:
FFT< RCTransform, 1U, T >::~FFT | ( | 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.
void FFT< RCTransform, 1U, T >::transform | ( | const char * | directionName, |
ComplexField_t & | f, | ||
RealField_t & | g, | ||
const bool & | constInput = false |
||
) |
void FFT< RCTransform, 1U, T >::transform | ( | const char * | directionName, |
RealField_t & | f, | ||
ComplexField_t & | g, | ||
const bool & | constInput = false |
||
) |
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.
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.
|
private |
|
private |
|
private |
|
private |