53 fftw_plan_r2r_1d(
m_N, &
m_phys[0], &
m_coef[0], FFTW_R2HC, FFTW_ESTIMATE);
55 fftw_plan_r2r_1d(
m_N, &
m_coef[0], &
m_phys[0], FFTW_HC2R, FFTW_ESTIMATE);
66 for (
int i = 2; i <
m_N; i++)
109 m_wsp[1] = coef[halfN];
113 for (
int i = 0; i < (halfN - 1); i++)
115 m_wsp[(
m_N - 1) - 2 * i] = coef[halfN + 1 + i];
130 m_wsp[halfN] = coef[1];
134 for (
int i = 0; i < (halfN - 1); i++)
136 m_wsp[halfN + 1 + i] = coef[(
m_N - 1) - 2 * i];
virtual void v_FFTBwdTrans(Array< OneD, NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
Array< OneD, NekDouble > m_coef
Array< OneD, NekDouble > m_phys
static NektarFFTSharedPtr create(int N)
Creates an instance of this class.
static std::string className
Name of class.
void Reshuffle_Nek2FFTW(Array< OneD, NekDouble > &coef)
virtual void v_FFTFwdTrans(Array< OneD, NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
void Reshuffle_FFTW2Nek(Array< OneD, NekDouble > &coef)
fftw_plan m_plan_backward
Array< OneD, NekDouble > m_wsp
Array< OneD, NekDouble > m_FFTW_w
Array< OneD, NekDouble > m_FFTW_w_inv
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
NektarFFTFactory & GetNektarFFTFactory()
The above copyright notice and this permission notice shall be included.
void Vmul(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Multiply vector z = x*y.
void Smul(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Scalar multiply y = alpha*x.
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)