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/Tag.hpp" 10 : #include "Evolution/DgSubcell/Tags/Reconstructor.hpp" 11 : #include "Evolution/DgSubcell/Tags/SubcellSolver.hpp" 12 : #include "Evolution/Systems/GrMhd/GhValenciaDivClean/FiniteDifference/FilterOptions.hpp" 13 : #include "Evolution/Systems/GrMhd/GhValenciaDivClean/FiniteDifference/Reconstructor.hpp" 14 : #include "Options/String.hpp" 15 : #include "Utilities/TMPL.hpp" 16 : 17 : namespace grmhd::GhValenciaDivClean::fd { 18 : /// Option tags for finite difference solver 19 1 : namespace OptionTags { 20 : /// \brief Option tag for the reconstructor 21 1 : struct Reconstructor { 22 0 : using type = std::unique_ptr<fd::Reconstructor>; 23 : 24 0 : static constexpr Options::String help = {"The reconstruction scheme to use."}; 25 0 : using group = evolution::dg::subcell::OptionTags::SubcellSolverGroup; 26 : }; 27 : 28 : /// \brief Option tag for the filter/dissipation options. 29 1 : struct FilterOptions { 30 0 : using type = fd::FilterOptions; 31 : 32 0 : static constexpr Options::String help = type::help; 33 0 : using group = evolution::dg::subcell::OptionTags::SubcellSolverGroup; 34 : }; 35 : } // namespace OptionTags 36 : 37 : /// %Tags for finite difference solver 38 1 : namespace Tags { 39 : /// \brief Tag for the reconstructor 40 1 : struct Reconstructor : db::SimpleTag, 41 : evolution::dg::subcell::Tags::Reconstructor { 42 0 : using type = std::unique_ptr<fd::Reconstructor>; 43 0 : using option_tags = tmpl::list<OptionTags::Reconstructor>; 44 : 45 0 : static constexpr bool pass_metavariables = false; 46 0 : static type create_from_options(const type& reconstructor) { 47 : return reconstructor->get_clone(); 48 : } 49 : }; 50 : 51 : /// \brief Tag for filter/dissipation options. 52 1 : struct FilterOptions : db::SimpleTag { 53 0 : using type = fd::FilterOptions; 54 0 : using option_tags = tmpl::list<OptionTags::FilterOptions>; 55 : 56 0 : static constexpr bool pass_metavariables = false; 57 0 : static type create_from_options(const type& filter_options) { 58 : return filter_options; 59 : } 60 : }; 61 : } // namespace Tags 62 : } // namespace grmhd::GhValenciaDivClean::fd