Flow123d  JS_before_hm-989-g79825ac
Public Member Functions | Private Member Functions | Private Attributes | List of all members
TimeStep Class Reference

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< TimeUnitConversiontime_unit_conversion_
 Conversion unit of all time values within the equation. More...
 

Detailed Description

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.

Constructor & Destructor Documentation

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.

Member Function Documentation

bool TimeStep::contains ( double  other_time) const
inline

Definition at line 184 of file time_governor.hh.

Here is the caller graph for this function:

double TimeStep::end ( ) const
inline

Definition at line 151 of file time_governor.hh.

Here is the caller graph for this function:

bool TimeStep::eq ( double  other_time) const
inline

Definition at line 181 of file time_governor.hh.

Here is the caller graph for this function:

bool TimeStep::ge ( double  other_time) const
inline

Definition at line 163 of file time_governor.hh.

Here is the caller graph for this function:

double TimeStep::get_coef ( ) const

Return global time unit coefficient of equation stored in coeff_.

Definition at line 250 of file time_governor.cc.

TimeStep::gt ( double  other_time) const
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.

Here is the caller graph for this function:

unsigned int TimeStep::index ( ) const
inline

Getters.

Definition at line 149 of file time_governor.hh.

Here is the caller graph for this function:

bool TimeStep::le ( double  other_time) const
inline

Definition at line 175 of file time_governor.hh.

double TimeStep::length ( ) const
inline

Definition at line 150 of file time_governor.hh.

Here is the caller graph for this function:

bool TimeStep::lt ( double  other_time) const
inline

Definition at line 169 of file time_governor.hh.

Here is the caller graph for this function:

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.

bool TimeStep::operator== ( const TimeStep other)
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.

Here is the caller graph for this function:

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.

Here is the caller graph for this function:

bool TimeStep::safe_compare ( double  t1,
double  t0 
) const
private

Definition at line 230 of file time_governor.cc.

Member Data Documentation

double TimeStep::end_
private

End time point of the time step.

Definition at line 226 of file time_governor.hh.

unsigned int TimeStep::index_
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.

double TimeStep::length_
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.

std::shared_ptr<TimeUnitConversion> TimeStep::time_unit_conversion_
private

Conversion unit of all time values within the equation.

Definition at line 228 of file time_governor.hh.


The documentation for this class was generated from the following files: