BoundaryDataTags.hpp
1 // Distributed under the MIT License.
2 // See LICENSE.txt for details.
3 
4 #pragma once
5 
6 #include <cstddef>
7 
8 namespace Cce {
9 namespace Frame {
10 /// The frame for the spherical metric in which the radial coordinate is an
11 /// affine parameter along outward-pointing null geodesics.
12 struct RadialNull {};
13 } // namespace Frame
14 
15 // tensor aliases for brevity
16 using SphericaliCartesianJ = Tensor<
17  DataVector, tmpl::integral_list<std::int32_t, 2, 1>,
18  index_list<SpatialIndex<3, UpLo::Lo, ::Frame::Spherical<::Frame::Inertial>>,
20 
21 using CartesianiSphericalJ =
22  Tensor<DataVector, tmpl::integral_list<std::int32_t, 2, 1>,
23  index_list<SpatialIndex<3, UpLo::Lo, ::Frame::Inertial>,
26 
27 using AngulariCartesianA = Tensor<
28  DataVector, tmpl::integral_list<std::int32_t, 2, 1>,
29  index_list<SpatialIndex<2, UpLo::Lo, ::Frame::Spherical<::Frame::Inertial>>,
31 
32 using SphericaliCartesianjj = Tensor<
33  DataVector, tmpl::integral_list<std::int32_t, 2, 1, 1>,
34  index_list<SpatialIndex<3, UpLo::Lo, ::Frame::Spherical<::Frame::Inertial>>,
35  SpatialIndex<3, UpLo::Lo, ::Frame::Inertial>,
36  SpatialIndex<3, UpLo::Lo, ::Frame::Inertial>>>;
37 
38 namespace Tags {
39 namespace detail {
40 // this provides a set of tags for the purposes of allocating once in the entire
41 // Boundary data computation; these tags are currently not used outside
42 // intermediate steps of the procedure in `BoundaryData.hpp`
43 
44 struct CosPhi : db::SimpleTag {
45  using type = Scalar<DataVector>;
46 };
47 
48 struct CosTheta : db::SimpleTag {
49  using type = Scalar<DataVector>;
50 };
51 
52 struct SinPhi : db::SimpleTag {
53  using type = Scalar<DataVector>;
54 };
55 
56 struct SinTheta : db::SimpleTag {
57  using type = Scalar<DataVector>;
58 };
59 
60 struct CartesianCoordinates : db::SimpleTag {
61  using type = tnsr::I<DataVector, 3>;
62 };
63 
64 struct CartesianToSphericalJacobian : db::SimpleTag {
65  using type = SphericaliCartesianJ;
66 };
67 
68 struct InverseCartesianToSphericalJacobian : db::SimpleTag {
69  using type = CartesianiSphericalJ;
70 };
71 
72 struct WorldtubeNormal : db::SimpleTag {
73  using type = tnsr::I<DataVector, 3>;
74 };
75 
76 struct UpDyad : db::SimpleTag {
77  using type = tnsr::I<ComplexDataVector, 2, Frame::RadialNull>;
78 };
79 
80 struct DownDyad : db::SimpleTag {
81  using type = tnsr::i<ComplexDataVector, 2, Frame::RadialNull>;
82 };
83 
84 struct RealBondiR : db::SimpleTag {
85  using type = Scalar<DataVector>;
86 };
87 
88 struct AngularDNullL : db::SimpleTag {
89  using type = AngulariCartesianA;
90 };
91 
92 struct NullL : db::SimpleTag {
93  using type = tnsr::A<DataVector, 3>;
94 };
95 
96 template <typename Tag>
97 struct DLambda : db::SimpleTag {
98  using type = db::item_type<Tag>;
99 };
100 
101 } // namespace detail
102 } // namespace Tags
103 } // namespace Cce
Contains functionality for Cauchy Characteristic Extraction.
Definition: BoundaryData.cpp:21
Contravariant, or Upper index.
Tags for the DataBox inherit from this type.
Definition: DataBoxTag.hpp:64
Definition: Determinant.hpp:11
Tensor_detail::TensorIndexType< SpatialDim, Ul, Fr, IndexType::Spacetime > SpacetimeIndex
A SpacetimeIndex holds information about the number of spatial dimensions, whether the index is covar...
Definition: IndexType.hpp:201
Tensor_detail::TensorIndexType< SpatialDim, Ul, Fr, IndexType::Spatial > SpatialIndex
A SpatialIndex holds information about the number of spatial dimensions, whether the index is covaria...
Definition: IndexType.hpp:187
The frame for the spherical metric in which the radial coordinate is an affine parameter along outwar...
Definition: BoundaryDataTags.hpp:12
Indicates the Frame that a TensorIndexType is in.
Definition: IndexType.hpp:36
Definition: DataBoxTag.hpp:29
Stores a collection of function values.
Definition: DataVector.hpp:42
Represents a spherical-coordinate frame that is associated with a Cartesian frame, e.g. associated with the Inertial frame, as used on an apparent horizon or a wave-extraction surface.
Definition: IndexType.hpp:54
typename DataBox_detail::item_type_impl< TagList, Tag >::type item_type
Get the type that can be written to the Tag. If it is a base tag then a TagList must be passed as a s...
Definition: DataBoxTag.hpp:475
Tensor< T, Symmetry<>, index_list<> > Scalar
Scalar type.
Definition: TypeAliases.hpp:21