#include <cstddef>
#include <limits>
#include <optional>
#include <stdexcept>
#include <type_traits>
#include <utility>
#include <vector>
#include "peclet/core/common/types.hpp"
#include "peclet/core/decomp/block_decomposer.hpp"
Go to the source code of this file.
|
| template<int Dim> |
| Index | peclet::core::decomp::minBlockExtent (const BlockDecomposer< Dim > &d) |
| | Smallest block extent over every block and axis โ replicated, like the decomposition.
|
| |
| template<int Dim> |
| Index | peclet::core::decomp::largestBlockCells (const BlockDecomposer< Dim > &d) |
| | Cell count of the largest block โ replicated, like the decomposition.
|
| |
| template<int Dim, class Liftable > |
| std::optional< SiblingMergeChoice< Dim > > | peclet::core::decomp::shallowestLiftableMerge (const BlockDecomposer< Dim > &cur, Liftable &&liftable, int minExtent) |
| | The sibling-merge SEARCH on its own, with no trigger: the shallowest merge โ fewest merges, i.e.
|
| |
| template<int Dim, class Liftable > |
| std::optional< StageTarget< Dim > > | peclet::core::decomp::repartitionTarget (const BlockDecomposer< Dim > &cur, const std::type_identity_t< IVec< Dim > > &levelGrid, Liftable &&liftable, int minExtent, Index maxBlockCells) |
| | The Repartition candidate (design ยง11.2): a fresh proportional, unweighted, unaligned ORB of the level grid on the first np_L parent ranks, or std::nullopt when none lifts.
|
| |
| template<int Dim, class Liftable > |
| StageTarget< Dim > | peclet::core::decomp::chooseStageTarget (const BlockDecomposer< Dim > &cur, const std::type_identity_t< IVec< Dim > > &levelGrid, Liftable &&liftable, int minExtent, Index maxBlockCells=0) |
| | Choose the stage target of a level whose current decomposition is cur over the level grid levelGrid (which must equal cur.globalSize()).
|
| |