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
|