Eclipses

Chapter 2

Solar eclipse limits

In the previous chapter we worked out the least geocentric angular separation between the Sun and the Moon. Nobody lives at the centre of the Earth, but the separation computed there is still of use. How small does that angle need to be for a solar eclipse to happen somewhere on the Earth’s surface?

For the original derivation and figures, see Explanatory Supplement section 11.2.4. The figures here try to make that geometry clearer still, and some steps the book passes over are worked through.

We begin with parallax.

Figure 2.1:

The horizontal parallax and the geocentric parallax . The topocentric observer is at .

Geocentric parallax is the angular distance between the topocentric and the geocentric direction to a body, for some observer standing on the Earth’s surface. In other words, it’s how far the apparent position of the body shifts when the observer is not at the centre of the Earth. In figure 2.1 both of those directions are measured against the observer’s zenith . Alternatively, the parallax is the angle between the observer and the Earth’s centre, from the body’s perspective.

From the upper triangle, the zenith distance of the observer converts to the geocentric one

Horizontal parallax is the same thing for an observer who sees the body on the horizon. The two are related:

The derivation, step by step

For the angles at the observer and at the centre in the upper triangle, the law of sines gives

From the lower right triangle, . Putting the two together:

2.1 Partial eclipse

Every solar eclipse is partial at some stage, for those observing it. Here, though, partial means an eclipse in which the Earth passes through the Moon’s penumbra only, and not through the umbra (nor its extension). Take as the limiting case the situation where the penumbra grazes the edge of the Earth. That is the limit between a partial eclipse and no eclipse at all.

Figure 2.2:

The limiting case for a partial eclipse. The axis of the Moon’s shadow misses the Earth, and only the edge of the penumbral cone touches it, at one single point .

Figure 2.2 is marked with the topocentric quantities, the ones observer sees, written with a prime: the apparent radius (semidiameter) of the Sun , the semidiameter of the Moon , and the zenith distances of the Sun and the Moon and . The corresponding geocentric zenith distances are and . The horizontal dashed line in the figure, the edge of the penumbra, is the horizon of the observer . Marked also is , the geocentric angular separation of the Sun and the Moon.

For the topocentric angles:

that is, the Moon stands exactly its own semidiameter above the horizon, and the Sun its own semidiameter below it. The limbs touch each other on the horizon.

For the geocentric angles we now get

The derivation, step by step

Since ,

Next, two small-angle approximations. A topocentric observer is normally nearer the body than a geocentric one, so the apparent radius of the body would be (the augmentation of the radius). With the Moon and the Sun almost on the horizon and far away, however, we set for both.

Second, the apparent radius of each body is only 15 arcminutes, so we set . The same thing put more simply: if the centre of the body (rather than its limb) were on the horizon, , and the parallaxes .

The net effect of both of these on the result () is under 0.1 arcseconds.

Now and likewise for the Sun.

For the geocentric angular separation of the Sun and the Moon we finally get

This was the limiting value, so the condition for a partial eclipse to happen somewhere on the Earth, measured from the centre, comes out as

2.2 Total and annular eclipse

A total eclipse is seen when the observer moves from the penumbra into the cone of the umbra. In an annular eclipse the observer moves into the extension of the umbral cone (the antumbra). These eclipses are called central, if the axis of the shadow cone intersects the Earth.

Let us look at the same kind of limiting cases for these eclipses. The figures now leave out the extra lines, for clarity.

Figure 2.3:

The limiting case between a partial and an annular eclipse.

Figure 2.4:

The limiting case between a partial and a total eclipse.

In the annular limiting case of figure 2.3, the observer is on the point of entering the antumbra. The upper limbs of the Sun and the Moon are on the horizon, with their centres being below the horizon by their semidiameter each.

In the total limiting case of figure 2.4, the observer is on the point of entering the umbra. Now the lower limbs of the Sun and the Moon are on the horizon, with their centres above the horizon, by .

So in the annular case

and in the total case

Whichever the case, the angular separation between the bodies can now be written

Repeating the partial-eclipse derivation for these cases, the absolute value gives us just a single limit for both:

An eclipse can now be classified by the geocentric apparent sizes: if the eclipse is total; if the eclipse is annular.

One special case is worth noting, though. If , particularly when , the eclipse may be hybrid (annular-total): it’s annular at both ends of the track, but turns total in the middle of the Earth, where the observer is nearer the Moon.

