C++ main module for emicrom Package  1.0
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
MATSGN_FFT Class Reference

This class describes FFT routines based on fftw_complex array used in fftw library. More...

#include <MATSGN_FFT.h>

Inheritance diagram for MATSGN_FFT:
Inheritance graph
[legend]
Collaboration diagram for MATSGN_FFT:
Collaboration graph
[legend]

Public Member Functions

void setMethod (const tFlag &method)
 set the FFT method More...
 
void slowFourierTransform (const MATSGN_ComplexArray &input, MATSGN_ComplexArray &output, const tBoolean &isForward) const
 compute the fourier transform basicly (slow fourier transform) More...
 
void slowFourierTransform (const MATSGN_ComplexArray &input, MATSGN_ComplexArray &output) const
 compute the fourier transform basicly (slow fourier transform) More...
 
void fastFourierTransform (const MATSGN_ComplexArray &x, MATSGN_ComplexArray &res)
 compute the Fast Fourier Transform of a complex vector in the forward direction More...
 
void fastFourierInverseTransform (const MATSGN_ComplexArray &x, MATSGN_ComplexArray &res, const tFlag &method)
 compute the Fast Fourier Transform inverse of a complex vector in the forwrd direction More...
 
void fastFourierInverseTransform (const MATSGN_ComplexArray &x, MATSGN_ComplexArray &res, const tBoolean &isForward, const tFlag &method)
 compute the Fast Fourier Transform inverse of a complex vector More...
 
virtual tBoolean fastFourierTransform3D (const tUInteger &Nx, const tUInteger &Ny, const tUInteger &Nz, MATSGN_ComplexArray &x, const tBoolean &isForward, const tBoolean &inverse, const tFlag &method) const
 compute a complex fft for an array 3D More...
 
virtual tBoolean fastFourierTransform3DMatrix (MATSGN_ComplexArray &A, const tUIndex &fromAIndex, MATSGN_ComplexArray &Wrk, const tUInteger &lx, const tUInteger &ly, const tUInteger &lz, const tUInteger &lda, const tBoolean &isForward, const tBoolean &inverse, const tFlag &method) const
 compute the 3D fft in a mesh translation of ZZFFT More...
 
virtual tBoolean fastFourierTransform3DMatrix (MATSGN_ComplexArray &A, const tUInteger &lx, const tUInteger &ly, const tUInteger &lz, const tUInteger &lda, const tBoolean &isForward, const tBoolean &inverse, const tFlag &method) const
 compute the 3D fft in a mesh More...
 
virtual tBoolean fastFourierTransform3DMatrix (MATSGN_ComplexArray &A, MATSGN_ComplexArray &wrk, const tUInteger &lx, const tUInteger &ly, const tUInteger &lz, const tUInteger &lda, const tBoolean &isForward, const tBoolean &inverse, const tFlag &method) const
 compute the 3D fft in a mesh More...
 
void getSharedPointer (SP::CORE_Object &p)
 get the shared pointer of this class into p More...
 
void getSharedPointer (SPC::CORE_Object &p) const
 get the shared pointer of this class into p More...
 
tString getClassName () const
 return the class name of the object More...
 
tString getIdentityString () const
 return the identity string of the object of the form className_at_address More...
 
tString getPointerAddress () const
 return the identity string of the object More...
 
template<class T >
tBoolean isInstanceOf () const
 test if the clas T is an instance of this class More...
 
tBoolean isInstanceOf (const tString &name) const
 test if the object is an instance of className More...
 
virtual tString toString () const
 return the string representation of the object node More...
 

Static Public Member Functions

static SP::MATSGN_FFT New ()
 create a FFT class More...
 
static tString getFFTMethodName (const tFlag &m)
 get the method name More...
 
static void fastFourierTransform (const CORE_DoubleArray &input, MATSGN_ComplexArray &output, const tFlag &method)
 compute the Fast Fourier Transform of a double vector with respect to the method More...
 
static void fastFourierTransform (const CORE_DoubleArray &x, MATSGN_ComplexArray &res, const tBoolean &isForward, const tFlag &method)
 compute the Fast Fourier Transform of a double vector More...
 
static void fastFourierTransform (const MATSGN_ComplexArray &x, MATSGN_ComplexArray &res, const tBoolean &isForward, const tBoolean &inverse, const tFlag &method)
 compute the Fast Fourier Transform of a complex vector More...
 
static void fastFourierTransform (MATSGN_ComplexArray &x, const tBoolean &isForward, const tBoolean &inverse, const tFlag &method)
 compute the Fast Fourier Transform of a complex vector More...
 
static void fastFourierTransform_FXT (const MATSGN_ComplexArray &input, const tBoolean &isForward, const tBoolean &isInverse, complex< tDouble > *output)
 compute the Fast Fourier Transform of a double complex vector vector using FXT library More...
 
static void fastFourierTransform_FXT (complex< tDouble > *x, const tUIndex &n, const tBoolean &isForward, const tBoolean &isInverse)
 compute the Fast Fourier Transform of a double complex vector vector using FXT library More...
 
static void Transpose (const tChar &storage, fftw_complex *A, const tUIndex &nRows, const tUIndex &nCols)
 transpose a complex matric sotored in Array or Column of size nRows x nCols More...
 
static void fastFourierTransform_FFTW (const MATSGN_ComplexArray &x, MATSGN_ComplexArray &y, const tBoolean &isForward, const tBoolean &isInverse)
 compute the Fast Fourier Transform of a double complex vector vector using FFTW library More...
 
static void fastFourierTransform_FFTW (MATSGN_ComplexArray &x, const tBoolean &isForward, const tBoolean &isInverse)
 compute the Fast Fourier Transform of a double complex vector using FFTW library More...
 
static void fastFourierTransform_FFTW (const tUIndex &length, fftw_complex *x, const tBoolean &isForward, const tBoolean &isInverse)
 compute the Fast Fourier Transform of a double complex vector using FFTW library More...
 
static void fastFourierTransformND_FFTW (const CORE_IntArray &dims, MATSGN_ComplexArray &x, const tBoolean &isForward, const tBoolean &isInverse)
 compute the Fast Fourier Transform of a double complex vector with dimensions dims using FFTW library More...
 
static void tabfft (const tBoolean &isForward, MATSGN_ComplexArray &w, const tUIndex &nx)
 tabfft More...
 
static void fastFourierTransform_SL (const MATSGN_ComplexArray &w, MATSGN_ComplexArray &x, const tBoolean &isForward, const tBoolean &inverse)
 compute the fft transform of vector x translated from fft.h from Stephane Labbé EM62 code More...
 
static tBoolean fastFourierTransform_LR (const MATSGN_ComplexArray &input, MATSGN_ComplexArray &output, const tBoolean &isForward, const tBoolean &inverse)
 compute the fast fourier transform of input using LIBROW algorithm More...
 
static tBoolean fastFourierTransform_LR (MATSGN_ComplexArray &input, const tBoolean &isForward, const tBoolean &inverse)
 compute the fast fourier transform of input using LIBROW algorithm More...
 
static void setIsMemoryChecked (const tBoolean &v)
 set if the memory checking is used More...
 
static void setOut (SP::CORE_Out out)
 set the output stream More...
 
static void resetOut ()
 reset the output stream More...
 
static void setThread (SP::CORE_Thread thread)
 set the thread More...
 
static void resetThread ()
 reset the output stream More...
 
static CORE_Outout ()
 get the output More...
 
static SP::CORE_Out getOut ()
 get the output More...
 
static CORE_ThreadgetThread ()
 get the profilier More...
 
static const tBooleanisMemoryChecked ()
 get if the memory checking is used More...
 
static tString getClassName (const tString &identityString)
 return the class name of the object More...
 
template<class T >
static tString getTypeName ()
 get type name More...
 
static tBoolean is64Architecture ()
 return true if the machine is a 64 bits machine More...
 
static tBoolean is32Architecture ()
 return true if the machine is a 32 bits machine More...
 
static tString pointer2String (const void *obj)
 return the string representation of a pointer More...
 
static void printObjectsInMemory (ostream &f)
 print object in memory More...
 
static void printObjectsInMemory ()
 print object in memory in the standart output More...
 
static tChar getMaxChar ()
 get the max value for tChar type More...
 
static tChar getMinChar ()
 get the min value for tChar type More...
 
