ftp.nice.ch/pub/next/science/astronomy/usat-NeXT.N.bs.tar.gz#/usat/almanacAA

Filelist
 
Makefile
 
RCS/
 
README
 
README.orig
 
aa.c
[View aa.c] 
altaz.c
[View altaz.c] 
angles.c
[View angles.c] 
annuab.c
[View annuab.c] 
cmoon.c
[View cmoon.c] 
cnstinit.c
[View cnstinit.c] 
constel.c
[View constel.c] 
deflec.c
[View deflec.c] 
deltat.c
[View deltat.c] 
diurab.c
[View diurab.c] 
diurpx.c
[View diurpx.c] 
dms.c
[View dms.c] 
epsiln.c
[View epsiln.c] 
fk4fk5.c
[View fk4fk5.c] 
getfiles
 
kepler.c
[View kepler.c] 
kfiles.c
[View kfiles.c] 
lightt.c
[View lightt.c] 
lonlat.c
[View lonlat.c] 
manoms.c
[View manoms.c] 
matan2.c
[View matan2.c] 
nutate.c
[View nutate.c] 
oearth.c
[View oearth.c] 
ojupiter.c
[View ojupiter.c] 
omars.c
[View omars.c] 
omercury.c
[View omercury.c] 
oneptune.c
[View oneptune.c] 
orbit.cat
 
osaturn.c
[View osaturn.c] 
ouranus.c
[View ouranus.c] 
ovenus.c
[View ovenus.c] 
precess.c
[View precess.c] 
refrac.c
[View refrac.c] 
rplanet.c
[View rplanet.c] 
rstar.c
[View rstar.c] 
sidrlt.c
[View sidrlt.c] 
star.cat
 
sun.c
[View sun.c] 
trnsit.c
[View trnsit.c] 
vearth.c
[View vearth.c] 

README

This directory contains a modified version of Stephen L. Moshier's
Astronomical Almanac package V5.1.  Many changes were made to make
the code compile under gcc 2.3.3 in ANSI mode on a Sun IPC (4/40)
running SUNOS 4.1.2 (SOLARIS 1.1.2), and using gmake 3.63.

There were also many modifications made to the code in order to
make the interface to the UNIX satellite tracking software easier.

The source code was placed under the Revision Control System (RCS)
in order to track modifications to the code and as a safety feature
while modifying the code.  

Directions for using the almanac program are contained in the
README.orig file.  Note that the local site information must be 
contained in either a ~/.site.ini file or a ./.site.ini file.

The almanac program has been checked against an example run furnished
with the original software as well as with the Astronomical Almanac for 
the years 1981, 1986, and 1993.

Craig Gullixson 18 May 1993.

README.orig

                    AA.ARC v5.1

   This 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.  Most of the algorithms employed are from The
Astronomical Almanac (AA) published by the U.S. Government
Printing Office.
   Source code listings in C language are supplied in the file
aa.arc.  The file aaexe.arc contains an IBM PC executable
version.

              Reduction of Celestial Coordinates

   aa.exe 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 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).
   Certain computations, such as the correction for nutation,
are not given explicitly in the AA but are referenced there. In
these cases the program performs the full computations that are
used to construct the Almanac tables (see the references at the
end of this document).


              Running the Program

   Command input to aa.exe is by single line responses to
programmed prompts. The program requests date, time, and which
of a menu of things to do.  Menu item 0 is the Sun, 3 is the
Moon.  The other values 1-9 are planets; 99 opens an orbit
catalogue file; 88 opens a star catalogue. Each prompt indicates
the last response you entered; this will be kept if you enter
just a carriage return.
    Input can also be redirected to come from an ASCII file.  For example,
invoking the program by "aa <command.dat >answer.dat" reads commands
from the file command.dat and writes answers to answer.dat.  Menu
item -1 causes the program to exit gracefully, closing the output
file.
   Entering line 0 for a star catalogue causes a jump back to the
top of the program.

 
             Initialization
       
  The following items will be read in automatically from a disc file
named aa.ini, if one is provided.  The file contains one ASCII
string number per line so is easily edited.  A sample initialization
file is supplied.

Terrestrial longitude of observer, degrees East of Greenwich
Geodetic latitude of observer (program calculates astronomical latitude)
Height above sea level, meters
Atmospheric temperature, degrees Centigrade
Atmpshperic 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.


              Orbit Computations

   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 Meeus' formulae
to a solution from precise orbital elements that you supply from
an almanac.
   The program uses as a default the perturbations of the orbits
