Namespaces | Classes | Typedefs | Functions
Initialization

Actions and metafunctions used for initialization of parallel components. More...

Namespaces

 Initialization::Tags
 Tags used during initialization of parallel components.
 
 Initialization::Actions
 Available actions to be used in the initialization.
 

Classes

struct  Initialization::Actions::ConservativeSystem
 Allocate and set variables needed for evolution of conservative systems. More...
 
struct  Initialization::Actions::DiscontinuousGalerkin< Metavariables >
 Initialize items related to the discontinuous Galerkin method. More...
 
struct  Initialization::Actions::Evolution< Metavariables >
 Initialize items related to time-evolution of the system. More...
 
struct  Initialization::Actions::Minmod< Dim >
 Allocate items for minmod limiter. More...
 
struct  Initialization::Actions::NonconservativeSystem
 Allocate and set variables needed for evolution of nonconservative systems. More...
 
struct  dg::Actions::InitializeDomain< Dim >
 Initialize items related to the basic structure of the element. More...
 
struct  dg::Actions::InitializeInterfaces< System, SliceTagsToFace, SliceTagsToExterior, FaceComputeTags, ExteriorComputeTags >
 Initialize items related to the interfaces between Elements and on external boundaries. More...
 
struct  dg::Actions::InitializeMortars< Metavariables, AddFluxBoundaryConditionMortars >
 Initialize mortars between elements for exchanging fluxes. More...
 
struct  Initialization::Actions::RemoveOptionsAndTerminatePhase
 

Typedefs

template<typename... Tags>
using dg::Initialization::slice_tags_to_face = tmpl::list< Tags... >
 Tags that are to be sliced to the faces of the element
 
template<typename... Tags>
using dg::Initialization::slice_tags_to_exterior = tmpl::list< Tags... >
 Tags that are to be sliced to the exterior side of the faces of the element
 
template<typename... Tags>
using dg::Initialization::face_compute_tags = tmpl::list< Tags... >
 Compute tags on the faces of the element.
 
template<typename... Tags>
using dg::Initialization::exterior_compute_tags = tmpl::list< Tags... >
 Compute tags on the exterior side of the faces of the element.
 

Functions

template<size_t VolumeDim, typename TargetFrame >
Element< VolumeDim > domain::Initialization::create_initial_element (const ElementId< VolumeDim > &element_id, const Block< VolumeDim, TargetFrame > &block) noexcept
 Creates an initial element of a Block. More...
 
template<size_t Dim>
Mesh< Dim > domain::Initialization::create_initial_mesh (const std::vector< std::array< size_t, Dim >> &initial_extents, const ElementId< Dim > &element_id, const OrientationMap< Dim > &orientation={}) noexcept
 Construct the initial Mesh of an Element. More...
 
template<typename AddingAction , typename SimpleTagsList , typename ComputeTagsList = tmpl::list<>, MergePolicy Policy = MergePolicy::Error, typename... SimpleTags, typename DbTagsList , typename... Args>
auto Initialization::merge_into_databox (db::DataBox< DbTagsList > &&box, Args &&... args) noexcept
 Add tags that are not yet in the DataBox. More...
 

Detailed Description

Actions and metafunctions used for initialization of parallel components.

Function Documentation

◆ create_initial_element()

template<size_t VolumeDim, typename TargetFrame >
Element< VolumeDim > domain::Initialization::create_initial_element ( const ElementId< VolumeDim > &  element_id,
const Block< VolumeDim, TargetFrame > &  block 
)
noexcept

Creates an initial element of a Block.

Details

This function creates an element at the refinement level and position specified by the element_id within the block. It assumes that all of its neighboring elements are at the same refinement level. Thus, the created element's neighbors has one neighbor per direction (or zero on an external boundary), with each neighbor at the same refinement level as the element.

◆ create_initial_mesh()

template<size_t Dim>
Mesh< Dim > domain::Initialization::create_initial_mesh ( const std::vector< std::array< size_t, Dim >> &  initial_extents,
const ElementId< Dim > &  element_id,
const OrientationMap< Dim > &  orientation = {} 
)
noexcept

Construct the initial Mesh of an Element.

Details

When constructing the Mesh of an Element, pass its id, and use the default argument for orientation. When constructing the mesh of a neighboring Element (when constructing mortars), pass the id and orientation of the neighbor.

Parameters
initial_extentsthe initial extents of each Block in the Domain
element_idid of an Element or its neighbor
orientationOrientationMap of (neighboring) element_id

◆ merge_into_databox()

template<typename AddingAction , typename SimpleTagsList , typename ComputeTagsList = tmpl::list<>, MergePolicy Policy = MergePolicy::Error, typename... SimpleTags, typename DbTagsList , typename... Args>
auto Initialization::merge_into_databox ( db::DataBox< DbTagsList > &&  box,
Args &&...  args 
)
noexcept

Add tags that are not yet in the DataBox.

How duplicate tags are handled depends on the MergePolicy passed. The default merge policy is to error if the simple tag being added does not have an equivalence operator and is being added again. MergePolicy::IgnoreIncomparable means that nothing is done if the simple tag being added does not have an equivalence operator. Tags that have an equivalence operator are check that the value being added and that is already in the DataBox are the same. If they aren't, an error occurs. Finally, MergePolicy::Overwrite means the current simple tag in the DataBox is overwritten with the new value passed in.

Compute tags that are not in the DataBox are added, ones that are in the DataBox already are ignored.