ls1-MarDyn
ls1-MarDyn molecular dynamics code
FFTAccelerationAPI.h
1/*
2 * FFTAcceleration.h
3 *
4 * Created on: Feb 05, 2016
5 * Author: gallardjm
6 */
7#ifndef FFTACC_H_
8#define FFTACC_H_
9
10#include <stdexcept>
11
12#include "bhfmm/fft/FFTDataContainer.h"
13#include "bhfmm/fft/FFTAccelerableExpansion.h"
14
23
24public:
25
28 }
29
30 //Initialization, to be done before the M2L
31
40 double radius) =0;
41
48 virtual void FFT_initialize_Target(FFTAccelerableExpansion & Expansion) =0;
49
58 FFTAccelerableExpansion & Expansion) =0;
59
60 //M2L operator, with and without vectorization
72 virtual void FFT_M2L(FFTAccelerableExpansion & Source,
74 FFTDataContainer* TransferFunction) =0;
75
89 virtual void FFT_M2L_vec(FFTAccelerableExpansion & Source,
91 FFTDataContainer* TransferFunction) =0;
92
93 //Finalize method, to use after the M2L operations on each target
105 double radius) =0;
106
107protected:
108 int _p;
111};
112
113#endif
Definition: FFTAccelerableExpansion.h:21
Definition: FFTAccelerationAPI.h:22
virtual void FFT_finalize_Target(FFTAccelerableExpansion &Expansion, double radius)=0
int _fft_ny
number of line of the FFT matrices (or similar)
Definition: FFTAccelerationAPI.h:110
int _fft_nx
order of the expansions (start at 0 so usually order+1)
Definition: FFTAccelerationAPI.h:109
virtual void FFT_M2L_vec(FFTAccelerableExpansion &Source, FFTAccelerableExpansion &Target, FFTDataContainer *TransferFunction)=0
virtual void FFT_initialize_Source(FFTAccelerableExpansion &Expansion, double radius)=0
virtual void FFT_initialize_TransferFunction(FFTAccelerableExpansion &Expansion)=0
virtual ~FFTAccelerationAPI()
destructor, child class will be upcasted, virtual destructor required to call the right child class d...
Definition: FFTAccelerationAPI.h:27
virtual void FFT_M2L(FFTAccelerableExpansion &Source, FFTAccelerableExpansion &Target, FFTDataContainer *TransferFunction)=0
virtual void FFT_initialize_Target(FFTAccelerableExpansion &Expansion)=0
Definition: FFTDataContainer.h:14