SpECTRE Documentation Coverage Report
Current view: top level - PointwiseFunctions/Punctures - AdmIntegrals.hpp Hit Total Coverage
Commit: 3c072f0ce967e2e56649d3fa12aa2a0e4fe2a42e Lines: 3 10 30.0 %
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/DataVector.hpp"
       9             : #include "DataStructures/Tensor/Tensor.hpp"
      10             : #include "Elliptic/Systems/Punctures/Tags.hpp"
      11             : #include "Utilities/Gsl.hpp"
      12             : #include "Utilities/TMPL.hpp"
      13             : 
      14             : namespace Punctures {
      15             : 
      16             : /// @{
      17             : /*!
      18             :  * \brief The volume integrand for the ADM mass $M_\mathrm{ADM}$
      19             :  *
      20             :  * The ADM mass for Punctures is (Eq. (12.56) in \cite BaumgarteShapiro)
      21             :  *
      22             :  * \begin{equation}
      23             :  * M_\mathrm{ADM} = \sum_I M_I + \frac{1}{2\pi} \int
      24             :  *   \beta \left(\alpha \left(1 + u\right) + 1\right)^{-7}
      25             :  * \end{equation}
      26             :  *
      27             :  * \see Punctures
      28             :  */
      29           1 : void adm_mass_integrand(const gsl::not_null<Scalar<DataVector>*> result,
      30             :                         const Scalar<DataVector>& field,
      31             :                         const Scalar<DataVector>& alpha,
      32             :                         const Scalar<DataVector>& beta);
      33             : 
      34           1 : Scalar<DataVector> adm_mass_integrand(const Scalar<DataVector>& field,
      35             :                                       const Scalar<DataVector>& alpha,
      36             :                                       const Scalar<DataVector>& beta);
      37             : /// @}
      38             : 
      39             : namespace Tags {
      40             : 
      41             : /// @{
      42           0 : struct AdmMassIntegrand : db::SimpleTag {
      43           0 :   using type = Scalar<DataVector>;
      44             : };
      45             : 
      46             : /*!
      47             :  * \brief The volume integrand for the ADM mass $M_\mathrm{ADM}$
      48             :  *
      49             :  * \see adm_mass_integrand
      50             :  */
      51           1 : struct AdmMassIntegrandCompute : AdmMassIntegrand, db::ComputeTag {
      52           0 :   using base = AdmMassIntegrand;
      53           0 :   using argument_tags = tmpl::list<Field, Alpha, Beta>;
      54           0 :   using return_type = Scalar<DataVector>;
      55           0 :   static constexpr auto function =
      56             :       static_cast<void (*)(gsl::not_null<Scalar<DataVector>*>,
      57             :                            const Scalar<DataVector>&, const Scalar<DataVector>&,
      58             :                            const Scalar<DataVector>&)>(&adm_mass_integrand);
      59             : };
      60             : /// @}
      61             : 
      62             : }  // namespace Tags
      63             : }  // namespace Punctures

Generated by: LCOV version 1.14