*
Cococubed.com


Positional Astronomy

Home

Teaching materials
Astronomy research
Astronomy codes
... Stellar equation of states
... EOS with ionization
... EOS for supernovae
... Chemical potentials
... Stellar atmospheres
... Voigt Function
... Polytropic stars
... Cold white dwarfs
... Hotter white dwarfs
... Cold neutron stars
... Stellar opacities
... Neutrino energy loss rates
... Ephemeris routines
... Fermi-Dirac functions
... Galactic chemical evolution

... Nuclear reaction networks
... Nuclear statistical equilibrium
... Laminar deflagrations
... CJ detonations
... ZND detonations
... Fitting to conic sections
... Unusual linear algebra
... Derivatives on uneven grids
... Pentadiagonal solver
... Quadratics, Cubics, Quartics
... Supernova light curves
... Exact Riemann solutions
... 1D PPM Hydrodynamics
... Verification problems

... EZ stellar evolution
... FLASH code
... Mesa code
Astronomy talks
Astronomy images
Outreach
Family album
Bicycle adventures
Artwork


Contact us:
J.D. Maldonado
F.X.Timmes, my vitae

These routines compute the state vectors for the sun, the nine planets, the moon, the two martian satellites, four of the Galilean satellites, eight of saturns moons, six of uranian moons, 300 comets, and 14790 asteroids and other minor bodies.

The answers returned compare very favorably with the JPL Horizons answers. These routines have been successfully run on sgi, linux, and mac os x boxes under fortran 77 and fortran 90 compilers. A laughably rough and completely out of date users guide readme_ephem is avaliable.

Xephem by Elwood Downey is excellent, free, includes source code, and is a lot fun. Starry Night is not free, but a visually outstanding program, particularily on openGL systems. For speed and disk space reasons, both of these programs use the VSOP87 routines for the planetary state vectors; none use the JPL ephemeris files and US Naval Observatory routines as given below.

There are five (optionally six) data files to download:


unxp1600-2200_ppc_mac_xlf.405
unxp1600-2200_intel_mac_ifort.405
are 55MB JPL DE405 unix binary files for the sun, planets, and moon from +1600AD to +2200AD. The first is for machines/compilers that are big endian with record lengths in bytes (e.g., a powerpc mac under xlf or absoft). The first is for machines/compilers that are little endian with record lengths in single precision words (e.g., an intel mac under ifort). To download either binary file, hold the mouse button down and choose "save this link as". If you want to roll your own JPL binaries, click here.
unxm3000-p3000.406 this file is optional. it is a 199MB JPL DE406 unix binary file for the sun, planets, and moon from -3000BC to +3000AD. Let me know if you want this big file, or all 650 MB of DE406 in ascii format.
comet_elements.dat is an ascii file from JPL containing osculatory orbital elements for about 300 comets. Get updated versions from the JPL DATSCOM site.
numasteroids_elements.dat is an ascii file from JPL containing osculatory orbital elements for about 14790 asteroids. Get updated versions from the JPL DATSCOM site.
ephem.e15 is an ascii file from Jay Lieske containing the J2000 parameters for the Galilean satellites.
redtass7.dat is ascii file from BDL containing time series arguments for eight of saturn's satellites. Also check out the IERS site.
 

There are twelve files that form the core library to download:

position_routine.f contains a single high level routine that returns the ephemeris. This is the main routine that all the application routines call.
ephem.dek contains common block communications for all the core routines and applications.
initialize_routine.f does all the initializations.
jpl_routines.f contains a customized version of the jpl ephemeris routines. They open, read, and interpolate the JPL binary files. It is imperative that you set the record length, varible nrecl in subroutine fsizer2, for your machine and compiler. As it is, its set for one record per single precision word.
novas_routines.f contains a customized version the USNO's NOVAS routines. They call the routines in the jpl_routines file.
fxt_routines.f contains routines for converting dates and times,
coordinate transforms, state vectors to orbital elements, root and mimima finders, string choppers, exact two-body solutions, and orbit integrators.
marsat_routines.f gets the planetocentric state vectors of the martian satellites.
based on Chapront-Touze, M., A&A 240, 159, 1990.
lieske_routines.f gets the planetocentric state vectors of the jovian satellites.
based on Lieske, J. H., A&A Supp. 129, 205, 1998.
satsat_routines.f gets the planetocentric state vectors of saturn's satellites.
based on Vienne, A. & Duriez, L., A&A 297, 588, 1995.
gust86_routines.f gets the planetocentric state vectors of the uranian satellites.
based on Laskar, J. & Jacobson, R. A., A&A 188, 212, 1987.
glue.f system and compiler dependent stuff like opening files, getting the date and time out of the machine, and so on. you may need to adjust some of the calls in here depending on your machine and compiler.
trig_degrees.f for silly but popular compilers (e.g., g77) that don't have the circular functions in degrees as intrinsic functions. if your compiler supports degree trig functions, then you could omit this routine if you comment out (or remove) the declarations to things like 'cosd'. it's pretty easy to do.
 

Here are nine applications of the library. Each application inserts the library through fortran include statements. You can do something fancier (e.g., object libraries) if you wish.

positions.f reports the state vectors & angular coordinates in equatorial, ecliptic, and altitude-azimuth coordinate systems for either geocentric, heliocentric or topographic centers.
within.f finds the dates when any two objects are within a given angular seperation.
rise.f gives the rise, transit & set time of any object. It uses a bombproof, but slower, search method.
rise2.f gives the rise, transit & set time of any object. Using a fast iteration method, it can be fooled in unusual cases such as near the artic circle when the sun grazes the horizon.
equinox.f is a program that gives the dates of equinoxes and solstices.
periheloin.f is a program that gives the dates of aphelions and perihelions. D. D'Antonio wanted a list of Earth's aphelions and perihelions, so here are some periheleions and apheleions.
moon_phases.f gives the times of the lunar phases. For a new or full moon, an alert is printed if conditions are conducive for a potential lunar or solar eclipse. Included is code that will find all dates of blue moons within a year, and all dates that are a full moon and friday the 13th.
solar_eclipse.f gives the geographical track of a solar eclipse centerline, reporting total, partial, annular, or non-central phases. In the case of a total or partial eclipse the duration of the solar eclipse.
retrograde.f is a program that gives the dates of retrograde motion.
 

 



Please cite the relevant references if you publish a piece of work that use these codes, pieces of these codes, or modified versions of them. If you're nice, offer co-authorship of the publication. At best, you'll love these programs so much that you'll send great wads of cash to me.