static tUChar getMaxUChar ()
 get the max value for tUChar type More...
 
static tUChar getMinUChar ()
 get the min value for tUChar type More...
 
static tSInt getMaxSInt ()
 get the max value for tSInt type More...
 
static tSInt getMinSInt ()
 get the min value for tSInt type More...
 
static tUSInt getMaxUSInt ()
 get the max value for tUSInt type More...
 
static tUSInt getMinUSInt ()
 get the min value for tUSInt type More...
 
static tInt getMaxInt ()
 get the max value for tInt type More...
 
static tInt getMinInt ()
 get the min value for tInt type More...
 
static tUInt getMaxUInt ()
 get the max value for tUInt type More...
 
static tUInt getMinUInt ()
 get the min value for tUInt type More...
 
static tLInt getMaxLInt ()
 get the max value for tLInt type More...
 
static tLInt getMinLInt ()
 get the min value for tLInt type More...
 
static tULInt getMaxULInt ()
 get the max value for tULInt type More...
 
static tULInt getMinULInt ()
 get the min value for tULInt type More...
 
static tLLInt getMaxLLInt ()
 get the max value for tULInt type More...
 
static tLLInt getMinLLInt ()
 get the min value for tLLInt type More...
 
static tULLInt getMaxULLInt ()
 get the max value for tULLInt type More...
 
static tULLInt getMinULLInt ()
 get the min value for tULLInt type More...
 
static tFloat getMaxFloat ()
 get the max value for tFloat type More...
 
static tFloat getMinFloat ()
 get the min value for tFloat type More...
 
template<class T >
static T getEpsilon ()
 get the epsilon value for T type More...
 
template<class T >
static T getInfinity ()
 get the infinity for T type More...
 
static tFloat getFloatEpsilon ()
 get the epsilon value for tFloat type More...
 
static tFloat getFloatInfinity ()
 get the infinity value for tFloat type More...
 
static tDouble getMaxDouble ()
 get the max value for tDouble type More...
 
static tDouble getMinDouble ()
 get the min value for tDouble type More...
 
static tDouble getDoubleInfinity ()
 get the infinity value for tFloat type More...
 
static tDouble getDoubleEpsilon ()
 get the epsilon value for tDouble type More...
 
static tLDouble getMinLDouble ()
 get the min value for tLDouble type More...
 
static tLDouble getMaxLDouble ()
 get the max value for tLDouble type More...
 
static tLDouble getLDoubleEpsilon ()
 get the epsilon value for tLDouble type More...
 
static tDouble getLDoubleInfinity ()
 get the infinity value for tDouble type More...
 
static tIndex getMaxIndex ()
 get the max value for the array/vector indexing type More...
 
static tIndex getMinIndex ()
 get the min value for the array/vector indexing type More...
 
static tUIndex getMaxUIndex ()
 get the max value for difference the array/vector indexing type More...
 
static tUIndex getMinUIndex ()
 get the min value for difference the array/vector indexing type More...
 
static tFlag getMaxFlag ()
 get the max value for the tFlag type More...
 
static tFlag getMinFlag ()
 get the min value for the tFlag type More...
 
static tUInteger getMaxUInteger ()
 get the max value for the unsigned integer type More...
 
static tUInteger getMinUInteger ()
 get the min value for the unsigned integer type More...
 
static tInteger getMaxInteger ()
 get the max value for the integer type More...
 
static tInteger getMinInteger ()
 get the min value for the integer type More...
 
static tReal getMaxReal ()
 get the max value for the real type More...
 
static tReal getMinReal ()
 get the min value for the real type More...
 
static tReal getRealEpsilon ()
 get the eps which is the difference between 1 and the least value greater than 1 that is representable. More...
 
static tReal getRealInfinity ()
 get the infinity value More...
 
template<class T >
static T computeEpsilon ()
 compute epsilon More...
 

Static Public Attributes

static const tFlag FXT =0
 
static const tFlag SL =10
 
static const tFlag LIB_ROW =5
 
static const tFlag FFTW =2
 
static const tBoolean FORWARD =true
 
static const tBoolean BACKWARD =false
 
static const tBoolean DIRECT =false
 
static const tBoolean INVERSE =true
 

Protected Member Functions

 MATSGN_FFT (void)
 create a FFT object More...
 
virtual ~MATSGN_FFT (void)
 destroy an FFT Object. More...
 
virtual tBoolean fastFourierTransform3D_GENERIC (const tUInteger &Nx, const tUInteger &Ny, const tUInteger &Nz, MATSGN_ComplexArray &x, const tBoolean &isForward, const tBoolean &inverse, const tFlag &method) const
 compute a complex fft for an array 3D More...
 
virtual tBoolean fastFourierTransform3D_SL (const tUInteger &Nx, const tUInteger &Ny, const tUInteger &Nz, MATSGN_ComplexArray &x, const tBoolean &isForward, const tBoolean &inverse) const
 compute a complex fft for an array 3D used in SL fortran code More...
 
virtual tBoolean fastFourierTransform3D_FFTW (const tUInteger &Nx, const tUInteger &Ny, const tUInteger &Nz, MATSGN_ComplexArray &x, const tBoolean &isForward, const tBoolean &inverse) const
 compute a complex fft for an array 3D usinf FFTW More...
 
void setThis (SP::CORE_Object p)
 set this weak shared pointer called toDoAfterThis setting method More...
 
virtual void toDoAfterThisSetting ()
 method called after setThis() method this method can oly be called once. More...
 

Private Member Functions

 SP_OBJECT (MATSGN_FFT)
 

Static Private Member Functions

static tBoolean Rearrange (const MATSGN_ComplexArray &input, MATSGN_ComplexArray &output)
 
static tBoolean Rearrange (MATSGN_ComplexArray &inoutput)
 
static tBoolean Perform (MATSGN_ComplexArray &data, const tBoolean &isForward, const tBoolean &inverse)
 
static tBoolean Scale (MATSGN_ComplexArray &data)
 

Private Attributes

tFlag mMethod
 

Detailed Description

This class describes FFT routines based on fftw_complex array used in fftw library.

It uses also other FFT libraries such that FXT.

The main class of the package is MATSGN_FFT::fastFourierTrasnsform()

Author
Stéphane Despréaux
Version
1.0

Constructor & Destructor Documentation

◆ MATSGN_FFT()

MATSGN_FFT::MATSGN_FFT ( void  )
protected

create a FFT object

References mMethod, and SL.

Referenced by New().

Here is the caller graph for this function:

◆ ~MATSGN_FFT()

MATSGN_FFT::~MATSGN_FFT ( void  )
protectedvirtual

destroy an FFT Object.

Member Function Documentation

◆ computeEpsilon()

template<class T >
static T CORE_Object::computeEpsilon ( )
inlinestaticinherited

compute epsilon

Returns
the epsilon value eps=10^{-p/3} where p is defined by getEpsilon()=10^{-p}

◆ fastFourierInverseTransform() [1/2]

void MATSGN_FFT::fastFourierInverseTransform ( const MATSGN_ComplexArray x,
MATSGN_ComplexArray res,
const tFlag method 
)
inline

compute the Fast Fourier Transform inverse of a complex vector in the forwrd direction

Parameters
xinput
resoutput result
methodthe method to use

References fastFourierTransform().

Referenced by MATSGN_Test::testFFT02().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastFourierInverseTransform() [2/2]

void MATSGN_FFT::fastFourierInverseTransform ( const MATSGN_ComplexArray x,
MATSGN_ComplexArray res,
const tBoolean isForward,
const tFlag method 
)
inline

compute the Fast Fourier Transform inverse of a complex vector

Parameters
xinput
resoutput result
isForwardthe direction of the fft
methodthe method to use

References fastFourierTransform(), fastFourierTransform3D(), fastFourierTransform3D_FFTW(), fastFourierTransform3D_GENERIC(), fastFourierTransform3D_SL(), fastFourierTransform3DMatrix(), tBoolean, tFlag, tUIndex, and tUInteger.

Here is the call graph for this function:

◆ fastFourierTransform() [1/5]

static void MATSGN_FFT::fastFourierTransform ( const CORE_DoubleArray input,
MATSGN_ComplexArray output,
const tFlag method 
)
inlinestatic

compute the Fast Fourier Transform of a double vector with respect to the method

