OPAL (Object Oriented Parallel Accelerator Library) 2022.1
OPAL
|
#include <FFTBase.h>
Public Types | |
enum | { dimensions = Dim } |
enum | FFT_e { ccFFT , rcFFT , sineFFT , cosineFFT } |
typedef T | Precision_t |
typedef NDIndex< Dim > | Domain_t |
typedef FFTPACK< T > | InternalFFT_t |
Public Member Functions | |
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 |
Protected Member Functions | |
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 Protected Attributes | |
static GuardCellSizes< Dim > | nullGC = GuardCellSizes<Dim>() |
null GuardCellSizes object for checking BareField arguments to transform More... | |
Private Attributes | |
std::map< const char *, int > | directions_m |
Stores user-defined names for FFT directions: More... | |
FFT_e | transformType_m |
Indicates which type of transform we do. More... | |
bool | transformDims_m [Dim] |
Indicates which dimensions are transformed. More... | |
unsigned | nTransformDims_m |
Stores the number of dims to be transformed. More... | |
unsigned * | activeDims_m |
Stores the numbers of these dims (0,1,2). More... | |
InternalFFT_t | FFTEngine_m |
Internal FFT object for performing serial FFTs. More... | |
Precision_t | normFact_m |
Normalization factor: More... | |
Domain_t | Domain_m |
Domain of the input field, mainly used to check axis sizes and ordering, former const Domain_t& Domain_m;. More... | |
bool | compressTempFields_m |
Switch to turn on/off compression of intermediate Fields (tempFields) as algorithm is finished with them. More... | |
The FFTBase class handles duties for the FFT class that do not involve the type of transform to be done. FFTBase is templated on dimensionality of the Field to transform and the floating-point precision type of the Field (float or double).
FFT Base Class to do stuff that is independent of transform type
anonymous enum |
enum FFTBase::FFT_e |
FFTBase< Dim, T >::FFTBase | ( | FFT_e | transform, |
const Domain_t & | domain, | ||
const bool | transformTheseDims[Dim], | ||
bool | compressTemps | ||
) |
inputs are enum of transform type, domain of input Field, which dimensions to transform, and whether to compress temporary Fields when not in use
transform | |
domain | |
transformTheseDims | |
compressTemps |
FFTBase< Dim, T >::FFTBase | ( | FFT_e | transform, |
const Domain_t & | domain, | ||
bool | compressTemps | ||
) |
transform | |
domain | |
compressTemps |
Definition at line 95 of file FFTBase.h.
References FFTBase< Dim, T >::activeDims_m.
|
inlineprotected |
get dimension number from list of transformed dimensions
get dimension number from list of transformed dimensions
d |
Definition at line 252 of file FFTBase.h.
References PAssert_LT.
Referenced by FFT< CCTransform, Dim, T >::setup(), FFT< RCTransform, Dim, T >::setup(), and FFT< SineTransform, Dim, T >::setup().
|
inlineprotected |
compare indexes of two domains
helper function for comparing domains
Dim | |
dom1 | |
Dim | |
dom2 |
Definition at line 269 of file FFTBase.h.
References Dim.
Referenced by FFT< CCTransform, Dim, T >::transform().
|
inlineprotected |
do we compress temps?
Definition at line 166 of file FFTBase.h.
References FFTBase< Dim, T >::compressTempFields_m.
Referenced by FFT< CCTransform, Dim, T >::setup(), FFT< CCTransform, 1U, T >::setup(), FFT< RCTransform, 1U, T >::setup(), FFT< SineTransform, Dim, T >::setup(), FFT< SineTransform, 1U, T >::setup(), and FFT< CCTransform, Dim, T >::transform().
|
inlineprotected |
translate direction name string into dimension number
Translate direction name string into dimension number
directionName |
Definition at line 225 of file FFTBase.h.
Referenced by FFT< CCTransform, Dim, T >::transform().
|
inlineprotected |
get our domain
Definition at line 160 of file FFTBase.h.
References FFTBase< Dim, T >::Domain_m.
Referenced by FFT< CCTransform, Dim, T >::setup(), FFT< CCTransform, 1U, T >::setup(), FFT< RCTransform, Dim, T >::setup(), FFT< RCTransform, 1U, T >::setup(), FFT< SineTransform, Dim, T >::setup(), FFT< SineTransform, 1U, T >::setup(), and FFT< CCTransform, Dim, T >::transform().
|
inlineprotected |
access the internal FFT Engine
Definition at line 154 of file FFTBase.h.
References FFTBase< Dim, T >::FFTEngine_m.
Referenced by FFT< CCTransform, Dim, T >::FFT(), and FFT< CCTransform, Dim, T >::transform().
|
inlineprotected |
get the FFT normalization factor
Definition at line 157 of file FFTBase.h.
References FFTBase< Dim, T >::normFact_m.
Referenced by FFT< CCTransform, Dim, T >::FFT(), and FFT< CCTransform, Dim, T >::transform().
|
inlineprotected |
query number of transform dimensions
Definition at line 148 of file FFTBase.h.
References FFTBase< Dim, T >::nTransformDims_m.
Referenced by FFT< CCTransform, Dim, T >::setup(), FFT< RCTransform, Dim, T >::setup(), FFT< SineTransform, Dim, T >::setup(), FFT< CCTransform, Dim, T >::transform(), FFT< CCTransform, Dim, T >::~FFT(), FFT< RCTransform, Dim, T >::~FFT(), and FFT< SineTransform, Dim, T >::~FFT().
|
inline |
Allow the user to name the transform directions, for code clarity.
direction | |
directionName |
Allow the user to name the transform directions, for code clarity. Typical values might be "x_to_k", "k_to_x", "t_to_omega", "omega_to_t"
Definition at line 209 of file FFTBase.h.
References abs(), and PAssert_EQ.
|
inline |
Set the FFT normalization factor (to something other than the default)
nf |
Definition at line 117 of file FFTBase.h.
References FFTBase< Dim, T >::normFact_m.
|
inlineprotected |
query whether this dimension is to be transformed
query whether this dimension is to be transformed
d |
Definition at line 238 of file FFTBase.h.
References Dim, and PAssert_LT.
Referenced by FFT< SineTransform, Dim, T >::setup().
Utility to determine the number of vnodes to use in temporary transpose fields; this is either -1, or a limited number set on the command line
Definition at line 125 of file FFTBase.h.
References IpplInfo::getNodes(), and IpplInfo::maxFFTNodes().
Referenced by FFT< CCTransform, Dim, T >::setup(), FFT< RCTransform, Dim, T >::setup(), and FFT< SineTransform, Dim, T >::setup().
I/O for FFT object
out |
Definition at line 82 of file FFTBase.hpp.
References Dim, endl(), and getTransformType().
Referenced by operator<<().
Stores the numbers of these dims (0,1,2).
Definition at line 176 of file FFTBase.h.
Referenced by FFTBase< Dim, T >::~FFTBase().
Switch to turn on/off compression of intermediate Fields (tempFields) as algorithm is finished with them.
Definition at line 188 of file FFTBase.h.
Referenced by FFTBase< Dim, T >::compressTemps().
Domain of the input field, mainly used to check axis sizes and ordering, former const Domain_t& Domain_m;.
Definition at line 185 of file FFTBase.h.
Referenced by FFTBase< Dim, T >::getDomain().
|
private |
Internal FFT object for performing serial FFTs.
Definition at line 179 of file FFTBase.h.
Referenced by FFTBase< Dim, T >::getEngine().
|
private |
Normalization factor:
Definition at line 182 of file FFTBase.h.
Referenced by FFTBase< Dim, T >::getNormFact(), and FFTBase< Dim, T >::setNormFact().
Stores the number of dims to be transformed.
Definition at line 175 of file FFTBase.h.
Referenced by FFTBase< Dim, T >::numTransformDims().
|
staticprotected |
null GuardCellSizes object for checking BareField arguments to transform
! These members are used by the derived FFT classes