AutoPas  3.0.0
Loading...
Searching...
No Matches
Public Member Functions | List of all members
autopas::VLCCellPairC08Traversal< ParticleCell, PairwiseFunctor > Class Template Reference

C08 traversal for VLCCellPairNeighborList. More...

#include <VLCCellPairC08Traversal.h>

Inheritance diagram for autopas::VLCCellPairC08Traversal< ParticleCell, PairwiseFunctor >:
Inheritance graph
[legend]
Collaboration diagram for autopas::VLCCellPairC08Traversal< ParticleCell, PairwiseFunctor >:
Collaboration graph
[legend]

Public Member Functions

 VLCCellPairC08Traversal (const std::array< unsigned long, 3 > &dims, PairwiseFunctor &pairwiseFunctor, double interactionLength, const std::array< double, 3 > &cellLength, DataLayoutOption dataLayout, bool useNewton3)
 Constructor of the c08 traversal for VLCCellPairNeighborList.
 
void traverseParticles () override
 Traverse the particles by pairs, triplets etc.
 
bool isApplicableToDomain () const override
 PVL C08 is always applicable to the domain.
 
TraversalOption getTraversalType () const override
 Return a enum representing the name of the traversal class.
 
void setAoSSortingThreshold (size_t aosSortingThreshold) override
 Set the aos-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.
 
void setSoASortingThreshold (size_t soaSortingThreshold) override
 Set the SoA sorting-threshold for traversals that use the CellFunctor.
 
- Public Member Functions inherited from autopas::C08BasedTraversal< ParticleCell, PairwiseFunctor >
 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.
 
- Public Member Functions inherited from autopas::ColorBasedTraversal< ParticleCell, Functor, collapseDepth >
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().
 
- Public Member Functions inherited from autopas::CellTraversal< ParticleCell >
 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 setAoSSortingThreshold (size_t aosSortingThreshold)=0
 Set the aos-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 void setSoASortingThreshold (size_t soaSortingThreshold)=0
 Set the SoA sorting-threshold for traversals that use the CellFunctor.
 
- Public Member Functions inherited from autopas::TraversalInterface
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 isApplicableToDomain () 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.
 
- Public Member Functions inherited from autopas::VLCCellPairTraversalInterface< ParticleCell::ParticleType >
void setVerletList (VLCCellPairNeighborList< ParticleCell::ParticleType > &verlet)
 Sets the verlet list for the traversal to iterate over.
 

Additional Inherited Members

- Protected Member Functions inherited from autopas::C08BasedTraversal< ParticleCell, PairwiseFunctor >
void c08Traversal (LoopBody &&loopBody)
 The main traversal of the C08Traversal.
 
- Protected Member Functions inherited from autopas::ColorBasedTraversal< ParticleCell, Functor, collapseDepth >
 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.
 
- Protected Attributes inherited from autopas::ColorBasedTraversal< ParticleCell, Functor, collapseDepth >
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.
 
- Protected Attributes inherited from autopas::CellTraversal< ParticleCell >
std::array< unsigned long, 3 > _cellsPerDimension
 The dimensions of the cellblock.
 
std::vector< ParticleCell > * _cells
 The cells to traverse.
 
- Protected Attributes inherited from autopas::TraversalInterface
DataLayoutOption _dataLayout
 The datalayout used by this traversal.
 
bool _useNewton3
 If this traversal makes use of newton3.
 
- Protected Attributes inherited from autopas::VLCCellPairTraversalInterface< ParticleCell::ParticleType >
VLCCellPairNeighborList< ParticleCell::ParticleType > * _cellPairVerletList
 The verlet list to iterate over.
 

Detailed Description

template<class ParticleCell, class PairwiseFunctor>
class autopas::VLCCellPairC08Traversal< ParticleCell, PairwiseFunctor >

C08 traversal for VLCCellPairNeighborList.

The pairwise neighbor list allows access to the relevant pairs of interacting particles for each pair of cells, including the diagonal non-base pair of cells in the standard c08 step.

Template Parameters
ParticleCellthe type of cells
PairwiseFunctorThe functor that defines the interaction of two particles.

Constructor & Destructor Documentation

◆ VLCCellPairC08Traversal()

template<class ParticleCell , class PairwiseFunctor >
autopas::VLCCellPairC08Traversal< ParticleCell, PairwiseFunctor >::VLCCellPairC08Traversal ( const std::array< unsigned long, 3 > &  dims,
PairwiseFunctor pairwiseFunctor,
double  interactionLength,
const std::array< double, 3 > &  cellLength,
DataLayoutOption  dataLayout,
bool  useNewton3 
)
inlineexplicit

Constructor of the c08 traversal for VLCCellPairNeighborList.

Parameters
dimsThe dimensions of the cellblock, i.e. the number of cells in x, y and z direction.
pairwiseFunctorThe functor that defines the interaction of two particles.
interactionLengthcutoff + skin
cellLengthlength of the underlying cells
dataLayout
useNewton3

Member Function Documentation

◆ getTraversalType()

template<class ParticleCell , class PairwiseFunctor >
TraversalOption autopas::VLCCellPairC08Traversal< ParticleCell, PairwiseFunctor >::getTraversalType ( ) const
inlineoverridevirtual

Return a enum representing the name of the traversal class.

Returns
Enum representing traversal.

Implements autopas::TraversalInterface.

◆ isApplicableToDomain()

template<class ParticleCell , class PairwiseFunctor >
bool autopas::VLCCellPairC08Traversal< ParticleCell, PairwiseFunctor >::isApplicableToDomain ( ) const
inlineoverridevirtual

PVL C08 is always applicable to the domain.

Returns

Implements autopas::TraversalInterface.

◆ setAoSSortingThreshold()

template<class ParticleCell , class PairwiseFunctor >
void autopas::VLCCellPairC08Traversal< ParticleCell, PairwiseFunctor >::setAoSSortingThreshold ( size_t  aosSortingThreshold)
inlineoverridevirtual

Set the aos-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.

Parameters
aosSortingThresholdSum 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 >.

◆ setSoASortingThreshold()

template<class ParticleCell , class PairwiseFunctor >
void autopas::VLCCellPairC08Traversal< ParticleCell, PairwiseFunctor >::setSoASortingThreshold ( size_t  soaSortingThreshold)
inlineoverridevirtual

Set the SoA sorting-threshold for traversals that use the CellFunctor.

If the sum of the SoA buffer sizes of two cells exceeds this value, the SoA path uses SoAFunctorPairSorted. Traversals that hold a CellFunctor should forward to it; others should explicitly override with an empty body.

Parameters
soaSortingThresholdSum of the SoA buffer sizes from which SoA sorting should be enabled.

Implements autopas::CellTraversal< ParticleCell >.

◆ traverseParticles()

template<class ParticleCell , class PairwiseFunctor >
void autopas::VLCCellPairC08Traversal< ParticleCell, PairwiseFunctor >::traverseParticles ( )
inlineoverridevirtual

Traverse the particles by pairs, triplets etc.

as determined by the Functor type.

Implements autopas::TraversalInterface.


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