BoundaryDataTags.hpp
1 // Distributed under the MIT License.
2 // See LICENSE.txt for details.
3 
4 #pragma once
5 
6 #include <cstddef>
7 
8 #include "DataStructures/DataBox/Tag.hpp"
9 
10 namespace Cce {
11 namespace Frame {
12 /// The frame for the spherical metric in which the radial coordinate is an
13 /// affine parameter along outward-pointing null geodesics.
14 struct RadialNull {};
15 } // namespace Frame
16 
17 // tensor aliases for brevity
18 using SphericaliCartesianJ = Tensor<
19  DataVector, tmpl::integral_list<std::int32_t, 2, 1>,
20  index_list<SpatialIndex<3, UpLo::Lo, ::Frame::Spherical<::Frame::Inertial>>,
22 
23 using CartesianiSphericalJ =
24  Tensor<DataVector, tmpl::integral_list<std::int32_t, 2, 1>,
25  index_list<SpatialIndex<3, UpLo::Lo, ::Frame::Inertial>,
28 
29 using AngulariCartesianA = Tensor<
30  DataVector, tmpl::integral_list<std::int32_t, 2, 1>,
31  index_list<SpatialIndex<2, UpLo::Lo, ::Frame::Spherical<::Frame::Inertial>>,
33 
34 using SphericaliCartesianjj = Tensor<
35  DataVector, tmpl::integral_list<std::int32_t, 2, 1, 1>,
36  index_list<SpatialIndex<3, UpLo::Lo, ::Frame::Spherical<::Frame::Inertial>>,
39 
40 namespace Tags {
41 namespace detail {
42 // this provides a set of tags for the purposes of allocating once in the entire
43 // Boundary data computation; these tags are currently not used outside
44 // intermediate steps of the procedure in `BoundaryData.hpp`
45 
46 struct CosPhi : db::SimpleTag {
47  using type = Scalar<DataVector>;
48 };
49 
50 struct CosTheta : db::SimpleTag {
51  using type = Scalar<DataVector>;
52 };
53 
54 struct SinPhi : db::SimpleTag {
55  using type = Scalar<DataVector>;
56 };
57 
58 struct SinTheta : db::SimpleTag {
59  using type = Scalar<DataVector>;
60 };
61 
62 struct CartesianCoordinates : db::SimpleTag {
63  using type = tnsr::I<DataVector, 3>;
64 };
65 
66 struct CartesianToSphericalJacobian : db::SimpleTag {
67  using type = SphericaliCartesianJ;
68 };
69 
70 struct InverseCartesianToSphericalJacobian : db::SimpleTag {
71  using type = CartesianiSphericalJ;
72 };
73 
74 struct WorldtubeNormal : db::SimpleTag {
75  using type = tnsr::I<DataVector, 3>;
76 };
77 
78 struct UpDyad : db::SimpleTag {
79  using type = tnsr::I<ComplexDataVector, 2, Frame::RadialNull>;
80 };
81 
82 struct DownDyad : db::SimpleTag {
83  using type = tnsr::i<ComplexDataVector, 2, Frame::RadialNull>;
84 };
85 
86 struct RealBondiR : db::SimpleTag {
87  using type = Scalar<DataVector>;
88 };
89 
90 struct AngularDNullL : db::SimpleTag {
91  using type = AngulariCartesianA;
92 };
93 
94 struct NullL : db::SimpleTag {
95  using type = tnsr::A<DataVector, 3>;
96 };
97 
98 template <typename Tag>
99 struct DLambda : db::SimpleTag {
100  using type = db::item_type<Tag>;
101 };
102 
103 } // namespace detail
104 } // namespace Tags
105 } // namespace Cce
db::SimpleTag
Tags for the DataBox inherit from this type.
Definition: Tag.hpp:23
cstddef
db::item_type
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:246
DataVector
Stores a collection of function values.
Definition: DataVector.hpp:42
Frame::Spherical
Represents a spherical-coordinate frame that is associated with a Cartesian frame,...
Definition: IndexType.hpp:54
Scalar
Tensor< T, Symmetry<>, index_list<> > Scalar
Definition: TypeAliases.hpp:21
Cce
The set of utilities for performing Cauchy characteristic evolution and Cauchy characteristic matchin...
Definition: BoundaryComputeAndSendToEvolution.hpp:28
Cce::Frame::RadialNull
The frame for the spherical metric in which the radial coordinate is an affine parameter along outwar...
Definition: BoundaryDataTags.hpp:14
SpacetimeIndex
Tensor_detail::TensorIndexType< SpatialDim, Ul, Fr, IndexType::Spacetime > SpacetimeIndex
Definition: IndexType.hpp:201
Frame
Definition: IndexType.hpp:36
SpatialIndex
Tensor_detail::TensorIndexType< SpatialDim, Ul, Fr, IndexType::Spatial > SpatialIndex
Definition: IndexType.hpp:187
UpLo::Up
@ Up
Contravariant, or Upper index.