Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <memory> 7 : #include <string> 8 : #include <unordered_map> 9 : 10 : #include "DataStructures/DataBox/Tag.hpp" 11 : #include "Domain/Creators/DomainCreator.hpp" 12 : #include "Domain/Creators/OptionTags.hpp" 13 : #include "Domain/FunctionsOfTime/Tags.hpp" 14 : #include "Utilities/TMPL.hpp" 15 : 16 : /// \cond 17 : namespace domain::FunctionsOfTime { 18 : struct FunctionOfTime; 19 : } 20 : /// \endcond 21 : 22 : namespace domain::Tags { 23 : /// \brief The FunctionsOfTime initialized from a DomainCreator 24 1 : struct FunctionsOfTimeInitialize : FunctionsOfTime { 25 0 : using base = FunctionsOfTime; 26 : 27 0 : static constexpr bool pass_metavariables = true; 28 : 29 0 : static std::string name() { return "FunctionsOfTime"; } 30 : 31 : template <typename Metavariables> 32 0 : using option_tags = 33 : tmpl::list<domain::OptionTags::DomainCreator<Metavariables::volume_dim>>; 34 : 35 : template <typename Metavariables> 36 0 : static type create_from_options( 37 : const std::unique_ptr<::DomainCreator<Metavariables::volume_dim>>& 38 : domain_creator) { 39 : return domain_creator->functions_of_time(); 40 : } 41 : }; 42 : } // namespace domain::Tags