SpECTRE
v2025.03.17
|
A Parallel::protocols::ArrayElementsAllocator
that creates array elements to cover the initial computational domain.
More...
#include <DgElementArray.hpp>
Public Types | |
template<typename ParallelComponent > | |
using | array_allocation_tags = implementation defined |
Static Public Member Functions | |
template<typename ParallelComponent , typename Metavariables , typename... InitializationTags> | |
static void | apply (Parallel::CProxy_GlobalCache< Metavariables > &global_cache, const tuples::TaggedTuple< InitializationTags... > &initialization_items, const tuples::tagged_tuple_from_typelist< typename ParallelComponent::array_allocation_tags > &={}, const std::unordered_set< size_t > &procs_to_ignore={}) |
A Parallel::protocols::ArrayElementsAllocator
that creates array elements to cover the initial computational domain.
An element is created for every element ID in every block, determined by the initial_element_ids
function and the option-created domain::Tags::Domain
and domain::Tags::InitialRefinementLevels
. The elements are distributed on processors using the domain::BlockZCurveProcDistribution
. In both cases, an unordered set of size_t
s can be passed to the allocate_array
function which represents physical processors to avoid placing elements on. Element
s are distributed to processors according to their computational costs determined by the number of grid points.