Pimennykset

Luku 3

Kuunpimennysten etsiminen

Tutkitaan seuraavaksi kuunpimennyksiä, jotka syntyvät vastaavasti kuin auringonpimennykset, mutta täydenkuun aikaan. Täysikuu tapahtuu joka kuukausi, mutta taaskaan jokainen täysikuu ei pimenny.

Katsotaan, missä täysikuu kulkee huonona ja hyvänä kuukautena.

Kuva 3.1:

Täydenkuun reitti tähtitaivaalla maapallon varjon ohitse loka- ja joulukuussa 2028. Lokakuun täysikuu tapahtuu, kun Kuun rata on kallistunut maksimiinsa Auringon (ja Auringon vastapuolen) suunnissa. Kuu ohittaa Maan varjon lähes viiden asteen päästä. Joulukuun täysikuu näkyy ratatasojen solmupisteen suunnassa. Kuunpimennys voi syntyä silloin, kun Maan varjo on täydenkuun hetkellä riittävän lähellä solmua. Geosentrinen näkymä.

Kuvassa 1.1 Aurinko kulkee tähtitaivasta vasten, mutta tähtiä (tai hyvin kapeaa Kuuta) ei tietenkään voi nähdä päivätaivaalla. On käytettävä mielikuvitusta.

Kuva 3.1 yllä esittää yötaivasta, joten tähtien ja Kuun liike on havaittavissa. Vastaavasti Maan varjoa ei kuitenkaan voi nähdä yötaivaalla, vaan se ilmestyy näkyviin vasta sen aiheuttaessa kuunpimennyksen.

3.1 Paikat ja etäisyydet

Luvun 1 löydökset toimivat kuunpimennyksille sellaisenaan. Paikkojen laskemisessa tarvitsisi vain vaihtaa Auringon suunnan sijasta anti-auringon eli Maan varjon suunnaksi (vastapäinen piste taivaanpallolla). Mutta itse asiassa tätäkään ei tarvitse tehdä.

Riittää, että etsitään täydenkuun ajankohdat ja Kuun ekliptinen leveysaste noilla hetkillä, niin :n laskenta toimii sellaisenaan. Lasketaan esimerkin vuoksi pienin kulmaetäisyys kuvan 3.1 tapauksille.

Koodi pienimmän kulmaetäisyyden laskemiseen
from numpy import arctan, cos
from skyfield import almanac
from skyfield.api import load
from skyfield.framelib import ecliptic_frame

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

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 y, m, d in [(2028, 10, 3), (2028, 12, 31)]:
    t, phase = almanac.find_discrete(ts.utc(y, m, d - 1), ts.utc(y, m, d + 1),
                                     almanac.moon_phases(eph))
    ti = t[phase == 2][0]                       # the full moon itself

    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_)

    print(f"{ti.utc_strftime('%Y-%m-%d %H:%M')} - {sigma:.3f}")
2028-10-03 16:25 - 4.939
2028-12-31 16:49 - 0.315

Näköjään joulukuussa tapahtuu kuunpimennys. Mutta luvussa 2 lasketut raja-arvot eivät päde. Mikä on kulmaraja kuunpimennyksen näkymiselle?

3.2 Kuunpimennyksen raja-arvot

Seuraavan kulmaharjoituksen matematiikka on hyvin samanlaista kuin auringonpimennyksillä. Tarjolla on sekä helpotuksia että myös hankaluuksia. Laskentaa helpottaa se, ettei havaitsijan paikka vaikuta pimennyksen syntyyn: Kuu joko pimenee tai sitten ei.

Hankaluutta aiheuttaa ainakin kaksi asiaa. Maapallo ei ole pallo, ja sitä ympäröi ilmakehä.

Aloitetaan katsomalla Maan puolivarjoa. Alkuperäiset laskelmat, ks. Explanatory Supplement luku 11.2.3.

Kuva 3.2:

Maapallon puolivarjon geometria.

Kuvassa 3.2 piste on avaruudessa puolivarjon reunalla Kuun etäisyydellä. Haluamamme suure on puolivarjon kulmaläpimitan puolikas Maasta katsottuna.

Pienellä kolmiojumpalla ulkokulmista saadaan

