Solar–Globular Cluster Encounter Analysis

The Furniture of the Galaxy

An invitation to ask whether the long swing of our orbit has been touching something old, and patient, this whole time.

Look up tonight, away from the city lights. The pale river of the Milky Way is the new part of the galaxy — its disk, where stars are born and worlds are made. What hangs above that river, and below it, are the older things: globular clusters, dense balls of half a million ancient stars apiece, that watched the disk form around them.

There are about a hundred and fifty of them. Charles Messier put the brightest in his catalog in 1771. Their orbits do not live in the disk — they plunge through it on inclined paths, like swimmers crossing a swimming pool. Our Sun, on its own long orbit, oscillates through the same plane every thirty million years or so. Two or three times each galactic year, we pass near enough to feel one.

This tool asks one question, one cluster at a time. Reconstruct the orbits backward. When did the Sun come closest? How massive was the encounter? How long did it last? And does any of those moments sit near something that stirred on Earth — a sudden flowering, a quieting, an extinction or a recovery?

The answer is a list. Not a discovery. The list is where the looking starts.

The Catalog

Thirteen well-known clusters, with the values you'd need for a first integration. Format per line: name, RA(°), Dec(°), distance(kpc), pmRA*(mas/yr), pmDec(mas/yr), RV(km/s), mass(M☉), tidal_radius(pc). The last two are optional; mass enables the tidal-impulse ranking, tidal radius enables the geometry test. For serious work, replace these approximate Gaia-era values with the current Baumgardt & Vasiliev table.

What Stirred on Earth

Major shifts in Earth's biology and chemistry over the last quarter-billion years. cull for extinctions and anoxic crises; bloom for radiations, recoveries, climatic optima. Add any others you'd like to test against.

Settings

How far back to look, how finely, and how wide a window to count as a match.

Ready when you are.
The Physics, in Plain Words

The galaxy is treated as a smooth, time-independent gravitational field. Three components: a Hernquist bulge (M = 1.2×10¹⁰ M☉, scale 0.5 kpc), a Miyamoto-Nagai disk (M = 8×10¹⁰ M☉, a = 3.0 kpc, b = 0.3 kpc), and a logarithmic halo (v_h = 200 km/s, scale 12 kpc). Together they produce a circular velocity of about 228 km/s at the solar radius — close to the measured value.

The Sun starts where it is now — Galactocentric position (−8.122, 0, 0.0208) kpc and velocity (11.1, 245.24, 7.25) km/s — and is integrated backward by classical fourth-order Runge-Kutta. Each cluster's observed phase space (right ascension, declination, distance, proper motion, radial velocity) is converted to Galactocentric Cartesian using the J2000 ICRS-to-Galactic rotation, then integrated alongside the Sun.

The closest approach gives you four numbers. The minimum distance bmin. The time it happened, tmin. The relative velocity at that moment, vrel. The characteristic timescale τenc = bmin/vrel — how long the encounter "lasted" in the impulse-approximation sense.

The tidal impulse ΔVOort ≈ 2GM·aOort/(bmin²·vrel) gives the differential velocity kick imparted to a comet at the outer Oort cloud (aOort ≈ 50 000 AU) relative to the Sun. This is the right physical observable to rank candidate encounters by, because it is what matters for shaking comets loose. The result is in metres per second; outer Oort orbital velocities are roughly 100 m/s, so even a few m/s is a meaningful kick.

What this tool does not do. It assumes a smooth axisymmetric potential — no spiral arms, no bar, no time-varying perturbations. It uses point-mass clusters — no internal structure or extended tidal force from the cluster's own halo. It does not propagate input uncertainties; for a serious test, sample each cluster's RA/Dec/PM/RV/distance from its published Gaussian errors a thousand times and look at the spread.

On performance. The integrator works entirely on flat Float64Array buffers with no per-step object allocation — closer to a C inner loop than to idiomatic JS. The full thirteen-cluster run, three hundred million years backward at a 0.2-Myr step, finishes in under a hundred milliseconds in any modern browser. Porting this to WebAssembly would buy maybe a factor of two; the choice not to is mostly about keeping the file self-contained and readable.