SpECTRE  v2024.04.12
DgElementArray< Metavariables, PhaseDepActionList > Struct Template Reference

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 = tmpl::list< domain::Tags::Domain< volume_dim >, domain::Tags::ElementDistribution >
 
using simple_tags_from_options = Parallel::get_simple_tags_from_options< Parallel::get_initialization_actions_list< phase_dependent_action_list > >
 
using array_allocation_tags = tmpl::list<>
 

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
 

Detailed Description

template<class Metavariables, class PhaseDepActionList>
struct DgElementArray< Metavariables, PhaseDepActionList >

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_ts 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, Elements 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.


The documentation for this struct was generated from the following file: