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 : 8 : #include "DataStructures/DataBox/Tag.hpp" 9 : #include "Options/String.hpp" 10 : #include "PointwiseFunctions/InitialDataUtilities/InitialData.hpp" 11 : #include "Utilities/Serialization/Serialize.hpp" 12 : #include "Utilities/TMPL.hpp" 13 : 14 : namespace evolution::initial_data { 15 : /*! 16 : * \brief Option tags for initial data of evolution system. 17 : */ 18 1 : namespace OptionTags { 19 : /*! 20 : * \ingroup OptionTagsGroup 21 : * \brief Class holding options for initial data of evolution system. 22 : */ 23 1 : struct InitialData { 24 0 : static constexpr Options::String help = 25 : "Options for initial data of evolution system"; 26 0 : using type = std::unique_ptr<evolution::initial_data::InitialData>; 27 : }; 28 : } // namespace OptionTags 29 : 30 : /*! 31 : * \brief Tags for initial data of evolution system. 32 : */ 33 1 : namespace Tags { 34 : /*! 35 : * \brief The global cache tag for the initial data type 36 : */ 37 1 : struct InitialData : db::SimpleTag { 38 0 : using type = std::unique_ptr<evolution::initial_data::InitialData>; 39 0 : using option_tags = 40 : tmpl::list<evolution::initial_data::OptionTags::InitialData>; 41 : 42 0 : static constexpr bool pass_metavariables = false; 43 0 : static type create_from_options(const type& value) { 44 : return deserialize<type>(serialize<type>(value).data()); 45 : } 46 : }; 47 : } // namespace Tags 48 : } // namespace evolution::initial_data