SpECTRE  v2025.08.19
evolution::dg::Initialization::ProjectMortars< Metavariables > Struct Template Reference

Initialize/update items related to mortars after an AMR change. More...

#include <Mortars.hpp>

Public Types

using dt_variables_tag = typename db::add_tag_prefix< ::Tags::dt, typename Metavariables::system::variables_tag >
 
using mortar_data_history_tag = Tags::MortarDataHistory< dim, typename dt_variables_tag::type >
 
using mortar_data_history_type = typename mortar_data_history_tag::type
 
using return_tags = tmpl::list< Tags::MortarData< dim >, Tags::MortarMesh< dim >, Tags::MortarInfo< dim >, Tags::MortarNextTemporalId< dim >, evolution::dg::Tags::NormalCovectorAndMagnitude< dim >, Tags::MortarDataHistory< dim, typename dt_variables_tag::type > >
 
using argument_tags = tmpl::list< domain::Tags::Domain< dim >, domain::Tags::Mesh< dim >, domain::Tags::Element< dim >, domain::Tags::NeighborMesh< dim >, ::Tags::TimeStepId >
 

Static Public Member Functions

static void apply (const gsl::not_null< ::dg::MortarMap< dim, evolution::dg::MortarDataHolder< dim > > * > mortar_data, const gsl::not_null<::dg::MortarMap< dim, Mesh< dim - 1 > > * > mortar_mesh, const gsl::not_null<::dg::MortarMap< dim, MortarInfo< dim > > * > mortar_infos, const gsl::not_null<::dg::MortarMap< dim, TimeStepId > * > mortar_next_temporal_id, const gsl::not_null< DirectionMap< dim, std::optional< magnitude_and_normal_type > > * > normal_covector_and_magnitude, const gsl::not_null< mortar_data_history_type * > mortar_data_history, const Domain< dim > &domain, const Mesh< dim > &new_mesh, const Element< dim > &new_element, const ::dg::MortarMap< dim, Mesh< dim > > &neighbor_mesh, const TimeStepId &current_temporal_id, const std::pair< Mesh< dim >, Element< dim > > &old_mesh_and_element)
 
template<typename... ParentTags>
static void apply (const gsl::not_null< ::dg::MortarMap< dim, evolution::dg::MortarDataHolder< dim > > * > mortar_data, const gsl::not_null<::dg::MortarMap< dim, Mesh< dim - 1 > > * > mortar_mesh, const gsl::not_null<::dg::MortarMap< dim, MortarInfo< dim > > * > mortar_infos, const gsl::not_null<::dg::MortarMap< dim, TimeStepId > * > mortar_next_temporal_id, const gsl::not_null< DirectionMap< dim, std::optional< magnitude_and_normal_type > > * > normal_covector_and_magnitude, const gsl::not_null< mortar_data_history_type * > mortar_data_history, const Domain< dim > &domain, const Mesh< dim > &new_mesh, const Element< dim > &new_element, const ::dg::MortarMap< dim, Mesh< dim > > &neighbor_mesh, const TimeStepId &, const tuples::TaggedTuple< ParentTags... > &parent_items)
 
template<typename... ChildTags>
static void apply (const gsl::not_null< ::dg::MortarMap< dim, evolution::dg::MortarDataHolder< dim > > * > mortar_data, const gsl::not_null<::dg::MortarMap< dim, Mesh< dim - 1 > > * > mortar_mesh, const gsl::not_null<::dg::MortarMap< dim, MortarInfo< dim > > * > mortar_infos, const gsl::not_null<::dg::MortarMap< dim, TimeStepId > * > mortar_next_temporal_id, const gsl::not_null< DirectionMap< dim, std::optional< magnitude_and_normal_type > > * > normal_covector_and_magnitude, const gsl::not_null< mortar_data_history_type * > mortar_data_history, const Domain< dim > &domain, const Mesh< dim > &new_mesh, const Element< dim > &new_element, const ::dg::MortarMap< dim, Mesh< dim > > &neighbor_mesh, const TimeStepId &, const std::unordered_map< ElementId< dim >, tuples::TaggedTuple< ChildTags... > > &children_items)
 

Static Public Attributes

static constexpr size_t dim = Metavariables::volume_dim
 

Detailed Description

template<typename Metavariables>
struct evolution::dg::Initialization::ProjectMortars< Metavariables >

Initialize/update items related to mortars after an AMR change.

Mutates:

  • Tags::MortarData<dim>
  • Tags::MortarMesh<dim>
  • Tags::MortarInfo<dim>
  • Tags::MortarNextTemporalId<dim>
  • evolution::dg::Tags::NormalCovectorAndMagnitude<dim>
  • Tags::MortarDataHistory<dim, typename dt_variables_tag::type>>

For p-refined interfaces:

  • Regenerates MortarData and MortarInfo (should have no effect)
  • Sets the NormalCovectorAndMagnitude to std::nullopt if the face mesh changed
  • Projects the local geometric data (but not the data on the mortar-mesh) in the MortarDataHistory, if present
  • Does nothing to MortarMesh and MortarNextTemporalId

For h-refined interfaces:

  • Regenerates MortarData and MortarInfo
  • Sets the NormalCovectorAndMagnitude to std::nullopt
  • Calculates MortarMesh
  • Sets MortarNextTemporalId to the current temporal id
  • For local time-stepping:
    • Removes MortarDataHistory data corresponding to split or joined elements
    • Projects MortarDataHistory data corresponding to non-h-refined elements onto refined mortars (both geometric and mortar-mesh data)
    • Creates empty histories for new mortars between two h-refined elements

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