Flow123d
JS_before_hm-887-g601087d
|
Representation of one time step.. More...
#include <time_governor.hh>
Public Member Functions | |
TimeStep (double init_time, std::shared_ptr< TimeUnitConversion > time_unit_conversion=std::make_shared< TimeUnitConversion >()) | |
TimeStep () | |
TimeStep (const TimeStep &other) | |
TimeStep | make_next (double new_length) const |
TimeStep | make_next (double new_lenght, double end_time) const |
unsigned int | index () const |
double | length () const |
double | end () const |
bool | gt (double other_time) const |
bool | ge (double other_time) const |
bool | lt (double other_time) const |
bool | le (double other_time) const |
bool | eq (double other_time) const |
bool | contains (double other_time) const |
double | read_time (Input::Iterator< Input::Tuple > time_it, double default_time=std::numeric_limits< double >::quiet_NaN()) const |
double | read_coef (Input::Iterator< std::string > unit_it) const |
double | get_coef () const |
bool | operator== (const TimeStep &other) |
Private Member Functions | |
bool | safe_compare (double t1, double t0) const |
Private Attributes | |
unsigned int | index_ |
Index of the step is index if the end time. Zero time step is artificial. More... | |
double | length_ |
double | end_ |
End time point of the time step. More... | |
std::shared_ptr< TimeUnitConversion > | time_unit_conversion_ |
Conversion unit of all time values within the equation. More... | |
Representation of one time step..
Time step consists of the time step length()
and from time step () time. More over we store the index of the time step within it time governor.
The reason to store both the end time and the length of the time step is to allow safe comparisons of the time with safety margin small relative to the time step length.
Definition at line 113 of file time_governor.hh.
TimeStep::TimeStep | ( | double | init_time, |
std::shared_ptr< TimeUnitConversion > | time_unit_conversion = std::make_shared<TimeUnitConversion>() |
||
) |
Constructor of the zero time step.
Definition at line 182 of file time_governor.cc.
TimeStep::TimeStep | ( | ) |
Default constructor. Creates undefined time step.
Definition at line 191 of file time_governor.cc.
TimeStep::TimeStep | ( | const TimeStep & | other | ) |
Copy constructor.
Definition at line 202 of file time_governor.cc.
|
inline |
|
inline |
|
inline |
|
inline |
double TimeStep::get_coef | ( | ) | const |
Return global time unit coefficient of equation stored in coeff_.
Definition at line 250 of file time_governor.cc.
|
inline |
Performs rounding safe comparison time > other_time, i.e. time is strictly greater than given parameter other_time with precision relative to the magnitude of the numbers time step. TODO: introduce type TimeDouble with overloaded comparison operators, use it consistently in TimeMarks.
Performs rounding safe comparison time >= other_time See
Performs rounding safe comparison time < other_time. See
Performs rounding safe comparison time <= other_time. See
Performs rounding safe comparison time (step) == other_time. See
Definition at line 157 of file time_governor.hh.
|
inline |
Getters.
Definition at line 149 of file time_governor.hh.
|
inline |
Definition at line 175 of file time_governor.hh.
|
inline |
|
inline |
TimeStep TimeStep::make_next | ( | double | new_length | ) | const |
Create subsequent time step.
Definition at line 211 of file time_governor.cc.
TimeStep TimeStep::make_next | ( | double | new_lenght, |
double | end_time | ||
) | const |
Create subsequent time step, with the explicitly specified. This allow slight discrepancy to overcome rounding errors in the case of fixed time step. Otherwise using small fixed time step, we may miss long term fixed goal time.
Definition at line 218 of file time_governor.cc.
|
inline |
Returns true if two time steps are exactly the same.
Definition at line 208 of file time_governor.hh.
double TimeStep::read_coef | ( | Input::Iterator< std::string > | unit_it | ) | const |
Read and return time unit coefficient given in unit_it or global coefficient of equation stored in time_unit_conversion_, if iterator is not defined.
Definition at line 244 of file time_governor.cc.
double TimeStep::read_time | ( | Input::Iterator< Input::Tuple > | time_it, |
double | default_time = std::numeric_limits<double>::quiet_NaN() |
||
) | const |
Read and return time value multiplied by coefficient of given unit or global coefficient of equation stored in time_unit_conversion_. If time Tuple is not defined (e. g. Tuple is optional key) return default_time value.
Definition at line 238 of file time_governor.cc.
|
private |
Definition at line 230 of file time_governor.cc.
|
private |
End time point of the time step.
Definition at line 226 of file time_governor.hh.
|
private |
Index of the step is index if the end time. Zero time step is artificial.
Definition at line 221 of file time_governor.hh.
|
private |
Length of the time step. Theoretically end
minus end of the previous time step. However may be slightly different due to rounding errors.
Definition at line 224 of file time_governor.hh.
|
private |
Conversion unit of all time values within the equation.
Definition at line 228 of file time_governor.hh.