Parameters
inputinput complex
outputoutput complex
methodthe method to use

Referenced by fastFourierInverseTransform(), fastFourierTransform(), fastFourierTransform3D_GENERIC(), MATSGN_Test::testFFT02(), and MATSGN_Test::testFFT03().

Here is the caller graph for this function:

◆ fastFourierTransform() [2/5]

static void MATSGN_FFT::fastFourierTransform ( const CORE_DoubleArray x,
MATSGN_ComplexArray res,
const tBoolean isForward,
const tFlag method 
)
inlinestatic

compute the Fast Fourier Transform of a double vector

Parameters
xinput complex
resoutput complex
isForwardthe direction of the fft
methodthe method to use

References fastFourierTransform(), tBoolean, and tFlag.

Here is the call graph for this function:

◆ fastFourierTransform() [3/5]

void MATSGN_FFT::fastFourierTransform ( const MATSGN_ComplexArray x,
MATSGN_ComplexArray res,
const tBoolean isForward,
const tBoolean inverse,
const tFlag method 
)
static

compute the Fast Fourier Transform of a complex vector

Parameters
xinput complex
resoutput complex
isForwardteh direction of the fft
inversefftw inverse to compute
methodthe method to use

References MATSGN_ComplexArray::copy(), fastFourierTransform_FFTW(), fastFourierTransform_FXT(), fastFourierTransform_LR(), fastFourierTransform_SL(), FFTW, FXT, MATSGN_ComplexArray::getSize(), LIB_ROW, MATSGN_ComplexArray::setSize(), SL, tabfft(), tUIndex, and tUSInt.

Here is the call graph for this function:

◆ fastFourierTransform() [4/5]

void MATSGN_FFT::fastFourierTransform ( MATSGN_ComplexArray x,
const tBoolean isForward,
const tBoolean inverse,
const tFlag method 
)
static

compute the Fast Fourier Transform of a complex vector

Parameters
xinput/output complex
isForwardthe direction of the fft
inversefftw inverse to compute
methodthe method to use

References MATSGN_ComplexArray::copy(), fastFourierTransform_FFTW(), fastFourierTransform_FXT(), fastFourierTransform_LR(), fastFourierTransform_SL(), FFTW, FXT, MATSGN_ComplexArray::getSize(), LIB_ROW, SL, tabfft(), and tUIndex.

Here is the call graph for this function:

◆ fastFourierTransform() [5/5]

void MATSGN_FFT::fastFourierTransform ( const MATSGN_ComplexArray x,
MATSGN_ComplexArray res 
)
inline

compute the Fast Fourier Transform of a complex vector in the forward direction

Parameters
xinput
resoutput result

References fastFourierTransform().

Here is the call graph for this function:

◆ fastFourierTransform3D()

tBoolean MATSGN_FFT::fastFourierTransform3D ( const tUInteger Nx,
const tUInteger Ny,
const tUInteger Nz,
MATSGN_ComplexArray x,
const tBoolean isForward,
const tBoolean inverse,
const tFlag method 
) const
virtual

compute a complex fft for an array 3D

Parameters
Nxdimension in x (must be a power of 2)
Nydimension in y (must be a power of 2)
Nzdimension in z (must be a power of 2)
xvector of the array 3d x[i][j][k]=x[i+j*n1+k*n1*n2]
isForwardthe FFT direction
inverseif inverse is true compute the FFT inverse.
methodthe method to use
Returns
true if the computation succeeded

References fastFourierTransform3D_FFTW(), fastFourierTransform3D_GENERIC(), fastFourierTransform3D_SL(), FFTW, FXT, LIB_ROW, SL, and tBoolean.

Referenced by fastFourierInverseTransform(), fastFourierTransform3DMatrix(), and MATSGN_Test::testFFT3D().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastFourierTransform3D_FFTW()

tBoolean MATSGN_FFT::fastFourierTransform3D_FFTW ( const tUInteger Nx,
const tUInteger Ny,
const tUInteger Nz,
MATSGN_ComplexArray x,
const tBoolean isForward,
const tBoolean inverse 
) const
protectedvirtual

compute a complex fft for an array 3D usinf FFTW

Parameters
Nxdimension in x (must be a power of 2)
Nydimension in y (must be a power of 2)
Nzdimension in z (must be a power of 2)
xvector of the array 3d x[i][j][k]=x[i+j*n1+k*n1*n2]
isForwardthe FFT direction
inverseif inverse is true compute the FFT inverse.
Returns
true if the computation succeeded

References CORE_Object::getMaxInt(), MATSGN_ComplexArray::getValues(), OMP_CRITICAL, OMP_GET_THREAD_ID, OMP_GET_THREADS_NUMBER, OMP_PARALLEL_PRIVATE_SHARED_DEFAULT, MATSGN_ComplexArray::setSize(), CORE_Integer::toString(), tUIndex, tUInteger, and tUSInt.

Referenced by fastFourierInverseTransform(), and fastFourierTransform3D().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastFourierTransform3D_GENERIC()

tBoolean MATSGN_FFT::fastFourierTransform3D_GENERIC ( const tUInteger Nx,
const tUInteger Ny,
const tUInteger Nz,
MATSGN_ComplexArray x,
const tBoolean isForward,
const tBoolean inverse,
const tFlag method 
) const
protectedvirtual

compute a complex fft for an array 3D

Parameters
Nxdimension in x (must be a power of 2)
Nydimension in y (must be a power of 2)
Nzdimension in z (must be a power of 2)
xvector of the array 3d x[i][j][k]=x[i+j*n1+k*n1*n2]
isForwardthe FFT direction
inverseif inverse is true compute the FFT inverse.
methodthe method to use
Returns
true if the computation succeeded

References fastFourierTransform(), MATSGN_ComplexArray::setSize(), tUIndex, tUInteger, and tUSInt.

Referenced by fastFourierInverseTransform(), and fastFourierTransform3D().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastFourierTransform3D_SL()

tBoolean MATSGN_FFT::fastFourierTransform3D_SL ( const tUInteger Nx,
const tUInteger Ny,
const tUInteger Nz,
MATSGN_ComplexArray x,
const tBoolean isForward,
const tBoolean inverse 
) const
protectedvirtual

compute a complex fft for an array 3D used in SL fortran code

Parameters
Nxdimension in x (must be a power of 2)
Nydimension in y (must be a power of 2)
Nzdimension in z (must be a power of 2)
xvector of the array 3d x[i][j][k]=x[i+j*n1+k*n1*n2]
isForwardthe FFT direction
inverseif inverse is true compute the FFT inverse.
Returns
true if the computation succeeded

References fastFourierTransform_SL(), OMP_GET_THREAD_ID, MATSGN_ComplexArray::setSize(), tabfft(), tUIndex, tUInteger, and tUSInt.

Referenced by fastFourierInverseTransform(), and fastFourierTransform3D().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastFourierTransform3DMatrix() [1/3]

tBoolean MATSGN_FFT::fastFourierTransform3DMatrix ( MATSGN_ComplexArray A,
const tUIndex fromAIndex,
MATSGN_ComplexArray Wrk,
const tUInteger lx,
const tUInteger ly,
const tUInteger lz,
const tUInteger lda,
const tBoolean isForward,
const tBoolean inverse,
const tFlag method 
) const
virtual

compute the 3D fft in a mesh translation of ZZFFT

References fastFourierTransform3D(), OMP_GET_THREAD_ID, OMP_GET_THREADS_NUMBER, OMP_PARALLEL_PRIVATE_SHARED_DEFAULT, MATSGN_ComplexArray::setSize(), tBoolean, tUIndex, tUInteger, and tUSInt.

Referenced by fastFourierInverseTransform(), fastFourierTransform3DMatrix(), and MATSGN_Test::testFFT3D().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastFourierTransform3DMatrix() [2/3]

virtual tBoolean MATSGN_FFT::fastFourierTransform3DMatrix ( MATSGN_ComplexArray A,
const tUInteger lx,
const tUInteger ly,
const tUInteger lz,
const tUInteger lda,
const tBoolean isForward,
const tBoolean inverse,
const tFlag method 
) const
inlinevirtual

compute the 3D fft in a mesh

References fastFourierTransform3DMatrix(), and MATSGN_ComplexArray::setSize().

Here is the call graph for this function:

