Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <cstdint>
7 : #include <iosfwd>
8 :
9 : /// \cond
10 : namespace Options {
11 : class Option;
12 : template <typename T>
13 : struct create_from_yaml;
14 : } // namespace Options
15 : /// \endcond
16 :
17 : /// Version of local time-stepping in use, either overall or in a
18 : /// particular calculation.
19 1 : enum class LtsMode : uint8_t {
20 : /// Default value is uninitialized.
21 : Uninitialized,
22 : /// Global time-stepping
23 : ///
24 : /// Communicated boundary corrections will be added directly to the
25 : /// volume RHS calculation, and algorithms that are not
26 : /// local-time-stepping aware (such as subcell) can be used.
27 : Off,
28 : /// Conservative local time-stepping using an LtsTimeStepper
29 : ///
30 : /// A flux-conservative boundary integral will be performed to
31 : /// couple elements.
32 : Conservative,
33 : };
34 :
35 0 : std::ostream& operator<<(std::ostream& os, LtsMode value);
36 :
37 : template <>
38 0 : struct Options::create_from_yaml<LtsMode> {
39 : template <typename Metavariables>
40 0 : static LtsMode create(const Options::Option& options) {
41 : return create<void>(options);
42 : }
43 : };
44 :
45 : template <>
46 0 : LtsMode Options::create_from_yaml<LtsMode>::create<void>(
47 : const Options::Option& options);
|