This class provides the c04 hcp traversal. More...
#include <LCC04HCPTraversal.h>
Public Member Functions | |
LCC04HCPTraversal (const std::array< unsigned long, 3 > &dims, PairwiseFunctor *pairwiseFunctor, const double interactionLength, const std::array< double, 3 > &cellLength, DataLayoutOption dataLayout, bool useNewton3) | |
Constructor of c04hcp. | |
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. | |
![]() | |
C08BasedTraversal (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 c08 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. | |
Additional Inherited Members | |
![]() | |
void | c08Traversal (LoopBody &&loopBody) |
The main traversal of the C08Traversal. | |
![]() | |
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. | |
![]() | |
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. | |
This class provides the c04 hcp traversal.
The traversal is based on Tchipev, N. Algorithmic and Implementational Optimizations of Molecular Dynamics Simulations for Process Engineering, Chapter 8 Outlook.
The traversal uses the c04 base step performed on every single cell. Since these steps overlap a domain coloring with four colors is applied. It differs from c04 in the shape of the colored blocks. The chosen block-shape for the c08-base-steps in the lc_c04_HCP traversal is a 2x1x3-shape cuboid.
ParticleCell | the type of cells |
PairwiseFunctor | The functor that defines the interaction of two particles. |
|
inline |
Constructor of c04hcp.
dims | The dimensions of the cellblock, i.e. the number of cells in x, y and z direction. |
pairwiseFunctor | The functor that defines the interaction of two particles. |
interactionLength | Interaction length. |
cellLength | cell length. |
dataLayout | The data layout with which this traversal should be initialized. |
useNewton3 | Parameter to specify whether the traversal makes use of newton3 or not. |
|
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 |
Implements autopas::CellTraversal< ParticleCell >.
|
overridevirtual |
Traverse the particles by pairs, triplets etc.
as determined by the Functor type.
Implements autopas::TraversalInterface.