SpECTRE  v2022.05.05
elliptic::dg::InitializeFacesAndMortars< Dim, InvMetricTag > Struct Template Reference

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

#include <Initialization.hpp>

Public Types

using return_tags = tmpl::append< domain::make_faces_tags< Dim, tmpl::list< domain::Tags::Direction< Dim >, domain::Tags::Coordinates< Dim, Frame::Inertial >, domain::Tags::FaceNormal< Dim >, domain::Tags::UnnormalizedFaceNormalMagnitude< Dim >, domain::Tags::DetSurfaceJacobian< Frame::ElementLogical, Frame::Inertial >, ::Tags::deriv< domain::Tags::UnnormalizedFaceNormal< Dim >, tmpl::size_t< Dim >, Frame::Inertial > > >, tmpl::list<::Tags::Mortars< domain::Tags::Mesh< Dim - 1 >, Dim >, ::Tags::Mortars<::Tags::MortarSize< Dim - 1 >, Dim >, ::Tags::Mortars< domain::Tags::DetSurfaceJacobian< Frame::ElementLogical, Frame::Inertial >, Dim > > >
 
using argument_tags = tmpl::list< domain::Tags::Mesh< Dim >, domain::Tags::Element< Dim >, domain::Tags::ElementMap< Dim >, domain::Tags::InverseJacobian< Dim, Frame::ElementLogical, Frame::Inertial > >
 

Public Member Functions

template<typename Background = std::nullptr_t, typename... BackgroundClasses>
void operator() (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, Scalar< DataVector > > * > face_normal_magnitudes, const gsl::not_null< DirectionMap< Dim, Scalar< DataVector > > * > face_jacobians, 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, Scalar< DataVector > > * > mortar_jacobians, const Mesh< Dim > &mesh, const Element< Dim > &element, const ElementMap< Dim, Frame::Inertial > &element_map, const InverseJacobian< DataVector, Dim, Frame::ElementLogical, Frame::Inertial > &inv_jacobian, const std::vector< std::array< size_t, Dim > > &initial_extents, const Background &background=std::nullptr_t{}, tmpl::list< BackgroundClasses... >=tmpl::list<>{}) const
 

Detailed Description

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

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 pass the analytic background from which it can be retrieved as additional argument to the call operator. Set InvMetricTag 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.


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