Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <memory> 7 : 8 : #include "DataStructures/DataBox/Tag.hpp" 9 : #include "Domain/Creators/OptionTags.hpp" 10 : #include "Domain/Tags.hpp" 11 : #include "Evolution/DgSubcell/SubcellOptions.hpp" 12 : #include "NumericalAlgorithms/DiscontinuousGalerkin/Tags/OptionsGroup.hpp" 13 : #include "Options/String.hpp" 14 : #include "Utilities/TMPL.hpp" 15 : 16 : namespace evolution::dg::subcell { 17 : namespace OptionTags { 18 : /// System-agnostic options for DG-subcell 19 1 : struct SubcellOptions { 20 0 : static std::string name() { return "Subcell"; } 21 0 : using type = evolution::dg::subcell::SubcellOptions; 22 0 : static constexpr Options::String help = 23 : "System-agnostic options for DG-subcell"; 24 0 : using group = ::dg::OptionTags::DiscontinuousGalerkinGroup; 25 : }; 26 : } // namespace OptionTags 27 : 28 : namespace Tags { 29 : /// System-agnostic options for DG-subcell 30 : template <size_t Dim> 31 1 : struct SubcellOptions : db::SimpleTag { 32 0 : using type = evolution::dg::subcell::SubcellOptions; 33 : 34 0 : using option_tags = tmpl::list<OptionTags::SubcellOptions, 35 : ::domain::OptionTags::DomainCreator<Dim>>; 36 0 : static constexpr bool pass_metavariables = false; 37 0 : static type create_from_options( 38 : const type& subcell_options, 39 : const std::unique_ptr<DomainCreator<Dim>>& domain_creator) { 40 : return {subcell_options, *domain_creator}; 41 : } 42 : }; 43 : } // namespace Tags 44 : } // namespace evolution::dg::subcell