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/Tensor.hpp"
9 : #include "Utilities/Gsl.hpp"
10 :
11 : namespace gr {
12 : /// @{
13 : /*!
14 : * \ingroup GeneralRelativityGroup
15 : * \brief Computes the time derivative of the spatial metric from extrinsic
16 : * curvature, lapse, shift, and their time derivatives.
17 : *
18 : * \details Computes the derivative as (see e.g. \cite BaumgarteShapiro, Eq.
19 : * (2.134)):
20 : *
21 : * \f{equation}
22 : * \partial_t \gamma_{ij} = -2 \alpha K_{ij} + 2 \nabla_{(i} \beta_{j)}
23 : * = -2 \alpha K_{ij} + \beta^k \partial_k \gamma_{ij}
24 : * + \gamma_{ik} \partial_j \beta^k + \gamma_{jk} \partial_i \beta^k
25 : * \f}
26 : *
27 : * where \f$\alpha\f$ is the lapse, \f$\beta^i\f$ is the shift,
28 : * \f$\gamma_{ij}\f$ is the spatial metric and \f$K_{ij}\f$ is the extrinsic
29 : * curvature.
30 : */
31 : template <typename DataType, size_t SpatialDim, typename Frame>
32 1 : void time_derivative_of_spatial_metric(
33 : gsl::not_null<tnsr::ii<DataType, SpatialDim, Frame>*> dt_spatial_metric,
34 : const Scalar<DataType>& lapse,
35 : const tnsr::I<DataType, SpatialDim, Frame>& shift,
36 : const tnsr::iJ<DataType, SpatialDim, Frame>& deriv_shift,
37 : const tnsr::ii<DataType, SpatialDim, Frame>& spatial_metric,
38 : const tnsr::ijj<DataType, SpatialDim, Frame>& deriv_spatial_metric,
39 : const tnsr::ii<DataType, SpatialDim, Frame>& extrinsic_curvature);
40 :
41 : template <typename DataType, size_t SpatialDim, typename Frame>
42 1 : tnsr::ii<DataType, SpatialDim, Frame> time_derivative_of_spatial_metric(
43 : const Scalar<DataType>& lapse,
44 : const tnsr::I<DataType, SpatialDim, Frame>& shift,
45 : const tnsr::iJ<DataType, SpatialDim, Frame>& deriv_shift,
46 : const tnsr::ii<DataType, SpatialDim, Frame>& spatial_metric,
47 : const tnsr::ijj<DataType, SpatialDim, Frame>& deriv_spatial_metric,
48 : const tnsr::ii<DataType, SpatialDim, Frame>& extrinsic_curvature);
49 : /// @}
50 : } // namespace gr
|