時刻系
Δ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.