@essrt/physics 9.2.0 → 11.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.
@@ -13,6 +13,8 @@
13
13
  * axialPrecessionYearsJ2000: number,
14
14
  * obliquityJ2000Deg: number,
15
15
  * axialPrecessionYearsAtYearFn?: (year: number) => number,
16
+ * solarTorqueShareJ2000?: number,
17
+ * dynamicalEllipticityRatioAtYearFn?: (year: number) => number,
16
18
  * }} deps — mode tables from the governed deep artifact (choose the ζ tier
17
19
  * per consumer: era = its own 8-term extraction, deep = the 16-term
18
20
  * table; NEVER a slice); anchors from the chain artifact's one home; the
@@ -25,9 +27,12 @@
25
27
  * vs La2004 over −200 kyr vs the deep tier's 0.069° — the C-1 verdict,
26
28
  * plan 02) and zetaModes serves only as the TAIL beyond the span (the
27
29
  * seam at the span edge is the extraction residual, far outside every
28
- * certified window).
30
+ * certified window). solarTorqueShareJ2000 and
31
+ * dynamicalEllipticityRatioAtYearFn: THE PRECESSION OF DATE — the two
32
+ * factors on the precession constant (see alphaAtGeneral below); absent,
33
+ * the constant is the secular law alone, bit-identical.
29
34
  */