missä ja ovat Kuun ja Auringon parallaksit ja Auringon näennäinen säde.Tarkka lukija huomaa, että parallaksit eivät ole aivan edellisen luvun määritelmiä vastaavia. on Auringon reunalla eikä keskipisteessä. Tästä aiheutuva virhe on 0.00001 kaarisekuntia. Lisäksi piste on todellisuudessa hieman kauempana kuin Kuun etäisyys. Oikea Kuun etäisyys täsmäisi pisteen kautta kulkevaan tasoon varjon akselin keskellä. Tästä aiheutuva virhe on noin 0.8 kaarisekuntia. Pian saamme huomata tämän kokoisten virheiden olevan kuunpimennyksissä melko mitättömiä.

Kuva 3.3:

Maapallon täysvarjon geometria.

Kuva 3.3 on sama tilanne täysvarjolle, jonka kulmaläpimitan puolikkaaksi saadaan

Sitten ensimmäinen riesa. Maapallo ei ole pallo, vaan litistynyt ellipsoidi. Ellipsoidin varjon laskeminen eri asennoissa olisi kammottava homma. Tilanteen voi pelastaa käyttämällä laskuissa maapallon ekvatoriaalisen säteen tilalla keskimääräistä sädettä 45 asteen leveyspiirin kohdalla. Tämä voidaan tehdä käyttämällä parallaksin asemesta

Toinen riesa. Jo kauan sitten on huomattu näiden geometristen laskelmien poikkeavan havaituista pimennysten ajankohdista jonkin verran. Maan varjo näyttääkin olevan isompi kuin laskelmat antaisivat ymmärtää. Syynä on maapallon ilmakehä. Kuinka paljon isompi? Prosentin, viisi prosenttia? Sanotaan kaksi prosenttia. Siispä

Siis ihan oikeasti. Nämä kertoimet eivät ole laskettuja vaan kokeellisesti määritettyjä. Philippe de La Hire huomasi jo 1707, että laskettua varjon sädettä on kasvatettava noin 1/41:llä, jotta se sopisi havaittuihin kontaktihetkiin. Myöhemmin ehdotettiin 1/40 (Lambert) ja 1/60 (Mayer), ja Beer ja Mädler päätyivät vuoden 1833 pimennyksestä lukuun 1/50. Chauvenet vakiinnutti sen 1891, ja siitä tuli efemeridijulkaisujen käytäntö. Danjon huomautti 1951, että suhteellista korjausta yritetään tehdä väärässä kohdassa. Jos ilmakehä toimii kuin läpinäkymätön kuori, sen kuuluu kasvattaa Maan sädettä eikä varjoja. Kerroksen paksuudeksi hän arvioi noin 75 km eli 1/85 Maan säteestä, jolloin varjot jäävät hieman pienemmiksi. Ero korjaamattomiin ennusteisiin on havaittavissa, mutta keskenään eri korjausten välillä on haastavaa nähdä eroja, varsinkin kun täysvarjon reuna on todellisuudessa pehmeä ja epätarkka. Puolivarjon ulkoreuna on niin mitätön, ettei korjauksilla ole minkäänlaista käytännön vaikutusta. Pitkissä, vuosisatojen mittaisissa pimennystaulukoissa muutamat pimennykset saattavat muuttua täydellisistä osittaisiksi. Astronomical Almanac ja Explanatory Supplement (ja tämä sivusto) pitäytyvät 1/50:ssä, kun taas Espenakin kaanonit ja Connaissance des Temps käyttävät Danjonin tapaa. Kattavaa käsittelyä varten katso Espenak: Enlargement of Earth's Shadows.

Geosentriset rajaehdot kuunpimennyksen tapahtumiselle on nyt helppo määritellä.

Kuva 3.4:

Kuunpimennyksen kolme raja-arvoa: täydellinen (), osittainen () ja puolivarjopimennys ().

Puolivarjopimennys tapahtuu, kun Kuun ja varjon keskipisteiden kulmaetäisyys , osittaiselle raja on , täydelliselle .

Yhteenvetona kolmeksi ehdoksi saadaan

3.3 Käytännön esimerkki

Etsitään nyt kuunpimennykset vuonna 2028.

Koodi kuunpimennysten raja-arvojen laskemiseen
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(2028, 1, 1), ts.utc(2029, 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 == 2]:                        # every full moon of the year
    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_s = degrees(R_EARTH / d_sun)
    pi_1 = 0.998340 * degrees(R_EARTH / d_moon)   # the 45-degree radius

    f_1 = 1.02 * (pi_1 + pi_s + s_s)
    f_2 = 1.02 * (pi_1 + pi_s - s_s)

    if sigma < f_2 - s_m:                       # tightest limit first, or a
        verdict = 'total'                       # total would report as partial
    elif sigma < f_2 + s_m:
        verdict = 'partial'
    elif sigma < f_1 + s_m:
        verdict = 'penumbral'
    else:
        verdict = '-'

    print(f"{ti.utc_strftime('%Y-%m-%d %H:%M')}  {sigma:6.3f}"
          f"  {f_1 + s_m:6.3f}  {f_2 + s_m:6.3f}  {f_2 - s_m:6.3f}  {verdict}")
