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/TypeAliases.hpp"
9 : #include "Utilities/Gsl.hpp"
10 : #include "Utilities/TMPL.hpp"
11 :
12 : /// \ingroup GeneralRelativityGroup
13 : /// Holds functions related to general relativity.
14 : namespace gr {
15 : /// @{
16 : /*!
17 : * \ingroup GeneralRelativityGroup
18 : * \brief Computes the time derivative of the spacetime metric from spatial
19 : * metric, lapse, shift, and their time derivatives.
20 : *
21 : * \details Computes the derivative as:
22 : *
23 : * \f{align}{
24 : * \partial_t g_{tt} &= - 2 \alpha \partial_t \alpha
25 : * - 2 \gamma_{i j} \beta^i \partial_t \beta^j
26 : * + \beta^i \beta^j \partial_t \gamma_{i j}\\
27 : * \partial_t g_{t i} &= \gamma_{j i} \partial_t \beta^j
28 : * + \beta^j \partial_t \gamma_{j i}\\
29 : * \partial_t g_{i j} &= \partial_t \gamma_{i j},
30 : * \f}
31 : *
32 : * where \f$\alpha, \beta^i, \gamma_{ij}\f$ are the lapse, shift, and spatial
33 : * metric respectively.
34 : */
35 : template <typename DataType, size_t SpatialDim, typename Frame>
36 1 : void time_derivative_of_spacetime_metric(
37 : gsl::not_null<tnsr::aa<DataType, SpatialDim, Frame>*> dt_spacetime_metric,
38 : const Scalar<DataType>& lapse, const Scalar<DataType>& dt_lapse,
39 : const tnsr::I<DataType, SpatialDim, Frame>& shift,
40 : const tnsr::I<DataType, SpatialDim, Frame>& dt_shift,
41 : const tnsr::ii<DataType, SpatialDim, Frame>& spatial_metric,
42 : const tnsr::ii<DataType, SpatialDim, Frame>& dt_spatial_metric);
43 :
44 : template <typename DataType, size_t SpatialDim, typename Frame>
45 1 : tnsr::aa<DataType, SpatialDim, Frame> time_derivative_of_spacetime_metric(
46 : const Scalar<DataType>& lapse, const Scalar<DataType>& dt_lapse,
47 : const tnsr::I<DataType, SpatialDim, Frame>& shift,
48 : const tnsr::I<DataType, SpatialDim, Frame>& dt_shift,
49 : const tnsr::ii<DataType, SpatialDim, Frame>& spatial_metric,
50 : const tnsr::ii<DataType, SpatialDim, Frame>& dt_spatial_metric);
51 : /// @}
52 : namespace Tags {} // namespace Tags
53 : } // namespace gr
|