As a second special case, in some rare situations an observer near one of the poles may see a total or an annular eclipse even though the axis of the umbra misses the Earth narrowly to the south or to the north. Such an eclipse is a noncentral one.

Finding either of these special cases needs a more careful calculation.

2.3 A worked example

Let us run the previous chapter’s calculation again for the new moons of 2027, this time reading it against these limits.

Code for the limits
from numpy import arctan, cos, degrees
from skyfield import almanac
from skyfield.api import load
from skyfield.framelib import ecliptic_frame

R_EARTH = 6378.1366           # km, IAU equatorial radius
R_SUN = 696000.0
R_MOON = 0.2725076 * R_EARTH  # Moon/Earth radius ratio, IAU

ts = load.timescale()
eph = load('de440s.bsp')
earth, sun, moon = eph['earth'], eph['sun'], eph['moon']

t0, t1 = ts.utc(2027, 1, 1), ts.utc(2028, 1, 1)
t, phase = almanac.find_discrete(t0, t1, almanac.moon_phases(eph))

def lonlat(body, ti):
    lat, lon, _ = earth.at(ti).observe(body).apparent().frame_latlon(ecliptic_frame)
    return lon.degrees, lat.degrees

def wrap(d):
    return (d + 180) % 360 - 180

for ti in t[phase == 0]:
    a, b = ts.tt_jd(ti.tt - 1 / 1440), ts.tt_jd(ti.tt + 1 / 1440)
    ml_a, mb_a = lonlat(moon, a)
    ml_b, mb_b = lonlat(moon, b)
    sl_a, _ = lonlat(sun, a)
    sl_b, _ = lonlat(sun, b)

    beta = lonlat(moon, ti)[1]
    lam = wrap(ml_b - ml_a) / wrap(sl_b - sl_a)
    tan_I = (mb_b - mb_a) / wrap(ml_b - ml_a)
    I_ = arctan(lam / (lam - 1) * tan_I)
    sigma = abs(beta) * cos(I_)

    e = earth.at(ti)
    d_sun = e.observe(sun).apparent().distance().km
    d_moon = e.observe(moon).apparent().distance().km

    s_s = degrees(R_SUN / d_sun)
    s_m = degrees(R_MOON / d_moon)
    pi_m = degrees(R_EARTH / d_moon)
    pi_s = degrees(R_EARTH / d_sun)

    partial = s_s + s_m + pi_m - pi_s
    central = abs(s_s - s_m + pi_m - pi_s)

    if sigma > partial:
        verdict = '-'
    elif sigma > central:
        verdict = 'partial'
    else:                                       # the two discs decide the type
        verdict = 'total' if s_m > s_s else 'annular'

    print(f"{ti.utc_strftime('%Y-%m-%d %H:%M')}  {sigma:6.3f}"
          f"  {partial:6.3f}  {central:6.3f}  {verdict}")
new moonpartial limittotal/
annular limit
verdict
2027-01-07 20:242.8621.412 0.923
2027-02-06 15:560.2671.423 0.928 annular
2027-03-08 09:292.3801.445 0.940
2027-04-06 23:514.3031.476 0.957
2027-05-06 10:595.0061.509 0.975
2027-06-04 19:404.3621.537 0.990
2027-07-04 03:022.5861.556 1.001
2027-08-02 10:050.1451.561 1.004 total
2027-08-31 17:412.3521.552 1.000
2027-09-30 02:364.2521.530 0.988
2027-10-29 13:375.0021.499 0.971
2027-11-28 03:244.3161.465 0.952
2027-12-27 20:122.3381.436 0.936

Let us run it once more for 2029, to find partial eclipses.

new moonpartial limittotal/
annular limit
verdict
2029-01-14 17:250.9881.463 0.951 partial
2029-02-13 10:323.4131.432 0.933
2029-03-15 04:194.8091.412 0.921
2029-04-13 21:404.7981.408 0.918
2029-05-13 13:423.4511.418 0.923
2029-06-12 03:511.1981.441 0.935 partial
2029-07-11 15:511.3501.473 0.954 partial
2029-08-10 01:563.5501.508 0.974
2029-09-08 10:444.8341.540 0.993
2029-10-07 19:154.8241.563 1.007
2029-11-06 04:243.4581.569 1.011
2029-12-05 14:521.0731.558 1.005 partial

Four partial eclipses and not a single central… Perfect occasion for the Solar Eclipse Conference!