SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Systems/NewtonianEuler - Tags.hpp Hit Total Coverage
Commit: 35a1e98cd3e4fdea528eb8100f99c2f707894fda Lines: 13 39 33.3 %
Date: 2024-04-19 00:10:48
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             : #include <string>
       8             : 
       9             : #include "DataStructures/DataBox/Tag.hpp"
      10             : #include "DataStructures/Tensor/TypeAliases.hpp"
      11             : #include "Evolution/Systems/NewtonianEuler/Sources/Source.hpp"
      12             : #include "Evolution/Systems/NewtonianEuler/TagsDeclarations.hpp"
      13             : #include "Evolution/Tags.hpp"
      14             : #include "Options/String.hpp"
      15             : 
      16             : /// \cond
      17             : class DataVector;
      18             : /// \endcond
      19             : 
      20             : namespace NewtonianEuler {
      21             : /// %OptionTags for the conservative formulation of the Newtonian Euler system
      22           1 : namespace OptionTags {
      23             : template <size_t Dim>
      24           0 : struct SourceTerm {
      25           0 :   using type = std::unique_ptr<NewtonianEuler::Sources::Source<Dim>>;
      26           0 :   static constexpr Options::String help = "The source term to be used.";
      27           0 :   using group = ::evolution::OptionTags::SystemGroup;
      28             : };
      29             : }  // namespace OptionTags
      30             : 
      31             : /// %Tags for the conservative formulation of the Newtonian Euler system
      32             : namespace Tags {
      33             : /// The mass density of the fluid (as a conservative variable).
      34           1 : struct MassDensityCons : db::SimpleTag {
      35           0 :   using type = Scalar<DataVector>;
      36             : };
      37             : 
      38             : /// The momentum density of the fluid.
      39             : template <size_t Dim, typename Fr>
      40           1 : struct MomentumDensity : db::SimpleTag {
      41           0 :   using type = tnsr::I<DataVector, Dim, Fr>;
      42           0 :   static std::string name() { return Frame::prefix<Fr>() + "MomentumDensity"; }
      43             : };
      44             : 
      45             : /// The energy density of the fluid.
      46           1 : struct EnergyDensity : db::SimpleTag {
      47           0 :   using type = Scalar<DataVector>;
      48             : };
      49             : 
      50             : /// The sound speed.
      51             : template <typename DataType>
      52           1 : struct SoundSpeed : db::SimpleTag {
      53           0 :   using type = Scalar<DataType>;
      54             : };
      55             : 
      56             : /// The characteristic speeds.
      57             : template <size_t Dim>
      58           1 : struct CharacteristicSpeeds : db::SimpleTag {
      59           0 :   using type = std::array<DataVector, Dim + 2>;
      60             : };
      61             : 
      62             : /// @{
      63             : /// The characteristic fields of the NewtonianEuler system.
      64           1 : struct VMinus : db::SimpleTag {
      65           0 :   using type = Scalar<DataVector>;
      66             : };
      67             : template <size_t Dim>
      68           0 : struct VMomentum : db::SimpleTag {
      69           0 :   using type = tnsr::I<DataVector, Dim>;
      70             : };
      71           0 : struct VPlus : db::SimpleTag {
      72           0 :   using type = Scalar<DataVector>;
      73             : };
      74             : /// @}
      75             : 
      76             : /// The internal energy density.
      77             : template <typename DataType>
      78           1 : struct InternalEnergyDensity : db::SimpleTag {
      79           0 :   using type = Scalar<DataType>;
      80             : };
      81             : 
      82             : /// The kinetic energy density.
      83             : template <typename DataType>
      84           1 : struct KineticEnergyDensity : db::SimpleTag {
      85           0 :   using type = Scalar<DataType>;
      86             : };
      87             : 
      88             : /// The local Mach number of the flow
      89             : template <typename DataType>
      90           1 : struct MachNumber : db::SimpleTag {
      91           0 :   using type = Scalar<DataType>;
      92             : };
      93             : 
      94             : /// The ram pressure of the fluid.
      95             : template <typename DataType, size_t Dim, typename Fr>
      96           1 : struct RamPressure : db::SimpleTag {
      97           0 :   using type = tnsr::II<DataType, Dim, Fr>;
      98           0 :   static std::string name() { return Frame::prefix<Fr>() + "RamPressure"; }
      99             : };
     100             : 
     101             : /// The specific kinetic energy.
     102             : template <typename DataType>
     103           1 : struct SpecificKineticEnergy : db::SimpleTag {
     104           0 :   using type = Scalar<DataType>;
     105             : };
     106             : 
     107             : /// The source term in the evolution equations
     108             : template <size_t Dim>
     109           1 : struct SourceTerm : db::SimpleTag {
     110           0 :   using type = std::unique_ptr<NewtonianEuler::Sources::Source<Dim>>;
     111             : 
     112           0 :   using option_tags = tmpl::list<OptionTags::SourceTerm<Dim>>;
     113             : 
     114           0 :   static constexpr bool pass_metavariables = false;
     115           0 :   static type create_from_options(const type& source_term) {
     116             :     return source_term->get_clone();
     117             :   }
     118             : };
     119             : 
     120             : }  // namespace Tags
     121             : }  // namespace NewtonianEuler

Generated by: LCOV version 1.14