SpECTRE  v2026.04.01
Loading...
Searching...
No Matches
elliptic::dg::InitializeFacesAndMortars< Dim, InvMetricTag, BackgroundTag > Struct Template Reference

Initialize the geometry on faces and mortars for the elliptic DG operator. More...

#include <Initialization.hpp>

Public Types

using return_tags
using argument_tags
using volume_tags

Static Public Member Functions

template<typename... AmrData>
static void apply (const gsl::not_null< DirectionMap< Dim, Direction< Dim > > * > face_directions, const gsl::not_null< DirectionMap< Dim, tnsr::I< DataVector, Dim > > * > faces_inertial_coords, const gsl::not_null< DirectionMap< Dim, tnsr::i< DataVector, Dim > > * > face_normals, const gsl::not_null< DirectionMap< Dim, tnsr::I< DataVector, Dim > > * > face_normal_vectors, const gsl::not_null< DirectionMap< Dim, Scalar< DataVector > > * > face_normal_magnitudes, const gsl::not_null< DirectionMap< Dim, Scalar< DataVector > > * > face_jacobians, const gsl::not_null< DirectionMap< Dim, InverseJacobian< DataVector, Dim, Frame::ElementLogical, Frame::Inertial > > * > face_jacobian_times_inv_jacobian, const gsl::not_null< DirectionMap< Dim, tnsr::ij< DataVector, Dim > > * > deriv_unnormalized_face_normals, const gsl::not_null<::dg::MortarMap< Dim, Mesh< Dim - 1 > > * > mortar_meshes, const gsl::not_null<::dg::MortarMap< Dim, ::dg::MortarSize< Dim - 1 > > * > mortar_sizes, const gsl::not_null<::dg::MortarMap< Dim, tnsr::I< DataVector, Dim > > * > all_mortar_inertial_coords, const gsl::not_null<::dg::MortarMap< Dim, Scalar< DataVector > > * > mortar_jacobians, const gsl::not_null<::dg::MortarMap< Dim, Scalar< DataVector > > * > penalty_factors, const Mesh< Dim > &mesh, const Element< Dim > &element, const DirectionalIdMap< Dim, Mesh< Dim > > &neighbor_meshes, const ElementMap< Dim, Frame::Inertial > &element_map, const InverseJacobian< DataVector, Dim, Frame::ElementLogical, Frame::Inertial > &inv_jacobian, const Domain< Dim > &domain, const domain::FunctionsOfTimeMap &functions_of_time, const double penalty_parameter, const AmrData &... amr_data)
template<typename Background, typename Metavariables, typename... AmrData>
static void apply (const gsl::not_null< DirectionMap< Dim, Direction< Dim > > * > face_directions, const gsl::not_null< DirectionMap< Dim, tnsr::I< DataVector, Dim > > * > faces_inertial_coords, const gsl::not_null< DirectionMap< Dim, tnsr::i< DataVector, Dim > > * > face_normals, const gsl::not_null< DirectionMap< Dim, tnsr::I< DataVector, Dim > > * > face_normal_vectors, const gsl::not_null< DirectionMap< Dim, Scalar< DataVector > > * > face_normal_magnitudes, const gsl::not_null< DirectionMap< Dim, Scalar< DataVector > > * > face_jacobians, const gsl::not_null< DirectionMap< Dim, InverseJacobian< DataVector, Dim, Frame::ElementLogical, Frame::Inertial > > * > face_jacobian_times_inv_jacobian, const gsl::not_null< DirectionMap< Dim, tnsr::ij< DataVector, Dim > > * > deriv_unnormalized_face_normals, const gsl::not_null<::dg::MortarMap< Dim, Mesh< Dim - 1 > > * > mortar_meshes, const gsl::not_null<::dg::MortarMap< Dim, ::dg::MortarSize< Dim - 1 > > * > mortar_sizes, const gsl::not_null<::dg::MortarMap< Dim, tnsr::I< DataVector, Dim > > * > all_mortar_inertial_coords, const gsl::not_null<::dg::MortarMap< Dim, Scalar< DataVector > > * > mortar_jacobians, const gsl::not_null<::dg::MortarMap< Dim, Scalar< DataVector > > * > penalty_factors, const Mesh< Dim > &mesh, const Element< Dim > &element, const DirectionalIdMap< Dim, Mesh< Dim > > &neighbor_meshes, const ElementMap< Dim, Frame::Inertial > &element_map, const InverseJacobian< DataVector, Dim, Frame::ElementLogical, Frame::Inertial > &inv_jacobian, const Domain< Dim > &domain, const domain::FunctionsOfTimeMap &functions_of_time, const double penalty_parameter, const Background &background, const Metavariables &, const AmrData &...)

