Astronomical almanac - calculate planet and star positions
The aa program computes the orbital positions of planetary bodies and performs rigorous coordinate reductions to apparent geocentric and topocentric place (local altitude and azimuth). It also reduces star catalogue positions given in either the FK4 or FK5 system. Data for the 57 navigational stars is included. Most of the algorithms employed are from The Astronomical Almanac (AA) published by the U.S. Government Printing Office.
The aa program follows the rigorous algorithms for reduction of celestial coordinates exactly as laid out in current editions of the Astronomical Almanac. The reduction to apparent geocentric place has been checked by a special version of the program (aa200) that takes planetary positions directly from the Jet Propulsion Laboratory DE200 numerical integration of the solar system. The results agree exactly with the Astronomical Almanac tables from 1987 onward (earlier Almanacs used slightly different reduction methods).
The following items will be read in automatically from the first of these files to be found: ./aa.ini, ~/.aa.ini, /etc/aa.ini. The file contains one ASCII string number per line so is easily edited. A sample initialization file is supplied. The entries are:
Terrestrial longitude of observer, degrees East of Greenwich
Geodetic latitude of observer (program calculates geocentric latitude)
Height above sea level, meters
Atmospheric temperature, degrees Centigrade
Atmospheric pressure, millibars
Input time type: 1 = TDT, 2 = UT, 0 = TDT set equal to UT
Value to use for deltaT, seconds; if 0 then the program will compute it.
Several methods of calculating the positions of the planets
have been provided for in the program source code. These range in accuracy from a built-in computation using perturbation formulae to a solution from precise orbital elements that you supply from an almanac.
The program uses as a default a set of trigonometric
expansions for the position of the Earth and planets. These have been adjusted to match the Jet Propulsion Laboratory's DE404 Long Ephemeris (1995) with a precision ranging from about 0.1" for the Earth to 1" for Pluto. The adjustment was carried out on the interval from 3000 B.C. to 3000 A.D. for the outer planets. The adjustment for the inner planets is strictly valid only from 1350 B.C. to 3000 A.D., but may be used to 3000 B.C. with some loss of precision. See /usr/share/doc/aa/readme.404 for additional information. The true accuracy of positions calculated for prehistoric or future dates is of course unknown.
The Moon's position is calculated by a modified version of the
lunar theory of Chapront-Touze' and Chapront. This has a precision of 0.5 arc second relative to DE404 for all dates between 1369 B.C. and 3000 A.D. The real position of the Moon in ancient times is not actually known this accurately, due to uncertainty in the tidal acceleration of the Moon's orbit.
In the absence of an interpolated polynomial ephemeris such
as the DE200, the highest accuracy for current planetary positions is achieved by using the heliocentric orbital elements that are published in the Astronomical Almanac. If precise orbital elements are provided for the desired epoch then the apparent place should be found to agree very closely with Almanac tabulations.
Entering 99 for the planet number generates a prompt for the
name of a file containing human-readable ASCII strings specifying the elements of orbits. The items in the specification are (see also the example file orbit.cat):
First line of entry: epoch of orbital elements (Julian date) inclination longitude of the ascending node argument of the perihelion mean distance (semimajor axis) in au daily motion
Second line of entry: eccentricity mean anomaly epoch of equinox and ecliptic, Julian date visual magnitude B(1,0) at 1au from earth and sun equatorial semidiameter at 1au, arc seconds name of the object, up to 15 characters
Angles in the above are in degrees except as noted. Several sample orbits are supplied in the file orbit.cat. If you read in an orbit named "Earth" the program will install the Earth orbit, then loop back and ask for an orbit number again.
The entry for daily motion is optional. It will be calculated
by the program if it is set equal to 0.0 in your catalogue. Almanac values of daily motion recognize the nonzero mass of the orbiting planet; the program's calculation will assume the mass is zero.
Mean distance, for an elliptical orbit, is the length of the
semi-major axis of the ellipse. If the eccentricity is given to be 1.0, the orbit is parabolic and the "mean distance" item is taken to be the perihelion distance. Similarly a hyperbolic orbit has eccentricity > 1.0 and "mean distance" is again interpreted to mean perihelion distance. In both these cases, the "epoch" is the perihelion date, and the mean anomaly is set to 0.0 in your catalogue.
Elliptical cometary orbits are usually catalogued in terms of
perihelion distance also, but you must convert this to mean distance to be understood by the program. Use the formula
mean distance = perihelion distance / (1 - eccentricity)
to calculate the value to be entered in your catalogue for an elliptical orbit.
The epoch of the orbital elements refers particularly to the
date to which the given mean anomaly applies. Published data for comets often give the time of perihelion passage as a calendar date and fraction of a day in Ephemeris Time. To translate this into a Julian date for your catalogue entry, run aa, type in the published date and decimal fraction of a day, and note the displayed Julian date. This is the correct Julian Ephemeris Date of the epoch for your catalogue entry. Example (Sky & Telescope, March 1991, page 297): Comet Levy 1990c had a perihelion date given as 1990 Oct 24.68664 ET. As you are prompted separately for the year, month, and day, enter 1990, 10, 24.68664 into the program. This date and fraction translates to JED 2448189.18664. For comparison purposes, note that published ephemerides for comets usually give astrometric positions, not apparent positions.
Exercise care about time scales when comparing results against
an almanac. The orbit program assumes input date is Ephemeris Time (ET or TDT). Topocentric altitude and azimuth are calculated from Universal Time (UT). The program converts between the two as required, but you must indicate whether your input entry is TDT or UT. This is done by the entry for input time type in aa.ini. If you are comparing positions against almanac values, you probably want TDT. If you are looking up at the sky, you probably want UT. Ephemeris transit times can be obtained by declaring TDT = UT. The adjustment for deltaT = ET minus UT is accurate for the years 1620 through 2011, as the complete tabulation from the Astronomical Almanac is included in the program. Outside this range of years, approximate formulas are used to estimate deltaT. These formulas are based on analyses of eclipse records going back to ancient times (Stephenson and Houlden, 1986; Borkowski, 1988) but they do not predict future values very accurately. For precise calculations, you should update the table in deltat.c from the current year's Almanac. Note the civil time of day is UTC, which is adjusted by integral leap seconds to be within 0.9 second of UT.
Updated deltaT values and predictions can be obtained from this
network archive: http://maia.usno.navy.mil . See the file deltat.c for additional information. In addition, the IAU has adopted several other definitions of time, but this program does not distinguish among them. The International Earth Rotation Service is in charge of UT. Precise data on Earth rotation and orientation are published in the IERS bulletins, available at the IERS computer site www.iers.org as well as at the usno site.
Each calculation of the time of local rising, meridian transit, and
setting includes a first order correction for the motion in right ascension and declination of the object between the entered input time and the time of the event. Even so, the calculation has to be iterated, or repeated with successively closer estimates of the event time. In view of the first order correction the iteration has a second-order convergence characteristic and arrives at a precise result in just two or three steps. On the other hand, the technique used is unstable for nearly-circumpolar objects, such as the Moon observed at high latitudes. Thus a failure to report rise and set times does not necessarily mean that there was no rise or set event.
The program reports the transit that is nearest to the input time.
Rise and set times ordinarily precede and follow the transit. Check the date displayed next to the rise, set, or transit time to be sure the results are for the desired date and not for the previous or next calendar day. For the Sun and Moon, rise and set times are for the upper limb of the disc; but the indicated topocentric altitude always refers to the center of the disc. The computed event times include the effects of diurnal aberration and parallax.
Age of the Moon, in days from the nearest Quarter, also has a
correction for orbital motion, but does not get the benefit of iterative improvement and may be off by 0.1 day (the stated Quarter is always correct, however). The estimated time can be made much more precise by entering the input date and time of day to be near the time of the event. In other words, the rigorous calculation requires iterating on the time; in this case the program does not do so automatically, hence if you want maximum accuracy you must do the iteration by hand.
Positions and proper motions of the 57 navigational stars
were taken from the Fifth Fundamental Catalogue (FK5). They are in the file /usr/share/aa/star.cat. For all of these, the program's output of astrometric position agreed with the 1986 AA to the precision of the AA tabulation (an arc second). The same is true for 1950 FK4 positions taken from the SAO catalogue. The program agrees to 0.01" with worked examples presented in the AA. Spot checks against Apparent Places of Fundamental Stars confirm the mean place agreement to <0.1". The APFS uses an older nutation series, so direct comparison of apparent place is difficult. The program incorporates the complete IAU Theory of Nutation (1980). Items for the Messier catalogue, /usr/share/aa/messier.cat, are from either the AA or Sky Catalogue 2000.
To compute a star's apparent position, its motion since the
catalogue epoch is taken into account as well as the changes due to precession of the equatorial coordinate system. Star catalogue files have the following data structure. Each star entry occupies one line of ASCII characters. Numbers can be in any usual decimal computer format and are separated from each other by one or more spaces. From the beginning of the line, the parameters are
Epoch of catalogue coordinates and equinox Right ascension, hours Right ascension, minutes Right ascension, seconds Declination, degrees Declination, minutes Declination, seconds Proper motion in R.A., s/century Proper motion in Dec., "/century Radial velocity, km/s Distance, parsecs Visual magnitude Object name
For example, the line
2000 02 31 48.704 89 15 50.72 19.877 -1.52 -17.0 0.0070 2.02 alUMi(Polaris)
has the following interpretation:
J2000.0 ;Epoch of coordinates, equator, and equinox 2h 31m 48.704s ;Right Ascension 89deg 15' 50.72" ;Declination 19.877 ;proper motion in R.A., s/century -1.52 ;proper motion in Dec., "/century -17.0 ;radial velocity, km/s 0.007 ;parallax, " 2.02 ;magnitude alUMi(Polaris) ;abbreviated name for alpha Ursae Minoris (Polaris)
Standard abbreviations for 88 constellation names are
expanded into spelled-out form (see constel.c). The program accepts two types of catalogue coordinates. If the epoch is given as 1950, the entire entry is interpreted as an FK4 item. The program then automatically converts the data to the FK5 system. All other epochs are interpreted as being in the FK5 system.
Note that catalogue (and AA) star coordinates are referred to
the center of the solar system, whereas the program displays the correct geocentric direction of the object. The maximum difference is 0.8" in the case of alpha Centauri.
aa does not accept any options.
./aa.ini, ~/.aa.ini, /etc/aa.ini Initialization data.
Documentation of plan404 ephemerides.
Catalogue data on the 57 navigational stars.
Items for the Messier catalogue