◆ fastFourierTransform3DMatrix() [3/3]

virtual tBoolean MATSGN_FFT::fastFourierTransform3DMatrix ( MATSGN_ComplexArray A,
MATSGN_ComplexArray wrk,
const tUInteger lx,
const tUInteger ly,
const tUInteger lz,
const tUInteger lda,
const tBoolean isForward,
const tBoolean inverse,
const tFlag method 
) const
inlinevirtual

compute the 3D fft in a mesh

References fastFourierTransform3DMatrix(), fastFourierTransform_FFTW(), fastFourierTransform_FXT(), tBoolean, tChar, Transpose(), and tUIndex.

Here is the call graph for this function:

◆ fastFourierTransform_FFTW() [1/3]

void MATSGN_FFT::fastFourierTransform_FFTW ( const MATSGN_ComplexArray x,
MATSGN_ComplexArray y,
const tBoolean isForward,
const tBoolean isInverse 
)
static

compute the Fast Fourier Transform of a double complex vector vector using FFTW library

Parameters
xinput vector
youtput result
isForwardthe direction of the fft
isInversetreue to compute inverse FFT
  • if isInverse is false, it computes $ x_s= \displaystyle \sum_{t=0}^{t=n-1} x_t e^{\frac{\epsilon i.2\pi}{n} \dot ts} $ where :
    • $ \epsilon=-1$ if isForward is true
    • $ \epsilon=1 $ if isForward is false*
  • if isInverse is true, it computes $ x_s= \displaystyle \frac{1}{n} \sum_{t=0}^{t=n-1} x_t e^{\frac{\epsilon i.2\pi}{n} \dot ts} $ where :
    • $ \epsilon=-1$ if isForward is false
    • $ \epsilon=1 $ if isForward is true

References MATSGN_ComplexArray::getSize(), MATSGN_ComplexArray::setSize(), tUIndex, and tUSInt.

Referenced by fastFourierTransform(), fastFourierTransform3DMatrix(), and fastFourierTransform_FFTW().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastFourierTransform_FFTW() [2/3]

static void MATSGN_FFT::fastFourierTransform_FFTW ( MATSGN_ComplexArray x,
const tBoolean isForward,
const tBoolean isInverse 
)
inlinestatic

compute the Fast Fourier Transform of a double complex vector using FFTW library

Parameters
xinput/output vector
isForwardthe direction of the fft
isInversetrue to compute inverse FFT

References fastFourierTransform_FFTW(), fastFourierTransform_LR(), fastFourierTransform_SL(), fastFourierTransformND_FFTW(), MATSGN_ComplexArray::getSize(), Perform(), Rearrange(), Scale(), tabfft(), tBoolean, and tUIndex.

Here is the call graph for this function:

◆ fastFourierTransform_FFTW() [3/3]

void MATSGN_FFT::fastFourierTransform_FFTW ( const tUIndex length,
fftw_complex *  x,
const tBoolean isForward,
const tBoolean isInverse 
)
static

compute the Fast Fourier Transform of a double complex vector using FFTW library

Parameters
lengthlength of x
xinput/output vector
isForwardthe direction of the fft
isInversetrue to compute inverse FFT

References tUIndex.

◆ fastFourierTransform_FXT() [1/2]

void MATSGN_FFT::fastFourierTransform_FXT ( const MATSGN_ComplexArray input,
const tBoolean isForward,
const tBoolean isInverse,
complex< tDouble > *  output 
)
static

compute the Fast Fourier Transform of a double complex vector vector using FXT library

Parameters
inputinput vector
isForwardthe direction of the fft
isInversetrue to compute inverse fft
outputoutput result

WARNING output must be of size x.getSize()

References MATSGN_ComplexArray::getSize(), tComplex, and tUIndex.

Referenced by fastFourierTransform(), and fastFourierTransform3DMatrix().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastFourierTransform_FXT() [2/2]

void MATSGN_FFT::fastFourierTransform_FXT ( complex< tDouble > *  x,
const tUIndex n,
const tBoolean isForward,
const tBoolean isInverse 
)
static

compute the Fast Fourier Transform of a double complex vector vector using FXT library

Parameters
xinput/output vector
nsize of x
isForwardthe direction of the fft
isInversetrue to compute inverse fft
  • if isInverse is false, it computes $ x_s= \displaystyle \sum_{t=0}^{t=n-1} x_t e^{\frac{\epsilon i.2\pi}{n} \dot ts} $ where :
    • $ \epsilon=-1$ if isForward is true
    • $ \epsilon=1 $ if isForward is false
  • if isInverse is true, it computes $ x_s= \displaystyle \frac{1}{n} \sum_{t=0}^{t=n-1} x_t e^{\frac{\epsilon i.2\pi}{n} \dot ts} $ where :
    • $ \epsilon=-1$ if isForward is false
    • $ \epsilon=1 $ if isForward is true

References tDouble, and tUIndex.

◆ fastFourierTransform_LR() [1/2]

tBoolean MATSGN_FFT::fastFourierTransform_LR ( const MATSGN_ComplexArray input,
MATSGN_ComplexArray output,
const tBoolean isForward,
const tBoolean inverse 
)
static

compute the fast fourier transform of input using LIBROW algorithm

Parameters
inputinput vector
outputoutput result
isForwardthe direction of the fft
inversetreue to compute inverse FFT

the input data must be a power of 2

See also
http://www.librow.com/articles/article-10

References Perform(), Rearrange(), Scale(), and tBoolean.

Referenced by fastFourierTransform(), and fastFourierTransform_FFTW().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastFourierTransform_LR() [2/2]

tBoolean MATSGN_FFT::fastFourierTransform_LR ( MATSGN_ComplexArray input,
const tBoolean isForward,
const tBoolean inverse 
)
static

compute the fast fourier transform of input using LIBROW algorithm

Parameters
inputinput/output vector
isForwardthe direction of the fft
inversetreue to compute inverse FFT

the input data must be a power of 2

See also
http://www.librow.com/articles/article-10

References Perform(), Rearrange(), Scale(), and tBoolean.

Here is the call graph for this function:

◆ fastFourierTransform_SL()

void MATSGN_FFT::fastFourierTransform_SL ( const MATSGN_ComplexArray w,
MATSGN_ComplexArray x,
const tBoolean isForward,
const tBoolean inverse 
)
static

compute the fft transform of vector x translated from fft.h from Stephane Labbé EM62 code

Parameters
wcomplex array of size n/2
xcomplex array of size n
isForwardthe direction of the fft
inverseif inverse is true compute the FFT inverse.

References MATSGN_Complex::add(), MATSGN_ComplexArray::getSize(), MATSGN_Complex::product(), MATSGN_Complex::sub(), MATSGN_Complex::swap(), tReal, tUIndex, and tUSInt.

Referenced by fastFourierTransform(), fastFourierTransform3D_SL(), fastFourierTransform_FFTW(), and MATSGN_Test::testFFT_SL().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastFourierTransformND_FFTW()

void MATSGN_FFT::fastFourierTransformND_FFTW ( const CORE_IntArray dims,
MATSGN_ComplexArray x,
const tBoolean isForward,
const tBoolean isInverse 
)
static

compute the Fast Fourier Transform of a double complex vector with dimensions dims using FFTW library

Parameters
dimsthe dimension of the vector
xinput/output vector
isForwardthe direction of the fft
isInversetrue to compute inverse FFT

x is dispatched in dims.getSize() array.

The 2D fast fourier transform is as follow:

  • $ X(i,j)=\sum_{i_0=0}^{i_0=N_0-1} \sum_{i_1=0}^{i_1=N_1-1} w_{N_0}^{i.i_0} w_{N_1}^{j.i_1} $
  • $ w_n=exp^{\epsilon frac{2. sqrt(-1) . pi}/n} $
    • if isInverse is false, it computes $ x_s= \displaystyle \sum_{t=0}^{t=n-1} x_t e^{\frac{\epsilon i.2\pi}{n} \dot ts} $ where :
      • $ \epsilon=-1$ if isForward is true
      • $ \epsilon=1 $ if isForward is false
  • if isInverse is true, it computes $ x_s= \displaystyle \frac{1}{n} \sum_{t=0}^{t=n-1} x_t e^{\frac{\epsilon i.2\pi}{n} \dot ts} $ where :
    • $ \epsilon=-1 $ if isForward is false
    • $ \epsilon=1 $ if isForward is true