of the Earth and planets given by Jean Meeus in his
_Astronomical Formulae for Calculators_. These are derived from
the analytical theories of Newcomb and Le Verrier. Perturbation
terms of about 1 arc second and higher are included.  The
smaller omitted terms add up to errors ranging from about 10 to
120 arc seconds depending on the planet. Using the perturbation
formulas given by Meeus, the accuracy of the heliocentric
coordinates has been computer checked directly against the Jet
Propulsion Laboratory DE200 numerical integration from 1800 A.D.
to 2050 A.D..  The test results are given in the file meeus.doc.
The secular perturbations (given as polynomials in time) have
errors that gradually increase as the year departs from 1900.
The calculated longitudes of Jupiter and Saturn, for example,
are in error by a few tenths of a degree at 1800 B.C. using
Meeus' formulas.
   A simplified verson of the Lunar theory of Chapront-Touze'
and Chapront is used to calculate the Moon's position. It has an
accuracy of about 0.1 arc minute for modern dates and maintains
a theoretical accuracy of 0.5 arc minute back to 1500 B.C.  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.
   Higher accuracy expansions for planetary positions are given
by Pierre Bretagnon and Jean-Louis Simon, _Planetary Programs
and Tables from -4000 to +2800_.  Computer readable versions are
available from the publisher.  Their expansions can be
integrated easily into the program. Compatible programs (but not
the coefficients) are given in the archive called bns.arc, which
also gives test results against the DE200.
   A higher accuracy expansion for the Moon is given in the archive
brown.arc.  An expansion for Mars that is slightly more accurate
than the Planetary Programs formula is given in marso.arc.  Test
results are also given for these expansions.

   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 containg 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 perhelion 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.exe, 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.


              Ephemeris Time and Other Time Scales

   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 1991, as the
complete tabulation from the Astronomical Almanac is included in
the program. Outside this range of years an approximate formula
is used to estimate deltaT. This formula is based on an analysis
of eclipse records going back to ancient times (Stephenson and
Houlden, 1986) but it does 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.


              Rise and Set Times

   Time of local rising, meridian transit, and setting include 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.  The displayed rising and setting times are
accurate to a few seconds (about 1 minute for the Moon), except
when the object remains very near to the horizon.  Estimated
transit time is usually within one second (assuming of course
that the orbit is correct). Age of the Moon, in days from the
nearest Quarter, also has a correction for orbital motion, but
may be off by 0.1 day (the stated Quarter is always correct,
however). These estimated times can be made much more precise by
entering the input time of day to be near the time of the event.
In other words, the rigorous calculation requires iterating on
the time of day; the program does not do this automatically so
if you want maximum accuracy you must do the iteration by hand.
The program reports the transit that is nearest to the input
time.  Check the date offset displayed next to the transit time
to be sure the result is for the desired date and not for the
previous or next calendar day.  The indicated transit time does
not include diurnal aberration; you must subtract this
correction yourself. 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.


              Stars

   Positions and proper motions of the 57 navigational stars
were taken from the Fifth Fundamental Catalogue (FK5). They are
in the file 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, messier.cat, are from
either the AA or Sky Catalogue 2000.
   To compute a star's apparent position, its motion since the
catalogue epoch must be 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.


              Corrections Not Implemented

   Several adjustments are not included.  In general, the Sun is
assumed incorrectly to be at the center of the solar system.
Since the orbit parameters are heliocentric, the main
discrepancy is a tiny change in the annual aberration on the
order of 0.01". The difference between TDT and TDB (Terrestrial
versus Solar System barycentric time) is ignored.  The
topocentric correction for polar motion of the Earth is also
ignored.


- Stephen L. Moshier, November, 1987
Version 5.0: July, 1991

  

              Disc Files

aa.ini         Initialization file - edit this to reflect your location
aa.exe         Executable program for IBM PC MSDOS
messier.cat    Star catalogue of the Messier objects
orbit.cat      Orbit catalogue with example comets, asteroids, etc.
star.cat       Star catalogue of FK5 navigational stars
aa.mak         Microsoft C MSDOS make file
aa.rsp         Auxiliary to aa.mak
makefile       Unix make file
descrip.mms    VAX make file (MMS)
aa.opt         Auxiliary to descrip.mms
aa.que         Test questions
aa.ans         Answers to test questions (not necessarily true, but
                what the program says)
