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/GrMhd/GhValenciaDivClean/FiniteDifference/FilterOptions.hpp"
12 : #include "Evolution/Systems/GrMhd/GhValenciaDivClean/FiniteDifference/Reconstructor.hpp"
13 : #include "Options/String.hpp"
14 : #include "Utilities/TMPL.hpp"
15 :
16 : namespace grmhd::GhValenciaDivClean::fd {
17 : /// Option tags for finite difference solver
18 1 : namespace OptionTags {
19 : /// \brief Option tag for the reconstructor
20 : template <typename System>
21 1 : struct Reconstructor {
22 0 : using type = std::unique_ptr<fd::Reconstructor<System>>;
23 :
24 0 : static constexpr Options::String help = {"The reconstruction scheme to use."};
25 0 : using group = evolution::dg::subcell::OptionTags::SubcellSolverGroup;
26 : };
27 :
28 : /// \brief Option tag for the filter/dissipation options.
29 1 : struct FilterOptions {
30 0 : using type = fd::FilterOptions;
31 :
32 0 : static constexpr Options::String help = type::help;
33 0 : using group = evolution::dg::subcell::OptionTags::SubcellSolverGroup;
34 : };
35 : } // namespace OptionTags
36 :
37 : /// %Tags for finite difference solver
38 1 : namespace Tags {
39 : /// \brief Tag for the reconstructor
40 : template <typename System>
41 1 : struct Reconstructor : db::SimpleTag {
42 0 : using type = std::unique_ptr<fd::Reconstructor<System>>;
43 0 : using option_tags =
44 : tmpl::list<OptionTags::Reconstructor<System>>;
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 :
52 : /// \brief Tag for filter/dissipation options.
53 1 : struct FilterOptions : db::SimpleTag {
54 0 : using type = fd::FilterOptions;
55 0 : using option_tags = tmpl::list<OptionTags::FilterOptions>;
56 :
57 0 : static constexpr bool pass_metavariables = false;
58 0 : static type create_from_options(const type& filter_options) {
59 : return filter_options;
60 : }
61 : };
62 : } // namespace Tags
63 : } // namespace grmhd::GhValenciaDivClean::fd
|