SpECTRE Documentation Coverage Report
Current view: top level - Elliptic/Systems/ScalarGaussBonnet - Tags.hpp Hit Total Coverage
Commit: a8efe75339f4781ca06d43fed14c40144d5e8a08 Lines: 9 52 17.3 %
Date: 2024-10-17 21:19:21
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 ScalarGaussBonnet system.
       6             : 
       7             : #pragma once
       8             : 
       9             : #include <string>
      10             : 
      11             : #include "DataStructures/DataBox/Tag.hpp"
      12             : #include "DataStructures/Tensor/EagerMath/DotProduct.hpp"
      13             : #include "DataStructures/Tensor/TypeAliases.hpp"
      14             : #include "Elliptic/Systems/Xcts/Tags.hpp"
      15             : #include "Evolution/Systems/CurvedScalarWave/Tags.hpp"
      16             : #include "NumericalAlgorithms/LinearOperators/PartialDerivatives.hpp"
      17             : #include "Options/Options.hpp"
      18             : #include "Options/String.hpp"
      19             : #include "PointwiseFunctions/GeneralRelativity/Tags.hpp"
      20             : 
      21             : /// \cond
      22             : class DataVector;
      23             : /// \endcond
      24             : 
      25             : namespace sgb {
      26             : /// Tags related to solving the scalar equation in sGB gravity.
      27           1 : namespace OptionTags {
      28             : 
      29           0 : struct OptionGroup {
      30           0 :   static std::string name() { return "ScalarGaussBonnet"; }
      31           0 :   static constexpr Options::String help =
      32             :       "Options for elliptic solve in sGB gravity.";
      33             : };
      34             : 
      35           0 : struct Epsilon2 {
      36           0 :   static std::string name() { return "Epsilon2"; }
      37           0 :   using type = double;
      38           0 :   using group = OptionGroup;
      39           0 :   static constexpr Options::String help{
      40             :       "Epsilon2 (quadratic term) for the coupling function."};
      41             : };
      42             : 
      43           0 : struct Epsilon4 {
      44           0 :   static std::string name() { return "Epsilon4"; }
      45           0 :   using type = double;
      46           0 :   using group = OptionGroup;
      47           0 :   static constexpr Options::String help{
      48             :       "Epsilon4 (quartic term) for the coupling function."};
      49             : };
      50             : 
      51           0 : struct RolloffLocation {
      52           0 :   static std::string name() { return "RolloffLocation"; }
      53           0 :   using type = double;
      54           0 :   using group = OptionGroup;
      55           0 :   static constexpr Options::String help{
      56             :       "Location of center of tanh function for rolling off the shift."};
      57             : };
      58             : 
      59           0 : struct RolloffRate {
      60           0 :   static std::string name() { return "RolloffRate"; }
      61           0 :   using type = double;
      62           0 :   using group = OptionGroup;
      63           0 :   static constexpr Options::String help{
      64             :       "Rate of roll off for rolling off the shift."};
      65             : };
      66             : 
      67             : }  // namespace OptionTags
      68           0 : namespace Tags {
      69             : 
      70             : /*!
      71             :  * \brief Epsilon2 (quadratic term) for the coupling function.
      72             :  */
      73           1 : struct Epsilon2 : db::SimpleTag {
      74           0 :   using type = double;
      75           0 :   using option_tags = tmpl::list<OptionTags::Epsilon2>;
      76           0 :   static constexpr bool pass_metavariables = false;
      77           0 :   static double create_from_options(const double epsilon) { return epsilon; }
      78             : };
      79             : 
      80             : /*!
      81             :  * \brief Epsilon4 (quartic term) for the coupling function.
      82             :  */
      83           1 : struct Epsilon4 : db::SimpleTag {
      84           0 :   using type = double;
      85           0 :   using option_tags = tmpl::list<OptionTags::Epsilon4>;
      86           0 :   static constexpr bool pass_metavariables = false;
      87           0 :   static double create_from_options(const double epsilon) { return epsilon; }
      88             : };
      89             : 
      90             : /*!
      91             :  * \brief Location of center of tanh function for rolling off the shift.
      92             :  */
      93           1 : struct RolloffLocation : db::SimpleTag {
      94           0 :   using type = double;
      95           0 :   using option_tags = tmpl::list<OptionTags::RolloffLocation>;
      96           0 :   static constexpr bool pass_metavariables = false;
      97           0 :   static double create_from_options(const double rolloff_location) {
      98             :     return rolloff_location;
      99             :   }
     100             : };
     101             : 
     102             : /*!
     103             :  * \brief Rate of roll off for rolling off the shift.
     104             :  */
     105           1 : struct RolloffRate : db::SimpleTag {
     106           0 :   using type = double;
     107           0 :   using option_tags = tmpl::list<OptionTags::RolloffRate>;
     108           0 :   static constexpr bool pass_metavariables = false;
     109           0 :   static double create_from_options(const double rolloff_rate) {
     110             :     return rolloff_rate;
     111             :   }
     112             : };
     113             : 
     114             : /*!
     115             :  * \brief The scalar field $\Psi$.
     116             :  */
     117           1 : struct Psi : db::SimpleTag {
     118           0 :   using type = Scalar<DataVector>;
     119             : };
     120             : 
     121             : /*!
     122             :  * \brief Rolled-off shift (i.e. the shift used in computing the fluxes).
     123             :  */
     124           1 : struct RolledOffShift : db::SimpleTag {
     125           0 :   using type = tnsr::I<DataVector, 3, Frame::Inertial>;
     126             : };
     127             : 
     128             : /*!
     129             :  * \brief Pi computed using the rolled-off shift.
     130             :  */
     131           1 : struct PiWithRolledOffShift : db::SimpleTag {
     132           0 :   using type = Scalar<DataVector>;
     133             : };
     134             : }  // namespace Tags
     135             : }  // namespace sgb

Generated by: LCOV version 1.14