@essrt/physics 20.0.0 → 21.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/package.json +3 -8
- package/src/cardinal/one-source-structure.cjs +3 -2
- package/src/chain-cycles/index.cjs +12 -30
- package/src/constants/coefficients.d.ts +16 -92
- package/src/constants/coefficients.js +5 -21
- package/src/constants/generated.d.ts +12 -16
- package/src/constants/generated.js +21 -25
- package/src/deltat/deep-time.cjs +36 -92
- package/src/deltat/recession-history.cjs +2 -1
- package/src/earth/deep-orbital-history.cjs +4 -4
- package/src/earth/precession-composed.cjs +3 -3
- package/src/earth/year-lengths.cjs +16 -1
- package/src/eclipse/sun-planetary-completion.cjs +11 -12
- package/src/index.js +22 -46
- package/src/layer0/derive-params.js +10 -5
- package/src/layer0/index.js +27 -73
- package/src/layer1/index.js +6 -37
- package/src/model.js +190 -215
- package/src/moon/arguments.cjs +57 -83
- package/src/moon/deep-modes-artifact.cjs +2 -2
- package/src/moon/month-chain.cjs +25 -59
- package/src/moon/series.cjs +9 -5
- package/src/phase/deep-calendar.cjs +35 -80
- package/src/planets/chain-artifact.js +2 -2
- package/src/planets/geometry.cjs +52 -23
- package/src/planets/model.cjs +5 -5
- package/types/chain-cycles/index.d.cts +9 -4
- package/types/constants/coefficients.d.ts +16 -92
- package/types/constants/generated.d.ts +12 -16
- package/types/deltat/deep-time.d.cts +3 -16
- package/types/earth/year-lengths.d.cts +12 -0
- package/types/eclipse/sun-planetary-completion.d.cts +0 -9
- package/types/index.d.ts +2 -12
- package/types/layer0/derive-params.d.ts +7 -4
- package/types/layer0/index.d.ts +6 -13
- package/types/layer1/index.d.ts +0 -2
- package/types/model.d.ts +14 -11
- package/types/moon/arguments.d.cts +23 -22
- package/types/moon/deep-modes-artifact.d.cts +3 -3
- package/types/moon/month-chain.d.cts +7 -16
- package/types/moon/series.d.cts +2 -2
- package/types/phase/deep-calendar.d.cts +14 -50
- package/types/planets/geometry.d.cts +27 -11
- package/types/planets/model.d.cts +9 -3
- package/src/cardinal/index.cjs +0 -324
- package/src/moon/ecc-channel.cjs +0 -141
- package/src/phase/index.cjs +0 -186
- package/src/planets/ecc-channel.cjs +0 -59
- package/src/sun/longitude-correction.cjs +0 -68
- package/types/cardinal/index.d.cts +0 -80
- package/types/moon/ecc-channel.d.cts +0 -30
- package/types/phase/index.d.cts +0 -38
- package/types/planets/ecc-channel.d.cts +0 -20
- package/types/sun/longitude-correction.d.cts +0 -41
package/src/deltat/deep-time.cjs
CHANGED
|
@@ -12,11 +12,6 @@
|
|
|
12
12
|
* factory wiring).
|
|
13
13
|
* - moiFactorAtAge — the L1-orbital-coupled GIA α(t). The lattice-α pin
|
|
14
14
|
* machinery (_withLatticeAlpha) is ENGINE STATE and stays there.
|
|
15
|
-
* - siderealYearDaysFourierAt — the IAU-base integrated-phase Fourier
|
|
16
|
-
* evaluator (Phase D matched pair). 8.4-1 S-D2: the browser's old Actual
|
|
17
|
-
* divided by its epoch-aware f(Y) evaluator instead, double-counting the
|
|
18
|
-
* deep-time drift already in mean(t) — 12% wrong at −400 Ma. Both engines
|
|
19
|
-
* now inject the ripple-form evaluator.
|
|
20
15
|
* - cycleLodSumAt / swingLodAt / swingLodRateAt — the engine-GATED
|
|
21
16
|
* cycle-stack sums (flags are engine dispatch).
|
|
22
17
|
*
|
|
@@ -50,11 +45,9 @@ const { createComposedPrecession } = require('../earth/precession-composed.cjs')
|
|
|
50
45
|
* @property {number} aMoonNowMetres - Farhat polynomial anchor
|
|
51
46
|
* @property {number} alpha1PerMa @property {number} alpha3PerMa3
|
|
52
47
|
* @property {number} alpha4PerMa4
|
|
53
|
-
* @property {number}
|
|
54
|
-
* @property {number} lodNowH13Seconds - the H/13-identity mean LOD at J2000
|
|
48
|
+
* @property {number} lodNowH13Seconds - ω₀, the J2000 day length (the SI day since plan 09; identifier kept)
|
|
55
49
|
* @property {number} meanSiderealYearJ2000Seconds
|
|
56
50
|
* @property {number} solarMassLossFracPerYear
|
|
57
|
-
* @property {number} siderealYearDaysKinematicJ2000 - Actual-LOD numerator
|
|
58
51
|
* @property {number} precessionSolarShareJ2000 - f_S, the solar fraction of the J2000
|
|
59
52
|
* precession torque (derive-params) — the unit H(t) = 13·T_p,composed needs it
|
|
60
53
|
*/
|
|
@@ -64,7 +57,6 @@ const { createComposedPrecession } = require('../earth/precession-composed.cjs')
|
|
|
64
57
|
* @property {DeepTimeLodConstants} constants
|
|
65
58
|
* @property {(tMa: number) => number} moonDistanceMetresAtAge
|
|
66
59
|
* @property {(tMa: number) => number} moiFactorAtAge - GIA α(t)
|
|
67
|
-
* @property {(year: number) => number} siderealYearDaysFourierAt
|
|
68
60
|
* @property {(year: number) => number} cycleLodSumAt - gated δLOD sum (incl. swing)
|
|
69
61
|
* @property {(year: number) => number} swingLodAt - gated swing δLOD alone
|
|
70
62
|
* @property {(year: number) => number} swingLodRateAt - gated analytic swing rate
|
|
@@ -117,26 +109,18 @@ function createDeepTimeLod(deps) {
|
|
|
117
109
|
return (s === null) ? null : s / 3600;
|
|
118
110
|
}
|
|
119
111
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
function eraClockHAtAge(t_Ma) {
|
|
128
|
-
return eraClockHFromLod(lodSecondsAtAge(t_Ma));
|
|
129
|
-
}
|
|
112
|
+
// (Plan 09 step 7a deleted the FROZEN ERA CLOCK's public counter
|
|
113
|
+
// `eraClockHAtAge` — H_era(t) = H₀·LOD(t)/LOD₀, plan 06 D8's second named
|
|
114
|
+
// counter — with its year twins; step 7b deleted the unit itself, `hAtAge`
|
|
115
|
+
// = H_era/[f_S + (1 − f_S)(a₀/a_M)³] — H(t) was 13.011 composed precession
|
|
116
|
+
// periods, a fit constant's multiple of T_p(t), never a period of anything
|
|
117
|
+
// the model computes. The physics it scaled is the composed precession
|
|
118
|
+
// below: ψ̇(t) and T_p(t) = 1,296,000/ψ̇ are the published quantities.)
|
|
130
119
|
// The `…FromLod` twins take an ALREADY-COMPUTED LOD(t): the Simpson ΔT
|
|
131
120
|
// integrand below evaluated the LOD four times and the tropical year twice
|
|
132
121
|
// per node through these helpers (measured 8.8 → 4.8 ms per cardinal panel
|
|
133
122
|
// year with the model's ΔT memo). Same operations, same inputs — every
|
|
134
123
|
// value bit-identical (11,958-value sweep, 0 differences).
|
|
135
|
-
/** @param {number|null} LOD_s @returns {number|null} */
|
|
136
|
-
function eraClockHFromLod(LOD_s) {
|
|
137
|
-
if (LOD_s === null) return null;
|
|
138
|
-
return K.holisticYearJ2000 * LOD_s / K.lodNowH13Seconds;
|
|
139
|
-
}
|
|
140
124
|
|
|
141
125
|
// The composed lunisolar precession rate (plan 06 D6 → Phase 3 → S5):
|
|
142
126
|
// ψ̇(t) = [ω(t)/ω₀]·p₀·[f_S + (1 − f_S)(a₀/a_M(t))³], p₀ the model's
|
|
@@ -155,23 +139,6 @@ function createDeepTimeLod(deps) {
|
|
|
155
139
|
yearToTMa: /** @param {number} year */ (year) => (2000 - year) / 1e6,
|
|
156
140
|
});
|
|
157
141
|
|
|
158
|
-
/** The unit H(t) = H_era / [f_S + (1 − f_S)(a₀/a_M)³] — the internal unit
|
|
159
|
-
* scales WITH the composed lunisolar precession period (H(t)/T_p(t) =
|
|
160
|
-
* H₀/axial0 = 13.011 at every epoch) but is NOT 13 of them: H₀ was fitted
|
|
161
|
-
* on the perihelion-of-date beat, and the "H = 13·T_p" claim is retired
|
|
162
|
-
* (plan 06 S5; docs/retired-record.md). Spelled in the SAME operations as
|
|
163
|
-
* layer0's holisticHCore so the layer0 gate holds the twins bit-identical.
|
|
164
|
-
* ≡ H_era wherever (a₀/a_M)³ ≈ 1. Identifier kept (plan 06 P4).
|
|
165
|
-
* @param {number} t_Ma @returns {number|null} */
|
|
166
|
-
function hAtAge(t_Ma) {
|
|
167
|
-
return hFromLod(t_Ma, lodSecondsAtAge(t_Ma));
|
|
168
|
-
}
|
|
169
|
-
/** @param {number} t_Ma @param {number|null} LOD_s @returns {number|null} */
|
|
170
|
-
function hFromLod(t_Ma, LOD_s) {
|
|
171
|
-
const hEra = eraClockHFromLod(LOD_s);
|
|
172
|
-
const term = composed.torqueTermAtAge(t_Ma);
|
|
173
|
-
return hEra === null || term === null ? null : hEra / term;
|
|
174
|
-
}
|
|
175
142
|
|
|
176
143
|
/** The composed lunisolar precession rate, ″/yr — p₀·[ω/ω₀]·[f_S + (1 − f_S)
|
|
177
144
|
* (a₀/a_M)³] on the derived J2000 anchor (S5). ≡ 1,296,000·(H₀/axial0)/H(t).
|
|
@@ -196,32 +163,32 @@ function createDeepTimeLod(deps) {
|
|
|
196
163
|
// a(t) = a₀·(1−Δm)): T ∝ M⁻² ⇒ T(t) = T₀·(1−Δm)² — the SAME Driver-2
|
|
197
164
|
// law the planet chains use (orbit-chain driver2PeriodSecondsAtAge).
|
|
198
165
|
// The previous (1 − 2Δm) was this law's first-order Taylor — the one
|
|
199
|
-
// form in the model inconsistent with it
|
|
200
|
-
//
|
|
201
|
-
//
|
|
202
|
-
//
|
|
166
|
+
// form in the model inconsistent with it (measured on the retired day-count
|
|
167
|
+
// identity of the era counter: with the product form the counter's
|
|
168
|
+
// H_era·(days/yr)·(AU₀/AU)² held exactly — a tautology of spin scaling ∘
|
|
169
|
+
// Kepler, deleted with the counter and the unit at plan 09 steps 7a/7b).
|
|
203
170
|
return K.meanSiderealYearJ2000Seconds * (1 - mass_loss_fraction) * (1 - mass_loss_fraction);
|
|
204
171
|
}
|
|
205
172
|
|
|
206
|
-
/**
|
|
207
|
-
*
|
|
208
|
-
*
|
|
209
|
-
*
|
|
210
|
-
*
|
|
211
|
-
*
|
|
212
|
-
*
|
|
213
|
-
*
|
|
214
|
-
*
|
|
215
|
-
* for a rounding-level gain. This tier stays a named device. */
|
|
173
|
+
/** Tropical year of date, seconds — the sidereal year less the equinox's
|
|
174
|
+
* own motion over one year: one turn per the composed lunisolar precession
|
|
175
|
+
* period T_p(t), 1/T_trop = 1/T_sid + ψ̇(t)/(1,296,000″ · Julian-year s).
|
|
176
|
+
* Plan 09 step 5d: it was the unit's calendar convention sid·(1 − 13/H(t))
|
|
177
|
+
* — plan 06 D2 had kept it as a named device — 0.086 % slow on the equinox
|
|
178
|
+
* term (1.0 s of year at J2000), and the deep JD↔year calendar integrates
|
|
179
|
+
* THIS. The SAME operations as layer0's tropicalYearSecondsCore (the
|
|
180
|
+
* layer0 gate holds the twins bit-identical). Past the tidal chain's domain
|
|
181
|
+
* the J2000 rate stands in. @param {number} t_Ma @returns {number} */
|
|
216
182
|
function tropicalYearSecondsAtAge(t_Ma) {
|
|
217
183
|
return tropicalYearSecondsFromLod(t_Ma, lodSecondsAtAge(t_Ma));
|
|
218
184
|
}
|
|
219
185
|
/** @param {number} t_Ma @param {number|null} LOD_s @returns {number} */
|
|
220
186
|
function tropicalYearSecondsFromLod(t_Ma, LOD_s) {
|
|
221
187
|
const sidSec = siderealYearSecondsAtAge(t_Ma);
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
|
|
188
|
+
const term = composed.torqueTermAtAge(t_Ma);
|
|
189
|
+
const p0 = composed.p0ArcsecPerYr;
|
|
190
|
+
const rate = (LOD_s === null || !(LOD_s > 0) || term === null) ? p0 : (K.lodNowH13Seconds / LOD_s) * p0 * term;
|
|
191
|
+
return 1 / (1 / sidSec + rate / (1296000 * 365.25 * 86400));
|
|
225
192
|
}
|
|
226
193
|
|
|
227
194
|
/** @param {number} t_Ma @returns {number|null} */
|
|
@@ -237,25 +204,9 @@ function createDeepTimeLod(deps) {
|
|
|
237
204
|
return tropicalYearSecondsAtAge(t_Ma) / LOD_s;
|
|
238
205
|
}
|
|
239
206
|
|
|
240
|
-
//
|
|
241
|
-
//
|
|
242
|
-
//
|
|
243
|
-
// fitted against. Bit-identical to the pre-Phase-3 tropicalYearSecondsAtAge /
|
|
244
|
-
// yearInDaysAtAge; the physical (unit) forms above are what the model
|
|
245
|
-
// publishes.
|
|
246
|
-
/** @param {number} t_Ma @returns {number} */
|
|
247
|
-
function eraClockTropicalYearSecondsAtAge(t_Ma) {
|
|
248
|
-
const sidSec = siderealYearSecondsAtAge(t_Ma);
|
|
249
|
-
const Ht = eraClockHAtAge(t_Ma);
|
|
250
|
-
if (Ht === null) return sidSec * (1 - 13 / K.holisticYearJ2000);
|
|
251
|
-
return sidSec * (1 - 13 / Ht);
|
|
252
|
-
}
|
|
253
|
-
/** @param {number} t_Ma @returns {number|null} */
|
|
254
|
-
function eraClockYearInDaysAtAge(t_Ma) {
|
|
255
|
-
const LOD_s = lodSecondsAtAge(t_Ma);
|
|
256
|
-
if (LOD_s === null) return null;
|
|
257
|
-
return eraClockTropicalYearSecondsAtAge(t_Ma) / LOD_s;
|
|
258
|
-
}
|
|
207
|
+
// (Plan 09 step 7a: the frozen era clock's year twins on H_era —
|
|
208
|
+
// T_sid·(1 − 13/H_era) and its day count, the bases the deleted cardinal
|
|
209
|
+
// record and year-length combs were fitted against — are deleted.)
|
|
259
210
|
|
|
260
211
|
/**
|
|
261
212
|
* The solar day's "ecliptic missing motion" correction, seconds: the mean
|
|
@@ -323,17 +274,9 @@ function createDeepTimeLod(deps) {
|
|
|
323
274
|
return tidal + deps.cycleLodSumAt(year);
|
|
324
275
|
}
|
|
325
276
|
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
* drift is already in mean(t)). @param {number} t_Ma @returns {number|null} */
|
|
330
|
-
function lodSecondsActualAtAge(t_Ma) {
|
|
331
|
-
const mean_t = lodSecondsAtAge(t_Ma);
|
|
332
|
-
if (mean_t === null) return null;
|
|
333
|
-
const year_at_t = 2000 - t_Ma * 1e6;
|
|
334
|
-
const Y_days_fourier = deps.siderealYearDaysFourierAt(year_at_t);
|
|
335
|
-
return mean_t * K.siderealYearDaysKinematicJ2000 / Y_days_fourier;
|
|
336
|
-
}
|
|
277
|
+
// (Plan 09: the "Actual LOD" — the tidal mean × the retired sidereal-year
|
|
278
|
+
// comb's ripple — is deleted with the comb; the ripple was the sidereal
|
|
279
|
+
// year's λ̇ variation misattributed to the day length.)
|
|
337
280
|
|
|
338
281
|
/**
|
|
339
282
|
* dLOD/dt driver decomposition, ms/century per channel.
|
|
@@ -401,18 +344,19 @@ function createDeepTimeLod(deps) {
|
|
|
401
344
|
}
|
|
402
345
|
|
|
403
346
|
return {
|
|
404
|
-
lodSecondsAtAge, lodSecondsAtAgeWithAlpha, lodHoursAtAge,
|
|
347
|
+
lodSecondsAtAge, lodSecondsAtAgeWithAlpha, lodHoursAtAge,
|
|
405
348
|
lunisolarPrecessionRateArcsecPerYrAtAge, lunisolarPrecessionPeriodYearsAtAge,
|
|
406
349
|
// the composition's terms (plan 06 Phase 3 S3, the lunisolar surface): (a₀/a_M)³ and f_S + (1 − f_S)(a₀/a_M)³
|
|
407
350
|
lunarTorqueFactorAtAge: composed.lunarTorqueFactorAtAge,
|
|
408
351
|
precessionTorqueTermAtAge: composed.torqueTermAtAge,
|
|
409
352
|
siderealYearSecondsAtAge, tropicalYearSecondsAtAge, tropicalYearDaysAtAge,
|
|
353
|
+
// the same law on a caller-supplied LOD (the browser's L1-α sensitivity sweep; plan 09 step 7c)
|
|
354
|
+
tropicalYearSecondsFromLod,
|
|
410
355
|
// the solar day's ecliptic missing-motion term on the nodal period (plan 06 T2 item; one home)
|
|
411
356
|
eclipticLodCorrectionSecondsAtAge,
|
|
412
357
|
yearInDaysAtAge, deltaTRawSecondsAtAge, lodSecondsWithCorrectionsAtAge,
|
|
413
|
-
|
|
414
|
-
// the frozen era clock's
|
|
415
|
-
eraClockHAtAge, eraClockTropicalYearSecondsAtAge, eraClockYearInDaysAtAge,
|
|
358
|
+
dLodDtDecompositionAtAge,
|
|
359
|
+
// (plan 09 step 7a: the frozen era clock's counter and bases left with the last comb)
|
|
416
360
|
};
|
|
417
361
|
}
|
|
418
362
|
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Background (docs/99 §"The ungated mid-Precambrian window", docs/106 §D,
|
|
6
6
|
* and the research record in tools/explore/{farhat-divergence-probe,
|
|
7
|
-
*
|
|
7
|
+
* fit-regime-recession}.js — the hand-shaped regime-aware-recession-study.js
|
|
8
|
+
* was deleted at plan 09 step 7e): Farhat 2022's
|
|
8
9
|
* central result is that lunar recession followed a resonant STAIRCASE —
|
|
9
10
|
* a single smooth quartic anchored at the modern LLR rate, the gated
|
|
10
11
|
* 0–650 Ma era and the Roche crossing cannot follow it through the
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
* shim tools/lib/deep-orbital-history.js (the deep insolation extractor),
|
|
17
17
|
* and the browser's published ε surfaces (VFP chart, Earth-panel row) via
|
|
18
18
|
* the generated deep-modes embed. The ERA machinery (frame conversions,
|
|
19
|
-
* lunar D5, besselian
|
|
20
|
-
*
|
|
21
|
-
* 1900–2100 / 19.5″ in 1600–2400, mostly hybrid-side
|
|
22
|
-
*
|
|
19
|
+
* lunar D5, besselian) rode the comb-era fitted ε law until plan 09 deleted
|
|
20
|
+
* it (measured at the time: the hybrid differed from that law by 5″ rms in
|
|
21
|
+
* 1900–2100 / 19.5″ in 1600–2400, mostly hybrid-side); since then every
|
|
22
|
+
* surface reads this hybrid — the one obliquity of date.
|
|
23
23
|
*
|
|
24
24
|
* The climatic precession is the PHYSICAL of-date angle from the moving
|
|
25
25
|
* equinox γ = unit(ŝ×n̂) to the perihelion direction, measured in the orbit
|
|
@@ -26,9 +26,9 @@
|
|
|
26
26
|
* composed period — H(t)/T_p(t) = H₀/axial0 = 13.011 at every epoch — but
|
|
27
27
|
* is not 13 of them; the 13 is a fit-era label that leaves the physics.
|
|
28
28
|
* The pre-Phase-3 structural clock 13·1,296,000/H_era(t) (pure ω-scaling,
|
|
29
|
-
* H_era = H₀·LOD/LOD₀)
|
|
30
|
-
* convention (eraClockHAtAge)
|
|
31
|
-
* record: it read 70.9 ″/yr against Lantink et al. 2022's 108.6 ± 8.5 at
|
|
29
|
+
* H_era = H₀·LOD/LOD₀) survived as the FROZEN ERA CLOCK's named phase
|
|
30
|
+
* convention (eraClockHAtAge) until plan 09 step 7a deleted it with the last
|
|
31
|
+
* comb; its record (doc 110 chain 2, the paleo-anchors gate rows): it read 70.9 ″/yr against Lantink et al. 2022's 108.6 ± 8.5 at
|
|
32
32
|
* 2.46 Ga and 65.2 against Meyers & Malinverno 2018's 85.79 ± 2.72 at
|
|
33
33
|
* 1.4 Ga, where the composed rate reads 104.6 and 86.6.
|
|
34
34
|
*
|
|
@@ -159,4 +159,19 @@ function createYearLengths({ sampleAt, massLossSiderealSecondsAtYearFn }) {
|
|
|
159
159
|
*/
|
|
160
160
|
const ONE_FAMILY_WINDOW_YEARS = 2000000;
|
|
161
161
|
|
|
162
|
-
|
|
162
|
+
/** The J2000 mean tropical year, DAYS — derived in ONE home from two IAU
|
|
163
|
+
* inputs, the sidereal year and the general precession in longitude p_A
|
|
164
|
+
* (″ per JULIAN year), in the exact rate form
|
|
165
|
+
* 1/T_trop = 1/T_sid + p_A / (1,296,000″ · 365.25 d)
|
|
166
|
+
* — the same beat `shorterYear` evaluates of date. 365.242190469 d on the
|
|
167
|
+
* IAU 2006 inputs. Plan 09: replaces the Meeus & Savoie 1992 input
|
|
168
|
+
* 365.2421897 (66 ms shorter, whose beat with the sidereal year read
|
|
169
|
+
* 25,770.7 yr against p_A's 25,771.6 — three inputs over-determining a
|
|
170
|
+
* two-parameter identity). Counting p_A per tropical or sidereal year
|
|
171
|
+
* instead moves this by 26 ms; IAU states p_A per Julian year.
|
|
172
|
+
* @param {number} siderealYearDays @param {number} generalPrecessionArcsecPerJulianYr @returns {number} */
|
|
173
|
+
function computeMeanTropicalYearJ2000Days(siderealYearDays, generalPrecessionArcsecPerJulianYr) {
|
|
174
|
+
return 1 / (1 / siderealYearDays + generalPrecessionArcsecPerJulianYr / (1296000 * 365.25));
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
module.exports = { createYearLengths, computeMeanTropicalYearJ2000Days, ONE_FAMILY_WINDOW_YEARS };
|
|
@@ -67,8 +67,9 @@
|
|
|
67
67
|
* besselian.cjs), so a Sun-only nutation term is a frame
|
|
68
68
|
* inconsistency for elongation. Removed: the nutation-free syzygy
|
|
69
69
|
* fleet improves 3.877 → 3.756″ and the fuller-bridged Sun
|
|
70
|
-
* comparison 2.344 → 2.123″ (fq7s
|
|
71
|
-
*
|
|
70
|
+
* comparison 2.344 → 2.123″ (measured by the fq7s preview and
|
|
71
|
+
* annual-channel instruments, deleted at plan 09 step 7e — docs/109
|
|
72
|
+
* §22). This file now carries ZERO fitted
|
|
72
73
|
* constants. The Earth-around-EMB wobble is DERIVED: amplitude
|
|
73
74
|
* a_M·μ/AU with μ = 1/(1+M_E/M_M), injected by the model wiring
|
|
74
75
|
* from live package constants (6.4399″ at current constants), sign
|
|
@@ -393,15 +394,13 @@ function createSunPlanetaryCompletion({ embWobbleArcsec, carrierRatesDegPerCy, e
|
|
|
393
394
|
return { sunPlanetaryCompletionDeg };
|
|
394
395
|
}
|
|
395
396
|
|
|
396
|
-
|
|
397
|
-
*
|
|
398
|
-
*
|
|
399
|
-
*
|
|
400
|
-
*
|
|
401
|
-
* (
|
|
402
|
-
*
|
|
403
|
-
* (fidelity 0.616″, 70 terms), only the fingerprint is re-recorded. */
|
|
404
|
-
const PAIRED_SUN_HARMONICS_SHA256 = '53530a28a60b3c4a'; // was cbc189cea1c20292 (eccentricity unification: Step-0 refit → N2/N3 re-derived); R10 rotation, same Sun
|
|
397
|
+
/* (Plan 09 step 5a: PAIRED_SUN_HARMONICS_SHA256 — the sha256/16 of the Step-0
|
|
398
|
+
* SUN_LONGITUDE_HARMONICS this table was derived beside, last 53530a28a60b3c4a
|
|
399
|
+
* (the R10 rotation of a comb never refit since the eccentricity unification)
|
|
400
|
+
* — is retired with the comb. The comb left every Sun path at plan 06 R4, so
|
|
401
|
+
* the residual the table was derived from is the certified Sun's; the table
|
|
402
|
+
* stands (fidelity 0.616″, 70 terms) and the carrier-rate pair below remains
|
|
403
|
+
* its enforced matched pair.) */
|
|
405
404
|
|
|
406
405
|
/** sha256/16 of JSON.stringify([...planets, moonElongation]) — the seven
|
|
407
406
|
* full-precision carrier rates (deg/cy TT) the tables pair with: since plan
|
|
@@ -421,4 +420,4 @@ const PAIRED_SUN_HARMONICS_SHA256 = '53530a28a60b3c4a'; // was cbc189cea1c2029
|
|
|
421
420
|
* was the I2 record-based carrier set. */
|
|
422
421
|
const PAIRED_CARRIER_RATES_SHA256 = '26552b86ad69eaf2'; // running-mean series re-bank (mean=1 dump): carriers moved in the 9th digit, LONG_PERIOD_TERMS + the 8V−13E row re-derived on them; history: 8e11456fcf8db81c (I3), 2d066e92bae955e4 (I2)
|
|
423
422
|
|
|
424
|
-
module.exports = { createSunPlanetaryCompletion, computeCarrierRatesDegPerCy, eccVectorOfDateEmbedded,
|
|
423
|
+
module.exports = { createSunPlanetaryCompletion, computeCarrierRatesDegPerCy, eccVectorOfDateEmbedded, PAIRED_CARRIER_RATES_SHA256 };
|
package/src/index.js
CHANGED
|
@@ -54,7 +54,6 @@ const NEVER_INJECTABLE = Object.keys(REFERENCE_DATA);
|
|
|
54
54
|
* @typedef {{
|
|
55
55
|
* constants: Constants,
|
|
56
56
|
* hash: string,
|
|
57
|
-
* computeLatticePeriodsYears: () => {axialPrecessionPeriodYears: number, inclinationPrecessionPeriodYears: number, perihelionPrecessionPeriodYears: number},
|
|
58
57
|
* eccentricity: (year: number) => number,
|
|
59
58
|
* identity: ModelIdentity,
|
|
60
59
|
* } & ModelSurfaces} Model
|
|
@@ -95,24 +94,25 @@ export { FITTED_COEFFICIENTS, COEFFICIENTS_HASH } from './constants/index.js';
|
|
|
95
94
|
export { createEpochPrimitives } from './layer0/index.js';
|
|
96
95
|
export { deriveEpochParams } from './layer0/derive-params.js';
|
|
97
96
|
export { createDerivedViews } from './layer1/index.js';
|
|
98
|
-
//
|
|
99
|
-
//
|
|
100
|
-
//
|
|
101
|
-
|
|
102
|
-
//
|
|
103
|
-
//
|
|
104
|
-
// year/day collapse (formerly the
|
|
97
|
+
// (Plan 09 step 7a: the Phase 7 integrated-phase machinery `createPhaseMachinery`
|
|
98
|
+
// — the ∫dt/H_era table and the cycle counters every comb read — and the
|
|
99
|
+
// frozen cardinal record evaluator `createCardinalModel` (the §10 derived
|
|
100
|
+
// form on the deleted CARDINAL_POINT_* coefficients) are DELETED; the
|
|
101
|
+
// cardinal instants are createModel().cardinal, the one Sun's crossings.)
|
|
102
|
+
// The deep-time calendar (year ↔ JD under the drifting year length) — ONE
|
|
103
|
+
// implementation for both engines since the year/day collapse (formerly the
|
|
104
|
+
// PHASE-B-DUPLICATE family). CJS on purpose: tools/lib requires the same
|
|
105
|
+
// file via the exports-map subpath; re-exported here so bundled ESM
|
|
106
|
+
// consumers need only the package root.
|
|
105
107
|
export { createDeepCalendar } from './phase/deep-calendar.cjs';
|
|
106
|
-
export { createCardinalModel } from './cardinal/index.cjs';
|
|
107
108
|
// D4b: the one-source cardinal structure — the EoC layer (year lengths,
|
|
108
109
|
// crossing offsets, the e(t)-proportional spread) on the movement's own
|
|
109
|
-
// e(t)/ϖ(t). Absolute dates deliberately excluded (per-renderer mean chain)
|
|
110
|
-
// the frozen createCardinalModel stays the certified era device.
|
|
110
|
+
// e(t)/ϖ(t). Absolute dates deliberately excluded (per-renderer mean chain).
|
|
111
111
|
export { createCardinalStructure } from './cardinal/one-source-structure.cjs';
|
|
112
112
|
// Phase 8.2 — the lunar machinery, extracted layer by layer (survey order:
|
|
113
113
|
// eccentricity channel → month chain → cycle tables → arguments → series →
|
|
114
114
|
// apparent). Same CJS + root re-export convention.
|
|
115
|
-
|
|
115
|
+
// (plan 09 step 6: createMoonEccChannel — the H/3 eccentricity law — is deleted; Earth's e of date is the N-body series on every path)
|
|
116
116
|
export { createMoonMonthChain } from './moon/month-chain.cjs';
|
|
117
117
|
export { createChainCycleIntegrator } from './chain-cycles/index.cjs';
|
|
118
118
|
export { createMoonArguments } from './moon/arguments.cjs';
|
|
@@ -127,8 +127,8 @@ export { computeEarthFrameOfDate, solveWheelAngleForLongitude } from './earth/fr
|
|
|
127
127
|
// (planets/orientation) and the ascending-node integrator
|
|
128
128
|
// (planets/asc-node-integrator) are DELETED at plan 07 R5/R6: the planets'
|
|
129
129
|
// elements of date have one home, the N-body chain.
|
|
130
|
-
export { derivePlanetGeometry } from './planets/geometry.cjs';
|
|
131
|
-
|
|
130
|
+
export { derivePlanetGeometry, scaffoldOrbitInputs } from './planets/geometry.cjs';
|
|
131
|
+
// (plan 09 step 6: eccentricityFromCycles / computeEccentricityIntegrated — the H/16 law-of-cosines eccentricity — are deleted; no runtime read them)
|
|
132
132
|
export * as planetOrbitChain from './planets/orbit-chain.cjs';
|
|
133
133
|
// P5/K4.6c — the engine-D Keplerian chain (pure evaluator + the embedded
|
|
134
134
|
// governed artifact; the browser flag path consumes exactly these).
|
|
@@ -150,7 +150,7 @@ export { createDeepOrbitalHistory } from './earth/deep-orbital-history.cjs';
|
|
|
150
150
|
// D6: the sidereal-year-of-date channel (banked λ̇ ratio × the caller's mass-loss law)
|
|
151
151
|
export { createSiderealYearChannel } from './earth/sidereal-year-channel.cjs';
|
|
152
152
|
// S2: THE ONE of-date year-length family (years + precession beats, SI seconds)
|
|
153
|
-
export { createYearLengths, ONE_FAMILY_WINDOW_YEARS } from './earth/year-lengths.cjs';
|
|
153
|
+
export { createYearLengths, computeMeanTropicalYearJ2000Days, ONE_FAMILY_WINDOW_YEARS } from './earth/year-lengths.cjs';
|
|
154
154
|
// Plan 06 D6: THE ONE home of the composed lunisolar precession rate ψ̇(t)
|
|
155
155
|
// (spin ω(t) × [solar torque + lunar torque on the recession history]) —
|
|
156
156
|
// leg-1's physical rate; the structural H(t)/13 clock is its named diagnostic.
|
|
@@ -174,7 +174,8 @@ export { createEclipseFinders } from './eclipse/finders.cjs';
|
|
|
174
174
|
// major — the published model package carries no comparison references;
|
|
175
175
|
// the K2 one-way wall is package-structural.)
|
|
176
176
|
// Phase 9 — S-P8: the fitted sun-longitude harmonic stack (three copies → one).
|
|
177
|
-
|
|
177
|
+
// (plan 09 step 5a: createSunLongitudeCorrection — the Step-0 Sun comb's evaluator,
|
|
178
|
+
// retired from the Sun node at plan 06 R4 — is deleted with the comb and its fitter.)
|
|
178
179
|
|
|
179
180
|
/**
|
|
180
181
|
* Build a model bound to a set of constants.
|
|
@@ -243,36 +244,11 @@ export const createModel = (constants = GENERATED, opts = {}) => {
|
|
|
243
244
|
constants: ctx,
|
|
244
245
|
hash,
|
|
245
246
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
* `createModel` ignored its argument entirely. Something has to READ the
|
|
252
|
-
* context and return a number for injection to be demonstrated end to end.
|
|
253
|
-
*
|
|
254
|
-
* These are NOT the published periods (plan 06 S5): the axial precession
|
|
255
|
-
* period is `epoch.axialPrecessionYearsAtYear` (25,771.4 yr at J2000, the
|
|
256
|
-
* of-date year laws' beat); H/13 = 25,793.6 is the fit anchor's reading,
|
|
257
|
-
* 0.086 % slow — H₀ was fitted on the perihelion-of-date beat. Likewise
|
|
258
|
-
* H/3 and H/16 against the chain's apsidal and perihelion-of-date periods.
|
|
259
|
-
* The property names keep their historical form (plan 06 P4).
|
|
260
|
-
*
|
|
261
|
-
* `divisor` and `period` are never interchangeable (CLAUDE.md): 13 is the
|
|
262
|
-
* divisor, H/13 years is the identity's value. The names say which.
|
|
263
|
-
*
|
|
264
|
-
* @returns {{axialPrecessionPeriodYears: number, inclinationPrecessionPeriodYears: number, perihelionPrecessionPeriodYears: number}}
|
|
265
|
-
*/
|
|
266
|
-
computeLatticePeriodsYears: () => {
|
|
267
|
-
const H = /** @type {{holisticyearLength: number}} */ (
|
|
268
|
-
/** @type {Record<string, unknown>} */ (ctx).foundational
|
|
269
|
-
).holisticyearLength;
|
|
270
|
-
return {
|
|
271
|
-
axialPrecessionPeriodYears: H / 13,
|
|
272
|
-
inclinationPrecessionPeriodYears: H / 3,
|
|
273
|
-
perihelionPrecessionPeriodYears: H / 16,
|
|
274
|
-
};
|
|
275
|
-
},
|
|
247
|
+
// Plan 09: the fit-era lattice identities H/13, H/3, H/16
|
|
248
|
+
// (`computeLatticePeriodsYears`, DEVICE tier) left this surface — the
|
|
249
|
+
// published periods are `epoch.axialPrecessionYearsAtYear` and the
|
|
250
|
+
// lunisolar surface's apsidal and perihelion-of-date periods; the
|
|
251
|
+
// counterfactual gate now reads the obliquity anchor through the assembly.
|
|
276
252
|
|
|
277
253
|
/**
|
|
278
254
|
* Earth eccentricity at a year — the Phase-6 promise, fulfilled by the
|
|
@@ -27,9 +27,8 @@ import { computeSolarTorqueShare } from '../earth/precession-composed.cjs';
|
|
|
27
27
|
* @property {number} alpha1PerMa
|
|
28
28
|
* @property {number} alpha3PerMa3
|
|
29
29
|
* @property {number} alpha4PerMa4
|
|
30
|
-
* @property {number} holisticYearJ2000 H
|
|
31
30
|
* @property {number} meanSiderealYearSeconds
|
|
32
|
-
* @property {number}
|
|
31
|
+
* @property {number} lodJ2000Seconds ω₀: the J2000 day length, SI seconds (the SI day since plan 09)
|
|
33
32
|
* @property {number} sunMassKg M_SUN
|
|
34
33
|
* @property {number} gmEarthAloneKm3S2
|
|
35
34
|
* @property {number} gmMoonAloneKm3S2
|
|
@@ -43,6 +42,7 @@ import { computeSolarTorqueShare } from '../earth/precession-composed.cjs';
|
|
|
43
42
|
* @property {number} astronomicalUnitKm 1 AU (km)
|
|
44
43
|
* @property {number} earthOrbitalEccentricityJ2000
|
|
45
44
|
* @property {number} moonEclipticInclinationJ2000Deg
|
|
45
|
+
* @property {number} axialPrecessionJ2000Years the model's ONE J2000 precession reading (1,296,000/p_A; plan 09)
|
|
46
46
|
*/
|
|
47
47
|
|
|
48
48
|
/**
|
|
@@ -54,8 +54,10 @@ export const deriveEpochParams = (raw) => {
|
|
|
54
54
|
const cSiMPerS = raw.speedOfLightKmPerS ? raw.speedOfLightKmPerS * 1000 : 299792458;
|
|
55
55
|
const dmDtTotalKgS = raw.solarLuminosityW / (cSiMPerS * cSiMPerS) + raw.solarWindKgPerS;
|
|
56
56
|
|
|
57
|
-
// J2000 anchors
|
|
58
|
-
|
|
57
|
+
// J2000 anchors. Plan 09: ω₀ is the SI day (an input, 86,400 s); the
|
|
58
|
+
// identifier keeps its historical name — the H/13 kinematic-day
|
|
59
|
+
// construction it once named (86,399.99968 s) is deleted.
|
|
60
|
+
const lodNowH13Seconds = raw.lodJ2000Seconds;
|
|
59
61
|
const solarMassLossFracPerYear = dmDtTotalKgS * raw.meanSiderealYearSeconds / raw.sunMassKg;
|
|
60
62
|
|
|
61
63
|
// Earth mass, moments
|
|
@@ -93,10 +95,13 @@ export const deriveEpochParams = (raw) => {
|
|
|
93
95
|
moonEccentricityFactor,
|
|
94
96
|
earthMassKg,
|
|
95
97
|
earthRadiusM,
|
|
96
|
-
holisticYearJ2000: raw.holisticYearJ2000,
|
|
97
98
|
lodNowH13Seconds,
|
|
98
99
|
siderealYearJ2000Seconds: raw.meanSiderealYearSeconds,
|
|
99
100
|
solarMassLossFracPerYear,
|
|
100
101
|
precessionSolarShareJ2000,
|
|
102
|
+
// p₀, the composed precession rate's J2000 anchor — the tropical year of
|
|
103
|
+
// date's equinox term (plan 09 step 5d; the same expression the deep-time
|
|
104
|
+
// factory's composed module resolves, so the twins stay bit-identical)
|
|
105
|
+
precessionRateJ2000ArcsecPerYr: 1296000 / raw.axialPrecessionJ2000Years,
|
|
101
106
|
});
|
|
102
107
|
};
|