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, db::SimpleTag { 25 0 : using type = std::unordered_map< 26 : std::string, std::unique_ptr<domain::FunctionsOfTime::FunctionOfTime>>; 27 : 28 0 : static constexpr bool pass_metavariables = true; 29 : 30 0 : static std::string name() { return "FunctionsOfTime"; } 31 : 32 : template <typename Metavariables> 33 0 : using option_tags = 34 : tmpl::list<domain::OptionTags::DomainCreator<Metavariables::volume_dim>>; 35 : 36 : template <typename Metavariables> 37 0 : static type create_from_options( 38 : const std::unique_ptr<::DomainCreator<Metavariables::volume_dim>>& 39 : domain_creator) { 40 : return domain_creator->functions_of_time(); 41 : } 42 : }; 43 : } // namespace domain::Tags