Subject: Jean Meeus Astronomical Algorithms Fortran implementations available

From: Barry Knapp <[email-masked]>
Date: Mon, 5 Feb 1996 14:59:08 -0700 (MST)

Hello HAO astronomical software users,

  Over the past three years or so I have developed Fortran implementions
  (on our SOLSTICE VMS computers) of most of the algorithms described in
  the book Astronomical Algorithms, by Jean Meeus.  I have recently
  ported all of these routines to our Solaris workstations, so the
  purpose of this mail is just to let you know that these routines are now
  available to the HAO Unix (Solaris, at least) community.  Immediately
  following is the documentation file, meeus.doc, which resides in
  ~knapp/meeus/.

  Barry


  96/02/05

  Fortran (and some IDL) implementations of routines which compute
  planetary positions to a very high accuracy, using the VSOP87
  planetary theory, and other comparably accurate astronomical routines,
  are available for "beta" use on the HAO Solaris workstations.  These
  routines are based on algorithms presented in the book "Astronomical
  Algorithms" by Jean Meeus, Willman-Bell, 1991.
  
  At the present time, the following Fortran services are available:

     ephem.for      - apparent distance, ecliptic longitude & longitude,
                      right ascension & declination of a planet
     moon_app.for   - apparent ecliptic and equatorial coordinates of
                      the moon, and its true geocentric distance (km)
     moon.for       - true ecliptic coordinates of the moon
     gcpos.for      - apparent geocentric position of a planet
                      (neglecting nutation)
     hcpos.for      - true heliocentric position of a planet
     obliq.for      - true obliquity of the ecliptic
     nutate.for     - nutation corrections to ecliptic longitude
                      and obliquity of the ecliptic
     nutate_matrix.for
                    - returns orthogonal matrix formulation of nutation
                      corrections
     precess.for    - apply precession to an object
     precess_matrix.for
                    - returns orthogonal matrix to precess any object
                      from one epoch to another
     aberrat.for    - compute the effect of annual aberration on the
                      position of a star, using the rigourous method
                      of Ron and Vondrak.
     star_j2000.for - apparent place of a star
     fk5.for        - transform VSOP87 theory to statndard FK5
                      system (a very small correction, on the order
                      of a few thousandths of an arc second).
     equecl.for     - transform equatorial to ecliptic coordinates
                      of date, or vice-versa.
     deltat.for     - returns DELTAT = TD - UT (seconds), i.e., the
                      difference between Dynamical (Ephemeris) Time
                      and Universal Time.
     constellation.for
                    - Given epoch 1875.0 coordinates, determine the
                      constellation in which the point lies, using
                      the official IAU constellation boundaries.
     sidtim.for     - apparent sidereal time at Greenwich
     zenith_dist.for
                    - given the time and geographic latitude and longi-
                      tude of an observer, and the celestial coordinates
                      of an object, determine its zenith distance.
     angdst.for     - returns the angular distance between two points
                      on the sphere, using a numerically stable method
                      which is accurate from 0 to pi radians, inclusive.
     helios.for     - returns six quantities useful in physical observ-
                      ations of the Sun: Carrington rotation number,
                      apparent heliographic latitude and longitude of
                      the center of the solar disk, the apparent position
                      angle of the Sun's axis of rotation, the diameter
                      of the solar disk, and the distance from the Earth
                      to the Sun.
     carr2ut.for    - Given a Carrington rotation number and fraction,
                      returns the Julian Day Number and fraction (UT).
     solarecl.for   - For a given new moon (lunation number), compute the
                      general circumstances (time and magnitude) of a
                      solar eclipse.

  There are also several utilities for converting between different
  time systems (ut2td, td2ut), between different calendar systems
  (jd2yd, yd2jd, yd2ymd, ymd2yd), and between different angular
  measures (deg2dms, dms2deg, rad2dms, dms2rad).

  IDL services ephem.pro, helios.pro, and carr2ut.pro are available in
  my IDL library ($bgk_idllib), which is probably already in your
  $IDL_PATH.  Additional IDL interfaces may be provided in the future.

  Documentation of the interfaces of these routines is contained in the
  source code.  The source code and a shareable object library (.so file)
  are located in /home/aldebaran/knapp/meeus/.  To link your application
  to the shareable object library, you need to add the meeus.so library
  to the list of libraries in your f77 command.  A sample makefile
  (for a fictitious application "xmeeus") which shows how to do this is
  attached below.  Also, a sample interactive application xephem.for
  and its make file, xephem.m, are located in the meeus directory.
  
  Please let me know if you have any suggestions, requests, or problems.
  
  Thank you,
  
  Barry Knapp
  [email-masked]
  303-497-1522

# xmeeus.m -- Makefile for xmeeus

# B. Knapp, 96.01.30

# "xmeeus" is a fictitious application; edit this file to
# replace all occurrences of "xmeeus" with the name of your
# application.

# MEEUS library path
MEEUS_PATH = /home/aldebaran/knapp/meeus/

# System library paths
LIB_PATH1 = /opt/SUNWspro/lib/
LIB_PATH2 = /opt/SUNWspro/SC3.0.1/lib/

# Compiler flags
FFLAGS = 

# Linker flags
LFLAGS = -G

# Object files
OBJS =  xmeeus.o #...and others comprising your application

# Dependency rules
%.o: %.for
	f77 -c $(FFLAGS) $<

xmeeus: $(OBJS) $(MEEUS_PATH)meeus.so xmeeus.m
	f77 $(FFLAGS) -o $@ $(OBJS) \
                $(MEEUS_PATH)meeus.so \
		$(LIB_PATH1)libM77.so \
		$(LIB_PATH2)libsunmath.a \
		-R $(MEEUS_PATH):$(LIB_PATH1):$(LIB_PATH2)