SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Systems/SecondOrderScalarWave - Tags.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 39.1 % 23 9
Test Date: 2026-10-22 17:29:42
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 2.0-1