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