täysikuupuolivarjon rajaosittaisen rajatäydellisen rajatulos
2028-01-12 04:030.9961.588 1.035 0.483 osittainen
2028-02-10 15:041.7171.600 1.049 0.491
2028-03-11 01:063.9051.594 1.046 0.490
2028-04-09 10:274.9561.570 1.027 0.480
2028-05-08 19:494.6321.537 0.998 0.464
2028-06-07 06:093.0801.500 0.964 0.445
2028-07-06 18:110.7331.467 0.932 0.427 osittainen
2028-08-05 08:101.8101.444 0.908 0.412
2028-09-03 23:483.8951.434 0.894 0.404
2028-10-03 16:254.9391.439 0.895 0.403
2028-11-02 09:174.5871.459 0.910 0.411
2028-12-02 01:402.8861.490 0.939 0.427
2028-12-31 16:490.3151.528 0.975 0.448 täydellinen

Toistetaan lasku vielä vuodelle 2027 puolivarjopimennysten löytämiseksi.

täysikuupuolivarjon rajaosittaisen rajatäydellisen rajatulos
2027-01-22 12:171.6511.598 1.045 0.488
2027-02-20 23:241.0541.576 1.026 0.478 puolivarjo
2027-03-22 10:443.4251.542 0.996 0.461
2027-04-20 22:274.8031.503 0.962 0.443
2027-05-20 10:594.8531.469 0.931 0.426
2027-06-19 00:443.6091.444 0.908 0.413
2027-07-18 15:451.4181.432 0.897 0.406 puolivarjo
2027-08-17 07:291.1541.436 0.898 0.407 puolivarjo
2027-09-15 23:043.4431.454 0.913 0.415
2027-10-15 13:474.8111.485 0.940 0.429
2027-11-14 03:264.8231.523 0.973 0.447
2027-12-13 16:093.4201.560 1.008 0.467

Heinäkuun pimennyksessä kulmaetäisyys on 1.418° ja puolivarjopimennyksen raja 1.432°. Ero on 0.014° eli 50 kaarisekuntia. Vielä tätä vähemmän säväyttävää pimennystä saanee odottaa aika pitkään. Merkatkaa kalenteriin!

3.4 Erityinen puolivarjopimennys

Entäpä, jos kuvan 3.4 tapaus toimisi toisenlaisena raja-arvona: Kuinka usein Kuu mahtaa olla kokonaan puolivarjossa, muttei lainkaan täysvarjossa? Näin voi tapahtua, kun

Kuva 3.5:

Täydellinen puolivarjopimennys: Kuu mahtuu kokonaan puolivarjon sisään koskettamatta täysvarjoa.

Etsitään muutama seuraava täydellinen puolivarjopimennys.

Koodi täydellisten puolivarjopimennysten etsimiseen
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']

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

found = 0
year = 2027

while found < 3:                                # one year at a time, until three
    t, phase = almanac.find_discrete(ts.utc(year, 1, 1), ts.utc(year + 1, 1, 1),
                                     almanac.moon_phases(eph))
    for ti in t[phase == 2]:
        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_s = degrees(R_EARTH / d_sun)
        pi_1 = 0.998340 * degrees(R_EARTH / d_moon)

        f_1 = 1.02 * (pi_1 + pi_s + s_s)
        f_2 = 1.02 * (pi_1 + pi_s - s_s)

        if f_2 + s_m < sigma < f_1 - s_m:       # inside the penumbra, clear of the umbra
            print(ti.utc_strftime('%Y-%m-%d %H:%M'))
            found += 1
            if found == 3:
                break
    year += 1
2053-08-29 07:53
2066-12-31 14:42
2070-04-25 09:32

Näitä joutuu odottelemaan hetken. Parasta merkata nämäkin kalenteriin, etteivät vain menisi ohi.

Lisää tietoa, ks. Meeus (1980). Huomaa, että tämän lähteen lista on erilainen ja 2066 puuttuu. Ero selittyy ylempänä käsitellyillä eroilla varjojen kasvattamiseen valituissa prosenteissa.