10 _localRankWeight(0.0),
12 _minimumOfMaximumOfRankWeights(0.0),
14 _globalWeightOut(0.0),
15 _minimumOfMaximumOfRankWeightsIn(0.0),
16 _minimumOfMaximumOfRankWeightsOut(0.0) {
26 std::ostringstream msg;
29 <<
",local-rank-weight=" << _localRankWeight
30 <<
",global-weight=" << _globalWeight
31 <<
",lightest-rank=" << _lightestRank._rank
32 <<
",lightest-ranks-weight=" << _lightestRank._weight
33 <<
",min-of-max-of-rank-weights=" << _minimumOfMaximumOfRankWeights
42 for (
auto p: idsOfLocalSpacetrees) {
43 localCost += getCostOfLocalTree(p);
51 if (_globalWeightRequest !=
nullptr ) {
52 MPI_Wait( _globalWeightRequest, MPI_STATUS_IGNORE );
53 MPI_Wait( _lightestRankRequest, MPI_STATUS_IGNORE );
54 MPI_Wait( _minimumOfMaximumOfRankWeightsRequest, MPI_STATUS_IGNORE );
56 delete _globalWeightRequest;
57 delete _lightestRankRequest;
58 delete _minimumOfMaximumOfRankWeightsRequest;
60 _globalWeightRequest =
nullptr;
61 _lightestRankRequest =
nullptr;
62 _minimumOfMaximumOfRankWeightsRequest =
nullptr;
70 _globalWeight = _localRankWeight;
71 _lightestRank._rank = 0;
72 _lightestRank._weight = getCostOfLocalRank();
73 _minimumOfMaximumOfRankWeights = getCostOfLocalRank();
77 waitForGlobalDataExchange();
79 _globalWeight = _globalWeightIn;
81 _lightestRank._weight = _lightestRankIn._weight;
82 _minimumOfMaximumOfRankWeights = _minimumOfMaximumOfRankWeightsIn;
84 if ( _globalWeight < _localRankWeight ) {
87 "local number of cells (" << _localRankWeight <<
") is bigger than global cell count (" << _globalWeight <<
88 "). This usually happens if a forking tree has some pending refinement events and cannot refine anymore, as it has already spawned cells. Statistics might have inconsistent view of world"
90 _globalWeight = _localRankWeight;
94 _globalWeightRequest =
new MPI_Request();
95 _lightestRankRequest =
new MPI_Request();
96 _minimumOfMaximumOfRankWeightsRequest =
new MPI_Request();
98 _globalWeightOut = _localRankWeight;
99 _lightestRankOut._weight = _localRankWeight;
121 &_minimumOfMaximumOfRankWeightsOut,
122 &_minimumOfMaximumOfRankWeightsIn,
127 _minimumOfMaximumOfRankWeightsRequest
134 return _globalWeight;
141 return _lightestRank._rank;
146 return _minimumOfMaximumOfRankWeights;
#define assertion1(expr, param)
#define logInfo(methodName, logMacroMessageStream)
Wrapper macro around tarch::tarch::logging::Log to improve logging.
static SpacetreeSet & getInstance()
std::set< int > getLocalSpacetrees() const
int getNumberOfRanks() const
static Rank & getInstance()
This operation returns the singleton instance.
int getRank() const
Return rank of this node.
std::string toString(Filter filter)