51 fftw_plan_r2r_1d(
m_N, &
m_phys[0], &
m_coef[0], FFTW_R2HC, FFTW_ESTIMATE);
53 fftw_plan_r2r_1d(
m_N, &
m_coef[0], &
m_phys[0], FFTW_HC2R, FFTW_ESTIMATE);
64 for (
int i = 2; i <
m_N; i++)
107 m_wsp[1] = coef[halfN];
111 for (
int i = 0; i < (halfN - 1); i++)
113 m_wsp[(
m_N - 1) - 2 * i] = coef[halfN + 1 + i];
128 m_wsp[halfN] = coef[1];
132 for (
int i = 0; i < (halfN - 1); i++)
134 m_wsp[halfN + 1 + i] = coef[(
m_N - 1) - 2 * i];
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)
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()
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)