ls1-MarDyn
ls1-MarDyn molecular dynamics code
FFTW_Helper.h
1/*
2 * FFTW_Helper.h
3 *
4 * Created on: Sep 14, 2015
5 * Author: gallardjm
6 */
7
8#ifndef FFTW_HELPER_H_
9#define FFTW_HELPER_H_
10
11#include "bhfmm/fft/FFTSettings_preprocessor.h"
12#include "bhfmm/fft/FFTAccelerableExpansion.h"
13#include <fftw3.h>
14#include <iostream>
15
20public:
21 FFTW_Helper(const int p, const int nx, const int ny);
22 ~~FFTW_Helper();
23
24 void FFT2Local(FFTAccelerableExpansion & Expansion, double radius);
25
26 inline void execute_S2FFT() {
27#if defined(__SINGLE_PRECISION_FFT__)
28 fftwf_execute(S2FFT);
29#else
30 fftw_execute(S2FFT);
31#endif
32 }
33
34 inline void execute_T2FFT() {
35#if defined(__SINGLE_PRECISION_FFT__)
36 fftwf_execute(T2FFT);
37#else
38 fftw_execute(T2FFT);
39#endif
40 }
41
42 inline void execute_FFT2L() {
43#if defined(__SINGLE_PRECISION_FFT__)
44 fftwf_execute(FFT2L);
45#else
46 fftw_execute(FFT2L);
47#endif
48 }
49
50#if defined(__SINGLE_PRECISION_FFT__)
51
52 fftwf_complex* Source2FFT(FFTAccelerableExpansion & Expansion, double radius);
53 fftwf_complex* TransferFunction2FFT(FFTAccelerableExpansion & Expansion);
54 void getInLocal(fftwf_complex* & in) {in = FFT2L_in;}
55
56private:
57 int _p;
58 int _nx;
59 int _ny;
60 fftwf_plan S2FFT;
61 fftwf_complex *S2FFT_in;
62 fftwf_complex *S2FFT_out;
63 fftwf_plan T2FFT;
64 fftwf_complex *T2FFT_in;
65 fftwf_complex *T2FFT_out;
66 fftwf_plan FFT2L;
67 fftwf_complex *FFT2L_in;
68 fftwf_complex *FFT2L_out;
69
70#else
71
72 fftw_complex* Source2FFT(FFTAccelerableExpansion & Expansion,
73 double radius);
74 fftw_complex* TransferFunction2FFT(FFTAccelerableExpansion & Expansion);
75 void getInLocal(fftw_complex* & in) {
76 in = FFT2L_in;
77 }
78
79private:
80 int _p;
81 int _nx;
82 int _ny;
83 fftw_plan S2FFT;
84 fftw_complex *S2FFT_in;
85 fftw_complex *S2FFT_out;
86 fftw_plan T2FFT;
87 fftw_complex *T2FFT_in;
88 fftw_complex *T2FFT_out;
89 fftw_plan FFT2L;
90 fftw_complex *FFT2L_in;
91 fftw_complex *FFT2L_out;
92
93#endif
94
95};
96
97#endif
Definition: FFTAccelerableExpansion.h:21
Definition: FFTW_Helper.h:19