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/ScalarAdvection/FiniteDifference/Reconstructor.hpp" 13 : #include "Options/String.hpp" 14 : #include "Utilities/TMPL.hpp" 15 : 16 : namespace ScalarAdvection::fd { 17 0 : namespace OptionTags { 18 : /*! 19 : * \brief Holds the subcell reconstructor in the input file 20 : */ 21 : template <size_t Dim> 22 1 : struct Reconstructor { 23 0 : using type = std::unique_ptr<fd::Reconstructor<Dim>>; 24 : 25 0 : static constexpr Options::String help = {"The reconstruction scheme to use."}; 26 0 : using group = evolution::dg::subcell::OptionTags::SubcellSolverGroup; 27 : }; 28 : } // namespace OptionTags 29 : 30 0 : namespace Tags { 31 : /*! 32 : * \brief Tag for the reconstructor 33 : */ 34 : template <size_t Dim> 35 1 : struct Reconstructor : db::SimpleTag, 36 : evolution::dg::subcell::Tags::Reconstructor { 37 0 : using type = std::unique_ptr<fd::Reconstructor<Dim>>; 38 0 : using option_tags = tmpl::list<OptionTags::Reconstructor<Dim>>; 39 : 40 0 : static constexpr bool pass_metavariables = false; 41 0 : static type create_from_options(const type& reconstructor) { 42 : return reconstructor->get_clone(); 43 : } 44 : }; 45 : } // namespace Tags 46 : } // namespace ScalarAdvection::fd