@essrt/physics 4.6.0 → 4.7.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.
@@ -0,0 +1,116 @@
1
+ 'use strict';
2
+ // THE ONE HOME for the of-date year lengths and their precession beats
3
+ // (owner: "analyze how many implementations we have and move to 1").
4
+ //
5
+ // Before this factory the family lived in four-plus places (the frozen
6
+ // Fourier laws, the λ̇ channel, per-surface cardinal-structure wirings
7
+ // with two different mean chains, and scene measurements mixed into
8
+ // beats) — and the owner caught the cost: a panel beat of 25,760.8 where
9
+ // the report said 25,771.4, because a 0.5 s FAMILY mismatch between the
10
+ // pair's members is amplified ~20×/s by P = T_s/(T_s − T_t).
11
+ //
12
+ // The rules this factory owns:
13
+ // • ONE FAMILY: tropical = massLoss·(1 − p_geom/360) with p_geom the
14
+ // movement's own equinox rate (wobble included); sidereal = the D6
15
+ // λ̇ channel; anomalistic = the SECULAR mean-element construction on
16
+ // the chain's apsidal tangent (the injected fn — the same rate family
17
+ // the panel's Prec. cell shows; structure fallback when absent); every
18
+ // value λ̇-corrected coherently (rate form — beats invariant to
19
+ // second order).
20
+ // • ONE BASIS: SI seconds (days = seconds/86400 at the caller).
21
+ // • BEATS FROM THE PAIR: each precession period is computed from the
22
+ // two years THIS factory returns — recomputing a beat from the
23
+ // displayed/served values reproduces it exactly.
24
+ // • Scene MEASUREMENTS validate this family (sub-0.5 s, the report's
25
+ // measured columns); they are instruments, never mixed into beats.
26
+ // • The frozen era clock stays the certified era device (opt-out /
27
+ // era-certification record), not a member of this family.
28
+
29
+ const { createCardinalStructure } = require('../cardinal/one-source-structure.cjs');
30
+ const { createSiderealYearChannel } = require('./sidereal-year-channel.cjs');
31
+
32
+ /**
33
+ * @param {{
34
+ * sampleAt: (year: number) => {e: number, periOfDateDeg: number, equinoxLonJ2000Deg: number},
35
+ * massLossSiderealSecondsAtYearFn: (year: number) => number,
36
+ * apsidalSecularDegPerYrFn?: (year: number) => number,
37
+ * }} opts
38
+ * sampleAt: the one-source movement sampler, calendar-year keyed
39
+ * (createDeepOrbitalHistory build().at wrapped by the caller — series
40
+ * tier where the artifact is available, mode tail beyond).
41
+ * massLossSiderealSecondsAtYearFn: the caller's secular mass-loss
42
+ * sidereal-year law, SI seconds, IAU-anchored at J2000.
43
+ * apsidalSecularDegPerYrFn: the chain's SECULAR apsidal tangent of date
44
+ * (keplerian-chain computeApsidalSecularDegPerYr for Earth — deg/yr,
45
+ * J2000-ecliptic frame). When given, the anomalistic year is the
46
+ * mean-element construction on this smooth rate; when absent, it falls
47
+ * back to the cardinal structure's measured year-over-year interval
48
+ * (which carries the banked series' century-scale ϖ̇ wobble).
49
+ */
50
+ function createYearLengths({ sampleAt, massLossSiderealSecondsAtYearFn, apsidalSecularDegPerYrFn }) {
51
+ if (typeof sampleAt !== 'function' || typeof massLossSiderealSecondsAtYearFn !== 'function') {
52
+ throw new Error('createYearLengths: sampleAt and massLossSiderealSecondsAtYearFn are required');
53
+ }
54
+ const w180 = (/** @type {number} */ d) => ((d + 540) % 360) - 180;
55
+ const chan = createSiderealYearChannel({ massLossSiderealSecondsAtYearFn });
56
+ // The mean tropical year OF DATE, raw (pre-λ̇): the movement's own
57
+ // equinox-rate form — carries the real precession-rate wobble, unlike
58
+ // the smooth secular mean (a wobble-free mean under a wobbling family
59
+ // was one of the duplicated implementations this factory retires).
60
+ const tropicalRawSeconds = (/** @type {number} */ year) => {
61
+ const p = w180(sampleAt(year - 0.5).equinoxLonJ2000Deg
62
+ - sampleAt(year + 0.5).equinoxLonJ2000Deg); // retrograde → positive
63
+ return massLossSiderealSecondsAtYearFn(year) * (1 - p / 360);
64
+ };
65
+ const structure = createCardinalStructure({
66
+ sampleAt,
67
+ tropicalYearSecondsAtYearFn: tropicalRawSeconds,
68
+ });
69
+ const trop = (/** @type {number} */ year) => chan.correctedYearSeconds(year, tropicalRawSeconds(year));
70
+ const sid = (/** @type {number} */ year) => chan.siderealYearSecondsAtYear(year);
71
+ // The anomalistic year OF DATE — the SECULAR (mean-element) construction
72
+ // when the chain tangent is injected: T_anom_raw = T_sid_raw·360/(360 − w)
73
+ // with w = dϖ/dt (deg/yr, J2000-ecliptic, the SAME rate family the panel's
74
+ // Prec. cell shows), then λ̇-corrected coherently. The displayed beat
75
+ // anom/(anom − sid) then equals the chain period 360/w EXACTLY at J2000
76
+ // (the rate-form correction leaves beats invariant), and the J2000 value
77
+ // lands +0.07 s from the published mean-element 365.259636 d. The former
78
+ // structure form (the year-over-year interval on the banked series) read
79
+ // the series' century-scale ϖ̇ wobble — ±0.015″/yr ≈ ±0.35 s, an alias at
80
+ // the series' 250-yr sampling — and sat +0.20 s above the smooth tangent
81
+ // at J2000 (owner-found: the panel beat read 111,491 where the Prec. cell
82
+ // read 111,570). The measured-interval form stays on the cardinal
83
+ // structure for callers that want the wobble.
84
+ const anom = apsidalSecularDegPerYrFn
85
+ ? (/** @type {number} */ year) => chan.correctedYearSeconds(year,
86
+ massLossSiderealSecondsAtYearFn(year) * 360 / (360 - apsidalSecularDegPerYrFn(year)))
87
+ : (/** @type {number} */ year) => chan.correctedYearSeconds(year, structure.anomalisticYearSeconds(year));
88
+
89
+ return Object.freeze({
90
+ /** Mean tropical year of date, SI seconds. @param {number} year */
91
+ tropicalYearSecondsAtYear: trop,
92
+ /** Sidereal year of date, SI seconds. @param {number} year */
93
+ siderealYearSecondsAtYear: sid,
94
+ /** Anomalistic year of date, SI seconds. @param {number} year */
95
+ anomalisticYearSecondsAtYear: anom,
96
+ /** Axial precession period of date (equinox regression beat), years. @param {number} y */
97
+ axialPrecessionYearsAtYear: (y) => { const s = sid(y), t = trop(y); return s / (s - t); },
98
+ /** Perihelion (apsidal-vs-equinox) precession period of date, years. @param {number} y */
99
+ perihelionPrecessionYearsAtYear: (y) => { const a = anom(y), t = trop(y); return a / (a - t); },
100
+ /** Inclination precession period of date, years (hypersensitive: ±1 s ↔ ≈400 yr). @param {number} y */
101
+ inclinationPrecessionYearsAtYear: (y) => { const a = anom(y), s = sid(y); return a / (a - s); },
102
+ /** The per-cardinal layer (D6 rules: year lengths λ̇-corrected; offsets/spreads raw — μs-class/second-order there). */
103
+ cardinal: Object.freeze({
104
+ /** @param {number} y @param {'VE'|'SS'|'AE'|'WS'} type */
105
+ yearLengthSeconds: (y, type) => chan.correctedYearSeconds(y, structure.yearLengthSeconds(y, type)),
106
+ /** @param {number} y @param {'VE'|'SS'|'AE'|'WS'} type */
107
+ eocOffsetSeconds: (y, type) => structure.eocOffsetSeconds(y, type),
108
+ /** @param {number} y */
109
+ spreadSeconds: (y) => structure.spreadSeconds(y),
110
+ }),
111
+ /** The planetary λ̇ ratio (diagnostic; ≡1 at J2000). */
112
+ planetaryRelAtYear: chan.planetaryRelAtYear,
113
+ });
114
+ }
115
+
116
+ module.exports = { createYearLengths };
package/src/index.js CHANGED
@@ -124,7 +124,7 @@ export { integrateAscendingNode } from './planets/asc-node-integrator.cjs';
124
124
  export * as planetOrbitChain from './planets/orbit-chain.cjs';
125
125
  // P5/K4.6c — the engine-D Keplerian chain (pure evaluator + the embedded
126
126
  // governed artifact; the browser flag path consumes exactly these).
127
- export { buildPlanetChainsFromArtifactData, computePlanetElementsAtYear, computeHeliocentricEclipticFromElements, computePoissonArgRad, computeOsculatingElements, solveKeplerRad, ANCHOR_EPOCH_YEAR, ANCHOR_EPOCH_JD } from './planets/keplerian-chain.cjs';
127
+ export { buildPlanetChainsFromArtifactData, computePlanetElementsAtYear, computeHeliocentricEclipticFromElements, computePoissonArgRad, computeOsculatingElements, solveKeplerRad, computeApsidalSecularDegPerYr, ANCHOR_EPOCH_YEAR, ANCHOR_EPOCH_JD } from './planets/keplerian-chain.cjs';
128
128
  export { computeEquatorNodeOriginSFrameDeg, convertNodeSFrameToEquatorOriginDeg } from './planets/inv-plane-frame.cjs';
129
129
  export { createSecularSeriesOverride } from './planets/secular-series.cjs';
130
130
  export { CHAIN_ARTIFACT, CHAIN_ARTIFACT_HASH } from './planets/chain-artifact.js';
@@ -137,6 +137,8 @@ export { DEEP_MODES_ARTIFACT, DEEP_MODES_ARTIFACT_HASH } from './moon/deep-modes
137
137
  export { createDeepOrbitalHistory } from './earth/deep-orbital-history.cjs';
138
138
  // D6: the sidereal-year-of-date channel (banked λ̇ ratio × the caller's mass-loss law)
139
139
  export { createSiderealYearChannel } from './earth/sidereal-year-channel.cjs';
140
+ // S2: THE ONE of-date year-length family (years + precession beats, SI seconds)
141
+ export { createYearLengths } from './earth/year-lengths.cjs';
140
142
  export { createPredictivePrecession, calcPlanetPerihelionLongDeg } from './planets/predict.cjs';
141
143
  // L10 — the composition front door: one law set, N body records. Thin by
142
144
  // design; engines keep their direct call sites (see planets/model.cjs).
@@ -166,7 +168,7 @@ export { createSunLongitudeCorrection } from './sun/longitude-correction.cjs';
166
168
  * even though the body is empty.
167
169
  *
168
170
  * @param {Constants} [constants]
