SpECTRE Documentation Coverage Report
Current view: top level - PointwiseFunctions/GeneralRelativity - Psi4Real.hpp Hit Total Coverage
Commit: 923cd4a8ea30f5a5589baa60b0a93e358ca9f8e8 Lines: 3 8 37.5 %
Date: 2025-11-07 19:37:56
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/DataBox/Prefixes.hpp"
       9             : #include "DataStructures/DataBox/Tag.hpp"
      10             : #include "DataStructures/Tensor/TypeAliases.hpp"
      11             : #include "Domain/Tags.hpp"
      12             : #include "PointwiseFunctions/GeneralRelativity/Psi4.hpp"
      13             : #include "PointwiseFunctions/GeneralRelativity/Tags.hpp"
      14             : 
      15             : /// \cond
      16             : namespace domain::Tags {
      17             : template <size_t Dim, typename Frame>
      18             : struct Coordinates;
      19             : }  // namespace domain::Tags
      20             : namespace gsl {
      21             : template <typename>
      22             : struct not_null;
      23             : }  // namespace gsl
      24             : /// \endcond
      25             : 
      26             : namespace gr {
      27             : 
      28             : /// @{
      29             : /*!
      30             :  * \ingroup GeneralRelativityGroup
      31             :  * \brief Computes the real part of the Newman Penrose quantity \f$\Psi_4\f$
      32             :  * using  \f$\Psi_4[Real] = -0.5*U^{8+}_{ij}*(x^ix^j - y^iy^j)\f$.
      33             :  */
      34             : template <typename Frame>
      35           1 : void psi_4_real(
      36             :     gsl::not_null<Scalar<DataVector>*> psi_4_real_result,
      37             :     const tnsr::ii<DataVector, 3, Frame>& spatial_ricci,
      38             :     const tnsr::ii<DataVector, 3, Frame>& extrinsic_curvature,
      39             :     const tnsr::ijj<DataVector, 3, Frame>& cov_deriv_extrinsic_curvature,
      40             :     const tnsr::ii<DataVector, 3, Frame>& spatial_metric,
      41             :     const tnsr::II<DataVector, 3, Frame>& inverse_spatial_metric,
      42             :     const tnsr::I<DataVector, 3, Frame>& inertial_coords);
      43             : 
      44             : template <typename Frame>
      45           1 : Scalar<DataVector> psi_4_real(
      46             :     const tnsr::ii<DataVector, 3, Frame>& spatial_ricci,
      47             :     const tnsr::ii<DataVector, 3, Frame>& extrinsic_curvature,
      48             :     const tnsr::ijj<DataVector, 3, Frame>& cov_deriv_extrinsic_curvature,
      49             :     const tnsr::ii<DataVector, 3, Frame>& spatial_metric,
      50             :     const tnsr::II<DataVector, 3, Frame>& inverse_spatial_metric,
      51             :     const tnsr::I<DataVector, 3, Frame>& inertial_coords);
      52             : 
      53             : namespace Tags {
      54             : /// Computes the real part of the Newman Penrose quantity \f$\Psi_4\f$ using
      55             : /// \f$\Psi_4[Real] = -0.5*U^{8+}_{ij}*(x^ix^j - y^iy^j)\f$.
      56             : ///
      57             : /// Can be retrieved using `gr::Tags::Psi4Real`
      58             : template <typename Frame>
      59           1 : struct Psi4RealCompute : Psi4Real<DataVector>, db::ComputeTag {
      60           0 :   using argument_tags = tmpl::list<
      61             :       gr::Tags::SpatialRicci<DataVector, 3, Frame>,
      62             :       gr::Tags::ExtrinsicCurvature<DataVector, 3, Frame>,
      63             :       ::Tags::deriv<gr::Tags::ExtrinsicCurvature<DataVector, 3, Frame>,
      64             :                     tmpl::size_t<3>, Frame>,
      65             :       gr::Tags::SpatialMetric<DataVector, 3, Frame>,
      66             :       gr::Tags::InverseSpatialMetric<DataVector, 3, Frame>,
      67             :       domain::Tags::Coordinates<3, Frame>>;
      68             : 
      69           0 :   using return_type = Scalar<DataVector>;
      70           0 :   static constexpr auto function = static_cast<void (*)(
      71             :       gsl::not_null<Scalar<DataVector>*>, const tnsr::ii<DataVector, 3, Frame>&,
      72             :       const tnsr::ii<DataVector, 3, Frame>&,
      73             :       const tnsr::ijj<DataVector, 3, Frame>&,
      74             :       const tnsr::ii<DataVector, 3, Frame>&,
      75             :       const tnsr::II<DataVector, 3, Frame>&,
      76             :       const tnsr::I<DataVector, 3, Frame>&)>(&psi_4_real<Frame>);
      77           0 :   using base = Psi4Real<DataVector>;
      78             : };
      79             : }  // namespace Tags
      80             : }  // namespace gr

Generated by: LCOV version 1.14