SpECTRE
v2023.01.13
|
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 |
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.