|
OPAL (Object Oriented Parallel Accelerator Library) 2024.2
OPAL
|
#include <FFT.h>
Public Types | |
| typedef FieldLayout< Dim > | Layout_t |
| typedef BareField< T, Dim > | RealField_t |
| typedef LField< T, Dim > | RealLField_t |
| typedef std::complex< T > | Complex_t |
| typedef BareField< Complex_t, Dim > | ComplexField_t |
| typedef LField< Complex_t, Dim > | ComplexLField_t |
| typedef FFTBase< Dim, 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[Dim], const bool sineTransformDims[Dim], const bool &compressTemps=false) | |
| FFT (const Domain_t &rdomain, const Domain_t &cdomain, const bool sineTransformDims[Dim], const bool &compressTemps=false) | |
| FFT (const Domain_t &rdomain, const bool sineTransformDims[Dim], const bool &compressTemps=false) | |
| FFT (const Domain_t &rdomain, 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) |
| void | transform (int direction, RealField_t &f, RealField_t &g, const bool &constInput=false) |
| void | transform (const char *directionName, RealField_t &f, RealField_t &g, const bool &constInput=false) |
| void | transform (int direction, RealField_t &f) |
| void | transform (const char *directionName, RealField_t &f) |
| 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 | |
| bool | transformDim (unsigned d) const |
| query whether this dimension is to be transformed | |
| unsigned | numTransformDims (void) const |
| query number of transform dimensions | |
| unsigned | activeDimension (unsigned d) const |
| get dimension number from list of transformed dimensions | |
| InternalFFT_t & | getEngine (void) |
| access the internal FFT Engine | |
| Precision_t & | getNormFact (void) |
| get the FFT normalization factor | |
| const Domain_t & | getDomain (void) const |
| get our domain | |
| bool | checkDomain (const Domain_t &dom1, const Domain_t &dom2) const |
| compare indexes of two domains | |
| bool | compressTemps (void) const |
| do we compress temps? | |
Static Protected Attributes | |
| static GuardCellSizes< Dim > | nullGC |
| null GuardCellSizes object for checking BareField arguments to transform | |
Private Member Functions | |
| void | setup (void) |
Private Attributes | |
| bool | sineTransformDims_m [Dim] |
| size_t | numSineTransforms_m |
| Layout_t ** | tempLayouts_m |
| Layout_t ** | tempRLayouts_m |
| ComplexField_t ** | tempFields_m |
| RealField_t ** | tempRFields_m |
| const Domain_t * | complexDomain_m |
| std::map< const char *, int > | directions_m |
| Stores user-defined names for FFT directions: | |
| FFT_e | transformType_m |
| Indicates which type of transform we do. | |
| bool | transformDims_m [Dim] |
| Indicates which dimensions are transformed. | |
| unsigned | nTransformDims_m |
| Stores the number of dims to be transformed. | |
| unsigned * | activeDims_m |
| Stores the numbers of these dims (0,1,2). | |
| InternalFFT_t | FFTEngine_m |
| Internal FFT object for performing serial FFTs. | |
| Precision_t | normFact_m |
| Normalization factor: | |
| Domain_t | Domain_m |
| Domain of the input field, mainly used to check axis sizes and ordering, former const Domain_t& Domain_m;. | |
| bool | compressTempFields_m |
| Switch to turn on/off compression of intermediate Fields (tempFields) as algorithm is finished with them. | |
sine transform class
| typedef std::complex<T> FFT< SineTransform, Dim, T >::Complex_t |
| typedef FFTBase<Dim,T>::Domain_t FFT< SineTransform, Dim, T >::Domain_t |
| typedef FieldLayout<Dim> FFT< SineTransform, Dim, T >::Layout_t |
| typedef BareField<T,Dim> FFT< SineTransform, Dim, T >::RealField_t |
| typedef LField<T,Dim> FFT< SineTransform, Dim, T >::RealLField_t |
| enum FFTBase::FFT_e |
| FFT< SineTransform, Dim, T >::FFT | ( | const Domain_t & | rdomain, |
| const Domain_t & | cdomain, | ||
| const bool | transformTheseDims[Dim], | ||
| const bool | sineTransformDims[Dim], | ||
| const bool & | compressTemps = false ) |
Constructor for doing sine transform(s) followed by RC FFT Create a new FFT object with the given domains for input/output Fields Specify which dimensions to transform along. Also specify which of these are sine transforms Optional argument compress indicates whether or not to compress temporary Fields in between uses.
References compressTemps(), and Dim.
Referenced by FFT(), setup(), and ~FFT().
| FFT< SineTransform, Dim, T >::FFT | ( | const Domain_t & | rdomain, |
| const Domain_t & | cdomain, | ||
| const bool | sineTransformDims[Dim], | ||
| const bool & | compressTemps = false ) |
Same as above, but transform all dims:
References compressTemps(), and Dim.
| FFT< SineTransform, Dim, T >::FFT | ( | const Domain_t & | rdomain, |
| const bool | sineTransformDims[Dim], | ||
| const bool & | compressTemps = false ) |
Separate constructors for doing only sine transforms Create a new FFT object with the given domain for input/output Field Specify which dimensions to transform along. Optional argument compress indicates whether or not to compress temporary Fields in between uses.
References compressTemps(), and Dim.
| FFT< SineTransform, Dim, T >::FFT | ( | const Domain_t & | rdomain, |
| const bool & | compressTemps = false ) |
Same as above, but transform all dims:
References compressTemps(), and FFT().
| FFT< SineTransform, Dim, T >::~FFT | ( | void | ) |
Definition at line 2127 of file FFT.hpp.
References FFT(), numSineTransforms_m, numTransformDims(), tempFields_m, tempLayouts_m, tempRFields_m, and tempRLayouts_m.
|
inlineprotected |
|
inlineprotected |
|
inline |
|
private |
setup performs all the initializations necessary after the transform directions have been specified.
Definition at line 1973 of file FFT.hpp.
References activeDimension(), complexDomain_m, Dim, FFT(), getDomain(), numSineTransforms_m, numTransformDims(), PARALLEL, PAssert, PAssert_EQ, PAssert_LT, PInsist, SERIAL, sineTransformDims_m, tempFields_m, tempLayouts_m, tempRFields_m, tempRLayouts_m, transformDim(), and transVnodes().
Referenced by transform().
| void FFT< SineTransform, Dim, T >::transform | ( | const char * | directionName, |
| ComplexField_t & | f, | ||
| RealField_t & | g, | ||
| const bool & | constInput = false ) |
| void FFT< SineTransform, Dim, T >::transform | ( | const char * | directionName, |
| RealField_t & | f ) |
| void FFT< SineTransform, Dim, T >::transform | ( | const char * | directionName, |
| RealField_t & | f, | ||
| ComplexField_t & | g, | ||
| const bool & | constInput = false ) |
| void FFT< SineTransform, Dim, T >::transform | ( | const char * | directionName, |
| RealField_t & | f, | ||
| RealField_t & | g, | ||
| const bool & | constInput = false ) |
| void FFT< SineTransform, Dim, T >::transform | ( | int | direction, |
| ComplexField_t & | f, | ||
| RealField_t & | g, | ||
| const bool & | constInput = false ) |
complex-to-real FFT, followed by sine transform(s) Same as above, but with input and output field types reversed.
| void FFT< SineTransform, Dim, T >::transform | ( | int | direction, |
| RealField_t & | f ) |
In-place version of real-to-real transform
| void FFT< SineTransform, Dim, T >::transform | ( | int | direction, |
| RealField_t & | f, | ||
| ComplexField_t & | g, | ||
| const bool & | constInput = false ) |
These transforms are for combinations of sine transforms and RC FFTs
Do the 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.
| void FFT< SineTransform, Dim, T >::transform | ( | int | direction, |
| RealField_t & | f, | ||
| RealField_t & | g, | ||
| const bool & | constInput = false ) |
These transforms are for doing sine transforms only sine transform: 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 |
|
staticprotected |
null GuardCellSizes object for checking BareField arguments to transform
! These members are used by the derived FFT classes
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |