Copyright © 2009 Mirametrics, Inc., All Rights Reserved.
Overview
Heliocentric Julian Date ("HJD") is a standard method of time measurement referenced to the Sun's position which corrects for the difference in light travel time between the object and the location of the Earth in its orbit, and the light travel time from the object to the fixed Sun. This removes the bias attributable to the object's direction in space, the observing date, and time of day. HJD is used in several areas of astronomy that involve precision timing. The Mira platforms targeted at astronomy and space sciences include this feature in the photometry measurement module.
Determining the HJD involves a complex calculation. For testing, we compared the results of Mira's calculator with with the precision HLD calculator published by Dr. Dan Bruton of Steven F. Austin State University ("SFASU"). To evaluate, several dates and times were chosen for the field of view of the variable star BL Cam (first 5 measurements) and then for an arbitrary selection of celestial coordinates and time. Sky position is measured in units of Right Ascension ("RA") and Declination ("Dec"). The results listed below give the calculated HJD by the two methods and the difference in the sense Mira minus SFASU, all in units of days. Based on 14 tests, the average difference is 10-7 day, or about 0.01 seconds, with a standard deviation of 0.57 seconds (1-σ). The two methods use completely independent code and it is not known which one is more "accurate". Let it suffice to say that the two methods have a 1-sigma consistency of 0.5 second of time over different directions in space, different times of day, and different days of the year. Mira Pro x64 also provides script access to HJD and JD calculations. A sample script included in the Mira distribution is listed below the table.
RA | DEC | DATE | GMT | HJD (Mira) | HJD (SFASU) | Mira - SFASU |
06h 17m 43s | 63° 35' 06" | 1999 06 17 | 01 01 59 | 0.5432640 | 0.5432654 | -0.0000014 day |
06h 17m 43s | 63° 35' 06" | 2008 06 17 | 01 01 59 | 0.5432707 | 0.5432711 | -0.0000004 |
06h 17m 43s | 63° 35' 06" | 2008 04 17 | 01 01 59 | 0.5427403 | 0.5427400 | +0.0000003 |
06h 17m 43s | 63° 35' 06" | 2008 10 17 | 01 01 59 | 0.5433734 | 0.5433738 | -0.0000004 |
06h 17m 43s | 63° 35' 06" | 2008 07 17 | 01 01 59 | 0.5434787 | 0.5434793 | -0.0000006 |
6h | 20° | 2008 12 18 | 05 00 00 | 0.7140888 | 0.7140880 | +0.0000008 |
10h | 20° | 2008 12 18 | 05 00 00 | 0.7113302 | 0.7113178 | +0.0000124 |
18h | 20° | 2008 12 18 | 05 00 00 | 0.7041469 | 0.7041467 | +0.0000002 |
18h | 20° | 2008 09 18 | 05 00 00 | 0.7086511 | 0.7086597 | -0.0000086 |
18h | 20° | 2008 4 18 | 05 00 00 | 0.7103368 | 0.7103298 | +0.0000070 |
18h | -30° | 2008 1 18 | 05 00 00 | 0.7032430 | 0.7032371 | +0.0000059 |
8h | 20° | 2009 1 22 | 05 00 00 | 0.7140924 | 0.7140935 | -0.0000011 |
16h | 50° | 2008 5 18 | 05 00 00 | 0.7103320 | 0.7103347 | -0.0000027 |
16h | 10° | 2008 08 18 | 07 00 00 | 0.7916392 | 0.7916491 | -0.0000099 |
Average: | 0.0000001 day | |||||
Std Deviation: | 0.0000057 day |
Sample Script
The script below is included with Mira Pro x64 to exercise Mira's JD (Julian Date), MJD (Modified Julian Date), and HJD (Heliocentric Julian Date) functions in a script. Usually one would use these functions in a script for doing astronomical photometry. Here, the script sets values for the date, time, and celestial coordinates (RA, Dec) in as text strings. Then it calculates various types of Julian Date, including JD, MJD, and HJD. Other functions are then used to test the results by inverting the JD values to get the corresponding date and time, which should equal the starting values. Finally, the resulting values are printed in a Mira text editor window using the C-like Printf() function. Text colors are the default colors used by the Mira script editor; for example, green "--" characters precede comments.
--//////////////////////////////////////////////////////////////////////////////
-- Sample script shows how to use JD and HJD functions for Julian Date
sDate =
"2009 1 22"
-- date is GMT
sTime =
"01 01 59"
-- time is GMT
sRa =
"5 00 02.56"
-- Right ascension at J2000 equinox
sDec =
"10 20 30.5"
-- Declination at J2000 equinox
-- calculate the Julian Date Values
JD = CalcJD( sDate, sTime )
-- ordinary (geocentric) JD
HJD = CalcHJD( sDate, sTime, sRa, sDec )
-- Heliocentric JD
MJD = CalcMJD( JD )
-- Modified JD for geocentric JD
-- Invert the calculation to test functions that return date & time from
JD.
-- All 6 values returned by ParseJD are used:
nYr, nMo, nDay, nHr, nMin, nSec = ParseJD( JD )
sDate, sTime = JDtoDateTime( JD )
-- print results
Printf("\n---------------------\n")
Printf("Input Date= '%s', GMT= '%s'\n", sDate, sTime )
Printf("Input (J2000) RA= '%s', Dec= '%s'\n", sRa, sDec )
Printf("\n")
Printf("Caculated JD = %.7lf\n", JD )
Printf("Caculated MJD= %.7lf\n", MJD )
Printf("Caculated HJD= %.7lf\n", HJD )
Printf("\n")
Printf("Converting from the calculated JD back to Date, Time:\n")
Printf("Y M D = %d %d %d, H M S = %d %d %.4lf\n", nYr, nMo, nDay, nHr, nMin,
nSec )
Printf("Date, Time = \"%s\" at \"%s\"\n", sDate, sTime )