References CORE_Array< T >::getSize(), MATSGN_ComplexArray::getValues(), and tDouble.

Referenced by fastFourierTransform_FFTW().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getClassName() [1/2]

tString CORE_Object::getClassName ( ) const
inherited

return the class name of the object

Returns
the class name of the object

References tString.

Referenced by CORE_Object::getIdentityString(), EMM_Operator::getName(), and CORE_Object::isMemoryChecked().

Here is the caller graph for this function:

◆ getClassName() [2/2]

static tString CORE_Object::getClassName ( const tString identityString)
inlinestaticinherited

return the class name of the object

Parameters
identityStringthe identity string of the object
Returns
the class name

◆ getDoubleEpsilon()

static tDouble CORE_Object::getDoubleEpsilon ( )
inlinestaticinherited

get the epsilon value for tDouble type

Returns
the epsilon value for tDouble type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getDoubleInfinity()

static tDouble CORE_Object::getDoubleInfinity ( )
inlinestaticinherited

get the infinity value for tFloat type

Returns
the intinity value for tFloat type

◆ getEpsilon()

template<class T >
static T CORE_Object::getEpsilon ( )
inlinestaticinherited

get the epsilon value for T type

Returns
the epsilon value for T type

◆ getFFTMethodName()

tString MATSGN_FFT::getFFTMethodName ( const tFlag m)
static

get the method name

Parameters
mthe method in {FXT,SL,FFTW,LIB_ROW}
Returns
the name of the method

References FFTW, FXT, LIB_ROW, and SL.

Referenced by setMethod().

Here is the caller graph for this function:

◆ getFloatEpsilon()

static tFloat CORE_Object::getFloatEpsilon ( )
inlinestaticinherited

get the epsilon value for tFloat type

Returns
the epsilon value for tFloat type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getFloatInfinity()

static tFloat CORE_Object::getFloatInfinity ( )
inlinestaticinherited

get the infinity value for tFloat type

Returns
the intinity value for tFloat type

◆ getIdentityString()

tString CORE_Object::getIdentityString ( ) const
inlineinherited

◆ getInfinity()

template<class T >
static T CORE_Object::getInfinity ( )
inlinestaticinherited

get the infinity for T type

Returns
the infinity value for T type

◆ getLDoubleEpsilon()

static tLDouble CORE_Object::getLDoubleEpsilon ( )
inlinestaticinherited

get the epsilon value for tLDouble type

Returns
the epsilon value for tLDouble type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getLDoubleInfinity()

static tDouble CORE_Object::getLDoubleInfinity ( )
inlinestaticinherited

get the infinity value for tDouble type

Returns
the infinity value for tDouble type

◆ getMaxChar()

static tChar CORE_Object::getMaxChar ( )
inlinestaticinherited

get the max value for tChar type

Returns
the max value for tChar type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxDouble()

static tDouble CORE_Object::getMaxDouble ( )
inlinestaticinherited

get the max value for tDouble type

Returns
the max value for tDouble type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxFlag()

static tFlag CORE_Object::getMaxFlag ( )
inlinestaticinherited

get the max value for the tFlag type

Returns
the max value for the tFlag type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxFloat()

static tFloat CORE_Object::getMaxFloat ( )
inlinestaticinherited

get the max value for tFloat type

Returns
the max value for tFloat type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxIndex()

static tIndex CORE_Object::getMaxIndex ( )
inlinestaticinherited

get the max value for the array/vector indexing type

Returns
the max value for the array/vector indexing type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxInt()

static tInt CORE_Object::getMaxInt ( )
inlinestaticinherited

get the max value for tInt type

Returns
the max value for tInt type

Referenced by fastFourierTransform3D_FFTW(), and CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxInteger()

static tInteger CORE_Object::getMaxInteger ( )
inlinestaticinherited

get the max value for the integer type

Returns
the max value for the integer type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxLDouble()

static tLDouble CORE_Object::getMaxLDouble ( )
inlinestaticinherited

get the max value for tLDouble type

Returns
the max value for tLDouble type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxLInt()

static tLInt CORE_Object::getMaxLInt ( )
inlinestaticinherited

get the max value for tLInt type

Returns
the max value for tLInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxLLInt()

static tLLInt CORE_Object::getMaxLLInt ( )
inlinestaticinherited

get the max value for tULInt type

Returns
the max value for tULInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxReal()

static tReal CORE_Object::getMaxReal ( )
inlinestaticinherited

get the max value for the real type

Returns
he max value for the real type

Referenced by EMM_MatterField::adimensionize(), and CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxSInt()

static tSInt CORE_Object::getMaxSInt ( )
inlinestaticinherited

get the max value for tSInt type

Returns
the max value for tSInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxUChar()

static tUChar CORE_Object::getMaxUChar ( )
inlinestaticinherited

get the max value for tUChar type

Returns
the max value for tUChar type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxUIndex()

static tUIndex CORE_Object::getMaxUIndex ( )
inlinestaticinherited

get the max value for difference the array/vector indexing type

Returns
the max value for difference the array/vector indexing type

Referenced by CORE_Vector< T >::addAfterIndices(), CORE_Vector< T >::search(), CORE_Test::testType(), CORE_Integer::toHexString(), and CORE_Integer::toString().

Here is the caller graph for this function:

◆ getMaxUInt()

static tUInt CORE_Object::getMaxUInt ( )
inlinestaticinherited

get the max value for tUInt type

Returns
the max value for tUInt type

Referenced by EMM_Array< tCellFlag >::loadFromFile(), EMM_RealField::loadFromFile(), and CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxUInteger()

static tUInteger CORE_Object::getMaxUInteger ( )
inlinestaticinherited

get the max value for the unsigned integer type

Returns
the max value for the unsigned integer type

Referenced by MATH_Pn::computeExtrenums(), EMM_MultiScaleGrid::computeLevelsNumber(), EMM_Input::restoreBackup(), MATH_P0::solve(), and CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxULInt()

static tULInt CORE_Object::getMaxULInt ( )
inlinestaticinherited

get the max value for tULInt type

Returns
the max value for tULInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxULLInt()

static tULLInt CORE_Object::getMaxULLInt ( )
inlinestaticinherited

get the max value for tULLInt type

Returns
the max value for tULLInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxUSInt()

static tUSInt CORE_Object::getMaxUSInt ( )
inlinestaticinherited

get the max value for tUSInt type

Returns
the max value for tUSInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinChar()

static tChar CORE_Object::getMinChar ( )
inlinestaticinherited

get the min value for tChar type

Returns
the min value for tChar type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinDouble()

static tDouble CORE_Object::getMinDouble ( )
inlinestaticinherited

get the min value for tDouble type

Returns
the min value for tDouble type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinFlag()

static tFlag CORE_Object::getMinFlag ( )
inlinestaticinherited

get the min value for the tFlag type

Returns
the min value for the tFlag type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinFloat()

static tFloat CORE_Object::getMinFloat ( )
inlinestaticinherited

get the min value for tFloat type

Returns
the min value for tFloat type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinIndex()

static tIndex CORE_Object::getMinIndex ( )
inlinestaticinherited

get the min value for the array/vector indexing type

Returns
the min value for the array/vector indexing type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinInt()

static tInt CORE_Object::getMinInt ( )
inlinestaticinherited

get the min value for tInt type

Returns
the min value for tInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinInteger()

static tInteger CORE_Object::getMinInteger ( )
inlinestaticinherited

get the min value for the integer type

Returns
the minin value for the integer type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinLDouble()

static tLDouble CORE_Object::getMinLDouble ( )
inlinestaticinherited

get the min value for tLDouble type

Returns
the min value for tLDouble type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinLInt()

static tLInt CORE_Object::getMinLInt ( )
inlinestaticinherited

get the min value for tLInt type

Returns
the min value for tLInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinLLInt()

static tLLInt CORE_Object::getMinLLInt ( )
inlinestaticinherited

get the min value for tLLInt type

Returns
the min value for tLLInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinReal()

static tReal CORE_Object::getMinReal ( )
inlinestaticinherited

get the min value for the real type

Returns
the min value for the real type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinSInt()

static tSInt CORE_Object::getMinSInt ( )
inlinestaticinherited

