SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Systems/SecondOrderScalarWave - Tags.hpp Hit Total Coverage
Commit: ecb8a275e1aebab77dcce48a5e098ed4e486ab4b Lines: 9 23 39.1 %
Date: 2026-08-22 01:05:40
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 <array>
       7             : #include <cstddef>
       8             : 
       9             : #include "DataStructures/DataBox/Tag.hpp"
      10             : #include "DataStructures/Tensor/TypeAliases.hpp"
      11             : #include "DataStructures/Variables.hpp"
      12             : #include "Evolution/Systems/SecondOrderScalarWave/TagsDeclarations.hpp"
      13             : #include "Utilities/TMPL.hpp"
      14             : 
      15             : class DataVector;
      16             : 
      17             : namespace SecondOrderScalarWave::Tags {
      18             : 
      19             : /*!
      20             :  * \brief The scalar field.
      21             :  */
      22           1 : struct Psi : db::SimpleTag {
      23           0 :   using type = Scalar<DataVector>;
      24             : };
      25             : 
      26             : /*!
      27             :  * \brief The negative time derivative of the scalar field.
      28             :  * \details If \f$\Psi\f$ is the scalar field then
      29             :  * \f$\Pi = -\partial_t \Psi\f$.
      30             :  */
      31           1 : struct Pi : db::SimpleTag {
      32           0 :   using type = Scalar<DataVector>;
      33             : };
      34             : 
      35             : /*!
      36             :  * \brief Auxiliary variable, the spatial derivative of the scalar field.
      37             :  * \details If \f$\Psi\f$ is the scalar field then
      38             :  * \f$\Phi_i = \partial_i \Psi\f$.
      39             :  */
      40             : template <size_t Dim>
      41           1 : struct Phi : db::SimpleTag {
      42           0 :   using type = tnsr::i<DataVector, Dim, Frame::Inertial>;
      43             : };
      44             : 
      45             : /// The contraction \f$n^i\Phi_i\f$ with the face normal.
      46           1 : struct NormalDotPhi : db::SimpleTag {
      47           0 :   using type = Scalar<DataVector>;
      48             : };
      49             : 
      50             : /// The scalar field multiplied by the face normal, \f$\Psi n_i\f$.
      51             : template <size_t Dim>
      52           1 : struct PsiTimesNormal : db::SimpleTag {
      53           0 :   using type = tnsr::i<DataVector, Dim, Frame::Inertial>;
      54             : };
      55             : 
      56             : /// @{
      57             : /// \brief Tags corresponding to the characteristic fields of the second-order
      58             : /// scalar-wave system.
      59             : template <size_t Dim>
      60           1 : struct VZero : db::SimpleTag {
      61           0 :   using type = tnsr::i<DataVector, Dim, Frame::Inertial>;
      62             : };
      63           0 : struct VPlus : db::SimpleTag {
      64           0 :   using type = Scalar<DataVector>;
      65             : };
      66           0 : struct VMinus : db::SimpleTag {
      67           0 :   using type = Scalar<DataVector>;
      68             : };
      69             : /// @}
      70             : 
      71             : /// The characteristic speeds corresponding, in order, to `VZero`, `VPlus`, and
      72             : /// `VMinus`.
      73             : template <size_t Dim>
      74           1 : struct CharacteristicSpeeds : db::SimpleTag {
      75           0 :   using type = std::array<DataVector, 3>;
      76             : };
      77             : 
      78             : /// The characteristic fields `VZero`, `VPlus`, and `VMinus` packaged together.
      79             : template <size_t Dim>
      80           1 : struct CharacteristicFields : db::SimpleTag {
      81           0 :   using type = Variables<tmpl::list<VZero<Dim>, VPlus, VMinus>>;
      82             : };
      83             : 
      84             : /// The fields \f$(\Pi, \Phi_i)\f$ reconstructed from the
      85             : /// characteristic fields.
      86             : template <size_t Dim>
      87           1 : struct FieldsFromInverseCharacteristicTransform : db::SimpleTag {
      88           0 :   using type = Variables<tmpl::list<Pi, Phi<Dim>>>;
      89             : };
      90             : }  // namespace SecondOrderScalarWave::Tags

Generated by: LCOV version 1.14