SpECTRE  v2026.04.01
evolution::dg::Initialization::ProjectMortars< Dim, LocalTimeStepping > Struct Template Reference

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

#include <Mortars.hpp>

Public Types

using mortar_data_history_tag = Tags::MortarDataHistory< Dim >
 
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 > >
 
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 (gsl::not_null<::dg::MortarMap< Dim, evolution::dg::MortarDataHolder< Dim > > * > mortar_data, gsl::not_null<::dg::MortarMap< Dim, Mesh< Dim - 1 > > * > mortar_mesh, gsl::not_null<::dg::MortarMap< Dim, MortarInfo< Dim > > * > mortar_infos, gsl::not_null<::dg::MortarMap< Dim, TimeStepId > * > mortar_next_temporal_id, gsl::not_null< DirectionMap< Dim, std::optional< magnitude_and_normal_type > > * > normal_covector_and_magnitude, 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)
 

Detailed Description

template<size_t Dim, bool LocalTimeStepping>
struct evolution::dg::Initialization::ProjectMortars< Dim, LocalTimeStepping >

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>>

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: