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 : 9 : #include "Options/String.hpp" 10 : #include "Utilities/TMPL.hpp" 11 : 12 : /// \cond 13 : namespace PUP { 14 : class er; 15 : } // namespace PUP 16 : /// \endcond 17 : 18 : namespace ScalarTensor { 19 : 20 : /*! 21 : * \brief Linear, quadratic and quartic coupling parameters to curvature. 22 : */ 23 1 : struct CouplingParameterOptions { 24 0 : static constexpr Options::String help = { 25 : "Options for coupling parameters to curvature."}; 26 : 27 0 : struct Linear { 28 0 : using type = double; 29 0 : static constexpr Options::String help = "Linear coupling parameter."; 30 : }; 31 : 32 0 : struct Quadratic { 33 0 : using type = double; 34 0 : static constexpr Options::String help = "Quadratic coupling parameter."; 35 : }; 36 : 37 0 : struct Quartic { 38 0 : using type = double; 39 0 : static constexpr Options::String help = "Quartic coupling parameter."; 40 : }; 41 : 42 0 : using options = tmpl::list<Linear, Quadratic, Quartic>; 43 : 44 0 : CouplingParameterOptions() = default; 45 0 : CouplingParameterOptions(double linear_in, double quadratic_in, 46 : double quartic_in); 47 : 48 : // NOLINTNEXTLINE(google-runtime-references) 49 0 : void pup(PUP::er& p); 50 : 51 0 : double linear{std::numeric_limits<double>::signaling_NaN()}; 52 0 : double quadratic{std::numeric_limits<double>::signaling_NaN()}; 53 0 : double quartic{std::numeric_limits<double>::signaling_NaN()}; 54 : }; 55 : 56 0 : bool operator==(const CouplingParameterOptions& lhs, 57 : const CouplingParameterOptions& rhs); 58 0 : bool operator!=(const CouplingParameterOptions& lhs, 59 : const CouplingParameterOptions& rhs); 60 : 61 : } // namespace ScalarTensor