Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <iosfwd>
7 : #include <limits>
8 :
9 : /// \cond
10 : namespace PUP {
11 : class er;
12 : } // namespace PUP
13 : /// \endcond
14 :
15 : /// \ingroup TimeGroup
16 : /// Tolerances used for time step error control
17 1 : struct StepperErrorTolerances {
18 0 : enum class Estimates { None, StepperOrder, AllOrders };
19 :
20 : /// Which estimates the time stepper should generate.
21 1 : Estimates estimates = Estimates::None;
22 0 : double absolute = std::numeric_limits<double>::signaling_NaN();
23 0 : double relative = std::numeric_limits<double>::signaling_NaN();
24 :
25 0 : void pup(PUP::er& p);
26 : };
27 :
28 0 : bool operator==(const StepperErrorTolerances& a,
29 : const StepperErrorTolerances& b);
30 0 : bool operator!=(const StepperErrorTolerances& a,
31 : const StepperErrorTolerances& b);
32 :
33 0 : std::ostream& operator<<(std::ostream& os,
34 : const StepperErrorTolerances& tolerances);
|