時刻系
ΔT
jd_utc : ユリウス日(Universal Time, Coordinated)
returns : (dynamical_time - universal_time) / second
1/2048 second(≒0.5ms)未満を四捨五入
# File when/ephemeris.rb, line 1115
1115: def delta_t(jd_utc)
1116: (delta_t_coordinated(jd_utc) * 4096 + 1).floor / 4096.0
1117: end
ΔT - 閏秒による(TT-UTC)
jd_utc : ユリウス日(Universal Time, Coordinated) returns : (Terrestrial Time - Universal Time, Coordinated) / second
# File when/ephemeris.rb, line 1126
1126: def delta_t_coordinated(jd_utc)
1127: list = _leap_seconds
1128: list.each do |v|
1129: if jd_utc >= v[0]
1130: result = 32.184 + v[1]
1131: result += (jd_utc - (2400000.5 + v[2])) * v[3] unless (v[3]||0) == 0
1132: return result
1133: end
1134: end
1135: delta_t_observed(jd_utc)
1136: end
ΔT - 観測による(TT-UT1)
jd_utc : ユリウス日(Universal Time, Coordinated) returns : (Terrestrial Time - Universal Time 1) / second
# File when/ephemeris.rb, line 1144
1144: def delta_t_observed(jd_utc)
1145: c2000 = (jd_utc - EPOCH4)/JCENT # 2000年からの経過世紀
1146: year = c2000 * 100.0 + 2000.0 # 0年からの経過年
1147: i = (year-1599.0).floor # 1599年からの経過年(整数)
1148: if year >= 2009.0
1149: dt = 65.46 + 0.224 * (year-2009.0)
1150: elsif i>0
1151: n = year % 1
1152: d0 = DeltaT[i+0] - DeltaT[i-1]
1153: d1 = DeltaT[i+1] - DeltaT[i+0]
1154: d2 = DeltaT[i+2] - DeltaT[i+1]
1155: d10 = d1 - d0
1156: d21 = d2 - d1
1157: d210 = d21 - d10
1158: dt = DeltaT[i] + n*d1 + n*(n-1.0)/4.0*(d10+d21) + n*(n-1.0)*(n-0.5)/6.0*d210
1159: elsif year <948.0
1160: dt = 2715.6 + 573.36 * c2000 + 46.5*c2000*c2000
1161: else
1162: dt = 50.6 + 67.5 * c2000 + 22.5*c2000*c2000
1163: end
1164: return dt
1165: end
When::Ephemeris::TimeStandard Class のグローバルな設定を行う
leap_seconds [[JD, TAI-UTC, (MJD, OFFSET)]] or Stirng
閏秒の挿入記録
JD - 閏秒を挿入した日時のユリウス日
TAI-UTC - 閏秒を挿入後の TAI と UTC の差
MJD - 周波数オフセットの基準となる日時の修正ユリウス日
OFFSET - 周波数オフセット値
指定が文字列の場合は、その文字列をファイルパスとみなして、
http://maia.usno.navy.mil/ser7/tai-utc.dat 形式のファイルから
閏秒の挿入記録を読み込んで使用する
# File when/ephemeris.rb, line 1080
1080: def setup(leap_seconds=nil)
1081: leap_seconds ||= TAI_UTC
1082: @leap_seconds =
1083: if leap_seconds.kind_of?(String)
1084: OpenURI
1085: open(leap_seconds) do |file|
1086: file.read.split(/[\n\r]+/).map { |line|
1087: line.split(/[^\d.]+/)[3..6].map {|d| d.to_f}
1088: }.reverse
1089: end
1090: else
1091: leap_seconds.reverse
1092: end
1093: end
dynamical time を当該時刻系の日時に変換する(ダミー)
time : dynamical time(Numeric) returns : 当該時刻系の日時(Numeric)
# File when/ephemeris.rb, line 1182
1182: def from_dynamical_time(time)
1183: raise TypeError, "Abstract Time Standard Class Type"
1184: end
当該時刻系に閏秒があるか?
returns : Boolean
true - 閏秒あり
false - 閏秒なし
# File when/ephemeris.rb, line 1200
1200: def leap?
1201: raise TypeError, "Abstract Time Standard Class Type"
1202: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.