8template <
typename FPTYPE>
51 void clear()
override;
79 void fftxyfor(std::complex<FPTYPE>* in,
80 std::complex<FPTYPE>* out)
const override;
83 void fftxybac(std::complex<FPTYPE>* in,
84 std::complex<FPTYPE>* out)
const override;
87 void fftzfor(std::complex<FPTYPE>* in,
88 std::complex<FPTYPE>* out)
const override;
91 void fftzbac(std::complex<FPTYPE>* in,
92 std::complex<FPTYPE>* out)
const override;
96 std::complex<FPTYPE>* out)
const override;
99 void fftxyc2r(std::complex<FPTYPE>* in,
100 FPTYPE* out)
const override;
virtual int ny_in
Definition fft_base.h:20
virtual int int int int int ns_in
Definition fft_base.h:24
virtual int int int int int int int nproc_in
Definition fft_base.h:26
virtual int int nz_in
Definition fft_base.h:21
virtual int int int int rixy_in
Definition fft_base.h:23
virtual int int int int int int int bool bool xprime_in
Definition fft_base.h:28
virtual int int int int int int int bool gamma_only_in
Definition fft_base.h:27
virtual int int int int int int nplane_in
Definition fft_base.h:25
virtual int int int lixy_in
Definition fft_base.h:22
__attribute__((weak)) FPTYPE *get_rspace_data() const override
Get the real space data the CPU FFT.
std::complex< double > * z_auxr
Definition fft_cpu.h:134
fftwf_plan planfxbac1
Definition fft_cpu.h:121
void initfft(int nx_in, int ny_in, int nz_in, int lixy_in, int rixy_in, int ns_in, int nplane_in, int nproc_in, bool gamma_only_in, bool xprime_in=true) override
Initialize the fft parameters.
Definition fft_cpu.cpp:7
fftw_plan planyr2c
Definition fft_cpu.h:115
void fftxybac(std::complex< double > *in, std::complex< double > *out) const
Definition fft_cpu.cpp:376
bool gamma_only
Definition fft_cpu.h:146
__attribute__((weak)) void cleanFFT() override
Initialize the fft parameters as virtual function.
void fftxyr2c(double *in, std::complex< double > *out) const
Definition fft_cpu.cpp:418
fftwf_plan planfyc2r
Definition fft_cpu.h:129
void fftzfor(std::complex< double > *in, std::complex< double > *out) const
Definition fft_cpu.cpp:406
fftwf_plan planfzfor
Definition fft_cpu.h:118
void fftxyfor(std::complex< double > *in, std::complex< double > *out) const
Definition fft_cpu.cpp:345
fftw_plan planxbac2
Definition fft_cpu.h:110
fftw_plan planxr2c
Definition fft_cpu.h:113
void fftxyc2r(std::complex< double > *in, double *out) const
Definition fft_cpu.cpp:442
fftw_plan planxfor1
Definition fft_cpu.h:107
int nproc
Definition fft_cpu.h:144
void clearfft(fftw_plan &plan)
fftwf_plan planfybac
Definition fft_cpu.h:125
fftw_plan planyc2r
Definition fft_cpu.h:116
void setupFFT()
Setup the fft plan and data as pure virtual function.
Definition fft_cpu.cpp:43
std::complex< float > * c_auxg
Definition fft_cpu.h:131
bool xprime
xprime: whether xprime is used,when do recip2real, x-fft will be done last and when doing real2recip,...
Definition fft_cpu.h:162
float * s_rspace
Definition fft_cpu.h:136
fftwf_plan planfxc2r
Definition fft_cpu.h:127
int fft_mode
fft_mode: fftw mode 0: estimate, 1: measure, 2: patient, 3: exhaustive
Definition fft_cpu.h:166
int fftnx
Definition fft_cpu.h:138
fftw_plan planzfor
Definition fft_cpu.h:105
fftwf_plan planfxfor1
Definition fft_cpu.h:120
__attribute__((weak)) std __attribute__((weak)) std __attribute__((weak)) void fftxyfor(std __attribute__((weak)) void fftxybac(std __attribute__((weak)) void fftzfor(std __attribute__((weak)) void fftzbac(std __attribute__((weak)) void fftxyr2c(FPTYPE *in
Forward FFT in x-y direction.
int lixy
lixy: the left edge of the pw ball in the y direction
Definition fft_cpu.h:151
fftw_plan planybac
Definition fft_cpu.h:112
__attribute__((weak)) void clear() override
Initialize the fft parameters as virtual function.
void cleanFFT()
Clean the fft plan as pure virtual function.
Definition fft_cpu.cpp:311
int nxy
Definition fft_cpu.h:141
__attribute__((weak)) void setupFFT() override
Initialize the fft parameters as virtual function.
void clear()
Clear the fft data as pure virtual function.
Definition fft_cpu.cpp:328
fftwf_plan planfxfor2
Definition fft_cpu.h:122
void fftzbac(std::complex< double > *in, std::complex< double > *out) const
Definition fft_cpu.cpp:412
fftwf_plan planfyfor
Definition fft_cpu.h:124
int fftny
Definition fft_cpu.h:139
fftw_plan planxbac1
Definition fft_cpu.h:108
FFT_CPU(const int fft_mode_in)
Definition fft_cpu.h:13
fftw_plan planxfor2
Definition fft_cpu.h:109
fftwf_plan planfxbac2
Definition fft_cpu.h:123
FFT_CPU()
Definition fft_cpu.h:12
fftw_plan planxc2r
Definition fft_cpu.h:114
fftwf_plan planfyr2c
Definition fft_cpu.h:128
int nplane
Definition fft_cpu.h:142
fftwf_plan planfxr2c
Definition fft_cpu.h:126
~FFT_CPU()
Definition fft_cpu.h:14
fftw_plan planzbac
Definition fft_cpu.h:106
int ns
Definition fft_cpu.h:143
int rixy
rixy: the right edge of the pw ball in the x or y direction
Definition fft_cpu.h:156
void clearfft(fftwf_plan &plan)
int fftnxy
Definition fft_cpu.h:140
std::complex< double > * get_auxr_data() const
Definition fft_cpu.cpp:468
std::complex< float > * c_auxr
Definition fft_cpu.h:132
int maxgrids
Definition fft_cpu.h:145
std::complex< double > * z_auxg
Definition fft_cpu.h:133
fftw_plan planyfor
Definition fft_cpu.h:111
std::complex< double > * get_auxg_data() const
Definition fft_cpu.cpp:470
double * get_rspace_data() const
Definition fft_cpu.cpp:466
double * d_rspace
Definition fft_cpu.h:137
fftwf_plan planfzbac
Definition fft_cpu.h:119
Definition array_pool.h:6