ls1-MarDyn
ls1-MarDyn molecular dynamics code
CellPairTraversals.h
1/*
2 * CellPairTraversalWithDependencies.h
3 *
4 * Created on: 15 May 2017
5 * Author: tchipevn
6 */
7
8#ifndef SRC_PARTICLECONTAINER_LINKEDCELLTRAVERSALS_CELLPAIRTRAVERSALS_H_
9#define SRC_PARTICLECONTAINER_LINKEDCELLTRAVERSALS_CELLPAIRTRAVERSALS_H_
10
11#include <vector>
12#include <array>
13
14class CellProcessor;
15
17 virtual ~~CellPairTraversalData() {}
18};
19
20template <class CellTemplate>
22public:
24 std::vector<CellTemplate>& cells,
25 const std::array<unsigned long, 3>& dims): _cells(&cells), _dims(dims) {}
26
27 virtual ~~CellPairTraversals() {}
28
32 virtual void rebuild(std::vector<CellTemplate>& cells, const std::array<unsigned long, 3>& dims,
33 double cellLength[3], double cutoff, CellPairTraversalData* data) {
34 _cells = &cells;
35 _dims = dims;
36 };
37
38 virtual void traverseCellPairs(CellProcessor& cellProcessor) = 0;
39 virtual void traverseCellPairsOuter(CellProcessor& cellProcessor) = 0;
40 virtual void traverseCellPairsInner(CellProcessor& cellProcessor, unsigned stage, unsigned stageCount) = 0;
41
42 // @brief Should the domain decomposition exchange calculated forces at the boundaries,
43 // or does this traversal calculate all forces.
44 virtual bool requiresForceExchange() const {return false;}
45
46 // @brief Returns the maximum number of cells per cutoff this traversal supports.
47 virtual unsigned maxCellsInCutoff() const { return 1; }
48
49protected:
50 //TODO:
51 //void traverseCellPairsNoDep(CellProcessor& cellProcessor);
52 std::vector<CellTemplate> * _cells;
53 std::array<unsigned long, 3> _dims;
54};
55
56#endif /* SRC_PARTICLECONTAINER_LINKEDCELLTRAVERSALS_CELLPAIRTRAVERSALS_H_ */
Definition: CellPairTraversals.h:21
virtual void rebuild(std::vector< CellTemplate > &cells, const std::array< unsigned long, 3 > &dims, double cellLength[3], double cutoff, CellPairTraversalData *data)
Definition: CellPairTraversals.h:32
Definition: CellProcessor.h:29
Definition: CellPairTraversals.h:16