Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <cstddef>
7 :
8 : #include "DataStructures/Tensor/EagerMath/Magnitude.hpp"
9 : #include "Domain/FaceNormal.hpp"
10 : #include "Domain/Tags.hpp"
11 :
12 : namespace domain::Tags {
13 :
14 : /// The _normalized_ face normal
15 : template <size_t Dim, typename LocalFrame = Frame::Inertial>
16 1 : using FaceNormal =
17 : ::Tags::Normalized<Tags::UnnormalizedFaceNormal<Dim, LocalFrame>>;
18 :
19 : /// The normalized face normal vector, i.e. the `FaceNormal` raised with the
20 : /// spatial metric.
21 : template <size_t Dim, typename LocalFrame = Frame::Inertial>
22 1 : struct FaceNormalVector : db::SimpleTag {
23 0 : using type = tnsr::I<DataVector, Dim, LocalFrame>;
24 : };
25 :
26 : /// The magnitude of the _unnormalized_ face normal, see
27 : /// `::unnormalized_face_normal`
28 : template <size_t Dim, typename LocalFrame = Frame::Inertial>
29 1 : using UnnormalizedFaceNormalMagnitude =
30 : ::Tags::Magnitude<Tags::UnnormalizedFaceNormal<Dim, LocalFrame>>;
31 :
32 : } // namespace domain::Tags
|