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);