get the min value for tSInt type

Returns
the min value for tSInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinUChar()

static tUChar CORE_Object::getMinUChar ( )
inlinestaticinherited

get the min value for tUChar type

Returns
the min value for tUChar type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinUIndex()

static tUIndex CORE_Object::getMinUIndex ( )
inlinestaticinherited

get the min value for difference the array/vector indexing type

Returns
the min value for difference the array/vector indexing type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinUInt()

static tUInt CORE_Object::getMinUInt ( )
inlinestaticinherited

get the min value for tUInt type

Returns
the min value for tUInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinUInteger()

static tUInteger CORE_Object::getMinUInteger ( )
inlinestaticinherited

get the min value for the unsigned integer type

Returns
the min value for the unsigned integer type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinULInt()

static tULInt CORE_Object::getMinULInt ( )
inlinestaticinherited

get the min value for tULInt type

Returns
the min value for tULInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinULLInt()

static tULLInt CORE_Object::getMinULLInt ( )
inlinestaticinherited

get the min value for tULLInt type

Returns
the min value for tULLInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinUSInt()

static tUSInt CORE_Object::getMinUSInt ( )
inlinestaticinherited

get the min value for tUSInt type

Returns
the min value for tUSInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getOut()

static SP::CORE_Out CORE_Object::getOut ( )
inlinestaticinherited

get the output

Returns
the shared pointer to the output stream

References CORE_Object::OUT.

◆ getPointerAddress()

tString CORE_Object::getPointerAddress ( ) const
inlineinherited

return the identity string of the object

Returns
the identity string of the object

References CORE_Object::pointer2String().

Here is the call graph for this function:

◆ getRealEpsilon()

static tReal CORE_Object::getRealEpsilon ( )
inlinestaticinherited

get the eps which is the difference between 1 and the least value greater than 1 that is representable.

Returns
the eps which is the difference between 1 and the least value greater than 1 that is representable.

Referenced by MATH_P4::solveP4De(), and CORE_Test::testType().

Here is the caller graph for this function:

◆ getRealInfinity()

static tReal CORE_Object::getRealInfinity ( )
inlinestaticinherited

◆ getSharedPointer() [1/2]

void CORE_Object::getSharedPointer ( SP::CORE_Object &  p)
inlineinherited

◆ getSharedPointer() [2/2]

void CORE_Object::getSharedPointer ( SPC::CORE_Object &  p) const
inlineinherited

get the shared pointer of this class into p

Parameters
p: shared pointer of the class This

◆ getThread()

static CORE_Thread& CORE_Object::getThread ( )
inlinestaticinherited

get the profilier

Returns
the profiler

Referenced by MATH_MaskVector::add(), MATH_Vector::add(), EMM_DisplacementFEMOperator::addBoundaryElasticStress(), EMM_DisplacementFEMOperator::buildDataOnNeumannBoundaryFaces(), EMM_DisplacementFVMOperator::computeCineticEnergy(), EMM_DisplacementFVMOperator::computeElasticStress(), EMM_DisplacementFEMOperator::computeElasticStress(), EMM_DisplacementFVMOperator::computeElasticTensor(), EMM_DisplacementFEMOperator::computeElasticTensor(), EMM_StaticMagneticTensorOperator::computeEnergy(), EMM_CubicAnisotropyOperator::computeEnergy(), EMM_MagnetostrictionOperator::computeEnergy(), EMM_DisplacementOperator::computeEnergy(), EMM_AnisotropyOperator::computeEnergyWithMagneticExcitation(), EMM_DisplacementFVMOperator::computeEquilibriumMatrixDiagonalConditioner(), EMM_DisplacementFEMOperator::computeEquilibriumMatrixDiagonalConditioner(), EMM_FullExchangeOperator::computeMagneticExcitationField(), EMM_StaticMagnetostrictionOperator::computeMagneticExcitationField(), EMM_LinearAnisotropyOperator::computeMagneticExcitationField(), EMM_StaticMagneticTensorOperator::computeMagneticExcitationField(), EMM_CubicAnisotropyOperator::computeMagneticExcitationField(), EMM_MinimalExchangeOperator::computeMagneticExcitationField(), EMM_AnisotropyOperator::computeMagneticExcitationField(), EMM_MagnetostrictionOperator::computeMagneticExcitationField(), EMM_CubicAnisotropyOperator::computeMagneticExcitationFieldGradient(), EMM_AnisotropyOperator::computeMagneticExcitationFieldGradient(), EMM_DisplacementFVMOperator::computeMagneticStress(), EMM_DisplacementFEMOperator::computeMagneticStress(), EMM_OptimalTimeStep::computeOptimalTimeStep(), EMM_DisplacementFEMOperator::computeStressConstraintEnergy(), EMM_FullExchangeOperator::discretize(), EMM_MinimalExchangeOperator::discretize(), EMM_CondensedMassMatrix::discretize(), EMM_LinearAnisotropyOperator::discretize(), EMM_AnisotropyOperator::discretize(), EMM_DemagnetizedOperator::discretize(), EMMG_SLDemagnetizedOperator::discretize(), EMM_LandauLifschitzSystem::discretize(), MATH_Vector::divide(), MATH_MaskVector::dot(), MATH_Vector::dot(), EMM_4SymmetricTensors::doubleDot(), EMM_4Tensors::doubleDotCrossDoubleDotScalar(), EMM_4Tensors::doubleDotCrossProduct(), EMM_4Tensors::doubleDotCrossSquaredScalar(), EMM_4Tensors::doubleDotProduct(), MATH_Vector::init(), MATH_MaskVector::init(), EMM_LandauLifschitzODE_RK::integrateMagnetizationFieldAtTime(), EMM_DisplacementFVM_Interpolator::interpolateUAtVertices(), EMMG_SLDemagnetizedOperator::localAssembly(), EMM_DisplacementOperator::nullProjectionOnDirichletBoundary(), EMM_DisplacementOperator::periodicProjection(), EMM_2PackedSymmetricTensors::product(), EMM_CanonicalMassMatrix::product(), MATH_FullMatrix::product(), EMM_CondensedMassMatrix::product(), EMM_BlockMassMatrix::product(), MATH_MorseMatrix::product(), EMMG_SLDemagnetizedOperator::product(), EMM_DisplacementOperator::projectionOnDirichletBoundary(), EMM_LandauLifschitzSystem::resetOperatorsToInitialState(), EMM_DisplacementFVMOperator::setBoundaryFaceTypes(), FFTW_MultiDFTs::setFFT(), FFTW_MultiLevelsDFT::setFFT(), FFTW_MultiLevelsDFT::setLevels(), FFTW_MultiDFTs::setPlan(), FFTW_MultiLevelsDFT::setPlan(), EMM_CondensedMassMatrix::solve(), EMM_LandauLifschitzODE::solveODE(), EMM_4SymmetricTensors::squaredDoubleDot(), EMM_4Tensors::squaredDoubleDotCrossScalar(), EMM_4Tensors::squaredDoubleDotScalar(), EMM_CanonicalMassMatrix::symmetricDot(), EMM_CondensedMassMatrix::symmetricDot(), EMM_BlockMassMatrix::symmetricDot(), FFTW_Test::test(), MATH_SolverTest::test(), EMM_ODETest::testODE(), and EMM_Grid3D::updateLimitConditionOnPoints().

Here is the caller graph for this function:

◆ getTypeName()

template<class T >
static tString CORE_Object::getTypeName ( )
inlinestaticinherited

get type name

Returns
the type name of the class

References tString.

◆ is32Architecture()

static tBoolean CORE_Object::is32Architecture ( )
inlinestaticinherited

return true if the machine is a 32 bits machine

Returns
true is the computing is done in a 32 bits machine

References CORE_Object::pointer2String(), CORE_Object::printObjectsInMemory(), and tString.

Referenced by CORE_Test::testType().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ is64Architecture()

static tBoolean CORE_Object::is64Architecture ( )
inlinestaticinherited

return true if the machine is a 64 bits machine

Returns
true is the computing is done in a 64 bits machine

Referenced by EMM_VTK::getVTKType(), and CORE_Test::testType().

Here is the caller graph for this function:

◆ isInstanceOf() [1/2]

template<class T >
tBoolean CORE_Object::isInstanceOf ( ) const
inlineinherited

