Formulas and Sources
The model’s published quantities fall into three classes. Most are derived by the engines — the N-body integration of the planets and Earth’s orbit, and the lunisolar precession channel — and have no closed form: the package, the API, the MCP server and the @essrt/model-values registry serve them per epoch, and the Orbital Calculator evaluates them for any year. A second class are identities: frame arithmetic between quantities the engines produce, exact at every epoch. The third class is fitted: the four millennial cycles of the ΔT stack and the climate formula’s per-regime amplitudes — bounded harmonic terms on stated periods, fitted by the published pipeline. None of them enters the published Earth orbit, the published clock or the published obliquity. This page states which is which, gives the formulas where formulas exist, and points to the page that owns each subject.
This page establishes:
- Which quantities are engine-derived, which are identities and which are fitted, with the way to obtain each — 1. Where each quantity comes from.
- The precession and day-length identities, exact at every epoch — 2. The precession identities, 3. The day-length identities.
- The fitted terms and where their coefficients live — 4. The fitted terms.
- Planetary precession as seen from Earth, the climate formula and the apparent Sun — 5, 6, 7.
- How the formulas are verified — 8. Verification.
Reproducing a value. Every number on this site carries a registry key; the registry is the published @essrt/model-values package, generated from the engine. The functions named below are the @essrt/physics package’s createModel() surface, the same code the 3D simulation runs; the API and the MCP server expose the same calls.
1. Where each quantity comes from
| Quantity | Source | Obtain it | J2000 |
|---|---|---|---|
| Obliquity ε(t) | the obliquity hybrid — the spin axis integrated under one averaged precession equation on the engine’s own orbit-plane motion (Obliquity) | earth.obliquityDeg(year) | 23.4393° |
| Eccentricity e(t) | the N-body series — Earth’s eccentricity vector, a sum of the planets’ secular modes anchored at J2000 (Eccentricity) | earth.eccentricity(year) | 0.01670244 (IAU mean element 0.01671022) |
| Longitude of perihelion ϖ(t) | the same series, the argument of the vector (Precession) | earth.perihelionLongitudeDeg(year) | 102.947° |
| Inclination and node on the invariable plane | the N-body chain’s secular skeleton (Moon & Planets) | earth.inclinationDeg(year), earth.ascendingNodeDeg(year) | — |
| The planets’ elements of date | the N-body chain — anchors, secular modes and periodic terms in a governed artifact | planets | — |
| Axial precession T_p | the composed lunisolar rate — spin from the recession history, the lunar torque on the Moon’s distance (Earth’s Clock) | lunisolar | 25,772 yr |
| Apsidal period T_aps | the movement’s own apsidal rate of date — the beat of the one-family anomalistic and sidereal years, T_anom·T_sid/(T_anom − T_sid), in Julian years; a J2000 reading of the wandering apsidal motion | registry inclPrecYears | ~111,635 yr |
| Perihelion-of-date period | the identity 1/T_peri = 1/T_p + 1/T_aps (§2) | registry periPrecYears | ~20,938 yr |
| Obliquity beat | the hybrid’s dominant period, the beat of T_p against the nodal mode s₃ | registry obliqCycleYears | ~41,099 yr |
| Ecliptic (nodal) period | the chain’s nodal mode | registry eclPrecYears | ~68,751 yr |
| Year lengths of date | the one-source year-length family — the series’ mean motion with the D6 sidereal-year channel (Days & Years) | yearLengths.tropicalYearSecondsAtYear(year), siderealYearSecondsAtYear, anomalisticYearSecondsAtYear | 365.2421905 · 365.2563630 · 365.2596350 d |
| Day lengths | the length-of-day stack — the tidal mean with the GIA and cycle terms, plus the identities of §3 | lengths.lodRealSeconds(year), siderealDaySeconds, stellarDaySeconds | 86,400.001200 · 86,164.091730 · 86,164.100105 s on LOD_real of J2000 (on the SI day of 86,400 s the IAU constants are 86,164.090531 · 86,164.098904 s) |
| ΔT | the ΔT stack — the integral of the day-length history plus the cycle terms | epoch.deltaTSecondsAtYear(year) | 56.08 s anchor |
| Cardinal instants (the seasons) | the apparent Sun’s crossings (§7) | cardinal.jd(year, 'VE' | 'SS' | 'AE' | 'WS') | — |
| The apparent Sun | the certified solar longitude (§7) | eclipse.sunApparentLonDegAtJD(jd) | — |
| The climate formula | the fitted per-regime amplitudes on the engine’s own lines (§6) | the coefficient file | — |
2. The precession identities
Three of the model’s periods are identities between year lengths — the “coin rotation” relations — and one is an identity between periods. They are frame arithmetic and hold at every epoch; their values are the year lengths of date put through them, so at J2000 they are readings, not laws.
with the years in the same unit (SI seconds of date). The three periods obey the addition identity
— the perihelion-of-date period is the meeting frequency of the precession clock and the inertial apsidal motion, which turn in opposite senses (Precession).
| Period | J2000 | What it is |
|---|---|---|
| T_p, axial precession | 25,772 yr | the clock: the composed lunisolar precession period |
| T_aps, apsidal | ~111,635 yr | the movement’s own apsidal rate of date (the anomalistic–sidereal beat) — a J2000 reading; the apsidal motion wanders (N-body Exploration) |
| T_peri, perihelion-of-date | ~20,938 yr | the beat, 1/T_p + 1/T_aps |
| T_aps / T_p | 4.332 | the ratio the founding observation reads at J2000 |
3. The day-length identities
Given the tropical year of date Y_trop(s) in SI seconds and the mean solar day D = 86,400 s:
The sidereal day is one rotation against the equinox — shorter than the solar day because Earth turns about one extra degree a day to keep up with its orbit. The stellar day is one rotation against the fixed stars, longer than the sidereal day by the equinox’s westward precession, projected onto the equator by cos ε (precession in right ascension, m = p cos ε). At J2000 the difference is 8.38 ms. On the model’s physical day of J2000 (LOD_real, 86,400.001200 s) the two days are 86,164.091730 s and 86,164.100105 s; on the SI day of exactly 86,400 s the IAU constants are 86,164.090531 s and 86,164.098904 s — the same two days 1.20 ms apart, the day’s excess (Days & Years).
4. The fitted terms
The published obliquity, eccentricity, perihelion, inclination and node of date, the year lengths and the cardinal instants carry no fitted term: they are the engine quantities and identities of §1–§3 and §7. Two places carry fitted coefficients, both as bounded harmonic terms on stated periods:
- The ΔT stack’s millennial cycles — four periods stated in years (Bond 1,466 yr, Hallstatt 2,430 yr, and two Jose lines of 897 and 716 yr), their amplitudes and phases fitted jointly against the Espenak–Meeus ΔT canon (Timekeeping).
- The climate formula — per-regime amplitudes on the engine’s own lines (§6).
No polynomial term is admitted, because polynomials compound at deep time; every fitted term stays bounded at every epoch.
The coefficients live in the public repository’s public/input/fitted-coefficients.json, the single source of truth for fitted values, and the pipeline that writes them is documented in tools/fit/README.md.
5. Planetary precession as seen from Earth
A planet’s perihelion rate read from Earth differs from its ecliptic rate by the reference frame: the equatorial projection of the perihelion motion, with Earth’s obliquity of date the only Earth input. This is a typed identity, not Mercury’s relativistic anomaly, which the model carries as a derived first-order post-Newtonian term (Mercury Precession).
Where:
- = the planet’s sidereal perihelion rate. The identity is a frame projection and holds whichever rate is fed into it; what is fed in here is the N-body chain’s own 1800–2100 window with the relativistic term off, so that the relativistic advance stays an explicit, separately stated addition rather than one already folded into the projected number
- = the planet’s J2000 perihelion longitude advanced at that rate
- , = the model’s obliquity of date and its rate
The rate fed in is the sidereal one, so the table gives that rather than a period: a perihelion period on this page would otherwise be read against the equinox of date, which is a different quantity and about ten times faster.
| Planet | Newtonian sidereal rate λ̇ (″/cy) | θ₀ (J2000) |
|---|---|---|
| Mercury | 529.0 | 77.455° |
| Venus | 14.1 | 131.865° |
| Mars | 1,596.5 | 336.099° |
| Jupiter | 488.5 | 375.558° |
| Saturn | -1,576.7 | 449.657° |
| Uranus | 806.6 | 170.531° |
| Neptune | 9,101.7 | 397.442° |
Output at J2000 — the Earth-frame right-ascension rate, the ecliptic baseline projected into the simulation’s equatorial frame plus the obliquity-rate term (not the ecliptic rate observers publish):
| Planet | Earth-frame RA rate (″/century) | Baseline, ecliptic | Earth-frame excess |
|---|---|---|---|
| Mercury | ~+576 | +529.0 | ~+47 |
| Venus | ~+4 | 14.1 | ~-10 |
| Mars | ~+1,497 | +1,596.5 | ~-100 |
| Jupiter | ~+458 | +488.5 | ~-30 |
| Saturn | ~-1,718 | -1,576.7 | ~-142 |
| Uranus | ~+740 | +806.6 | ~-66 |
| Neptune | ~+8,872 | +9,101.7 | ~-229 |
For the physical interpretation — why these are reference-frame effects, calculable entirely from Earth’s motion — see Mercury Precession: Perihelion Precession Across the Solar System. The two kinds of planetary “perihelion rate” — the long-term mean and the window trend — are separated on the N-body Exploration page.
6. The climate formula
The climate formula predicts paleoclimate proxy values (benthic δ¹⁸O, atmospheric δ¹³C, ice-core CO₂) at any age inside a fitted window — the formula plotted in the Earth Climate Analysis panel of the 3D Simulation :
The 28 line periods are the engine’s own secular beats — five climatic-precession lines p+gᵢ, ten obliquity lines p+sᵢ, ten planetary eccentricity beats gᵢ−gⱼ, and the 405.6-kyr g₂−g₅ metronome with its harmonics — read from the model’s N-body modes and precession clock and fixed before any fit; the amplitudes and the Heaviside steps are fitted per regime. The formula is valid only inside the regime window it was fitted on. The line list, the per-regime coefficients, the validity windows and the fit statistics live in public/input/climate-formula-coefficients.json and the Python reference implementation scripts/milankovitch_climate_formula.py; the scientific narrative and the per-regime results are on Climate Formula.
7. The apparent Sun
The apparent solar longitude driving the eclipse chain, the cardinal-point instants and the visible simulator is assembled with zero fitted solar constants:
- = 280.46646° (J2000 anchor).
- — the tropical year of date from the one year-length family (§1): the sidereal year of date less the general precession of date, 365.242190469 d at J2000. The integral is accumulated as a cumulative table from J2000, never as a rate times a span.
- , — Earth’s elements from the N-body series plus the derived mean-element offset of the era (Δϖ = +70.08″, Δe = +5.81e-6).
- — the classical Kepler equation of centre, no fitted coefficients.
Verified at 1.03″ RMS vs JPL in the modern window (the Meeus Ch. 25 reference on the same instrument: 1.02″). Full presentation: The Derived Sun.
8. Verification
| Check | Model | Reference |
|---|---|---|
| Obliquity at J2000 | 23.4393° | IAU 2006: 23.439279° |
| Eccentricity at J2000 | 0.01670244 (secular element) | IAU mean element 0.01671022 |
| Longitude of perihelion at J2000 | 102.947° | JPL mean element |
| Obliquity at −10,000 | 24.1589° | La2004: 24.1592°, Chapront: 24.3053° |
| Obliquity over the last 100,000 years | 1.3″ rms | against La2004 |
| Obliquity over the last 1,000,000 years | 15.0″ rms | against La2004 |
| The apparent Sun, modern window | 1.03″ rms | against JPL |
The Orbital Calculator computes every quantity of §1 for any year, with the J2000 reference values side by side; the Interactive 3D Simulation shows the same state visually, and its Framework Verification panel plots each quantity against the reference solutions. The research record behind the derivations is doc 109 and the calculation map doc 110 in the public repository.
Return to Mathematical Foundations or explore the Appendix for reference data.