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 serialize_and_deserialize<type>(value);
45 : }
46 : };
47 : } // namespace Tags
48 : } // namespace evolution::initial_data
|