ls1-MarDyn
ls1-MarDyn molecular dynamics code
|
#include <FFTAcceleration_2wayM2L.h>
Public Member Functions | |
void | FFT_initialize_Target (FFTAccelerableExpansion &Expansion) |
void | FFT_M2L (FFTAccelerableExpansion &Source, FFTAccelerableExpansion &Target, FFTDataContainer *TransferFunction) |
void | FFT_M2L_vec (FFTAccelerableExpansion &Source, FFTAccelerableExpansion &Target, FFTDataContainer *TransferFunction) |
void | FFT_M2L_2way (FFTAccelerableExpansion &Source1, FFTAccelerableExpansion &Source2, FFTAccelerableExpansion &Target1, FFTAccelerableExpansion &Target2, FFTDataContainer *TransferFunction) |
M2L using 2way scheme (see doc/2wayM2L) More... | |
void | FFT_M2L_2way_vec (FFTAccelerableExpansion &Source1, FFTAccelerableExpansion &Source2, FFTAccelerableExpansion &Target1, FFTAccelerableExpansion &Target2, FFTDataContainer *TransferFunction) |
![]() | |
virtual | ~FFTAccelerationAPI_2Way () |
destructor, child class will be upcasted, virtual destructor required to call the right child class destructor | |
![]() | |
virtual | ~FFTAccelerationAPI () |
destructor, child class will be upcasted, virtual destructor required to call the right child class destructor | |
virtual void | FFT_initialize_Source (FFTAccelerableExpansion &Expansion, double radius)=0 |
virtual void | FFT_initialize_TransferFunction (FFTAccelerableExpansion &Expansion)=0 |
virtual void | FFT_finalize_Target (FFTAccelerableExpansion &Expansion, double radius)=0 |
Protected Member Functions | |
FFTDataContainer_arrays * | getFFTData (FFTAccelerableExpansion &Expansion) |
Protected Attributes | |
int | _nbZeroes |
int | _totalSize |
![]() | |
int | _p |
int | _fft_nx |
order of the expansions (start at 0 so usually order+1) | |
int | _fft_ny |
number of line of the FFT matrices (or similar) | |
Abstract class with common code for basic fft and fftw implementation
Use FFTDataContainer_arrays as Data container (2 arrays)
Don't define FFT_M2L and FFT_M2L_vec, but define FFT_M2L_2way the code using the acceleration should downcast its FFTAcceleration to the FFTAcceleration_2Way class and use FFT_M2L_2way instead of FFT_M2L
|
virtual |
Initialize a Target expansion's FFTDatacontainer (schould be to a full 0 FFTDatacontainer)
FFTAccelerableExpansion | & Expansion |
Implements FFTAccelerationAPI.
|
inlinevirtual |
M2L operator, performs the M2L in fourier space, usually an entrywise product (or more complexe scheme if needed, see blocks implementations)
All parameters needs to be initialized using the previous methods The TransferFunction should come from a TransferFunctionManager
FFTAccelerableExpansion | & Source |
FFTAccelerableExpansion | & Target |
FFTDataContainer* | TransferFunction |
Implements FFTAccelerationAPI.
|
virtual |
M2L using 2way scheme (see doc/2wayM2L)
Implements FFTAccelerationAPI_2Way.
|
virtual |
Implements FFTAccelerationAPI_2Way.
|
inlinevirtual |
M2L operator, performs the M2L in fourier space, usually an entrywise product (or more complexe scheme if needed, see blocks implementations)
Uses vectorization of the loops
All parameters needs to be initialized using the previous methods The TransferFunction should come from a TransferFunctionManager
FFTAccelerableExpansion | & Source |
FFTAccelerableExpansion | & Target |
FFTDataContainer* | TransferFunction |
Implements FFTAccelerationAPI.