ls1-MarDyn
ls1-MarDyn molecular dynamics code
DomainDecomposition.h
1#ifndef DOMAINDECOMPOSITION_H_
2#define DOMAINDECOMPOSITION_H_
3
4#include "DomainDecompMPIBase.h"
5
6
21public:
25
26 // documentation see father class (DomainDecompBase.h)
28
39 void readXML(XMLfileUnits& xmlconfig) override;
40
41 // documentation see father class (DomainDecompBase.h)
42 double getBoundingBoxMin(int dimension, Domain* domain) override;
43
44 // documentation see father class (DomainDecompBase.h)
45 double getBoundingBoxMax(int dimension, Domain* domain) override;
46
47 void balanceAndExchange(double lastTraversalTime, bool forceRebalancing, ParticleContainer* moleculeContainer, Domain* domain) override;
48
49 void initCommunicationPartners(double cutoffRadius, Domain * domain,ParticleContainer* moleculeContainer);
50
51 //returns a vector of the neighbour ranks in x y and z direction (only neighbours connected by an area to local area)
52 std::vector<int> getNeighbourRanks() override;
53
54 //returns a vector of all 26 neighbour ranks in x y and z direction
55 std::vector<int> getNeighbourRanksFullShell() override;
56
57 //returns the ranks of the neighbours
58 std::vector<std::vector<std::vector<int>>> getAllRanks();
59
60
61 // documentation in base class
62 void prepareNonBlockingStage(bool forceRebalancing,
63 ParticleContainer* moleculeContainer, Domain* domain,
64 unsigned int stageNumber) override;
65
66 // documentation in base class
67 void finishNonBlockingStage(bool forceRebalancing,
68 ParticleContainer* moleculeContainer, Domain* domain,
69 unsigned int stageNumber) override;
70
71 // documentation in base class
72 bool queryBalanceAndExchangeNonBlocking(bool forceRebalancing, ParticleContainer* moleculeContainer, Domain* domain, double etime) override;
73
74 std::vector<CommunicationPartner> getNeighboursFromHaloRegion(Domain* domain, const HaloRegion& haloRegion, double cutoff) override;
75
76private:
77 void initMPIGridDims();
78
79 int _gridSize[DIMgeom];
80 int _coords[DIMgeom];
81};
82
83#endif /* DOMAINDECOMPOSITION_H_ */
Definition: DomainDecompMPIBase.h:30
Basic domain decomposition based parallelisation, dividing the domain into #procs equal sized cuboids...
Definition: DomainDecomposition.h:20
void finishNonBlockingStage(bool forceRebalancing, ParticleContainer *moleculeContainer, Domain *domain, unsigned int stageNumber) override
Definition: DomainDecomposition.cpp:68
void readXML(XMLfileUnits &xmlconfig) override
Read in XML configuration for DomainDecomposition and all its included objects.
Definition: DomainDecomposition.cpp:102
DomainDecomposition()
The constructor has to determine the own rank and the number of neighbours and sets up the topology.
Definition: DomainDecomposition.cpp:15
bool queryBalanceAndExchangeNonBlocking(bool forceRebalancing, ParticleContainer *moleculeContainer, Domain *domain, double etime) override
Checks whether the balance and exchange step can be performed non-blocking.
Definition: DomainDecomposition.cpp:81
std::vector< int > getNeighbourRanksFullShell() override
Definition: DomainDecomposition.cpp:144
void balanceAndExchange(double lastTraversalTime, bool forceRebalancing, ParticleContainer *moleculeContainer, Domain *domain) override
balance the load (and optimize communication) and exchange boundary particles
Definition: DomainDecomposition.cpp:86
double getBoundingBoxMin(int dimension, Domain *domain) override
get the minimum of the bounding box of this process' domain in the given dimension (0,...
Definition: DomainDecomposition.cpp:114
void prepareNonBlockingStage(bool forceRebalancing, ParticleContainer *moleculeContainer, Domain *domain, unsigned int stageNumber) override
Definition: DomainDecomposition.cpp:54
double getBoundingBoxMax(int dimension, Domain *domain) override
get the maximum of the bounding box of this process' domain in the given dimension (0,...
Definition: DomainDecomposition.cpp:118
This class is used to read in the phasespace and to handle macroscopic values.
Definition: Domain.h:47
This Interface is used to get access to particles and pairs of particles.
Definition: ParticleContainer.h:69
XML file with unit attributes abstraction.
Definition: xmlfileUnits.h:25
Definition: HaloRegion.h:10