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 <pup_stl.h> 8 : #include <vector> 9 : 10 : #include "DataStructures/DataBox/Tag.hpp" 11 : #include "Time/OptionTags/StepChoosers.hpp" 12 : #include "Time/StepChoosers/StepChooser.hpp" 13 : #include "Utilities/Serialization/Serialize.hpp" 14 : #include "Utilities/TMPL.hpp" 15 : 16 : namespace Tags { 17 : /// \ingroup DataBoxTagsGroup 18 : /// \ingroup TimeGroup 19 : /// \brief Tag for a vector of ::StepChooser%s 20 1 : struct StepChoosers : db::SimpleTag { 21 0 : using type = 22 : std::vector<std::unique_ptr<::StepChooser<StepChooserUse::LtsStep>>>; 23 0 : using option_tags = tmpl::list<::OptionTags::StepChoosers>; 24 0 : static constexpr bool is_overlayable = true; 25 : 26 0 : static constexpr bool pass_metavariables = false; 27 0 : static type create_from_options(const type& step_choosers) { 28 : return deserialize<type>(serialize<type>(step_choosers).data()); 29 : } 30 : }; 31 : } // namespace Tags