aa.c           Main program, keyboard commands
altaz.c        Apparent geocentric to local topocentric place
angles.c       Angles and sides of triangle in three dimensions
annuab.c       Annual aberration
constel.c      Expand constellation name abbreviations
deflec.c       Deflection of light due to Sun's gravity
deltat.c       Ephemeris Time minus Universal Time
diurab.c       Diurnal aberration
diurpx.c       Diurnal parallax
dms.c          Time and date conversions and display
epsiln.c       Obliquity of the ecliptic
fk4fk5.c       FK4 to FK5 star catalogue conversion
kepler.c       Solve hyperbolic, parabolic, or elliptical Keplerian orbits
kfiles.c       System dependent disc file I/O to read catalogues
lightt.c       Correction for light time
lonlat.c       Convert equatorial coordinates to ecliptic polar coordinates
nutate.c       IAU nutation series
precess.c      Precession of the equinox and ecliptic
refrac.c       Correction for atmospheric refraction
rplanet.c      Main reduction subroutine for planets
rstar.c        Main reduction subroutine for stars
sidrlt.c       Sidereal time
sun.c          Main reduction subroutine for the position of the Sun
trnsit.c       Transit of the local meridian
vearth.c       Estimated velocity vector of the Earth
zatan2.c       Quadrant correct arctangent with result from 0 to 2pi
kep.h          Include file for orbit and other data structures
planet.h       Include file for planetary perturbation routines
manoms.c       Mean elements of the planetary orbits
moon.c         Computation of the Moon's position
oearth.c       Orbit and perturbations for the Earth
ojupiter.c     Orbit and perturbations for Jupiter
omars.c        Orbit and perturbations for Mars
omercury.c     Orbit and perturbations for Mercury
oneptune.c     Orbit and perturbations for Neptune
osaturn.c      Orbit and perturbations for Saturn
ouranus.c      Orbit and perturbations for Uranus
ovenus.c       Orbit and perturbations for Venus



              References

Nautical Almanac Office, U. S. Naval Observatory, _Astronomical
Almanac for the Year 1986_, U. S. Government Printing Office,
1985.

Nautical Almanac Office, U. S. Naval Observatory, _Almanac for
Computers, 1986_, U. S. Government Printing Office

Meeus, Jean, _Astronomical Formulae for Calculators_, 3rd ed.,
Willmann-Bell, Inc., 1985.

Moulton, F. R., _An Introduction to Celestial Mechanics_, 2nd ed.,
Macmillan, 1914 (Dover reprint, 1970)

Taff, L. G., _Celestial Mechanics, A Computational Guide for the
Practitioner_, Wiley, 1985

Newcomb, S., _Tables of the Four Inner Planets, Astronomical
Papers Prepared for the Use of the American Ephemeris and Nautical
Almanac_, Vol. VI.  Bureau of Equipment, Navy Department,
Washington, 1898

Lieske, J. H., T. Lederle, W. Fricke, and B. Morando,
"Expressions for the Precession Quantities Based upon the IAU
(1976) System of Astronomical Constants,"  Astronomy and
Astrophysics 58, 1-16 (1977).

Laskar, J., "Secular terms of classical planetary theories
using the results of general theory," Astronomy and Astrophysics
157, 59070 (1986).

Bretagnon, P. and G. Francou, "Planetary theories in rectangular
and spherical variables. VSOP87 solutions," Astronomy and
Astrophysics 202, 309-315 (1988).

Bretagnon, P. and Simon, J.-L., _Planetary Programs and Tables
from -4000 to +2800_, Willmann-Bell, 1986

Seidelmann, P. K., et al., "Summary of 1980 IAU Theory of Nutation
(Final Report of the IAU Working Group on Nutation)" in
Transactions of the IAU Vol. XVIII A, Reports on Astronomy,
P. A. Wayman, ed.; D. Reidel Pub. Co., 1982.

"Nutation and the Earth's Rotation", I.A.U. Symposium No. 78,
May, 1977, page 256. I.A.U., 1980.

Woolard, E.W., "A redevelopment of the theory of nutation",
The Astronomical Journal, 58, 1-3 (1953).

Morrison, L. V. and F. R. Stephenson, "Sun and Planetary System"
vol 96,73 eds. W. Fricke, G. Teleki, Reidel, Dordrecht (1982)

Stephenson, F. R., and M. A. Houlden, _Atlas of Historical
Eclipse Maps_, Cambridge U. Press, 1986

M. Chapront-Touze' and J. Chapront, "ELP2000-85: a semi-analytical
lunar ephemeris adequate for historical times," Astronomy and
Astrophysics 190, 342-352 (1988).

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.