Computing Solar Eclipses — Research

Local circumstances

workingupdated 2026-09-30local-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 reduction gives contacts and closest approach. Project the observer onto the fundamental plane and reduce the shadow radii with L′=L−ζtan⁡fL'=L-\zeta\tan f. Contacts solve u2+v2=L′2u^2+v^2=L'^2. Closest approach solves uu′+vv′=0uu'+vv'=0. Maximum magnitude and obscuration require their own optimisation when apparent radii vary 1 3 4.
  • The topocentric method is one equation on the apparent separation, used by USNO and the Swiss Ephemeris, with a 0.1 s agreement target when ephemerides, radii, time scales and reductions match 5 6.
  • 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. The surveyed smooth-Moon contact engines omit detailed lunar terrain 7 8.
  • The choice of kk is worth 4 s of totality, with 2m40.3s against 2m44.3s for 2017 August 21 in Illinois 9.

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, under the matched-input validation target. This is a test requirement rather than a demonstrated universal bound. 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 export each interior contact's position angle PP, the signed Sun-relative-to-Moon motion direction NN, positive angular speed and topocentric libration. Those define the signed limb and bead calculations 10.

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. 4company R. Herrera Alegría, "Eclipse-Engine" (eclipseradar.com engine), js/besselian.js README and js/besselian.js read (var/downloads/eclipse_engine_besselian.js). Observer from the geodetic latitude with N = 1/sqrt(1 - e^2 sin^2), height in units of 6378.1366 km, hour angle mu + lambda - 1.002738 Delta T, two-circle lens obscuration, NASA two-branch magnitude, golden-section for maximum and bisection for contacts on m - L1 and m - |L2|.
  5. 5primary 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.
  6. 6company 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.
  7. 7primary 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.
  8. 8trade 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.
  9. 9company 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.
  10. 10peer-reviewed Herald, D. (1983). Correcting predictions of solar eclipse contact times for the effects of lunar limb irregularities. Journal of the British Astronomical Association 93, 241-246 Read in full from the ADS scan (page images). The displacement-curve method: h = 960 (M-1)(1-cos P), r = 0.97 M n arcsec per second, radial rate r cos(PA-N), the path-limit factor 1.863 km per arcsec times sqrt(sin^2 D / sin^2 a + cos^2 D), the limiting magnitudes for total and annular eclipses, and the error budget.

In this section