test if the clas T is an instance of this class

Returns
true if the object is an instance of T

References null.

Referenced by MATH_ToeplitzTest::toeplitzTest().

Here is the caller graph for this function:

◆ isInstanceOf() [2/2]

tBoolean CORE_Object::isInstanceOf ( const tString name) const
inlineinherited

test if the object is an instance of className

Parameters
namename of the class
Returns
true if the object is an instance of class Name

References CORE_Object::getIdentityString().

Here is the call graph for this function:

◆ isMemoryChecked()

static const tBoolean& CORE_Object::isMemoryChecked ( )
inlinestaticinherited

get if the memory checking is used

Returns
true: if the memory checking is used.

References CORE_Object::getClassName(), CORE_Object::mIsMemoryTesting, and tString.

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ New()

static SP::MATSGN_FFT MATSGN_FFT::New ( )
inlinestatic

create a FFT class

References MATSGN_FFT().

Referenced by main(), EMMG_SLDemagnetizedOperator::NewFFTInstance(), and MATSGN_Test::testFFTW3D().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ out()

static CORE_Out& CORE_Object::out ( )
inlinestaticinherited

get the output

Returns
the output stream

Referenced by EMM_Matter::adimensionize(), EMM_DisplacementFVMOperator::backup(), EMM_DisplacementOperator::backup(), MATH_ElementaryMultiLevelsToeplitzMatrix::buildSpectralVectorProjector(), EMM_Test::caseTest(), EMM_Test::caseTests(), EMM_MatterField::computeAnisotropyDirectionsField(), EMM_OptimalTimeStep::computeOptimalTimeStep(), MATH_MultiLevelsToeplitzMatrix::copy(), CORE_Exception::CORE_Exception(), EMM_MatterField::createAnisotropyOperator(), CORE_Run::createIO(), EMM_ElementaryTest::defaultBackupTest(), EMM_ElementaryTest::defaultTest(), MATH_MultiLevelsFFTToeplitzMatrix::diagonalize(), EMM_DisplacementFVMOperator::discretize(), EMM_MagnetostrictionOperator::discretize(), EMM_DisplacementFEMOperator::discretize(), EMM_4SymmetricTensors::doubleDot(), EMM_4Tensors::doubleDotCrossDoubleDotScalar(), EMM_TensorsTest::doubleDotCrossDoubleDotScalarTests(), EMM_4Tensors::doubleDotCrossProduct(), EMM_TensorsTest::doubleDotCrossProductTests(), EMM_4Tensors::doubleDotCrossSquaredScalar(), EMM_TensorsTest::doubleDotCrossSquaredScalarTests(), EMM_4Tensors::doubleDotProduct(), EMM_TensorsTest::doubleDotProductTests(), EMM_DisplacementWaveTest::elasticWaveTest(), EMM_Test::elementaryTests(), FFTW_Test::fftwTutorial(), MATH_IntegrationTest::gaussLegendreTest(), EMM_MagnetostrictionTest::HComputingTest(), EMM_DemagnetizedPeriodicalTest::HTest(), EMMH_HysteresisTest::hysteresisDefaultCycleTest(), EMM_TensorsTest::initializationTests(), EMM_MultiScaleGrid::initialize(), EMM_MultiScaleSDGrid::initialize(), EMM_MatterField::loadFromANIFile(), EMM_AnisotropyDirectionsField::loadFromFile(), EMM_Matter::loadFromFile(), EMM_Grid3D::loadFromGEOFile(), EMM_MatterField::loadFromLOCFile(), EMM_Array< tCellFlag >::loadFromStream(), EMM_Matter::loadFromStream(), EMM_Matter::loadMattersFromFile(), EMM_Run::loadSystemFromOptions(), EMM_ElementaryTest::magnetostrictionBackupTest(), CORE_Run::make(), EMMH_Run::makeHysteresis(), EMM_Run::makeRun(), CORE_Run::makeType(), EMM_ElementaryTest::optionsTest(), MATH_PolynomialTest::P4Tests(), EMM_Test::primaryTests(), EMM_LandauLifschitzSystem::printLog(), CORE_Run::printOptions(), EMM_2PackedSymmetricTensors::product(), EMMG_SLDemagnetizedOperator::projectionOnSpectralSpace(), CORE_Run::readOptionsFromCommandLine(), CORE_Test::readVectorTest(), EMM_DemagnetizedPeriodicalTest::relaxationTest(), EMM_DisplacementFVMOperator::restore(), EMM_DisplacementOperator::restore(), EMM_Input::restoreBackup(), EMMH_Hysteresis::run(), EMM_Output::save(), EMM_AnisotropyDirectionsField::saveToFile(), EMM_MatterField::saveToFile(), EMM_Grid3D::saveToGEOFile(), CORE_IOTest::searchTest(), EMMH_Hysteresis::setInitialMagnetizationField(), MATH_MultiLevelsToeplitzMatrix::setLevels(), EMM_4SymmetricTensors::squaredDoubleDot(), EMM_4Tensors::squaredDoubleDotCrossScalar(), EMM_TensorsTest::squaredDoubleDotCrossScalarTests(), EMM_4Tensors::squaredDoubleDotScalar(), EMM_TensorsTest::squaredDoubleDotScalarTests(), EMM_TensorsTest::squaredDoubleDotTests(), EMM_MatterTest::testAdimensionize(), EMM_MatterTest::testANIFile(), CORE_Test::testComplex(), CORE_Test::testDateWeek(), FFTW_Test::testDFT(), EMM_MatterTest::testIO(), EMM_ODETest::testODE(), CORE_Test::testOut(), CORE_Test::testReal(), EMM_FieldTest::testRealArray(), EMM_Grid3DTest::testSegment(), EMM_Grid3DTest::testThinSheet(), CORE_Test::testTime(), CORE_Test::testType(), MATH_FullMatrix::toString(), EMM_DemagnetizedPeriodicalTest::xyPeriodicalCubeSDGTest(), and EMM_DemagnetizedPeriodicalTest::xyPeriodicalSheetSDGTest().

Here is the caller graph for this function:

◆ Perform()

tBoolean MATSGN_FFT::Perform ( MATSGN_ComplexArray data,
const tBoolean isForward,
const tBoolean inverse 
)
staticprivate

References MATSGN_Complex::add(), MATSGN_ComplexArray::getSize(), MATSGN_Complex::getValue(), MATSGN_Complex::product(), MATSGN_Complex::sub(), tDouble, and tUIndex.

Referenced by fastFourierTransform_FFTW(), and fastFourierTransform_LR().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pointer2String()

tString CORE_Object::pointer2String ( const void *  obj)
staticinherited

return the string representation of a pointer

Parameters
obj: oject to get the string pointer
Returns
the string pointer of the object

References tString.

Referenced by CORE_Object::CORE_Object(), CORE_Object::getIdentityString(), CORE_Object::getPointerAddress(), CORE_Object::is32Architecture(), and CORE_Object::~CORE_Object().

Here is the caller graph for this function:

◆ printObjectsInMemory() [1/2]

void CORE_Object::printObjectsInMemory ( ostream &  f)
staticinherited

print object in memory

Parameters
f: output to print the objects in memory

References CORE_Object::getIdentityString(), CORE_Object::getSharedPointer(), CORE_Object::mIsMemoryTesting, CORE_Object::mObjects, and tInteger.

Here is the call graph for this function:

◆ printObjectsInMemory() [2/2]

static void CORE_Object::printObjectsInMemory ( )
inlinestaticinherited

print object in memory in the standart output

Referenced by CORE_Object::is32Architecture(), and main().

Here is the caller graph for this function:

◆ Rearrange() [1/2]

tBoolean MATSGN_FFT::Rearrange ( const MATSGN_ComplexArray input,
MATSGN_ComplexArray output 
)
staticprivate

Referenced by fastFourierTransform_FFTW(), and fastFourierTransform_LR().

Here is the caller graph for this function:

◆ Rearrange() [2/2]

tBoolean MATSGN_FFT::Rearrange ( MATSGN_ComplexArray inoutput)
staticprivate

References MATSGN_ComplexArray::getSize(), MATSGN_ComplexArray::swap(), and tUIndex.

Here is the call graph for this function:

◆ resetOut()

static void CORE_Object::resetOut ( )
inlinestaticinherited

