Actions and metafunctions used for initialization of parallel components.
More...
|
| template<size_t VolumeDim> |
| Element< VolumeDim > | domain::Initialization::create_initial_element (const ElementId< VolumeDim > &element_id, const Block< VolumeDim > &block, const std::vector< std::array< size_t, VolumeDim > > &initial_refinement_levels) 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, Spectral::Quadrature quadrature, 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...
|
| |
Actions and metafunctions used for initialization of parallel components.
◆ create_initial_element()
template<size_t VolumeDim>
| Element< VolumeDim > domain::Initialization::create_initial_element |
( |
const ElementId< VolumeDim > & |
element_id, |
|
|
const Block< VolumeDim > & |
block, |
|
|
const std::vector< std::array< size_t, VolumeDim > > & |
initial_refinement_levels |
|
) |
| |
|
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 elements in a given block have the same refinement level, given in initial_refinement_levels.
◆ create_initial_mesh()
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_extents | the initial extents of each Block in the Domain |
| element_id | id of an Element or its neighbor |
| quadrature | the quadrature rule/grid point distribution |
| orientation | OrientationMap 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.