Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <string> 7 : 8 : #include "DataStructures/DataBox/Tag.hpp" 9 : #include "Time/OptionTags/InitialSlabSize.hpp" 10 : #include "Time/OptionTags/InitialTimeStep.hpp" 11 : #include "Utilities/ErrorHandling/Error.hpp" 12 : #include "Utilities/TMPL.hpp" 13 : 14 : namespace Initialization { 15 : /// \ingroup InitializationGroup 16 : /// \brief %Tags used during initialization of parallel components. 17 1 : namespace Tags { 18 0 : struct InitialTimeDelta : db::SimpleTag { 19 0 : using type = double; 20 0 : using option_tags = tmpl::list<OptionTags::InitialTimeStep>; 21 : 22 0 : static constexpr bool pass_metavariables = false; 23 0 : static double create_from_options(const double initial_time_step) { 24 : if (initial_time_step == 0.0) { 25 : ERROR_NO_TRACE("InitialTimeStep must be nonzero"); 26 : } 27 : return initial_time_step; 28 : } 29 : }; 30 : 31 0 : struct InitialSlabSize : db::SimpleTag { 32 0 : using type = double; 33 0 : using option_tags = tmpl::list<OptionTags::InitialSlabSize>; 34 : 35 0 : static constexpr bool pass_metavariables = false; 36 0 : static double create_from_options(const double initial_slab_size) { 37 : if (initial_slab_size == 0.0) { 38 : ERROR_NO_TRACE("InitialSlabSize must be nonzero"); 39 : } 40 : return initial_slab_size; 41 : } 42 : }; 43 : } // namespace Tags 44 : } // namespace Initialization