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
|