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
|