ls1-MarDyn
ls1-MarDyn molecular dynamics code
|
#include <FFTAccelerationAPI.h>
Public Member Functions | |
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_Target (FFTAccelerableExpansion &Expansion)=0 |
virtual void | FFT_initialize_TransferFunction (FFTAccelerableExpansion &Expansion)=0 |
virtual void | FFT_M2L (FFTAccelerableExpansion &Source, FFTAccelerableExpansion &Target, FFTDataContainer *TransferFunction)=0 |
virtual void | FFT_M2L_vec (FFTAccelerableExpansion &Source, FFTAccelerableExpansion &Target, FFTDataContainer *TransferFunction)=0 |
virtual void | FFT_finalize_Target (FFTAccelerableExpansion &Expansion, double radius)=0 |
Protected Attributes | |
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 defining the interface of a class handling the M2L's FFT acceleration
Various implementations will offer various schemes and can be choosed at runtime using a factory and strategy pattern (see FFTSetting and FFTFactory)
|
pure virtual |
Finalize a Target expansion by adding the result of the M2L stored in Fourier space to the expansion values.
Include the rescaling using the radius parameter, should be the same as the one used by FFT_initialize_Source
FFTAccelerableExpansion | & Expansion |
double | radius |
Implemented in FFTAcceleration_blocks_fftw, FFTAcceleration_blocks_optFFT, FFTAcceleration_scalBlocks_optFFT, FFTAcceleration_scalBlocks_v0, FFTAcceleration_2wayM2L_fftw, FFTAcceleration_2wayM2L_optFFT, FFTAcceleration_matrices_fftw, and FFTAcceleration_matrices_optFFT.
|
pure virtual |
Initialize a source expansion's FFTDatacontainer, including rescaling using the radius parameter (see doc/Rescalling)
FFTAccelerableExpansion | & Expansion |
double | radius |
Implemented in FFTAcceleration_blocks_fftw, FFTAcceleration_blocks_optFFT, FFTAcceleration_scalBlocks_optFFT, FFTAcceleration_scalBlocks_v0, FFTAcceleration_2wayM2L_fftw, FFTAcceleration_2wayM2L_optFFT, FFTAcceleration_matrices_fftw, and FFTAcceleration_matrices_optFFT.
|
pure virtual |
Initialize a Target expansion's FFTDatacontainer (schould be to a full 0 FFTDatacontainer)
FFTAccelerableExpansion | & Expansion |
Implemented in FFTAcceleration_blocks, FFTAcceleration_scalBlocks_optFFT, FFTAcceleration_scalBlocks_v0, FFTAcceleration_2wayM2L, and FFTAcceleration_matrices.
|
pure virtual |
Initialize a source expansion's FFTDatacontainer, all subsequent transformations (flip of the matrix or rescaling of scaling blocks for example) should be done here.
FFTAccelerableExpansion | & Expansion |
Implemented in FFTAcceleration_blocks_fftw, FFTAcceleration_blocks_optFFT, FFTAcceleration_scalBlocks_optFFT, FFTAcceleration_scalBlocks_v0, FFTAcceleration_2wayM2L_fftw, FFTAcceleration_2wayM2L_optFFT, FFTAcceleration_matrices_fftw, and FFTAcceleration_matrices_optFFT.
|
pure virtual |
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 |
Implemented in FFTAcceleration_blocks, FFTAcceleration_scalBlocks_optFFT, FFTAcceleration_scalBlocks_v0, FFTAcceleration_2wayM2L, and FFTAcceleration_matrices.
|
pure virtual |
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 |
Implemented in FFTAcceleration_blocks, FFTAcceleration_scalBlocks_optFFT, FFTAcceleration_scalBlocks_v0, FFTAcceleration_2wayM2L, and FFTAcceleration_matrices.