AutoPas  3.0.0
Loading...
Searching...
No Matches
C04BasedTraversal.h
Go to the documentation of this file.
1
7#pragma once
8
12
13namespace autopas {
14
25template <class ParticleCell, class Functor, int collapseDepth = 3>
26class C04BasedTraversal : public ColorBasedTraversal<ParticleCell, Functor, collapseDepth> {
27 public:
38 explicit C04BasedTraversal(const std::array<unsigned long, 3> &dims, Functor *functor, const double interactionLength,
39 const std::array<double, 3> &cellLength, DataLayoutOption dataLayout, bool useNewton3)
40 : ColorBasedTraversal<ParticleCell, Functor, collapseDepth>(dims, functor, interactionLength, cellLength,
41 dataLayout, useNewton3) {}
42
43 protected:
48 template <typename LoopBody>
49 inline void c04Traversal(LoopBody &&loopBody);
50};
51
52template <class ParticleCell, class Functor, int collapseDepth>
53template <typename LoopBody>
55 using namespace autopas::utils::ArrayMath::literals;
56
57 const auto end = this->_cellsPerDimension - this->_overlap;
58 auto stride = this->_overlap + 1ul;
59 stride[0] = 1;
60 this->colorTraversal(std::forward<LoopBody>(loopBody), end, stride);
61}
62} // namespace autopas
This class provides the base for traversals using the c04 base step.
Definition: C04BasedTraversal.h:26
C04BasedTraversal(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 c04 traversal.
Definition: C04BasedTraversal.h:38
void c04Traversal(LoopBody &&loopBody)
The main traversal of the C04Traversal.
Definition: C04BasedTraversal.h:54
This class provides the base for traversals using base steps based on cell coloring.
Definition: ColorBasedTraversal.h:27
Functor base class.
Definition: Functor.h:40
Class for Cells of Particles.
Definition: ParticleCell.h:51
This is the main namespace of AutoPas.
Definition: AutoPasDecl.h:32