|
| SlicedLockBasedTraversal (const std::array< unsigned long, 3 > &dims, Functor *functor, const double interactionLength, const std::array< double, 3 > &cellLength, DataLayoutOption dataLayout, bool useNewton3, bool spaciallyForward) |
| Constructor of the sliced traversal.
|
|
| SlicedBasedTraversal (const std::array< unsigned long, 3 > &dims, Functor *functor, const double interactionLength, const std::array< double, 3 > &cellLength, DataLayoutOption dataLayout, bool useNewton3, bool spaciallyForward) |
| Constructor of the sliced traversal.
|
|
bool | isApplicable () const override |
| Checks if the traversal is applicable to the current state of the domain.
|
|
virtual void | initSliceThickness (unsigned long minSliceThickness) |
| Sets up the slice thicknesses to create as many slices as possible while respecting minSliceThickness.
|
|
void | initTraversal () override |
| Load Data Layouts and sets up slice thicknesses.
|
|
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.
|
|
|
bool | _dynamic = true |
| whether to use static or dynamic scheduling.
|
|
std::array< unsigned long, 3 > | _overlap |
| Overlap of interacting cells.
|
|
std::array< int, 3 > | _dimsPerLength |
| Store ids of dimensions ordered by number of cells per dimensions.
|
|
unsigned long | _overlapLongestAxis |
| Overlap of interacting cells along the longest axis.
|
|
std::vector< unsigned long > | _sliceThickness |
| The number of cells per slice in the dimension that was sliced.
|
|
bool | _spaciallyForward |
| Whether the base step only covers neigboring cells tha are spacially forward (for example c08).
|
|
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.
|
|
template<class
ParticleCell, class
Functor>
class autopas::SlicedLockBasedTraversal< ParticleCell, Functor >
This class provides the sliced traversal.
The traversal finds the longest dimension of the simulation domain and cuts the domain into multiple slices along this dimension. Slices are assigned to the threads in a round robin fashion. Each thread locks the cells on the boundary wall to the previous slice with one lock. This lock is lifted as soon the boundary wall is fully processed.
- Template Parameters
-
ParticleCell | The type of cells. |
Functor | The functor that defines the interaction of two particles. |