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 <memory>
8 :
9 : #include "DataStructures/DataBox/Prefixes.hpp"
10 : #include "Options/String.hpp"
11 : #include "PointwiseFunctions/ConstraintDamping/DampingFunction.hpp"
12 :
13 : /// \cond
14 : namespace gh::OptionTags {
15 : struct Group;
16 : } // namespace gh::OptionTags
17 : /// \endcond
18 :
19 : namespace gh {
20 : namespace OptionTags {
21 : template <size_t VolumeDim, typename Fr>
22 0 : struct DampingFunctionGamma0 {
23 0 : using type =
24 : std::unique_ptr<::ConstraintDamping::DampingFunction<VolumeDim, Fr>>;
25 0 : static constexpr Options::String help{
26 : "DampingFunction for damping parameter gamma0"};
27 0 : using group = gh::OptionTags::Group;
28 : };
29 :
30 : template <size_t VolumeDim, typename Fr>
31 0 : struct DampingFunctionGamma1 {
32 0 : using type =
33 : std::unique_ptr<::ConstraintDamping::DampingFunction<VolumeDim, Fr>>;
34 0 : static constexpr Options::String help{
35 : "DampingFunction for damping parameter gamma1"};
36 0 : using group = gh::OptionTags::Group;
37 : };
38 :
39 : template <size_t VolumeDim, typename Fr>
40 0 : struct DampingFunctionGamma2 {
41 0 : using type =
42 : std::unique_ptr<::ConstraintDamping::DampingFunction<VolumeDim, Fr>>;
43 0 : static constexpr Options::String help{
44 : "DampingFunction for damping parameter gamma2"};
45 0 : using group = gh::OptionTags::Group;
46 : };
47 : } // namespace OptionTags
48 :
49 : namespace Tags {
50 : /*!
51 : * \brief Constraint dammping parameter \f$\gamma_0\f$ for the generalized
52 : * harmonic system (cf. \cite Lindblom2005qh).
53 : */
54 1 : struct ConstraintGamma0 : db::SimpleTag {
55 0 : using type = Scalar<DataVector>;
56 : };
57 :
58 : /*!
59 : * \brief Constraint dammping parameter \f$\gamma_1\f$ for the generalized
60 : * harmonic system (cf. \cite Lindblom2005qh).
61 : */
62 1 : struct ConstraintGamma1 : db::SimpleTag {
63 0 : using type = Scalar<DataVector>;
64 : };
65 :
66 : /*!
67 : * \brief Constraint dammping parameter \f$\gamma_2\f$ for the generalized
68 : * harmonic system (cf. \cite Lindblom2005qh).
69 : */
70 1 : struct ConstraintGamma2 : db::SimpleTag {
71 0 : using type = Scalar<DataVector>;
72 : };
73 :
74 : /*!
75 : * \brief A DampingFunction to compute the constraint damping parameter
76 : * \f$\gamma_0\f$.
77 : */
78 : template <size_t VolumeDim, typename Fr>
79 1 : struct DampingFunctionGamma0 : db::SimpleTag {
80 0 : using DampingFunctionType =
81 : ::ConstraintDamping::DampingFunction<VolumeDim, Fr>;
82 0 : using type = std::unique_ptr<DampingFunctionType>;
83 0 : using option_tags =
84 : tmpl::list<::gh::OptionTags::DampingFunctionGamma0<VolumeDim, Fr>>;
85 :
86 0 : static constexpr bool pass_metavariables = false;
87 0 : static type create_from_options(const type& damping_function) {
88 : return damping_function->get_clone();
89 : }
90 : };
91 :
92 : /*!
93 : * \brief A DampingFunction to compute the constraint damping parameter
94 : * \f$\gamma_0\f$.
95 : */
96 : template <size_t VolumeDim, typename Fr>
97 1 : struct DampingFunctionGamma1 : db::SimpleTag {
98 0 : using DampingFunctionType =
99 : ::ConstraintDamping::DampingFunction<VolumeDim, Fr>;
100 0 : using type = std::unique_ptr<DampingFunctionType>;
101 0 : using option_tags =
102 : tmpl::list<::gh::OptionTags::DampingFunctionGamma1<VolumeDim, Fr>>;
103 :
104 0 : static constexpr bool pass_metavariables = false;
105 0 : static type create_from_options(const type& damping_function) {
106 : return damping_function->get_clone();
107 : }
108 : };
109 :
110 : /*!
111 : * \brief A DampingFunction to compute the constraint damping parameter
112 : * \f$\gamma_0\f$.
113 : */
114 : template <size_t VolumeDim, typename Fr>
115 1 : struct DampingFunctionGamma2 : db::SimpleTag {
116 0 : using DampingFunctionType =
117 : ::ConstraintDamping::DampingFunction<VolumeDim, Fr>;
118 0 : using type = std::unique_ptr<DampingFunctionType>;
119 0 : using option_tags =
120 : tmpl::list<::gh::OptionTags::DampingFunctionGamma2<VolumeDim, Fr>>;
121 :
122 0 : static constexpr bool pass_metavariables = false;
123 0 : static type create_from_options(const type& damping_function) {
124 : return damping_function->get_clone();
125 : }
126 : };
127 : } // namespace Tags
128 : } // namespace gh
|