ls1-MarDyn
ls1-MarDyn molecular dynamics code
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
FFTAcceleration_blocks Class Reference
Inheritance diagram for FFTAcceleration_blocks:
FFTAccelerationAPI_full FFTAccelerationAPI_2Way FFTAccelerationAPI FFTAcceleration_blocks_fftw FFTAcceleration_blocks_optFFT

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_OrderReduction (FFTAccelerableExpansion &Source, FFTAccelerableExpansion &Target, FFTDataContainer *TransferFunction, int order)
 M2L using Order Reduction. More...
 
void FFT_M2L_OrderReduction_vec (FFTAccelerableExpansion &Source, FFTAccelerableExpansion &Target, FFTDataContainer *TransferFunction, int order)
 
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)
 
void FFT_M2L_2way_ORed (FFTAccelerableExpansion &Source1, FFTAccelerableExpansion &Source2, FFTAccelerableExpansion &Target1, FFTAccelerableExpansion &Target2, FFTDataContainer *TransferFunction, int order)
 M2L using both Order Reduction and 2way. More...
 
void FFT_M2L_2way_ORed_vec (FFTAccelerableExpansion &Source1, FFTAccelerableExpansion &Source2, FFTAccelerableExpansion &Target1, FFTAccelerableExpansion &Target2, FFTDataContainer *TransferFunction, int order)
 
- Public Member Functions inherited from FFTAccelerationAPI_full
virtual ~FFTAccelerationAPI_full ()
 destructor, child class will be upcasted, virtual destructor required to call the right child class destructor
 
- Public Member Functions inherited from FFTAccelerationAPI_2Way
virtual ~FFTAccelerationAPI_2Way ()
 destructor, child class will be upcasted, virtual destructor required to call the right child class destructor
 
- Public Member Functions inherited from FFTAccelerationAPI
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_blocksgetFFTData (FFTAccelerableExpansion &Expansion)
 
template<bool Vect, bool OrderRed>
void FFT_M2L_template (FFTAccelerableExpansion &Source, FFTAccelerableExpansion &Target, FFTDataContainer *TransferFunction, int order)
 
template<bool Vect, bool OrderRed>
void FFT_M2L_2way_template (FFTAccelerableExpansion &Source1, FFTAccelerableExpansion &Source2, FFTAccelerableExpansion &Target1, FFTAccelerableExpansion &Target2, FFTDataContainer *TransferFunction, int order)
 

Protected Attributes

int _nbBlocks
 
int _nbLinePerBlock
 
- Protected Attributes inherited from FFTAccelerationAPI
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)
 

Member Function Documentation

◆ FFT_initialize_Target()

void FFTAcceleration_blocks::FFT_initialize_Target ( FFTAccelerableExpansion Expansion)
virtual

Initialize a Target expansion's FFTDatacontainer (schould be to a full 0 FFTDatacontainer)

Parameters
FFTAccelerableExpansion& Expansion

Implements FFTAccelerationAPI.

◆ FFT_M2L()

void FFTAcceleration_blocks::FFT_M2L ( FFTAccelerableExpansion Source,
FFTAccelerableExpansion Target,
FFTDataContainer TransferFunction 
)
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

Parameters
FFTAccelerableExpansion& Source
FFTAccelerableExpansion& Target
FFTDataContainer*TransferFunction

Implements FFTAccelerationAPI.

◆ FFT_M2L_2way()

void FFTAcceleration_blocks::FFT_M2L_2way ( FFTAccelerableExpansion Source1,
FFTAccelerableExpansion Source2,
FFTAccelerableExpansion Target1,
FFTAccelerableExpansion Target2,
FFTDataContainer TransferFunction 
)
virtual

M2L using 2way scheme (see doc/2wayM2L)

Implements FFTAccelerationAPI_2Way.

◆ FFT_M2L_2way_ORed()

void FFTAcceleration_blocks::FFT_M2L_2way_ORed ( FFTAccelerableExpansion Source1,
FFTAccelerableExpansion Source2,
FFTAccelerableExpansion Target1,
FFTAccelerableExpansion Target2,
FFTDataContainer TransferFunction,
int  order 
)
virtual

M2L using both Order Reduction and 2way.

Implements FFTAccelerationAPI_full.

◆ FFT_M2L_2way_ORed_vec()

void FFTAcceleration_blocks::FFT_M2L_2way_ORed_vec ( FFTAccelerableExpansion Source1,
FFTAccelerableExpansion Source2,
FFTAccelerableExpansion Target1,
FFTAccelerableExpansion Target2,
FFTDataContainer TransferFunction,
int  order 
)
virtual

◆ FFT_M2L_2way_vec()

void FFTAcceleration_blocks::FFT_M2L_2way_vec ( FFTAccelerableExpansion Source1,
FFTAccelerableExpansion Source2,
FFTAccelerableExpansion Target1,
FFTAccelerableExpansion Target2,
FFTDataContainer TransferFunction 
)
virtual

◆ FFT_M2L_OrderReduction()

void FFTAcceleration_blocks::FFT_M2L_OrderReduction ( FFTAccelerableExpansion Source,
FFTAccelerableExpansion Target,
FFTDataContainer TransferFunction,
int  order 
)
virtual

M2L using Order Reduction.

Implements FFTAccelerationAPI_full.

◆ FFT_M2L_OrderReduction_vec()

void FFTAcceleration_blocks::FFT_M2L_OrderReduction_vec ( FFTAccelerableExpansion Source,
FFTAccelerableExpansion Target,
FFTDataContainer TransferFunction,
int  order 
)
virtual

◆ FFT_M2L_vec()

void FFTAcceleration_blocks::FFT_M2L_vec ( FFTAccelerableExpansion Source,
FFTAccelerableExpansion Target,
FFTDataContainer TransferFunction 
)
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

Parameters
FFTAccelerableExpansion& Source
FFTAccelerableExpansion& Target
FFTDataContainer*TransferFunction

Implements FFTAccelerationAPI.


The documentation for this class was generated from the following files: