SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Systems/Ccz4 - Christoffel.hpp Hit Total Coverage
Commit: 047f5140268fc2680430d095fc7d96883747c68e Lines: 6 7 85.7 %
Date: 2024-12-09 22:54:54
Legend: Lines: hit not hit

          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             : 
      11             : namespace Ccz4 {
      12             : /// @{
      13             : /*!
      14             :  * \brief Computes the conformal spatial christoffel symbols of the second kind.
      15             :  *
      16             :  * \details Computes the christoffel symbols as:
      17             :  * \f{align}
      18             :  *     \tilde{\Gamma}^k_{ij} &=
      19             :  *         \tilde{\gamma}^{kl} (D_{ijl} + D_{jil} - D_{lij})
      20             :  * \f}
      21             :  * where \f$\tilde{\gamma}^{ij}\f$ and \f$D_{ijk}\f$ are the inverse conformal
      22             :  * spatial metric and the CCZ4 auxiliary variable defined by
      23             :  * `Ccz4::Tags::InverseConformalMetric` and `Ccz4::Tags::FieldD`, respectively.
      24             :  */
      25             : template <typename DataType, size_t Dim, typename Frame>
      26           1 : void conformal_christoffel_second_kind(
      27             :     const gsl::not_null<tnsr::Ijj<DataType, Dim, Frame>*> result,
      28             :     const tnsr::II<DataType, Dim, Frame>& inverse_conformal_spatial_metric,
      29             :     const tnsr::ijj<DataType, Dim, Frame>& field_d);
      30             : 
      31             : template <typename DataType, size_t Dim, typename Frame>
      32           1 : tnsr::Ijj<DataType, Dim, Frame> conformal_christoffel_second_kind(
      33             :     const tnsr::II<DataType, Dim, Frame>& inverse_conformal_spatial_metric,
      34             :     const tnsr::ijj<DataType, Dim, Frame>& field_d);
      35             : /// @}
      36             : 
      37             : /// @{
      38             : /*!
      39             :  * \brief Computes the spatial christoffel symbols of the second kind.
      40             :  *
      41             :  * \details Computes the christoffel symbols as:
      42             :  * \f{align}
      43             :  *     \Gamma^k_{ij} &= \tilde{\Gamma}^k_{ij} -
      44             :  *         \tilde{\gamma}^{kl} (\tilde{\gamma}_{jl} P_i +
      45             :  *                              \tilde{\gamma}_{il} P_j -
      46             :  *                              \tilde{\gamma}_{ij} P_l)
      47             :  * \f}
      48             :  * where \f$\tilde{\gamma}^{ij}\f$, \f$\tilde{\gamma}_{ij}\f$,
      49             :  * \f$\tilde{\Gamma}^k_{ij}\f$, and \f$P_i\f$ are the conformal spatial metric,
      50             :  * the inverse conformal spatial metric, the conformal spatial christoffel
      51             :  * symbols of the second kind, and the CCZ4 auxiliary variable defined by
      52             :  * `Ccz4::Tags::ConformalMetric`, `Ccz4::Tags::InverseConformalMetric`,
      53             :  * `Ccz4::Tags::ConformalChristoffelSecondKind`, and `Ccz4::Tags::FieldP`,
      54             :  * respectively.
      55             :  */
      56             : template <typename DataType, size_t Dim, typename Frame>
      57           1 : void christoffel_second_kind(
      58             :     const gsl::not_null<tnsr::Ijj<DataType, Dim, Frame>*> result,
      59             :     const tnsr::ii<DataType, Dim, Frame>& conformal_spatial_metric,
      60             :     const tnsr::II<DataType, Dim, Frame>& inverse_conformal_spatial_metric,
      61             :     const tnsr::i<DataType, Dim, Frame>& field_p,
      62             :     const tnsr::Ijj<DataType, Dim, Frame>& conformal_christoffel_second_kind);
      63             : 
      64             : template <typename DataType, size_t Dim, typename Frame>
      65           1 : tnsr::Ijj<DataType, Dim, Frame> christoffel_second_kind(
      66             :     const tnsr::ii<DataType, Dim, Frame>& conformal_spatial_metric,
      67             :     const tnsr::II<DataType, Dim, Frame>& inverse_conformal_spatial_metric,
      68             :     const tnsr::i<DataType, Dim, Frame>& field_p,
      69             :     const tnsr::Ijj<DataType, Dim, Frame>& conformal_christoffel_second_kind);
      70             : /// @}
      71             : 
      72             : /// @{
      73             : /*!
      74             :  * \brief Computes the contraction of the conformal spatial Christoffel symbols
      75             :  * of the second kind.
      76             :  *
      77             :  * \details Computes the contraction as:
      78             :  *
      79             :  * \f{align}
      80             :  *     \tilde{\Gamma}^i &= \tilde{\gamma}^{jl} \tilde{\Gamma}^i_{jl}
      81             :  * \f}
      82             :  *
      83             :  * where \f$\tilde{\gamma}^{ij}\f$ is the inverse conformal spatial metric
      84             :  * defined by `Ccz4::Tags::InverseConformalMetric` and
      85             :  * \f$\tilde{\Gamma}^k_{ij}\f$ is the conformal spatial Christoffel symbols of
      86             :  * the second kind defined by `Ccz4::Tags::ConformalChristoffelSecondKind`.
      87             :  */
      88             : template <typename DataType, size_t Dim, typename Frame>
      89           1 : void contracted_conformal_christoffel_second_kind(
      90             :     const gsl::not_null<tnsr::I<DataType, Dim, Frame>*> result,
      91             :     const tnsr::II<DataType, Dim, Frame>& inverse_conformal_spatial_metric,
      92             :     const tnsr::Ijj<DataType, Dim, Frame>& conformal_christoffel_second_kind);
      93             : 
      94             : template <typename DataType, size_t Dim, typename Frame>
      95           1 : tnsr::I<DataType, Dim, Frame> contracted_conformal_christoffel_second_kind(
      96             :     const tnsr::II<DataType, Dim, Frame>& inverse_conformal_spatial_metric,
      97             :     const tnsr::Ijj<DataType, Dim, Frame>& conformal_christoffel_second_kind);
      98             : /// @}
      99             : }  // namespace Ccz4

Generated by: LCOV version 1.14