Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <string>
7 :
8 : #include "DataStructures/DataBox/Tag.hpp"
9 : #include "Options/String.hpp"
10 : #include "Utilities/PrettyType.hpp"
11 :
12 0 : namespace OptionTags {
13 : /*!
14 : * \ingroup OptionGroupsGroup
15 : * \brief Holds the `OptionTags::Limiter` option in the input file
16 : */
17 1 : struct LimiterGroup {
18 0 : static std::string name() { return "Limiter"; }
19 0 : static constexpr Options::String help = "Options for limiting troubled cells";
20 : };
21 :
22 : /*!
23 : * \ingroup OptionTagsGroup
24 : * \brief The global cache tag that retrieves the parameters for the limiter
25 : * from the input file
26 : */
27 : template <typename LimiterType>
28 1 : struct Limiter {
29 0 : static std::string name() { return pretty_type::name<LimiterType>(); }
30 0 : static constexpr Options::String help = "Options for the limiter";
31 0 : using type = LimiterType;
32 0 : using group = LimiterGroup;
33 : };
34 : } // namespace OptionTags
35 :
36 : namespace Tags {
37 : /*!
38 : * \brief The global cache tag for the limiter
39 : */
40 : template <typename LimiterType>
41 1 : struct Limiter : db::SimpleTag {
42 0 : using type = LimiterType;
43 0 : using option_tags = tmpl::list<::OptionTags::Limiter<LimiterType>>;
44 :
45 0 : static constexpr bool pass_metavariables = false;
46 0 : static LimiterType create_from_options(const LimiterType& limiter) {
47 : return limiter;
48 : }
49 : };
50 : } // namespace Tags
|