26template <
class T,
unsigned Dim>
class BareField;
27template <
class T,
unsigned Dim>
class LField;
47template <
class Transform,
size_t Dim,
class T>
53template <
size_t Dim,
class T>
85 lengths[d] = cdomain[d].length();
88 int transformTypes[
Dim];
91 for (d=0; d<
Dim; ++d) {
93 normFact /= lengths[d];
114 const bool& constInput=
false);
140 ComplexField_t* temp = &f;
145 begdim = (direction == +1) ? 0 : (nTransformDims-1);
146 enddim = (direction == +1) ? nTransformDims : -1;
147 for (idim = begdim; idim != enddim; idim += direction) {
151 bool skipTranspose =
false;
154 if (idim == begdim) {
156 const Domain_t& first_dom = tempLayouts_m[idim]->getDomain();
159 skipTranspose = ( (in_dom[0].sameBase(first_dom[0])) &&
160 (in_dom[0].length() == first_dom[0].length()) &&
167 if (idim == enddim-direction) {
169 const Domain_t& last_dom = tempLayouts_m[idim]->getDomain();
172 skipTranspose = ( (in_dom[0].sameBase(last_dom[0])) &&
173 (in_dom[0].length() == last_dom[0].length()) &&
178 if (!skipTranspose) {
180 (*tempFields_m[idim])[tempLayouts_m[idim]->
getDomain()] =
185 temp = tempFields_m[idim];
187 else if (idim == enddim-direction && temp != &f) {
203 for (l_i = temp->
begin_if(); l_i != l_end; ++l_i) {
210 localdata = ldf->
getP();
213 int nstrips = 1, length = ldf->
size(0);
214 for (d=1; d<
Dim; ++d) nstrips *= ldf->
size(d);
215 for (
int istrip=0; istrip<nstrips; ++istrip) {
267template <
size_t Dim,
class T>
270 const char* directionName,
273 const bool& constInput)
276 transform(dir, f, g, constInput);
324 const bool& constInput=
false);
366 const char* directionName,
369 const bool& constInput)
372 transform(dir, f, g, constInput);
382 const char* directionName,
394template <
size_t Dim,
class T>
437 const bool& constInput=
false);
448 const bool& constInput=
false);
503template <
size_t Dim,
class T>
506 const char* directionName,
509 const bool& constInput)
512 transform(dir, f, g, constInput);
519template <
size_t Dim,
class T>
522 const char* directionName,
525 const bool& constInput)
528 transform(dir, f, g, constInput);
559 const bool transformTheseDims[1U],
const bool&
compressTemps=
false);
580 const bool& constInput=
false);
589 const bool& constInput=
false);
630 const char* directionName,
633 const bool& constInput)
636 transform(dir, f, g, constInput);
646 const char* directionName,
649 const bool& constInput)
652 transform(dir, f, g, constInput);
659template <
size_t Dim,
class T>
681 const bool transformTheseDims[
Dim],
715 const bool& constInput=
false);
724 const bool& constInput=
false);
738 const bool& constInput=
false);
761 bool sineTransformDims_m[
Dim];
801template <
size_t Dim,
class T>
804 const char* directionName,
807 const bool& constInput)
810 transform(dir, f, g, constInput);
817template <
size_t Dim,
class T>
820 const char* directionName,
823 const bool& constInput)
826 transform(dir, f, g, constInput);
833template <
size_t Dim,
class T>
836 const char* directionName,
839 const bool& constInput)
842 transform(dir, f, g, constInput);
849template <
size_t Dim,
class T>
852 const char* directionName,
900 const bool& constInput=
false);
936 const char* directionName,
939 const bool& constInput)
942 transform(dir, f, g, constInput);
952 const char* directionName,
const GuardCellSizes< Dim > & getGC() const
ac_id_larray::const_iterator const_iterator_if
Layout_t & getLayout() const
int size(unsigned d) const
void Uncompress(bool fill_domain=true)
void transform(int direction, ComplexField_t &f, ComplexField_t &g, const bool &constInput=false)
BareField< Complex_t, Dim > ComplexField_t
LField< Complex_t, Dim > ComplexLField_t
FFTBase< Dim, T >::Domain_t Domain_t
FieldLayout< Dim > Layout_t
void transform(const char *directionName, ComplexField_t &f)
FFT(const Domain_t &cdomain, const bool &compressTemps=false)
std::complex< T > Complex_t
void transform(int direction, ComplexField_t &f)
FFT(const Domain_t &cdomain, const bool transformTheseDims[Dim], const bool &compressTemps=false)
Layout_t ** tempLayouts_m
void transform(const char *directionName, ComplexField_t &f, ComplexField_t &g, const bool &constInput=false)
ComplexField_t ** tempFields_m
FFTBase< 1U, T >::Domain_t Domain_t
void transform(const char *directionName, ComplexField_t &f, ComplexField_t &g, const bool &constInput=false)
void transform(const char *directionName, ComplexField_t &f)
std::complex< T > Complex_t
FFT(const Domain_t &cdomain, const bool transformTheseDims[1U], const bool &compressTemps=false)
void transform(int direction, ComplexField_t &f, ComplexField_t &g, const bool &constInput=false)
LField< Complex_t, 1U > ComplexLField_t
FFT(const Domain_t &cdomain, const bool &compressTemps=false)
void transform(int direction, ComplexField_t &f)
FieldLayout< 1U > Layout_t
BareField< Complex_t, 1U > ComplexField_t
ComplexField_t * tempFields_m
BareField< Complex_t, Dim > ComplexField_t
ComplexField_t ** tempFields_m
std::complex< T > Complex_t
FFTBase< Dim, T >::Domain_t Domain_t
void transform(const char *directionName, ComplexField_t &f, RealField_t &g, const bool &constInput=false)
void transform(int direction, RealField_t &f, ComplexField_t &g, const bool &constInput=false)
RealField_t * tempRField_m
FFT(const Domain_t &rdomain, const Domain_t &cdomain, const bool &compressTemps=false, int serialAxes=1)
Layout_t ** tempLayouts_m
LField< Complex_t, Dim > ComplexLField_t
void transform(const char *directionName, RealField_t &f, ComplexField_t &g, const bool &constInput=false)
FieldLayout< Dim > Layout_t
BareField< T, Dim > RealField_t
LField< T, Dim > RealLField_t
void transform(int direction, ComplexField_t &f, RealField_t &g, const bool &constInput=false)
FFT(const Domain_t &rdomain, const Domain_t &cdomain, const bool transformTheseDims[Dim], const bool &compressTemps=false)
void transform(const char *directionName, ComplexField_t &f, RealField_t &g, const bool &constInput=false)
std::complex< T > Complex_t
LField< Complex_t, 1U > ComplexLField_t
FieldLayout< 1U > Layout_t
FFTBase< 1U, T >::Domain_t Domain_t
void transform(int direction, RealField_t &f, ComplexField_t &g, const bool &constInput=false)
BareField< T, 1U > RealField_t
FFT(const Domain_t &rdomain, const Domain_t &cdomain, const bool transformTheseDims[1U], const bool &compressTemps=false)
void transform(const char *directionName, RealField_t &f, ComplexField_t &g, const bool &constInput=false)
BareField< Complex_t, 1U > ComplexField_t
ComplexField_t * tempFields_m
FFT(const Domain_t &rdomain, const Domain_t &cdomain, const bool &compressTemps=false)
LField< T, 1U > RealLField_t
void transform(int direction, ComplexField_t &f, RealField_t &g, const bool &constInput=false)
BareField< T, Dim > RealField_t
void transform(int direction, RealField_t &f)
ComplexField_t ** tempFields_m
void transform(int direction, RealField_t &f, ComplexField_t &g, const bool &constInput=false)
void transform(int direction, ComplexField_t &f, RealField_t &g, const bool &constInput=false)
const Domain_t * complexDomain_m
std::complex< T > Complex_t
Layout_t ** tempRLayouts_m
Layout_t ** tempLayouts_m
FFT(const Domain_t &rdomain, const bool sineTransformDims[Dim], const bool &compressTemps=false)
FFT(const Domain_t &rdomain, const bool &compressTemps=false)
FFT(const Domain_t &rdomain, const Domain_t &cdomain, const bool transformTheseDims[Dim], const bool sineTransformDims[Dim], const bool &compressTemps=false)
void transform(int direction, RealField_t &f, RealField_t &g, const bool &constInput=false)
BareField< Complex_t, Dim > ComplexField_t
RealField_t ** tempRFields_m
FFT(const Domain_t &rdomain, const Domain_t &cdomain, const bool sineTransformDims[Dim], const bool &compressTemps=false)
FFTBase< Dim, T >::Domain_t Domain_t
LField< Complex_t, Dim > ComplexLField_t
void transform(const char *directionName, RealField_t &f, RealField_t &g, const bool &constInput=false)
LField< T, Dim > RealLField_t
void transform(const char *directionName, RealField_t &f, ComplexField_t &g, const bool &constInput=false)
size_t numSineTransforms_m
void transform(const char *directionName, ComplexField_t &f, RealField_t &g, const bool &constInput=false)
void transform(const char *directionName, RealField_t &f)
FieldLayout< Dim > Layout_t
Layout_t * tempRLayouts_m
void transform(int direction, RealField_t &f)
FFT(const Domain_t &rdomain, const bool sineTransformDims[1U], const bool &compressTemps=false)
FieldLayout< 1U > Layout_t
RealField_t * tempRFields_m
void transform(const char *directionName, RealField_t &f, RealField_t &g, const bool &constInput=false)
FFT(const Domain_t &rdomain, const bool &compressTemps=false)
void transform(int direction, RealField_t &f, RealField_t &g, const bool &constInput=false)
void transform(const char *directionName, RealField_t &f)
FFTBase< 1U, T >::Domain_t Domain_t
LField< T, 1U > RealLField_t
BareField< T, 1U > RealField_t
int getDirection(const char *directionName) const
translate direction name string into dimension number
Precision_t & getNormFact(void)
get the FFT normalization factor
const Domain_t & getDomain(void) const
get our domain
unsigned numTransformDims(void) const
query number of transform dimensions
bool compressTemps(void) const
do we compress temps?
InternalFFT_t & getEngine(void)
access the internal FFT Engine
bool checkDomain(const Domain_t &dom1, const Domain_t &dom2) const
compare indexes of two domains
void callFFT(unsigned transformDim, int direction, Complex_t *data)
void setup(unsigned numTransformDims, const int *transformTypes, const int *axisLengths)
const NDIndex< Dim > & getDomain() const
e_dim_tag getDistribution(unsigned int d) const