SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Systems/GrMhd/ValenciaDivClean - PrimitiveFromConservativeOptions.hpp Hit Total Coverage
Commit: 7749b4e17cab3e66ea679705b5275ee50bbe129f Lines: 1 29 3.4 %
Date: 2024-09-12 21:02:07
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 <limits>
       8             : #include <string>
       9             : #include <vector>
      10             : 
      11             : #include "Options/Context.hpp"
      12             : #include "Options/String.hpp"
      13             : #include "Utilities/TMPL.hpp"
      14             : 
      15             : /// \cond
      16             : namespace PUP {
      17             : class er;
      18             : }  // namespace PUP
      19             : /// \endcond
      20             : 
      21             : namespace grmhd::ValenciaDivClean {
      22             : 
      23             : /// Options to be passed to the Con2Prim algorithm.
      24             : /// Currently, we simply set a threshold for tildeD
      25             : /// below which the inversion is not performed and
      26             : /// the density is set to atmosphere values.
      27           1 : class PrimitiveFromConservativeOptions {
      28             :  public:
      29           0 :   struct CutoffDForInversion {
      30           0 :     static std::string name() { return "CutoffDForInversion"; }
      31           0 :     static constexpr Options::String help{
      32             :         "Value of density times Lorentz factor below which we skip "
      33             :         "conservative to primitive inversion."};
      34           0 :     using type = double;
      35           0 :     static type lower_bound() { return 0.0; }
      36             :   };
      37             : 
      38           0 :   struct DensityWhenSkippingInversion {
      39           0 :     static std::string name() { return "DensityWhenSkippingInversion"; }
      40           0 :     static constexpr Options::String help{
      41             :         "Value of density when we skip conservative to primitive inversion."};
      42           0 :     using type = double;
      43           0 :     static type lower_bound() { return 0.0; }
      44             :   };
      45             : 
      46           0 :   struct KastaunMaxLorentzFactor {
      47           0 :     static constexpr Options::String help{
      48             :         "The maximum Lorentz allowed during primitive recovery when using the "
      49             :         "Kastaun schemes."};
      50           0 :     using type = double;
      51           0 :     static type lower_bound() { return 1.0; }
      52             :   };
      53             : 
      54           0 :   using options = tmpl::list<CutoffDForInversion, DensityWhenSkippingInversion,
      55             :                              KastaunMaxLorentzFactor>;
      56             : 
      57           0 :   static constexpr Options::String help{
      58             :       "Options given to conservative to primitive inversion."};
      59             : 
      60           0 :   PrimitiveFromConservativeOptions() = default;
      61             : 
      62           0 :   PrimitiveFromConservativeOptions(double cutoff_d_for_inversion,
      63             :                                    double density_when_skipping_inversion,
      64             :                                    double kastaun_max_lorentz_factor,
      65             :                                    const Options::Context& context = {});
      66             : 
      67           0 :   void pup(PUP::er& p);
      68             : 
      69           0 :   double cutoff_d_for_inversion() const { return cutoff_d_for_inversion_; }
      70           0 :   double density_when_skipping_inversion() const {
      71             :     return density_when_skipping_inversion_;
      72             :   }
      73           0 :   double kastaun_max_lorentz_factor() const {
      74             :     return kastaun_max_lorentz_factor_;
      75             :   }
      76             : 
      77             :  private:
      78           0 :   friend bool operator==(const PrimitiveFromConservativeOptions& lhs,
      79             :                          const PrimitiveFromConservativeOptions& rhs);
      80             : 
      81           0 :   double cutoff_d_for_inversion_ = std::numeric_limits<double>::signaling_NaN();
      82           0 :   double density_when_skipping_inversion_ =
      83             :       std::numeric_limits<double>::signaling_NaN();
      84           0 :   double kastaun_max_lorentz_factor_ =
      85             :       std::numeric_limits<double>::signaling_NaN();
      86             : };
      87             : 
      88           0 : bool operator!=(const PrimitiveFromConservativeOptions& lhs,
      89             :                 const PrimitiveFromConservativeOptions& rhs);
      90             : 
      91             : }  // namespace grmhd::ValenciaDivClean

Generated by: LCOV version 1.14