@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.
- package/README.md +21 -0
- package/package.json +2 -2
- package/src/climate/l1-orbital.cjs +27 -3
- package/src/constants/generated.d.ts +3 -2
- package/src/constants/generated.js +4 -3
- package/src/earth/deep-orbital-history.cjs +147 -35
- package/src/earth/sidereal-channel-artifact.cjs +4 -3
- package/src/earth/sidereal-year-channel.cjs +14 -4
- package/src/earth/year-lengths.cjs +88 -53
- package/src/model.js +27 -14
- package/src/moon/deep-modes-artifact.cjs +2 -2
- package/src/phase/deep-calendar.cjs +6 -0
- package/types/climate/l1-orbital.d.cts +24 -3
- package/types/constants/generated.d.ts +3 -2
- package/types/earth/deep-orbital-history.d.cts +20 -2
- package/types/earth/sidereal-channel-artifact.d.cts +2 -2
- package/types/earth/year-lengths.d.cts +14 -16
- package/types/model.d.ts +8 -2
- package/types/moon/deep-modes-artifact.d.cts +14 -1
- package/types/phase/deep-calendar.d.cts +5 -0
|
@@ -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:
|
|
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: "
|
|
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,
|
|
8
|
-
*
|
|
9
|
-
* tier where the artifact is
|
|
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
|
|
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
|
|
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: "
|
|
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
|