SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Systems/CurvedScalarWave - Tags.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 22.6 % 31 7
Test Date: 2026-10-22 17:29:42
Legend: Lines:     hit not hit

            Line data    Source code
       1            1 : // Distributed under the MIT License.
       2              : // See LICENSE.txt for details.
       3              : 
       4              : /// \file
       5              : /// Defines DataBox tags for the curved scalar wave system
       6              : 
       7              : #pragma once
       8              : 
       9              : #include <cstddef>
      10              : #include <string>
      11              : 
      12              : #include "DataStructures/DataBox/Tag.hpp"
      13              : #include "DataStructures/Tensor/TypeAliases.hpp"
      14              : #include "Evolution/Systems/CurvedScalarWave/TagsDeclarations.hpp"
      15              : 
      16              : /// \cond
      17              : class DataVector;
      18              : template <class>
      19              : class Variables;
      20              : /// \endcond
      21              : 
      22              : /// \brief Option tags for the curved scalar wave system.
      23              : namespace CurvedScalarWave::OptionTags {}
      24              : 
      25              : namespace CurvedScalarWave::Tags {
      26              : 
      27              : /*!
      28              :  * \brief The scalar field.
      29              :  */
      30            1 : struct Psi : db::SimpleTag {
      31            0 :   using type = Scalar<DataVector>;
      32              : };
      33              : 
      34              : /*!
      35              :  * \brief The conjugate momentum of the scalar field.
      36              :  *
      37              :  * \details Its definition comes from requiring it to be the future-directed
      38              :  * time derivative of the scalar field \f$\Psi\f$ in curved spacetime, see
      39              :  * \cite Scheel2003vs , Eq. 2.16:
      40              :  *
      41              :  * \f{align}
      42              :  * \Pi :=& -n^a \partial_a \Psi \\
      43              :  *     =&  \frac{1}{\alpha}\left(\beta^k \partial_k \Psi -
      44              :  * {\partial_t\Psi}\right),\\ \f}
      45              :  *
      46              :  * where \f$n^a\f$ is the unit normal to spatial slices of the spacetime
      47              :  * foliation, \f$\alpha\f$ is the lapse and \f$\beta^i\f$ is the shift vector.
      48              :  */
      49            1 : struct Pi : db::SimpleTag {
      50            0 :   using type = Scalar<DataVector>;
      51              : };
      52              : 
      53              : /*!
      54              :  * \brief Auxiliary variable which is analytically the spatial derivative of the
      55              :  * scalar field.
      56              :  * \details If \f$\Psi\f$ is the scalar field then we define
      57              :  * \f$\Phi_{i} = \partial_i \Psi\f$
      58              :  */
      59              : template <size_t SpatialDim, typename Frame>
      60            1 : struct Phi : db::SimpleTag {
      61            0 :   using type = tnsr::i<DataVector, SpatialDim, Frame>;
      62              : };
      63              : 
      64            0 : struct ConstraintGamma1 : db::SimpleTag {
      65            0 :   using type = Scalar<DataVector>;
      66              : };
      67              : 
      68            0 : struct ConstraintGamma2 : db::SimpleTag {
      69            0 :   using type = Scalar<DataVector>;
      70              : };
      71              : 
      72              : /*!
      73              :  * \brief Tag for the one-index constraint of the scalar wave
      74              :  * system in curved spacetime.
      75              :  *
      76              :  * For details on how this is defined and computed, see
      77              :  * `OneIndexConstraintCompute`.
      78              :  */
      79              : template <size_t SpatialDim>
      80            1 : struct OneIndexConstraint : db::SimpleTag {
      81            0 :   using type = tnsr::i<DataVector, SpatialDim, Frame::Inertial>;
      82              : };
      83              : /*!
      84              :  * \brief Tag for the two-index constraint of the scalar wave
      85              :  * system in curved spacetime.
      86              :  *
      87              :  * For details on how this is defined and computed, see
      88              :  * `TwoIndexConstraintCompute`.
      89              :  */
      90              : template <size_t SpatialDim>
      91            1 : struct TwoIndexConstraint : db::SimpleTag {
      92            0 :   using type = tnsr::ij<DataVector, SpatialDim, Frame::Inertial>;
      93              : };
      94              : 
      95              : /// @{
      96              : /// \brief Tags corresponding to the characteristic fields of the
      97              : /// scalar-wave system in curved spacetime.
      98              : ///
      99              : /// \details For details on how these are defined and computed, \see
     100              : /// CharacteristicSpeedsCompute
     101            1 : struct VPsi : db::SimpleTag {
     102            0 :   using type = Scalar<DataVector>;
     103              : };
     104              : template <size_t Dim>
     105            0 : struct VZero : db::SimpleTag {
     106            0 :   using type = tnsr::i<DataVector, Dim, Frame::Inertial>;
     107              : };
     108            0 : struct VPlus : db::SimpleTag {
     109            0 :   using type = Scalar<DataVector>;
     110              : };
     111            0 : struct VMinus : db::SimpleTag {
     112            0 :   using type = Scalar<DataVector>;
     113              : };
     114              : /// @}
     115              : 
     116              : template <size_t Dim>
     117            0 : struct CharacteristicSpeeds : db::SimpleTag {
     118            0 :   using type = std::array<DataVector, 4>;
     119              : };
     120              : 
     121            0 : struct LargestCharacteristicSpeed : db::SimpleTag {
     122            0 :   using type = double;
     123              : };
     124              : 
     125              : template <size_t Dim>
     126            0 : struct CharacteristicFields : db::SimpleTag {
     127            0 :   using type = Variables<tmpl::list<VPsi, VZero<Dim>, VPlus, VMinus>>;
     128              : };
     129              : 
     130              : template <size_t Dim>
     131            0 : struct EvolvedFieldsFromCharacteristicFields : db::SimpleTag {
     132            0 :   using type = Variables<tmpl::list<Psi, Pi, Phi<Dim>>>;
     133              : };
     134              : }  // namespace CurvedScalarWave::Tags
        

Generated by: LCOV version 2.0-1