def test_array(self): # Do a simple test of transit_RA in an array. Use the fact that the RA # advances predictably to predict the answers from skyfield import earthlib epoch = datetime(2000, 1, 1, 11, 58, 56) # Create an observer at an arbitrary location obs = ctime.Observer(118.3, 36.1) # Calculate LST t = ctime.unix_to_skyfield_time(ctime.datetime_to_unix(epoch)) gst = earthlib.sidereal_time(t) lst = (360.0 * gst / 24.0 + obs.longitude) % 360.0 # Drift rate should be very close to 1 degree/4minutes. # Fetch times calculated by ephem delta_deg = np.arange(20) delta_deg.shape = (5, 4) lst = lst + delta_deg # Calculate RA using transit_RA unix_epoch = ctime.datetime_to_unix(epoch) unix_times = unix_epoch + (delta_deg * 60 * 4 * ctime.SIDEREAL_S) TRA = obs.transit_RA(unix_times) # Compare self.assertTrue(np.allclose(lst, TRA, atol=0.02, rtol=1e-10))
def test_sidereal_time_with_nonzero_delta_t(): epsilon = 1e-13 st0 = c.sidereal_time(T0, 0.0, D0, False, True) stA = c.sidereal_time(TA, 0.0, DA, False, True) stB = c.sidereal_time(TB, 0.0, DB, False, True) jd = JulianDate(ut1=[T0, TA, TB], delta_t=[D0, DA, DB]) v = earthlib.sidereal_time(jd) eq(v, [st0, stA, stB], epsilon)
def test_sidereal_time_with_zero_delta_t(): epsilon = 1e-13 delta_t = 0.0 st0 = c.sidereal_time(T0, 0.0, delta_t, False, True) stA = c.sidereal_time(TA, 0.0, delta_t, False, True) stB = c.sidereal_time(TB, 0.0, delta_t, False, True) jd = JulianDate(ut1=[T0, TA, TB], delta_t=delta_t) v = earthlib.sidereal_time(jd) eq(v, [st0, stA, stB], epsilon)
def test_epoch(self): from skyfield import earthlib # At the J2000 epoch, sidereal time and transit RA should be the same. epoch = datetime(2000, 1, 1, 11, 58, 56) # Create an observer at an arbitrary location obs = ctime.Observer(118.3, 36.1) # Calculate the transit_RA unix_epoch = ctime.datetime_to_unix(epoch) TRA = obs.transit_RA(unix_epoch) # Calculate LST t = ctime.unix_to_skyfield_time(unix_epoch) gst = earthlib.sidereal_time(t) lst = (360.0 * gst / 24.0 + obs.longitude) % 360.0 # Tolerance limited by stellar aberation self.assertTrue(np.allclose(lst, TRA, atol=0.01, rtol=1e-10))
def test_sidereal_time_with_nonzero_delta_t(jd): u = c.sidereal_time(jd.ut1, 0.0, jd.delta_t, False, True) v = earthlib.sidereal_time(jd) epsilon = 1e-13 # days; 14 digits of agreement eq(u, v, epsilon)