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