chombo-discharge
Loading...
Searching...
No Matches
CD_LoadBalancing.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_LOADBALANCING_H
14#define CD_LOADBALANCING_H
15
16// Std includes
17#include <cstdint>
18
19// Our includes
21#include <CD_BoxSorting.H>
22#include <CD_Loads.H>
23#include <CD_NamespaceHeader.H>
24
29{
30public:
38 template <class T>
39 static void
41
51 template <class T>
52 static void
54
61 template <typename T>
62 static void
64
71 template <typename T>
72 static void
74
80 static void
82
87 static void
89
94 static void
96
101 static void
103
108 static void
110
116 static void
118
119protected:
126 template <class T>
129
136 template <class T>
137 static void
139
146 template <class T>
147 static void
149
156 template <class T>
157 static void
159
166 template <class T, int DIM>
167 static void
171
177 template <int DIM>
178 static uint64_t
180
186 template <int DIM>
187 static uint64_t
189};
190
191#include <CD_NamespaceFooter.H>
192
194
195#endif
Declaration of an enum for identifying various ways of sorting grid patches.
BoxSorting
Enum for sorting boxes.
Definition CD_BoxSorting.H:22
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:29
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:361
static void gatherLoads(Vector< Real > &a_loads)
Gather computational loads.
Definition CD_LoadBalancing.cpp:111
static void gatherBoxes(Vector< Box > &a_boxes)
Gather boxes.
Definition CD_LoadBalancing.cpp:32
static void gatherBoxesAndLoads(Vector< Box > &a_boxes, Vector< int > &a_loads)
Gather boxes and loads.
Definition CD_LoadBalancing.cpp:271
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:36
static uint64_t hilbertIndex(const std::array< uint32_t, DIM > &a_coords)
Helper function for computing a Hilbert index.
Definition CD_LoadBalancingImplem.H:388
static void standardSort(Vector< Box > &a_boxes, Vector< T > &a_loads)
Standard box sorting, calls C++ std::sort.
Definition CD_LoadBalancingImplem.H:275
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:226
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:210
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:313
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:196
static void shuffleSort(Vector< Box > &a_boxes, Vector< T > &a_loads)
Randomly shuffles boxes and loads.
Definition CD_LoadBalancingImplem.H:291
Class for holding computational loads.
Definition CD_Loads.H:31
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:38
TracerParticleSolver()
Default constructor.
Definition CD_TracerParticleSolverImplem.H:26