SpECTRE Documentation Coverage Report
Current view: top level - PointwiseFunctions/GeneralRelativity - WeylPropagating.hpp Hit Total Coverage
Commit: 3c072f0ce967e2e56649d3fa12aa2a0e4fe2a42e Lines: 2 3 66.7 %
Date: 2024-04-23 20:50:18
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/Tensor.hpp"
       9             : 
      10             : /// \cond
      11             : namespace gsl {
      12             : template <typename>
      13             : struct not_null;
      14             : }  // namespace gsl
      15             : /// \endcond
      16             : 
      17             : namespace gr {
      18             : /// @{
      19             : /*!
      20             :  * \ingroup GeneralRelativityGroup
      21             :  * \brief Computes the propagating modes of the Weyl tensor
      22             :  *
      23             :  * \details The Weyl tensor evolution system in vacuum has six characteristic
      24             :  * fields, of which two (\f$ U^{8\pm}\f$) are proportional to the
      25             :  * Newman-Penrose components of the Weyl tensor \f$\Psi_4\f$ and \f$\Psi_0\f$.
      26             :  * These represent the true gravitational-wave degrees of freedom, and
      27             :  * can be written down in terms of \f$3+1\f$ quantities as
      28             :  * \cite Kidder2004rw (see Eq. 75):
      29             :  *
      30             :  * \f{align}
      31             :  * U^{8\pm}_{ij} &= \left(P^{k}_i P^{l}_j - \frac{1}{2} P_{ij} P^{kl}\right)
      32             :  *                  \left(R_{kl} + K K_{kl} - K_k^m K_{ml}
      33             :  *                       \mp n^m \nabla_m K_{kl} \pm n^m \nabla_{(k}K_{l)m}
      34             :  *                       \right),\\
      35             :  *               &= \left(P^{k}_i P^{l}_j - \frac{1}{2} P_{ij} P^{kl}\right)
      36             :  *                  \left(E_{kl} \mp n^m \nabla_m K_{kl}
      37             :  *                        \pm n^m \nabla_{(k}K_{l)m}\right),
      38             :  * \f}
      39             :  *
      40             :  * where \f$R_{ij}\f$ is the spatial Ricci tensor, \f$K_{ij}\f$ is the
      41             :  * extrinsic curvature, \f$K\f$ is the trace of \f$K_{ij}\f$, \f$E_{ij}\f$ is
      42             :  * the electric part of the Weyl tensor in vacuum, \f$n^i\f$ is the outward
      43             :  * directed unit normal vector to the interface, \f$\nabla_i\f$ denotes the
      44             :  * covariant derivative, and \f$P^{ij}\f$ and its index-raised and lowered forms
      45             :  * project tensors transverse to \f$n^i\f$.
      46             :  */
      47             : template <typename DataType, size_t SpatialDim, typename Frame>
      48           1 : tnsr::ii<DataType, SpatialDim, Frame> weyl_propagating(
      49             :     const tnsr::ii<DataType, SpatialDim, Frame>& ricci,
      50             :     const tnsr::ii<DataType, SpatialDim, Frame>& extrinsic_curvature,
      51             :     const tnsr::II<DataType, SpatialDim, Frame>& inverse_spatial_metric,
      52             :     const tnsr::ijj<DataType, SpatialDim, Frame>& cov_deriv_extrinsic_curvature,
      53             :     const tnsr::I<DataType, SpatialDim, Frame>& unit_interface_normal_vector,
      54             :     const tnsr::II<DataType, SpatialDim, Frame>& projection_IJ,
      55             :     const tnsr::ii<DataType, SpatialDim, Frame>& projection_ij,
      56             :     const tnsr::Ij<DataType, SpatialDim, Frame>& projection_Ij,
      57             :     const double sign);
      58             : 
      59             : template <typename DataType, size_t SpatialDim, typename Frame>
      60           1 : void weyl_propagating(
      61             :     gsl::not_null<tnsr::ii<DataType, SpatialDim, Frame>*> weyl_prop_u8,
      62             :     const tnsr::ii<DataType, SpatialDim, Frame>& ricci,
      63             :     const tnsr::ii<DataType, SpatialDim, Frame>& extrinsic_curvature,
      64             :     const tnsr::II<DataType, SpatialDim, Frame>& inverse_spatial_metric,
      65             :     const tnsr::ijj<DataType, SpatialDim, Frame>& cov_deriv_extrinsic_curvature,
      66             :     const tnsr::I<DataType, SpatialDim, Frame>& unit_interface_normal_vector,
      67             :     const tnsr::II<DataType, SpatialDim, Frame>& projection_IJ,
      68             :     const tnsr::ii<DataType, SpatialDim, Frame>& projection_ij,
      69             :     const tnsr::Ij<DataType, SpatialDim, Frame>& projection_Ij,
      70             :     const double sign);
      71             : /// @}
      72             : }  // namespace gr

Generated by: LCOV version 1.14