Flow123d
master-f44eb46
|
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< Input::Record > unit_it) const |
double | get_coef () const |
std::shared_ptr< TimeUnitConversion > | get_unit_conversion () const |
Getter for time unit conversion object. More... | |
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 @end() 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 123 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 203 of file time_governor.cc.
TimeStep::TimeStep | ( | ) |
Default constructor. Creates undefined time step.
Definition at line 212 of file time_governor.cc.
TimeStep::TimeStep | ( | const TimeStep & | other | ) |
Copy constructor.
Definition at line 223 of file time_governor.cc.
|
inline |
|
inline |
|
inline |
|
inline |
double TimeStep::get_coef | ( | ) | const |
Return global time unit coefficient of equation. Shortcut for time_unit_conversion_ function.
Definition at line 271 of file time_governor.cc.
std::shared_ptr< TimeUnitConversion > TimeStep::get_unit_conversion | ( | ) | const |
Getter for time unit conversion object.
Definition at line 277 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 167 of file time_governor.hh.
|
inline |
Getters.
Definition at line 159 of file time_governor.hh.
|
inline |
|
inline |
|
inline |
TimeStep TimeStep::make_next | ( | double | new_lenght, |
double | end_time | ||
) | const |
Create subsequent time step, with the @end_time 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 239 of file time_governor.cc.
TimeStep TimeStep::make_next | ( | double | new_length | ) | const |
Create subsequent time step.
Definition at line 232 of file time_governor.cc.
|
inline |
Returns true if two time steps are exactly the same.
Definition at line 224 of file time_governor.hh.
double TimeStep::read_coef | ( | Input::Iterator< Input::Record > | 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. Shortcut for time_unit_conversion_ function.
Definition at line 265 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. Shortcut for time_unit_conversion_ function.
Definition at line 259 of file time_governor.cc.
|
private |
|
private |
End time point of the time step.
Definition at line 242 of file time_governor.hh.
|
private |
Index of the step is index if the end time. Zero time step is artificial.
Definition at line 237 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 240 of file time_governor.hh.
|
private |
Conversion unit of all time values within the equation.
Definition at line 244 of file time_governor.hh.