12#ifndef CD_LoadBalancing_H
13#define CD_LoadBalancing_H
22#include <CD_NamespaceHeader.H>
170 template <
class T,
int DIM>
192#include <CD_NamespaceFooter.H>
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.
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