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 1 : namespace CurvedScalarWave { 14 0 : 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