SpECTRE Documentation Coverage Report
Current view: top level - PointwiseFunctions/ScalarTensor/ScalarGaussBonnet - DoubleCovariantDerivativeOfCoupling.hpp Hit Total Coverage
Commit: c3e43f8d41800b0ecefb9d1393f1de1d5a280c8f Lines: 6 7 85.7 %
Date: 2026-07-24 22:09:25
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 "DataStructures/Tensor/Tensor.hpp"
       7             : #include "Utilities/Gsl.hpp"
       8             : 
       9             : namespace ScalarTensor::sgb {
      10             : /// @{
      11             : /*!
      12             :  * \brief Computes the projection of the second covariant derivative of the
      13             :  * coupling function onto the normal vector.
      14             :  *
      15             :  * \details Computes the term
      16             :  * \begin{equation}
      17             :  *   n^a n^b \nabla_a\nabla_b F[\Psi]
      18             :  *     = \frac{\delta^2 F[\Psi]}{\delta \Psi^2} \Pi^2
      19             :  *     + \frac{\delta F[\Psi]}{\delta \Psi} n^a n^b \nabla_a \nabla_b \Psi,
      20             :  * \end{equation}
      21             :  * where $\Psi$ is the scalar field, $\Pi$ is its conjugate momentum, $F[\Psi]$
      22             :  * is the coupling function and $n^a$ is the unit vector normal to
      23             :  * the spatial hypersurfaces.
      24             :  */
      25             : template <typename DataType>
      26           1 : void DDCoupling_normal_normal_projection(
      27             :     gsl::not_null<Scalar<DataType>*> DDCoupling_normal_normal_result,
      28             :     const Scalar<DataType>& coupling_prime,
      29             :     const Scalar<DataType>& coupling_prime_prime,
      30             :     const Scalar<DataType>& pi_scalar,
      31             :     const Scalar<DataType>& normal_normal_DD_scalar);
      32             : 
      33             : template <typename DataType>
      34           1 : Scalar<DataType> DDCoupling_normal_normal_projection(
      35             :     const Scalar<DataType>& coupling_prime,
      36             :     const Scalar<DataType>& coupling_prime_prime,
      37             :     const Scalar<DataType>& pi_scalar,
      38             :     const Scalar<DataType>& normal_normal_DD_scalar);
      39             : /// @}
      40             : 
      41             : /// @{
      42             : /*!
      43             :  * \brief Computes the mixed projection of the second covariant derivative of
      44             :  * the coupling function.
      45             :  *
      46             :  * \details Computes the term
      47             :  * \begin{equation}
      48             :  *   \gamma^a_i n^b \nabla_a \nabla_b F[\Psi]
      49             :  *     = - \frac{\delta^2 F[\Psi]}{\delta \Psi^2} \Pi \partial_i \Psi
      50             :  *     + \frac{\delta F[\Psi]}{\delta \Psi}
      51             :  *       \gamma^a_i n^b \nabla_a \nabla_b \Psi,
      52             :  * \end{equation}
      53             :  * where $\Psi$ is the scalar field, $\Pi$ is its conjugate momentum and
      54             :  * $F[\Psi]$ is the coupling function; $n^a$ is the unit vector normal to the
      55             :  * spatial hypersurfaces and $\gamma^a_b = \delta^a_b + n^a n_b$ is the
      56             :  * projection operator onto them.
      57             :  */
      58             : template <typename DataType, typename Frame>
      59           1 : void DDCoupling_normal_spatial_projection(
      60             :     gsl::not_null<tnsr::i<DataType, 3, Frame>*>
      61             :         DDCoupling_normal_spatial_result,
      62             :     const Scalar<DataType>& coupling_prime,
      63             :     const Scalar<DataType>& coupling_prime_prime,
      64             :     const Scalar<DataType>& pi_scalar,
      65             :     const tnsr::i<DataType, 3, Frame>& d_scalar_field,
      66             :     const tnsr::i<DataType, 3, Frame>& normal_spatial_DD_scalar);
      67             : 
      68             : template <typename DataType, typename Frame>
      69           1 : tnsr::i<DataType, 3, Frame> DDCoupling_normal_spatial_projection(
      70             :     const Scalar<DataType>& coupling_prime,
      71             :     const Scalar<DataType>& coupling_prime_prime,
      72             :     const Scalar<DataType>& pi_scalar,
      73             :     const tnsr::i<DataType, 3, Frame>& d_scalar_field,
      74             :     const tnsr::i<DataType, 3, Frame>& normal_spatial_DD_scalar);
      75             : /// @}
      76             : 
      77             : /// @{
      78             : /*!
      79             :  * \brief Computes the spatial projection of the second covariant derivative of
      80             :  * the coupling function.
      81             :  *
      82             :  * \details Computes the term
      83             :  * \begin{equation}
      84             :  *   \gamma^a_i \gamma^b_j \nabla_a \nabla_b F[\Psi]
      85             :  *     = \frac{\delta^2 F[\Psi]}{\delta \Psi^2} (\partial_i \Psi)
      86             :  *       (\partial_j \Psi)
      87             :  *     + \frac{\delta F[\Psi]}{\delta \Psi}
      88             :  *       \gamma^a_i \gamma^b_j \nabla_a \nabla_b \Psi,
      89             :  * \end{equation}
      90             :  * where $\Psi$ is the scalar field, $\Pi$ is its conjugate momentum and
      91             :  * $F[\Psi]$ is the coupling function; $n^a$ is the unit vector normal to the
      92             :  * spatial hypersurfaces and $\gamma^a_b = \delta^a_b + n^a n_b$ is the
      93             :  * projection operator onto them.
      94             :  */
      95             : template <typename DataType, typename Frame>
      96           1 : void DDCoupling_spatial_spatial_projection(
      97             :     gsl::not_null<tnsr::ii<DataType, 3, Frame>*>
      98             :         DDCoupling_spatial_spatial_result,
      99             :     const Scalar<DataType>& coupling_prime,
     100             :     const Scalar<DataType>& coupling_prime_prime,
     101             :     const tnsr::i<DataType, 3, Frame>& d_scalar_field,
     102             :     const tnsr::ii<DataType, 3, Frame>& spatial_spatial_DD_scalar);
     103             : 
     104             : template <typename DataType, typename Frame>
     105           1 : tnsr::ii<DataType, 3, Frame> DDCoupling_spatial_spatial_projection(
     106             :     const Scalar<DataType>& coupling_prime,
     107             :     const Scalar<DataType>& coupling_prime_prime,
     108             :     const tnsr::i<DataType, 3, Frame>& d_scalar_field,
     109             :     const tnsr::ii<DataType, 3, Frame>& spatial_spatial_DD_scalar);
     110             : /// @}
     111             : }  // namespace ScalarTensor::sgb

Generated by: LCOV version 1.14