chombo-discharge
Loading...
Searching...
No Matches
CD_LoadBalancing.H
Go to the documentation of this file.
1/* chombo-discharge
2 * Copyright © 2021 SINTEF Energy Research.
3 * Please refer to Copyright.txt and LICENSE in the chombo-discharge root directory.
4 */
5
12#ifndef CD_LoadBalancing_H
13#define CD_LoadBalancing_H
14
15// Std includes
16#include <cstdint>
17
18// Our includes
20#include <CD_BoxSorting.H>
21#include <CD_Loads.H>
22#include <CD_NamespaceHeader.H>
23
28{
29public:
37 template <class T>
38 static void
40
50 template <class T>
51 static void
53
61 template <typename T>
62 static void
64
72 template <typename T>
73 static void
75
80 static void
82
88 static void
90
96 static void
98
104 static void
106
112 static void
114
121 static void
123
124protected:
130 template <class T>
133
140 template <class T>
141 static void
143
150 template <class T>
151 static void
153
160 template <class T>
161 static void
163
170 template <class T, int DIM>
171 static void
175
180 template <int DIM>
181 static uint64_t
183
187 template <int DIM>
188 static uint64_t
190};
191
192#include <CD_NamespaceFooter.H>
193
195
196#endif
Declaration of an enum for identifying various ways of sorting grid patches.
BoxSorting
Enum for sorting boxes.
Definition CD_BoxSorting.H:21
Declaration of a simple class for holding computational loads.
Multi-fluid index space.
Static class which contains various load balancing routines.
Definition CD_LoadBalancing.H:28
static uint64_t mortonIndex(const std::array< uint32_t, DIM > a_coords) noexcept
Helper function for computing a Morton code using 21 bits per direction.
Definition CD_LoadBalancingImplem.H:360
static void gatherLoads(Vector< Real > &a_loads)
Gather computational loads.
Definition CD_LoadBalancing.cpp:109
static void gatherBoxes(Vector< Box > &a_boxes)
Gather boxes.
Definition CD_LoadBalancing.cpp:31
static void gatherBoxesAndLoads(Vector< Box > &a_boxes, Vector< int > &a_loads)
Gather boxes and loads.
Definition CD_LoadBalancing.cpp:269
static void makeBalance(Vector< int > &a_ranks, const Vector< T > &a_loads, const Vector< Box > &a_boxes)
Load balancing, assigning ranks to boxes.
Definition CD_LoadBalancingImplem.H:35
static uint64_t hilbertIndex(const std::array< uint32_t, DIM > &a_coords)
Helper function for computing a Hilbert index.
Definition CD_LoadBalancingImplem.H:387
static void standardSort(Vector< Box > &a_boxes, Vector< T > &a_loads)
Standard box sorting, calls C++ std::sort.
Definition CD_LoadBalancingImplem.H:274
static void sort(Vector< Vector< Box > > &a_boxes, Vector< Vector< T > > &a_loads, const BoxSorting a_whichSorting)
Sorts boxes and loads over a hierarchy according to some sorting criterion.
Definition CD_LoadBalancingImplem.H:225
static void unpackPairs(Vector< Box > &a_boxes, Vector< T > &a_loads, const std::vector< std::pair< Box, T > > &a_pairs)
Splits vector pair into separate boxes and loads.
Definition CD_LoadBalancingImplem.H:209
static void sortSFC(Vector< Box > &a_boxes, Vector< T > &a_loads, const std::function< uint64_t(const std::array< uint32_t, DIM >)> &a_sfcEncoder) noexcept
Generic SFC sorting function.
Definition CD_LoadBalancingImplem.H:312
static std::vector< std::pair< Box, T > > packPairs(const Vector< Box > &a_boxes, const Vector< T > &a_loads)
Utility function which packs boxes and loads into a vector of pairs.
Definition CD_LoadBalancingImplem.H:195
static void shuffleSort(Vector< Box > &a_boxes, Vector< T > &a_loads)
Randomly shuffles boxes and loads.
Definition CD_LoadBalancingImplem.H:290
Class for holding computational loads.
Definition CD_Loads.H:30
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:37
TracerParticleSolver()
Default constructor.
Definition CD_TracerParticleSolverImplem.H:25