Astronomical Calculations: Moons of Jupiter

Introduction

In this post I’m going to walk through an algorithm for calculating the positions of the four Galilean moons of Jupiter for any given moment in time. This method was developed by Jean Meeus and published in his book Astronomical Algorithms (Willmann-Bell, 2nd Ed., 1998).

All source code is checked into my GitHub repo. You can see the working software in action here: https://moonsofjupiter.azurewebsites.net. If you’re a raw beginner and want to know what you’ve just stumbled upon before diving into this post here are some good places to start:

(1) Ernie Wright provides an introduction with some cool animations that show what Galileo saw at the eyepiece and what he sketched in his own notebook.

(2) Dominic Ford has all kinds of astronomy goodness, including a nice looking corkscrew diagram for the four Galilean moons.

(3) I published an example web site  to  accompany this post. It would be a good idea to play around with it a bit before proceeding so you get an idea of what we’re trying to do.

Continue reading “Astronomical Calculations: Moons of Jupiter”

Astronomical Calculations: Delta T

Historically, Greenwich Mean Time (GMT) — solar noon at the Royal Observatory in Greenwich, England — was used as a universal reference point for trains and ships across the British empire. It is a timekeeping system based on the Earth’s rotation.  And it is a “mean” (average) because the exact moment the Sun crosses the Observatory’s meridian varies throughout the year. (This is a function of the Earth’s elliptical orbit and  angular velocity that I won’t go into here; see the equation of time for a full explanation.)

Eventually we needed something more  universal than a time standard kept in sync with one spot on Earth. Enter the atomic clock. An atomic clock can keep an exact 24 hours, day after day, century after century regardless of when the Sun crosses the meridian of any spot on Earth. Using cesium-133 atoms as a reference point, an atomic clock has an error deviation of about one second in 1.4 million years! We refer to this time as International Atomic Time (TAI).

We now have a solid, universal fixed-length period. Is that it? Can we now just use TAI for our civil time? No because the Earth and the natural forces that affect it are not precise. Things speed up and slow down due to tidal friction and other smaller perturbations. In a nutshell, the Earth cannot keep in sync with the precision of an atomic clock. It’s rotation is slowing down. It’s just like a toy top that a child spins up. The top spins very fast in the first few seconds and then over time loses its angular momentum and gradually spins slower. Our Earth is like a top that is slowing down. But not to worry. Long before it wobbles to a stop it will have been swallowed up by an expanding Sun!

So on the one hand we have a very precise TAI. And on the other hand we have an uncooperative Earth that is slowing down gradually over time. So in 1972, an international standards body introduced Coordinated Universal Time (UTC), a time standard like GMT that is still based on the Earth’s rotation, but with adjustments based on the precision of the underlying TAI.

The idea is to allow UTC to follow the irregularity of the Earth’s rotational period but also to adjust it at regular intervals according to TAI. These adjustments are made by an international committee charged with tracking this deviation. Twice a year they decide whether to add leap seconds to UTC. It’s all incredibly nerdy and I’m going to leave that right there. But as I write this on 1 Feb 2020, I took note of the time as it reached 16:39:00 TAI. At that exact moment it was also 16:38:23 UTC. So TAI is currently 37 seconds ahead of UTC. (This is because TAI was 10 seconds ahead of UTC when it was adopted in 1972 and there have been 27 leap seconds since then.)

That’s all well and good for civil time. But in astronomy, in order to calculate eclipses or transits you need to know the exact orbital positions of the Sun, Moon and planets at a given moment in time. So we need yet another time scale called Terrestrial Time (TT). This is another uniform time scale that works over long distances and long periods of time. Along with TT is a current baseline called the J2000.0 epoch. Both TT and the current epoch will come into play shortly.

Finally that brings me to Delta T. From the wiki:

In precise timekeepingΔT (Delta Tdelta-TdeltaT, or DT) is a measure of the cumulative effect of the departure of the Earth’s rotation period from the fixed-length day of atomic time. Formally it is the time difference obtained by subtracting Universal Time (UT, defined by the Earth’s rotation) from Terrestrial Time (TT, independent of the Earth’s rotation): ΔT = TT − UT. The value of ΔT for the start of 1902 is approximately zero; for 2002 it is about 64 seconds. So the Earth’s rotations over that century took about 64 seconds longer than would be required for days of atomic time.

In his book Astronomical Algorithms, Meeus lists a general algorithm you can follow to calculate an approximate value of ΔT. Here we let t be the time (in centuries which is why we divide by 100) measured from the current J2000.0 epoch:

$$t = {year -2000 \over 100}$$

For years after 2000 Meeus introduces another calculation published in a paper in Paris written by Chapront, Chapront-Touzé & Francou (1997):

$$ΔT = 102 + 102 t + 25.3 t^2$$

I do not have access to their paper so I can’t explain the use of these “magic numbers” but you can see them in use on this Delta T calculator on a retro 90s-era (but awesome) web site maintained by Professor van Gent of the University of Utrecht.

Next we add the following correction for years between 2000 and 2100:

$$0.37 * (year – 2100)$$

That’s it. Let’s implement this algorithm for the year 2020. I’m using C# language syntax and Visual Studio Code as my editor:

class Program
{
    static void Main(string[] args)
    {
        var year = 2020;
        var t = (year - 2000) / 100;
        var deltaT = 102 + (102 * t) + (25.3 * Math.Pow(t, 2));
        var correction = 0.37 * (year - 2100);
        var correctedDeltaT = deltaT + correction;

        Console.WriteLine("Corrected DT for the year {0} is: {1}", 
            year, 
            correctedDeltaT);
    }
}

And my output is +72.4 seconds. (Delta T is always expressed in positive terms.) So at the start of 2020 the Earth’s rotation was roughly 72.4 seconds behind UTC.

Now you’ll recall in my discussion of TAI and UTC above that when TAI was at 16:39:00 UTC was at 16:38:23, a difference of 37 seconds. What’s the relationship here?  Well, TT is always 32.184 seconds ahead of TAI. Why 32.184 seconds? Just take my word for it. It involves an offset from the start of TAI that takes into account an earlier time standard. With that bit of hand-waving out of the way here are our relationships when TAI was at 16:39:00:

TT == 16:39:32.184
TAI == 16:39:00
UTC == 16:38:23

So TT is about 69 seconds ahead of UTC. But if ΔT = TT − UT results in 69 what about our algorithm above that produced 72.4? Remember the leap second additions? Every time a leap second is added to UTC the gap between TT and UTC widens. Three leap seconds were added since the J2000.0 epoch began (2005, 2008, and 2016). This is why our algorithm uses J2000.0 epoch as its baseline.

NASA has published another algorithm for deriving ΔT that is specific for years between 2005 and 2050. If I implement their algorithm into C# code we get this:

private static double ApproximateDeltaT(int year)
{
    var t = year - 2000;
    return 62.92 + 0.32217 * t + 0.005589 * t * t;
}

This functions returns 71.599. These are approximations so we mustn’t worry about why the  two algorithms don’t produce the exact same results. The point to all of this is to know exactly when in TT an event like the next solar eclipse will occur so that you can convert it to UTC in order to observe it!