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