169
- * @param {{ laws?: { eccentricityAt?: (year: number) => number, eccentricityRateAt?: (year: number) => number, perihelionLongitudeDegAt?: (year: number) => number } }} [opts]
171
+ * @param {{ laws?: { eccentricityAt?: (year: number) => number, eccentricityRateAt?: (year: number) => number, perihelionLongitudeDegAt?: (year: number) => number }, secularSeriesArtifact?: any }} [opts]
170
172
  * `laws` — research overrides for Earth's orbit laws (doc 109 §7); absent = the shipped laws, bit-identical. Not part of the hash.
171
173
  * @returns {Model}
172
174
  */
@@ -208,7 +210,13 @@ export const createModel = (constants = GENERATED, opts = {}) => {
208
210
  // constants flow through the entire motion model.
209
211
  // opts.laws — research overrides for Earth's orbit laws (see assembleModel);
210
212
  // absent = the shipped laws, bit-identical. Never part of the hash.
211
- const surfaces = assembleModel(ctx, FITTED, opts.laws ?? {});
213
+ // opts.secularSeriesArtifact — S3 tier unification: the governed
214
+ // secular-series artifact (data/nbody-secular-series.json, parsed).
215
+ // When present the of-date year-length family runs the SERIES tier
216
+ // exactly like the browser; absent (the bare npm package) the mode
217
+ // tail serves every epoch. Never part of the hash: it is the governed
218
+ // artifact, not a parameter.
219
+ const surfaces = assembleModel(ctx, FITTED, opts.laws ?? {}, opts.secularSeriesArtifact ?? null);
212
220
 
213
221
  return {
214
222
  constants: ctx,
package/src/model.js CHANGED
@@ -22,10 +22,10 @@ import * as FL from './planets/fibonacci-laws.cjs';
22
22
  import * as planetOrientation from './planets/orientation.cjs';
23
23
  import { createPhaseMachinery } from './phase/index.cjs';
24
24
  import { createCardinalModel } from './cardinal/index.cjs';
25
- import { createCardinalStructure } from './cardinal/one-source-structure.cjs';
26
- import { createSiderealYearChannel } from './earth/sidereal-year-channel.cjs';
25
+ import { createYearLengths } from './earth/year-lengths.cjs';
27
26
  import { createDeepOrbitalHistory } from './earth/deep-orbital-history.cjs';
28
27
  import { CHAIN_ARTIFACT } from './planets/chain-artifact.js';
28
+ import { buildPlanetChainsFromArtifactData, computeApsidalSecularDegPerYr } from './planets/keplerian-chain.cjs';
29
29
  import { createDeltaTCycles } from './deltat/cycles.cjs';
30
30
  import { createDeepTimeLod } from './deltat/deep-time.cjs';
31
31
  import { createMoonRecessionHistory, createSolarChannelBudget } from './deltat/recession-history.cjs';
@@ -80,7 +80,7 @@ const MOON_ECC_SENSITIVITY_NODE = 1.018;
80
80
  * they used it; the generators refuse to --write under an override.
81
81
  * @returns the assembled surfaces (epoch, earth, lengths, cardinal, moon) — type inferred so ReturnType stays precise
82
82
  */
83
- export function assembleModel(C, F, laws = {}) {
83
+ export function assembleModel(C, F, laws = {}, secularSeriesArtifact = /** @type {any} */ (null)) {
84
84
  // ── Derived constants (constants.js §9 order) ─────────────────────────────
85
85
  const H = C.foundational.holisticyearLength;
86
86
  const meanSolarYearDays = Math.round(C.foundational.inputmeanlengthsolaryearindays * (H / 8)) / (H / 8);
@@ -466,13 +466,40 @@ export function assembleModel(C, F, laws = {}) {
466
466
  // sidereal year of date reduced by the SECULAR α(H(t)) equinox precession
467
467
  // (axial0·H(t)/H0 — the movement's leg-1 convention, NOT the H/13
468
468
  // kinematic identity; the two are a recorded 0.09% relation tension).
469
- const cardinalStructureM = (() => {
469
+ // THE ONE of-date year-length family (owner: "move to 1 implementation")
470
+ // — createYearLengths owns tropical (equinox-rate mean, wobble included),
471
+ // sidereal (the D6 λ̇ channel), anomalistic (the cardinal structure on
472
+ // the SAME mean), all λ̇-corrected coherently, SI seconds, and the beats
473
+ // of that pair. The internal laws, the kinematic beat constructions
474
+ // (axialPrecessionYears*), the scene engine and the frozen era clock
475
+ // stay on their own families as before.
476
+ // S3 tier unification: when the caller injects the governed secular-
477
+ // series artifact (createModel opts.secularSeriesArtifact — the API/Node
478
+ // path; the npm package alone has no 8 MB series), the movement runs the
479
+ // SERIES tier exactly like the browser — killing the mode-vs-series
480
+ // value split (measured: 6 s on the anomalistic year at J2000).
481
+ const yearLengthsM = (() => {
470
482
  const AEarth = /** @type {any} */ (CHAIN_ARTIFACT).j2000AnchorElements.earth;
471
- const axial0 = meanSiderealYearDays / (meanSiderealYearDays - meanSolarYearDays);
483
+ // The ψ̇ anchor: the CERTIFIED of-date laws at 2000 — identical to the
484
+ // engine/browser (computeSiderealYearDaysDirect / computeSolarYearDays
485
+ // Direct twins → 25,771.4). The FOUNDATIONAL mean pair used before
486
+ // (meanSiderealYearDays/meanSolarYearDays → 25,796) anchored this
487
+ // movement's realized precession 25 yr off the certified value — the
488
+ // hidden split behind the API's 365.242204 tropical mean (found in the
489
+ // owner's one-implementation drive).
490
+ const sidLaw2000 = evalYearFourier(2000, siderealYearDaysBase(2000), F.SIDEREAL_YEAR_HARMONICS);
491
+ const solLaw2000 = evalYearFourier(2000, tropicalYearDaysBase(2000), F.TROPICAL_YEAR_HARMONICS);
492
+ const axial0 = sidLaw2000 / (sidLaw2000 - solLaw2000);
472
493
  const H0 = /** @type {number} */ (deepLod.hAtAge(0));
494
+ const seriesArt = /** @type {any} */ (secularSeriesArtifact);
495
+ const sb = seriesArt && seriesArt.bodies && seriesArt.bodies.earth;
473
496
  const hist = createDeepOrbitalHistory({
474
497
  zModes: DEEP_MODES_ARTIFACT.earthZ,
475
498
  zetaModes: DEEP_MODES_ARTIFACT.earthZeta,
499
+ ...(sb ? {
500
+ zetaSeries: { t0Yr: seriesArt.t0Yr, stepYr: sb.stepYr, q: sb.zetaQ, p: sb.zetaP },
501
+ zSeries: { t0Yr: seriesArt.t0Yr, stepYr: sb.stepYr, q: sb.zQ, p: sb.zP },
502
+ } : {}),
476
503
  anchorE: AEarth.e,
477
504
  anchorPeriEclipticDeg: AEarth.lonPeriEclipticDeg,
478
505
  anchorInclEclipticDeg: AEarth.inclEclipticDeg,
@@ -484,36 +511,37 @@ export function assembleModel(C, F, laws = {}) {
484
511
  return axial0 * (h === null ? 1 : h / H0);
485
512
  },
486
513
  });
487
- // grown-grid sampler, tier-filling (the measured rebuild-storm fix)
488
- let sampler = /** @type {any} */ (null), rangeYr = 0;
514
+ // PER-TIER ROUTING (the anomalistic-contamination fix): one sampler PER
515
+ // grid tier, built on first entry and KEPT — a query always reads the
516
+ // tier its own span selects. The former single grown sampler replaced
517
+ // the 100-yr grid with the 1000/5000-yr one after any deep-time probe,
518
+ // and the year-length rates (±0.5-yr central differences through the
519
+ // grid) then returned grid-segment averages instead of local rates
520
+ // (anomalistic of date +2.63 s / +19 s, visit-order dependent).
521
+ const samplers = /** @type {Map<number|'deep', any>} */ (new Map());
522
+ let deepRangeYr = 0;
489
523
  const gridStep = (/** @type {number} */ n) => (n <= 50000 ? 100 : n <= 2000000 ? 1000 : 5000);
490
524
  const tierSpan = (/** @type {number} */ n) => (n <= 50000 ? 50000 : n <= 2000000 ? 2000000 : Math.ceil(n * 1.25 / 5000) * 5000);
491
525
  const sampleAt = (/** @type {number} */ year) => {
492
526
  const t = year - 2000, need = Math.max(20000, Math.abs(t) * 1.25);
493
- if (!sampler || need > rangeYr) { rangeYr = tierSpan(need); sampler = hist.build(rangeYr, -rangeYr, gridStep(rangeYr)); }
494
- return sampler.at(t);
495
- };
496
- const tropicalYearSecondsAtYearFn = (/** @type {number} */ year) => {
497
- const tMa = (startmodelYear - year) / 1e6;
498
- const h = deepLod.hAtAge(tMa);
499
- return deepLod.siderealYearSecondsAtAge(tMa) * (1 - 1 / (axial0 * (h === null ? 1 : h / H0)));
527
+ const span = tierSpan(need);
528
+ const key = span > 2000000 ? /** @type {'deep'} */ ('deep') : span;
529
+ if (!samplers.has(key) || (key === 'deep' && span > deepRangeYr)) {
530
+ if (key === 'deep') deepRangeYr = span;
531
+ samplers.set(key, hist.build(span, -span, gridStep(span)));
532
+ }
533
+ return samplers.get(key).at(t);
500
534
  };
501
- return createCardinalStructure({ sampleAt, tropicalYearSecondsAtYearFn });
535
+ // The anomalistic rides the chain's SECULAR apsidal tangent (the same
536
+ // rate family the panel's Prec. cell shows) — ONE helper, keplerian-chain.
537
+ const kcChains = buildPlanetChainsFromArtifactData(CHAIN_ARTIFACT);
538
+ return createYearLengths({
539
+ sampleAt,
540
+ massLossSiderealSecondsAtYearFn: (year) => deepLod.siderealYearSecondsAtAge(yearToTMa(year)),
541
+ apsidalSecularDegPerYrFn: (year) => computeApsidalSecularDegPerYr(year, kcChains.earth, kcChains),
542
+ });
502
543
  })();
503
544
 
504
- // D6: the sidereal-year-of-date channel — the banked λ̇ ratio (planetary
505
- // epoch drift, embedded artifact) over the model's own mass-loss law.
506
- // Surface-layer only: the internal laws, the beat constructions
507
- // (axialPrecessionYears* — invariant by design), the scene engine and
508
- // the frozen era clock all stay on the uncorrected family; the model's
509
- // OF-DATE year lengths (epoch.siderealYearSecondsAtYear, the cardinal
510
- // structure's year lengths) gain the drift so the API serves accurate
511
- // values. EoC offsets and spreads keep the raw form: the correction is
512
- // μs-class on an offset and cancels to second order in a spread.
513
- const siderealChannelM = createSiderealYearChannel({
514
- massLossSiderealSecondsAtYearFn: (year) => deepLod.siderealYearSecondsAtAge(yearToTMa(year)),
515
- });
516
-
517
545
  /** Tropical year: mean of the four cardinal intervals. @param {number} year @returns {number} */
518
546
  const tropicalYearDays = (year) => cardinalM.computeTropicalYearLength(year);
519
547
  /** @param {number} year @returns {number} */
@@ -1145,7 +1173,7 @@ export function assembleModel(C, F, laws = {}) {
1145
1173
  moonDistanceKmAtYear: /** @param {number} year @returns {number} */ (year) => moonDistanceMetresAtAge(yearToTMa(year)) / 1000,
1146
1174
  // D6: OF-DATE — mass-loss law / the banked planetary λ̇ ratio
1147
1175
  // (identical at J2000 where the ratio ≡ 1 by construction)
1148
- siderealYearSecondsAtYear: /** @param {number} year @returns {number} */ (year) => siderealChannelM.siderealYearSecondsAtYear(year),
1176
+ siderealYearSecondsAtYear: /** @param {number} year @returns {number} */ (year) => yearLengthsM.siderealYearSecondsAtYear(year),
1149
1177
  deltaTSecondsAtYear: deltaTSeconds,
1150
1178
  cyclesBetween,
1151
1179
  // The DYNAMICAL axial precession period (the tweakpane identity):
@@ -1191,11 +1219,14 @@ export function assembleModel(C, F, laws = {}) {
1191
1219
  // D6: year LENGTHS gain the λ̇ drift coherently (rate-form
1192
1220
  // correction — beats stay invariant); offsets/spreads keep the raw
1193
1221
  // form (μs-class / second-order there).
1194
- yearLengthSeconds: /** @param {number} year @param {'VE'|'SS'|'AE'|'WS'} type @returns {number} */ (year, type) => siderealChannelM.correctedYearSeconds(year, cardinalStructureM.yearLengthSeconds(year, type)),
1195
- eocOffsetSeconds: /** @param {number} year @param {'VE'|'SS'|'AE'|'WS'} type @returns {number} */ (year, type) => cardinalStructureM.eocOffsetSeconds(year, type),
1196
- spreadSeconds: /** @param {number} year */ (year) => cardinalStructureM.spreadSeconds(year),
1197
- anomalisticYearSeconds: /** @param {number} year @returns {number} */ (year) => siderealChannelM.correctedYearSeconds(year, cardinalStructureM.anomalisticYearSeconds(year)),
1222
+ yearLengthSeconds: /** @param {number} year @param {'VE'|'SS'|'AE'|'WS'} type @returns {number} */ (year, type) => yearLengthsM.cardinal.yearLengthSeconds(year, type),
1223
+ eocOffsetSeconds: /** @param {number} year @param {'VE'|'SS'|'AE'|'WS'} type @returns {number} */ (year, type) => yearLengthsM.cardinal.eocOffsetSeconds(year, type),
1224
+ spreadSeconds: /** @param {number} year */ (year) => yearLengthsM.cardinal.spreadSeconds(year),
1225
+ anomalisticYearSeconds: /** @param {number} year @returns {number} */ (year) => yearLengthsM.anomalisticYearSecondsAtYear(year),
1198
1226
  }),
1227
+ // THE ONE of-date year-length family + its beats (S2; SI seconds) —
1228
+ // the single surface the panel, charts, API and website consume.
1229
+ yearLengths: yearLengthsM,
1199
1230
  moon: Object.freeze({
1200
1231
  distanceKmAtYear: /** @param {number} year @returns {number} */ (year) => moonDistanceMetresAtAge(yearToTMa(year)) / 1000,
1201
1232
  siderealMonthDaysAtYear: moonSiderealMonthDaysAt,
@@ -14,8 +14,8 @@
14
14
  */
15
15
  'use strict';
16
16
 
17
- const DEEP_MODES_ARTIFACT_HASH = "b74be2d9b00a3460";
17
+ const DEEP_MODES_ARTIFACT_HASH = "77e0baf779e85de5";
18
18
 
19
- const DEEP_MODES_ARTIFACT = Object.freeze({"meta":{"integrator":"wh","order":2,"dtDays":2,"spanYears":20000000,"sampleDays":20000,"gr":true,"seed":"JPL Horizons J2000 heliocentric state vectors (tools/explore/j2000-state.mjs, the one home)","masses":"DE440 mass ratios (astro-reference physicalConstants)","runCommand":"node tools/explore/lattice-long-window-test.mjs years=20000000 integrator=wh dt=2 order=2 gr=1 frame=both sample=20000","dumpFile":"tools/explore/lattice-long-window-ecliptic-20000000-gr.local.json (untracked, 337 MB)","dumpSha256":"c6f37b93f8f53c5b72d9e2935085145820d384ed61ecdf69f3831895d5f0a516","conservationMaxDE":1.3523274883097007e-8,"decimation":4,"naffTerms":18,"naffZetaTerms":16,"naffZetaTermsEra":8,"frame":"ecliptic-J2000 (z-modes for the lunar-chain e; ζ-modes for the Stage-C obliquity hybrid — the invariable-frame ζ table remains unbanked, no consumer)","laskarRef":"Laskar, J. et al. (2004), A&A 428, 261–285, Table 3 (theory reference labels)"},"verdict":{"strongestBeatPeriodKyr":409.398962153882,"strongestBeatArcsecPerYr":3.165616232101899,"la2004BeatPeriodKyr":405.6972922210049,"rockMetronomeKyr":405.6,"companion124Kyr":123.63439229002236,"companion95Kyr":94.95801992141148,"earthLeadingModesArcsecPerYr":[4.257339363798321,7.422955595900221,17.905475677851488,17.35600814229943],"topBeatLines":[{"periodKyr":409.398962153882,"productAmp":0.0003189871275662614},{"periodKyr":94.95801992141148,"productAmp":0.00023593726318903166},{"periodKyr":123.63439229002236,"productAmp":0.0002021269449318684},{"periodKyr":98.94135212634195,"productAmp":0.0001820123713850866},{"periodKyr":130.4734867701679,"productAmp":0.00015592960633097004},{"periodKyr":2358.6470831218417,"productAmp":0.00011533256795834209},{"periodKyr":974.251698194696,"productAmp":0.00007391281237249426},{"periodKyr":706.1267630803258,"productAmp":0.00006332094707822819}],"note":"g5 matches La2004 to 0.0002 ″/yr; the beat gap vs 405.6 is g2 (chaotic-diffusion window sensitivity + omitted separate-Moon/asteroid terms) — the anatomy is the plan’s Stage-B record."},"earthZ":[{"omegaRadPerYr":0.000020640163686955943,"re":0.01663782532735386,"im":0.009773828910268845},{"omegaRadPerYr":0.00003598750427161015,"re":-0.0155511555977695,"im":-0.005606883657279738},{"omegaRadPerYr":0.00008680819575396443,"re":-0.011017310146969267,"im":0.005302931248387234},{"omegaRadPerYr":0.00008414430196835267,"re":0.005902460235142885,"im":-0.0073575521441138925},{"omegaRadPerYr":0.000027089406032463197,"re":0.0003820712762735637,"im":0.00381132243985138},{"omegaRadPerYr":0.00008287265957255809,"re":0.0018740756883102302,"im":0.0007570047078217853},{"omegaRadPerYr":0.00008556055947193001,"re":0.00065046714460136,"im":0.001636722269192129},{"omegaRadPerYr":0.00003343872861356042,"re":-0.0015906877043739744,"im":0.0008131867314299489},{"omegaRadPerYr":0.00008733249835491452,"re":0.0019695845162428804,"im":0.0007638996859228755},{"omegaRadPerYr":0.00008624160326238742,"re":-0.0007912287558015328,"im":0.0008454083667608703},{"omegaRadPerYr":0.00013693637603446235,"re":-0.00091728504412424,"im":0.0011947455784994275},{"omegaRadPerYr":0.00008149221104720623,"re":-0.0002919323858022318,"im":0.0013378769276789224},{"omegaRadPerYr":0.000035340366616489944,"re":-0.0014017009332458236,"im":-0.0005418283702703829},{"omegaRadPerYr":0.00003411910644328693,"re":0.0009644062512081837,"im":-0.0009278208477004621},{"omegaRadPerYr":0.000026443547751027787,"re":-0.0003484265086069058,"im":-0.0019049634588757702},{"omegaRadPerYr":0.00008946536777652535,"re":-0.0010363626781434278,"im":-0.00021237189770655706},{"omegaRadPerYr":0.000027681653760243513,"re":0.00026309559235420505,"im":0.0013827244513428105},{"omegaRadPerYr":0.00003665339440166644,"re":0.001341581161662452,"im":0.00035305205249495507}],"earthZeta":[{"omegaRadPerYr":-2.96732779276946e-14,"re":-0.004153530797421736,"im":0.013136287139943213},{"omegaRadPerYr":-0.00009139185627510659,"re":-0.0039341668744113665,"im":-0.007077440344808186},{"omegaRadPerYr":-0.000027083329194200705,"re":0.0041703974742109,"im":0.0016342020564862083},{"omegaRadPerYr":-0.00008606223132085272,"re":0.0015441443378585364,"im":-0.0036871518361985415},{"omegaRadPerYr":-0.00003413935334637193,"re":-0.002956817542124509,"im":0.0024359440436811054},{"omegaRadPerYr":-0.00008872604497912732,"re":-0.00013216158559522037,"im":-0.002797304033559708},{"omegaRadPerYr":-0.00003326020694677573,"re":0.0008627085184454156,"im":-0.0008468691172706413},{"omegaRadPerYr":-0.00003470927143831441,"re":0.0013226438289662852,"im":-0.0011121945465339342},{"omegaRadPerYr":-0.00009406049953471362,"re":0.001297329508193755,"im":0.0008926331980509192},{"omegaRadPerYr":-0.00002648259433928881,"re":0.001695647505347929,"im":0.0006707872920285527},{"omegaRadPerYr":-0.00012773804995598164,"re":-0.0008156188441322624,"im":0.0010583300732716742},{"omegaRadPerYr":-0.00003267570575865712,"re":0.00028878599128559593,"im":-0.0004498471691632459},{"omegaRadPerYr":-0.000033725843136033775,"re":0.0012152922715564112,"im":-0.0007872735440399818},{"omegaRadPerYr":-0.000014507526525427572,"re":-0.00064166716018201,"im":0.0005786259131500737},{"omegaRadPerYr":-0.00009265988888533535,"re":-0.0005654435501795496,"im":0.00014913577755089046},{"omegaRadPerYr":-0.000003353112962211696,"re":0.0006060116994915085,"im":0.00025189133351366343}],"earthZetaEra":[{"omegaRadPerYr":-2.96732779276946e-14,"re":-0.0041400895842324354,"im":0.01314865914923023},{"omegaRadPerYr":-0.00009139185627510659,"re":-0.0038874970989988566,"im":-0.0070425256250290546},{"omegaRadPerYr":-0.000027083329194200705,"re":0.004075700185805294,"im":0.0016137774467260707},{"omegaRadPerYr":-0.00008606223132085272,"re":0.0015261120191598105,"im":-0.0036992031256430353},{"omegaRadPerYr":-0.00003413935334637193,"re":-0.0031492966403078486,"im":0.002570649693650614},{"omegaRadPerYr":-0.00008872604497912732,"re":-0.00014686941549255626,"im":-0.0027917154781614112},{"omegaRadPerYr":-0.00003326020694677573,"re":0.0005693304183459907,"im":-0.0006693278314130071},{"omegaRadPerYr":-0.00003470927143831441,"re":0.0012956912361530007,"im":-0.0010932966486614268}],"planetLeadingZetaArcsecPerYr":{"mercury":-5.584671749809404,"venus":-18.85097569494133,"earth":-18.850923527147337,"mars":-17.751725857871005,"jupiter":-26.347853210145164,"saturn":-26.347853212457302,"uranus":-2.9924047231807274,"neptune":-0.6916262484067962},"planetZ":{"mercury":[{"omegaRadPerYr":0.000027088733160802267,"re":0.038554966501286404,"im":0.1727505978367461},{"omegaRadPerYr":0.000026446613295257932,"re":-0.010689263937359552,"im":-0.08370377183713058},{"omegaRadPerYr":0.000027685440675900762,"re":0.007040805265161438,"im":0.049564013913441826},{"omegaRadPerYr":0.000020610146653453393,"re":0.03473305391609935,"im":0.020645571246406855},{"omegaRadPerYr":0.00003599014477056645,"re":0.028071559587237418,"im":0.009017976536096864},{"omegaRadPerYr":0.000025931079389822773,"re":0.0006673595753568552,"im":0.013440308457527918},{"omegaRadPerYr":0.000021256209886571103,"re":-0.01061355038913571,"im":-0.005651963877376075},{"omegaRadPerYr":0.000026805792135081397,"re":-0.0064797099651241535,"im":0.02893559918270244},{"omegaRadPerYr":0.000027257457718059066,"re":-0.03066916148662377,"im":-0.018290205146927176},{"omegaRadPerYr":0.000028969670955476095,"re":-0.0058414631460608135,"im":0.014525578239651726},{"omegaRadPerYr":0.00003343188516973571,"re":-0.0066368210505613,"im":0.004311170079365298},{"omegaRadPerYr":0.000029760458249145125,"re":0.00038349793623656414,"im":-0.005117333203138849},{"omegaRadPerYr":0.00002456766704076076,"re":0.0035392264567207857,"im":0.0005051013451431339},{"omegaRadPerYr":0.000019991212541270322,"re":0.012573071792417902,"im":0.0033672381607611802},{"omegaRadPerYr":0.000028102776784170254,"re":-0.0026611123037689303,"im":-0.004161508829553553},{"omegaRadPerYr":0.000025316098156759535,"re":-0.0036961925617805323,"im":-0.011919129971047493},{"omegaRadPerYr":0.00001944416734718619,"re":-0.004682579265792748,"im":-0.0029376312421693887}],"venus":[{"omegaRadPerYr":0.00003598746802083836,"re":-0.019917645238981145,"im":-0.007203449498496368},{"omegaRadPerYr":0.000020639807964880957,"re":0.01724990015853421,"im":0.010128856423913347},{"omegaRadPerYr":0.0000868084859450101,"re":0.011385381967426108,"im":-0.005485360733036005},{"omegaRadPerYr":0.00008414512031179873,"re":-0.007168683403944619,"im":0.009071050912169592},{"omegaRadPerYr":0.000027088861443152294,"re":0.0006446142441107929,"im":0.0059617954106088444},{"omegaRadPerYr":0.00008287257542610035,"re":-0.0023188275640765883,"im":-0.0009839087840311964},{"omegaRadPerYr":0.000033436375813747184,"re":-0.002154792396441398,"im":0.001112188275813168},{"omegaRadPerYr":0.000081488977464128,"re":0.00036395397611943764,"im":-0.0019050781250368213},{"omegaRadPerYr":0.00002644326324301371,"re":-0.0005148714980188602,"im":-0.002973034193513397},{"omegaRadPerYr":0.00008556922267192882,"re":-0.0006266111741876529,"im":-0.001661876007329785},{"omegaRadPerYr":0.00003411559444877156,"re":0.0013730402503682223,"im":-0.0012862094296301582},{"omegaRadPerYr":0.00003533902718172892,"re":-0.001786357009303111,"im":-0.0006921712694162124},{"omegaRadPerYr":0.00008733180735423732,"re":-0.002049920654948898,"im":-0.000804358531558803},{"omegaRadPerYr":0.00002768396622845065,"re":0.0004411337254999352,"im":0.0021567914310587737},{"omegaRadPerYr":0.00008624587484635965,"re":0.0008212083413813137,"im":-0.0009325032257794572},{"omegaRadPerYr":0.000036655185163182225,"re":0.0017170372914915375,"im":0.00042195897844381436},{"omegaRadPerYr":0.00008466352886809023,"re":0.001200524882246627,"im":-0.00003729782906451111},{"omegaRadPerYr":0.00009212081301273461,"re":-0.0006471917490152735,"im":-0.0003023265277441688}],"mars":[{"omegaRadPerYr":0.00008680660990676236,"re":0.041588839709000305,"im":-0.019010209519109467},{"omegaRadPerYr":0.00008414901270258022,"re":0.024284595383848816,"im":-0.027766271128859106},{"omegaRadPerYr":0.000020640532890935506,"re":0.017551732546305442,"im":0.010391378976271091},{"omegaRadPerYr":0.0000814847328758196,"re":-0.004638989156327695,"im":0.016430526215851005},{"omegaRadPerYr":0.0000855149167948114,"re":-0.005381816566332503,"im":-0.005682765251287963},{"omegaRadPerYr":0.00008946889907828666,"re":0.01274118750142537,"im":0.00016396598236474114},{"omegaRadPerYr":0.00008286334538732459,"re":0.009150704739866481,"im":0.004791658700294397},{"omegaRadPerYr":0.00013693599618390932,"re":-0.004310548188934087,"im":0.005501879382145973},{"omegaRadPerYr":0.00008621795825707764,"re":0.004507212396715781,"im":-0.0024547160948511903},{"omegaRadPerYr":0.00008734038452048681,"re":-0.007195199191029587,"im":-0.0015978713248922388},{"omegaRadPerYr":0.00009212649492467835,"re":0.00393347099238989,"im":0.0018570076120292159},{"omegaRadPerYr":0.00008472990858172786,"re":-0.003416962020055711,"im":0.002216504704749594},{"omegaRadPerYr":0.00003598754576689349,"re":-0.0028253940436069125,"im":-0.0010400588120194618},{"omegaRadPerYr":0.00008803070043594615,"re":-0.0009434236236064627,"im":0.002228421619393694},{"omegaRadPerYr":0.00008318845518322257,"re":-0.0015787960317319783,"im":0.004159017610410285},{"omegaRadPerYr":0.00008897429124977304,"re":0.002597049733099818,"im":-0.0013482412898948083},{"omegaRadPerYr":0.00009001024374007374,"re":-0.001477076890332753,"im":-0.0019933756274166333},{"omegaRadPerYr":0.00008580148063042247,"re":0.00136686225076176,"im":-0.006796508909834152}],"jupiter":[{"omegaRadPerYr":0.00002064063194606469,"re":0.038027887950313,"im":0.022474363953131644},{"omegaRadPerYr":0.00013693627541780867,"re":0.00961757587459229,"im":-0.012409657149112449},{"omegaRadPerYr":0.000014970700404857915,"re":-0.0009275111971142285,"im":0.0015646736119650463},{"omegaRadPerYr":0.00025323191888980716,"re":0.00040581522062427006,"im":0.00040465996971942464},{"omegaRadPerYr":0.00013126639803970536,"re":-0.00015613898300137084,"im":-0.00012184448481360134},{"omegaRadPerYr":0.00014260602548996456,"re":-0.0001532517115428931,"im":-0.00011812283598784673},{"omegaRadPerYr":0.00014000315648450898,"re":0.00010295994371171851,"im":0.00006503732283672366},{"omegaRadPerYr":0.00013386857941921013,"re":0.0000795202331644931,"im":0.00007557530071176517},{"omegaRadPerYr":0.0012496807486413603,"re":1.1621622719099352e-9,"im":6.7174634931051985e-9}],"saturn":[{"omegaRadPerYr":0.00013693627546280002,"re":-0.029518225084472584,"im":0.038113005132400186},{"omegaRadPerYr":0.00002064063199602329,"re":0.028361626856528554,"im":0.0167616808259466},{"omegaRadPerYr":0.00025323191900292967,"re":-0.0013585556019478082,"im":-0.0013545757676553468},{"omegaRadPerYr":0.000014970698829351026,"re":-0.0007731745666288256,"im":0.0013034462145198893},{"omegaRadPerYr":0.00013126638941724563,"re":0.0004715148563234512,"im":0.00036632972072514166},{"omegaRadPerYr":0.00014260601923347466,"re":0.00046551529048782954,"im":0.00036046930677585833},{"omegaRadPerYr":0.0012496807537610505,"re":-2.3542352327472235e-8,"im":-4.5900540386404513e-8}],"uranus":[{"omegaRadPerYr":0.00002064063199063173,"re":-0.03238301287432618,"im":-0.019137894895195285},{"omegaRadPerYr":0.000014970704298924036,"re":-0.014798055142765314,"im":0.024976197504284352},{"omegaRadPerYr":0.0000032644664369115612,"re":0.00045077152247696467,"im":0.001605022476008239},{"omegaRadPerYr":0.0001369362753754483,"re":0.0009472830507642751,"im":-0.001223390657620003},{"omegaRadPerYr":0.000009291041541723274,"re":-0.000401604567008085,"im":-0.00023407110718702293},{"omegaRadPerYr":0.000026312428052549096,"re":0.00022650820465562523,"im":-0.00037682859262741367},{"omegaRadPerYr":0.000014377141359915758,"re":0.00005796882538246377,"im":-0.00005894446294215087},{"omegaRadPerYr":0.000630109781112873,"re":-1.1290163577223926e-7,"im":2.0988102648394414e-7}],"neptune":[{"omegaRadPerYr":0.000003264142190007733,"re":0.0024666135030842894,"im":0.008775587400613344},{"omegaRadPerYr":0.000014970654948815882,"re":0.0018887474744340353,"im":-0.003189505850322774},{"omegaRadPerYr":0.000020640631485813794,"re":0.0016295881460619967,"im":0.000961683644938773},{"omegaRadPerYr":-0.00011593901176290913,"re":7.916016803955656e-8,"im":-4.628159935265509e-8}]},"planetZeta":{"mercury":[{"omegaRadPerYr":-0.000027075252688135303,"re":0.034507972993812516,"im":0.012900176231939679},{"omegaRadPerYr":-0.00003413318913085858,"re":0.026012496159635225,"im":-0.02172585587210577},{"omegaRadPerYr":-0.000034712745479739736,"re":-0.013361480308373218,"im":0.010339635523117514},{"omegaRadPerYr":-0.000026480023377443255,"re":0.015942801197796008,"im":0.006759133845456251},{"omegaRadPerYr":-0.000033349745332060077,"re":-0.006620777212650142,"im":0.0054348828656087065},{"omegaRadPerYr":-3.4774826899281137e-12,"re":-0.004031843322538729,"im":0.013058242876892494},{"omegaRadPerYr":-0.00003279123480567384,"re":-0.004724355429712886,"im":0.003800256639249284},{"omegaRadPerYr":-0.00003377235640514452,"re":-0.008107472210747315,"im":0.0045893835953134295},{"omegaRadPerYr":-0.000035937954775865105,"re":-0.0018354952618832169,"im":0.0018360466306206551},{"omegaRadPerYr":-0.000025205876180773693,"re":0.004190579783375374,"im":0.006219803384495396},{"omegaRadPerYr":-0.00003522619481807185,"re":0.003451363183622276,"im":-0.003429703469467511},{"omegaRadPerYr":-0.00002460893757859952,"re":0.0015514177736682254,"im":-0.003343482557081787},{"omegaRadPerYr":-0.00003220030754588825,"re":-0.00481979481891049,"im":0.0014575886708736402},{"omegaRadPerYr":-0.00002746901166902902,"re":0.005026156933258758,"im":-0.0018696330318260762},{"omegaRadPerYr":-0.00002835376181244059,"re":-0.0077883135458340705,"im":-0.0029043854836422276},{"omegaRadPerYr":-0.000025778167151796015,"re":0.002183373273758006,"im":-0.0013049039003242714}],"venus":[{"omegaRadPerYr":-4.578985061220862e-13,"re":-0.0041318092115248915,"im":0.013146591103484302},{"omegaRadPerYr":-0.00009139210919170899,"re":0.004302178836721753,"im":0.007729432797533917},{"omegaRadPerYr":-0.000027083143494426836,"re":0.005615914883393586,"im":0.0022045304155318157},{"omegaRadPerYr":-0.00008606237120253334,"re":-0.0022301115197853986,"im":0.005277916215858448},{"omegaRadPerYr":-0.000034139510627771396,"re":-0.0035164626872607437,"im":0.00288380150424367},{"omegaRadPerYr":-0.00008872538434048303,"re":0.00010168448954934741,"im":0.0029786510659490875},{"omegaRadPerYr":-0.00003324887744727451,"re":0.0011458539946671447,"im":-0.0010836656563101943},{"omegaRadPerYr":-0.0000347088217349638,"re":0.0015412845408843434,"im":-0.0013035938571345094},{"omegaRadPerYr":-0.00002648275561909222,"re":0.002272374764530366,"im":0.0009038443573824938},{"omegaRadPerYr":-0.00009406063896444446,"re":-0.0015058667473360895,"im":-0.0010559368261704855},{"omegaRadPerYr":-0.00003265795309537878,"re":0.0004897093091811535,"im":-0.0005977673084711258},{"omegaRadPerYr":-0.00003371991570770181,"re":0.0014813619869267168,"im":-0.0009775172821254196},{"omegaRadPerYr":-0.00001450751454356847,"re":-0.0007085957618050013,"im":0.0006422400789447052},{"omegaRadPerYr":-0.00009266133914077402,"re":0.0006246261932307497,"im":-0.00015563722141594352},{"omegaRadPerYr":-0.00002832512344480946,"re":-0.0016020043674368754,"im":-0.0006543125422530463},{"omegaRadPerYr":-0.000032150398362331764,"re":0.0008213779545534132,"im":-0.00030630714194617055}],"mars":[{"omegaRadPerYr":-0.00008606279559201778,"re":0.013639492653874496,"im":-0.032457232973951027},{"omegaRadPerYr":-0.0000913904801359063,"re":0.006431371303559773,"im":0.012372958514356934},{"omegaRadPerYr":7.178719078520604e-13,"re":-0.004147560114123825,"im":0.013135204416671533},{"omegaRadPerYr":-0.00008873516698506461,"re":0.0007137105416783799,"im":0.006090775744627018},{"omegaRadPerYr":-0.00008339835200494959,"re":-0.003815582972326408,"im":0.0037214536526753096},{"omegaRadPerYr":-0.0001277379991822036,"re":-0.0027624995312247875,"im":0.0036599601715857025},{"omegaRadPerYr":-0.00008541733709470576,"re":-0.0012596111030881874,"im":0.0026696117573915775},{"omegaRadPerYr":-0.00008665241478930601,"re":0.00015381271816718205,"im":-0.002394293743814612},{"omegaRadPerYr":-0.00008742542996622243,"re":0.0021694962608554704,"im":0.0002873054579435969},{"omegaRadPerYr":-0.00008482959856635888,"re":-0.0019032664140627602,"im":0.0006755353778986731},{"omegaRadPerYr":-0.00009262432229213287,"re":0.0009830959910415024,"im":0.000005860027199403832},{"omegaRadPerYr":-0.00009198101017707057,"re":-0.00019235240131212957,"im":0.0014912372926541026},{"omegaRadPerYr":-0.00009089974343496672,"re":-0.0006620186303747407,"im":0.00031229740047054855},{"omegaRadPerYr":-0.0000898375941694848,"re":0.0009987528296841592,"im":0.0002577758459970291},{"omegaRadPerYr":-0.00008284288338965252,"re":0.0008863277761868815,"im":0.0001976559175664661},{"omegaRadPerYr":-0.000027084012180608065,"re":0.000846135062449316,"im":0.00035738260688301986}],"jupiter":[{"omegaRadPerYr":3.9291145391106677e-13,"re":-0.004161120059549454,"im":0.013131018351038495},{"omegaRadPerYr":-0.0001277379970414418,"re":0.0019098504208538347,"im":-0.0025056495518566172},{"omegaRadPerYr":-0.0000033531105108549395,"re":0.0005277726541164145,"im":0.0002328879502999891},{"omegaRadPerYr":-0.0000145076090184421,"re":-0.0003701997125281074,"im":0.00030787349749028693},{"omegaRadPerYr":-0.0001308029644289767,"re":-0.0000174673874581557,"im":-0.000016336474020498706},{"omegaRadPerYr":-0.00001144215466402018,"re":0.000012451368971721139,"im":0.000012698732278028531},{"omegaRadPerYr":0.0004016105480773955,"re":0.000008815884710045517,"im":-0.000011207394245754605},{"omegaRadPerYr":-0.000008827180221146707,"re":0.000007837212555476044,"im":0.000007802551449626735},{"omegaRadPerYr":-0.00002708207208088882,"re":-0.000008776015189699537,"im":-0.0000034886111726939536},{"omegaRadPerYr":-0.000020176735636704016,"re":0.000006169354705642575,"im":0.000007522482594250937},{"omegaRadPerYr":0.0002853149108189124,"re":0.0000072930805865087815,"im":0.000004377991245001836},{"omegaRadPerYr":-0.00024403364274997374,"re":0.000006275985154445326,"im":0.0000036469498914137506},{"omegaRadPerYr":0.0001690192650191104,"re":-0.0000025183143359112966,"im":0.000005677867571227171},{"omegaRadPerYr":-0.0000027587171161645304,"re":0.000005889365753506005,"im":8.458656285810425e-7},{"omegaRadPerYr":-0.00003414062275168699,"re":0.0000046613972072596195,"im":-0.000003792908608250324},{"omegaRadPerYr":-0.00013340810623493888,"re":0.0000036190653824345688,"im":0.0000026409978837268197}],"saturn":[{"omegaRadPerYr":3.4029253487432276e-13,"re":-0.004160793253251316,"im":0.0131303432564967},{"omegaRadPerYr":-0.00012773799705265138,"re":-0.004757582950277652,"im":0.006241816622455856},{"omegaRadPerYr":-0.0000033531044772245537,"re":0.0005082407388466556,"im":0.0002243634869271189},{"omegaRadPerYr":-0.000014507612210842444,"re":-0.00030032921754301876,"im":0.00024986288121111824},{"omegaRadPerYr":-0.00013080300998151716,"re":0.000044611089261225124,"im":0.000041699286021970765},{"omegaRadPerYr":0.0004016105481817557,"re":-0.000021896079374831962,"im":0.00002783952421618892},{"omegaRadPerYr":0.0002853149035300216,"re":-0.000016969319300307734,"im":-0.000010210429781470916},{"omegaRadPerYr":0.00016901926503904146,"re":0.000006355287457503374,"im":-0.000014465630447413089},{"omegaRadPerYr":-0.000027082413008212254,"re":-0.000011467951961457061,"im":-0.0000045385131674442305},{"omegaRadPerYr":-0.00008606268434458911,"re":-0.000004984845596354589,"im":0.000011816929672694467},{"omegaRadPerYr":-0.00013340785083355746,"re":-0.000008293367962443157,"im":-0.000006037698543442821},{"omegaRadPerYr":-0.00012206699860418157,"re":-0.000007834874620660982,"im":-0.000006194273028109633},{"omegaRadPerYr":-0.00000882765486045031,"re":0.000006926329003489009,"im":0.000007088618273045472},{"omegaRadPerYr":-0.00024403364663941606,"re":-0.0000067688514085649824,"im":-0.0000039372804262236975},{"omegaRadPerYr":-0.0009675115240877072,"re":-0.000004523409148243982,"im":-0.000006118079173710789},{"omegaRadPerYr":-0.00003414022666495201,"re":0.000006744799075224061,"im":-0.000005424494980786279}],"uranus":[{"omegaRadPerYr":1.6035381924529826e-12,"re":-0.004160856574076537,"im":0.013129860263650466},{"omegaRadPerYr":-0.000014507587492148105,"re":0.006819693058704708,"im":-0.005674634427905033},{"omegaRadPerYr":-0.000003353318510922242,"re":-0.0005101468889123178,"im":-0.00022431192788544522},{"omegaRadPerYr":-0.00012773799839573913,"re":0.00021390989911443435,"im":-0.00028067733516422825},{"omegaRadPerYr":-0.00001144228145249911,"re":-0.00021557933455541202,"im":-0.00021506510001186838},{"omegaRadPerYr":-0.000020175262728463126,"re":-0.00012181772747600126,"im":-0.00014562700090550872},{"omegaRadPerYr":-0.00000883170562826008,"re":-0.00012271929112445733,"im":-0.00013405373144391057},{"omegaRadPerYr":-0.00001510440449049501,"re":-0.000058179974245503275,"im":0.000026130858446085462},{"omegaRadPerYr":-0.000005772316459589512,"re":0.000018645941499112344,"im":-0.00001878803213517993},{"omegaRadPerYr":0.00005578878161701158,"re":-0.0000035816201386023236,"im":0.000018771557812212996},{"omegaRadPerYr":0.000050118758792649465,"re":0.000011954632103169795,"im":0.0000022788664124465486},{"omegaRadPerYr":-0.00002708183955964115,"re":0.000008335345344512824,"im":0.0000040982491105863455},{"omegaRadPerYr":-0.00013080309258480877,"re":-0.000007761316945910109,"im":-0.000007176694306362629},{"omegaRadPerYr":-0.00000919291035746893,"re":-0.0000070046918408019785,"im":0.000009861041144242077},{"omegaRadPerYr":-0.000014175994677444206,"re":-0.000012723240021455644,"im":0.00000777853735565578},{"omegaRadPerYr":0.0001017880841622457,"re":-0.0000040435660217196926,"im":-0.0000064036147121467425}],"neptune":[{"omegaRadPerYr":-5.349828375339041e-12,"re":-0.004159713069048624,"im":0.013130967383578487},{"omegaRadPerYr":-0.0000033530986744207723,"re":-0.005314739878282499,"im":-0.002345747737634212},{"omegaRadPerYr":-0.000014507479713283455,"re":-0.0008167131088991813,"im":0.0006798119496759311},{"omegaRadPerYr":-0.00001144257176535115,"re":0.000041026355047958796,"im":0.000040008034057922234},{"omegaRadPerYr":-0.000002757657502334114,"re":-0.00006150279163049683,"im":-0.000008690207476502036},{"omegaRadPerYr":-0.00012773799448148447,"re":0.000022941558795513458,"im":-0.000030013595125175664},{"omegaRadPerYr":-0.000020173286379739758,"re":0.000017859314392695935,"im":0.000021295104154845517},{"omegaRadPerYr":-0.000008980352762861808,"re":-0.0000018668278333279935,"im":0.00001734839960945963},{"omegaRadPerYr":0.0000022939455372302596,"re":-0.000008136491572209451,"im":0.000015966718498480645},{"omegaRadPerYr":-0.000005773435292130715,"re":-0.000010153039434495965,"im":0.00001234648914398541},{"omegaRadPerYr":-0.0000036886933327809922,"re":-0.000013293307017523214,"im":-0.000004964360480464718},{"omegaRadPerYr":-0.000015103757850504649,"re":0.000008464484618207752,"im":-0.0000038066887969154185},{"omegaRadPerYr":0.000002905459397753426,"re":1.1023119841574007e-8,"im":-0.000006670720883801244},{"omegaRadPerYr":0.000050117843996304345,"re":-0.0000051301124302096184,"im":-0.0000010095299944260241},{"omegaRadPerYr":0.00003897825256076914,"re":-0.000002068345816124314,"im":0.0000027758998424355177}]},"anchorE":0.016702435651957018,"anchorPeriEclipticDeg":462.9179213996577,"anchorInclEclipticDeg":0.00010345820355474172,"anchorAscNodeEclipticDeg":140.29217988414328});
19
+ const DEEP_MODES_ARTIFACT = Object.freeze({"meta":{"integrator":"wh","order":2,"dtDays":2,"spanYears":20000000,"sampleDays":20000,"gr":true,"seed":"JPL Horizons J2000 heliocentric state vectors (tools/explore/j2000-state.mjs, the one home)","masses":"DE440 mass ratios (astro-reference physicalConstants)","runCommand":"node tools/explore/lattice-long-window-test.mjs years=20000000 integrator=wh dt=2 order=2 gr=1 frame=both sample=20000","dumpFile":"tools/explore/lattice-long-window-ecliptic-20000000-gr.local.json (untracked, 337 MB)","dumpSha256":"686d6af51a689f7bd64ac1e2d8b26c243a4beccdacd3167adfeeae078e8b990f","conservationMaxDE":1.2738960401328902e-8,"decimation":4,"naffTerms":18,"naffZetaTerms":16,"naffZetaTermsEra":8,"frame":"ecliptic-J2000 (z-modes for the lunar-chain e; ζ-modes for the Stage-C obliquity hybrid — the invariable-frame ζ table remains unbanked, no consumer)","laskarRef":"Laskar, J. et al. (2004), A&A 428, 261–285, Table 3 (theory reference labels)"},"verdict":{"strongestBeatPeriodKyr":405.625567477903,"strongestBeatArcsecPerYr":3.195064867479295,"la2004BeatPeriodKyr":405.6972922210049,"rockMetronomeKyr":405.6,"companion124Kyr":123.84617993487997,"companion95Kyr":94.87791796545507,"earthLeadingModesArcsecPerYr":[4.257358971029763,7.452423838509057,17.917017907389138,17.368946405872247],"topBeatLines":[{"periodKyr":405.625567477903,"productAmp":0.0003123310080848341},{"periodKyr":94.87791796545507,"productAmp":0.00024338439758855827},{"periodKyr":123.84617993487997,"productAmp":0.00020980875877847502},{"periodKyr":98.84386665157218,"productAmp":0.00016694824937892253},{"periodKyr":130.6909747037068,"productAmp":0.00014391721626151482},{"periodKyr":2364.6549700414625,"productAmp":0.00011214770251987629},{"periodKyr":972.3103697584877,"productAmp":0.00007218142389142678},{"periodKyr":695.9670418382926,"productAmp":0.00006222377072471454}],"note":"g5 matches La2004 to 0.0002 ″/yr; the beat gap vs 405.6 is g2 (chaotic-diffusion window sensitivity + omitted separate-Moon/asteroid terms) — the anatomy is the plan’s Stage-B record."},"earthZ":[{"omegaRadPerYr":0.000020640258745496456,"re":0.01640837548946667,"im":0.00964771830356857},{"omegaRadPerYr":0.00003613037034336034,"re":-0.015519645105303494,"im":-0.005327718511512781},{"omegaRadPerYr":0.00008686415406186803,"re":-0.011108307303646387,"im":0.0063324002417276355},{"omegaRadPerYr":0.00008420702844025169,"re":0.005504442820656899,"im":-0.006828487155118338},{"omegaRadPerYr":0.000027102377738159537,"re":0.0005990602912422896,"im":0.0037445139104202996},{"omegaRadPerYr":0.00008284690006982035,"re":0.002385900412412394,"im":0.0008687520930649916},{"omegaRadPerYr":0.00008551634076169395,"re":0.0012667960543480752,"im":0.001284547912075711},{"omegaRadPerYr":0.00008156882804453768,"re":-0.0003413759390549155,"im":0.0016823570425905205},{"omegaRadPerYr":0.000033456117700854,"re":-0.0012412588643094782,"im":0.0009318258971565654},{"omegaRadPerYr":0.00013693625799603712,"re":-0.0009261214276803977,"im":0.0011910509606790575},{"omegaRadPerYr":0.00008736463294475958,"re":0.0013199280789047622,"im":0.0009530586967429039},{"omegaRadPerYr":0.00008630679999141721,"re":-0.00038871245410104777,"im":0.0009912036911146165},{"omegaRadPerYr":0.000026453632677170472,"re":-0.00032615534646350156,"im":-0.0018102501817831135},{"omegaRadPerYr":0.000034145978925786535,"re":0.0009480778866315119,"im":-0.0008230502200947101},{"omegaRadPerYr":0.00003548085475024487,"re":-0.0013007947815593653,"im":-0.00042439393044846465},{"omegaRadPerYr":0.00008951127418467436,"re":-0.0010559339979945592,"im":-0.000005975184481501219},{"omegaRadPerYr":0.00008814769888639652,"re":-0.0003392982459796931,"im":-0.00126615007571311},{"omegaRadPerYr":0.000027692559180942054,"re":0.0004455147622140075,"im":0.0013147856084997915}],"earthZeta":[{"omegaRadPerYr":-6.480692835562015e-14,"re":-0.004134427250631887,"im":0.013144207689667023},{"omegaRadPerYr":-0.00009139020514696892,"re":-0.003762846299946732,"im":-0.007417313993526907},{"omegaRadPerYr":-0.00002707802193107254,"re":0.004228758817782956,"im":0.001552899971393225},{"omegaRadPerYr":-0.00008608086641122392,"re":0.0012161313006493822,"im":-0.0038454411181687697},{"omegaRadPerYr":-0.00003414305478233622,"re":-0.0030829972319892183,"im":0.002522672469285971},{"omegaRadPerYr":-0.00008873899569559657,"re":-0.00020769480131372744,"im":-0.0026850953462850356},{"omegaRadPerYr":-0.00003333897395226539,"re":0.0006468387853619108,"im":-0.0008212555187612507},{"omegaRadPerYr":-0.000034707554013716744,"re":0.0012115602030611985,"im":-0.0008603813396121053},{"omegaRadPerYr":-0.00009404694793046069,"re":0.001124843496312146,"im":0.0009724617908785189},{"omegaRadPerYr":-0.00002647193861971907,"re":0.001606075294689031,"im":0.0005931944911952478},{"omegaRadPerYr":-0.00003277702706161178,"re":0.0005051745779261483,"im":-0.0006705412769950699},{"omegaRadPerYr":-0.00012773805775388969,"re":-0.0008122347824469044,"im":0.0010593881606687687},{"omegaRadPerYr":-0.00009269956713813446,"re":-0.0006909282558950976,"im":0.0004135096481099148},{"omegaRadPerYr":-0.000014507597324441827,"re":-0.0006470785128404058,"im":0.00057746649029071},{"omegaRadPerYr":-0.000033761896788929335,"re":0.001157822428032179,"im":-0.000690971407290411},{"omegaRadPerYr":-0.000028297573329000286,"re":-0.0011184968821771682,"im":-0.0003885179122647609}],"earthZetaEra":[{"omegaRadPerYr":-6.480692835562015e-14,"re":-0.004136170228858843,"im":0.013147349898750587},{"omegaRadPerYr":-0.00009139020514696892,"re":-0.0037451120264298888,"im":-0.007367103224447289},{"omegaRadPerYr":-0.00002707802193107254,"re":0.004192460536906565,"im":0.0015465498581850507},{"omegaRadPerYr":-0.00008608086641122392,"re":0.0012039767467140353,"im":-0.0038572667358382287},{"omegaRadPerYr":-0.00003414305478233622,"re":-0.0032014533879969596,"im":0.0025701217059533803},{"omegaRadPerYr":-0.00008873899569559657,"re":-0.00021856508120855303,"im":-0.002669820778092242},{"omegaRadPerYr":-0.00003333897395226539,"re":0.0003478573166468341,"im":-0.0006130210720886913},{"omegaRadPerYr":-0.000034707554013716744,"re":0.0012188003710118757,"im":-0.000879354385952938}],"planetLeadingZetaArcsecPerYr":{"mercury":-5.583654095308831,"venus":-18.85062201283722,"earth":-18.850582957521933,"mars":-17.75551746317749,"jupiter":-26.34785064223289,"saturn":-26.34785063789155,"uranus":-2.992403454072025,"neptune":-0.6916261380439003},"planetZ":{"mercury":[{"omegaRadPerYr":0.000027101464787379005,"re":0.036443059874745144,"im":0.15312012416846857},{"omegaRadPerYr":0.00002645682320158395,"re":-0.014115236278813163,"im":-0.07933183704397909},{"omegaRadPerYr":0.000027695768774324655,"re":0.014883065162550294,"im":0.04770421699238349},{"omegaRadPerYr":0.000020608825679123343,"re":0.0339424735092415,"im":0.0205886131133393},{"omegaRadPerYr":0.00003613198806683821,"re":0.026373724217244415,"im":0.007998632845938181},{"omegaRadPerYr":0.000025943085765069145,"re":-0.00008287402030671245,"im":0.01382534867142278},{"omegaRadPerYr":0.000021259366308985905,"re":-0.010921101889740678,"im":-0.005391042758241112},{"omegaRadPerYr":0.000033442897144222473,"re":-0.006298873452719107,"im":0.004846731368887027},{"omegaRadPerYr":0.000027342847424225136,"re":-0.031441801079617394,"im":-0.0012828182325896284},{"omegaRadPerYr":0.000026863603353307064,"re":-0.0023658597755055214,"im":0.03845436133115692},{"omegaRadPerYr":0.000029077390952304336,"re":-0.0056672065762804385,"im":0.008668504999729803},{"omegaRadPerYr":0.000025324686199132127,"re":-0.005942232736715857,"im":-0.012274661661212959},{"omegaRadPerYr":0.00002979754974875923,"re":0.0008097924308674098,"im":-0.0064472013829302505},{"omegaRadPerYr":0.000019992412184743173,"re":0.012472217201012077,"im":0.00359833652112381},{"omegaRadPerYr":0.00002454697962536287,"re":0.0020556509667169235,"im":0.0009916346793612978},{"omegaRadPerYr":0.00002812715748715012,"re":-0.002051758629227311,"im":-0.0033287955771129805},{"omegaRadPerYr":0.000019449369227596397,"re":-0.0038021090567115627,"im":-0.0028426209995905025}],"venus":[{"omegaRadPerYr":0.00003613032718771122,"re":-0.020105324941805183,"im":-0.006917696377202324},{"omegaRadPerYr":0.000020639950705137238,"re":0.017068955357371025,"im":0.010006500628836495},{"omegaRadPerYr":0.00008686450325171618,"re":0.011426811376444728,"im":-0.006520605414974846},{"omegaRadPerYr":0.00008420762005329659,"re":-0.006892443369184228,"im":0.008472548929406779},{"omegaRadPerYr":0.000027101843398089462,"re":0.0009492363872320767,"im":0.005898626241129876},{"omegaRadPerYr":0.00008284929259321451,"re":-0.0030327325912061806,"im":-0.0010976776908548803},{"omegaRadPerYr":0.00008156590133143486,"re":0.0004654494107565469,"im":-0.002280587631810283},{"omegaRadPerYr":0.00003345630943302872,"re":-0.0017828402597892042,"im":0.0012954758789217673},{"omegaRadPerYr":0.00008551538095828359,"re":-0.0011609215700463195,"im":-0.0012677518151850962},{"omegaRadPerYr":0.00002645314323665865,"re":-0.0005187468879242992,"im":-0.0028561425016264542},{"omegaRadPerYr":0.000034145633629733906,"re":0.0012933573208605794,"im":-0.001139818586425855},{"omegaRadPerYr":0.00002769519215699273,"re":0.000692247567326856,"im":0.0020562801187020375},{"omegaRadPerYr":0.00003548134649993586,"re":-0.0017504367473210652,"im":-0.0005759353131695786},{"omegaRadPerYr":0.00008736396981192052,"re":-0.0013474628838071549,"im":-0.000992885318268049},{"omegaRadPerYr":0.00008630854715331631,"re":0.0003763610849158857,"im":-0.0010611470059873186},{"omegaRadPerYr":0.00003678579378710168,"re":0.0015965344500683718,"im":0.0003260227593096117},{"omegaRadPerYr":0.00008814539612129297,"re":0.00043027029421162,"im":0.0012698103607611786},{"omegaRadPerYr":0.00009215946508724939,"re":-0.0008157163462856423,"im":-0.0001752965015353975}],"mars":[{"omegaRadPerYr":0.00008686194427246272,"re":0.04150468181977603,"im":-0.02235805720891878},{"omegaRadPerYr":0.00008420997062723613,"re":0.024191159406394575,"im":-0.02897798440552211},{"omegaRadPerYr":0.000020640675066908026,"re":0.01752920390659033,"im":0.010379054381833624},{"omegaRadPerYr":0.00008155902048560256,"re":-0.005126487019269018,"im":0.017498780322239615},{"omegaRadPerYr":0.00008951470797098792,"re":0.012453460704855819,"im":-0.0011162639997386022},{"omegaRadPerYr":0.00008286071984936754,"re":0.012151786749976757,"im":0.005285572685028835},{"omegaRadPerYr":0.00008552376356754678,"re":-0.008207026797923043,"im":-0.006506174683766466},{"omegaRadPerYr":0.00013693612216296713,"re":-0.004303426290032767,"im":0.005495751915005897},{"omegaRadPerYr":0.0000863140674359666,"re":0.003378196925346155,"im":-0.0035707297870487854},{"omegaRadPerYr":0.00009216418711866517,"re":0.004180141329638833,"im":0.001239878529646219},{"omegaRadPerYr":0.00008815294634884687,"re":0.0015478422945863473,"im":0.005394318221250823},{"omegaRadPerYr":0.00008737006869414014,"re":-0.004859264335556832,"im":-0.002468706141182086},{"omegaRadPerYr":0.00008474936320624016,"re":-0.0037175110079883836,"im":0.0005712305102614905},{"omegaRadPerYr":0.00003613060911836741,"re":-0.002878165082426005,"im":-0.0009813871463689},{"omegaRadPerYr":0.00008323445042360793,"re":-0.0021030674464516,"im":0.002382835034113347},{"omegaRadPerYr":0.00008591714206468895,"re":0.00033705398396163035,"im":-0.0031641077910174956},{"omegaRadPerYr":0.00008022543440532314,"re":0.0014077256319658448,"im":0.00023992196561432362},{"omegaRadPerYr":0.0000900335871717643,"re":-0.0007652388036231974,"im":-0.0015581764537776826}],"jupiter":[{"omegaRadPerYr":0.00002064075395335189,"re":0.038028034576741906,"im":0.022474419029067216},{"omegaRadPerYr":0.00013693627466777967,"re":0.009616177715621049,"im":-0.012410735192913122},{"omegaRadPerYr":0.000014970699552264387,"re":-0.0009276176888746422,"im":0.0015645820896462246},{"omegaRadPerYr":0.00025323179539978545,"re":0.0004059157737100984,"im":0.00040456376985595945},{"omegaRadPerYr":0.0001312662749926737,"re":-0.00015614354905163857,"im":-0.00012183629827031596},{"omegaRadPerYr":0.0001426061431474546,"re":-0.00015326196073912603,"im":-0.00011811188348776635},{"omegaRadPerYr":0.00014000309579914057,"re":0.00010317940519689781,"im":0.00006505029768233116},{"omegaRadPerYr":0.00013386863466366606,"re":0.00007960628300069755,"im":0.0000757581826985722},{"omegaRadPerYr":0.0012496810113814863,"re":3.5498901583457483e-9,"im":7.528217439557287e-9}],"saturn":[{"omegaRadPerYr":0.00013693627469533272,"re":-0.02951381641782599,"im":0.038116342187048506},{"omegaRadPerYr":0.000020640753964721574,"re":0.028361784183640975,"im":0.016761738089661193},{"omegaRadPerYr":0.0002532317954411971,"re":-0.0013588658390314074,"im":-0.0013542513704600167},{"omegaRadPerYr":0.000014970698207898392,"re":-0.0007732461228524056,"im":0.0013033726384504506},{"omegaRadPerYr":0.00013126626734545323,"re":0.000471597345592877,"im":0.0003662972802790016},{"omegaRadPerYr":0.00014260613959102947,"re":0.00046558535071819594,"im":0.0003604428232502375},{"omegaRadPerYr":0.0012496810120112478,"re":-2.2413816213183782e-8,"im":-4.3761227707856587e-8}],"uranus":[{"omegaRadPerYr":0.000020640753931894893,"re":-0.03238248798724911,"im":-0.019137541918709554},{"omegaRadPerYr":0.00001497070511159062,"re":-0.014798949407797135,"im":0.024975442503237483},{"omegaRadPerYr":0.000003264464996922227,"re":0.00045075801975650074,"im":0.0016050091168723338},{"omegaRadPerYr":0.00013693627457864556,"re":0.0009471352229324553,"im":-0.0012234989208774374},{"omegaRadPerYr":0.00000929092310040761,"re":-0.0004015633445553787,"im":-0.0002340983045129561},{"omegaRadPerYr":0.00002631265778975313,"re":0.00022664443272842668,"im":-0.0003767093309339966},{"omegaRadPerYr":0.000014377069742263513,"re":0.00005819778777828242,"im":-0.00005910629719132463},{"omegaRadPerYr":0.000630109378889249,"re":-1.1513321171782036e-7,"im":2.121111820496366e-7}],"neptune":[{"omegaRadPerYr":0.000003264141494649585,"re":0.0024665853980857314,"im":0.008775596228059238},{"omegaRadPerYr":0.000014970655663003607,"re":0.0018888606403837439,"im":-0.0031894015693886913},{"omegaRadPerYr":0.00002064075339053921,"re":0.001629524897365034,"im":0.0009616466536353474},{"omegaRadPerYr":-0.00011593914172939557,"re":7.926785905418971e-8,"im":-4.6685992002385664e-8}]},"planetZeta":{"mercury":[{"omegaRadPerYr":-0.000027070318959890106,"re":0.03509799360084889,"im":0.012514361334229175},{"omegaRadPerYr":-0.000034136904111019706,"re":0.02695969560580955,"im":-0.02182848736661456},{"omegaRadPerYr":-0.000034710315380555884,"re":-0.012559168496773116,"im":0.008299078079729882},{"omegaRadPerYr":-0.00002646765287895232,"re":0.015448524016084493,"im":0.005987672372630069},{"omegaRadPerYr":-0.00003340798156431758,"re":-0.006455019023356067,"im":0.006226120154816196},{"omegaRadPerYr":5.384799590336571e-11,"re":-0.0039804878272654606,"im":0.013070100663895403},{"omegaRadPerYr":-0.000032847026422583094,"re":-0.0057003023891457685,"im":0.005259105004808747},{"omegaRadPerYr":-0.00003594792939956603,"re":-0.0012961241060881503,"im":0.0016159947697806383},{"omegaRadPerYr":-0.000025076126902622893,"re":0.0009463621131951934,"im":0.004877886245061111},{"omegaRadPerYr":-0.00003524962055187364,"re":0.0036108114629212922,"im":-0.004623693257308201},{"omegaRadPerYr":-0.000024475658963257535,"re":0.000022935888716433717,"im":-0.004353014017229704},{"omegaRadPerYr":-0.00003379278995294136,"re":-0.007806785352862373,"im":0.004006431979329447},{"omegaRadPerYr":-0.00003218755893963215,"re":-0.003704818024406685,"im":0.0011960062285103251},{"omegaRadPerYr":-0.000028313967733473683,"re":-0.007360063597313632,"im":-0.002796682485956438},{"omegaRadPerYr":-0.000027441506455909732,"re":0.005714284626147598,"im":-0.00031320953109534994},{"omegaRadPerYr":-0.000025718824169110346,"re":-0.00022772395090882533,"im":-0.00196911848110608}],"venus":[{"omegaRadPerYr":-1.6493179814802074e-12,"re":-0.0041316378307605294,"im":0.013147230899595441},{"omegaRadPerYr":-0.00009139039449248062,"re":0.004107318311959544,"im":0.008097727638340723},{"omegaRadPerYr":-0.000027077829093903624,"re":0.005723184464233101,"im":0.002103989760517981},{"omegaRadPerYr":-0.0000860809730098796,"re":-0.0017575781212555862,"im":0.005497182235759365},{"omegaRadPerYr":-0.00003414333446857137,"re":-0.0036683665695228925,"im":0.0029729549111848722},{"omegaRadPerYr":-0.0000887389845132903,"re":0.00017437292720263114,"im":0.002839346558623874},{"omegaRadPerYr":-0.00003332402755350087,"re":0.0008226456090349229,"im":-0.000990196523458664},{"omegaRadPerYr":-0.00003470699633273722,"re":0.0013981977987789472,"im":-0.0010036696718058783},{"omegaRadPerYr":-0.00002647213755615405,"re":0.002192723581813546,"im":0.0008156688371823413},{"omegaRadPerYr":-0.00009404722529229626,"re":-0.001310202146639285,"im":-0.0011534120915617934},{"omegaRadPerYr":-0.00003276165702381588,"re":0.0005497404769706646,"im":-0.0007663000693998108},{"omegaRadPerYr":-0.00009269906010008638,"re":0.000774314512799505,"im":-0.0004388675219967948},{"omegaRadPerYr":-0.00003375443573456643,"re":0.0014500491408612449,"im":-0.0008824349886108636},{"omegaRadPerYr":-0.000014507610514643914,"re":-0.0007092452594379532,"im":0.000644027430133631},{"omegaRadPerYr":-0.00002829966619518156,"re":-0.0015021530175610535,"im":-0.0005258063199032051},{"omegaRadPerYr":-0.00003214220556483202,"re":0.0006661181436053425,"im":-0.0002653316593905635}],"mars":[{"omegaRadPerYr":-0.00008608117781327729,"re":0.01021076871109231,"im":-0.03356452939087538},{"omegaRadPerYr":-0.00009138911102981668,"re":0.006448673929855857,"im":0.013039152420792278},{"omegaRadPerYr":4.816071417209985e-13,"re":-0.004136702437859971,"im":0.013131620521733377},{"omegaRadPerYr":-0.00008873924259238756,"re":0.000719141598532243,"im":0.006332417454417071},{"omegaRadPerYr":-0.00008342553512204505,"re":-0.003385387773112122,"im":0.004320169865314299},{"omegaRadPerYr":-0.00012773796958870522,"re":-0.002768952254262225,"im":0.0036533714419055593},{"omegaRadPerYr":-0.00008732462124121245,"re":0.002315330060230354,"im":0.00021373005960354581},{"omegaRadPerYr":-0.00008533729428600537,"re":0.0000662084835502976,"im":0.0014041635383156973},{"omegaRadPerYr":-0.0000927013779034122,"re":0.0012004630656653568,"im":-0.0007842461095443991},{"omegaRadPerYr":-0.00008675666306804544,"re":0.0007084511153542455,"im":-0.0008188292363296188},{"omegaRadPerYr":-0.00008568093272163965,"re":-0.0022269947606386804,"im":-0.0002915189256492408},{"omegaRadPerYr":-0.0000920127905544982,"re":-0.00012713738691022227,"im":0.0011838067237884178},{"omegaRadPerYr":-0.00008937418687447559,"re":-0.0002755627620382867,"im":0.0007026683188238479},{"omegaRadPerYr":-0.00002707848026399503,"re":0.0008884002528900317,"im":0.00034005750138313076},{"omegaRadPerYr":-0.00009092889696047022,"re":-0.00043281332848104276,"im":0.0003922132913606256},{"omegaRadPerYr":-0.00009004802546465118,"re":0.0008966966123701487,"im":-0.0005174229841345629}],"jupiter":[{"omegaRadPerYr":3.8532251623886294e-13,"re":-0.0041611376264940984,"im":0.013131043712311021},{"omegaRadPerYr":-0.0001277379845918518,"re":0.0019098261437600508,"im":-0.002505661007425496},{"omegaRadPerYr":-0.000003353110004279269,"re":0.0005277820779376669,"im":0.000232885172945674},{"omegaRadPerYr":-0.000014507601866590341,"re":-0.0003702089817814631,"im":0.00030787406163905093},{"omegaRadPerYr":-0.00013080293768331143,"re":-0.000017471248168841094,"im":-0.00001634692544524867},{"omegaRadPerYr":-0.000011442276716160314,"re":0.000012459821928796665,"im":0.00001269474660145274},{"omegaRadPerYr":0.0004016105340997148,"re":0.000008813036156379482,"im":-0.00001120905836048329},{"omegaRadPerYr":-0.00000882703119796523,"re":0.000007828457504338726,"im":0.000007811495266844502},{"omegaRadPerYr":-0.00002707681546885972,"re":-0.000009044718068424064,"im":-0.0000033400395822585094},{"omegaRadPerYr":-0.0000201768700641032,"re":0.000006156498033523465,"im":0.00000751705596830829},{"omegaRadPerYr":0.0002853150225305461,"re":0.000007292599938644516,"im":0.0000043773896212603925},{"omegaRadPerYr":-0.0002440335075107546,"re":0.000006274454282046377,"im":0.0000036485466831589452},{"omegaRadPerYr":0.00016901949668819092,"re":-0.000002519428503521004,"im":0.000005678550409035692},{"omegaRadPerYr":-0.0000027587103410433805,"re":0.000005899853582363865,"im":8.409148783838858e-7},{"omegaRadPerYr":-0.000034144381407487655,"re":0.000004719652715449978,"im":-0.0000037247689900126893},{"omegaRadPerYr":-0.00013340793710151563,"re":0.0000036153371332643194,"im":0.0000026473096931137383}],"saturn":[{"omegaRadPerYr":3.404546335777438e-13,"re":-0.004160815341357166,"im":0.01313037085706424},{"omegaRadPerYr":-0.0001277379845708044,"re":-0.004757531229884148,"im":0.0062418570697877025},{"omegaRadPerYr":-0.000003353103939425025,"re":0.0005082525979425591,"im":0.0002243582817470411},{"omegaRadPerYr":-0.000014507604683407504,"re":-0.0003003418401293427,"im":0.0002498658928695802},{"omegaRadPerYr":-0.00013080297316369022,"re":0.00004462521372870775,"im":0.00004172396328086738},{"omegaRadPerYr":0.0004016105342059343,"re":-0.000021890424766638027,"im":0.00002784479607678065},{"omegaRadPerYr":0.00028531501227593826,"re":-0.000016971705234483944,"im":-0.000010207779625167536},{"omegaRadPerYr":0.00016901949653661777,"re":0.000006353117499272568,"im":-0.000014464465864357296},{"omegaRadPerYr":-0.00002707712299185719,"re":-0.000011819853659803773,"im":-0.000004343694032290057},{"omegaRadPerYr":-0.00008608110335393078,"re":-0.0000038556316501964585,"im":0.000012260170759195859},{"omegaRadPerYr":-0.00013340770427701983,"re":-0.000008291647540272973,"im":-0.0000060449324319747485},{"omegaRadPerYr":-0.00012206708504485138,"re":-0.000007846468613598666,"im":-0.000006177485716796176},{"omegaRadPerYr":-0.000008827506775295263,"re":0.000006912239479621683,"im":0.0000070997530164759055},{"omegaRadPerYr":-0.00024403351156152198,"re":-0.000006770600853713768,"im":-0.000003936350447344142},{"omegaRadPerYr":-0.0009675113430843807,"re":-0.000004521653063656594,"im":-0.000006119593231226156},{"omegaRadPerYr":-0.000034143979713964837,"re":0.000006837682774689789,"im":-0.000005331591672335383}],"uranus":[{"omegaRadPerYr":1.609741252182826e-12,"re":-0.004160857683169045,"im":0.01312987468744944},{"omegaRadPerYr":-0.000014507581339335488,"re":0.006819771098312077,"im":-0.005674555448618447},{"omegaRadPerYr":-0.0000033533175354118582,"re":-0.0005101607663847248,"im":-0.00022431030942694354},{"omegaRadPerYr":-0.00012773798595007094,"re":0.00021390993605577627,"im":-0.00028068024741796866},{"omegaRadPerYr":-0.000011442390269999423,"re":-0.00021565535141600253,"im":-0.0002150430588126844},{"omegaRadPerYr":-0.000020175380767861024,"re":-0.00012178417740316124,"im":-0.0001456136848907788},{"omegaRadPerYr":-0.00000883157541584528,"re":-0.00012271282922940013,"im":-0.0001340577820362881},{"omegaRadPerYr":-0.000015103884918843288,"re":-0.00005803301762598432,"im":0.000026178909117342292},{"omegaRadPerYr":-0.000005772310491116802,"re":0.000018629424113074064,"im":-0.000018786863001070623},{"omegaRadPerYr":0.000055789019292025894,"re":-0.000003583719865681113,"im":0.00001877185158848246},{"omegaRadPerYr":0.00005011887511064967,"re":0.000011951449395631811,"im":0.000002279724016800827},{"omegaRadPerYr":-0.000027076655469348425,"re":0.000008609833687019483,"im":0.0000039638140159356984},{"omegaRadPerYr":-0.00013080298640432038,"re":-0.000007760607234183951,"im":-0.000007178734351197981},{"omegaRadPerYr":-0.000009192811893081681,"re":-0.000006996875336880973,"im":0.000009870536991923898},{"omegaRadPerYr":-0.000014175491386338482,"re":-0.00001270447511881092,"im":0.000007778091287202746},{"omegaRadPerYr":0.00010178796581047778,"re":-0.000004042702368549757,"im":-0.000006403994609904075}],"neptune":[{"omegaRadPerYr":-5.309966632404278e-12,"re":-0.004159721990836072,"im":0.013130987686676325},{"omegaRadPerYr":-0.000003353098139366354,"re":-0.005314734202759442,"im":-0.0023457634229809878},{"omegaRadPerYr":-0.000014507473764320118,"re":-0.0008167253455895104,"im":0.000679803323619701},{"omegaRadPerYr":-0.00001144267951307936,"re":0.00004103714819598339,"im":0.00004000434297961395},{"omegaRadPerYr":-0.0000027576446795887367,"re":-0.00006149846188777267,"im":-0.000008691440917605258},{"omegaRadPerYr":-0.000127737982036136,"re":0.000022941259364012485,"im":-0.000030013884419629694},{"omegaRadPerYr":-0.00002017340325592398,"re":0.00001785684479351327,"im":0.000021295006716797693},{"omegaRadPerYr":-0.000008980453563447026,"re":-0.0000018701512064522262,"im":0.000017342410863083055},{"omegaRadPerYr":0.0000022940676061081706,"re":-0.000008135256823034523,"im":0.0000159660700897465},{"omegaRadPerYr":-0.000005773430993827179,"re":-0.000010150670472290044,"im":0.000012347455189860531},{"omegaRadPerYr":-0.0000036886914876550886,"re":-0.000013289694939214323,"im":-0.000004967461981751487},{"omegaRadPerYr":-0.000015103364422159208,"re":0.000008447715112089554,"im":-0.0000038128138702162122},{"omegaRadPerYr":0.0000029055921239641946,"re":1.0991164784154305e-8,"im":-0.00000667040982519229},{"omegaRadPerYr":0.000050117959348442586,"re":-0.000005129825896938048,"im":-0.0000010095666431561402},{"omegaRadPerYr":0.0000389783728602118,"re":-0.000002068034832737985,"im":0.000002775618631657745}]},"anchorE":0.016702435651957018,"anchorPeriEclipticDeg":462.9179213996577,"anchorInclEclipticDeg":0.00010345820355474172,"anchorAscNodeEclipticDeg":140.29217988414328});
20
20
 
21
21
  module.exports = { DEEP_MODES_ARTIFACT, DEEP_MODES_ARTIFACT_HASH };