reset the output stream

Referenced by run().

Here is the caller graph for this function:

◆ resetThread()

static void CORE_Object::resetThread ( )
inlinestaticinherited

reset the output stream

Referenced by run().

Here is the caller graph for this function:

◆ Scale()

tBoolean MATSGN_FFT::Scale ( MATSGN_ComplexArray data)
staticprivate

References MATSGN_ComplexArray::getSize(), tDouble, and tUIndex.

Referenced by fastFourierTransform_FFTW(), and fastFourierTransform_LR().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setIsMemoryChecked()

static void CORE_Object::setIsMemoryChecked ( const tBoolean v)
inlinestaticinherited

set if the memory checking is used

Parameters
v: true to check memory

Referenced by main().

Here is the caller graph for this function:

◆ setMethod()

void MATSGN_FFT::setMethod ( const tFlag method)
inline

set the FFT method

Parameters
methodthe method in {FXT,SL,FFTW,LIB_ROW}

References getFFTMethodName(), slowFourierTransform(), tBoolean, tFlag, and tString.

Here is the call graph for this function:

◆ setOut()

static void CORE_Object::setOut ( SP::CORE_Out  out)
inlinestaticinherited

set the output stream

Parameters
out: the shared pointer to the new output stream

References null.

◆ setThis()

void CORE_Object::setThis ( SP::CORE_Object  p)
inlineprotectedinherited

set this weak shared pointer called toDoAfterThis setting method

Parameters
p: shared pointer of the class This

References CORE_Object::toDoAfterThisSetting().

Here is the call graph for this function:

◆ setThread()

static void CORE_Object::setThread ( SP::CORE_Thread  thread)
inlinestaticinherited

set the thread

Parameters
threadthe shared pointer to the thread

References null.

Referenced by EMM_Run::EMM_Run(), EMM_TensorsRun::EMM_TensorsRun(), and MATH_SolverRun::MATH_SolverRun().

Here is the caller graph for this function:

◆ slowFourierTransform() [1/2]

void MATSGN_FFT::slowFourierTransform ( const MATSGN_ComplexArray input,
MATSGN_ComplexArray output,
const tBoolean isForward 
) const

compute the fourier transform basicly (slow fourier transform)

Parameters
inputinput complex
outputoutput complex
isForwarddirection of the fft

References MATSGN_Complex::add(), MATSGN_ComplexArray::getSize(), MATSGN_Complex::product(), MATSGN_ComplexArray::setSize(), tDouble, tUIndex, and tUSInt.

Referenced by setMethod(), and slowFourierTransform().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ slowFourierTransform() [2/2]

void MATSGN_FFT::slowFourierTransform ( const MATSGN_ComplexArray input,
MATSGN_ComplexArray output 
) const
inline

compute the fourier transform basicly (slow fourier transform)

Parameters
inputinput complex
outputoutput complex

References slowFourierTransform().

Here is the call graph for this function:

◆ SP_OBJECT()

MATSGN_FFT::SP_OBJECT ( MATSGN_FFT  )
private

◆ tabfft()

void MATSGN_FFT::tabfft ( const tBoolean isForward,
MATSGN_ComplexArray w,
const tUIndex nx 
)
static

tabfft

initialise the w array to size nx/2 with value w[k]=e^(i(2*k*pi/nx))

References MATSGN_ComplexArray::setSize(), tDouble, tReal, and tUIndex.

Referenced by fastFourierTransform(), fastFourierTransform3D_SL(), and fastFourierTransform_FFTW().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ toDoAfterThisSetting()

virtual void CORE_Object::toDoAfterThisSetting ( )
inlineprotectedvirtualinherited

method called after setThis() method this method can oly be called once.

Reimplemented in EMM_DisplacementOperator, EMM_DisplacementFVMOperator, EMM_GaussLegendreRelaxation, EMM_GradGaussLegendreRelaxation, and EMM_Object.

Referenced by CORE_Object::setThis().

Here is the caller graph for this function:

◆ toString()

virtual tString CORE_Object::toString ( ) const
inlinevirtualinherited

return the string representation of the object node

Returns
the string representation of the object node

Reimplemented in EMM_DisplacementOperator, EMM_LandauLifschitzSystem, CORE_Array< T >, CORE_Array< tReal >, CORE_Array< tUInteger >, CORE_Array< tString >, CORE_Array< tLimitCondition >, CORE_Array< tUIndex >, CORE_Array< tUChar >, CORE_Array< tCellFlag >, EMM_Grid3D, CORE_Time, CORE_Vector< T >, EMM_Matter, CORE_Out, EMM_DisplacementFEMOperator, EMM_RealField, EMM_DisplacementFVMOperator, CORE_MorseArray< T >, CORE_MorseArray< tReal >, CORE_MorseArray< tUIndex >, CORE_MorseArray< tUChar >, EMM_MagnetostrictionOperator, MATH_MultiLevelsToeplitzMatrix, FFTW_ComplexArray, MATSGN_ComplexArray, EMM_MatterField, CORE_Color, FFTW_Complex, EMM_MultiScaleGrid, MATSGN_Complex, EMM_DisplacementFVM_VTEGROperator, EMM_CondensedMassMatrix, EMM_LandauLifschitzFunction, EMM_Tensors, EMM_DisplacementFVM_SSGROperator, EMMG_SLDemagnetizedOperator, EMM_BlockMassMatrix, CORE_Array2D< T >, EMM_DisplacementFVM_STEGROperator, EMMH_HysteresisFile, EMM_IterativeTimeStep, CORE_SharedPointersVMap< Key, Value >, CORE_SharedPointersVMap< tString, const CORE_Object >, CORE_SharedPointersVMap< tString, CORE_Object >, EMM_AnisotropyDirectionsField, EMM_DemagnetizedOperator, CORE_SharedPointersListVMap< Key, Value >, CORE_String, EMM_OptimalTimeStep, MATH_MaskArrayVector, CORE_SharedPointersKVMap< Key, Value >, MATH_ArrayVector, EMM_Stepper, EMM_CanonicalMassMatrix, MATH_Pn, MATH_FullMatrix, EMMG_SLPeriodicMultiScale, EMM_HyperElasticMatter, MATH_Matrix, CORE_Array3D< T >, EMM_CubicElasticMatter, CORE_Complex, CORE_Integer, CORE_Real, and EMM_MagnetostrictiveMatter.

References CORE_Object::getIdentityString().

Referenced by CORE_Out::genericPrint(), EMM_VelocitySolverTest::massMatrixTrivialSolverTest(), MATH_ConjugateGradient::solve(), CORE_SharedPointersKVMap< Key, Value >::toString(), CORE_SharedPointersListVMap< Key, Value >::toString(), CORE_SharedPointersVMap< tString, CORE_Object >::toString(), EMM_MagnetostrictionOperator::toString(), EMM_Matter::toString(), and EMM_DisplacementOperator::toString().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Transpose()

void MATSGN_FFT::Transpose ( const tChar storage,
fftw_complex *  A,
const tUIndex nRows,
const tUIndex nCols 
)
static

transpose a complex matric sotored in Array or Column of size nRows x nCols

Parameters
storage: the type of storage (by row 'R' like C++ or by column 'C' like Fortran)
Athe matrix
nRowsthe number of rows of the matrix
nColsthe number of column of the matrix A is change to be considered as a transposed matrix in nCols x nRows

Referenced by fastFourierTransform3DMatrix(), and MATSGN_Test::testComplexArray().

Here is the caller graph for this function:

Member Data Documentation

◆ BACKWARD

const tBoolean MATSGN_FFT::BACKWARD =false
static

◆ DIRECT

const tBoolean MATSGN_FFT::DIRECT =false
static

◆ FFTW

const tFlag MATSGN_FFT::FFTW =2
static

◆ FORWARD

const tBoolean MATSGN_FFT::FORWARD =true
static

◆ FXT

const tFlag MATSGN_FFT::FXT =0
static

◆ INVERSE

const tBoolean MATSGN_FFT::INVERSE =true
static

◆ LIB_ROW

const tFlag MATSGN_FFT::LIB_ROW =5
static

◆ mMethod

tFlag MATSGN_FFT::mMethod
private

Referenced by MATSGN_FFT().

◆ SL

const tFlag MATSGN_FFT::SL =10
static

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