Computing Solar Eclipses — Research

Local circumstances

workingupdated 2026-09-15local-circumstancesbesseliantopocentriccontactsbailys-beads
  • The algorithm is the 1961 Explanatory Supplement section 9D, restated in 1992 with a recommendation for direct root finding, and implemented verbatim in NASA's program.js, Stellarium's AstroCalc and the open GitHub engines 1 2 3.
  • The whole reduction is eight formulas. Project the observer onto the fundamental plane, subtract from the shadow-axis coordinates, shrink the shadow radii with L=LζtanfL' = L - \zeta\tan f, then solve u2+v2=L2u^2+v^2 = L'^2 for the contacts and uu+vv=0uu'+vv'=0 for maximum eclipse 1.
  • The topocentric method is one equation on the apparent separation, used by USNO and the Swiss Ephemeris, and it agrees with the Besselian reduction to 0.1 s when the ephemeris, the radii and ΔT\Delta T agree 4 5.
  • The lunar limb and the solar radius are the corrections that matter, at 2 to 3 s and 1 to 2 s on the central line and tens of seconds near the path edge. Every open implementation omits both 6 7.
  • The choice of kk is worth 4 s of totality, with 2m40.3s against 2m44.3s for 2017 August 21 in Illinois 8.

What this topic covers

This topic takes the elements as given and reduces them to one site. It covers the observer's projection onto the fundamental plane, the contact and maximum-eclipse solutions, magnitude in its two branches, obscuration as a lens area, the position and vertex angles, altitude, azimuth and duration, and the conversion from Terrestrial Time to UT. It then covers the direct topocentric alternative and the libraries that support it, and finally the corrections that the smooth-Moon reduction leaves out, with their sizes in seconds and a survey of the public code that does or does not apply them.

Notes in this topic

What this topic changes for the pipeline

The local stage becomes two interchangeable engines that must agree to 0.1 s, one Besselian and one topocentric. The corrections layer sits above them, and its inputs, the solar radius, the limb profile and ΔT\Delta T, become explicit pipeline parameters rather than constants buried in element files. The stage must also export, for each interior contact, the position angle PP, the position angle and speed of the relative motion and the topocentric libration, because those are what the limb and bead stages consume.

References

  1. 1peer-reviewed Explanatory Supplement to the Astronomical Ephemeris and the American Ephemeris and Nautical Almanac (1961), section 9D "Solar eclipses: local circumstances", pp. 241-249 Official almanac chapter. Read from the archive.org OCR text (var/downloads/es1961_djvu.txt, lines 40694-41460). Gives the observer coordinates, hourly variations, greatest phase, contact-time solution with the auxiliary angle psi, position angles Q and V, magnitude, degree of obscuration and the differential corrections for longitude, latitude, height and Delta T.
  2. 2peer-reviewed Explanatory Supplement to the Astronomical Almanac (Seidelmann ed., 1992), chapter 8, section 8.36 "Local circumstances" Official almanac chapter. Read from the archive.org OCR text (var/downloads/es1992_djvu.txt, lines 47555-47720). Restates the 1961 method in vector form, recommends inverse interpolation on u2+v2-L^2, and gives the magnitude and obscuration derivations (8.3621 to 8.3623).
  3. 3primary Chris O'Byrne and Fred Espenak, "Javascript Solar Eclipse Explorer", program.js (NASA GSFC, 2007, GPL) Read in full (var/downloads/jsex_program.js, 1200 lines). The reference implementation of the Explanatory Supplement local-circumstances method in code: observer constants, time-dependent and time-and-location-dependent circumstances, Newton iteration for mid eclipse and the four contacts, P, V, altitude, azimuth, magnitude, obscuration and sunrise/sunset handling.
  4. 4primary USNO Astronomical Applications Department, "Solar Eclipse Computer" (data service description) Read. States the direct topocentric method: iterate topocentric Sun and Moon positions to find maximum eclipse, then search backwards and forwards for the contacts, with IAU radii Sun 696000 km and Moon 1737.4 km, and altitude corrected for standard refraction.
  5. 5company Swiss Ephemeris, swecl.c (functions eclipse_how, eclipse_when_loc, swe_sol_eclipse_how, swe_sol_eclipse_when_loc) Read (var/downloads/swecl.c). Direct topocentric implementation: DSUN = 1392000 km, DMOON = 3476.3 km, angular separation from unit vectors, two-circle lens obscuration, rmoon scaled by 0.99916 for second and third contacts, bracketing search with find_zero.
  6. 6primary Fred Espenak, NASA GSFC, "The Lunar Limb Profile and Eclipse Predictions" Read. Watts corrections bring predictions to better than 0.5 s, uncorrected times can be off by 2 to 3 s and more near the path limits, Kaguya and LRO data reach about 0.2 s.
  7. 7trade Besselian Elements team (Luca Quaglia, John Irwin and others), "The solar radius and its impact on eclipse computations" Read. For 2017 August 21 at the Oregon/Idaho border, moving from 959.63 to about 960 arcsec shortens centreline totality from 130 s to 128 s and near the southern edge from 34 s to 13 s.
  8. 8company Fred Espenak, "Solar Eclipse Predictions and the Mean Lunar Radius" (EclipseWise) Read. Gives k = 0.2724880 (USNO 1968-1980, penumbral and annular), k = 0.272281 (umbral contacts of total eclipses), k = 0.2725076 (IAU 1982), and the 2017 Illinois example 2m40.3s versus 2m44.3s.

In this section