SpECTRE  v2024.04.12
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 = 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::FaceNormalVector< Dim >, domain::Tags::UnnormalizedFaceNormalMagnitude< Dim >, domain::Tags::DetSurfaceJacobian< Frame::ElementLogical, Frame::Inertial >, domain::Tags::DetTimesInvJacobian< Dim, 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 >, ::Tags::Mortars< elliptic::dg::Tags::PenaltyFactor, Dim > > >
 
using argument_tags = tmpl::append< tmpl::list< domain::Tags::Mesh< Dim >, domain::Tags::Element< Dim >, domain::Tags::NeighborMesh< Dim >, domain::Tags::ElementMap< Dim >, domain::Tags::InverseJacobian< Dim, Frame::ElementLogical, Frame::Inertial >, domain::Tags::Domain< Dim >, domain::Tags::FunctionsOfTime, elliptic::dg::Tags::PenaltyParameter >, tmpl::conditional_t< std::is_same_v< BackgroundTag, void >, tmpl::list<>, tmpl::list< BackgroundTag, Parallel::Tags::Metavariables > > >
 
using volume_tags = tmpl::append< tmpl::list< domain::Tags::Domain< Dim >, domain::Tags::FunctionsOfTime, elliptic::dg::Tags::PenaltyParameter >, tmpl::conditional_t< std::is_same_v< BackgroundTag, void >, tmpl::list<>, tmpl::list< BackgroundTag, Parallel::Tags::Metavariables > > >
 

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


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