30
- export function createDeepOrbitalHistory({ zModes, zetaModes, zetaSeries, zSeries, anchorE, anchorPeriEclipticDeg, anchorInclEclipticDeg, anchorAscNodeEclipticDeg, axialPrecessionYearsJ2000, obliquityJ2000Deg, axialPrecessionYearsAtYearFn, }: {
35
+ export function createDeepOrbitalHistory({ zModes, zetaModes, zetaSeries, zSeries, anchorE, anchorPeriEclipticDeg, anchorInclEclipticDeg, anchorAscNodeEclipticDeg, axialPrecessionYearsJ2000, obliquityJ2000Deg, axialPrecessionYearsAtYearFn, solarTorqueShareJ2000, dynamicalEllipticityRatioAtYearFn, }: {
31
36
  zModes: ReadonlyArray<{
32
37
  omegaRadPerYr: number;
33
38
  re: number;
@@ -57,6 +62,8 @@ export function createDeepOrbitalHistory({ zModes, zetaModes, zetaSeries, zSerie
57
62
  axialPrecessionYearsJ2000: number;
58
63
  obliquityJ2000Deg: number;
59
64
  axialPrecessionYearsAtYearFn?: (year: number) => number;
65
+ solarTorqueShareJ2000?: number;
66
+ dynamicalEllipticityRatioAtYearFn?: (year: number) => number;
60
67
  }): {
61
68
  build: (t0Yr: number, t1Yr: number, stepYr: number) => {
62
69
  /** @param {number} tYr */
@@ -71,9 +78,20 @@ export function createDeepOrbitalHistory({ zModes, zetaModes, zetaSeries, zSerie
71
78
  orbitNormalY: number;
72
79
  equinoxLonJ2000Deg: number;
73
80
  equinoxLonRateDegPerYr: number;
81
+ generalPrecessionLonDeg: number;
82
+ generalPrecessionLonRateDegPerYr: number;
74
83
  };
75
84
  };
76
85
  alphaArcsecPerYr: number;
77
86
  alphaLunisolarArcsecPerYr: number;
78
87
  axialPrecessionYearsLunisolarJ2000: number;
88
+ /** THE PRECESSION OF DATE — the two factors this integration applies to
89
+ * the secular precession constant at t years from J2000 (both 1 at
90
+ * t = 0; both 1 everywhere when the options are absent). ONE home for
91
+ * the published surface and the docs.
92
+ * @param {number} t @returns {{solarTorque: number, ellipticity: number}} */
93
+ precessionOfDateFactorsAt: (t: number) => {
94
+ solarTorque: number;
95
+ ellipticity: number;
96
+ };
79
97
  };
@@ -1,7 +1,7 @@
1
1
  export const SIDEREAL_CHANNEL_ARTIFACT: Readonly<{
2
2
  t0Yr: -10000000;
3
3
  stepYr: 2000;
4
- windowYr: 2000;
4
+ windowYr: 10000;
5
5
  lamDotRel: number[];
6
6
  meta: {
7
7
  dumpSha256: string;
@@ -9,4 +9,4 @@ export const SIDEREAL_CHANNEL_ARTIFACT: Readonly<{
9
9
  chaprontGate: number;
10
10
  };
11
11
  }>;
12
- export const SIDEREAL_CHANNEL_ARTIFACT_HASH: "528101ca3410dc9b";
12
+ export const SIDEREAL_CHANNEL_ARTIFACT_HASH: "a6f4729c2de722af";
@@ -1,29 +1,23 @@
1
1
  /**
2
2
  * @param {{
3
- * sampleAt: (year: number) => {e: number, periOfDateDeg: number, equinoxLonJ2000Deg: number},
3
+ * sampleAt: (year: number) => {e: number, periOfDateDeg: number, equinoxLonJ2000Deg: number, generalPrecessionLonDeg: number},
4
4
  * massLossSiderealSecondsAtYearFn: (year: number) => number,
5
- * apsidalSecularDegPerYrFn?: (year: number) => number,
6
5
  * }} opts
7
- * sampleAt: the one-source movement sampler, calendar-year keyed
8
- * (createDeepOrbitalHistory build().at wrapped by the caller — series
9
- * tier where the artifact is available, mode tail beyond).
6
+ * sampleAt: the one-source movement sampler, keyed in the sampler's own
7
+ * year (Julian years from J2000 TT, 2000 = J2000; createDeepOrbitalHistory
8
+ * build().at wrapped by the caller — series tier where the artifact is
9
+ * available, mode tail beyond).
10
10
  * massLossSiderealSecondsAtYearFn: the caller's secular mass-loss
11
11
  * sidereal-year law, SI seconds, IAU-anchored at J2000.
12
- * apsidalSecularDegPerYrFn: the chain's SECULAR apsidal tangent of date
13
- * (keplerian-chain computeApsidalSecularDegPerYr for Earth — deg/yr,
14
- * J2000-ecliptic frame). When given, the anomalistic year is the
15
- * mean-element construction on this smooth rate; when absent, it falls
16
- * back to the cardinal structure's measured year-over-year interval
17
- * (which carries the banked series' century-scale ϖ̇ wobble).
18
12
  */
19
- export function createYearLengths({ sampleAt, massLossSiderealSecondsAtYearFn, apsidalSecularDegPerYrFn }: {
13
+ export function createYearLengths({ sampleAt, massLossSiderealSecondsAtYearFn }: {
20
14
  sampleAt: (year: number) => {
21
15
  e: number;
22
16
  periOfDateDeg: number;
23
17
  equinoxLonJ2000Deg: number;
18
+ generalPrecessionLonDeg: number;
24
19
  };
25
20
  massLossSiderealSecondsAtYearFn: (year: number) => number;
26
- apsidalSecularDegPerYrFn?: (year: number) => number;
27
21
  }): Readonly<{
28
22
  /** Mean tropical year of date, SI seconds. @param {number} year */
29
23
  tropicalYearSecondsAtYear: (year: number) => number;
@@ -31,12 +25,16 @@ export function createYearLengths({ sampleAt, massLossSiderealSecondsAtYearFn, a
31
25
  siderealYearSecondsAtYear: (year: number) => number;
32
26
  /** Anomalistic year of date, SI seconds. @param {number} year */
33
27
  anomalisticYearSecondsAtYear: (year: number) => number;
34
- /** Axial precession period of date (equinox regression beat), years. @param {number} y */
28
+ /** Axial precession period of date (equinox regression beat), JULIAN years. @param {number} y */
35
29
  axialPrecessionYearsAtYear: (y: number) => number;
36
- /** Perihelion (apsidal-vs-equinox) precession period of date, years. @param {number} y */
30
+ /** Perihelion (apsidal-vs-equinox) precession period of date, JULIAN years. @param {number} y */
37
31
  perihelionPrecessionYearsAtYear: (y: number) => number;
38
- /** Apsidal precession period of date vs the fixed stars, years (hypersensitive: ±1 s ↔ ≈400 yr; the identifier keeps the historical "inclination" name). @param {number} y */
32
+ /** Apsidal precession period of date vs the fixed stars, JULIAN years (hypersensitive: ±1 s ↔ ≈400 yr; the identifier keeps the historical "inclination" name). @param {number} y */
39
33
  inclinationPrecessionYearsAtYear: (y: number) => number;
34
+ /** The movement's own general precession of date, ″ per Julian year (retrograde positive) — 360°/this ≡ axialPrecessionYearsAtYear to second order. @param {number} y */
35
+ generalPrecessionArcsecPerJulianYr: (y: number) => number;
36
+ /** The movement's own apsidal rate of date against the FIXED frame, ″ per Julian year (prograde positive) — the rate the Perihelion Longitudes Prec. cell shows for Earth; 360°/this ≡ inclinationPrecessionYearsAtYear exactly. @param {number} y */
37
+ apsidalRateFixedArcsecPerJulianYr: (y: number) => number;
40
38
  /** The per-cardinal layer (D6 rules: year lengths λ̇-corrected; offsets/spreads raw — μs-class/second-order there). */
41
39
  cardinal: Readonly<{
42
40
  /** @param {number} y @param {'VE'|'SS'|'AE'|'WS'} type */
package/types/model.d.ts CHANGED
@@ -45,6 +45,10 @@ export function assembleModel(C: Readonly<Record<string, any>>, F: Readonly<Reco
45
45
  ofDatePeriodYearsAtYear: (year: number) => number;
46
46
  /** f_S, the solar fraction of the J2000 precession torque. */
47
47
  solarShareJ2000: number;
48
+ /** THE PRECESSION OF DATE — the solar-torque factor 1 + f_S·([(1 − e²)/(1 − e₀²)]^(−3/2) − 1) at the eccentricity of date (1 at J2000; +3.2·10⁻⁴ on the million-year mean). The spin integration multiplies it into the secular rate. @param {number} year @returns {number} */
49
+ solarTorqueFactorOfDateAtYear: (year: number) => number;
50
+ /** THE PRECESSION OF DATE — J₂(t)/J₂₀, the oblateness of date from the GIA channel (ψ̇ ∝ J₂; 1 at J2000, bounded ±5·10⁻⁴; dJ₂/dt at J2000 = the observed satellite rate). @param {number} year @returns {number} */
51
+ ellipticityRatioOfDateAtYear: (year: number) => number;
48
52
  /** (a₀/a_M(t))³ — the lunar torque's growth on the recession history. @param {number} year @returns {number} */
49
53
  lunarTorqueFactorAtYear: (year: number) => number;
50
54
  /** f_S + (1 − f_S)(a₀/a_M)³ — the torque term the unit divides H_era by. @param {number} year @returns {number} */
@@ -57,11 +61,11 @@ export function assembleModel(C: Readonly<Record<string, any>>, F: Readonly<Reco
57
61
  nodalPeriodYears: number;
58
62
  /** The obliquity beat 2π/(ψ̇(t) − |s₃|), years — the SHIPPED deep-time obliquity period (falsification leg 1; 41,224 at J2000, on the composed rate). @param {number} year @returns {number} */
59
63
  obliquityBeatYearsAtYear: (year: number) => number;
60
- /** The apsidal (perihelion vs the stars) period from the engine-D chain's secular tangent, years — inside the published window only (the tangent is an extrapolation beyond the banked series: it turns negative at −5 Myr); null beyond. @param {number} year @returns {number|null} */
64
+ /** The apsidal (perihelion vs the stars) period of date, JULIAN years — the ONE movement's own apsidal rate (the scene's perihelion; anom/(anom − sid) of the one family, ≡ 360°/apsidalRateFixedArcsecPerJulianYr), inside the published window only; null beyond. Before 2026-09 this rode the planet chain's secular tangent, which parted from the scene's perihelion passages by seconds of anomalistic year within a few millennia (year-lengths.cjs). @param {number} year @returns {number|null} */
61
65
  apsidalPeriodYearsAtYear: (year: number) => number | null;
62
66
  /** T_aps(t) / T_p(t) — the apsidal period in of-date precession periods (4.33 at J2000, a reading; 0.84 … 9.9 across ±26 kyr, measured); null beyond the published window. @param {number} year @returns {number|null} */
63
67
  apsidalPerPrecessionAtYear: (year: number) => number | null;
64
- /** T_peri(t) = 1/(1/T_p + 1/T_aps) — the perihelion-of-date period (equinox precession + inertial perihelion motion, frame arithmetic at every epoch), years, on the of-date T_p; null beyond the published window. @param {number} year @returns {number|null} */
68
+ /** T_peri(t) = 1/(1/T_p + 1/T_aps) — the perihelion-of-date period (equinox precession + inertial perihelion motion, frame arithmetic at every epoch), JULIAN years, on the of-date T_p — ≡ the one family's anom/(anom − trop); null beyond the published window. @param {number} year @returns {number|null} */
65
69
  periOfDatePeriodYearsAtYear: (year: number) => number | null;
66
70
  /** T_peri(t) / T_p(t) (0.812 at J2000 — the J2000 reading); null beyond the published window. @param {number} year @returns {number|null} */
67
71
  periOfDatePerPrecessionAtYear: (year: number) => number | null;
@@ -112,6 +116,8 @@ export function assembleModel(C: Readonly<Record<string, any>>, F: Readonly<Reco
112
116
  axialPrecessionYearsAtYear: (y: number) => number;
113
117
  perihelionPrecessionYearsAtYear: (y: number) => number;
114
118
  inclinationPrecessionYearsAtYear: (y: number) => number;
119
+ generalPrecessionArcsecPerJulianYr: (y: number) => number;
120
+ apsidalRateFixedArcsecPerJulianYr: (y: number) => number;
115
121
  cardinal: Readonly<{
116
122
  yearLengthSeconds: (y: number, type: "VE" | "SS" | "AE" | "WS") => number;
117
123
  eocOffsetSeconds: (y: number, type: "VE" | "SS" | "AE" | "WS") => number;
@@ -9,6 +9,19 @@ export const DEEP_MODES_ARTIFACT: Readonly<{
9
9
  seed: string;
10
10
  masses: string;
11
11
  runCommand: string;
12
+ physics: {
13
+ lunarQuadrupole: {
14
+ qTilde: number;
15
+ aEmKm: number;
16
+ effectiveFactor: number;
17
+ provenance: string;
18
+ };
19
+ asteroids: {
20
+ ceres: number;
21
+ pallas: number;
22
+ vesta: number;
23
+ };
24
+ };
12
25
  dumpFile: string;
13
26
  dumpSha256: string;
14
27
  conservationMaxDE: number;
@@ -139,4 +152,4 @@ export const DEEP_MODES_ARTIFACT: Readonly<{
139
152
  anchorZDotPerYr: number[];
140
153
  slopeTaperYears: 27943.083333333332;
141
154
  }>;
142
- export const DEEP_MODES_ARTIFACT_HASH: "77e0baf779e85de5";
155
+ export const DEEP_MODES_ARTIFACT_HASH: "cbdc477b7442c333";
@@ -19,6 +19,10 @@ export type DeepCalendar = {
19
19
  * at −302,635 and grows quadratically).
20
20
  */
21
21
  jdToSIyear: (jd: number) => number;
22
+ /**
23
+ * the exact inverse of jdToSIyear.
24
+ */
25
+ siYearToJD: (ySI: number) => number;
22
26
  /**
23
27
  * inverse of the phase machinery's cumulAtYear — null outside the table.
24
28
  */
@@ -60,6 +64,7 @@ export type DeepCalendar = {
60
64
  * scene's precession rotations integrate on this axis; a fit on it agrees
61
65
  * with the runtime by construction; the round-trip bias Y_SI − Y is −11.0 yr
62
66
  * at −302,635 and grows quadratically).
67
+ * @property {(ySI: number) => number} siYearToJD the exact inverse of jdToSIyear.
63
68
  * @property {(targetCumul: number) => (number | null)} yearAtCumulIntegral
64
69
  * inverse of the phase machinery's cumulAtYear — null outside the table.
65
70
  * @property {() => void} ensureCumulDaysTable builds the ∫ daysPerYear dt table