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