@essrt/physics 23.6.0 → 24.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@essrt/physics",
3
- "version": "23.6.0",
3
+ "version": "24.0.0",
4
4
  "description": "ESSRT (Expanding Solar System Resonance Theory) physics core — pure, injectable-constants, no I/O, no globals, no DOM. The complete model incl. fitted coefficients; every published version immutably ships one recorded model identity.",
5
5
  "essrt": {
6
- "modelVersion": "v26.5",
6
+ "modelVersion": "v26.6",
7
7
  "_note": "The model identity this package version ships (IP-unified-architecture §10: package semver tracks the API axis; the model version + CONSTANTS_HASH/COEFFICIENTS_HASH in src/constants/ carry the scientific identity). The version-pinning gate enforces this pairing against public/input/model-version.json."
8
8
  },
9
9
  "type": "module",
@@ -40,6 +40,8 @@
40
40
  * like createDeepOrbitalHistory injects its surfaces.
41
41
  */
42
42
 
43
+ const { wrap180 } = require('../math/angles.cjs');
44
+
43
45
  const D2R = Math.PI / 180;
44
46
 
45
47
  /** Cardinal longitudes, equinox of date. @type {Record<string, number>} */
@@ -134,7 +136,7 @@ function createCardinalStructure({ sampleAt, tropicalYearSecondsAtYearFn }) {
134
136
  function anomalisticYearSeconds(year) {
135
137
  const p0 = sampleAt(year).periOfDateDeg;
136
138
  const p1 = sampleAt(year + 1).periOfDateDeg;
137
- const dPeriDeg = ((p1 - p0 + 540) % 360) - 180; // wrapped, prograde +
139
+ const dPeriDeg = wrap180(p1 - p0); // wrapped, prograde + (math/angles; a one-year step, far below 180°)
138
140
  return tropicalYearSecondsAtYearFn(year + 0.5) * 360 / (360 - dPeriDeg);
139
141
  }
140
142
 
@@ -2,17 +2,17 @@
2
2
  // Gives the TypeScript website full type safety at the boundary (§2g) while
3
3
  // packages/physics stays JavaScript.
4
4
 
5
- export declare const CONSTANTS_HASH: "320c51865d620009";
5
+ export declare const CONSTANTS_HASH: "da713fc2d846767d";
6
6
 
7
7
  export declare const MODEL_VERSION: string;
8
8
 
9
9
  export declare const PREPRINT_DOI: string;
10
10
 
11
11
  export declare const DEFAULT_CONSTANTS: {
12
- readonly hash: "320c51865d620009";
12
+ readonly hash: "da713fc2d846767d";
13
13
  readonly additionalBodiesReference: {
14
14
  "pluto": {
15
- "solarYearInput": number;
15
+ "orbitalPeriodInputDays": number;
16
16
  "orbitalEccentricityJ2000": number;
17
17
  "eclipticInclinationJ2000": number;
18
18
  "invPlaneInclinationJ2000": number;
@@ -25,7 +25,7 @@ export declare const DEFAULT_CONSTANTS: {
25
25
  "ascendingNodeInvPlaneClosedForm": number;
26
26
  };
27
27
  "halleys": {
28
- "solarYearInput": number;
28
+ "orbitalPeriodInputDays": number;
29
29
  "orbitalEccentricityJ2000": number;
30
30
  "eclipticInclinationJ2000": number;
31
31
  "invPlaneInclinationJ2000": number;
@@ -37,7 +37,7 @@ export declare const DEFAULT_CONSTANTS: {
37
37
  "rotationPeriodDays": number;
38
38
  };
39
39
  "eros": {
40
- "solarYearInput": number;
40
+ "orbitalPeriodInputDays": number;
41
41
  "orbitalEccentricityJ2000": number;
42
42
  "eclipticInclinationJ2000": number;
43
43
  "invPlaneInclinationJ2000": number;
@@ -49,7 +49,7 @@ export declare const DEFAULT_CONSTANTS: {
49
49
  "rotationPeriodDays": number;
50
50
  };
51
51
  "ceres": {
52
- "solarYearInput": number;
52
+ "orbitalPeriodInputDays": number;
53
53
  "orbitalEccentricityJ2000": number;
54
54
  "eclipticInclinationJ2000": number;
55
55
  "invPlaneInclinationJ2000": number;
@@ -200,7 +200,7 @@ export declare const DEFAULT_CONSTANTS: {
200
200
  };
201
201
  readonly planetOrbitalElements: {
202
202
  "mercury": {
203
- "solarYearInput": number;
203
+ "orbitalPeriodInputDays": number;
204
204
  "orbitalEccentricityJ2000": number;
205
205
  "axialTiltJ2000": number;
206
206
  "eclipticInclinationJ2000": number;
@@ -212,7 +212,7 @@ export declare const DEFAULT_CONSTANTS: {
212
212
  "ascendingNodeInvPlaneClosedForm": number;
213
213
  };
214
214
  "venus": {
215
- "solarYearInput": number;
215
+ "orbitalPeriodInputDays": number;
216
216
  "orbitalEccentricityJ2000": number;
217
217
  "axialTiltJ2000": number;
218
218
  "eclipticInclinationJ2000": number;
@@ -225,7 +225,7 @@ export declare const DEFAULT_CONSTANTS: {
225
225
  "ascendingNodeInvPlaneClosedForm": number;
226
226
  };
227
227
  "mars": {
228
- "solarYearInput": number;
228
+ "orbitalPeriodInputDays": number;
229
229
  "orbitalEccentricityJ2000": number;
230
230
  "axialTiltJ2000": number;
231
231
  "eclipticInclinationJ2000": number;
@@ -238,7 +238,7 @@ export declare const DEFAULT_CONSTANTS: {
238
238
  "ascendingNodeInvPlaneClosedForm": number;
239
239
  };
240
240
  "jupiter": {
241
- "solarYearInput": number;
241
+ "orbitalPeriodInputDays": number;
242
242
  "orbitalEccentricityJ2000": number;
243
243
  "axialTiltJ2000": number;
244
244
  "eclipticInclinationJ2000": number;
@@ -251,7 +251,7 @@ export declare const DEFAULT_CONSTANTS: {
251
251
  "ascendingNodeInvPlaneClosedForm": number;
252
252
  };
253
253
  "saturn": {
254
- "solarYearInput": number;
254
+ "orbitalPeriodInputDays": number;
255
255
  "orbitalEccentricityJ2000": number;
256
256
  "axialTiltJ2000": number;
257
257
  "eclipticInclinationJ2000": number;
@@ -264,7 +264,7 @@ export declare const DEFAULT_CONSTANTS: {
264
264
  "ascendingNodeInvPlaneClosedForm": number;
265
265
  };
266
266
  "uranus": {
267
- "solarYearInput": number;
267
+ "orbitalPeriodInputDays": number;
268
268
  "orbitalEccentricityJ2000": number;
269
269
  "axialTiltJ2000": number;
270
270
  "eclipticInclinationJ2000": number;
@@ -277,7 +277,7 @@ export declare const DEFAULT_CONSTANTS: {
277
277
  "ascendingNodeInvPlaneClosedForm": number;
278
278
  };
279
279
  "neptune": {
280
- "solarYearInput": number;
280
+ "orbitalPeriodInputDays": number;
281
281
  "orbitalEccentricityJ2000": number;
282
282
  "axialTiltJ2000": number;
283
283
  "eclipticInclinationJ2000": number;
@@ -36,20 +36,20 @@
36
36
  * carry it so a counterfactual is reproducible (§2d).
37
37
  * @type {string}
38
38
  */
39
- export const CONSTANTS_HASH = "320c51865d620009";
39
+ export const CONSTANTS_HASH = "da713fc2d846767d";
40
40
 
41
41
  /** Model version label — single source: public/input/model-version.json (§10 two-axis scheme). */
42
- export const MODEL_VERSION = "v26.5";
42
+ export const MODEL_VERSION = "v26.6";
43
43
 
44
44
  /** Canonical preprint DOI — single source: public/input/model-version.json. */
45
45
  export const PREPRINT_DOI = "10.21203/rs.3.rs-8758810/v4";
46
46
 
47
47
  /** @type {Readonly<Record<string, unknown>>} */
48
48
  export const DEFAULT_CONSTANTS = Object.freeze({
49
- hash: "320c51865d620009",
49
+ hash: "da713fc2d846767d",
50
50
  additionalBodiesReference: {
51
51
  "pluto": {
52
- "solarYearInput": 90465,
52
+ "orbitalPeriodInputDays": 90465,
53
53
  "orbitalEccentricityJ2000": 0.2488273,
54
54
  "eclipticInclinationJ2000": 17.14001,
55
55
  "invPlaneInclinationJ2000": 15.5639473,
@@ -62,7 +62,7 @@ export const DEFAULT_CONSTANTS = Object.freeze({
62
62
  "ascendingNodeInvPlaneClosedForm": 101.06
63
63
  },
64
64
  "halleys": {
65
- "solarYearInput": 27503,
65
+ "orbitalPeriodInputDays": 27503,
66
66
  "orbitalEccentricityJ2000": 0.96714291,
67
67
  "eclipticInclinationJ2000": 162.26269,
68
68
  "invPlaneInclinationJ2000": 150,
@@ -74,7 +74,7 @@ export const DEFAULT_CONSTANTS = Object.freeze({
74
74
  "rotationPeriodDays": 2.2
75
75
  },
76
76
  "eros": {
77
- "solarYearInput": 642.93,
77
+ "orbitalPeriodInputDays": 642.93,
78
78
  "orbitalEccentricityJ2000": 0.2229512,
79
79
  "eclipticInclinationJ2000": 10.8276,
80
80
  "invPlaneInclinationJ2000": 9.25,
@@ -86,7 +86,7 @@ export const DEFAULT_CONSTANTS = Object.freeze({
86
86
  "rotationPeriodDays": 0.21958333344885
87
87
  },
88
88
  "ceres": {
89
- "solarYearInput": 1680.5,
89
+ "orbitalPeriodInputDays": 1680.5,
90
90
  "orbitalEccentricityJ2000": 0.0755347,
91
91
  "eclipticInclinationJ2000": 10.59407,
92
92
  "invPlaneInclinationJ2000": 0.4331698,
@@ -237,7 +237,7 @@ export const DEFAULT_CONSTANTS = Object.freeze({
237
237
  },
238
238
  planetOrbitalElements: {
239
239
  "mercury": {
240
- "solarYearInput": 87.9683,
240
+ "orbitalPeriodInputDays": 87.9683,
241
241
  "orbitalEccentricityJ2000": 0.20563593,
242
242
  "axialTiltJ2000": 0.03,
243
243
  "eclipticInclinationJ2000": 7.00497902,
@@ -249,7 +249,7 @@ export const DEFAULT_CONSTANTS = Object.freeze({
249
249
  "ascendingNodeInvPlaneClosedForm": 32.83
250
250
  },
251
251
  "venus": {
252
- "solarYearInput": 224.695,
252
+ "orbitalPeriodInputDays": 224.695,
253
253
  "orbitalEccentricityJ2000": 0.00677672,
254
254
  "axialTiltJ2000": 2.6392,
255
255
  "eclipticInclinationJ2000": 3.39467605,
@@ -262,7 +262,7 @@ export const DEFAULT_CONSTANTS = Object.freeze({
262
262
  "ascendingNodeInvPlaneClosedForm": 54.7
263
263
  },
264
264
  "mars": {
265
- "solarYearInput": 686.93,
265
+ "orbitalPeriodInputDays": 686.93,
266
266
  "orbitalEccentricityJ2000": 0.0933941,
267
267
  "axialTiltJ2000": 25.19,
268
268
  "eclipticInclinationJ2000": 1.84969142,
@@ -275,7 +275,7 @@ export const DEFAULT_CONSTANTS = Object.freeze({
275
275
  "ascendingNodeInvPlaneClosedForm": 354.87
276
276
  },
277
277
  "jupiter": {
278
- "solarYearInput": 4330.53,
278
+ "orbitalPeriodInputDays": 4330.53,
279
279
  "orbitalEccentricityJ2000": 0.04838624,
280
280
  "axialTiltJ2000": 3.13,
281
281
  "eclipticInclinationJ2000": 1.30439695,
@@ -288,7 +288,7 @@ export const DEFAULT_CONSTANTS = Object.freeze({
288
288
  "ascendingNodeInvPlaneClosedForm": 312.89
289
289
  },
290
290
  "saturn": {
291
- "solarYearInput": 10747,
291
+ "orbitalPeriodInputDays": 10747,
292
292
  "orbitalEccentricityJ2000": 0.05386179,
293
293
  "axialTiltJ2000": 26.73,
294
294
  "eclipticInclinationJ2000": 2.48599187,
@@ -301,7 +301,7 @@ export const DEFAULT_CONSTANTS = Object.freeze({
301
301
  "ascendingNodeInvPlaneClosedForm": 118.81
302
302
  },
303
303
  "uranus": {
304
- "solarYearInput": 30586,
304
+ "orbitalPeriodInputDays": 30586,
305
305
  "orbitalEccentricityJ2000": 0.04725744,
306
306
  "axialTiltJ2000": 82.23,
307
307
  "eclipticInclinationJ2000": 0.77263783,
@@ -314,7 +314,7 @@ export const DEFAULT_CONSTANTS = Object.freeze({
314
314
  "ascendingNodeInvPlaneClosedForm": 307.8
315
315
  },
316
316
  "neptune": {
317
- "solarYearInput": 59800,
317
+ "orbitalPeriodInputDays": 59800,
318
318
  "orbitalEccentricityJ2000": 0.00859048,
319
319
  "axialTiltJ2000": 28.32,
320
320
  "eclipticInclinationJ2000": 1.77004347,
@@ -30,6 +30,49 @@
30
30
 
31
31
  'use strict';
32
32
 
33
+ /**
34
+ * The CO-ROTATING anchored mode sum — the z-side evaluator of the history
35
+ * (the ϖ̇ fix, measured): the plain DC anchor residual is a spurious
36
+ * zero-frequency mode that preserves the J2000 VALUE but dilutes the local
37
+ * argument rate by |sum(0)|/|anchor| (z: 11.47 → 7.93″/yr, a 92 s-class
38
+ * anomalistic-year bias in the mode tier). Here the residual ROTATES at the
39
+ * raw sum's own local arg-rate g* = Im(ż·z̄)/|z|² (analytic), so at t = 0
40
+ * both the value AND the rate are exact, and at depth the residual is one
41
+ * |R|-amplitude term at a physical frequency instead of a DC offset (deep
42
+ * envelope measured unchanged: [0.0001, 0.0672] → [0.0003, 0.0678] over
43
+ * 10–50 Myr). Exported: e(t) = hypot(sum(t)) needs no spin integration,
44
+ * so a fixture can read a deep eccentricity node here (bit-identical at the
45
+ * grid nodes; the published surface is the grid's linear interpolation and
46
+ * stays on the history).
47
+ * @param {ReadonlyArray<{omegaRadPerYr: number, re: number, im: number}>} modes
48
+ * @param {[number, number]} anchor the J2000 value (q, p) the sum is pinned to
49
+ * @returns {(t: number) => [number, number]} t in years from J2000
50
+ */
51
+ function createCoRotatingAnchoredModeSum(modes, anchor) {
52
+ const sum = (/** @type {number} */ t) => {
53
+ let re = 0, im = 0;
54
+ for (const m of modes) {
55
+ const c = Math.cos(m.omegaRadPerYr * t), s = Math.sin(m.omegaRadPerYr * t);
56
+ re += m.re * c - m.im * s;
57
+ im += m.re * s + m.im * c;
58
+ }
59
+ return [re, im];
60
+ };
61
+ let q0 = 0, p0 = 0, dq0 = 0, dp0 = 0;
62
+ for (const m of modes) {
63
+ q0 += m.re; p0 += m.im;
64
+ dq0 += -m.omegaRadPerYr * m.im;
65
+ dp0 += m.omegaRadPerYr * m.re;
66
+ }
67
+ const gStar = (dp0 * q0 - dq0 * p0) / (q0 * q0 + p0 * p0);
68
+ const R = [anchor[0] - q0, anchor[1] - p0];
69
+ return (/** @type {number} */ t) => {
70
+ const [x, y] = sum(t);
71
+ const c = Math.cos(gStar * t), s = Math.sin(gStar * t);
72
+ return [x + R[0] * c - R[1] * s, y + R[0] * s + R[1] * c];
73
+ };
74
+ }
75
+
33
76
  /**
34
77
  * @param {{
35
78
  * zModes: ReadonlyArray<{omegaRadPerYr: number, re: number, im: number}>,
@@ -97,43 +140,14 @@ function createDeepOrbitalHistory({
97
140
  // CO-ROTATING anchor (the ϖ̇ fix, measured): the DC residual above is a
98
141
  // spurious zero-frequency mode — it preserves the J2000 VALUE but dilutes
99
142
  // the local argument rate by |sum(0)|/|anchor| (z: 11.47 → 7.93″/yr, a
100
- // 92 s-class anomalistic-year bias in the mode tier). Here the residual
101
- // ROTATES at the raw sum's own local arg-rate g* = Im(ż·z̄)/|z|²
102
- // (analytic), so at t=0 both the value AND the rate are exact, and at
103
- // depth the residual is one |R|-amplitude term at a physical frequency
104
- // instead of a DC offset (deep envelope measured unchanged:
105
- // [0.0001, 0.0672] → [0.0003, 0.0678] over 10–50 Myr).
143
+ // 92 s-class anomalistic-year bias in the mode tier). The co-rotating form
144
+ // is the module-level createCoRotatingAnchoredModeSum (exported — the
145
+ // plan-06 fixture reads the deep eccentricity from it directly).
106
146
  // z ONLY: ζ keeps the DC anchor DELIBERATELY — its anchor is ~0 by
107
147
  // definition (Earth's inclination to the J2000 ecliptic at J2000), i.e.
108
148
  // the coordinate origin; a rotating residual there would inject a fake
109
149
  // wobble into n̂(t).
110
- const mkAnchoredCoRot = (
111
- /** @type {ReadonlyArray<{omegaRadPerYr: number, re: number, im: number}>} */ modes,
112
- /** @type {[number, number]} */ anchor,
113
- ) => {
114
- const sum = (/** @type {number} */ t) => {
115
- let re = 0, im = 0;
116
- for (const m of modes) {
117
- const c = Math.cos(m.omegaRadPerYr * t), s = Math.sin(m.omegaRadPerYr * t);
118
- re += m.re * c - m.im * s;
119
- im += m.re * s + m.im * c;
120
- }
121
- return [re, im];
122
- };
123
- let q0 = 0, p0 = 0, dq0 = 0, dp0 = 0;
124
- for (const m of modes) {
125
- q0 += m.re; p0 += m.im;
126
- dq0 += -m.omegaRadPerYr * m.im;
127
- dp0 += m.omegaRadPerYr * m.re;
128
- }
129
- const gStar = (dp0 * q0 - dq0 * p0) / (q0 * q0 + p0 * p0);
130
- const R = [anchor[0] - q0, anchor[1] - p0];
131
- return (/** @type {number} */ t) => {
132
- const [x, y] = sum(t);
133
- const c = Math.cos(gStar * t), s = Math.sin(gStar * t);
134
- return [x + R[0] * c - R[1] * s, y + R[0] * s + R[1] * c];
135
- };
136
- };
150
+ const mkAnchoredCoRot = createCoRotatingAnchoredModeSum;
137
151
  const s2h = Math.sin(anchorInclEclipticDeg / 2 * D2R);
138
152
  const zetaAnchor = /** @type {[number, number]} */ (
139
153
  [s2h * Math.cos(anchorAscNodeEclipticDeg * D2R), s2h * Math.sin(anchorAscNodeEclipticDeg * D2R)]);
@@ -676,4 +690,4 @@ function createDeepOrbitalHistory({
676
690
  };
677
691
  }
678
692
 
679
- module.exports = { createDeepOrbitalHistory };
693
+ module.exports = { createDeepOrbitalHistory, createCoRotatingAnchoredModeSum };
@@ -42,6 +42,7 @@
42
42
  // • The frozen era clock stays the certified era device (opt-out /
43
43
  // era-certification record), not a member of this family.
44
44
 
45
+ const { wrap180 } = require('../math/angles.cjs');
45
46
  const { createCardinalStructure } = require('../cardinal/one-source-structure.cjs');
46
47
  const { createSiderealYearChannel } = require('./sidereal-year-channel.cjs');
47
48
 
@@ -64,7 +65,7 @@ function createYearLengths({ sampleAt, massLossSiderealSecondsAtYearFn }) {
64
65
  if (typeof sampleAt !== 'function' || typeof massLossSiderealSecondsAtYearFn !== 'function') {
65
66
  throw new Error('createYearLengths: sampleAt and massLossSiderealSecondsAtYearFn are required');
66
67
  }
67
- const w180 = (/** @type {number} */ d) => ((d + 540) % 360) - 180;
68
+ const w180 = wrap180; // math/angles — bit-identical to the former inline form for the sub-degree differences wrapped here
68
69
  const chan = createSiderealYearChannel({ massLossSiderealSecondsAtYearFn });
69
70
  /** A year length from a longer year and a retrograde angular rate of the
70
71
  * reference point, RATE form: 1/T = 1/T_long + p/(360°·JY) — exact (the
@@ -69,6 +69,8 @@
69
69
 
70
70
  'use strict';
71
71
 
72
+ const { wrap180 } = require('../math/angles.cjs');
73
+
72
74
  /**
73
75
  * @typedef {Object} BesselianDeps
74
76
  * @property {(dDaysTT: number) => {lonDeg: number, latDeg: number, distKm: number}} moonFullAtDaysTT
@@ -88,6 +90,23 @@
88
90
  * gmstMeanSiderealT2Deg: number, speedOfLightKmS: number }} constants
89
91
  */
90
92
 
93
+ /** Mean sidereal time at Greenwich, degrees (mean equinox — pairs with the
94
+ * mean-of-date body longitudes; coefficients single-sourced from
95
+ * astro-reference.json physicalConstants). THE ONE GMST of the model: the
96
+ * eclipse location tier, the API's observer tier, the eclipse and lunar
97
+ * audits and the browser's diagnostics all read it. Meeus 12.4's
98
+ * cubic term (−T³/38,710,000) is deliberately absent: it is 0.9″ in the
99
+ * eclipse canon and at most 93″ (6 s of time) at the edge of the observer
100
+ * era, and every recorded eclipse and lunar value was measured without it.
101
+ * @param {number} jdUT
102
+ * @param {{ j2000JD: number, julianCenturyDays: number, gmstMeanSiderealT0Deg: number, gmstMeanSiderealRateDegPerDay: number, gmstMeanSiderealT2Deg: number }} K
103
+ * @returns {number} */
104
+ function computeGmstDeg(jdUT, K) {
105
+ const T = (jdUT - K.j2000JD) / K.julianCenturyDays;
106
+ return ((K.gmstMeanSiderealT0Deg + K.gmstMeanSiderealRateDegPerDay * (jdUT - K.j2000JD)
107
+ + K.gmstMeanSiderealT2Deg * T * T) % 360 + 360) % 360;
108
+ }
109
+
91
110
  /** @param {BesselianDeps} deps */
92
111
  function createBesselian(deps) {
93
112
  const K = deps.constants;
@@ -97,14 +116,8 @@ function createBesselian(deps) {
97
116
  const R_MOON_KM = K.moonDiameterKm / 2;
98
117
  const F = 1 / K.earthFlatteningInverse;
99
118
 
100
- /** Mean sidereal time at Greenwich, degrees (mean equinox — pairs with the
101
- * mean-of-date body longitudes; coefficients single-sourced from
102
- * astro-reference.json physicalConstants). @param {number} jdUT @returns {number} */
103
- function gmstDeg(jdUT) {
104
- const T = (jdUT - K.j2000JD) / K.julianCenturyDays;
105
- return ((K.gmstMeanSiderealT0Deg + K.gmstMeanSiderealRateDegPerDay * (jdUT - K.j2000JD)
106
- + K.gmstMeanSiderealT2Deg * T * T) % 360 + 360) % 360;
107
- }
119
+ /** @param {number} jdUT @returns {number} */
120
+ const gmstDeg = (jdUT) => computeGmstDeg(jdUT, K);
108
121
 
109
122
  /** Ecliptic-of-date → equatorial-of-date vector (km).
110
123
  * @param {number} lonDeg @param {number} betDeg @param {number} distKm
@@ -150,7 +163,7 @@ function createBesselian(deps) {
150
163
  const moon = deps.moonFullAtDaysTT(dTT);
151
164
  const H_DAYS = 0.02;
152
165
  const dLon = deps.moonFullAtDaysTT(dTT + H_DAYS).lonDeg - deps.moonFullAtDaysTT(dTT - H_DAYS).lonDeg;
153
- const moonRateDegPerDay = (((dLon + 540) % 360) - 180) / (2 * H_DAYS);
166
+ const moonRateDegPerDay = wrap180(dLon) / (2 * H_DAYS);
154
167
  const tauDays = moon.distKm / K.speedOfLightKmS / 86400;
155
168
  return {
156
169
  S: eclToEq(sunLon, 0, sunDistanceKm(year, sunLon), eps),
@@ -310,7 +323,7 @@ function createBesselian(deps) {
310
323
  return { kind, magnitude: Math.max(0, atMax.magnitude), maxJd, contacts, centralDurationSeconds };
311
324
  }
312
325
 
313
- return { umbraGroundAt, shadowStateAt, localCircumstances };
326
+ return { umbraGroundAt, shadowStateAt, localCircumstances, gmstDeg };
314
327
  }
315
328
 
316
- module.exports = { createBesselian };
329
+ module.exports = { createBesselian, computeGmstDeg };
package/src/index.js CHANGED
@@ -138,9 +138,9 @@ export * as planetOrbitChain from './planets/orbit-chain.cjs';
138
138
  export { computeSecularShape } from './planets/secular-shape.cjs';
139
139
  // `computeApsidalTangentDegPerYr` is the chain's ±150-yr central tangent of the perihelion
140
140
  // longitude (the panels' "Prec." cell — osculating, NOT the ±1-kyr secular stencil of the
141
- // "Secular" cell); `computeApsidalSecularDegPerYr` is its former name, kept as a deprecated
142
- // alias on the API axis.
143
- export { buildPlanetChainsFromArtifactData, computePlanetElementsAtYear, computeHeliocentricEclipticFromElements, computePoissonArgRad, computeOsculatingElements, solveKeplerRad, computeApsidalSecularDegPerYr, computeApsidalSecularDegPerYr as computeApsidalTangentDegPerYr, ANCHOR_EPOCH_YEAR, ANCHOR_EPOCH_JD } from './planets/keplerian-chain.cjs';
141
+ // "Secular" cell). Its former name `computeApsidalSecularDegPerYr` left the API at 24.0.0
142
+ // (no reader in the simulator, the website or the paper).
143
+ export { buildPlanetChainsFromArtifactData, computePlanetElementsAtYear, computeHeliocentricEclipticFromElements, computePoissonArgRad, computeOsculatingElements, solveKeplerRad, computeApsidalTangentDegPerYr, ANCHOR_EPOCH_YEAR, ANCHOR_EPOCH_JD } from './planets/keplerian-chain.cjs';
144
144
  export { computeEquatorNodeOriginSFrameDeg, convertNodeSFrameToEquatorOriginDeg } from './planets/inv-plane-frame.cjs';
145
145
  export { createSecularSeriesOverride } from './planets/secular-series.cjs';
146
146
  // The planets' spin channel (the precession constant from each planet's own
@@ -61,7 +61,7 @@ export function assembleLunarTheory(ctx) {
61
61
  const anomalisticMonthPeriodFn = (tMa) => moonChain.anomalisticMonthSecondsAtAge(tMa);
62
62
  /** @param {number} tMa @returns {number|null} */
63
63
  const siderealMonthPeriodFn = (tMa) => moonChain.siderealMonthSecondsAtAge(tMa);
64
- const jupiterT0Seconds = C.planetOrbitalElements.jupiter.solarYearInput * 86400;
64
+ const jupiterT0Seconds = C.planetOrbitalElements.jupiter.orbitalPeriodInputDays * 86400;
65
65
  /** @param {number} tMa @returns {number} */
66
66
  const jupiterPeriodFn = (tMa) => driver2PeriodSecondsAtAge(tMa, jupiterT0Seconds, EPOCH_PARAMS.solarMassLossFracPerYear);
67
67
  /** @param {number} a @param {number} b @returns {number|null} */
@@ -164,7 +164,7 @@ export function assembleLunarTheory(ctx) {
164
164
  // docs/109 §22 for the derivation)
165
165
  const fwA2RateDegPerCy = 2 * ((360 * 36525) / moonTropicalMonthDays)
166
166
  - (360 * 36525) / moonAnomalisticMonthDays
167
- - 2 * ((360 * 36525) / C.planetOrbitalElements.jupiter.solarYearInput);
167
+ - 2 * ((360 * 36525) / C.planetOrbitalElements.jupiter.orbitalPeriodInputDays);
168
168
  const fwA3RateDegPerCy = (360 * 36525) / moonSiderealMonth;
169
169
 
170
170
  // Meeus Ch. 47 truncated series (framework-native arguments + E-factor)
@@ -46,7 +46,7 @@ export function assemblePlanetRecords(ctx) {
46
46
  const sArc = chainModes.s[k] && chainModes.s[k].arcsecPerYr;
47
47
  PUBLISHED_PLANET_RECORDS[k] = Object.freeze({
48
48
  name: PLANET_DISPLAY_NAMES[k], // presentation — planets/display-names, the deleted JSON's last leaf (plan 11 step 6)
49
- solarYearInput: ar.solarYearInput,
49
+ orbitalPeriodInputDays: ar.orbitalPeriodInputDays,
50
50
  longitudePerihelion: ar.longitudePerihelion,
51
51
  ascendingNodeInvPlane: ar.ascendingNodeInvPlaneClosedForm, // the closed-form verified J2000 node — astro-reference since plan 11 step 2
52
52
  invPlaneInclinationJ2000: ar.invPlaneInclinationJ2000,
@@ -132,7 +132,7 @@ export function assembleSunAndEclipses(ctx) {
132
132
  // FQ-5 N3 — the completion's carriers are FRAMEWORK-derived from the
133
133
  // model's own planet period records (the Moon-elongation rate from the
134
134
  // sidereal month/year identity). Plan 06 I2 — the carriers are SIDEREAL
135
- // (measured): the records' solarYearInput are OF-DATE periods (their
135
+ // (measured): the records' orbitalPeriodInputDays are OF-DATE periods (their
136
136
  // rates sit +1.39..1.62°/cy above the VSOP sidereal mean motions — the
137
137
  // framework precession plus input rounding), and a perturbation argument
138
138
  // is inertial (D'Alembert: only Σk = 0 arguments are frame-free), so on
@@ -312,6 +312,8 @@ export function assembleSurface(ctx) {
312
312
  }),
313
313
  // 20.3g location tier (see eclipse/besselian.cjs):
314
314
  umbraGroundAtJD: /** @param {number} jd @returns {{latDeg: number, lonDeg: number} | null} */ (jd) => besselian.umbraGroundAt(jd),
315
+ /** THE ONE GMST — mean sidereal time at Greenwich, degrees, at a UT JD (eclipse/besselian.cjs computeGmstDeg; the observer tier's hour angle). @param {number} jdUT @returns {number} */
316
+ gmstDegAtJD: (jdUT) => besselian.gmstDeg(jdUT),
315
317
  solarLocalCircumstances: /** @param {number} jdGreatest @param {number} latDeg @param {number} lonDeg */ (jdGreatest, latDeg, lonDeg) => besselian.localCircumstances(jdGreatest, latDeg, lonDeg),
316
318
  }),
317
319
  climate: Object.freeze({
@@ -7,7 +7,7 @@ import { ONE_FAMILY_WINDOW_YEARS } from '../earth/year-lengths.cjs';
7
7
 
8
8
  /** @param {import('./earth-scalars.js').Ctx} ctx @returns the bindings the later slices read */
9
9
  export function assembleYearDayLengths(ctx) {
10
- const { C, late, deepLod, meanLengthOfDay, yearToTMa } = ctx;
10
+ const { chain, late, deepLod, meanLengthOfDay, yearToTMa } = ctx;
11
11
  // The year lengths of date in DAYS are the published SI year lengths over
12
12
  // the kinematic day of date; the kinematic day of date is the Layer-0 tidal
13
13
  // mean LOD, exactly ω₀ (the SI day) at J2000.
@@ -19,7 +19,7 @@ export function assembleYearDayLengths(ctx) {
19
19
  * surface all read it (the identifier predates the anchor's move onto the
20
20
  * IAU input). @returns {number} */
21
21
  function certifiedAxialPrecessionJ2000Years() {
22
- return 1296000 / C.earthOrbital.generalPrecessionJ2000_arcsecPerYr;
22
+ return chain.certifiedAxialPrecessionJ2000Years(); // the ONE home: the deep-time chain's export (1,296,000 / p_A on the same constants)
23
23
  }
24
24
  /** Kinematic day of date (Layer 0 tidal mean LOD; ω₀ at J2000). Past the
25
25
  * tidal-lock asymptote the chain is null — the J2000 day stands in.
@@ -11,7 +11,7 @@
11
11
  */
12
12
 
13
13
  /** @type {string} */
14
- export const CHAIN_ARTIFACT_HASH = "6c240a2e711f2942";
14
+ export const CHAIN_ARTIFACT_HASH = "96c6665c91d8fa33";
15
15
 
16
16
  /** @type {Readonly<Record<string, unknown>>} */
17
- export const CHAIN_ARTIFACT = Object.freeze({"_description":"Engine-D secular frequencies from the model’s own N-body pipeline (WH 1-Myr, 1PN on, NAFF), the 1800–2100 window rates (B), the Keplerian chain’s governed inputs (K2.1/P5: windowElementRates + j2000AnchorElements — era-typed window values and the t=0 anchor, the chain’s ONE home), the derived instantaneous 1PN apsidal supplement, and the K4.5/K4.7b derived periodic-term layer (periodicTerms: λ̄/a/z/ζ lines + era window affine, engine-measured — tools/explore/k45e-amplitude-solve.mjs). Frames: g ecliptic-J2000 z-modes, s INVARIABLE-plane ζ-modes. Laskar 2004 values are external reference labels (theory), never inputs. See tools/verify/nbody-secular.js for the assertions carried.","meta":{"integrator":"wh","order":2,"dtDays":2,"spanYears":1000000,"sampleDays":1000,"gr":true,"seed":"JPL Horizons J2000 heliocentric state vectors (tools/explore/j2000-state.mjs, the one home)","masses":"DE440 mass ratios (astro-reference physicalConstants)","naffTerms":8,"windowYears":[1800,2100],"laskarRef":"Laskar, J. et al. (2004), A&A 428, 261–285, Table 3","conservationMaxDE":1.111274718777496e-8,"note1PN":"Mercury eigen-level 1PN shift ≈ +0.473 ″/yr (cycle-average of 1/(1−e²)) vs +0.430 instantaneous — not a discrepancy; only the instantaneous value is asserted (P8b).","periodicTermsMethod":"k45e era-centered LSQ (self-seeded prewhitening, golden-refined frequencies; K4.7b)","periodicTermsSpanYr":2500,"periodicTermsCadenceYr":0.1},"g":{"mercury":{"arcsecPerYr":5.575712745100842,"amplitude":0.17545096692289996,"nearestLaskar":{"mode":"g1","arcsecPerYr":5.59}},"venus":{"arcsecPerYr":7.405845773642333,"amplitude":0.02257076966712651,"nearestLaskar":{"mode":"g2","arcsecPerYr":7.452}},"earth":{"arcsecPerYr":4.346410041471262,"amplitude":0.019341964540997673,"nearestLaskar":{"mode":"g5","arcsecPerYr":4.257452}},"mars":{"arcsecPerYr":17.91669664917233,"amplitude":0.08882914196211136,"nearestLaskar":{"mode":"g4","arcsecPerYr":17.916}},"jupiter":{"arcsecPerYr":4.256769540134775,"amplitude":0.044182672761659256,"nearestLaskar":{"mode":"g5","arcsecPerYr":4.257452}},"saturn":{"arcsecPerYr":28.245581213939303,"amplitude":0.04819349423498694,"nearestLaskar":{"mode":"g6","arcsecPerYr":28.245}},"uranus":{"arcsecPerYr":3.92114845556954,"amplitude":0.03321890480578539,"nearestLaskar":{"mode":"g5","arcsecPerYr":4.257452}},"neptune":{"arcsecPerYr":0.6065153888299033,"amplitude":0.009569000807584828,"nearestLaskar":{"mode":"g8","arcsecPerYr":0.673021}}},"s":{"mercury":{"arcsecPerYr":-5.586173731409887,"amplitude":0.0594093355081196,"nearestLaskar":{"mode":"s1","arcsecPerYr":-5.59}},"venus":{"arcsecPerYr":-18.336390502719162,"amplitude":0.013576723451725628,"nearestLaskar":{"mode":"s3","arcsecPerYr":-18.85}},"earth":{"arcsecPerYr":-18.39611840700522,"amplitude":0.011844637233509894,"nearestLaskar":{"mode":"s3","arcsecPerYr":-18.85}},"mars":{"arcsecPerYr":-17.54540235155894,"amplitude":0.021473581432009718,"nearestLaskar":{"mode":"s4","arcsecPerYr":-17.755}},"jupiter":{"arcsecPerYr":-26.34774758231578,"amplitude":0.0031511446938089177,"nearestLaskar":{"mode":"s6","arcsecPerYr":-26.347855}},"saturn":{"arcsecPerYr":-26.34770526139875,"amplitude":0.007853480394550775,"nearestLaskar":{"mode":"s6","arcsecPerYr":-26.347855}},"uranus":{"arcsecPerYr":-2.9997826190870325,"amplitude":0.00874497999537166,"nearestLaskar":{"mode":"s7","arcsecPerYr":-2.9925259}},"neptune":{"arcsecPerYr":-0.7119238013380029,"amplitude":0.00596058002953454,"nearestLaskar":{"mode":"s8","arcsecPerYr":-0.691736}}},"laskarReference":{"g":{"g1":5.59,"g2":7.452,"g3":17.368,"g4":17.916,"g5":4.257452,"g6":28.245,"g7":3.087951,"g8":0.673021},"s":{"s1":-5.59,"s2":-7.05,"s3":-18.85,"s4":-17.755,"s6":-26.347855,"s7":-2.9925259,"s8":-0.691736}},"secularModes":{"mercury":{"z":[{"omegaRadPerYr":0.000027031818207616947,"re":0.006157828154531938,"im":0.17534287252865396},{"omegaRadPerYr":0.000037625755048117867,"re":0.022801394006552067,"im":0.008306969766612642},{"omegaRadPerYr":0.00001819755951477139,"re":0.019634390464761137,"im":0.014089364874799264},{"omegaRadPerYr":0.000011448057607328876,"re":-0.005593518494604968,"im":-0.0029052245787998727},{"omegaRadPerYr":0.00004414416117406344,"re":-0.005805920406608061,"im":-0.0014204427081003208}],"zeta":[{"omegaRadPerYr":-0.00002708077036638925,"re":0.05820923078043654,"im":0.011937299116802896},{"omegaRadPerYr":-0.00003532228203676806,"re":0.004745716308830004,"im":0.009067512616192796},{"omegaRadPerYr":6.775809851645383e-8,"re":-0.0039039070920310393,"im":0.01348975273632237},{"omegaRadPerYr":-0.000014531802676113629,"re":-0.0027805823433146603,"im":0.00187330678411465},{"omegaRadPerYr":-0.0000887164163079169,"re":-0.00011206156871095333,"im":-0.0024785291205995474},{"omegaRadPerYr":-0.000040864847902320425,"re":-0.0009298160696762877,"im":0.0013601255344406},{"omegaRadPerYr":-0.00003206734811188489,"re":-0.013260806086248288,"im":0.010385684665191528}]},"venus":{"z":[{"omegaRadPerYr":0.000035904553512490386,"re":-0.02119846416506149,"im":-0.007750145831471949},{"omegaRadPerYr":0.000021373475097200215,"re":0.01688676059838663,"im":0.011238461632800125},{"omegaRadPerYr":0.0000891126682595621,"re":0.005087494308045224,"im":-0.005109367327044794},{"omegaRadPerYr":0.00002871637308670451,"re":-0.0017393890833965048,"im":0.005587659203186736},{"omegaRadPerYr":0.0000799342922333488,"re":-0.004444836732239248,"im":-0.000050343952229169385},{"omegaRadPerYr":0.000012541688840447411,"re":0.00045357173714962573,"im":0.000911737546266025}],"zeta":[{"omegaRadPerYr":-0.0000888959495553902,"re":0.0014429354465121758,"im":0.013492668537081958},{"omegaRadPerYr":-2.9208325775930855e-8,"re":-0.0038419612463369956,"im":0.013438339841143515},{"omegaRadPerYr":-0.000027486545597650888,"re":0.008423421746069061,"im":0.0009256784115496605},{"omegaRadPerYr":-0.00003540217173683643,"re":0.0007435046608763117,"im":-0.0028971906600878095},{"omegaRadPerYr":-0.000081660514108284,"re":-0.0010567177425443545,"im":0.0017536571546863976},{"omegaRadPerYr":-0.0000952737760802458,"re":0.001562526924479489,"im":0.0014279436664923102},{"omegaRadPerYr":-0.000022714284095972902,"re":0.0006900677838311523,"im":0.0009409487957451416},{"omegaRadPerYr":-0.000012901292920474508,"re":-0.0007909151786516861,"im":0.0007730686699306353}]},"earth":{"z":[{"omegaRadPerYr":0.00002107199051817133,"re":0.01630118387133954,"im":0.010410715474836064},{"omegaRadPerYr":0.000035854880642325555,"re":-0.016689300984247403,"im":-0.005876944043424144},{"omegaRadPerYr":0.00008867935793915787,"re":-0.006205359541801612,"im":0.0059045375254646116},{"omegaRadPerYr":0.00007976874026943643,"re":0.003442663175503811,"im":0.0001816182255611817},{"omegaRadPerYr":0.0000284406291449025,"re":-0.0007693827830760355,"im":0.00367598332346763},{"omegaRadPerYr":0.00013689967402262488,"re":-0.0008112551762318084,"im":0.0011800841685890185}],"zeta":[{"omegaRadPerYr":-2.7891917257289304e-8,"re":-0.003980175000178911,"im":0.013465357128923015},{"omegaRadPerYr":-0.00008918684847695476,"re":-0.0017818271246379852,"im":-0.011714737745078469},{"omegaRadPerYr":-0.00002756595331696949,"re":0.00583734599158813,"im":0.0005767266011797771},{"omegaRadPerYr":-0.00003543688232456151,"re":0.0005316596907146868,"im":-0.002298310383588779},{"omegaRadPerYr":-0.00012766579960381416,"re":-0.0006080730304262018,"im":0.0011811621113388196},{"omegaRadPerYr":-0.00008175633302288257,"re":0.000846876827747264,"im":-0.0014453750797105368},{"omegaRadPerYr":-0.00009544829375008571,"re":-0.0013543923865922663,"im":-0.0011678258876888898},{"omegaRadPerYr":-0.00002261865558675109,"re":0.0008212477410615872,"im":0.0007376186980099775}]},"mars":{"z":[{"omegaRadPerYr":0.00008686259655808125,"re":0.06413361293676914,"im":-0.06146133868865542},{"omegaRadPerYr":0.000020710599055723982,"re":0.016881577207838325,"im":0.010181016782386811},{"omegaRadPerYr":0.00013701274435795109,"re":-0.004154545709339927,"im":0.0052484403858960695},{"omegaRadPerYr":0.00007830364611843084,"re":0.006610030797915946,"im":0.007167738866526078},{"omegaRadPerYr":0.00009674642286913005,"re":0.006698117837673303,"im":-0.0005917430967128088},{"omegaRadPerYr":0.00003622387338507979,"re":-0.0037118538206685607,"im":-0.001197130083178154},{"omegaRadPerYr":0.00007107828844204174,"re":-0.0030272576844611737,"im":-0.002108944204497516}],"zeta":[{"omegaRadPerYr":-0.00008506290715086626,"re":0.007775524352819497,"im":-0.020010963238863012},{"omegaRadPerYr":-0.0000933991163521947,"re":0.009574152372139365,"im":0.014992495215317484},{"omegaRadPerYr":-2.1362105745855692e-8,"re":-0.003652982242209785,"im":0.01361919582772925},{"omegaRadPerYr":-0.00012775359267803836,"re":-0.002304503982267479,"im":0.003531942429412415},{"omegaRadPerYr":-0.00007647491534935717,"re":0.00035594625225814704,"im":0.0022568171332840244},{"omegaRadPerYr":-0.00009952035338383708,"re":-0.0026861402131809443,"im":-0.0032247666915461515}]},"jupiter":{"z":[{"omegaRadPerYr":0.00002063740110387687,"re":0.03775130387189653,"im":0.022955339865390736},{"omegaRadPerYr":0.00013693848018192463,"re":0.009695326439616734,"im":-0.012378818350967928},{"omegaRadPerYr":0.000012851839645077305,"re":-0.0008196551617561096,"im":0.001329814977668993},{"omegaRadPerYr":0.0002532450451843359,"re":0.0004154127204422091,"im":0.00039995506700560973},{"omegaRadPerYr":0.000006063027593555453,"re":0.0001874302154226892,"im":-0.0002594778872164554},{"omegaRadPerYr":0.000031414567303595465,"re":-0.0001410149072863489,"im":0.00024144527808720207}],"zeta":[{"omegaRadPerYr":-2.149020491421876e-8,"re":-0.003689538564145585,"im":0.013265899195699682},{"omegaRadPerYr":-0.0001277374791359918,"re":0.0018884354605094886,"im":-0.0025160646809751328},{"omegaRadPerYr":-0.000015175433343197714,"re":-0.00040210191147445026,"im":0.000311790723794952},{"omegaRadPerYr":-0.000006632717843711628,"re":0.0003009471644619671,"im":0.0001317102459048636},{"omegaRadPerYr":0.000003955723851651098,"re":-0.0002689224710938399,"im":2.55718697562043e-7},{"omegaRadPerYr":-0.000020525772113349355,"re":0.00010370399925268192,"im":-0.000024424463119989032}]},"saturn":{"z":[{"omegaRadPerYr":0.0001369384420340827,"re":-0.029606539368869086,"im":0.038027170722751975},{"omegaRadPerYr":0.000020636741252411967,"re":0.02815007335278049,"im":0.017097747508926706},{"omegaRadPerYr":0.0002532483710370704,"re":-0.001360699020755345,"im":-0.0013821125951806003},{"omegaRadPerYr":0.000012847386302653386,"re":-0.0006853044437579442,"im":0.0011218187173344311},{"omegaRadPerYr":0.00012770394570920946,"re":0.00030532702102802837,"im":0.00020649628482279287},{"omegaRadPerYr":0.00014631533283298665,"re":0.0002679689601124245,"im":0.00022796633210086582},{"omegaRadPerYr":-0.0000956850721307613,"re":-0.00004957252159689069,"im":0.00011688239538973543}],"zeta":[{"omegaRadPerYr":-1.9284890425338192e-8,"re":-0.0037087212230228583,"im":0.013267262948571008},{"omegaRadPerYr":-0.0001277372896317981,"re":-0.004735858419459207,"im":0.00627097888702706},{"omegaRadPerYr":-0.00001532563737359388,"re":-0.0003420920002138007,"im":0.00024591937514866917},{"omegaRadPerYr":-0.000006583110684267351,"re":0.00028491997207902726,"im":0.00012107412372333861},{"omegaRadPerYr":0.0000039999217980562634,"re":-0.0002580958316429571,"im":-0.000010819152281359945},{"omegaRadPerYr":-0.000020373996106090315,"re":0.00011127733379369537,"im":-0.000021911791947276608}]},"uranus":{"z":[{"omegaRadPerYr":0.000019010264169216405,"re":-0.033200282460944634,"im":0.0011121515226460653},{"omegaRadPerYr":0.000012033774965800531,"re":-0.008077556608868773,"im":0.02293126113498079},{"omegaRadPerYr":0.000023775732746418096,"re":-0.008710630799471744,"im":-0.01609535875853135},{"omegaRadPerYr":0.000007822007662255115,"re":0.0016021819926708542,"im":-0.00962197192226446},{"omegaRadPerYr":0.000029525471254783548,"re":0.0016566472437052671,"im":0.006018708611975202},{"omegaRadPerYr":0.00013694007180338165,"re":0.0009292337930842891,"im":-0.0016372467193597033}],"zeta":[{"omegaRadPerYr":7.599406140583467e-8,"re":-0.004660490280127316,"im":0.01324646305172887},{"omegaRadPerYr":-0.000014567449192322452,"re":0.006613328546607294,"im":-0.005878235366082558},{"omegaRadPerYr":-0.0000070511815941747025,"re":-0.00045580657612564904,"im":-0.0003139356509065238},{"omegaRadPerYr":0.0000033299119137697543,"re":0.00034119569635735543,"im":-0.00033054329321719134},{"omegaRadPerYr":-0.00012772951403598265,"re":0.00021735569360062149,"im":-0.00029463731468611705},{"omegaRadPerYr":-0.00002335404049196458,"re":-0.00006477037840280204,"im":-0.0000854753510329729}]},"neptune":{"z":[{"omegaRadPerYr":0.0000029404695830820694,"re":0.0025832760906460725,"im":0.009213710495509148},{"omegaRadPerYr":0.000015819958717977618,"re":0.002410719468079164,"im":-0.002895867562122838},{"omegaRadPerYr":0.00002325097122082487,"re":0.0011593965129903002,"im":0.0011061122040190636},{"omegaRadPerYr":-0.0000035890878493920546,"re":-0.00020879616118878302,"im":-0.0006167297019823682},{"omegaRadPerYr":0.000030374670692966392,"re":-0.0002774301024845424,"im":-0.000238864114594756}],"zeta":[{"omegaRadPerYr":-3.30173678089686e-7,"re":-0.008762837917313306,"im":0.010494876094398321},{"omegaRadPerYr":-0.000007353421437272892,"re":-0.002480731467935571,"im":-0.0014503566463307598},{"omegaRadPerYr":0.000004080233365663868,"re":0.0018281720943012962,"im":0.0020545105215171626},{"omegaRadPerYr":-0.00001488177731540349,"re":-0.0001335669832827521,"im":0.001150010725968948},{"omegaRadPerYr":0.000011604807982812844,"re":-0.0005630431793684765,"im":-0.0005345017401904694},{"omegaRadPerYr":-0.000020788597851133615,"re":-0.0005111001768920031,"im":-0.00044451830911620624}]}},"windowRatesArcsecCy":{"gr":{"mercury":572.0163953477602,"venus":22.72579932934098,"earth":1154.4288756735507,"mars":1597.8081245264927,"jupiter":488.52901903266616,"saturn":-1576.6419790138473,"uranus":806.6031271824132,"neptune":9101.672820094602},"newton":{"mercury":529.0318183442629,"venus":14.09063098500031,"earth":1150.5947011011037,"mars":1596.456800053028,"jupiter":488.46653757478566,"saturn":-1576.655982242193,"uranus":806.6007460594686,"neptune":9101.678202023215}},"windowElementRates":{"mercury":{"meanMotionDegPerYr":1494.7257434850376,"nodeRateArcsecCy":-451.2311449799845,"eccDotPerCy":0.00002042677773037687,"inclDotArcsecCy":-21.430632431823366},"venus":{"meanMotionDegPerYr":585.1779096296278,"nodeRateArcsecCy":-1000.306214174713,"eccDotPerCy":-0.00004798428723828207,"inclDotArcsecCy":-2.974178533577949},"earth":{"meanMotionDegPerYr":359.9936510409024,"nodeRateArcsecCy":287648.7600663907,"eccDotPerCy":-0.00004200482597073563,"inclDotArcsecCy":-22.64742397868524},"mars":{"meanMotionDegPerYr":191.40299923220104,"nodeRateArcsecCy":-1059.1798890424657,"eccDotPerCy":0.00009171788765907529,"inclDotArcsecCy":-29.268508116306386},"jupiter":{"meanMotionDegPerYr":30.347302970893654,"nodeRateArcsecCy":724.705775941384,"eccDotPerCy":-0.00008761384982249549,"inclDotArcsecCy":-7.070016683555634},"saturn":{"meanMotionDegPerYr":12.225441692771087,"nodeRateArcsecCy":-1041.0659036368181,"eccDotPerCy":-0.000274469405786156,"inclDotArcsecCy":8.397686122094067},"uranus":{"meanMotionDegPerYr":4.284939547595985,"nodeRateArcsecCy":114.5093750661356,"eccDotPerCy":-0.00009620843044113302,"inclDotArcsecCy":-8.163218561680736},"neptune":{"meanMotionDegPerYr":2.184556718701412,"nodeRateArcsecCy":-12.966335009789026,"eccDotPerCy":0.0003831751949716785,"inclDotArcsecCy":1.2940564350540216}},"j2000AnchorElements":{"mercury":{"aAU":0.38709823065071075,"e":0.20563023607049116,"inclEclipticDeg":7.005014303274938,"ascNodeEclipticDeg":48.330538551974364,"lonPeriEclipticDeg":77.45482144099152,"meanLonEclipticDeg":252.2507030885041},"venus":{"aAU":0.7233269802365511,"e":0.0067558325243677105,"inclEclipticDeg":3.3945896490801655,"ascNodeEclipticDeg":76.67837411646671,"lonPeriEclipticDeg":131.8648157457362,"meanLonEclipticDeg":181.97911300917644},"earth":{"aAU":0.9999965019964896,"e":0.016702435651957125,"inclEclipticDeg":0.00010345820355474172,"ascNodeEclipticDeg":140.29217988414328,"lonPeriEclipticDeg":462.9179213996576,"meanLonEclipticDeg":100.46313620647624},"mars":{"aAU":1.523679123456054,"e":0.09331517469683251,"inclEclipticDeg":1.8498764556630205,"ascNodeEclipticDeg":49.56200645402683,"lonPeriEclipticDeg":336.0994054433691,"meanLonEclipticDeg":355.4558712806536},"jupiter":{"aAU":5.2042670431214395,"e":0.04877494875045349,"inclEclipticDeg":1.304625372772227,"ascNodeEclipticDeg":100.49162135259076,"lonPeriEclipticDeg":375.55766342461044,"meanLonEclipticDeg":34.37610122976935},"saturn":{"aAU":9.582017927199502,"e":0.055723450738374855,"inclEclipticDeg":2.4852504409844323,"ascNodeEclipticDeg":113.64296212519966,"lonPeriEclipticDeg":449.6565354143805,"meanLonEclipticDeg":50.00443784290724},"uranus":{"aAU":19.22941789809543,"e":0.044405468941205714,"inclEclipticDeg":0.7725675263742898,"ascNodeEclipticDeg":73.98941630128037,"lonPeriEclipticDeg":170.53113765495658,"meanLonEclipticDeg":313.4868371274141},"neptune":{"aAU":30.103641823293966,"e":0.011215139311970835,"inclEclipticDeg":1.7679863485740834,"ascNodeEclipticDeg":131.79386605766496,"lonPeriEclipticDeg":397.4424429067057,"meanLonEclipticDeg":305.20853660850446}},"invariablePlane":{"inclEclipticDeg":1.578508921285029,"ascNodeEclipticDeg":107.58235993606775},"relativisticSupplementArcsecCy":{"mercury":42.98142753750681,"venus":8.624988679409032,"earth":3.8389650839134437,"mars":1.351069161345673,"jupiter":0.06243854269534786,"saturn":0.013727538363259408,"uranus":0.0023997870642552105,"neptune":0.0007833188044413836},"checks":{"mercuryClosureArcsecCy":{"measuredWindowDelta":42.98457700349729,"derivedInstantaneous":42.98142753750681,"diff":0.0031494659904822697,"tolerance":0.1},"earthMeanMotionVsSiderealAnchor":{"engineDegPerYr":359.9936510409024,"modelSiderealDegPerYr":359.9937285652708,"diffArcsecPerYr":-0.27908772626688005,"tolerance":2},"saturnG6":{"measured":28.245581213939303,"laskar":28.245},"jupiterG5":{"measured":4.256769540134775,"laskar":4.257452}},"inputs":{"generator":"node tools/verify/nbody-secular.js --write","files":{"packages/physics/src/planets/keplerian-chain.cjs":"sha256:7b2605c3f0a23c75293d4224c1384ef4fc15d74f31d6192a4c9695f96b53ec5d","public/input/astro-reference.json":"sha256:dfa6049d8a2464eacfc60c90a915f7e57443051868848ef589ac81679fba50fb","tools/explore/j2000-state.mjs":"sha256:a0a87301e21a02399ab7b8ed16d9b7930a485c49d1b2bbafa9dfc552f552600d","tools/explore/k45-residual-naff.mjs":"sha256:228eb4874adca9171d61c1697ffbbaac3ce82891476a34762bf882840ccae406","tools/explore/k45e-amplitude-solve.mjs":"sha256:8682a7ebd72bd98b60019b1c097f1791ec6e5ecea97d1798b929ce46b4ae1837","tools/explore/lattice-long-window-test.mjs":"sha256:20f4ca076624aab9bdd1898f48890fe60c77ef2d6f7a792de47b713769f059d5","tools/explore/naff-frequencies.mjs":"sha256:3d2eac569010adcbae57ee987f834c259dec689b6802d623b71c03c80c089496","tools/explore/nbody-wh.mjs":"sha256:b33813d3a1655e44a23964ac267f34863fb92af6bfbf6fe5886517bc649257a2","tools/lib/keplerian-chain.js":"sha256:620299515d5520bb3a03fba5affafc7a036fb151fca3457a5194e8771cc97fb8","tools/verify/nbody-secular.js":"sha256:129ee8105ccbc96bdcb780c1f214da3df8d9d3e15e105e546e31b74d8e25aafb"}},"periodicTerms":{"mercury":{"mlonArcsec":[{"omegaRadPerYr":1.1094782578341662,"cos":0.4283420322840896,"sin":-7.326527851982565},{"omegaRadPerYr":5.661360380927949,"cos":-2.0426487257983164,"sin":2.931772230959004}],"aPpm":[],"z":[],"zeta":[],"windowAffine":{"mlon":{"off":-3.0361113098716093,"slope":2.841279344922036},"a":{"off":0.2758743641848535,"slope":-7.24420616853227e-8},"k":{"off":-0.00001030813184818552,"slope":-3.078103662153515e-7},"h":{"off":-0.000016422201677759497,"slope":3.7560190179142716e-7},"q":{"off":0.000010395163408985695,"slope":-1.838228051358991e-7},"p":{"off":-0.000004551478853694918,"slope":-4.544543538216623e-8}}},"venus":{"mlonArcsec":[],"aPpm":[],"z":[{"omegaRadPerYr":1.5773449193814462,"re":5.768835789458705e-8,"im":5.5342215874014016e-8},{"omegaRadPerYr":-1.5773449193814462,"re":0.000010314865597201087,"im":-0.000019874878696872673}],"zeta":[],"windowAffine":{"mlon":{"off":3.594544662543421,"slope":0.5465941295243872},"a":{"off":4.008943302414927,"slope":7.076701363642677e-7},"k":{"off":0.000019076190731768522,"slope":-1.3082830278492291e-8},"h":{"off":0.00003129560095690929,"slope":-1.4415141744270831e-8},"q":{"off":0.0000036907390449818533,"slope":-5.1716930457710807e-8},"p":{"off":0.000005182649173412006,"slope":4.982981253663389e-8}}},"mars":{"mlonArcsec":[{"omegaRadPerYr":0.003412138072030063,"cos":53.661262651261794,"sin":17.070245749181456},{"omegaRadPerYr":0.19158768236155332,"cos":4.1190968738521265,"sin":-4.748875417265209},{"omegaRadPerYr":0.39807082074986866,"cos":12.712294432932945,"sin":-4.893704227512306},{"omegaRadPerYr":0.7961398667806305,"cos":1.421815474232886,"sin":4.144231974472394}],"aPpm":[],"z":[{"omegaRadPerYr":0.39814752292139344,"re":-0.0000060223525850161355,"im":-0.000016334865019046765},{"omegaRadPerYr":-0.39814752292139344,"re":-1.906831958776481e-7,"im":-4.2742574718202244e-7},{"omegaRadPerYr":0.5296892164273643,"re":-0.00003701074386965397,"im":-0.000026873075669186583},{"omegaRadPerYr":-0.5296892164273643,"re":-4.860521816153534e-7,"im":3.4682347713450994e-7}],"zeta":[],"windowAffine":{"mlon":{"off":-83.40369086698432,"slope":-0.13085704033129364},"a":{"off":0.22572881683252122,"slope":0.00002462837866522486},"k":{"off":0.00005558155738652912,"slope":-3.3300345017930464e-7},"h":{"off":-0.0001182846800188612,"slope":8.036936695886697e-8},"q":{"off":-0.000004188199413466078,"slope":1.6809406981874153e-7},"p":{"off":-0.00001586851056255778,"slope":-5.9218427691161906e-8}}},"jupiter":{"mlonArcsec":[{"omegaRadPerYr":0.0017554822448617336,"cos":48.97733291681234,"sin":-5.689424735641458},{"omegaRadPerYr":0.004160979283963426,"cos":-59.280576709743016,"sin":7.054912777055453},{"omegaRadPerYr":0.005711423874120446,"cos":1785.9059419041541,"sin":-59.520431502595834},{"omegaRadPerYr":0.006061149058238848,"cos":-5155.176110449875,"sin":359.13911032400864},{"omegaRadPerYr":0.0064003204766165354,"cos":5322.430398397717,"sin":-851.7083581062271},{"omegaRadPerYr":0.006927123116161157,"cos":-2527.222392265454,"sin":-679.8142349692864},{"omegaRadPerYr":0.007347535479630681,"cos":794.6589358799971,"sin":59.796580742627825},{"omegaRadPerYr":0.009030182879802645,"cos":-28.973366791091646,"sin":0.12810328262494958},{"omegaRadPerYr":0.01023386547323905,"cos":9.751461827108322,"sin":-0.5216284154278424},{"omegaRadPerYr":0.013401795804853043,"cos":5.429911378947591,"sin":-10.591506602861633},{"omegaRadPerYr":0.10286332258841177,"cos":-38.46695456385342,"sin":24.13640352297557},{"omegaRadPerYr":0.10341539486110399,"cos":-111.64376822368591,"sin":18.24371253711175},{"omegaRadPerYr":0.10381657500411412,"cos":26.469908492763107,"sin":-7.0080709922502065},{"omegaRadPerYr":0.11004285898203933,"cos":2.997271763575911,"sin":-9.93424422884182},{"omegaRadPerYr":0.20645396549043982,"cos":-12.61456033731959,"sin":6.303354665896138},{"omegaRadPerYr":0.21316428432573814,"cos":10.07905352162956,"sin":-1.402737349175027},{"omegaRadPerYr":0.3163921029488549,"cos":14.37761837151305,"sin":-47.01550191132841},{"omegaRadPerYr":0.41962065614882454,"cos":-18.854372744455834,"sin":-20.240335590024877},{"omegaRadPerYr":0.5228460424733212,"cos":-3.429306402004873,"sin":0.6203232480770089},{"omegaRadPerYr":0.5295794047024165,"cos":3.2300692936626043,"sin":1.9712469487218824},{"omegaRadPerYr":0.6327839673092814,"cos":35.346925450973245,"sin":-56.407896840915065},{"omegaRadPerYr":0.7360122203568453,"cos":-4.704607512685235,"sin":-9.574068131451229},{"omegaRadPerYr":0.9491755028325268,"cos":17.81748677516039,"sin":-16.385614526255804},{"omegaRadPerYr":1.2655672104620295,"cos":8.866223007011978,"sin":-4.569458969134516}],"aPpm":[{"omegaRadPerYr":0.006719118699963881,"cos":48.573743416880376,"sin":5.718777316868248},{"omegaRadPerYr":0.10316587156355153,"cos":-20.64279384012959,"sin":-58.459209228100256},{"omegaRadPerYr":0.3163921204533936,"cos":37.85268369797566,"sin":11.814375691261464},{"omegaRadPerYr":0.4196197886355212,"cos":32.19572359708147,"sin":-26.994280216797293},{"omegaRadPerYr":0.6327837640826948,"cos":112.58712390176983,"sin":70.37241144279676},{"omegaRadPerYr":0.736011176241029,"cos":20.869632879528762,"sin":-9.118091950461974},{"omegaRadPerYr":0.9491754072291905,"cos":40.75667940355217,"sin":43.81146059437585}],"z":[{"omegaRadPerYr":-0.004432186704994217,"re":-5.867802248402671e-7,"im":-8.254449418184526e-7},{"omegaRadPerYr":0.006185044482434081,"re":-0.0000012161762550487762,"im":-0.0000030203065341458352},{"omegaRadPerYr":0.006526633552708544,"re":0.00003800675928140831,"im":0.000022269930139413607},{"omegaRadPerYr":0.006841730683554717,"re":-0.00020317502192715415,"im":0.0003188285928876444},{"omegaRadPerYr":0.00747053395746608,"re":-0.0000035716684323761892,"im":1.2742688580606548e-7},{"omegaRadPerYr":0.013548716911366894,"re":-0.000002350191137889841,"im":0.000006711751150881712},{"omegaRadPerYr":-0.09638356414912969,"re":0.000004284174679819291,"im":0.000006330991461639706},{"omegaRadPerYr":-0.10309304895392035,"re":0.0002598853937218284,"im":0.0005934954381502736},{"omegaRadPerYr":0.10334256720156329,"re":0.000010707526746616896,"im":-7.503383649425035e-7},{"omegaRadPerYr":-0.10355795380841806,"re":-1.063336030336841e-7,"im":-2.0541668181011066e-8},{"omegaRadPerYr":0.10974751121423026,"re":0.0000011173504063700668,"im":0.000006719148159183111},{"omegaRadPerYr":-0.10980538629668493,"re":-0.000002900081116179768,"im":-0.000009899598025431856},{"omegaRadPerYr":0.11007006681891524,"re":-0.00013063861389871293,"im":0.00000985296174462361},{"omegaRadPerYr":0.20631979860140914,"re":5.119061252277396e-7,"im":2.480355773312527e-7},{"omegaRadPerYr":-0.20631979860140914,"re":0.00006341507478024657,"im":0.000011276228186483647},{"omegaRadPerYr":0.2132961022966655,"re":-0.00005067319780147233,"im":-0.0000627188576461291},{"omegaRadPerYr":-0.2132961022966655,"re":-0.0000044253272944321155,"im":-0.0000016116438623719781},{"omegaRadPerYr":-0.309550014126483,"re":0.000005606226306164852,"im":-0.000005438581286376055},{"omegaRadPerYr":0.4194826585061195,"re":-1.0390181615135504e-7,"im":-0.0000012626943849687208},{"omegaRadPerYr":-0.4194826585061195,"re":0.000014631489401198242,"im":0.00010495231858827452},{"omegaRadPerYr":0.42646650549338605,"re":-0.00000645618792801447,"im":0.000013429833100455273},{"omegaRadPerYr":-0.42646650549338605,"re":-2.0555461287745184e-8,"im":-0.0000025459742680985126},{"omegaRadPerYr":0.5227123066057764,"re":-7.073803160227629e-8,"im":-1.970721443206652e-7},{"omegaRadPerYr":-0.5227123066057764,"re":0.000018235559608248633,"im":0.000009067751046872788},{"omegaRadPerYr":0.5296909646066452,"re":-0.00002399461780092589,"im":-0.000016307205503159826},{"omegaRadPerYr":0.7358764923162944,"re":-5.814108194390086e-7,"im":-9.121464115717994e-8},{"omegaRadPerYr":-0.7358764923162944,"re":-0.000004928916366698608,"im":0.00003725689784565852}],"zeta":[{"omegaRadPerYr":0.007109011267971619,"re":-0.0000037217643779107696,"im":0.000007503955172407062}],"windowAffine":{"mlon":{"off":-125.78222926014135,"slope":6.2983073360071735},"a":{"off":-319.6050898669756,"slope":0.000779607919389938},"k":{"off":0.0000034049728743745708,"slope":3.2736368495266035e-8},"h":{"off":-0.0010769469203616685,"slope":-2.575505685699325e-8},"q":{"off":0.000004737931650877721,"slope":2.2347265159090993e-9},"p":{"off":-0.000009849086874108778,"slope":5.503699626595282e-9}}},"saturn":{"mlonArcsec":[{"omegaRadPerYr":0.001786048288984416,"cos":-181.44106654988352,"sin":-10.313227106762458},{"omegaRadPerYr":0.0030148721799546562,"cos":149.00303791253842,"sin":33.76409405494381},{"omegaRadPerYr":0.004165525524364463,"cos":-172.70685696648098,"sin":-72.87316272673016},{"omegaRadPerYr":0.005711612505259986,"cos":1779.8628492410735,"sin":703.2183302587266},{"omegaRadPerYr":0.006061128579515537,"cos":-4227.186061093192,"sin":-2208.9329299789797},{"omegaRadPerYr":0.006400316716713799,"cos":3138.564688353877,"sin":3189.905379562314},{"omegaRadPerYr":0.0069270984517047045,"cos":-1377.0840213077513,"sin":1286.27231187497},{"omegaRadPerYr":0.007347527790013924,"cos":417.43348264495495,"sin":-57.04557673192657},{"omegaRadPerYr":0.009510404827007764,"cos":-7.765898693390395,"sin":0.8892260985689776},{"omegaRadPerYr":0.010945707090275838,"cos":29.56279239355349,"sin":8.293611458100738},{"omegaRadPerYr":0.012423145966006417,"cos":-4.215593254976639,"sin":-3.0700350270704155},{"omegaRadPerYr":0.013416131640630238,"cos":-4.5151732902098844,"sin":27.86003076400669},{"omegaRadPerYr":0.06380179308987843,"cos":-4.747647253443951,"sin":-5.957791702021482},{"omegaRadPerYr":0.09639046966315655,"cos":2.667146101800569,"sin":-3.860800417601718},{"omegaRadPerYr":0.10286386184886939,"cos":84.3229391192099,"sin":-52.96616180689683},{"omegaRadPerYr":0.10341551187921391,"cos":295.2617795455775,"sin":-52.687574245208296},{"omegaRadPerYr":0.10378442710841682,"cos":-84.55762508234496,"sin":24.536258031533293},{"omegaRadPerYr":0.10494582048006193,"cos":6.235393166500995,"sin":-2.116540223907364},{"omegaRadPerYr":0.11004449636185792,"cos":-6.634210459306023,"sin":24.394261473660137},{"omegaRadPerYr":0.13842169902478996,"cos":-4.199868810474214,"sin":0.31881244551482585},{"omegaRadPerYr":0.20645319293357267,"cos":30.886233875528504,"sin":-15.26677302107779},{"omegaRadPerYr":0.2131888134847813,"cos":-24.1206873893165,"sin":-7.012583474087438},{"omegaRadPerYr":0.2770241892222328,"cos":1.358644324024118,"sin":6.380537397729518},{"omegaRadPerYr":0.31639189442561905,"cos":-148.03052033876784,"sin":514.8549315150589},{"omegaRadPerYr":0.3231050801627479,"cos":2.1628286417627463,"sin":-4.833937069006972},{"omegaRadPerYr":0.41962100995047047,"cos":43.86000064602828,"sin":47.60980392733846},{"omegaRadPerYr":0.4263384545732272,"cos":-1.948324729100543,"sin":-4.900869105627541},{"omegaRadPerYr":0.522846178629271,"cos":7.689085912571676,"sin":-1.413192071721535},{"omegaRadPerYr":0.5296207047954017,"cos":20.856033182913993,"sin":-21.71858694072192},{"omegaRadPerYr":0.6327839463783227,"cos":-77.77600695492362,"sin":124.58545340872587},{"omegaRadPerYr":0.7360122959500417,"cos":11.287492300940073,"sin":22.66562332852338},{"omegaRadPerYr":0.8460438421840013,"cos":1.791163240744703,"sin":20.76193994027603},{"omegaRadPerYr":0.9491754961973113,"cos":-40.35622470727082,"sin":37.05262168901003},{"omegaRadPerYr":1.2655672064360473,"cos":-20.273900471944575,"sin":10.420670314577013}],"aPpm":[{"omegaRadPerYr":0.006719059959337144,"cos":-298.1739210091084,"sin":-35.65492066160081},{"omegaRadPerYr":0.10311278039419353,"cos":329.0524271864246,"sin":168.20534343508803},{"omegaRadPerYr":0.10998709356915146,"cos":-80.20083012880013,"sin":25.67799170706812},{"omegaRadPerYr":0.20645076224645065,"cos":22.36534737885545,"sin":52.11596228310427},{"omegaRadPerYr":0.21316470407952204,"cos":22.417372677360976,"sin":148.19540692158907},{"omegaRadPerYr":0.3096741607098237,"cos":40.76322817089124,"sin":6.028640259859568},{"omegaRadPerYr":0.3163918128549843,"cos":3380.8172707887766,"sin":952.191549696343},{"omegaRadPerYr":0.4196207206390813,"cos":-117.61845429351422,"sin":102.62640589830909},{"omegaRadPerYr":0.5228483497587464,"cos":2.3692547652699623,"sin":25.554825659213808},{"omegaRadPerYr":0.6327843056674047,"cos":-267.8385266313829,"sin":-178.81334744313918},{"omegaRadPerYr":0.736011319948035,"cos":-70.20882142515485,"sin":30.840528779508954},{"omegaRadPerYr":0.8460447241275829,"cos":152.7139783318568,"sin":-11.548664993600605},{"omegaRadPerYr":0.9491754310361933,"cos":-100.97703621878051,"sin":-108.78710356859312},{"omegaRadPerYr":1.2655670501368257,"cos":-32.690429975684566,"sin":-61.98759537866741}],"z":[{"omegaRadPerYr":-0.0043581108449722815,"re":-0.0000024452801717244646,"im":0.00000176219909906387},{"omegaRadPerYr":0.006181644141736154,"re":0.000019239814460642087,"im":0.000026302677014869564},{"omegaRadPerYr":0.006525673635907744,"re":-0.00017162205464306686,"im":-0.0001238150512913057},{"omegaRadPerYr":0.006842443168643391,"re":0.0008160379089456957,"im":-0.0012855610725464066},{"omegaRadPerYr":0.007464263643626432,"re":0.000012700549608609351,"im":-0.000011961873155192082},{"omegaRadPerYr":0.011038687917916075,"re":-0.00003986985559218555,"im":0.0000319532818132531},{"omegaRadPerYr":0.013549298855465481,"re":0.000009801001239209954,"im":-0.000026447689093519716},{"omegaRadPerYr":-0.06373626926633558,"re":-0.000035961160675812285,"im":-0.000028529188753008582},{"omegaRadPerYr":-0.09638538445781969,"re":0.000015535361093345565,"im":0.00002685306276592891},{"omegaRadPerYr":-0.10309247935234203,"re":0.00029050443286320895,"im":0.000602195654034088},{"omegaRadPerYr":0.10334344953255195,"re":-0.000019533841745894094,"im":0.000010878623314384489},{"omegaRadPerYr":0.1092144082212586,"re":-0.00003560775673948136,"im":0.00000805013491416618},{"omegaRadPerYr":-0.1092144082212586,"re":0.0000017934489175965881,"im":0.000004053156158992017},{"omegaRadPerYr":0.10975358541865932,"re":0.0001736982473708561,"im":-0.00007535466151575599},{"omegaRadPerYr":-0.10975358541865932,"re":-0.0000045639870780316195,"im":-0.00001543752944564476},{"omegaRadPerYr":0.11042109885477089,"re":0.00018688722297342662,"im":-0.0001292530438680645},{"omegaRadPerYr":0.11079489528339939,"re":-0.00005742828952162291,"im":0.00002446021658582074},{"omegaRadPerYr":-0.11079489528339939,"re":3.2506972662241077e-7,"im":0.000001489324611454702},{"omegaRadPerYr":0.20631931111331386,"re":-0.000012094567204794847,"im":-0.000015066258794689852},{"omegaRadPerYr":-0.20631931111331386,"re":-0.00026457068506597557,"im":-0.000043660296689892406},{"omegaRadPerYr":0.21302287066870385,"re":0.0007392111543450358,"im":0.0008891229460487466},{"omegaRadPerYr":-0.21302287066870385,"re":0.00001838082115522415,"im":0.0000043898601508202826},{"omegaRadPerYr":-0.30955014898803845,"re":-0.00002463181621759035,"im":0.00002635073464096736},{"omegaRadPerYr":0.3161372565338949,"re":0.000010638068874177265,"im":0.00002903644387819836},{"omegaRadPerYr":-0.3161372565338949,"re":0.00004478536387293394,"im":-0.00007235122851688727},{"omegaRadPerYr":0.323239510116322,"re":-0.0000030767740260105366,"im":-0.00002580327493089759},{"omegaRadPerYr":-0.323239510116322,"re":-8.037789067980258e-7,"im":0.0000013792627880408373},{"omegaRadPerYr":0.41948429878992055,"re":-0.000002440074764173995,"im":8.894456091230815e-7},{"omegaRadPerYr":-0.41948429878992055,"re":-0.000055428452820604816,"im":-0.00044582634993030784},{"omegaRadPerYr":0.42644865450720826,"re":0.00007629843823448361,"im":-0.00004431512797002225},{"omegaRadPerYr":-0.42644865450720826,"re":-3.1429180745635195e-7,"im":0.000010823856640253446},{"omegaRadPerYr":0.5227089862153922,"re":0.0000034109789863966514,"im":0.0000030363668539468183},{"omegaRadPerYr":-0.5227089862153922,"re":-0.00007781393414016792,"im":-0.000038627649151733156},{"omegaRadPerYr":0.5296908859229388,"re":0.0016272720366095905,"im":0.001111132100692396},{"omegaRadPerYr":-0.6327562885719447,"re":0.000029869908829404503,"im":0.00004153187998356031},{"omegaRadPerYr":0.7358761720892631,"re":0.0000021049025933726144,"im":-5.169271196001655e-7},{"omegaRadPerYr":-0.7358761720892631,"re":0.000021597320218474448,"im":-0.00016115133711881854},{"omegaRadPerYr":0.839103167756065,"re":-3.220056324476462e-7,"im":-1.9215998786789735e-7},{"omegaRadPerYr":-0.839103167756065,"re":-0.000029573064653568303,"im":-0.000026876878341445564},{"omegaRadPerYr":0.8460633252910219,"re":-0.000018291262005562003,"im":-0.000004960467787157427},{"omegaRadPerYr":-0.8460633252910219,"re":0.000002270968378873516,"im":-4.1450618173663426e-7},{"omegaRadPerYr":1.0522678072049176,"re":0.0000021124954612886125,"im":-6.772831160051008e-7},{"omegaRadPerYr":-1.0522678072049176,"re":0.0000267981237409094,"im":-0.00006313630238654217},{"omegaRadPerYr":1.0593357382250086,"re":0.00005517832446284326,"im":0.00007541106207704865},{"omegaRadPerYr":-1.0593357382250086,"re":-0.0000011488134271423812,"im":0.0000024971139727131163}],"zeta":[{"omegaRadPerYr":0.007110979746141733,"re":0.00000919588910803286,"im":-0.00001814527795129041},{"omegaRadPerYr":0.11036111150828076,"re":0.00000527323961474106,"im":-7.281071860678697e-7},{"omegaRadPerYr":-0.11036111150828076,"re":-1.4554658617828128e-7,"im":-2.997478015016536e-7},{"omegaRadPerYr":0.31648864956406403,"re":5.799058711521812e-7,"im":-0.0000017165371741601281},{"omegaRadPerYr":-0.31648864956406403,"re":0.000006083693573561639,"im":-0.000004590051234428058}],"windowAffine":{"mlon":{"off":368.77768508640213,"slope":-15.496771393507323},"a":{"off":-2829.2103276456414,"slope":-0.0045105237220306885},"k":{"off":-0.003295097451958373,"slope":-2.0051443777828192e-8},"h":{"off":-0.0002907698442316049,"slope":-1.3596860723979377e-8},"q":{"off":-0.000015053194135038677,"slope":-3.170204870993174e-9},"p":{"off":0.000023220957119488714,"slope":-9.510135925508223e-9}}},"uranus":{"mlonArcsec":[{"omegaRadPerYr":0.0014676306656945686,"cos":-2723.2732035534445,"sin":1455.2796086990577},{"omegaRadPerYr":0.002935118590545489,"cos":-80.26480675215342,"sin":-95.8374478950758},{"omegaRadPerYr":0.004155546473024461,"cos":1.1550380098540174,"sin":23.521854076744148},{"omegaRadPerYr":0.0052252895688723894,"cos":4.608813754202134,"sin":-0.6230394757030248},{"omegaRadPerYr":0.009526301775504297,"cos":2.3896668996799786,"sin":8.656974670666726},{"omegaRadPerYr":0.010640504190992169,"cos":-43.49687731874909,"sin":-44.677866004930515},{"omegaRadPerYr":0.011196734776096853,"cos":-83.45205146330704,"sin":5.383367632435863},{"omegaRadPerYr":0.012156407473032656,"cos":7.742961830120213,"sin":-0.8479238143720861},{"omegaRadPerYr":0.03509994570239343,"cos":-13.690534474740515,"sin":-0.09961013726355172},{"omegaRadPerYr":0.03642641342532824,"cos":-5.752140387713611,"sin":-24.41294585296263},{"omegaRadPerYr":0.03765206634793987,"cos":1.1994661595851788,"sin":-6.809492437416003},{"omegaRadPerYr":0.06379838793393325,"cos":20.468765392083533,"sin":27.21283397773183},{"omegaRadPerYr":0.07318148370167205,"cos":-9.69116347938128,"sin":-27.78494298250939},{"omegaRadPerYr":0.07472638753868291,"cos":7.873224595248054,"sin":-0.7155282297422259},{"omegaRadPerYr":0.10992640867980305,"cos":-5.990016922362497,"sin":-10.882154205515945},{"omegaRadPerYr":0.13851753919551618,"cos":155.23229349662773,"sin":-15.803016487330606},{"omegaRadPerYr":0.14663782456344865,"cos":-3.715291029250423,"sin":-4.797529939498076},{"omegaRadPerYr":0.18317858744514456,"cos":-2.291698000815538,"sin":-2.074953319012592},{"omegaRadPerYr":0.20224498536551827,"cos":8.919350018672908,"sin":0.13050200748345925},{"omegaRadPerYr":0.21324964582055533,"cos":7.771264889728913,"sin":3.2448943019234076},{"omegaRadPerYr":0.27702538424539885,"cos":-5.354735278387998,"sin":-26.15783501292274},{"omegaRadPerYr":0.34075769716356147,"cos":-0.34374298673471854,"sin":-3.407211633402909},{"omegaRadPerYr":0.3517129698224617,"cos":6.517491045993994,"sin":4.866034512765639},{"omegaRadPerYr":0.38015329792591684,"cos":-10.048614018475593,"sin":6.616933416996329},{"omegaRadPerYr":0.41553938728422657,"cos":-8.751785788135297,"sin":2.791900237825687},{"omegaRadPerYr":0.4549044621740356,"cos":693.0959534211968,"sin":120.19653913821934},{"omegaRadPerYr":0.45610200056621664,"cos":1.497081074242887,"sin":-4.5957729863215455},{"omegaRadPerYr":0.52965804929712,"cos":25.524250211112093,"sin":29.123990414976713},{"omegaRadPerYr":0.9098120069692734,"cos":1.511508854251386,"sin":-4.916844788783686},{"omegaRadPerYr":0.9845575210388458,"cos":34.71526459043498,"sin":-6.2004825381324435}],"aPpm":[{"omegaRadPerYr":0.0015195463776243173,"cos":-97.92780184832424,"sin":-170.54282606302286},{"omegaRadPerYr":0.010971189090214429,"cos":15.922066751160804,"sin":-63.43279783983412},{"omegaRadPerYr":0.03621032482297702,"cos":16.21258783688179,"sin":-6.129790725608936},{"omegaRadPerYr":0.06382513997653097,"cos":10.100214539053637,"sin":75.06714536902228},{"omegaRadPerYr":0.07337200739108976,"cos":42.982400746686906,"sin":-17.941805609839893},{"omegaRadPerYr":0.07480628709510945,"cos":-98.25060700665108,"sin":-132.20200270273284},{"omegaRadPerYr":0.10992773343818057,"cos":23.527835556808586,"sin":-13.19593655109539},{"omegaRadPerYr":0.13851260790018521,"cos":-111.93654517641879,"sin":-1070.0165264046125},{"omegaRadPerYr":0.20224432819100724,"cos":-1.6198240069501508,"sin":23.993057625224463},{"omegaRadPerYr":0.27702773432502253,"cos":61.9132367606093,"sin":-9.83565381913395},{"omegaRadPerYr":0.35171020637669254,"cos":33.74734445814394,"sin":-41.875773491215355},{"omegaRadPerYr":0.38014999979161623,"cos":101.22109168773962,"sin":184.81826487458775},{"omegaRadPerYr":0.41553260592168284,"cos":-8.509290767368357,"sin":-24.32922160458007},{"omegaRadPerYr":0.454904467454442,"cos":713.1399178977563,"sin":-4114.63252326919},{"omegaRadPerYr":0.4561160604896006,"cos":-27.91319995253341,"sin":-8.624472809732127},{"omegaRadPerYr":0.984557509897134,"cos":-33.18844016289984,"sin":-186.75405247300057}],"z":[{"omegaRadPerYr":0.0014837575668889009,"re":-0.0008665291640501358,"im":0.001907936036034254},{"omegaRadPerYr":0.00295279881832869,"re":0.00010736924920624244,"im":0.00010174559468720306},{"omegaRadPerYr":0.00429293812487028,"re":0.00002252649969342707,"im":0.000009342663092948193},{"omegaRadPerYr":0.00980120872337301,"re":-0.000009449566248920439,"im":0.000029032976734660395},{"omegaRadPerYr":-0.00980120872337301,"re":8.563497411069382e-8,"im":5.261933014013008e-7},{"omegaRadPerYr":0.010674384150638597,"re":-0.000007999044727462888,"im":-0.00016009092399207203},{"omegaRadPerYr":0.01122773955044561,"re":0.00006662306995813944,"im":-0.00011797257085013135},{"omegaRadPerYr":0.0337357457099598,"re":-4.924908621890371e-7,"im":-1.884880698988116e-8},{"omegaRadPerYr":-0.0337357457099598,"re":-0.000009004684945732304,"im":-0.000006710182155954315},{"omegaRadPerYr":-0.035164467347836875,"re":0.00001720995016262725,"im":-0.00006583757195895908},{"omegaRadPerYr":0.03813277064819845,"re":-0.000014678995532384206,"im":0.000021334048020953475},{"omegaRadPerYr":0.03954199509978495,"re":0.000006080534298826858,"im":0.000009479871338845931},{"omegaRadPerYr":-0.03954199509978495,"re":4.4019907036498e-7,"im":-6.891010067059488e-8},{"omegaRadPerYr":0.052680280678065385,"re":-1.4401692886917268e-7,"im":-1.2006738534193792e-7},{"omegaRadPerYr":-0.052680280678065385,"re":-0.00001149417674949648,"im":0.000006123496789287883},{"omegaRadPerYr":-0.06373512210671961,"re":-0.00022380819690838574,"im":-0.00017313924404132501},{"omegaRadPerYr":0.0716521295972711,"re":0.0000017824225175481797,"im":6.477952920806899e-7},{"omegaRadPerYr":-0.0716521295972711,"re":0.00000215646219703891,"im":-0.000023927553187836552},{"omegaRadPerYr":0.07478159869442952,"re":0.0009483751443785471,"im":-0.0009763721951788479},{"omegaRadPerYr":0.10845812312889605,"re":-3.7528627629806196e-7,"im":1.8162941068340068e-7},{"omegaRadPerYr":-0.10845812312889605,"re":-9.131957187358628e-7,"im":-0.000011421205927847909},{"omegaRadPerYr":-0.12747767226632578,"re":0.000021728013183792636,"im":0.000023783943328003726},{"omegaRadPerYr":0.13850951650364812,"re":-0.0000011498126511397353,"im":-0.000007863363571380573},{"omegaRadPerYr":-0.13850951650364812,"re":-0.0000014195339279925058,"im":-0.000019672286437039453},{"omegaRadPerYr":0.14954976178285512,"re":0.000014768485359910815,"im":0.00008511591060974291},{"omegaRadPerYr":0.20222937830150706,"re":-1.0150184284327157e-7,"im":6.869368522748524e-7},{"omegaRadPerYr":-0.20222937830150706,"re":0.00004349403635922491,"im":-0.00006510222268729462},{"omegaRadPerYr":0.21329897381245563,"re":0.00039336255815296587,"im":0.00047060080004783354},{"omegaRadPerYr":-0.21329897381245563,"re":3.202014370758212e-7,"im":-3.5802450398016503e-7},{"omegaRadPerYr":0.27690379813063043,"re":-7.218438305342976e-7,"im":-0.0000013733840118922365},{"omegaRadPerYr":-0.27690379813063043,"re":-2.3123751530349353e-7,"im":-0.000016638884236576377},{"omegaRadPerYr":0.3053633220801144,"re":-2.910714985900132e-8,"im":-4.781013594032306e-8},{"omegaRadPerYr":-0.3053633220801144,"re":0.00007880195705303336,"im":0.000023623187602347662},{"omegaRadPerYr":0.3407483472806585,"re":-1.209671947861725e-7,"im":-2.5813355800705355e-7},{"omegaRadPerYr":-0.3407483472806585,"re":-0.00002420376525152184,"im":-0.000011552644880225797},{"omegaRadPerYr":0.380118030074355,"re":-7.296236632255353e-8,"im":3.5847282633803363e-7},{"omegaRadPerYr":-0.380118030074355,"re":-0.0006838007331883362,"im":-0.0009409909380339405},{"omegaRadPerYr":0.38132744524307727,"re":-3.6053724441471605e-8,"im":1.6364077194021347e-7},{"omegaRadPerYr":-0.38132744524307727,"re":-0.000014034970151092443,"im":0.000007391631825460043},{"omegaRadPerYr":0.42649588732416494,"re":0.00003355541336075159,"im":0.000003229178538680994},{"omegaRadPerYr":-0.42649588732416494,"re":-2.4848590819447393e-9,"im":-2.0996310483135817e-7},{"omegaRadPerYr":0.454842191200728,"re":-0.0000068968472365409275,"im":-0.000022455671964598352},{"omegaRadPerYr":-0.454842191200728,"re":0.000004089603819014679,"im":-0.00007288435713437545},{"omegaRadPerYr":0.5296909155487275,"re":0.002267709930000383,"im":0.0015486528993874404},{"omegaRadPerYr":0.6044398000537934,"re":0.000017726047212555066,"im":-0.0000013332740222674028},{"omegaRadPerYr":-0.6044398000537934,"re":1.7342010171877778e-7,"im":6.703571657599135e-9},{"omegaRadPerYr":0.8350185854831645,"re":1.2586113973327464e-7,"im":5.372376564828466e-8},{"omegaRadPerYr":-0.8350185854831645,"re":0.000018818126580642925,"im":-0.00000775604392883977},{"omegaRadPerYr":0.9097702889574655,"re":-5.719740354233375e-7,"im":1.9962628546421285e-7},{"omegaRadPerYr":-0.9097702889574655,"re":-0.00004112839646154747,"im":-0.000028044401843348806},{"omegaRadPerYr":1.059344223480954,"re":0.00007767214704633619,"im":0.00010783628487565227},{"omegaRadPerYr":-1.059344223480954,"re":-5.638258297648278e-9,"im":3.5465014497625753e-8}],"zeta":[{"omegaRadPerYr":0.0014527887795682593,"re":0.000001225443781600558,"im":9.211211424484081e-7},{"omegaRadPerYr":-0.0014792753241020216,"re":0.0000026758297371259606,"im":0.0000027287210167650844},{"omegaRadPerYr":0.0029820480206314646,"re":-0.000001282445072589254,"im":-0.000004700332344774084},{"omegaRadPerYr":0.004450018379581222,"re":-7.121692943860969e-7,"im":-9.628096109083337e-8},{"omegaRadPerYr":0.011102305337337321,"re":-0.0000046239168067403425,"im":-0.000004684566499917281},{"omegaRadPerYr":0.03663431001814335,"re":-6.15854695195685e-7,"im":9.065668681839519e-8},{"omegaRadPerYr":-0.03666260004333084,"re":4.7263179165796715e-7,"im":-2.6845411520695185e-7},{"omegaRadPerYr":-0.13858628147443935,"re":0.000003441979477602939,"im":0.0000021582660193327546},{"omegaRadPerYr":0.14960208116950802,"re":8.161612662383277e-7,"im":-7.94667687135255e-7},{"omegaRadPerYr":0.2881502651383113,"re":-0.0000010969574112392136,"im":-0.0000016124150498813101},{"omegaRadPerYr":0.4548689400202301,"re":-2.3673022663689655e-8,"im":-9.3291428017079e-9},{"omegaRadPerYr":-0.4548689400202301,"re":0.000004157220149799098,"im":0.000004891780577383906},{"omegaRadPerYr":0.604441816402012,"re":-0.000003773246119574625,"im":-0.0000030150909472886142},{"omegaRadPerYr":-0.604441816402012,"re":5.122350568532408e-10,"im":-9.387337108587782e-10}],"windowAffine":{"mlon":{"off":2024.1597880934548,"slope":-0.9803012695995114},"a":{"off":-570.5850895525455,"slope":-0.008328813500457355},"k":{"off":-0.0021533978316026566,"slope":-1.8991036591730033e-8},"h":{"off":-0.001664008015965309,"slope":-2.0462557547905663e-9},"q":{"off":2.511046246206569e-7,"slope":2.716652377389316e-9},"p":{"off":0.000006031952984022636,"slope":1.1940523031034823e-9}}},"neptune":{"mlonArcsec":[{"omegaRadPerYr":0.0014542551208168281,"cos":1856.2064116192448,"sin":-1000.2478496712213},{"omegaRadPerYr":0.002938962859084131,"cos":72.64920561325054,"sin":56.6336138305537},{"omegaRadPerYr":0.004011031934955985,"cos":-16.789157173670475,"sin":7.368443570192889},{"omegaRadPerYr":0.004666995903546313,"cos":8.686577889375073,"sin":-0.2222640562578857},{"omegaRadPerYr":0.03536298304761287,"cos":9.320410230645626,"sin":2.0978548328471684},{"omegaRadPerYr":0.03664876565086225,"cos":4.203396217196708,"sin":32.473765787404375},{"omegaRadPerYr":0.03792155116579449,"cos":3.265373687942832,"sin":2.5365219483494745},{"omegaRadPerYr":0.07180792239807379,"cos":2.7767680703837954,"sin":0.029317560781933767},{"omegaRadPerYr":0.07329736410038251,"cos":6.3495403714495104,"sin":17.072735972941096},{"omegaRadPerYr":0.10987969447176986,"cos":3.5338155273087257,"sin":6.865050635173966},{"omegaRadPerYr":0.14654111769974043,"cos":2.355315415043408,"sin":2.9564968549584125},{"omegaRadPerYr":0.1751660073566194,"cos":184.40235833425325,"sin":-52.31805710204902},{"omegaRadPerYr":0.3503379462961885,"cos":-1.765396680715562,"sin":-2.93934878875984},{"omegaRadPerYr":0.3883665153047027,"cos":9.709212688691501,"sin":5.321885210084292},{"omegaRadPerYr":0.4915611838748408,"cos":911.0927452532569,"sin":-1.048256082682597},{"omegaRadPerYr":0.49279791451584054,"cos":-0.5630126062277834,"sin":3.9684617436433567},{"omegaRadPerYr":0.5297024355940728,"cos":2.3924567967513783,"sin":-9.397668198920957},{"omegaRadPerYr":1.021214758355621,"cos":42.204921169753995,"sin":-15.310979806303239}],"aPpm":[{"omegaRadPerYr":0.001526240017127087,"cos":128.59463922560346,"sin":231.157492909206},{"omegaRadPerYr":0.0028522810593159015,"cos":-21.37257736172422,"sin":10.410652668548867},{"omegaRadPerYr":0.036694987481548785,"cos":151.68816362154618,"sin":-28.109849236141923},{"omegaRadPerYr":0.07324289638003004,"cos":-33.097418852783065,"sin":11.320552408869489},{"omegaRadPerYr":0.11007776671727425,"cos":-15.64142884780634,"sin":8.57725626520655},{"omegaRadPerYr":0.17516937472508654,"cos":-326.96669756975535,"sin":-1149.3821788780774},{"omegaRadPerYr":0.3883665171722944,"cos":29.53675510318641,"sin":-54.13457315941252},{"omegaRadPerYr":0.4534159751567433,"cos":-46.68270684996543,"sin":11.759980747658528},{"omegaRadPerYr":0.49156118022802586,"cos":-5.2901500449709005,"sin":-4922.302881722226},{"omegaRadPerYr":0.49282616704059384,"cos":22.106622560779943,"sin":2.13106647410791},{"omegaRadPerYr":1.0212147269559075,"cos":-78.57315025381558,"sin":-216.3418005050494}],"z":[{"omegaRadPerYr":0.0014837734685461137,"re":0.0002470067630842748,"im":-0.0005452929862132521},{"omegaRadPerYr":0.0029524918155195362,"re":-0.00011275373976339884,"im":-0.00011123471614462209},{"omegaRadPerYr":-0.0044140516100612485,"re":3.6263523984647715e-7,"im":-1.4566816563050972e-7},{"omegaRadPerYr":0.00441745153707662,"re":-0.000011068378575944293,"im":0.000005740737986786513},{"omegaRadPerYr":-0.03369478512846473,"re":0.000008746043682892983,"im":0.0000066190070495098835},{"omegaRadPerYr":-0.035164388440971084,"re":-0.000016802500300213553,"im":0.0000661199905176253},{"omegaRadPerYr":0.03666424256830024,"re":0.000006754025799341181,"im":8.517086510774389e-7},{"omegaRadPerYr":0.03813296418105082,"re":0.0007689492385754893,"im":-0.0011245580820085233},{"omegaRadPerYr":-0.07181296844887167,"re":-0.000002357141269985301,"im":0.000024436420318837164},{"omegaRadPerYr":0.07478167258029508,"re":0.000060527944493778874,"im":-0.0000624237471983131},{"omegaRadPerYr":0.0806802960816351,"re":-2.342081548658853e-7,"im":9.921626255634374e-8},{"omegaRadPerYr":0.10840999421731702,"re":-3.671621677333295e-8,"im":-1.4433301288616571e-8},{"omegaRadPerYr":-0.10840999421731702,"re":5.175313353952552e-7,"im":0.000011413929445377862},{"omegaRadPerYr":-0.1370330398922115,"re":-0.00032331294064515717,"im":-0.00010732797654549353},{"omegaRadPerYr":0.2132989873679399,"re":0.0004877892438019343,"im":0.0005843206750016681},{"omegaRadPerYr":-0.3121996849254518,"re":2.657109867708586e-7,"im":-0.000009494749711976808},{"omegaRadPerYr":0.35023502907954657,"re":4.5653452784858966e-8,"im":-1.0451073486237061e-7},{"omegaRadPerYr":-0.35023502907954657,"re":-0.000007619774822676212,"im":-0.000014830728580405387},{"omegaRadPerYr":0.41529137311167974,"re":1.40340582133306e-7,"im":-3.472335076864231e-7},{"omegaRadPerYr":-0.41529137311167974,"re":-0.000007077805249867214,"im":0.00001836263072231864},{"omegaRadPerYr":0.42649606369334697,"re":0.00004219217111353991,"im":0.000004226930453951068},{"omegaRadPerYr":-0.42649606369334697,"re":-5.778715334268039e-8,"im":-6.989339616382578e-8},{"omegaRadPerYr":0.4534314862265414,"re":-5.8394157684695814e-8,"im":-9.639122928008068e-8},{"omegaRadPerYr":-0.4534314862265414,"re":-0.0010841064179978926,"im":-0.0007363861425487809},{"omegaRadPerYr":0.454613029160343,"re":6.905167458766659e-8,"im":6.693341682765734e-8},{"omegaRadPerYr":-0.454613029160343,"re":0.000008194199133128378,"im":-0.000008036026642462984},{"omegaRadPerYr":0.49156759561441354,"re":-0.000004081630856076783,"im":0.000003745021317177511},{"omegaRadPerYr":-0.49156759561441354,"re":-0.000012304501694650548,"im":0.000010686389497370531},{"omegaRadPerYr":0.529690904144021,"re":0.002839616439592622,"im":0.0019403568704973132},{"omegaRadPerYr":0.9830852237002987,"re":-6.751772347200159e-8,"im":3.359364438015822e-8},{"omegaRadPerYr":-0.9830852237002987,"re":-0.00005757987205480198,"im":-0.000014755161081484387},{"omegaRadPerYr":1.0593442028499358,"re":0.00009721108212038089,"im":0.0001350057523483852},{"omegaRadPerYr":-1.0593442028499358,"re":-4.233062807533727e-8,"im":1.0635755205653147e-8}],"zeta":[{"omegaRadPerYr":0.0014366584686242474,"re":-6.63782073151593e-7,"im":-0.0000017626551646767362},{"omegaRadPerYr":-0.0014803237593266241,"re":-9.863310065296167e-7,"im":-0.0000014961465160413961},{"omegaRadPerYr":0.0029824693345588942,"re":8.10074628250391e-7,"im":0.0000032336974492268088},{"omegaRadPerYr":0.004451041402290568,"re":4.559552272869738e-7,"im":-2.04533354081703e-8},{"omegaRadPerYr":0.03663380430434493,"re":3.6393762747757574e-7,"im":-5.576875661686012e-8},{"omegaRadPerYr":-0.17494555870208506,"re":9.087393140061722e-7,"im":-9.030906680506425e-7},{"omegaRadPerYr":-0.17549754071699553,"re":0.0000015077550707045947,"im":-3.072395384471143e-7},{"omegaRadPerYr":0.49159407617594936,"re":4.688665922879818e-9,"im":5.751572240261546e-10},{"omegaRadPerYr":-0.49159407617594936,"re":-3.989445587741231e-7,"im":-0.000010056284554653139},{"omegaRadPerYr":0.5676217845526992,"re":0.000004881604155619742,"im":-0.000002324476380493449},{"omegaRadPerYr":0.5681730424584401,"re":0.00000398483183336319,"im":-7.241062320302453e-7}],"windowAffine":{"mlon":{"off":-3105.7759823709034,"slope":1.1056380312307594},"a":{"off":228.34220306593178,"slope":0.0134174252518665},"k":{"off":-0.0029068777236623206,"slope":1.049997166521814e-8},"h":{"off":-0.0001255319273465512,"slope":1.2432416595677454e-8},"q":{"off":-0.000010019138721488617,"slope":8.156044651950384e-10},"p":{"off":0.000014973872209054602,"slope":-8.867063098766213e-9}}}}});
17
+ export const CHAIN_ARTIFACT = Object.freeze({"_description":"Engine-D secular frequencies from the model’s own N-body pipeline (WH 1-Myr, 1PN on, NAFF), the 1800–2100 window rates (B), the Keplerian chain’s governed inputs (K2.1/P5: windowElementRates + j2000AnchorElements — era-typed window values and the t=0 anchor, the chain’s ONE home), the derived instantaneous 1PN apsidal supplement, and the K4.5/K4.7b derived periodic-term layer (periodicTerms: λ̄/a/z/ζ lines + era window affine, engine-measured — tools/explore/k45e-amplitude-solve.mjs). Frames: g ecliptic-J2000 z-modes, s INVARIABLE-plane ζ-modes. Laskar 2004 values are external reference labels (theory), never inputs. See tools/verify/nbody-secular.js for the assertions carried.","meta":{"integrator":"wh","order":2,"dtDays":2,"spanYears":1000000,"sampleDays":1000,"gr":true,"seed":"JPL Horizons J2000 heliocentric state vectors (tools/explore/j2000-state.mjs, the one home)","masses":"DE440 mass ratios (astro-reference physicalConstants)","naffTerms":8,"windowYears":[1800,2100],"laskarRef":"Laskar, J. et al. (2004), A&A 428, 261–285, Table 3","conservationMaxDE":1.111274718777496e-8,"note1PN":"Mercury eigen-level 1PN shift ≈ +0.473 ″/yr (cycle-average of 1/(1−e²)) vs +0.430 instantaneous — not a discrepancy; only the instantaneous value is asserted (P8b).","periodicTermsMethod":"k45e era-centered LSQ (self-seeded prewhitening, golden-refined frequencies; K4.7b)","periodicTermsSpanYr":2500,"periodicTermsCadenceYr":0.1},"g":{"mercury":{"arcsecPerYr":5.575712745100842,"amplitude":0.17545096692289996,"nearestLaskar":{"mode":"g1","arcsecPerYr":5.59}},"venus":{"arcsecPerYr":7.405845773642333,"amplitude":0.02257076966712651,"nearestLaskar":{"mode":"g2","arcsecPerYr":7.452}},"earth":{"arcsecPerYr":4.346410041471262,"amplitude":0.019341964540997673,"nearestLaskar":{"mode":"g5","arcsecPerYr":4.257452}},"mars":{"arcsecPerYr":17.91669664917233,"amplitude":0.08882914196211136,"nearestLaskar":{"mode":"g4","arcsecPerYr":17.916}},"jupiter":{"arcsecPerYr":4.256769540134775,"amplitude":0.044182672761659256,"nearestLaskar":{"mode":"g5","arcsecPerYr":4.257452}},"saturn":{"arcsecPerYr":28.245581213939303,"amplitude":0.04819349423498694,"nearestLaskar":{"mode":"g6","arcsecPerYr":28.245}},"uranus":{"arcsecPerYr":3.92114845556954,"amplitude":0.03321890480578539,"nearestLaskar":{"mode":"g5","arcsecPerYr":4.257452}},"neptune":{"arcsecPerYr":0.6065153888299033,"amplitude":0.009569000807584828,"nearestLaskar":{"mode":"g8","arcsecPerYr":0.673021}}},"s":{"mercury":{"arcsecPerYr":-5.586173731409887,"amplitude":0.0594093355081196,"nearestLaskar":{"mode":"s1","arcsecPerYr":-5.59}},"venus":{"arcsecPerYr":-18.336390502719162,"amplitude":0.013576723451725628,"nearestLaskar":{"mode":"s3","arcsecPerYr":-18.85}},"earth":{"arcsecPerYr":-18.39611840700522,"amplitude":0.011844637233509894,"nearestLaskar":{"mode":"s3","arcsecPerYr":-18.85}},"mars":{"arcsecPerYr":-17.54540235155894,"amplitude":0.021473581432009718,"nearestLaskar":{"mode":"s4","arcsecPerYr":-17.755}},"jupiter":{"arcsecPerYr":-26.34774758231578,"amplitude":0.0031511446938089177,"nearestLaskar":{"mode":"s6","arcsecPerYr":-26.347855}},"saturn":{"arcsecPerYr":-26.34770526139875,"amplitude":0.007853480394550775,"nearestLaskar":{"mode":"s6","arcsecPerYr":-26.347855}},"uranus":{"arcsecPerYr":-2.9997826190870325,"amplitude":0.00874497999537166,"nearestLaskar":{"mode":"s7","arcsecPerYr":-2.9925259}},"neptune":{"arcsecPerYr":-0.7119238013380029,"amplitude":0.00596058002953454,"nearestLaskar":{"mode":"s8","arcsecPerYr":-0.691736}}},"laskarReference":{"g":{"g1":5.59,"g2":7.452,"g3":17.368,"g4":17.916,"g5":4.257452,"g6":28.245,"g7":3.087951,"g8":0.673021},"s":{"s1":-5.59,"s2":-7.05,"s3":-18.85,"s4":-17.755,"s6":-26.347855,"s7":-2.9925259,"s8":-0.691736}},"secularModes":{"mercury":{"z":[{"omegaRadPerYr":0.000027031818207616947,"re":0.006157828154531938,"im":0.17534287252865396},{"omegaRadPerYr":0.000037625755048117867,"re":0.022801394006552067,"im":0.008306969766612642},{"omegaRadPerYr":0.00001819755951477139,"re":0.019634390464761137,"im":0.014089364874799264},{"omegaRadPerYr":0.000011448057607328876,"re":-0.005593518494604968,"im":-0.0029052245787998727},{"omegaRadPerYr":0.00004414416117406344,"re":-0.005805920406608061,"im":-0.0014204427081003208}],"zeta":[{"omegaRadPerYr":-0.00002708077036638925,"re":0.05820923078043654,"im":0.011937299116802896},{"omegaRadPerYr":-0.00003532228203676806,"re":0.004745716308830004,"im":0.009067512616192796},{"omegaRadPerYr":6.775809851645383e-8,"re":-0.0039039070920310393,"im":0.01348975273632237},{"omegaRadPerYr":-0.000014531802676113629,"re":-0.0027805823433146603,"im":0.00187330678411465},{"omegaRadPerYr":-0.0000887164163079169,"re":-0.00011206156871095333,"im":-0.0024785291205995474},{"omegaRadPerYr":-0.000040864847902320425,"re":-0.0009298160696762877,"im":0.0013601255344406},{"omegaRadPerYr":-0.00003206734811188489,"re":-0.013260806086248288,"im":0.010385684665191528}]},"venus":{"z":[{"omegaRadPerYr":0.000035904553512490386,"re":-0.02119846416506149,"im":-0.007750145831471949},{"omegaRadPerYr":0.000021373475097200215,"re":0.01688676059838663,"im":0.011238461632800125},{"omegaRadPerYr":0.0000891126682595621,"re":0.005087494308045224,"im":-0.005109367327044794},{"omegaRadPerYr":0.00002871637308670451,"re":-0.0017393890833965048,"im":0.005587659203186736},{"omegaRadPerYr":0.0000799342922333488,"re":-0.004444836732239248,"im":-0.000050343952229169385},{"omegaRadPerYr":0.000012541688840447411,"re":0.00045357173714962573,"im":0.000911737546266025}],"zeta":[{"omegaRadPerYr":-0.0000888959495553902,"re":0.0014429354465121758,"im":0.013492668537081958},{"omegaRadPerYr":-2.9208325775930855e-8,"re":-0.0038419612463369956,"im":0.013438339841143515},{"omegaRadPerYr":-0.000027486545597650888,"re":0.008423421746069061,"im":0.0009256784115496605},{"omegaRadPerYr":-0.00003540217173683643,"re":0.0007435046608763117,"im":-0.0028971906600878095},{"omegaRadPerYr":-0.000081660514108284,"re":-0.0010567177425443545,"im":0.0017536571546863976},{"omegaRadPerYr":-0.0000952737760802458,"re":0.001562526924479489,"im":0.0014279436664923102},{"omegaRadPerYr":-0.000022714284095972902,"re":0.0006900677838311523,"im":0.0009409487957451416},{"omegaRadPerYr":-0.000012901292920474508,"re":-0.0007909151786516861,"im":0.0007730686699306353}]},"earth":{"z":[{"omegaRadPerYr":0.00002107199051817133,"re":0.01630118387133954,"im":0.010410715474836064},{"omegaRadPerYr":0.000035854880642325555,"re":-0.016689300984247403,"im":-0.005876944043424144},{"omegaRadPerYr":0.00008867935793915787,"re":-0.006205359541801612,"im":0.0059045375254646116},{"omegaRadPerYr":0.00007976874026943643,"re":0.003442663175503811,"im":0.0001816182255611817},{"omegaRadPerYr":0.0000284406291449025,"re":-0.0007693827830760355,"im":0.00367598332346763},{"omegaRadPerYr":0.00013689967402262488,"re":-0.0008112551762318084,"im":0.0011800841685890185}],"zeta":[{"omegaRadPerYr":-2.7891917257289304e-8,"re":-0.003980175000178911,"im":0.013465357128923015},{"omegaRadPerYr":-0.00008918684847695476,"re":-0.0017818271246379852,"im":-0.011714737745078469},{"omegaRadPerYr":-0.00002756595331696949,"re":0.00583734599158813,"im":0.0005767266011797771},{"omegaRadPerYr":-0.00003543688232456151,"re":0.0005316596907146868,"im":-0.002298310383588779},{"omegaRadPerYr":-0.00012766579960381416,"re":-0.0006080730304262018,"im":0.0011811621113388196},{"omegaRadPerYr":-0.00008175633302288257,"re":0.000846876827747264,"im":-0.0014453750797105368},{"omegaRadPerYr":-0.00009544829375008571,"re":-0.0013543923865922663,"im":-0.0011678258876888898},{"omegaRadPerYr":-0.00002261865558675109,"re":0.0008212477410615872,"im":0.0007376186980099775}]},"mars":{"z":[{"omegaRadPerYr":0.00008686259655808125,"re":0.06413361293676914,"im":-0.06146133868865542},{"omegaRadPerYr":0.000020710599055723982,"re":0.016881577207838325,"im":0.010181016782386811},{"omegaRadPerYr":0.00013701274435795109,"re":-0.004154545709339927,"im":0.0052484403858960695},{"omegaRadPerYr":0.00007830364611843084,"re":0.006610030797915946,"im":0.007167738866526078},{"omegaRadPerYr":0.00009674642286913005,"re":0.006698117837673303,"im":-0.0005917430967128088},{"omegaRadPerYr":0.00003622387338507979,"re":-0.0037118538206685607,"im":-0.001197130083178154},{"omegaRadPerYr":0.00007107828844204174,"re":-0.0030272576844611737,"im":-0.002108944204497516}],"zeta":[{"omegaRadPerYr":-0.00008506290715086626,"re":0.007775524352819497,"im":-0.020010963238863012},{"omegaRadPerYr":-0.0000933991163521947,"re":0.009574152372139365,"im":0.014992495215317484},{"omegaRadPerYr":-2.1362105745855692e-8,"re":-0.003652982242209785,"im":0.01361919582772925},{"omegaRadPerYr":-0.00012775359267803836,"re":-0.002304503982267479,"im":0.003531942429412415},{"omegaRadPerYr":-0.00007647491534935717,"re":0.00035594625225814704,"im":0.0022568171332840244},{"omegaRadPerYr":-0.00009952035338383708,"re":-0.0026861402131809443,"im":-0.0032247666915461515}]},"jupiter":{"z":[{"omegaRadPerYr":0.00002063740110387687,"re":0.03775130387189653,"im":0.022955339865390736},{"omegaRadPerYr":0.00013693848018192463,"re":0.009695326439616734,"im":-0.012378818350967928},{"omegaRadPerYr":0.000012851839645077305,"re":-0.0008196551617561096,"im":0.001329814977668993},{"omegaRadPerYr":0.0002532450451843359,"re":0.0004154127204422091,"im":0.00039995506700560973},{"omegaRadPerYr":0.000006063027593555453,"re":0.0001874302154226892,"im":-0.0002594778872164554},{"omegaRadPerYr":0.000031414567303595465,"re":-0.0001410149072863489,"im":0.00024144527808720207}],"zeta":[{"omegaRadPerYr":-2.149020491421876e-8,"re":-0.003689538564145585,"im":0.013265899195699682},{"omegaRadPerYr":-0.0001277374791359918,"re":0.0018884354605094886,"im":-0.0025160646809751328},{"omegaRadPerYr":-0.000015175433343197714,"re":-0.00040210191147445026,"im":0.000311790723794952},{"omegaRadPerYr":-0.000006632717843711628,"re":0.0003009471644619671,"im":0.0001317102459048636},{"omegaRadPerYr":0.000003955723851651098,"re":-0.0002689224710938399,"im":2.55718697562043e-7},{"omegaRadPerYr":-0.000020525772113349355,"re":0.00010370399925268192,"im":-0.000024424463119989032}]},"saturn":{"z":[{"omegaRadPerYr":0.0001369384420340827,"re":-0.029606539368869086,"im":0.038027170722751975},{"omegaRadPerYr":0.000020636741252411967,"re":0.02815007335278049,"im":0.017097747508926706},{"omegaRadPerYr":0.0002532483710370704,"re":-0.001360699020755345,"im":-0.0013821125951806003},{"omegaRadPerYr":0.000012847386302653386,"re":-0.0006853044437579442,"im":0.0011218187173344311},{"omegaRadPerYr":0.00012770394570920946,"re":0.00030532702102802837,"im":0.00020649628482279287},{"omegaRadPerYr":0.00014631533283298665,"re":0.0002679689601124245,"im":0.00022796633210086582},{"omegaRadPerYr":-0.0000956850721307613,"re":-0.00004957252159689069,"im":0.00011688239538973543}],"zeta":[{"omegaRadPerYr":-1.9284890425338192e-8,"re":-0.0037087212230228583,"im":0.013267262948571008},{"omegaRadPerYr":-0.0001277372896317981,"re":-0.004735858419459207,"im":0.00627097888702706},{"omegaRadPerYr":-0.00001532563737359388,"re":-0.0003420920002138007,"im":0.00024591937514866917},{"omegaRadPerYr":-0.000006583110684267351,"re":0.00028491997207902726,"im":0.00012107412372333861},{"omegaRadPerYr":0.0000039999217980562634,"re":-0.0002580958316429571,"im":-0.000010819152281359945},{"omegaRadPerYr":-0.000020373996106090315,"re":0.00011127733379369537,"im":-0.000021911791947276608}]},"uranus":{"z":[{"omegaRadPerYr":0.000019010264169216405,"re":-0.033200282460944634,"im":0.0011121515226460653},{"omegaRadPerYr":0.000012033774965800531,"re":-0.008077556608868773,"im":0.02293126113498079},{"omegaRadPerYr":0.000023775732746418096,"re":-0.008710630799471744,"im":-0.01609535875853135},{"omegaRadPerYr":0.000007822007662255115,"re":0.0016021819926708542,"im":-0.00962197192226446},{"omegaRadPerYr":0.000029525471254783548,"re":0.0016566472437052671,"im":0.006018708611975202},{"omegaRadPerYr":0.00013694007180338165,"re":0.0009292337930842891,"im":-0.0016372467193597033}],"zeta":[{"omegaRadPerYr":7.599406140583467e-8,"re":-0.004660490280127316,"im":0.01324646305172887},{"omegaRadPerYr":-0.000014567449192322452,"re":0.006613328546607294,"im":-0.005878235366082558},{"omegaRadPerYr":-0.0000070511815941747025,"re":-0.00045580657612564904,"im":-0.0003139356509065238},{"omegaRadPerYr":0.0000033299119137697543,"re":0.00034119569635735543,"im":-0.00033054329321719134},{"omegaRadPerYr":-0.00012772951403598265,"re":0.00021735569360062149,"im":-0.00029463731468611705},{"omegaRadPerYr":-0.00002335404049196458,"re":-0.00006477037840280204,"im":-0.0000854753510329729}]},"neptune":{"z":[{"omegaRadPerYr":0.0000029404695830820694,"re":0.0025832760906460725,"im":0.009213710495509148},{"omegaRadPerYr":0.000015819958717977618,"re":0.002410719468079164,"im":-0.002895867562122838},{"omegaRadPerYr":0.00002325097122082487,"re":0.0011593965129903002,"im":0.0011061122040190636},{"omegaRadPerYr":-0.0000035890878493920546,"re":-0.00020879616118878302,"im":-0.0006167297019823682},{"omegaRadPerYr":0.000030374670692966392,"re":-0.0002774301024845424,"im":-0.000238864114594756}],"zeta":[{"omegaRadPerYr":-3.30173678089686e-7,"re":-0.008762837917313306,"im":0.010494876094398321},{"omegaRadPerYr":-0.000007353421437272892,"re":-0.002480731467935571,"im":-0.0014503566463307598},{"omegaRadPerYr":0.000004080233365663868,"re":0.0018281720943012962,"im":0.0020545105215171626},{"omegaRadPerYr":-0.00001488177731540349,"re":-0.0001335669832827521,"im":0.001150010725968948},{"omegaRadPerYr":0.000011604807982812844,"re":-0.0005630431793684765,"im":-0.0005345017401904694},{"omegaRadPerYr":-0.000020788597851133615,"re":-0.0005111001768920031,"im":-0.00044451830911620624}]}},"windowRatesArcsecCy":{"gr":{"mercury":572.0163953477602,"venus":22.72579932934098,"earth":1154.4288756735507,"mars":1597.8081245264927,"jupiter":488.52901903266616,"saturn":-1576.6419790138473,"uranus":806.6031271824132,"neptune":9101.672820094602},"newton":{"mercury":529.0318183442629,"venus":14.09063098500031,"earth":1150.5947011011037,"mars":1596.456800053028,"jupiter":488.46653757478566,"saturn":-1576.655982242193,"uranus":806.6007460594686,"neptune":9101.678202023215}},"windowElementRates":{"mercury":{"meanMotionDegPerYr":1494.7257434850376,"nodeRateArcsecCy":-451.2311449799845,"eccDotPerCy":0.00002042677773037687,"inclDotArcsecCy":-21.430632431823366},"venus":{"meanMotionDegPerYr":585.1779096296278,"nodeRateArcsecCy":-1000.306214174713,"eccDotPerCy":-0.00004798428723828207,"inclDotArcsecCy":-2.974178533577949},"earth":{"meanMotionDegPerYr":359.9936510409024,"nodeRateArcsecCy":287648.7600663907,"eccDotPerCy":-0.00004200482597073563,"inclDotArcsecCy":-22.64742397868524},"mars":{"meanMotionDegPerYr":191.40299923220104,"nodeRateArcsecCy":-1059.1798890424657,"eccDotPerCy":0.00009171788765907529,"inclDotArcsecCy":-29.268508116306386},"jupiter":{"meanMotionDegPerYr":30.347302970893654,"nodeRateArcsecCy":724.705775941384,"eccDotPerCy":-0.00008761384982249549,"inclDotArcsecCy":-7.070016683555634},"saturn":{"meanMotionDegPerYr":12.225441692771087,"nodeRateArcsecCy":-1041.0659036368181,"eccDotPerCy":-0.000274469405786156,"inclDotArcsecCy":8.397686122094067},"uranus":{"meanMotionDegPerYr":4.284939547595985,"nodeRateArcsecCy":114.5093750661356,"eccDotPerCy":-0.00009620843044113302,"inclDotArcsecCy":-8.163218561680736},"neptune":{"meanMotionDegPerYr":2.184556718701412,"nodeRateArcsecCy":-12.966335009789026,"eccDotPerCy":0.0003831751949716785,"inclDotArcsecCy":1.2940564350540216}},"j2000AnchorElements":{"mercury":{"aAU":0.38709823065071075,"e":0.20563023607049116,"inclEclipticDeg":7.005014303274938,"ascNodeEclipticDeg":48.330538551974364,"lonPeriEclipticDeg":77.45482144099152,"meanLonEclipticDeg":252.2507030885041},"venus":{"aAU":0.7233269802365511,"e":0.0067558325243677105,"inclEclipticDeg":3.3945896490801655,"ascNodeEclipticDeg":76.67837411646671,"lonPeriEclipticDeg":131.8648157457362,"meanLonEclipticDeg":181.97911300917644},"earth":{"aAU":0.9999965019964896,"e":0.016702435651957125,"inclEclipticDeg":0.00010345820355474172,"ascNodeEclipticDeg":140.29217988414328,"lonPeriEclipticDeg":462.9179213996576,"meanLonEclipticDeg":100.46313620647624},"mars":{"aAU":1.523679123456054,"e":0.09331517469683251,"inclEclipticDeg":1.8498764556630205,"ascNodeEclipticDeg":49.56200645402683,"lonPeriEclipticDeg":336.0994054433691,"meanLonEclipticDeg":355.4558712806536},"jupiter":{"aAU":5.2042670431214395,"e":0.04877494875045349,"inclEclipticDeg":1.304625372772227,"ascNodeEclipticDeg":100.49162135259076,"lonPeriEclipticDeg":375.55766342461044,"meanLonEclipticDeg":34.37610122976935},"saturn":{"aAU":9.582017927199502,"e":0.055723450738374855,"inclEclipticDeg":2.4852504409844323,"ascNodeEclipticDeg":113.64296212519966,"lonPeriEclipticDeg":449.6565354143805,"meanLonEclipticDeg":50.00443784290724},"uranus":{"aAU":19.22941789809543,"e":0.044405468941205714,"inclEclipticDeg":0.7725675263742898,"ascNodeEclipticDeg":73.98941630128037,"lonPeriEclipticDeg":170.53113765495658,"meanLonEclipticDeg":313.4868371274141},"neptune":{"aAU":30.103641823293966,"e":0.011215139311970835,"inclEclipticDeg":1.7679863485740834,"ascNodeEclipticDeg":131.79386605766496,"lonPeriEclipticDeg":397.4424429067057,"meanLonEclipticDeg":305.20853660850446}},"invariablePlane":{"inclEclipticDeg":1.578508921285029,"ascNodeEclipticDeg":107.58235993606775},"relativisticSupplementArcsecCy":{"mercury":42.98142753750681,"venus":8.624988679409032,"earth":3.8389650839134437,"mars":1.351069161345673,"jupiter":0.06243854269534786,"saturn":0.013727538363259408,"uranus":0.0023997870642552105,"neptune":0.0007833188044413836},"checks":{"mercuryClosureArcsecCy":{"measuredWindowDelta":42.98457700349729,"derivedInstantaneous":42.98142753750681,"diff":0.0031494659904822697,"tolerance":0.1},"earthMeanMotionVsSiderealAnchor":{"engineDegPerYr":359.9936510409024,"modelSiderealDegPerYr":359.9937285652708,"diffArcsecPerYr":-0.27908772626688005,"tolerance":2},"saturnG6":{"measured":28.245581213939303,"laskar":28.245},"jupiterG5":{"measured":4.256769540134775,"laskar":4.257452}},"inputs":{"generator":"node tools/verify/nbody-secular.js --write","files":{"packages/physics/src/planets/keplerian-chain.cjs":"sha256:8a0ca8debaf6eea263bd40f631bc5bdd7041307c37c3cd5e5844dd6b62e624c7","public/input/astro-reference.json":"sha256:b568736717355903c8298422cf48128a3897743ea0b1c57d64f0823ce8b1813f","tools/explore/j2000-state.mjs":"sha256:a0a87301e21a02399ab7b8ed16d9b7930a485c49d1b2bbafa9dfc552f552600d","tools/explore/k45-residual-naff.mjs":"sha256:228eb4874adca9171d61c1697ffbbaac3ce82891476a34762bf882840ccae406","tools/explore/k45e-amplitude-solve.mjs":"sha256:8682a7ebd72bd98b60019b1c097f1791ec6e5ecea97d1798b929ce46b4ae1837","tools/explore/lattice-long-window-test.mjs":"sha256:20f4ca076624aab9bdd1898f48890fe60c77ef2d6f7a792de47b713769f059d5","tools/explore/naff-frequencies.mjs":"sha256:3d2eac569010adcbae57ee987f834c259dec689b6802d623b71c03c80c089496","tools/explore/nbody-wh.mjs":"sha256:b33813d3a1655e44a23964ac267f34863fb92af6bfbf6fe5886517bc649257a2","tools/lib/keplerian-chain.js":"sha256:620299515d5520bb3a03fba5affafc7a036fb151fca3457a5194e8771cc97fb8","tools/verify/nbody-secular.js":"sha256:afc5e8575ed35c553ed8f0ea4ead1f7b81b13b9812b46970796a9e4d5b4535ca"}},"periodicTerms":{"mercury":{"mlonArcsec":[{"omegaRadPerYr":1.1094782578341662,"cos":0.4283420322840896,"sin":-7.326527851982565},{"omegaRadPerYr":5.661360380927949,"cos":-2.0426487257983164,"sin":2.931772230959004}],"aPpm":[],"z":[],"zeta":[],"windowAffine":{"mlon":{"off":-3.0361113098716093,"slope":2.841279344922036},"a":{"off":0.2758743641848535,"slope":-7.24420616853227e-8},"k":{"off":-0.00001030813184818552,"slope":-3.078103662153515e-7},"h":{"off":-0.000016422201677759497,"slope":3.7560190179142716e-7},"q":{"off":0.000010395163408985695,"slope":-1.838228051358991e-7},"p":{"off":-0.000004551478853694918,"slope":-4.544543538216623e-8}}},"venus":{"mlonArcsec":[],"aPpm":[],"z":[{"omegaRadPerYr":1.5773449193814462,"re":5.768835789458705e-8,"im":5.5342215874014016e-8},{"omegaRadPerYr":-1.5773449193814462,"re":0.000010314865597201087,"im":-0.000019874878696872673}],"zeta":[],"windowAffine":{"mlon":{"off":3.594544662543421,"slope":0.5465941295243872},"a":{"off":4.008943302414927,"slope":7.076701363642677e-7},"k":{"off":0.000019076190731768522,"slope":-1.3082830278492291e-8},"h":{"off":0.00003129560095690929,"slope":-1.4415141744270831e-8},"q":{"off":0.0000036907390449818533,"slope":-5.1716930457710807e-8},"p":{"off":0.000005182649173412006,"slope":4.982981253663389e-8}}},"mars":{"mlonArcsec":[{"omegaRadPerYr":0.003412138072030063,"cos":53.661262651261794,"sin":17.070245749181456},{"omegaRadPerYr":0.19158768236155332,"cos":4.1190968738521265,"sin":-4.748875417265209},{"omegaRadPerYr":0.39807082074986866,"cos":12.712294432932945,"sin":-4.893704227512306},{"omegaRadPerYr":0.7961398667806305,"cos":1.421815474232886,"sin":4.144231974472394}],"aPpm":[],"z":[{"omegaRadPerYr":0.39814752292139344,"re":-0.0000060223525850161355,"im":-0.000016334865019046765},{"omegaRadPerYr":-0.39814752292139344,"re":-1.906831958776481e-7,"im":-4.2742574718202244e-7},{"omegaRadPerYr":0.5296892164273643,"re":-0.00003701074386965397,"im":-0.000026873075669186583},{"omegaRadPerYr":-0.5296892164273643,"re":-4.860521816153534e-7,"im":3.4682347713450994e-7}],"zeta":[],"windowAffine":{"mlon":{"off":-83.40369086698432,"slope":-0.13085704033129364},"a":{"off":0.22572881683252122,"slope":0.00002462837866522486},"k":{"off":0.00005558155738652912,"slope":-3.3300345017930464e-7},"h":{"off":-0.0001182846800188612,"slope":8.036936695886697e-8},"q":{"off":-0.000004188199413466078,"slope":1.6809406981874153e-7},"p":{"off":-0.00001586851056255778,"slope":-5.9218427691161906e-8}}},"jupiter":{"mlonArcsec":[{"omegaRadPerYr":0.0017554822448617336,"cos":48.97733291681234,"sin":-5.689424735641458},{"omegaRadPerYr":0.004160979283963426,"cos":-59.280576709743016,"sin":7.054912777055453},{"omegaRadPerYr":0.005711423874120446,"cos":1785.9059419041541,"sin":-59.520431502595834},{"omegaRadPerYr":0.006061149058238848,"cos":-5155.176110449875,"sin":359.13911032400864},{"omegaRadPerYr":0.0064003204766165354,"cos":5322.430398397717,"sin":-851.7083581062271},{"omegaRadPerYr":0.006927123116161157,"cos":-2527.222392265454,"sin":-679.8142349692864},{"omegaRadPerYr":0.007347535479630681,"cos":794.6589358799971,"sin":59.796580742627825},{"omegaRadPerYr":0.009030182879802645,"cos":-28.973366791091646,"sin":0.12810328262494958},{"omegaRadPerYr":0.01023386547323905,"cos":9.751461827108322,"sin":-0.5216284154278424},{"omegaRadPerYr":0.013401795804853043,"cos":5.429911378947591,"sin":-10.591506602861633},{"omegaRadPerYr":0.10286332258841177,"cos":-38.46695456385342,"sin":24.13640352297557},{"omegaRadPerYr":0.10341539486110399,"cos":-111.64376822368591,"sin":18.24371253711175},{"omegaRadPerYr":0.10381657500411412,"cos":26.469908492763107,"sin":-7.0080709922502065},{"omegaRadPerYr":0.11004285898203933,"cos":2.997271763575911,"sin":-9.93424422884182},{"omegaRadPerYr":0.20645396549043982,"cos":-12.61456033731959,"sin":6.303354665896138},{"omegaRadPerYr":0.21316428432573814,"cos":10.07905352162956,"sin":-1.402737349175027},{"omegaRadPerYr":0.3163921029488549,"cos":14.37761837151305,"sin":-47.01550191132841},{"omegaRadPerYr":0.41962065614882454,"cos":-18.854372744455834,"sin":-20.240335590024877},{"omegaRadPerYr":0.5228460424733212,"cos":-3.429306402004873,"sin":0.6203232480770089},{"omegaRadPerYr":0.5295794047024165,"cos":3.2300692936626043,"sin":1.9712469487218824},{"omegaRadPerYr":0.6327839673092814,"cos":35.346925450973245,"sin":-56.407896840915065},{"omegaRadPerYr":0.7360122203568453,"cos":-4.704607512685235,"sin":-9.574068131451229},{"omegaRadPerYr":0.9491755028325268,"cos":17.81748677516039,"sin":-16.385614526255804},{"omegaRadPerYr":1.2655672104620295,"cos":8.866223007011978,"sin":-4.569458969134516}],"aPpm":[{"omegaRadPerYr":0.006719118699963881,"cos":48.573743416880376,"sin":5.718777316868248},{"omegaRadPerYr":0.10316587156355153,"cos":-20.64279384012959,"sin":-58.459209228100256},{"omegaRadPerYr":0.3163921204533936,"cos":37.85268369797566,"sin":11.814375691261464},{"omegaRadPerYr":0.4196197886355212,"cos":32.19572359708147,"sin":-26.994280216797293},{"omegaRadPerYr":0.6327837640826948,"cos":112.58712390176983,"sin":70.37241144279676},{"omegaRadPerYr":0.736011176241029,"cos":20.869632879528762,"sin":-9.118091950461974},{"omegaRadPerYr":0.9491754072291905,"cos":40.75667940355217,"sin":43.81146059437585}],"z":[{"omegaRadPerYr":-0.004432186704994217,"re":-5.867802248402671e-7,"im":-8.254449418184526e-7},{"omegaRadPerYr":0.006185044482434081,"re":-0.0000012161762550487762,"im":-0.0000030203065341458352},{"omegaRadPerYr":0.006526633552708544,"re":0.00003800675928140831,"im":0.000022269930139413607},{"omegaRadPerYr":0.006841730683554717,"re":-0.00020317502192715415,"im":0.0003188285928876444},{"omegaRadPerYr":0.00747053395746608,"re":-0.0000035716684323761892,"im":1.2742688580606548e-7},{"omegaRadPerYr":0.013548716911366894,"re":-0.000002350191137889841,"im":0.000006711751150881712},{"omegaRadPerYr":-0.09638356414912969,"re":0.000004284174679819291,"im":0.000006330991461639706},{"omegaRadPerYr":-0.10309304895392035,"re":0.0002598853937218284,"im":0.0005934954381502736},{"omegaRadPerYr":0.10334256720156329,"re":0.000010707526746616896,"im":-7.503383649425035e-7},{"omegaRadPerYr":-0.10355795380841806,"re":-1.063336030336841e-7,"im":-2.0541668181011066e-8},{"omegaRadPerYr":0.10974751121423026,"re":0.0000011173504063700668,"im":0.000006719148159183111},{"omegaRadPerYr":-0.10980538629668493,"re":-0.000002900081116179768,"im":-0.000009899598025431856},{"omegaRadPerYr":0.11007006681891524,"re":-0.00013063861389871293,"im":0.00000985296174462361},{"omegaRadPerYr":0.20631979860140914,"re":5.119061252277396e-7,"im":2.480355773312527e-7},{"omegaRadPerYr":-0.20631979860140914,"re":0.00006341507478024657,"im":0.000011276228186483647},{"omegaRadPerYr":0.2132961022966655,"re":-0.00005067319780147233,"im":-0.0000627188576461291},{"omegaRadPerYr":-0.2132961022966655,"re":-0.0000044253272944321155,"im":-0.0000016116438623719781},{"omegaRadPerYr":-0.309550014126483,"re":0.000005606226306164852,"im":-0.000005438581286376055},{"omegaRadPerYr":0.4194826585061195,"re":-1.0390181615135504e-7,"im":-0.0000012626943849687208},{"omegaRadPerYr":-0.4194826585061195,"re":0.000014631489401198242,"im":0.00010495231858827452},{"omegaRadPerYr":0.42646650549338605,"re":-0.00000645618792801447,"im":0.000013429833100455273},{"omegaRadPerYr":-0.42646650549338605,"re":-2.0555461287745184e-8,"im":-0.0000025459742680985126},{"omegaRadPerYr":0.5227123066057764,"re":-7.073803160227629e-8,"im":-1.970721443206652e-7},{"omegaRadPerYr":-0.5227123066057764,"re":0.000018235559608248633,"im":0.000009067751046872788},{"omegaRadPerYr":0.5296909646066452,"re":-0.00002399461780092589,"im":-0.000016307205503159826},{"omegaRadPerYr":0.7358764923162944,"re":-5.814108194390086e-7,"im":-9.121464115717994e-8},{"omegaRadPerYr":-0.7358764923162944,"re":-0.000004928916366698608,"im":0.00003725689784565852}],"zeta":[{"omegaRadPerYr":0.007109011267971619,"re":-0.0000037217643779107696,"im":0.000007503955172407062}],"windowAffine":{"mlon":{"off":-125.78222926014135,"slope":6.2983073360071735},"a":{"off":-319.6050898669756,"slope":0.000779607919389938},"k":{"off":0.0000034049728743745708,"slope":3.2736368495266035e-8},"h":{"off":-0.0010769469203616685,"slope":-2.575505685699325e-8},"q":{"off":0.000004737931650877721,"slope":2.2347265159090993e-9},"p":{"off":-0.000009849086874108778,"slope":5.503699626595282e-9}}},"saturn":{"mlonArcsec":[{"omegaRadPerYr":0.001786048288984416,"cos":-181.44106654988352,"sin":-10.313227106762458},{"omegaRadPerYr":0.0030148721799546562,"cos":149.00303791253842,"sin":33.76409405494381},{"omegaRadPerYr":0.004165525524364463,"cos":-172.70685696648098,"sin":-72.87316272673016},{"omegaRadPerYr":0.005711612505259986,"cos":1779.8628492410735,"sin":703.2183302587266},{"omegaRadPerYr":0.006061128579515537,"cos":-4227.186061093192,"sin":-2208.9329299789797},{"omegaRadPerYr":0.006400316716713799,"cos":3138.564688353877,"sin":3189.905379562314},{"omegaRadPerYr":0.0069270984517047045,"cos":-1377.0840213077513,"sin":1286.27231187497},{"omegaRadPerYr":0.007347527790013924,"cos":417.43348264495495,"sin":-57.04557673192657},{"omegaRadPerYr":0.009510404827007764,"cos":-7.765898693390395,"sin":0.8892260985689776},{"omegaRadPerYr":0.010945707090275838,"cos":29.56279239355349,"sin":8.293611458100738},{"omegaRadPerYr":0.012423145966006417,"cos":-4.215593254976639,"sin":-3.0700350270704155},{"omegaRadPerYr":0.013416131640630238,"cos":-4.5151732902098844,"sin":27.86003076400669},{"omegaRadPerYr":0.06380179308987843,"cos":-4.747647253443951,"sin":-5.957791702021482},{"omegaRadPerYr":0.09639046966315655,"cos":2.667146101800569,"sin":-3.860800417601718},{"omegaRadPerYr":0.10286386184886939,"cos":84.3229391192099,"sin":-52.96616180689683},{"omegaRadPerYr":0.10341551187921391,"cos":295.2617795455775,"sin":-52.687574245208296},{"omegaRadPerYr":0.10378442710841682,"cos":-84.55762508234496,"sin":24.536258031533293},{"omegaRadPerYr":0.10494582048006193,"cos":6.235393166500995,"sin":-2.116540223907364},{"omegaRadPerYr":0.11004449636185792,"cos":-6.634210459306023,"sin":24.394261473660137},{"omegaRadPerYr":0.13842169902478996,"cos":-4.199868810474214,"sin":0.31881244551482585},{"omegaRadPerYr":0.20645319293357267,"cos":30.886233875528504,"sin":-15.26677302107779},{"omegaRadPerYr":0.2131888134847813,"cos":-24.1206873893165,"sin":-7.012583474087438},{"omegaRadPerYr":0.2770241892222328,"cos":1.358644324024118,"sin":6.380537397729518},{"omegaRadPerYr":0.31639189442561905,"cos":-148.03052033876784,"sin":514.8549315150589},{"omegaRadPerYr":0.3231050801627479,"cos":2.1628286417627463,"sin":-4.833937069006972},{"omegaRadPerYr":0.41962100995047047,"cos":43.86000064602828,"sin":47.60980392733846},{"omegaRadPerYr":0.4263384545732272,"cos":-1.948324729100543,"sin":-4.900869105627541},{"omegaRadPerYr":0.522846178629271,"cos":7.689085912571676,"sin":-1.413192071721535},{"omegaRadPerYr":0.5296207047954017,"cos":20.856033182913993,"sin":-21.71858694072192},{"omegaRadPerYr":0.6327839463783227,"cos":-77.77600695492362,"sin":124.58545340872587},{"omegaRadPerYr":0.7360122959500417,"cos":11.287492300940073,"sin":22.66562332852338},{"omegaRadPerYr":0.8460438421840013,"cos":1.791163240744703,"sin":20.76193994027603},{"omegaRadPerYr":0.9491754961973113,"cos":-40.35622470727082,"sin":37.05262168901003},{"omegaRadPerYr":1.2655672064360473,"cos":-20.273900471944575,"sin":10.420670314577013}],"aPpm":[{"omegaRadPerYr":0.006719059959337144,"cos":-298.1739210091084,"sin":-35.65492066160081},{"omegaRadPerYr":0.10311278039419353,"cos":329.0524271864246,"sin":168.20534343508803},{"omegaRadPerYr":0.10998709356915146,"cos":-80.20083012880013,"sin":25.67799170706812},{"omegaRadPerYr":0.20645076224645065,"cos":22.36534737885545,"sin":52.11596228310427},{"omegaRadPerYr":0.21316470407952204,"cos":22.417372677360976,"sin":148.19540692158907},{"omegaRadPerYr":0.3096741607098237,"cos":40.76322817089124,"sin":6.028640259859568},{"omegaRadPerYr":0.3163918128549843,"cos":3380.8172707887766,"sin":952.191549696343},{"omegaRadPerYr":0.4196207206390813,"cos":-117.61845429351422,"sin":102.62640589830909},{"omegaRadPerYr":0.5228483497587464,"cos":2.3692547652699623,"sin":25.554825659213808},{"omegaRadPerYr":0.6327843056674047,"cos":-267.8385266313829,"sin":-178.81334744313918},{"omegaRadPerYr":0.736011319948035,"cos":-70.20882142515485,"sin":30.840528779508954},{"omegaRadPerYr":0.8460447241275829,"cos":152.7139783318568,"sin":-11.548664993600605},{"omegaRadPerYr":0.9491754310361933,"cos":-100.97703621878051,"sin":-108.78710356859312},{"omegaRadPerYr":1.2655670501368257,"cos":-32.690429975684566,"sin":-61.98759537866741}],"z":[{"omegaRadPerYr":-0.0043581108449722815,"re":-0.0000024452801717244646,"im":0.00000176219909906387},{"omegaRadPerYr":0.006181644141736154,"re":0.000019239814460642087,"im":0.000026302677014869564},{"omegaRadPerYr":0.006525673635907744,"re":-0.00017162205464306686,"im":-0.0001238150512913057},{"omegaRadPerYr":0.006842443168643391,"re":0.0008160379089456957,"im":-0.0012855610725464066},{"omegaRadPerYr":0.007464263643626432,"re":0.000012700549608609351,"im":-0.000011961873155192082},{"omegaRadPerYr":0.011038687917916075,"re":-0.00003986985559218555,"im":0.0000319532818132531},{"omegaRadPerYr":0.013549298855465481,"re":0.000009801001239209954,"im":-0.000026447689093519716},{"omegaRadPerYr":-0.06373626926633558,"re":-0.000035961160675812285,"im":-0.000028529188753008582},{"omegaRadPerYr":-0.09638538445781969,"re":0.000015535361093345565,"im":0.00002685306276592891},{"omegaRadPerYr":-0.10309247935234203,"re":0.00029050443286320895,"im":0.000602195654034088},{"omegaRadPerYr":0.10334344953255195,"re":-0.000019533841745894094,"im":0.000010878623314384489},{"omegaRadPerYr":0.1092144082212586,"re":-0.00003560775673948136,"im":0.00000805013491416618},{"omegaRadPerYr":-0.1092144082212586,"re":0.0000017934489175965881,"im":0.000004053156158992017},{"omegaRadPerYr":0.10975358541865932,"re":0.0001736982473708561,"im":-0.00007535466151575599},{"omegaRadPerYr":-0.10975358541865932,"re":-0.0000045639870780316195,"im":-0.00001543752944564476},{"omegaRadPerYr":0.11042109885477089,"re":0.00018688722297342662,"im":-0.0001292530438680645},{"omegaRadPerYr":0.11079489528339939,"re":-0.00005742828952162291,"im":0.00002446021658582074},{"omegaRadPerYr":-0.11079489528339939,"re":3.2506972662241077e-7,"im":0.000001489324611454702},{"omegaRadPerYr":0.20631931111331386,"re":-0.000012094567204794847,"im":-0.000015066258794689852},{"omegaRadPerYr":-0.20631931111331386,"re":-0.00026457068506597557,"im":-0.000043660296689892406},{"omegaRadPerYr":0.21302287066870385,"re":0.0007392111543450358,"im":0.0008891229460487466},{"omegaRadPerYr":-0.21302287066870385,"re":0.00001838082115522415,"im":0.0000043898601508202826},{"omegaRadPerYr":-0.30955014898803845,"re":-0.00002463181621759035,"im":0.00002635073464096736},{"omegaRadPerYr":0.3161372565338949,"re":0.000010638068874177265,"im":0.00002903644387819836},{"omegaRadPerYr":-0.3161372565338949,"re":0.00004478536387293394,"im":-0.00007235122851688727},{"omegaRadPerYr":0.323239510116322,"re":-0.0000030767740260105366,"im":-0.00002580327493089759},{"omegaRadPerYr":-0.323239510116322,"re":-8.037789067980258e-7,"im":0.0000013792627880408373},{"omegaRadPerYr":0.41948429878992055,"re":-0.000002440074764173995,"im":8.894456091230815e-7},{"omegaRadPerYr":-0.41948429878992055,"re":-0.000055428452820604816,"im":-0.00044582634993030784},{"omegaRadPerYr":0.42644865450720826,"re":0.00007629843823448361,"im":-0.00004431512797002225},{"omegaRadPerYr":-0.42644865450720826,"re":-3.1429180745635195e-7,"im":0.000010823856640253446},{"omegaRadPerYr":0.5227089862153922,"re":0.0000034109789863966514,"im":0.0000030363668539468183},{"omegaRadPerYr":-0.5227089862153922,"re":-0.00007781393414016792,"im":-0.000038627649151733156},{"omegaRadPerYr":0.5296908859229388,"re":0.0016272720366095905,"im":0.001111132100692396},{"omegaRadPerYr":-0.6327562885719447,"re":0.000029869908829404503,"im":0.00004153187998356031},{"omegaRadPerYr":0.7358761720892631,"re":0.0000021049025933726144,"im":-5.169271196001655e-7},{"omegaRadPerYr":-0.7358761720892631,"re":0.000021597320218474448,"im":-0.00016115133711881854},{"omegaRadPerYr":0.839103167756065,"re":-3.220056324476462e-7,"im":-1.9215998786789735e-7},{"omegaRadPerYr":-0.839103167756065,"re":-0.000029573064653568303,"im":-0.000026876878341445564},{"omegaRadPerYr":0.8460633252910219,"re":-0.000018291262005562003,"im":-0.000004960467787157427},{"omegaRadPerYr":-0.8460633252910219,"re":0.000002270968378873516,"im":-4.1450618173663426e-7},{"omegaRadPerYr":1.0522678072049176,"re":0.0000021124954612886125,"im":-6.772831160051008e-7},{"omegaRadPerYr":-1.0522678072049176,"re":0.0000267981237409094,"im":-0.00006313630238654217},{"omegaRadPerYr":1.0593357382250086,"re":0.00005517832446284326,"im":0.00007541106207704865},{"omegaRadPerYr":-1.0593357382250086,"re":-0.0000011488134271423812,"im":0.0000024971139727131163}],"zeta":[{"omegaRadPerYr":0.007110979746141733,"re":0.00000919588910803286,"im":-0.00001814527795129041},{"omegaRadPerYr":0.11036111150828076,"re":0.00000527323961474106,"im":-7.281071860678697e-7},{"omegaRadPerYr":-0.11036111150828076,"re":-1.4554658617828128e-7,"im":-2.997478015016536e-7},{"omegaRadPerYr":0.31648864956406403,"re":5.799058711521812e-7,"im":-0.0000017165371741601281},{"omegaRadPerYr":-0.31648864956406403,"re":0.000006083693573561639,"im":-0.000004590051234428058}],"windowAffine":{"mlon":{"off":368.77768508640213,"slope":-15.496771393507323},"a":{"off":-2829.2103276456414,"slope":-0.0045105237220306885},"k":{"off":-0.003295097451958373,"slope":-2.0051443777828192e-8},"h":{"off":-0.0002907698442316049,"slope":-1.3596860723979377e-8},"q":{"off":-0.000015053194135038677,"slope":-3.170204870993174e-9},"p":{"off":0.000023220957119488714,"slope":-9.510135925508223e-9}}},"uranus":{"mlonArcsec":[{"omegaRadPerYr":0.0014676306656945686,"cos":-2723.2732035534445,"sin":1455.2796086990577},{"omegaRadPerYr":0.002935118590545489,"cos":-80.26480675215342,"sin":-95.8374478950758},{"omegaRadPerYr":0.004155546473024461,"cos":1.1550380098540174,"sin":23.521854076744148},{"omegaRadPerYr":0.0052252895688723894,"cos":4.608813754202134,"sin":-0.6230394757030248},{"omegaRadPerYr":0.009526301775504297,"cos":2.3896668996799786,"sin":8.656974670666726},{"omegaRadPerYr":0.010640504190992169,"cos":-43.49687731874909,"sin":-44.677866004930515},{"omegaRadPerYr":0.011196734776096853,"cos":-83.45205146330704,"sin":5.383367632435863},{"omegaRadPerYr":0.012156407473032656,"cos":7.742961830120213,"sin":-0.8479238143720861},{"omegaRadPerYr":0.03509994570239343,"cos":-13.690534474740515,"sin":-0.09961013726355172},{"omegaRadPerYr":0.03642641342532824,"cos":-5.752140387713611,"sin":-24.41294585296263},{"omegaRadPerYr":0.03765206634793987,"cos":1.1994661595851788,"sin":-6.809492437416003},{"omegaRadPerYr":0.06379838793393325,"cos":20.468765392083533,"sin":27.21283397773183},{"omegaRadPerYr":0.07318148370167205,"cos":-9.69116347938128,"sin":-27.78494298250939},{"omegaRadPerYr":0.07472638753868291,"cos":7.873224595248054,"sin":-0.7155282297422259},{"omegaRadPerYr":0.10992640867980305,"cos":-5.990016922362497,"sin":-10.882154205515945},{"omegaRadPerYr":0.13851753919551618,"cos":155.23229349662773,"sin":-15.803016487330606},{"omegaRadPerYr":0.14663782456344865,"cos":-3.715291029250423,"sin":-4.797529939498076},{"omegaRadPerYr":0.18317858744514456,"cos":-2.291698000815538,"sin":-2.074953319012592},{"omegaRadPerYr":0.20224498536551827,"cos":8.919350018672908,"sin":0.13050200748345925},{"omegaRadPerYr":0.21324964582055533,"cos":7.771264889728913,"sin":3.2448943019234076},{"omegaRadPerYr":0.27702538424539885,"cos":-5.354735278387998,"sin":-26.15783501292274},{"omegaRadPerYr":0.34075769716356147,"cos":-0.34374298673471854,"sin":-3.407211633402909},{"omegaRadPerYr":0.3517129698224617,"cos":6.517491045993994,"sin":4.866034512765639},{"omegaRadPerYr":0.38015329792591684,"cos":-10.048614018475593,"sin":6.616933416996329},{"omegaRadPerYr":0.41553938728422657,"cos":-8.751785788135297,"sin":2.791900237825687},{"omegaRadPerYr":0.4549044621740356,"cos":693.0959534211968,"sin":120.19653913821934},{"omegaRadPerYr":0.45610200056621664,"cos":1.497081074242887,"sin":-4.5957729863215455},{"omegaRadPerYr":0.52965804929712,"cos":25.524250211112093,"sin":29.123990414976713},{"omegaRadPerYr":0.9098120069692734,"cos":1.511508854251386,"sin":-4.916844788783686},{"omegaRadPerYr":0.9845575210388458,"cos":34.71526459043498,"sin":-6.2004825381324435}],"aPpm":[{"omegaRadPerYr":0.0015195463776243173,"cos":-97.92780184832424,"sin":-170.54282606302286},{"omegaRadPerYr":0.010971189090214429,"cos":15.922066751160804,"sin":-63.43279783983412},{"omegaRadPerYr":0.03621032482297702,"cos":16.21258783688179,"sin":-6.129790725608936},{"omegaRadPerYr":0.06382513997653097,"cos":10.100214539053637,"sin":75.06714536902228},{"omegaRadPerYr":0.07337200739108976,"cos":42.982400746686906,"sin":-17.941805609839893},{"omegaRadPerYr":0.07480628709510945,"cos":-98.25060700665108,"sin":-132.20200270273284},{"omegaRadPerYr":0.10992773343818057,"cos":23.527835556808586,"sin":-13.19593655109539},{"omegaRadPerYr":0.13851260790018521,"cos":-111.93654517641879,"sin":-1070.0165264046125},{"omegaRadPerYr":0.20224432819100724,"cos":-1.6198240069501508,"sin":23.993057625224463},{"omegaRadPerYr":0.27702773432502253,"cos":61.9132367606093,"sin":-9.83565381913395},{"omegaRadPerYr":0.35171020637669254,"cos":33.74734445814394,"sin":-41.875773491215355},{"omegaRadPerYr":0.38014999979161623,"cos":101.22109168773962,"sin":184.81826487458775},{"omegaRadPerYr":0.41553260592168284,"cos":-8.509290767368357,"sin":-24.32922160458007},{"omegaRadPerYr":0.454904467454442,"cos":713.1399178977563,"sin":-4114.63252326919},{"omegaRadPerYr":0.4561160604896006,"cos":-27.91319995253341,"sin":-8.624472809732127},{"omegaRadPerYr":0.984557509897134,"cos":-33.18844016289984,"sin":-186.75405247300057}],"z":[{"omegaRadPerYr":0.0014837575668889009,"re":-0.0008665291640501358,"im":0.001907936036034254},{"omegaRadPerYr":0.00295279881832869,"re":0.00010736924920624244,"im":0.00010174559468720306},{"omegaRadPerYr":0.00429293812487028,"re":0.00002252649969342707,"im":0.000009342663092948193},{"omegaRadPerYr":0.00980120872337301,"re":-0.000009449566248920439,"im":0.000029032976734660395},{"omegaRadPerYr":-0.00980120872337301,"re":8.563497411069382e-8,"im":5.261933014013008e-7},{"omegaRadPerYr":0.010674384150638597,"re":-0.000007999044727462888,"im":-0.00016009092399207203},{"omegaRadPerYr":0.01122773955044561,"re":0.00006662306995813944,"im":-0.00011797257085013135},{"omegaRadPerYr":0.0337357457099598,"re":-4.924908621890371e-7,"im":-1.884880698988116e-8},{"omegaRadPerYr":-0.0337357457099598,"re":-0.000009004684945732304,"im":-0.000006710182155954315},{"omegaRadPerYr":-0.035164467347836875,"re":0.00001720995016262725,"im":-0.00006583757195895908},{"omegaRadPerYr":0.03813277064819845,"re":-0.000014678995532384206,"im":0.000021334048020953475},{"omegaRadPerYr":0.03954199509978495,"re":0.000006080534298826858,"im":0.000009479871338845931},{"omegaRadPerYr":-0.03954199509978495,"re":4.4019907036498e-7,"im":-6.891010067059488e-8},{"omegaRadPerYr":0.052680280678065385,"re":-1.4401692886917268e-7,"im":-1.2006738534193792e-7},{"omegaRadPerYr":-0.052680280678065385,"re":-0.00001149417674949648,"im":0.000006123496789287883},{"omegaRadPerYr":-0.06373512210671961,"re":-0.00022380819690838574,"im":-0.00017313924404132501},{"omegaRadPerYr":0.0716521295972711,"re":0.0000017824225175481797,"im":6.477952920806899e-7},{"omegaRadPerYr":-0.0716521295972711,"re":0.00000215646219703891,"im":-0.000023927553187836552},{"omegaRadPerYr":0.07478159869442952,"re":0.0009483751443785471,"im":-0.0009763721951788479},{"omegaRadPerYr":0.10845812312889605,"re":-3.7528627629806196e-7,"im":1.8162941068340068e-7},{"omegaRadPerYr":-0.10845812312889605,"re":-9.131957187358628e-7,"im":-0.000011421205927847909},{"omegaRadPerYr":-0.12747767226632578,"re":0.000021728013183792636,"im":0.000023783943328003726},{"omegaRadPerYr":0.13850951650364812,"re":-0.0000011498126511397353,"im":-0.000007863363571380573},{"omegaRadPerYr":-0.13850951650364812,"re":-0.0000014195339279925058,"im":-0.000019672286437039453},{"omegaRadPerYr":0.14954976178285512,"re":0.000014768485359910815,"im":0.00008511591060974291},{"omegaRadPerYr":0.20222937830150706,"re":-1.0150184284327157e-7,"im":6.869368522748524e-7},{"omegaRadPerYr":-0.20222937830150706,"re":0.00004349403635922491,"im":-0.00006510222268729462},{"omegaRadPerYr":0.21329897381245563,"re":0.00039336255815296587,"im":0.00047060080004783354},{"omegaRadPerYr":-0.21329897381245563,"re":3.202014370758212e-7,"im":-3.5802450398016503e-7},{"omegaRadPerYr":0.27690379813063043,"re":-7.218438305342976e-7,"im":-0.0000013733840118922365},{"omegaRadPerYr":-0.27690379813063043,"re":-2.3123751530349353e-7,"im":-0.000016638884236576377},{"omegaRadPerYr":0.3053633220801144,"re":-2.910714985900132e-8,"im":-4.781013594032306e-8},{"omegaRadPerYr":-0.3053633220801144,"re":0.00007880195705303336,"im":0.000023623187602347662},{"omegaRadPerYr":0.3407483472806585,"re":-1.209671947861725e-7,"im":-2.5813355800705355e-7},{"omegaRadPerYr":-0.3407483472806585,"re":-0.00002420376525152184,"im":-0.000011552644880225797},{"omegaRadPerYr":0.380118030074355,"re":-7.296236632255353e-8,"im":3.5847282633803363e-7},{"omegaRadPerYr":-0.380118030074355,"re":-0.0006838007331883362,"im":-0.0009409909380339405},{"omegaRadPerYr":0.38132744524307727,"re":-3.6053724441471605e-8,"im":1.6364077194021347e-7},{"omegaRadPerYr":-0.38132744524307727,"re":-0.000014034970151092443,"im":0.000007391631825460043},{"omegaRadPerYr":0.42649588732416494,"re":0.00003355541336075159,"im":0.000003229178538680994},{"omegaRadPerYr":-0.42649588732416494,"re":-2.4848590819447393e-9,"im":-2.0996310483135817e-7},{"omegaRadPerYr":0.454842191200728,"re":-0.0000068968472365409275,"im":-0.000022455671964598352},{"omegaRadPerYr":-0.454842191200728,"re":0.000004089603819014679,"im":-0.00007288435713437545},{"omegaRadPerYr":0.5296909155487275,"re":0.002267709930000383,"im":0.0015486528993874404},{"omegaRadPerYr":0.6044398000537934,"re":0.000017726047212555066,"im":-0.0000013332740222674028},{"omegaRadPerYr":-0.6044398000537934,"re":1.7342010171877778e-7,"im":6.703571657599135e-9},{"omegaRadPerYr":0.8350185854831645,"re":1.2586113973327464e-7,"im":5.372376564828466e-8},{"omegaRadPerYr":-0.8350185854831645,"re":0.000018818126580642925,"im":-0.00000775604392883977},{"omegaRadPerYr":0.9097702889574655,"re":-5.719740354233375e-7,"im":1.9962628546421285e-7},{"omegaRadPerYr":-0.9097702889574655,"re":-0.00004112839646154747,"im":-0.000028044401843348806},{"omegaRadPerYr":1.059344223480954,"re":0.00007767214704633619,"im":0.00010783628487565227},{"omegaRadPerYr":-1.059344223480954,"re":-5.638258297648278e-9,"im":3.5465014497625753e-8}],"zeta":[{"omegaRadPerYr":0.0014527887795682593,"re":0.000001225443781600558,"im":9.211211424484081e-7},{"omegaRadPerYr":-0.0014792753241020216,"re":0.0000026758297371259606,"im":0.0000027287210167650844},{"omegaRadPerYr":0.0029820480206314646,"re":-0.000001282445072589254,"im":-0.000004700332344774084},{"omegaRadPerYr":0.004450018379581222,"re":-7.121692943860969e-7,"im":-9.628096109083337e-8},{"omegaRadPerYr":0.011102305337337321,"re":-0.0000046239168067403425,"im":-0.000004684566499917281},{"omegaRadPerYr":0.03663431001814335,"re":-6.15854695195685e-7,"im":9.065668681839519e-8},{"omegaRadPerYr":-0.03666260004333084,"re":4.7263179165796715e-7,"im":-2.6845411520695185e-7},{"omegaRadPerYr":-0.13858628147443935,"re":0.000003441979477602939,"im":0.0000021582660193327546},{"omegaRadPerYr":0.14960208116950802,"re":8.161612662383277e-7,"im":-7.94667687135255e-7},{"omegaRadPerYr":0.2881502651383113,"re":-0.0000010969574112392136,"im":-0.0000016124150498813101},{"omegaRadPerYr":0.4548689400202301,"re":-2.3673022663689655e-8,"im":-9.3291428017079e-9},{"omegaRadPerYr":-0.4548689400202301,"re":0.000004157220149799098,"im":0.000004891780577383906},{"omegaRadPerYr":0.604441816402012,"re":-0.000003773246119574625,"im":-0.0000030150909472886142},{"omegaRadPerYr":-0.604441816402012,"re":5.122350568532408e-10,"im":-9.387337108587782e-10}],"windowAffine":{"mlon":{"off":2024.1597880934548,"slope":-0.9803012695995114},"a":{"off":-570.5850895525455,"slope":-0.008328813500457355},"k":{"off":-0.0021533978316026566,"slope":-1.8991036591730033e-8},"h":{"off":-0.001664008015965309,"slope":-2.0462557547905663e-9},"q":{"off":2.511046246206569e-7,"slope":2.716652377389316e-9},"p":{"off":0.000006031952984022636,"slope":1.1940523031034823e-9}}},"neptune":{"mlonArcsec":[{"omegaRadPerYr":0.0014542551208168281,"cos":1856.2064116192448,"sin":-1000.2478496712213},{"omegaRadPerYr":0.002938962859084131,"cos":72.64920561325054,"sin":56.6336138305537},{"omegaRadPerYr":0.004011031934955985,"cos":-16.789157173670475,"sin":7.368443570192889},{"omegaRadPerYr":0.004666995903546313,"cos":8.686577889375073,"sin":-0.2222640562578857},{"omegaRadPerYr":0.03536298304761287,"cos":9.320410230645626,"sin":2.0978548328471684},{"omegaRadPerYr":0.03664876565086225,"cos":4.203396217196708,"sin":32.473765787404375},{"omegaRadPerYr":0.03792155116579449,"cos":3.265373687942832,"sin":2.5365219483494745},{"omegaRadPerYr":0.07180792239807379,"cos":2.7767680703837954,"sin":0.029317560781933767},{"omegaRadPerYr":0.07329736410038251,"cos":6.3495403714495104,"sin":17.072735972941096},{"omegaRadPerYr":0.10987969447176986,"cos":3.5338155273087257,"sin":6.865050635173966},{"omegaRadPerYr":0.14654111769974043,"cos":2.355315415043408,"sin":2.9564968549584125},{"omegaRadPerYr":0.1751660073566194,"cos":184.40235833425325,"sin":-52.31805710204902},{"omegaRadPerYr":0.3503379462961885,"cos":-1.765396680715562,"sin":-2.93934878875984},{"omegaRadPerYr":0.3883665153047027,"cos":9.709212688691501,"sin":5.321885210084292},{"omegaRadPerYr":0.4915611838748408,"cos":911.0927452532569,"sin":-1.048256082682597},{"omegaRadPerYr":0.49279791451584054,"cos":-0.5630126062277834,"sin":3.9684617436433567},{"omegaRadPerYr":0.5297024355940728,"cos":2.3924567967513783,"sin":-9.397668198920957},{"omegaRadPerYr":1.021214758355621,"cos":42.204921169753995,"sin":-15.310979806303239}],"aPpm":[{"omegaRadPerYr":0.001526240017127087,"cos":128.59463922560346,"sin":231.157492909206},{"omegaRadPerYr":0.0028522810593159015,"cos":-21.37257736172422,"sin":10.410652668548867},{"omegaRadPerYr":0.036694987481548785,"cos":151.68816362154618,"sin":-28.109849236141923},{"omegaRadPerYr":0.07324289638003004,"cos":-33.097418852783065,"sin":11.320552408869489},{"omegaRadPerYr":0.11007776671727425,"cos":-15.64142884780634,"sin":8.57725626520655},{"omegaRadPerYr":0.17516937472508654,"cos":-326.96669756975535,"sin":-1149.3821788780774},{"omegaRadPerYr":0.3883665171722944,"cos":29.53675510318641,"sin":-54.13457315941252},{"omegaRadPerYr":0.4534159751567433,"cos":-46.68270684996543,"sin":11.759980747658528},{"omegaRadPerYr":0.49156118022802586,"cos":-5.2901500449709005,"sin":-4922.302881722226},{"omegaRadPerYr":0.49282616704059384,"cos":22.106622560779943,"sin":2.13106647410791},{"omegaRadPerYr":1.0212147269559075,"cos":-78.57315025381558,"sin":-216.3418005050494}],"z":[{"omegaRadPerYr":0.0014837734685461137,"re":0.0002470067630842748,"im":-0.0005452929862132521},{"omegaRadPerYr":0.0029524918155195362,"re":-0.00011275373976339884,"im":-0.00011123471614462209},{"omegaRadPerYr":-0.0044140516100612485,"re":3.6263523984647715e-7,"im":-1.4566816563050972e-7},{"omegaRadPerYr":0.00441745153707662,"re":-0.000011068378575944293,"im":0.000005740737986786513},{"omegaRadPerYr":-0.03369478512846473,"re":0.000008746043682892983,"im":0.0000066190070495098835},{"omegaRadPerYr":-0.035164388440971084,"re":-0.000016802500300213553,"im":0.0000661199905176253},{"omegaRadPerYr":0.03666424256830024,"re":0.000006754025799341181,"im":8.517086510774389e-7},{"omegaRadPerYr":0.03813296418105082,"re":0.0007689492385754893,"im":-0.0011245580820085233},{"omegaRadPerYr":-0.07181296844887167,"re":-0.000002357141269985301,"im":0.000024436420318837164},{"omegaRadPerYr":0.07478167258029508,"re":0.000060527944493778874,"im":-0.0000624237471983131},{"omegaRadPerYr":0.0806802960816351,"re":-2.342081548658853e-7,"im":9.921626255634374e-8},{"omegaRadPerYr":0.10840999421731702,"re":-3.671621677333295e-8,"im":-1.4433301288616571e-8},{"omegaRadPerYr":-0.10840999421731702,"re":5.175313353952552e-7,"im":0.000011413929445377862},{"omegaRadPerYr":-0.1370330398922115,"re":-0.00032331294064515717,"im":-0.00010732797654549353},{"omegaRadPerYr":0.2132989873679399,"re":0.0004877892438019343,"im":0.0005843206750016681},{"omegaRadPerYr":-0.3121996849254518,"re":2.657109867708586e-7,"im":-0.000009494749711976808},{"omegaRadPerYr":0.35023502907954657,"re":4.5653452784858966e-8,"im":-1.0451073486237061e-7},{"omegaRadPerYr":-0.35023502907954657,"re":-0.000007619774822676212,"im":-0.000014830728580405387},{"omegaRadPerYr":0.41529137311167974,"re":1.40340582133306e-7,"im":-3.472335076864231e-7},{"omegaRadPerYr":-0.41529137311167974,"re":-0.000007077805249867214,"im":0.00001836263072231864},{"omegaRadPerYr":0.42649606369334697,"re":0.00004219217111353991,"im":0.000004226930453951068},{"omegaRadPerYr":-0.42649606369334697,"re":-5.778715334268039e-8,"im":-6.989339616382578e-8},{"omegaRadPerYr":0.4534314862265414,"re":-5.8394157684695814e-8,"im":-9.639122928008068e-8},{"omegaRadPerYr":-0.4534314862265414,"re":-0.0010841064179978926,"im":-0.0007363861425487809},{"omegaRadPerYr":0.454613029160343,"re":6.905167458766659e-8,"im":6.693341682765734e-8},{"omegaRadPerYr":-0.454613029160343,"re":0.000008194199133128378,"im":-0.000008036026642462984},{"omegaRadPerYr":0.49156759561441354,"re":-0.000004081630856076783,"im":0.000003745021317177511},{"omegaRadPerYr":-0.49156759561441354,"re":-0.000012304501694650548,"im":0.000010686389497370531},{"omegaRadPerYr":0.529690904144021,"re":0.002839616439592622,"im":0.0019403568704973132},{"omegaRadPerYr":0.9830852237002987,"re":-6.751772347200159e-8,"im":3.359364438015822e-8},{"omegaRadPerYr":-0.9830852237002987,"re":-0.00005757987205480198,"im":-0.000014755161081484387},{"omegaRadPerYr":1.0593442028499358,"re":0.00009721108212038089,"im":0.0001350057523483852},{"omegaRadPerYr":-1.0593442028499358,"re":-4.233062807533727e-8,"im":1.0635755205653147e-8}],"zeta":[{"omegaRadPerYr":0.0014366584686242474,"re":-6.63782073151593e-7,"im":-0.0000017626551646767362},{"omegaRadPerYr":-0.0014803237593266241,"re":-9.863310065296167e-7,"im":-0.0000014961465160413961},{"omegaRadPerYr":0.0029824693345588942,"re":8.10074628250391e-7,"im":0.0000032336974492268088},{"omegaRadPerYr":0.004451041402290568,"re":4.559552272869738e-7,"im":-2.04533354081703e-8},{"omegaRadPerYr":0.03663380430434493,"re":3.6393762747757574e-7,"im":-5.576875661686012e-8},{"omegaRadPerYr":-0.17494555870208506,"re":9.087393140061722e-7,"im":-9.030906680506425e-7},{"omegaRadPerYr":-0.17549754071699553,"re":0.0000015077550707045947,"im":-3.072395384471143e-7},{"omegaRadPerYr":0.49159407617594936,"re":4.688665922879818e-9,"im":5.751572240261546e-10},{"omegaRadPerYr":-0.49159407617594936,"re":-3.989445587741231e-7,"im":-0.000010056284554653139},{"omegaRadPerYr":0.5676217845526992,"re":0.000004881604155619742,"im":-0.000002324476380493449},{"omegaRadPerYr":0.5681730424584401,"re":0.00000398483183336319,"im":-7.241062320302453e-7}],"windowAffine":{"mlon":{"off":-3105.7759823709034,"slope":1.1056380312307594},"a":{"off":228.34220306593178,"slope":0.0134174252518665},"k":{"off":-0.0029068777236623206,"slope":1.049997166521814e-8},"h":{"off":-0.0001255319273465512,"slope":1.2432416595677454e-8},"q":{"off":-0.000010019138721488617,"slope":8.156044651950384e-10},"p":{"off":0.000014973872209054602,"slope":-8.867063098766213e-9}}}}});
@@ -352,7 +352,7 @@ function buildPlanetChainsFromArtifactData(art, opts = {}) {
352
352
  * @param {Object<string,KcPlanetChain>=} allChains the full chain map
353
353
  * @returns {number} deg/yr, prograde positive
354
354
  */
355
- function computeApsidalSecularDegPerYr(year, planetChain, allChains) {
355
+ function computeApsidalTangentDegPerYr(year, planetChain, allChains) {
356
356
  const D = 150;
357
357
  const w1 = computePlanetElementsAtYear(year - D, planetChain, allChains).lonPeriEclipticDeg;
358
358
  const w2 = computePlanetElementsAtYear(year + D, planetChain, allChains).lonPeriEclipticDeg;
@@ -370,6 +370,6 @@ module.exports = {
370
370
  computeHeliocentricEclipticFromElements,
371
371
  computePoissonArgRad,
372
372
  computePlanetElementsAtYear,
373
- computeApsidalSecularDegPerYr,
373
+ computeApsidalTangentDegPerYr,
374
374
  buildPlanetChainsFromArtifactData,
375
375
  };
@@ -36,7 +36,7 @@ const { derivePlanetGeometry, scaffoldOrbitInputs } = require('./geometry.cjs');
36
36
 
37
37
  /**
38
38
  * @typedef {Object} PlanetModelBody
39
- * @property {number} solarYearInput - the observed sidereal period input, SI days (the scaffold period of the no-chain bodies; the chain planets ride the artifact's elements)
39
+ * @property {number} orbitalPeriodInputDays - the body's orbital-period input, SI days — for the planets the period OF DATE (measured in sun-and-eclipses.js: their rates sit 1.4–1.6°/cy above the VSOP sidereal mean motions, the precession plus input rounding), not the sidereal period the field was once documented as; the scaffold period of the no-chain bodies — the chain planets ride the artifact's elements
40
40
  * @property {number} [invPlaneInclinationJ2000]
41
41
  * @property {number} [longitudePerihelion]
42
42
  * @property {number} [wobblePeriodYears] - carriers: the chain's g-mode beat (input since Phase 7 commit 2)
@@ -115,7 +115,7 @@ function createPlanetModel(env, bodies) {
115
115
  rec.geometry = derivePlanetGeometry({
116
116
  key, // the ellipse family is the law's own taxonomy (geometry.cjs SCAFFOLD_ELLIPSE_FAMILY, plan 11 step 3)
117
117
  // plan 09 step 7b: the chain's J2000 elements where the artifact has the body, else the observed period input
118
- ...scaffoldOrbitInputs(key, env.chainArtifact, b.solarYearInput),
118
+ ...scaffoldOrbitInputs(key, env.chainArtifact, b.orbitalPeriodInputDays),
119
119
  orbitalEccentricityBase: b.orbitalEccentricityBase !== undefined
120
120
  ? b.orbitalEccentricityBase : b.orbitalEccentricityJ2000,
121
121
  longitudePerihelion: b.longitudePerihelion,
@@ -2,17 +2,17 @@
2
2
  // Gives the TypeScript website full type safety at the boundary (§2g) while
3
3
  // packages/physics stays JavaScript.
4
4
 
5
- export declare const CONSTANTS_HASH: "320c51865d620009";
5
+ export declare const CONSTANTS_HASH: "da713fc2d846767d";
6
6
 
7
7
  export declare const MODEL_VERSION: string;
8
8
 
9
9
  export declare const PREPRINT_DOI: string;
10
10
 
11
11
  export declare const DEFAULT_CONSTANTS: {
12
- readonly hash: "320c51865d620009";
12
+ readonly hash: "da713fc2d846767d";
13
13
  readonly additionalBodiesReference: {
14
14
  "pluto": {
15
- "solarYearInput": number;
15
+ "orbitalPeriodInputDays": number;
16
16
  "orbitalEccentricityJ2000": number;
17
17
  "eclipticInclinationJ2000": number;
18
18
  "invPlaneInclinationJ2000": number;
@@ -25,7 +25,7 @@ export declare const DEFAULT_CONSTANTS: {
25
25
  "ascendingNodeInvPlaneClosedForm": number;
26
26
  };
27
27
  "halleys": {
28
- "solarYearInput": number;
28
+ "orbitalPeriodInputDays": number;
29
29
  "orbitalEccentricityJ2000": number;
30
30
  "eclipticInclinationJ2000": number;
31
31
  "invPlaneInclinationJ2000": number;
@@ -37,7 +37,7 @@ export declare const DEFAULT_CONSTANTS: {
37
37
  "rotationPeriodDays": number;
38
38
  };
39
39
  "eros": {
40
- "solarYearInput": number;
40
+ "orbitalPeriodInputDays": number;
41
41
  "orbitalEccentricityJ2000": number;
42
42
  "eclipticInclinationJ2000": number;
43
43
  "invPlaneInclinationJ2000": number;
@@ -49,7 +49,7 @@ export declare const DEFAULT_CONSTANTS: {
49
49
  "rotationPeriodDays": number;
50
50
  };
51
51
  "ceres": {
52
- "solarYearInput": number;
52
+ "orbitalPeriodInputDays": number;
53
53
  "orbitalEccentricityJ2000": number;
54
54
  "eclipticInclinationJ2000": number;
55
55
  "invPlaneInclinationJ2000": number;
@@ -200,7 +200,7 @@ export declare const DEFAULT_CONSTANTS: {
200
200
  };
201
201
  readonly planetOrbitalElements: {
202
202
  "mercury": {
203
- "solarYearInput": number;
203
+ "orbitalPeriodInputDays": number;
204
204
  "orbitalEccentricityJ2000": number;
205
205
  "axialTiltJ2000": number;
206
206
  "eclipticInclinationJ2000": number;
@@ -212,7 +212,7 @@ export declare const DEFAULT_CONSTANTS: {
212
212
  "ascendingNodeInvPlaneClosedForm": number;
213
213
  };
214
214
  "venus": {
215
- "solarYearInput": number;
215
+ "orbitalPeriodInputDays": number;
216
216
  "orbitalEccentricityJ2000": number;
217
217
  "axialTiltJ2000": number;
218
218
  "eclipticInclinationJ2000": number;
@@ -225,7 +225,7 @@ export declare const DEFAULT_CONSTANTS: {
225
225
  "ascendingNodeInvPlaneClosedForm": number;
226
226
  };
227
227
  "mars": {
228
- "solarYearInput": number;
228
+ "orbitalPeriodInputDays": number;
229
229
  "orbitalEccentricityJ2000": number;
230
230
  "axialTiltJ2000": number;
231
231
  "eclipticInclinationJ2000": number;
@@ -238,7 +238,7 @@ export declare const DEFAULT_CONSTANTS: {
238
238
  "ascendingNodeInvPlaneClosedForm": number;
239
239
  };
240
240
  "jupiter": {
241
- "solarYearInput": number;
241
+ "orbitalPeriodInputDays": number;
242
242
  "orbitalEccentricityJ2000": number;
243
243
  "axialTiltJ2000": number;
244
244
  "eclipticInclinationJ2000": number;
@@ -251,7 +251,7 @@ export declare const DEFAULT_CONSTANTS: {
251
251
  "ascendingNodeInvPlaneClosedForm": number;
252
252
  };
253
253
  "saturn": {
254
- "solarYearInput": number;
254
+ "orbitalPeriodInputDays": number;
255
255
  "orbitalEccentricityJ2000": number;
256
256
  "axialTiltJ2000": number;
257
257
  "eclipticInclinationJ2000": number;
@@ -264,7 +264,7 @@ export declare const DEFAULT_CONSTANTS: {
264
264
  "ascendingNodeInvPlaneClosedForm": number;
265
265
  };
266
266
  "uranus": {
267
- "solarYearInput": number;
267
+ "orbitalPeriodInputDays": number;
268
268
  "orbitalEccentricityJ2000": number;
269
269
  "axialTiltJ2000": number;
270
270
  "eclipticInclinationJ2000": number;
@@ -277,7 +277,7 @@ export declare const DEFAULT_CONSTANTS: {
277
277
  "ascendingNodeInvPlaneClosedForm": number;
278
278
  };
279
279
  "neptune": {
280
- "solarYearInput": number;
280
+ "orbitalPeriodInputDays": number;
281
281
  "orbitalEccentricityJ2000": number;
282
282
  "axialTiltJ2000": number;
283
283
  "eclipticInclinationJ2000": number;
@@ -98,3 +98,26 @@ export function createDeepOrbitalHistory({ zModes, zetaModes, zetaSeries, zSerie
98
98
  ellipticity: number;
99
99
  };
100
100
  };
101
+ /**
102
+ * The CO-ROTATING anchored mode sum — the z-side evaluator of the history
103
+ * (the ϖ̇ fix, measured): the plain DC anchor residual is a spurious
104
+ * zero-frequency mode that preserves the J2000 VALUE but dilutes the local
105
+ * argument rate by |sum(0)|/|anchor| (z: 11.47 → 7.93″/yr, a 92 s-class
106
+ * anomalistic-year bias in the mode tier). Here the residual ROTATES at the
107
+ * raw sum's own local arg-rate g* = Im(ż·z̄)/|z|² (analytic), so at t = 0
108
+ * both the value AND the rate are exact, and at depth the residual is one
109
+ * |R|-amplitude term at a physical frequency instead of a DC offset (deep
110
+ * envelope measured unchanged: [0.0001, 0.0672] → [0.0003, 0.0678] over
111
+ * 10–50 Myr). Exported: e(t) = hypot(sum(t)) needs no spin integration,
112
+ * so a fixture can read a deep eccentricity node here (bit-identical at the
113
+ * grid nodes; the published surface is the grid's linear interpolation and
114
+ * stays on the history).
115
+ * @param {ReadonlyArray<{omegaRadPerYr: number, re: number, im: number}>} modes
116
+ * @param {[number, number]} anchor the J2000 value (q, p) the sum is pinned to
117
+ * @returns {(t: number) => [number, number]} t in years from J2000
118
+ */
119
+ export function createCoRotatingAnchoredModeSum(modes: ReadonlyArray<{
120
+ omegaRadPerYr: number;
121
+ re: number;
122
+ im: number;
123
+ }>, anchor: [number, number]): (t: number) => [number, number];
@@ -54,24 +54,6 @@ export type BesselianDeps = {
54
54
  speedOfLightKmS: number;
55
55
  };
56
56
  };
57
- /**
58
- * @typedef {Object} BesselianDeps
59
- * @property {(dDaysTT: number) => {lonDeg: number, latDeg: number, distKm: number}} moonFullAtDaysTT
60
- * full-series Moon: ecliptic-of-date longitude/latitude (deg) + distance (km), TT axis (days since J2000)
61
- * @property {(jdUT: number) => number} sunLonDegAt - geometric mean sun longitude (deg), JD(UT) axis with the finder's internal ΔT
62
- * @property {(T: number) => number} sunCompletionDeg - planetary completion (deg) at T centuries TT, SUBTRACTED from the finder sun (see eclipse/sun-planetary-completion.cjs; the finders deliberately stay without it — their fitted anchors and certified canon statistics were produced on the bare form, and elongation-class timing absorbs the omission into the fitted phases)
63
- * @property {(year: number) => number} sunAberrationDegAt - the Sun's derived planetary aberration κ (deg) at calendar year, SUBTRACTED from the geometric Sun longitude (the apparent Sun; see the header)
64
- * @property {(jd: number) => number} deltaTSecondsAt - framework ΔT (J2000-zeroed convention)
65
- * @property {(year: number) => number} obliquityDegAt - framework obliquity (deg) at calendar year
66
- * @property {(year: number) => number} eccentricityAt - framework Earth-orbit eccentricity at calendar year
67
- * @property {(year: number) => number} perihelionLongitudeDegAt - framework perihelion longitude (deg) at calendar year
68
- * @property {(jd: number) => number} yearFromJD - the model's own JD → calendar-year conversion
69
- * @property {{ j2000JD: number, julianCenturyDays: number, earthDiameterKm: number,
70
- * moonDiameterKm: number, sunDiameterKm: number, sunDistanceKm: number,
71
- * earthFlatteningInverse: number, ttBridgeSeconds: number,
72
- * gmstMeanSiderealT0Deg: number, gmstMeanSiderealRateDegPerDay: number,
73
- * gmstMeanSiderealT2Deg: number, speedOfLightKmS: number }} constants
74
- */
75
57
  /** @param {BesselianDeps} deps */
76
58
  export function createBesselian(deps: BesselianDeps): {
77
59
  umbraGroundAt: (jdUT: number) => {
@@ -96,4 +78,41 @@ export function createBesselian(deps: BesselianDeps): {
96
78
  };
97
79
  centralDurationSeconds: number | null;
98
80
  };
81
+ gmstDeg: (jdUT: number) => number;
99
82
  };
83
+ /**
84
+ * @typedef {Object} BesselianDeps
85
+ * @property {(dDaysTT: number) => {lonDeg: number, latDeg: number, distKm: number}} moonFullAtDaysTT
86
+ * full-series Moon: ecliptic-of-date longitude/latitude (deg) + distance (km), TT axis (days since J2000)
87
+ * @property {(jdUT: number) => number} sunLonDegAt - geometric mean sun longitude (deg), JD(UT) axis with the finder's internal ΔT
88
+ * @property {(T: number) => number} sunCompletionDeg - planetary completion (deg) at T centuries TT, SUBTRACTED from the finder sun (see eclipse/sun-planetary-completion.cjs; the finders deliberately stay without it — their fitted anchors and certified canon statistics were produced on the bare form, and elongation-class timing absorbs the omission into the fitted phases)
89
+ * @property {(year: number) => number} sunAberrationDegAt - the Sun's derived planetary aberration κ (deg) at calendar year, SUBTRACTED from the geometric Sun longitude (the apparent Sun; see the header)
90
+ * @property {(jd: number) => number} deltaTSecondsAt - framework ΔT (J2000-zeroed convention)
91
+ * @property {(year: number) => number} obliquityDegAt - framework obliquity (deg) at calendar year
92
+ * @property {(year: number) => number} eccentricityAt - framework Earth-orbit eccentricity at calendar year
93
+ * @property {(year: number) => number} perihelionLongitudeDegAt - framework perihelion longitude (deg) at calendar year
94
+ * @property {(jd: number) => number} yearFromJD - the model's own JD → calendar-year conversion
95
+ * @property {{ j2000JD: number, julianCenturyDays: number, earthDiameterKm: number,
96
+ * moonDiameterKm: number, sunDiameterKm: number, sunDistanceKm: number,
97
+ * earthFlatteningInverse: number, ttBridgeSeconds: number,
98
+ * gmstMeanSiderealT0Deg: number, gmstMeanSiderealRateDegPerDay: number,
99
+ * gmstMeanSiderealT2Deg: number, speedOfLightKmS: number }} constants
100
+ */
101
+ /** Mean sidereal time at Greenwich, degrees (mean equinox — pairs with the
102
+ * mean-of-date body longitudes; coefficients single-sourced from
103
+ * astro-reference.json physicalConstants). THE ONE GMST of the model: the
104
+ * eclipse location tier, the API's observer tier, the eclipse and lunar
105
+ * audits and the browser's diagnostics all read it. Meeus 12.4's
106
+ * cubic term (−T³/38,710,000) is deliberately absent: it is 0.9″ in the
107
+ * eclipse canon and at most 93″ (6 s of time) at the edge of the observer
108
+ * era, and every recorded eclipse and lunar value was measured without it.
109
+ * @param {number} jdUT
110
+ * @param {{ j2000JD: number, julianCenturyDays: number, gmstMeanSiderealT0Deg: number, gmstMeanSiderealRateDegPerDay: number, gmstMeanSiderealT2Deg: number }} K
111
+ * @returns {number} */
112
+ export function computeGmstDeg(jdUT: number, K: {
113
+ j2000JD: number;
114
+ julianCenturyDays: number;
115
+ gmstMeanSiderealT0Deg: number;
116
+ gmstMeanSiderealRateDegPerDay: number;
117
+ gmstMeanSiderealT2Deg: number;
118
+ }): number;
package/types/index.d.ts CHANGED
@@ -66,7 +66,7 @@ export { computeMassChainJ2000, computeMoonPeriodsJ2000 } from "./earth/mass-cha
66
66
  export { SECONDS_PER_DAY, DAYS_PER_JULIAN_YEAR, JULIAN_CENTURY_DAYS, SECONDS_PER_JULIAN_YEAR } from "./constants/units.cjs";
67
67
  export { computeEarthFrameOfDate, solveWheelAngleForLongitude, computeSceneWorldFrameJ2000, SCENE_EQUINOX_VIEW_AZIMUTH_DEG } from "./earth/frame-of-date.cjs";
68
68
  export { derivePlanetGeometry, scaffoldOrbitInputs } from "./planets/geometry.cjs";
69
- export { buildPlanetChainsFromArtifactData, computePlanetElementsAtYear, computeHeliocentricEclipticFromElements, computePoissonArgRad, computeOsculatingElements, solveKeplerRad, computeApsidalSecularDegPerYr, computeApsidalSecularDegPerYr as computeApsidalTangentDegPerYr, ANCHOR_EPOCH_YEAR, ANCHOR_EPOCH_JD } from "./planets/keplerian-chain.cjs";
69
+ export { buildPlanetChainsFromArtifactData, computePlanetElementsAtYear, computeHeliocentricEclipticFromElements, computePoissonArgRad, computeOsculatingElements, solveKeplerRad, computeApsidalTangentDegPerYr, ANCHOR_EPOCH_YEAR, ANCHOR_EPOCH_JD } from "./planets/keplerian-chain.cjs";
70
70
  export { computeEquatorNodeOriginSFrameDeg, convertNodeSFrameToEquatorOriginDeg } from "./planets/inv-plane-frame.cjs";
71
71
  export { computePlanetPrecessionConstant, createPlanetSpinChannel, createPlanetSpinChannelFromArtifacts, computeObliquityJ2000Deg } from "./planets/spin-channel.cjs";
72
72
  export { CHAIN_ARTIFACT, CHAIN_ARTIFACT_HASH } from "./planets/chain-artifact.js";
@@ -23,6 +23,7 @@ export function assembleSunAndEclipses(ctx: import("./lunar-theory.js").Ctx): {
23
23
  };
24
24
  centralDurationSeconds: number | null;
25
25
  };
26
+ gmstDeg: (jdUT: number) => number;
26
27
  };
27
28
  eclipseFinders: {
28
29
  sunLonDegAt: (jd: number) => number;
@@ -227,6 +227,8 @@ export function assembleSurface(ctx: import("./cardinal-instants.js").Ctx): Read
227
227
  latDeg: number;
228
228
  lonDeg: number;
229
229
  } | null;
230
+ /** THE ONE GMST — mean sidereal time at Greenwich, degrees, at a UT JD (eclipse/besselian.cjs computeGmstDeg; the observer tier's hour angle). @param {number} jdUT @returns {number} */
231
+ gmstDegAtJD: (jdUT: number) => number;
230
232
  solarLocalCircumstances: (jdGreatest: number, latDeg: number, lonDeg: number) => {
231
233
  kind: "none" | "partial" | "annular" | "total";
232
234
  magnitude: number;
package/types/model.d.ts CHANGED
@@ -183,6 +183,7 @@ export function assembleModel(C: Readonly<Record<string, any>>, F: Readonly<Reco
183
183
  latDeg: number;
184
184
  lonDeg: number;
185
185
  } | null;
186
+ gmstDegAtJD: (jdUT: number) => number;
186
187
  solarLocalCircumstances: (jdGreatest: number, latDeg: number, lonDeg: number) => {
187
188
  kind: "none" | "partial" | "annular" | "total";
188
189
  magnitude: number;
@@ -155,7 +155,7 @@ export function computePlanetElementsAtYear(year: number, planetChain: KcPlanetC
155
155
  * @param {Object<string,KcPlanetChain>=} allChains the full chain map
156
156
  * @returns {number} deg/yr, prograde positive
157
157
  */
158
- export function computeApsidalSecularDegPerYr(year: number, planetChain: KcPlanetChain, allChains?: {
158
+ export function computeApsidalTangentDegPerYr(year: number, planetChain: KcPlanetChain, allChains?: {
159
159
  [x: string]: KcPlanetChain;
160
160
  } | undefined): number;
161
161
  /** The chain's canonical constructor from a PARSED governed artifact (K2.1 →
@@ -1,8 +1,8 @@
1
1
  export type PlanetModelBody = {
2
2
  /**
3
- * - the observed sidereal period input, SI days (the scaffold period of the no-chain bodies; the chain planets ride the artifact's elements)
3
+ * - the body's orbital-period input, SI days — for the planets the period OF DATE (measured in sun-and-eclipses.js: their rates sit 1.4–1.6°/cy above the VSOP sidereal mean motions, the precession plus input rounding), not the sidereal period the field was once documented as; the scaffold period of the no-chain bodies — the chain planets ride the artifact's elements
4
4
  */
5
- solarYearInput: number;
5
+ orbitalPeriodInputDays: number;
6
6
  invPlaneInclinationJ2000?: number | undefined;
7
7
  longitudePerihelion?: number | undefined;
8
8
  /**
@@ -43,7 +43,7 @@ export type PlanetModelRecord = {
43
43
  };
44
44
  /**
45
45
  * @typedef {Object} PlanetModelBody
46
- * @property {number} solarYearInput - the observed sidereal period input, SI days (the scaffold period of the no-chain bodies; the chain planets ride the artifact's elements)
46
+ * @property {number} orbitalPeriodInputDays - the body's orbital-period input, SI days — for the planets the period OF DATE (measured in sun-and-eclipses.js: their rates sit 1.4–1.6°/cy above the VSOP sidereal mean motions, the precession plus input rounding), not the sidereal period the field was once documented as; the scaffold period of the no-chain bodies — the chain planets ride the artifact's elements
47
47
  * @property {number} [invPlaneInclinationJ2000]
48
48
  * @property {number} [longitudePerihelion]
49
49
  * @property {number} [wobblePeriodYears] - carriers: the chain's g-mode beat (input since Phase 7 commit 2)