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/ForceFree/FiniteDifference/Reconstructor.hpp" 12 : #include "Evolution/Systems/ForceFree/Tags.hpp" 13 : #include "Options/String.hpp" 14 : #include "Utilities/TMPL.hpp" 15 : 16 : namespace ForceFree::fd { 17 : 18 : // A tag list of variables used for FD reconstruction process. For the ForceFree 19 : // evolution system, we use the whole set of evolved variables and the 20 : // generalized current density TildeJ. 21 0 : using tags_list_for_reconstruction = 22 : tmpl::list<ForceFree::Tags::TildeJ, ForceFree::Tags::TildeE, 23 : ForceFree::Tags::TildeB, ForceFree::Tags::TildePsi, 24 : ForceFree::Tags::TildePhi, ForceFree::Tags::TildeQ>; 25 : 26 0 : namespace OptionTags { 27 : /*! 28 : * \brief Holds the subcell reconstructor in the input file 29 : */ 30 1 : struct Reconstructor { 31 0 : using type = std::unique_ptr<fd::Reconstructor>; 32 : 33 0 : static constexpr Options::String help = {"The reconstruction scheme to use."}; 34 0 : using group = evolution::dg::subcell::OptionTags::SubcellSolverGroup; 35 : }; 36 : } // namespace OptionTags 37 : 38 0 : namespace Tags { 39 : /*! 40 : * \brief Tag for the reconstructor 41 : */ 42 1 : struct Reconstructor : db::SimpleTag { 43 0 : using type = std::unique_ptr<fd::Reconstructor>; 44 0 : using option_tags = tmpl::list<OptionTags::Reconstructor>; 45 : 46 0 : static constexpr bool pass_metavariables = false; 47 0 : static type create_from_options(const type& reconstructor) { 48 : return reconstructor->get_clone(); 49 : } 50 : }; 51 : } // namespace Tags 52 : } // namespace ForceFree::fd