@essrt/physics 5.0.0 → 6.0.1

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.
@@ -62,6 +62,25 @@ export type DeepTimeLodDeps = {
62
62
  * - gated analytic swing rate
63
63
  */
64
64
  swingLodRateAt: (year: number) => number;
65
+ /**
66
+ * - the model's DERIVED
67
+ * J2000 axial precession period: the certified year-length laws' beat at
68
+ * 2000, sid/(sid − trop) ≈ 25,771.4 yr (plan 06 S5 — one J2000 precession
69
+ * reading; the same anchor the hybrid obliquity self-anchors on). Read
70
+ * LAZILY on the first composed-rate use, never at construction: every
71
+ * runtime's year laws read THIS factory's bases.
72
+ */
73
+ precessionPeriodJ2000YearsFn: () => number;
74
+ /**
75
+ * - the period of Earth's orbit
76
+ * plane's nodal regression on the invariable plane, 1,296,000/|s₃| with s₃
77
+ * the dominant ζ mode of the banked deep secular modes (≈ 68,751 yr). An
78
+ * ORBITAL quantity (μ-tier: it does not follow Earth's spin), the reference
79
+ * the solar day's "ecliptic missing motion" term rides (plan 06 T2 item —
80
+ * formerly the spin unit's H/5, 67,063 yr, 2.5 % off and scaling with the
81
+ * spin at deep time). Lazy, like the precession anchor.
82
+ */
83
+ nodalPeriodYearsFn: () => number;
65
84
  /**
66
85
  * - OPTIONAL time-dependent
67
86
  * Earth-Moon angular momentum (the Driver-1½ solar channels,
@@ -99,6 +118,19 @@ export type DeepTimeLodDeps = {
99
118
  * @property {(year: number) => number} cycleLodSumAt - gated δLOD sum (incl. swing)
100
119
  * @property {(year: number) => number} swingLodAt - gated swing δLOD alone
101
120
  * @property {(year: number) => number} swingLodRateAt - gated analytic swing rate
121
+ * @property {() => number} precessionPeriodJ2000YearsFn - the model's DERIVED
122
+ * J2000 axial precession period: the certified year-length laws' beat at
123
+ * 2000, sid/(sid − trop) ≈ 25,771.4 yr (plan 06 S5 — one J2000 precession
124
+ * reading; the same anchor the hybrid obliquity self-anchors on). Read
125
+ * LAZILY on the first composed-rate use, never at construction: every
126
+ * runtime's year laws read THIS factory's bases.
127
+ * @property {() => number} nodalPeriodYearsFn - the period of Earth's orbit
128
+ * plane's nodal regression on the invariable plane, 1,296,000/|s₃| with s₃
129
+ * the dominant ζ mode of the banked deep secular modes (≈ 68,751 yr). An
130
+ * ORBITAL quantity (μ-tier: it does not follow Earth's spin), the reference
131
+ * the solar day's "ecliptic missing motion" term rides (plan 06 T2 item —
132
+ * formerly the spin unit's H/5, 67,063 yr, 2.5 % off and scaling with the
133
+ * spin at deep time). Lazy, like the precession anchor.
102
134
  * @property {(tMa: number) => number} [lEmAtAgeKgm2S] - OPTIONAL time-dependent
103
135
  * Earth-Moon angular momentum (the Driver-1½ solar channels,
104
136
  * recession-history.cjs). Absent → the J2000 constant, which the budget
@@ -111,11 +143,13 @@ export function createDeepTimeLod(deps: DeepTimeLodDeps): {
111
143
  lodHoursAtAge: (t_Ma: number) => number | null;
112
144
  hAtAge: (t_Ma: number) => number | null;
113
145
  lunisolarPrecessionRateArcsecPerYrAtAge: (t_Ma: number) => number | null;
146
+ lunisolarPrecessionPeriodYearsAtAge: (t_Ma: number) => number | null;
114
147
  lunarTorqueFactorAtAge: (tMa: number) => (number | null);
115
148
  precessionTorqueTermAtAge: (tMa: number) => (number | null);
116
149
  siderealYearSecondsAtAge: (t_Ma: number) => number;
117
150
  tropicalYearSecondsAtAge: (t_Ma: number) => number;
118
151
  tropicalYearDaysAtAge: (t_Ma: number) => number | null;
152
+ eclipticLodCorrectionSecondsAtAge: (t_Ma: number) => number | null;
119
153
  yearInDaysAtAge: (t_Ma: number) => number | null;
120
154
  deltaTRawSecondsAtAge: (t_Ma: number) => number;
121
155
  lodSecondsWithCorrectionsAtAge: (t_Ma: number) => number | null;
@@ -17,15 +17,18 @@ export function computeSolarTorqueShare(c: {
17
17
  }): number;
18
18
  /**
19
19
  * @param {{
20
- * p0ArcsecPerYr: number,
20
+ * p0ArcsecPerYr: number | (() => number),
21
21
  * solarShare: number,
22
22
  * lodSecondsAtAge: (tMa: number) => (number | null),
23
23
  * lodJ2000Seconds: number,
24
24
  * moonDistanceMetresAtAge: (tMa: number) => (number | null),
25
25
  * moonDistanceJ2000Metres: number,
26
26
  * yearToTMa: (year: number) => number,
27
- * }} deps - p0 = 1,296,000/(H/13) (the model's J2000 rate); lodJ2000Seconds
28
- * the SAME day basis lodSecondsAtAge(0) returns.
27
+ * }} deps - p0 = the model's derived J2000 rate, 1,296,000/axial0 (S5; a
28
+ * number or a LAZY getter — the callers' certified year laws read the
29
+ * deep-time factory this is built inside, so the anchor is resolved on
30
+ * the first RATE use, never at construction; the torque term needs no
31
+ * anchor); lodJ2000Seconds the SAME day basis lodSecondsAtAge(0) returns.
29
32
  * @returns {{
30
33
  * composedRateArcsecPerYrAtAge: (tMa: number) => (number | null),
31
34
  * composedPeriodYearsAtAge: (tMa: number) => (number | null),
@@ -39,7 +42,7 @@ export function computeSolarTorqueShare(c: {
39
42
  * }}
40
43
  */
41
44
  export function createComposedPrecession(deps: {
42
- p0ArcsecPerYr: number;
45
+ p0ArcsecPerYr: number | (() => number);
43
46
  solarShare: number;
44
47
  lodSecondsAtAge: (tMa: number) => (number | null);
45
48
  lodJ2000Seconds: number;
package/types/model.d.ts CHANGED
@@ -37,11 +37,11 @@ export function assembleModel(C: Readonly<Record<string, any>>, F: Readonly<Reco
37
37
  tropicalYearSecondsAtYear: (year: number) => number;
38
38
  }>;
39
39
  lunisolar: Readonly<{
40
- /** The mean lunisolar precession period T_p(t), years — the composed torque rate's period. @param {number} year @returns {number} */
40
+ /** The mean lunisolar precession period T_p(t), years — the composed torque rate's period on the derived J2000 anchor (25,771.4 at J2000). @param {number} year @returns {number} */
41
41
  meanPeriodYearsAtYear: (year: number) => number;
42
- /** The composed rate ψ̇(t) = [ω/ω₀]·p₀·[f_S + (1 − f_S)(a₀/a_M)³], ″/yr. @param {number} year @returns {number} */
42
+ /** The composed rate ψ̇(t) = [ω/ω₀]·p₀·[f_S + (1 − f_S)(a₀/a_M)³], ″/yr (p₀ = 50.2883, derived). @param {number} year @returns {number} */
43
43
  meanRateArcsecPerYrAtYear: (year: number) => number;
44
- /** The of-date period — the one-family beat inside ±2 Myr, the mean beyond. @param {number} year @returns {number} */
44
+ /** The of-date period — the one-family beat inside ±2 Myr, the composed mean beyond. @param {number} year @returns {number} */
45
45
  ofDatePeriodYearsAtYear: (year: number) => number;
46
46
  /** f_S, the solar fraction of the J2000 precession torque. */
47
47
  solarShareJ2000: number;
@@ -49,13 +49,19 @@ export function assembleModel(C: Readonly<Record<string, any>>, F: Readonly<Reco
49
49
  lunarTorqueFactorAtYear: (year: number) => number;
50
50
  /** f_S + (1 − f_S)(a₀/a_M)³ — the torque term the unit divides H_era by. @param {number} year @returns {number} */
51
51
  torqueTermAtYear: (year: number) => number;
52
- /** The hybrid's precession constant α = p₀ / cos ε₀, ″/yr (ε₀ the J2000 obliquity input). */
52
+ /** The hybrid's precession constant α = p₀ / cos ε₀, ″/yr (p₀ the derived J2000 rate, ε₀ the J2000 obliquity input; 54.81). */
53
53
  torqueConstantJ2000ArcsecPerYr: number;
54
+ /** |s₃|, the dominant nodal mode of Earth's orbit — the largest-amplitude ζ mode of the banked deep secular modes, ″/yr (18.85; the obliquity beat's partner). ONE home for the registry, the browser and the API. */
55
+ nodalModeS3ArcsecPerYr: number;
56
+ /** The ecliptic (nodal) precession period 1,296,000/|s₃|, years (68,751) — an orbital quantity, fixed at every epoch at the two-body level. */
57
+ nodalPeriodYears: number;
58
+ /** 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
+ obliquityBeatYearsAtYear: (year: number) => number;
54
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} */
55
61
  apsidalPeriodYearsAtYear: (year: number) => number | null;
56
- /** T_aps(t) / T_p(t) — the apsidal period in mean precession periods (4.33 at J2000, a fitted reading; 0.84 … 9.5 across ±26 kyr, measured); null beyond the published window. @param {number} year @returns {number|null} */
62
+ /** 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} */
57
63
  apsidalPerPrecessionAtYear: (year: number) => number | null;
58
- /** 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; null beyond the published window. @param {number} year @returns {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} */
59
65
  periOfDatePeriodYearsAtYear: (year: number) => number | null;
60
66
  /** T_peri(t) / T_p(t) (0.812 at J2000 — the J2000 reading); null beyond the published window. @param {number} year @returns {number|null} */
61
67
  periOfDatePerPrecessionAtYear: (year: number) => number | null;