chombo-discharge
Loading...
Searching...
No Matches
CD_ParallelOps.H
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2021-2026 SINTEF Energy Research
3 *
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 */
6
13#ifndef CD_PARALLELOPS_H
14#define CD_PARALLELOPS_H
15
16// Chombo includes
17#include <RealVect.H>
18
19// Our includes
20#include <CD_NamespaceHeader.H>
21
25namespace ParallelOps {
26
30inline void
31barrier() noexcept;
32
41inline std::pair<int, int>
42partition(int a_N) noexcept;
43
49inline Real
50min(const Real& a_input) noexcept;
51
57inline int
58min(const int& a_input) noexcept;
59
65inline long long int
66min(const long long int& a_input) noexcept;
67
76inline std::pair<Real, RealVect>
77min(const Real& a_val, const RealVect& a_pos) noexcept;
78
84inline Real
85max(const Real& a_input) noexcept;
86
92inline int
93max(const int& a_input) noexcept;
94
100inline long long
101max(const long long& a_input) noexcept;
102
111inline std::pair<Real, RealVect>
112max(const Real& a_val, const RealVect& a_pos) noexcept;
113
119inline std::pair<Real, int>
120maxRank(const Real& a_val) noexcept;
121
127inline std::pair<Real, int>
128minRank(const Real& a_val) noexcept;
129
135inline Real
136average(const Real& a_val) noexcept;
137
143inline Real
144sum(const Real& a_value) noexcept;
145
151inline int
152sum(const int& a_value) noexcept;
153
159inline long
160sum(const long& a_value) noexcept;
161
167inline long long
168sum(const long long& a_value) noexcept;
169
175inline unsigned long long
176sum(const unsigned long long& a_value) noexcept;
177
183inline Real
184standardDeviation(const Real& a_value) noexcept;
185
192inline void
193sum(Vector<Real>& a_data) noexcept;
194
201inline void
202sum(Vector<int>& a_data) noexcept;
203
210inline void
211sum(Vector<long int>& a_data) noexcept;
212
219inline void
220sum(Vector<long long int>& a_data) noexcept;
221
227inline Vector<int>
228gather(const int& a_localValue) noexcept;
229
235inline Vector<Real>
236gather(const Real& a_localValue) noexcept;
237
243inline Vector<long long>
244gather(const long long& a_localValue) noexcept;
245} // namespace ParallelOps
246
247#include <CD_NamespaceFooter.H>
248
249#include <CD_ParallelOpsImplem.H>
250
251#endif
Implementation of CD_ParallelOps.H.
For putting a bunch of often-used MPI reductions in one place.
Definition CD_ParallelOps.H:25
Real max(const Real &a_input) noexcept
Get the maximum of the input, reduced over MPI ranks (in the Chombo communicator)
Definition CD_ParallelOpsImplem.H:177
std::pair< Real, int > maxRank(const Real &a_val) noexcept
Get the maximum value and the rank having the maximum value.
Definition CD_ParallelOpsImplem.H:294
Real average(const Real &a_val) noexcept
Compute the average (across MPI ranks) of the input value.
Definition CD_ParallelOpsImplem.H:501
Real standardDeviation(const Real &a_value) noexcept
Compute the standard deviation of the input value.
Definition CD_ParallelOpsImplem.H:513
Vector< int > gather(const int &a_localValue) noexcept
Gather local values – return a vector of local values.
Definition CD_ParallelOpsImplem.H:540
std::pair< Real, int > minRank(const Real &a_val) noexcept
Get the minimum value and the rank having the minimum value.
Definition CD_ParallelOpsImplem.H:324
Real min(const Real &a_input) noexcept
Get the minimum of the input, reduced over MPI ranks (in the Chombo communicator)
Definition CD_ParallelOpsImplem.H:59
Real sum(const Real &a_value) noexcept
Compute the sum across all MPI ranks.
Definition CD_ParallelOpsImplem.H:354
std::pair< int, int > partition(int a_N) noexcept
Partition the input number such that each MPI rank gets an equal chunk. We assume that N is the lengt...
Definition CD_ParallelOpsImplem.H:36
void barrier() noexcept
MPI barrier.
Definition CD_ParallelOpsImplem.H:26