Flow123d
release_3.0.0-506-g34af125
|
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 178 of file time_governor.cc.
TimeStep::TimeStep | ( | ) |
Default constructor. Creates undefined time step.
Definition at line 187 of file time_governor.cc.
TimeStep::TimeStep | ( | const TimeStep & | other | ) |
Copy constructor.
Definition at line 198 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 246 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 207 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 214 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 240 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 234 of file time_governor.cc.
|
private |
Definition at line 226 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.