#include <orsa_units.h>
Public Member Functions | |
TimeStep () | |
TimeStep (const unsigned int days, const unsigned int day_fraction, const int sign) | |
TimeStep (const double t) | |
TimeStep (const TimeStep &) | |
double | GetDouble () const |
TimeStep & | operator+= (const TimeStep &) |
TimeStep & | operator-= (const TimeStep &) |
TimeStep | operator+ (const TimeStep &) const |
TimeStep | operator- (const TimeStep &) const |
TimeStep & | operator*= (const int) |
TimeStep & | operator*= (const double) |
void | AddDays (const unsigned int, const int) |
void | AddDayFractions (const unsigned int, const int) |
TimeStep | operator+ () const |
TimeStep | operator- () const |
bool | operator== (const TimeStep &) const |
bool | operator!= (const TimeStep &) const |
bool | operator> (const TimeStep &) const |
bool | operator< (const TimeStep &) const |
bool | operator>= (const TimeStep &ts) const |
bool | operator<= (const TimeStep &ts) const |
TimeStep | absolute () const |
bool | IsZero () const |
unsigned int | days () const |
unsigned int | day_fraction () const |
int | sign () const |
Static Public Member Functions | |
static unsigned int | max_day_fraction () |
Definition at line 285 of file orsa_units.h.
TimeStep | ( | ) |
Definition at line 909 of file orsa_units.cc.
Referenced by TimeStep::absolute(), TimeStep::operator+(), and TimeStep::operator-().
TimeStep | ( | const unsigned int | days, | |
const unsigned int | day_fraction, | |||
const int | sign | |||
) |
Definition at line 913 of file orsa_units.cc.
References ORSA_ERROR.
00913 : _days(days), _day_fraction(day_fraction), _sign(sign) { 00914 if (_sign == 0) { 00915 ORSA_ERROR("Hmmm, sign equal to zero..."); 00916 } else { 00917 _sign = _sign / abs(_sign); 00918 } 00919 internal_check(); 00920 }
TimeStep | ( | const double | t | ) |
Definition at line 922 of file orsa_units.cc.
References orsa::DAY, orsa::FromUnits(), and TimeStep::max_day_fraction().
00922 { 00923 if (t < 0) { 00924 _sign = -1; 00925 } else { 00926 _sign = +1; 00927 } 00928 00929 const double t_in_days = FromUnits(fabs(t),DAY,-1); 00930 _days = (unsigned int)(floor(t_in_days)); 00931 _day_fraction = (unsigned int)rint((t_in_days - _days)*max_day_fraction()); 00932 00933 internal_check(); 00934 }
Definition at line 936 of file orsa_units.cc.
TimeStep absolute | ( | ) | const |
Definition at line 1269 of file orsa_units.cc.
References TimeStep::TimeStep().
Referenced by UniverseTypeAwareTimeStep::absolute().
01269 { return TimeStep(_days,_day_fraction,+1); }
void AddDayFractions | ( | const unsigned int | df, | |
const int | sign | |||
) |
Definition at line 963 of file orsa_units.cc.
References TimeStep::max_day_fraction().
Referenced by TimeStep::operator+=(), and TimeStep::operator-=().
00963 { 00964 if (sign == _sign) { 00965 _day_fraction += df; 00966 if (_day_fraction >= max_day_fraction()) { 00967 ++_days; 00968 _day_fraction -= max_day_fraction(); 00969 } 00970 } else { 00971 if (_day_fraction >= df) { 00972 _day_fraction -= df; 00973 } else { 00974 if (_days > 0) { 00975 --_days; 00976 _day_fraction += max_day_fraction(); 00977 _day_fraction -= df; 00978 } else { 00979 _sign = -_sign; 00980 _day_fraction = df - _day_fraction; 00981 } 00982 } 00983 } 00984 internal_check(); 00985 }
void AddDays | ( | const unsigned int | d, | |
const int | sign | |||
) |
Definition at line 944 of file orsa_units.cc.
References TimeStep::max_day_fraction().
Referenced by TimeStep::operator+=(), and TimeStep::operator-=().
00944 { 00945 if (sign == _sign) { 00946 _days += d; 00947 } else { 00948 if (d > _days) { 00949 _sign = -_sign; 00950 _days = d - _days - 1; 00951 _day_fraction = max_day_fraction() - _day_fraction; 00952 if (_day_fraction >= max_day_fraction()) { 00953 ++_days; 00954 _day_fraction -= max_day_fraction(); 00955 } 00956 } else { 00957 _days -= d; 00958 } 00959 } 00960 internal_check(); 00961 }
unsigned int day_fraction | ( | ) | const [inline] |
Definition at line 344 of file orsa_units.h.
Referenced by UniverseTypeAwareTimeStep::day_fraction(), and OrsaFile::Write().
unsigned int days | ( | ) | const [inline] |
Definition at line 343 of file orsa_units.h.
Referenced by UniverseTypeAwareTimeStep::days(), and OrsaFile::Write().
double GetDouble | ( | ) | const |
Definition at line 1252 of file orsa_units.cc.
References orsa::DAY, orsa::FromUnits(), and TimeStep::max_day_fraction().
Referenced by TimeStep::operator*=().
01252 { 01253 return (FromUnits(_sign*(_days+(_day_fraction*1.0)/max_day_fraction()),DAY)); 01254 }
bool IsZero | ( | ) | const |
Definition at line 1271 of file orsa_units.cc.
static unsigned int max_day_fraction | ( | ) | [inline, static] |
Definition at line 335 of file orsa_units.h.
Referenced by TimeStep::AddDayFractions(), TimeStep::AddDays(), Date::GetDayFraction(), Date::GetDayFraction_unsigned_int(), TimeStep::GetDouble(), Date::GetGregor(), Date::GetJulian(), TimeStep::operator*=(), Date::operator+=(), Date::SetGregor(), Date::SetJulian(), and TimeStep::TimeStep().
bool operator!= | ( | const TimeStep & | ts | ) | const |
Definition at line 1265 of file orsa_units.cc.
TimeStep & operator*= | ( | const double | x | ) |
Definition at line 1152 of file orsa_units.cc.
References orsa::DAY, orsa::FromUnits(), TimeStep::GetDouble(), and TimeStep::max_day_fraction().
01152 { 01153 const double t = GetDouble()*x; 01154 // same code in constructor from double 01155 if (t < 0) { 01156 _sign = -1; 01157 } else { 01158 _sign = +1; 01159 } 01160 // 01161 const double t_in_days = FromUnits(fabs(t),DAY,-1); 01162 _days = (unsigned int)(floor(t_in_days)); 01163 _day_fraction = (unsigned int)rint((t_in_days - _days)*max_day_fraction()); 01164 // 01165 internal_check(); 01166 // 01167 return * this; 01168 }
TimeStep & operator*= | ( | const int | p | ) |
Definition at line 1134 of file orsa_units.cc.
References orsa::DAY, orsa::FromUnits(), TimeStep::GetDouble(), and TimeStep::max_day_fraction().
01134 { 01135 const double t = GetDouble()*p; 01136 // same code in constructor from double 01137 if (t < 0) { 01138 _sign = -1; 01139 } else { 01140 _sign = +1; 01141 } 01142 // 01143 const double t_in_days = FromUnits(fabs(t),DAY,-1); 01144 _days = (unsigned int)(floor(t_in_days)); 01145 _day_fraction = (unsigned int)rint((t_in_days - _days)*max_day_fraction()); 01146 // 01147 internal_check(); 01148 // 01149 return * this; 01150 }
TimeStep operator+ | ( | ) | const |
Definition at line 1221 of file orsa_units.cc.
References TimeStep::TimeStep().
01221 { return TimeStep(*this); }
Definition at line 1094 of file orsa_units.cc.
01094 { 01095 TimeStep _ts(*this); 01096 _ts += ts; 01097 return _ts; 01098 }
Definition at line 1046 of file orsa_units.cc.
References TimeStep::AddDayFractions(), and TimeStep::AddDays().
01046 { 01047 AddDays(ts._days,ts._sign); 01048 AddDayFractions(ts._day_fraction,ts._sign); 01049 return * this; 01050 }
TimeStep operator- | ( | ) | const |
Definition at line 1223 of file orsa_units.cc.
References TimeStep::TimeStep().
01223 { return TimeStep(_days,_day_fraction,-_sign); }
Definition at line 1100 of file orsa_units.cc.
01100 { 01101 TimeStep _ts(*this); 01102 _ts -= ts; 01103 return _ts; 01104 }
Definition at line 1052 of file orsa_units.cc.
References TimeStep::AddDayFractions(), and TimeStep::AddDays().
01052 { 01053 AddDays(ts._days,-ts._sign); 01054 AddDayFractions(ts._day_fraction,-ts._sign); 01055 return * this; 01056 }
bool operator< | ( | const TimeStep & | ts | ) | const |
Definition at line 1225 of file orsa_units.cc.
01225 { 01226 01227 if (*this == ts) return false; // they are equal! 01228 01229 if (_sign == ts._sign) { 01230 if (_sign == -1) { 01231 if (_days > ts._days) return true; 01232 if ( (_days == ts._days) && 01233 (_day_fraction > ts._day_fraction) ) return true; 01234 } else { 01235 if (_days < ts._days) return true; 01236 if ( (_days == ts._days) && 01237 (_day_fraction < ts._day_fraction) ) return true; 01238 } 01239 } else { 01240 if (_sign == -1) { 01241 return true; 01242 } 01243 } 01244 return false; 01245 }
bool operator<= | ( | const TimeStep & | ts | ) | const [inline] |
Definition at line 325 of file orsa_units.h.
bool operator== | ( | const TimeStep & | ts | ) | const |
Definition at line 1256 of file orsa_units.cc.
01256 { 01257 01258 // if (ts.IsZero() && IsZero()) return true; // this check is 'probably' not needed since we use the internal_check() call every time we change the object 01259 if (ts._days != _days) return false; 01260 if (ts._day_fraction != _day_fraction) return false; 01261 if (ts._sign != _sign) return false; 01262 return true; 01263 }
bool operator> | ( | const TimeStep & | ts | ) | const |
Definition at line 1247 of file orsa_units.cc.
bool operator>= | ( | const TimeStep & | ts | ) | const [inline] |
Definition at line 319 of file orsa_units.h.
int sign | ( | ) | const [inline] |
Definition at line 345 of file orsa_units.h.
Referenced by UniverseTypeAwareTimeStep::sign(), and OrsaFile::Write().