This class provides the lc_c18 traversal. More...
#include <VLCC18Traversal.h>
Public Member Functions | |
VLCC18Traversal (const std::array< unsigned long, 3 > &dims, PairwiseFunctor *pairwiseFunctor, const double interactionLength, const std::array< double, 3 > &cellLength, DataLayoutOption dataLayout, bool useNewton3, ContainerOption::Value typeOfList) | |
Constructor of the lc_c18 traversal. | |
void | traverseParticles () override |
Traverse the particles by pairs, triplets etc. | |
TraversalOption | getTraversalType () const override |
Return a enum representing the name of the traversal class. | |
bool | isApplicable () const override |
Checks if the traversal is applicable to the current state of the domain. | |
void | setSortingThreshold (size_t sortingThreshold) override |
Set the sorting-threshold for traversals that use the CellFunctor If the sum of the number of particles in two cells is greater or equal to that value, the CellFunctor creates a sorted view of the particles to avoid unnecessary distance checks. | |
![]() | |
C18BasedTraversal (const std::array< unsigned long, 3 > &dims, PairwiseFunctor *functor, const double interactionLength, const std::array< double, 3 > &cellLength, DataLayoutOption dataLayout, bool useNewton3) | |
Constructor of the lc_c18 traversal. | |
![]() | |
void | initTraversal () override |
load Data Layouts required for this Traversal if cells have been set through setCellsToTraverse(). | |
void | endTraversal () override |
write Data to AoS if cells have been set through setCellsToTraverse(). | |
![]() | |
CellTraversal (const std::array< unsigned long, 3 > &dims) | |
Constructor of CellTraversal. | |
virtual | ~CellTraversal ()=default |
Destructor of CellTraversal. | |
virtual void | setCellsToTraverse (std::vector< ParticleCell > &cells) |
Sets the cells to iterate over. | |
virtual void | setSortingThreshold (size_t sortingThreshold)=0 |
Set the sorting-threshold for traversals that use the CellFunctor If the sum of the number of particles in two cells is greater or equal to that value, the CellFunctor creates a sorted view of the particles to avoid unnecessary distance checks. | |
![]() | |
virtual | ~TraversalInterface ()=default |
Destructor of TraversalInterface. | |
TraversalInterface (DataLayoutOption dataLayout, bool useNewton3) | |
Constructor of the TraversalInterface. | |
virtual TraversalOption | getTraversalType () const =0 |
Return a enum representing the name of the traversal class. | |
virtual bool | isApplicable () const =0 |
Checks if the traversal is applicable to the current state of the domain. | |
virtual void | initTraversal ()=0 |
Initializes the traversal. | |
virtual void | traverseParticles ()=0 |
Traverse the particles by pairs, triplets etc. | |
virtual void | endTraversal ()=0 |
Finalizes the traversal. | |
bool | getUseNewton3 () const |
Return whether the traversal uses newton 3. | |
DataLayoutOption | getDataLayout () const |
Return the data layout option. | |
![]() | |
VLCTraversalInterface (ContainerOption typeOfList) | |
Constructor of the VLCTraversalInterface. | |
virtual void | setVerletList (NeighborList &verlet) |
Sets the verlet list for the traversal to iterate over. | |
Additional Inherited Members | |
![]() | |
void | c18Traversal (LoopBody &&loopBody) |
The main traversal of the C18Traversal. | |
![]() | |
ColorBasedTraversal (const std::array< unsigned long, 3 > &dims, Functor *functor, const double interactionLength, const std::array< double, 3 > &cellLength, DataLayoutOption dataLayout, bool useNewton3) | |
Constructor of the ColorBasedTraversal. | |
~ColorBasedTraversal () override=default | |
Destructor of ColorBasedTraversal. | |
template<typename LoopBody > | |
void | colorTraversal (LoopBody &&loopBody, const std::array< unsigned long, 3 > &end, const std::array< unsigned long, 3 > &stride, const std::array< unsigned long, 3 > &offset={0ul, 0ul, 0ul}) |
The main traversal of the ColorBasedTraversal. | |
virtual void | notifyColorChange (unsigned long newColor) |
This method is called when the color during the traversal has changed. | |
![]() | |
void | processCellLists (NeighborList &neighborLists, unsigned long cellIndex, PairwiseFunctor *pairwiseFunctor, DataLayoutOption dataLayout, bool useNewton3) |
Iterate over all neighbor lists list of a given cell. | |
void | loadSoA (PairwiseFunctor *pairwiseFunctor, NeighborList &neighborLists) |
Load the SoA from the respective neighbor list. | |
void | extractSoA (PairwiseFunctor *pairwiseFunctor, NeighborList &neighborLists) |
Extract the SoA from the respective neighbor list. | |
![]() | |
const double | _interactionLength |
Interaction length (cutoff + skin). | |
const std::array< double, 3 > | _cellLength |
cell length in CellBlock3D. | |
std::array< unsigned long, 3 > | _overlap |
overlap of interacting cells. | |
![]() | |
std::array< unsigned long, 3 > | _cellsPerDimension |
The dimensions of the cellblock. | |
std::vector< ParticleCell > * | _cells |
The cells to traverse. | |
![]() | |
DataLayoutOption | _dataLayout |
The datalayout used by this traversal. | |
bool | _useNewton3 |
If this traversal makes use of newton3. | |
![]() | |
NeighborList * | _verletList |
The verlet list to iterate over. | |
SoA< typename Particle_T::SoAArraysType > * | _soa |
Structure of arrays to be used if the data layout is SoA. | |
ContainerOption | _typeOfList |
The type of neighbor list as an enum value. | |
This class provides the lc_c18 traversal.
The traversal uses the c18 base step performed on every single cell. Since these steps overlap a domain coloring with eighteen colors is applied.
For each cell all neighbor lists are processed, so depending on whether lists were built with newton3 the base step is c01 or c18
ParticleCell | the type of cells |
PairwiseFunctor | The functor that defines the interaction of two particles. |
NeighborList | type of the neighbor list |
|
inlineexplicit |
Constructor of the lc_c18 traversal.
dims | The dimensions of the cellblock, i.e. the number of cells in x, y and z direction. |
interactionLength | cutoff + skin |
cellLength | length of the underlying cells |
pairwiseFunctor | The functor that defines the interaction of two particles. |
dataLayout | |
useNewton3 | |
typeOfList | indicates the type of neighbor list as an enum value, currently only used for getTraversalType |
|
inlineoverridevirtual |
Return a enum representing the name of the traversal class.
Implements autopas::TraversalInterface.
|
inlineoverridevirtual |
Checks if the traversal is applicable to the current state of the domain.
Implements autopas::TraversalInterface.
|
inlineoverridevirtual |
Set the sorting-threshold for traversals that use the CellFunctor If the sum of the number of particles in two cells is greater or equal to that value, the CellFunctor creates a sorted view of the particles to avoid unnecessary distance checks.
sortingThreshold | Sum of the number of particles in two cells from which sorting should be enabled This traversal does not use the CellFunctor, so the function has no effect here |
Implements autopas::CellTraversal< ParticleCell >.
|
overridevirtual |
Traverse the particles by pairs, triplets etc.
as determined by the Functor type.
Implements autopas::TraversalInterface.