ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
fft_dsp.h
Go to the documentation of this file.
1#ifndef FFT_DSP_H
2#define FFT_DSP_H
3
4#include "fft_base.h"
5#include <ctime>
6#include <cstdlib>
7#include <cmath>
8
9#include "hthread_host.h"
10#include "mtfft.h"
11#include "fftw3.h"
12
13namespace ModulePW
14{
15
16template <typename FPTYPE>
17class FFT_DSP : public FFT_BASE<FPTYPE>
18{
19 public:
22
23 void setupFFT() override;
24
25 void clear() override;
26
27 void cleanFFT() override;
33 void resource_handler(const int flag) const override;
41 virtual __attribute__((weak))
42 void initfft(int nx_in,
43 int ny_in,
44 int nz_in) override;
45
50 virtual __attribute__((weak))
51 std::complex<FPTYPE>* get_auxr_3d_data() const override;
52
60 virtual __attribute__((weak))
61 void fft3D_forward(std::complex<FPTYPE>* in,
62 std::complex<FPTYPE>* out) const override;
70 virtual __attribute__((weak))
71 void fft3D_backward(std::complex<FPTYPE>* in,
72 std::complex<FPTYPE>* out) const override;
73 public:
74 int nxyz=0;
76 mutable INT b_id=0;
77 mutable INT thread_id_for=0;
78 PLAN* ptr_plan_forward=nullptr;
79 PLAN* ptr_plan_backward=nullptr;
80 mutable unsigned long args_for[2];
81 mutable unsigned long args_back[2];
82 E * forward_in=nullptr;
83 std::complex<float>* c_auxr_3d = nullptr; // fft space
84 std::complex<double>* z_auxr_3d = nullptr; // fft space
85
86};
87} // namespace ModulePW
88#endif
Definition fft_base.h:9
virtual int int nz_in
Definition fft_base.h:21
Definition fft_dsp.h:18
void clear() override
Clear the fft data as pure virtual function.
unsigned long args_for[2]
Definition fft_dsp.h:80
void fft3D_backward(std::complex< double > *in, std::complex< double > *out) const
Definition fft_dsp.cpp:91
INT b_id
Definition fft_dsp.h:76
unsigned long args_back[2]
Definition fft_dsp.h:81
virtual int ny_in
Definition fft_dsp.h:43
std::complex< double > * get_auxr_3d_data() const
Definition fft_dsp.cpp:119
FFT_DSP()
Definition fft_dsp.h:20
INT cluster_id
Definition fft_dsp.h:75
void cleanFFT() override
Clean the fft plan as pure virtual function.
INT thread_id_for
Definition fft_dsp.h:77
PLAN * ptr_plan_forward
Definition fft_dsp.h:78
std::complex< double > * z_auxr_3d
Definition fft_dsp.h:84
void resource_handler(const int flag) const override
Control the allocation or deallocation of hthread resource.
E * forward_in
Definition fft_dsp.h:82
void fft3D_forward(std::complex< double > *in, std::complex< double > *out) const
Definition fft_dsp.cpp:84
void initfft(int nx_in, int ny_in, int nz_in)
Definition fft_dsp.cpp:11
virtual __attribute__((weak)) void initfft(int nx_in
Initialize the fft parameters.
PLAN * ptr_plan_backward
Definition fft_dsp.h:79
void setupFFT() override
Setup the fft plan and data as pure virtual function.
~FFT_DSP()
Definition fft_dsp.h:21
int nxyz
Get the real space data.
Definition fft_dsp.h:74
std::complex< float > * c_auxr_3d
Definition fft_dsp.h:83
Definition pw_op.cpp:3