Detailed Description

template<size_t Dim, typename InvMetricTag, typename BackgroundTag>
struct elliptic::dg::InitializeFacesAndMortars< Dim, InvMetricTag, BackgroundTag >

Initialize the geometry on faces and mortars for the elliptic DG operator.

To normalize face normals this function needs the inverse background metric. Pass the tag representing the inverse background metric to the InvMetricTag template parameter, and the tag representing the analytic background from which it can be retrieved to the BackgroundTag template parameter. Set InvMetricTag and BackgroundTag to void to normalize face normals with the Euclidean magnitude.

Mortar Jacobians are added only on nonconforming internal element boundaries, i.e., when Spectral::needs_projection() is true.

The Tags::deriv<domain::Tags::UnnormalizedFaceNormal<Dim>> is only added on external boundaries, for use by boundary conditions.

Member Typedef Documentation

◆ argument_tags

template<size_t Dim, typename InvMetricTag, typename BackgroundTag>
using elliptic::dg::InitializeFacesAndMortars< Dim, InvMetricTag, BackgroundTag >::argument_tags
Initial value:
tmpl::append<
tmpl::list<domain::Tags::Mesh<Dim>, domain::Tags::Element<Dim>,
tmpl::conditional_t<
tmpl::list<BackgroundTag, Parallel::Tags::Metavariables>>>
T is_same_v
Definition IndexType.hpp:43
Definition IndexType.hpp:46
The Domain.
Definition Domain.hpp:20
The coordinate map from the ElementLogical frame to the TargetFrame.
Definition Tags.hpp:70
The Element associated with the DataBox.
Definition Tags.hpp:52
Tag to retrieve the FunctionsOfTime from the GlobalCache.
Definition Tags.hpp:20
The inverse Jacobian from the source frame to the target frame.
Definition Tags.hpp:118
Holds the mesh of each neighboring element, oriented to the host's logical frame.
Definition NeighborMesh.hpp:29
The prefactor to the penalty term of the numerical flux.
Definition Tags.hpp:75

◆ return_tags

template<size_t Dim, typename InvMetricTag, typename BackgroundTag>
using elliptic::dg::InitializeFacesAndMortars< Dim, InvMetricTag, BackgroundTag >::return_tags
Initial value:
tmpl::append<
Dim,
tmpl::list<domain::Tags::Direction<Dim>,
tmpl::size_t<Dim>, Frame::Inertial>>>,
tmpl::list<
Dim>,
::Tags::Magnitude< Tags::UnnormalizedFaceNormal< Dim, LocalFrame > > UnnormalizedFaceNormalMagnitude
The magnitude of the unnormalized face normal, see unnormalized_face_normal
Definition FaceNormal.hpp:29
::Tags::Normalized< Tags::UnnormalizedFaceNormal< Dim, LocalFrame > > FaceNormal
The normalized face normal.
Definition FaceNormal.hpp:16
tmpl::transform< TagsList, make_faces_tag< tmpl::pin< tmpl::size_t< Dim > >, tmpl::_1, tmpl::pin< VolumeTags > > > make_faces_tags
Wrap all tags in TagsList in domain::Tags::Faces, except those in the VolumeTags list.
Definition Faces.hpp:42
Size of a mortar, relative to the element face. That is, the part of the face that it covers.
Definition Tags.hpp:37
Data on mortars, indexed by a DirectionalId.
Definition Tags.hpp:27
Prefix indicating spatial derivatives.
Definition Prefixes.hpp:46
The coordinates in a given frame.
Definition Tags.hpp:85
The determinant of the induced Jacobian on a surface.
Definition SurfaceJacobian.hpp:32
The inverse Jacobian times the determinant of the Jacobian.
Definition Tags.hpp:234
The normalized face normal vector, i.e. the FaceNormal raised with the spatial metric.
Definition FaceNormal.hpp:22
The computational grid of the Element in the DataBox.
Definition Tags.hpp:62

◆ volume_tags

template<size_t Dim, typename InvMetricTag, typename BackgroundTag>
using elliptic::dg::InitializeFacesAndMortars< Dim, InvMetricTag, BackgroundTag >::volume_tags
Initial value:
tmpl::append<
tmpl::list<domain::Tags::Domain<Dim>, domain::Tags::FunctionsOfTime,
tmpl::conditional_t<
tmpl::list<BackgroundTag, Parallel::Tags::Metavariables>>>

The documentation for this struct was generated from the following file:
  • src/Elliptic/DiscontinuousGalerkin/Initialization.hpp