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 <string>
8 :
9 : #include "DataStructures/DataBox/Tag.hpp"
10 : #include "Options/String.hpp"
11 : #include "Utilities/PrettyType.hpp"
12 :
13 : namespace CurvedScalarWave {
14 1 : namespace OptionTags {
15 :
16 0 : struct BackgroundSpacetimeGroup {
17 0 : static constexpr Options::String help = {
18 : "The background spacetime on which the scalar wave "
19 : "propagates."};
20 0 : static std::string name() { return "BackgroundSpacetime"; }
21 : };
22 :
23 : template <typename BackgroundType>
24 0 : struct BackgroundSpacetime {
25 0 : static constexpr Options::String help = {
26 : "Options for the background spacetime on which the scalar wave "
27 : "propagates."};
28 0 : static std::string name() {
29 : return pretty_type::short_name<BackgroundType>();
30 : }
31 0 : using type = BackgroundType;
32 0 : using group = BackgroundSpacetimeGroup;
33 : };
34 : } // namespace OptionTags
35 :
36 1 : namespace Tags {
37 : /*!
38 : * \brief The background spacetime on which the scalar wave propagates.
39 : */
40 : template <typename BackgroundType>
41 1 : struct BackgroundSpacetime : db::SimpleTag {
42 0 : using type = BackgroundType;
43 0 : using option_tags =
44 : tmpl::list<OptionTags::BackgroundSpacetime<BackgroundType>>;
45 0 : static constexpr bool pass_metavariables = false;
46 0 : static BackgroundType create_from_options(const BackgroundType& background) {
47 : return background;
48 : }
49 : };
50 : } // namespace Tags
51 : } // namespace CurvedScalarWave
|