9 #include "DataStructures/DataBox/Tag.hpp"
10 #include "DataStructures/DataVector.hpp"
12 #include "Evolution/Systems/GeneralizedHarmonic/Tags.hpp"
14 #include "PointwiseFunctions/GeneralRelativity/Tags.hpp"
15 #include "Utilities/ContainerHelpers.hpp"
24 template <
size_t Dim,
typename Frame>
29 template <
typename X,
typename Symm,
typename IndexList>
57 template <
size_t SpatialDim,
typename Frame,
typename DataType>
59 gsl::not_null<tnsr::iJ<DataType, SpatialDim, Frame>*> deriv_shift,
62 const tnsr::A<DataType, SpatialDim, Frame>& spacetime_unit_normal,
63 const tnsr::iaa<DataType, SpatialDim, Frame>&
phi) noexcept;
65 template <
size_t SpatialDim,
typename Frame,
typename DataType>
69 const tnsr::A<DataType, SpatialDim, Frame>& spacetime_unit_normal,
70 const tnsr::iaa<DataType, SpatialDim, Frame>&
phi) noexcept;
81 template <
size_t SpatialDim,
typename Frame>
83 :
::Tags::deriv<gr::Tags::Shift<SpatialDim, Frame, DataVector>,
84 tmpl::size_t<SpatialDim>, Frame>,
86 using argument_tags = tmpl::list<
92 using return_type = tnsr::iJ<DataVector, SpatialDim, Frame>;
94 static constexpr
auto function =
static_cast<void (*)(
97 const tnsr::A<DataVector, SpatialDim, Frame>&,
98 const tnsr::iaa<DataVector, SpatialDim, Frame>&) noexcept>(
99 &spatial_deriv_of_shift<SpatialDim, Frame, DataVector>);
102 tmpl::size_t<SpatialDim>,
Frame>;
Mark a struct as a compute tag by inheriting from this.
Definition: Tag.hpp:157
void spatial_deriv_of_shift(gsl::not_null< tnsr::iJ< DataType, SpatialDim, Frame > * > deriv_shift, const Scalar< DataType > &lapse, const tnsr::AA< DataType, SpatialDim, Frame > &inverse_spacetime_metric, const tnsr::A< DataType, SpatialDim, Frame > &spacetime_unit_normal, const tnsr::iaa< DataType, SpatialDim, Frame > &phi) noexcept
Computes spatial derivatives of the shift vector from the generalized harmonic and geometric variable...
Items related to evolving the first-order generalized harmonic system.
Definition: Characteristics.cpp:21
Scalar< DataType > lapse(const tnsr::I< DataType, SpatialDim, Frame > &shift, const tnsr::aa< DataType, SpatialDim, Frame > &spacetime_metric) noexcept
Compute lapse from shift and spacetime metric.
Stores a collection of function values.
Definition: DataVector.hpp:42
void phi(gsl::not_null< tnsr::iaa< DataType, SpatialDim, Frame > * > phi, const Scalar< DataType > &lapse, const tnsr::i< DataType, SpatialDim, Frame > &deriv_lapse, const tnsr::I< DataType, SpatialDim, Frame > &shift, const tnsr::iJ< DataType, SpatialDim, Frame > &deriv_shift, const tnsr::ii< DataType, SpatialDim, Frame > &spatial_metric, const tnsr::ijj< DataType, SpatialDim, Frame > &deriv_spatial_metric) noexcept
Computes the auxiliary variable used by the generalized harmonic formulation of Einstein's equations...
Tensor< T, Symmetry<>, index_list<> > Scalar
Definition: TypeAliases.hpp:21
Definition: IndexType.hpp:36
void inverse_spacetime_metric(gsl::not_null< tnsr::AA< DataType, SpatialDim, Frame > * > inverse_spacetime_metric, const Scalar< DataType > &lapse, const tnsr::I< DataType, SpatialDim, Frame > &shift, const tnsr::II< DataType, SpatialDim, Frame > &inverse_spatial_metric) noexcept
Compute inverse spacetime metric from inverse spatial metric, lapse and shift.
Require a pointer to not be a nullptr
Definition: ReadSpecThirdOrderPiecewisePolynomial.hpp:13