Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include "DataStructures/Tensor/TypeAliases.hpp"
7 :
8 : /// \cond
9 : class DataVector;
10 : namespace gsl {
11 : template <typename>
12 : struct not_null;
13 : } // namespace gsl
14 : /// \endcond
15 :
16 : namespace gr::surfaces {
17 : /// @{
18 : /// \ingroup SurfacesGroup
19 : /// \brief Intrinsic Ricci scalar of a 2D `Strahlkorper`.
20 : ///
21 : /// \details Implements Eq. (D.51) of
22 : /// Sean Carroll's Spacetime and Geometry textbook (except correcting
23 : /// sign errors: both extrinsic curvature terms are off by a minus sign
24 : /// in Carroll's text but correct in Carroll's errata).
25 : /// \f$ \hat{R}=R - 2 R_{ij} S^i S^j + K^2-K^{ij}K_{ij}.\f$
26 : /// Here \f$\hat{R}\f$ is the intrinsic Ricci scalar curvature of
27 : /// the Strahlkorper, \f$R\f$ and \f$R_{ij}\f$ are the Ricci scalar and
28 : /// Ricci tensor of the 3D space that contains the Strahlkorper,
29 : /// \f$ K_{ij} \f$ the output of gr::surfaces::extrinsic_curvature,
30 : /// \f$ K \f$ is the trace of \f$K_{ij}\f$,
31 : /// and `unit_normal_vector` is
32 : /// \f$S^i = g^{ij} S_j\f$ where \f$S_j\f$ is the unit normal one form.
33 : template <typename Frame>
34 1 : void ricci_scalar(gsl::not_null<Scalar<DataVector>*> result,
35 : const tnsr::ii<DataVector, 3, Frame>& spatial_ricci_tensor,
36 : const tnsr::I<DataVector, 3, Frame>& unit_normal_vector,
37 : const tnsr::ii<DataVector, 3, Frame>& extrinsic_curvature,
38 : const tnsr::II<DataVector, 3, Frame>& upper_spatial_metric);
39 :
40 : template <typename Frame>
41 1 : Scalar<DataVector> ricci_scalar(
42 : const tnsr::ii<DataVector, 3, Frame>& spatial_ricci_tensor,
43 : const tnsr::I<DataVector, 3, Frame>& unit_normal_vector,
44 : const tnsr::ii<DataVector, 3, Frame>& extrinsic_curvature,
45 : const tnsr::II<DataVector, 3, Frame>& upper_spatial_metric);
46 : /// @}
47 : } // namespace gr::surfaces
|