SpECTRE
v2024.12.16
|
The parallel component responsible for managing the DG elements that compose the computational domain. More...
#include <DgElementArray.hpp>
Public Types | |
using | chare_type = Parallel::Algorithms::Array |
using | metavariables = Metavariables |
using | phase_dependent_action_list = PhaseDepActionList |
using | array_index = ElementId< volume_dim > |
using | const_global_cache_tags = implementation defined |
using | simple_tags_from_options = Parallel::get_simple_tags_from_options< Parallel::get_initialization_actions_list< phase_dependent_action_list > > |
using | array_allocation_tags = implementation defined |
Static Public Member Functions | |
static void | allocate_array (Parallel::CProxy_GlobalCache< Metavariables > &global_cache, const tuples::tagged_tuple_from_typelist< simple_tags_from_options > &initialization_items, const tuples::tagged_tuple_from_typelist< array_allocation_tags > &array_allocation_items={}, const std::unordered_set< size_t > &procs_to_ignore={}) |
static void | execute_next_phase (const Parallel::Phase next_phase, Parallel::CProxy_GlobalCache< Metavariables > &global_cache) |
Static Public Attributes | |
static constexpr size_t | volume_dim = Metavariables::volume_dim |
The parallel component responsible for managing the DG elements that compose the computational domain.
This parallel component will perform the actions specified by the PhaseDepActionList
.
The element assignment to processors is performed by domain::BlockZCurveProcDistribution
(using a Morton space-filling curve), unless static constexpr bool use_z_order_distribution = false;
is specified in the Metavariables
, in which case elements are assigned to processors via round-robin assignment. 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. If the space-filling curve is used, then if static constexpr bool local_time_stepping = true;
is specified in the Metavariables
, Element
s will be distributed according to their computational costs determined by the number of grid points and minimum grid spacing of that Element
(see domain::get_num_points_and_grid_spacing_cost()
), else the computational cost is determined only by the number of grid points in the Element
.