@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/planets/geometry.cjs
CHANGED
|
@@ -8,10 +8,19 @@
|
|
|
8
8
|
* type-branched function over a body record — the shape the model's claim
|
|
9
9
|
* has always had (six laws, per-body parameters).
|
|
10
10
|
*
|
|
11
|
-
* EXPRESSION FORMS ARE THE BROWSER'S (the certified engine) —
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* EXPRESSION FORMS ARE THE BROWSER'S (the certified engine) — so browser
|
|
12
|
+
* bit-identity holds by construction; Node's last-ulp variants dissolve here
|
|
13
|
+
* (the cardinal-extraction pattern).
|
|
14
|
+
*
|
|
15
|
+
* PLAN 09 STEP 7b: the device count is gone. The geometry used to quantize
|
|
16
|
+
* every body's period onto the unit — N = round(H·mSY/input) orbits per
|
|
17
|
+
* anchor interval, period H/N, a = (H/N)^(2/3) — a rounding of up to half a
|
|
18
|
+
* count (2.5e-4 of Neptune's period). The caller now hands in the period in
|
|
19
|
+
* SI days directly (the chain's J2000 window mean motion for the seven chain
|
|
20
|
+
* planets, the observed input for the no-chain bodies) and, where a chain
|
|
21
|
+
* exists, the chain's J2000 semi-major axis; Kepler's a from the period is the
|
|
22
|
+
* fallback for the no-chain bodies. Rotation periods are the inputs (they were
|
|
23
|
+
* rounded onto the count too), Mercury's the 3:2 lock on its orbital period.
|
|
15
24
|
*
|
|
16
25
|
* Type classification (the survey's measured taxonomy):
|
|
17
26
|
* - Type I (mercury, venus): peri = a·e_real·100, elip = peri/2
|
|
@@ -40,7 +49,8 @@
|
|
|
40
49
|
* @typedef {{
|
|
41
50
|
* key: string,
|
|
42
51
|
* type?: string,
|
|
43
|
-
*
|
|
52
|
+
* periodDays: number,
|
|
53
|
+
* semiMajorAxisAu?: number,
|
|
44
54
|
* orbitalEccentricityBase?: number,
|
|
45
55
|
* longitudePerihelion?: number,
|
|
46
56
|
* ascendingNode?: number,
|
|
@@ -50,19 +60,19 @@
|
|
|
50
60
|
*/
|
|
51
61
|
|
|
52
62
|
/**
|
|
53
|
-
* @param {PlanetGeometryBody} body
|
|
63
|
+
* @param {PlanetGeometryBody} body — `periodDays` the body's sidereal orbital
|
|
64
|
+
* period in SI days; `semiMajorAxisAu` the chain's J2000 a where a chain
|
|
65
|
+
* exists (else Kepler's a from the period, in the scene's solar-year units)
|
|
54
66
|
* @param {{
|
|
55
|
-
* holisticYears: number,
|
|
56
67
|
* meanSolarYearDays: number,
|
|
57
68
|
* currentAUDistanceKm: number,
|
|
58
69
|
* earthEccentricityJ2000: number,
|
|
59
70
|
* earthPerihelionLongitudeJ2000Deg: number,
|
|
60
|
-
* }} env — the engine's J2000 values
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* untouched by this layer).
|
|
71
|
+
* }} env — the engine's J2000 values; `meanSolarYearDays` is the scene's
|
|
72
|
+
* year unit (`pos` counts mean solar years), so `periodYears` is the period
|
|
73
|
+
* in that unit, the scaffold's `speed` = 2π/periodYears.
|
|
64
74
|
* @returns {{
|
|
65
|
-
*
|
|
75
|
+
* orbitDistance: number, periodYears: number, periodDays: number,
|
|
66
76
|
* realOrbitalEccentricity: (number | undefined),
|
|
67
77
|
* elipticOrbit: (number | undefined), perihelionDistance: (number | undefined),
|
|
68
78
|
* speedKmh: number, rotationPeriodHours: (number | undefined),
|
|
@@ -70,17 +80,18 @@
|
|
|
70
80
|
* }}
|
|
71
81
|
*/
|
|
72
82
|
function derivePlanetGeometry(body, env) {
|
|
73
|
-
const { key, type,
|
|
83
|
+
const { key, type, periodDays, semiMajorAxisAu, orbitalEccentricityBase: base,
|
|
74
84
|
longitudePerihelion, ascendingNode, rotationPeriodDays, orbitDistanceOverride } = body;
|
|
75
|
-
const {
|
|
85
|
+
const { meanSolarYearDays: mSY, currentAUDistanceKm: AU,
|
|
76
86
|
earthEccentricityJ2000, earthPerihelionLongitudeJ2000Deg } = env;
|
|
77
87
|
|
|
78
|
-
const
|
|
88
|
+
const periodYears = periodDays / mSY; // in the scene's year unit (mean solar years)
|
|
79
89
|
const orbitDistance = orbitDistanceOverride !== undefined
|
|
80
90
|
? orbitDistanceOverride
|
|
81
|
-
:
|
|
82
|
-
|
|
83
|
-
|
|
91
|
+
: semiMajorAxisAu !== undefined
|
|
92
|
+
? semiMajorAxisAu
|
|
93
|
+
: (periodYears ** 2) ** (1 / 3);
|
|
94
|
+
const speedKmh = (orbitDistance * AU * Math.PI * 2) / periodDays / 24;
|
|
84
95
|
|
|
85
96
|
/** @type {number | undefined} */
|
|
86
97
|
let realOrbitalEccentricity;
|
|
@@ -127,19 +138,37 @@ function derivePlanetGeometry(body, env) {
|
|
|
127
138
|
/** @type {number | undefined} */
|
|
128
139
|
let rotationPeriodHours;
|
|
129
140
|
if (key === 'mercury') {
|
|
130
|
-
// 3:2 spin-orbit lock —
|
|
131
|
-
rotationPeriodHours = 24 *
|
|
141
|
+
// 3:2 spin-orbit lock — three sidereal rotations per two orbits.
|
|
142
|
+
rotationPeriodHours = 24 * periodDays / (3 / 2);
|
|
132
143
|
} else if (rotationPeriodDays !== undefined) {
|
|
133
|
-
rotationPeriodHours = 24 *
|
|
144
|
+
rotationPeriodHours = 24 * rotationPeriodDays;
|
|
134
145
|
}
|
|
135
146
|
|
|
136
147
|
const lowestPoint = ascendingNode !== undefined ? 180 - ascendingNode : undefined;
|
|
137
148
|
|
|
138
149
|
return {
|
|
139
|
-
|
|
150
|
+
orbitDistance, periodYears, periodDays, realOrbitalEccentricity,
|
|
140
151
|
elipticOrbit, perihelionDistance, speedKmh, rotationPeriodHours,
|
|
141
152
|
eccentricityPerihelion, lowestPoint,
|
|
142
153
|
};
|
|
143
154
|
}
|
|
144
155
|
|
|
145
|
-
|
|
156
|
+
/**
|
|
157
|
+
* The scaffold's orbit inputs for one body — ONE home for the rule (plan 09
|
|
158
|
+
* step 7b): where the governed engine-D chain artifact has the body, the
|
|
159
|
+
* chain's J2000 semi-major axis and its fitted era-window mean motion (deg
|
|
160
|
+
* per Julian year → the period in SI days); otherwise the body's observed
|
|
161
|
+
* period input (the no-chain bodies Pluto, Halley, Eros, Ceres).
|
|
162
|
+
* @param {string} key
|
|
163
|
+
* @param {any} chainArtifact the CHAIN_ARTIFACT (or the governed JSON it embeds)
|
|
164
|
+
* @param {number} fallbackPeriodDays the observed period input, SI days
|
|
165
|
+
* @returns {{ periodDays: number, semiMajorAxisAu: (number | undefined) }}
|
|
166
|
+
*/
|
|
167
|
+
function scaffoldOrbitInputs(key, chainArtifact, fallbackPeriodDays) {
|
|
168
|
+
const w = chainArtifact && chainArtifact.windowElementRates && chainArtifact.windowElementRates[key];
|
|
169
|
+
const a = chainArtifact && chainArtifact.j2000AnchorElements && chainArtifact.j2000AnchorElements[key];
|
|
170
|
+
if (w && a) return { periodDays: 360 / w.meanMotionDegPerYr * 365.25, semiMajorAxisAu: a.aAU };
|
|
171
|
+
return { periodDays: fallbackPeriodDays, semiMajorAxisAu: undefined };
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
module.exports = { derivePlanetGeometry, scaffoldOrbitInputs };
|
package/src/planets/model.cjs
CHANGED
|
@@ -31,12 +31,12 @@
|
|
|
31
31
|
|
|
32
32
|
'use strict';
|
|
33
33
|
|
|
34
|
-
const { derivePlanetGeometry } = require('./geometry.cjs');
|
|
34
|
+
const { derivePlanetGeometry, scaffoldOrbitInputs } = require('./geometry.cjs');
|
|
35
35
|
|
|
36
36
|
/**
|
|
37
37
|
* @typedef {Object} PlanetModelBody
|
|
38
38
|
* @property {string} [type] - geometry type branch ('I' | 'II' | 'III')
|
|
39
|
-
* @property {number} solarYearInput
|
|
39
|
+
* @property {number} solarYearInput - the observed sidereal period input, SI days (the scaffold period of the no-chain bodies; the chain planets ride the artifact's elements)
|
|
40
40
|
* @property {number} [invPlaneInclinationJ2000]
|
|
41
41
|
* @property {number} [longitudePerihelion]
|
|
42
42
|
* @property {number} [wobblePeriodYears] - carriers: the chain's g-mode beat (input since Phase 7 commit 2)
|
|
@@ -52,7 +52,7 @@ const { derivePlanetGeometry } = require('./geometry.cjs');
|
|
|
52
52
|
|
|
53
53
|
/**
|
|
54
54
|
* @typedef {Object} PlanetModelEnv
|
|
55
|
-
* @property {
|
|
55
|
+
* @property {any} [chainArtifact] - the governed engine-D chain artifact (CHAIN_ARTIFACT): the seven chain planets' scaffold a and period ride its J2000 elements (plan 09 step 7b)
|
|
56
56
|
* @property {number} meanSolarYearDays
|
|
57
57
|
* @property {number} balancedYear
|
|
58
58
|
* @property {number} systemResetN
|
|
@@ -84,7 +84,6 @@ function createPlanetModel(env, bodies) {
|
|
|
84
84
|
// from env.calibration) went with the inclination law.
|
|
85
85
|
|
|
86
86
|
const geomEnv = {
|
|
87
|
-
holisticYears: env.holisticYears,
|
|
88
87
|
meanSolarYearDays: env.meanSolarYearDays,
|
|
89
88
|
currentAUDistanceKm: env.currentAUDistanceKm,
|
|
90
89
|
earthEccentricityJ2000: env.earthEccentricityJ2000,
|
|
@@ -114,7 +113,8 @@ function createPlanetModel(env, bodies) {
|
|
|
114
113
|
|
|
115
114
|
rec.geometry = derivePlanetGeometry({
|
|
116
115
|
key, type: b.type,
|
|
117
|
-
|
|
116
|
+
// plan 09 step 7b: the chain's J2000 elements where the artifact has the body, else the observed period input
|
|
117
|
+
...scaffoldOrbitInputs(key, env.chainArtifact, b.solarYearInput),
|
|
118
118
|
orbitalEccentricityBase: b.orbitalEccentricityBase !== undefined
|
|
119
119
|
? b.orbitalEccentricityBase : b.orbitalEccentricityJ2000,
|
|
120
120
|
longitudePerihelion: b.longitudePerihelion,
|
|
@@ -5,7 +5,6 @@ export type PeriodSecondsAtAge = (tMa: number) => (number | null);
|
|
|
5
5
|
/**
|
|
6
6
|
* @param {{
|
|
7
7
|
* ageAnchorYear: number,
|
|
8
|
-
* tropicalYearSecondsAtAge: (tMa: number) => (number | null),
|
|
9
8
|
* tropicalYearJ2000Seconds: number,
|
|
10
9
|
* isDeepTime: () => boolean,
|
|
11
10
|
* gridMinYear?: number,
|
|
@@ -15,12 +14,18 @@ export type PeriodSecondsAtAge = (tMa: number) => (number | null);
|
|
|
15
14
|
* maxCacheEntries?: number,
|
|
16
15
|
* }} deps — ageAnchorYear is the year whose age is 0 in the period
|
|
17
16
|
* functions' t_Ma coordinate (startmodelYear = 2000.5, the certified
|
|
18
|
-
* convention); tropicalYearJ2000Seconds
|
|
17
|
+
* convention); tropicalYearJ2000Seconds is the length of ONE tick of the
|
|
18
|
+
* year axis the integrator is fed — the linear SI-year label, each tick
|
|
19
|
+
* exactly one J2000 tropical year of seconds — so it is the integrand's
|
|
20
|
+
* weight in BOTH branches (plan 09 step 7c′: the deep branch had weighted
|
|
21
|
+
* each tick by the tropical year OF DATE, adding that year's deep-time
|
|
22
|
+
* drift to every lunar count — ~5° of Moon at ±100 kyr, ~1.3 orbits at
|
|
23
|
+
* 1 Ma — although the tick itself never changes length; the owner's call:
|
|
24
|
+
* a plain correctness fix, the tick already is an SI tick);
|
|
19
25
|
* isDeepTime is read PER CALL so the engine's runtime toggle works.
|
|
20
26
|
*/
|
|
21
|
-
export function createChainCycleIntegrator({ ageAnchorYear,
|
|
27
|
+
export function createChainCycleIntegrator({ ageAnchorYear, tropicalYearJ2000Seconds, isDeepTime, gridMinYear, gridMaxYear, gridStepYears, gridAnchorYear, maxCacheEntries, }: {
|
|
22
28
|
ageAnchorYear: number;
|
|
23
|
-
tropicalYearSecondsAtAge: (tMa: number) => (number | null);
|
|
24
29
|
tropicalYearJ2000Seconds: number;
|
|
25
30
|
isDeepTime: () => boolean;
|
|
26
31
|
gridMinYear?: number;
|
|
@@ -2,73 +2,10 @@
|
|
|
2
2
|
// The fitted coefficients' shapes for TypeScript consumers (§2g); values live
|
|
3
3
|
// in coefficients.js, emitted VERBATIM from fitted-coefficients.json.
|
|
4
4
|
|
|
5
|
-
export declare const COEFFICIENTS_HASH: "
|
|
5
|
+
export declare const COEFFICIENTS_HASH: "91e2d041c7b6e038";
|
|
6
6
|
|
|
7
7
|
export declare const FITTED_COEFFICIENTS: {
|
|
8
|
-
readonly ANOMALISTIC_YEAR_HARMONICS: Array<[number, number, number]>;
|
|
9
8
|
readonly BALANCE_PRESETS: Array<Array<number | string>>;
|
|
10
|
-
readonly CARDINAL_POINT_ANCHORS: {
|
|
11
|
-
"SS": number;
|
|
12
|
-
"WS": number;
|
|
13
|
-
"VE": number;
|
|
14
|
-
"AE": number;
|
|
15
|
-
};
|
|
16
|
-
readonly CARDINAL_POINT_ANCHORS_ADJUSTED: {
|
|
17
|
-
"SS": number;
|
|
18
|
-
"WS": number;
|
|
19
|
-
"VE": number;
|
|
20
|
-
"AE": number;
|
|
21
|
-
};
|
|
22
|
-
readonly CARDINAL_POINT_DERIVED: {
|
|
23
|
-
"lincoef": number;
|
|
24
|
-
"h0": number;
|
|
25
|
-
"h1": number;
|
|
26
|
-
"eccOrderDivisors": [number, number];
|
|
27
|
-
"note": string;
|
|
28
|
-
};
|
|
29
|
-
readonly CARDINAL_POINT_ECC_TERMS: {
|
|
30
|
-
"SS": Array<{
|
|
31
|
-
"order": number;
|
|
32
|
-
"sin": number;
|
|
33
|
-
"cos": number;
|
|
34
|
-
}>;
|
|
35
|
-
"WS": Array<{
|
|
36
|
-
"order": number;
|
|
37
|
-
"sin": number;
|
|
38
|
-
"cos": number;
|
|
39
|
-
}>;
|
|
40
|
-
"VE": Array<{
|
|
41
|
-
"order": number;
|
|
42
|
-
"sin": number;
|
|
43
|
-
"cos": number;
|
|
44
|
-
}>;
|
|
45
|
-
"AE": Array<{
|
|
46
|
-
"order": number;
|
|
47
|
-
"sin": number;
|
|
48
|
-
"cos": number;
|
|
49
|
-
}>;
|
|
50
|
-
};
|
|
51
|
-
readonly CARDINAL_POINT_HARMONICS: {
|
|
52
|
-
"SS": Array<[number, number, number]>;
|
|
53
|
-
"WS": Array<[number, number, number]>;
|
|
54
|
-
"VE": Array<[number, number, number]>;
|
|
55
|
-
"AE": Array<[number, number, number]>;
|
|
56
|
-
};
|
|
57
|
-
readonly CARDINAL_POINT_JOINT_TERMS: {
|
|
58
|
-
"quadratureDeg": {
|
|
59
|
-
"SS": number;
|
|
60
|
-
"AE": number;
|
|
61
|
-
"WS": number;
|
|
62
|
-
"VE": number;
|
|
63
|
-
};
|
|
64
|
-
"terms": Array<{
|
|
65
|
-
"order": number;
|
|
66
|
-
"div": number;
|
|
67
|
-
"sin": number;
|
|
68
|
-
"cos": number;
|
|
69
|
-
}>;
|
|
70
|
-
"note": string;
|
|
71
|
-
};
|
|
72
9
|
readonly CLIMATE_FORMULA_COEFFS: {
|
|
73
10
|
"config": {
|
|
74
11
|
"L1_lines": Array<{
|
|
@@ -303,105 +240,105 @@ export declare const FITTED_COEFFICIENTS: {
|
|
|
303
240
|
"delta_l3": number;
|
|
304
241
|
};
|
|
305
242
|
"carbon_amplification_ratios": {
|
|
306
|
-
"19.
|
|
243
|
+
"19.0015": {
|
|
307
244
|
"period_kyr": number;
|
|
308
245
|
"lr04_post_mpt_amp": number;
|
|
309
246
|
"epica_amp": number;
|
|
310
247
|
"ratio": number;
|
|
311
248
|
"label": string;
|
|
312
249
|
};
|
|
313
|
-
"19.
|
|
250
|
+
"19.1555": {
|
|
314
251
|
"period_kyr": number;
|
|
315
252
|
"lr04_post_mpt_amp": number;
|
|
316
253
|
"epica_amp": number;
|
|
317
254
|
"ratio": number;
|
|
318
255
|
"label": string;
|
|
319
256
|
};
|
|
320
|
-
"22.
|
|
257
|
+
"22.4453": {
|
|
321
258
|
"period_kyr": number;
|
|
322
259
|
"lr04_post_mpt_amp": number;
|
|
323
260
|
"epica_amp": number;
|
|
324
261
|
"ratio": number;
|
|
325
262
|
"label": string;
|
|
326
263
|
};
|
|
327
|
-
"23.
|
|
264
|
+
"23.1933": {
|
|
328
265
|
"period_kyr": number;
|
|
329
266
|
"lr04_post_mpt_amp": number;
|
|
330
267
|
"epica_amp": number;
|
|
331
268
|
"ratio": number;
|
|
332
269
|
"label": string;
|
|
333
270
|
};
|
|
334
|
-
"23.
|
|
271
|
+
"23.7601": {
|
|
335
272
|
"period_kyr": number;
|
|
336
273
|
"lr04_post_mpt_amp": number;
|
|
337
274
|
"epica_amp": number;
|
|
338
275
|
"ratio": number;
|
|
339
276
|
"label": string;
|
|
340
277
|
};
|
|
341
|
-
"27.
|
|
278
|
+
"27.2691": {
|
|
342
279
|
"period_kyr": number;
|
|
343
280
|
"lr04_post_mpt_amp": number;
|
|
344
281
|
"epica_amp": number;
|
|
345
282
|
"ratio": number;
|
|
346
283
|
"label": string;
|
|
347
284
|
};
|
|
348
|
-
"28.
|
|
285
|
+
"28.8426": {
|
|
349
286
|
"period_kyr": number;
|
|
350
287
|
"lr04_post_mpt_amp": number;
|
|
351
288
|
"epica_amp": number;
|
|
352
289
|
"ratio": number;
|
|
353
290
|
"label": string;
|
|
354
291
|
};
|
|
355
|
-
"29.
|
|
292
|
+
"29.0050": {
|
|
356
293
|
"period_kyr": number;
|
|
357
294
|
"lr04_post_mpt_amp": number;
|
|
358
295
|
"epica_amp": number;
|
|
359
296
|
"ratio": number;
|
|
360
297
|
"label": string;
|
|
361
298
|
};
|
|
362
|
-
"29.
|
|
299
|
+
"29.6174": {
|
|
363
300
|
"period_kyr": number;
|
|
364
301
|
"lr04_post_mpt_amp": number;
|
|
365
302
|
"epica_amp": number;
|
|
366
303
|
"ratio": number;
|
|
367
304
|
"label": string;
|
|
368
305
|
};
|
|
369
|
-
"29.
|
|
306
|
+
"29.8094": {
|
|
370
307
|
"period_kyr": number;
|
|
371
308
|
"lr04_post_mpt_amp": number;
|
|
372
309
|
"epica_amp": number;
|
|
373
310
|
"ratio": number;
|
|
374
311
|
"label": string;
|
|
375
312
|
};
|
|
376
|
-
"39.
|
|
313
|
+
"39.5564": {
|
|
377
314
|
"period_kyr": number;
|
|
378
315
|
"lr04_post_mpt_amp": number;
|
|
379
316
|
"epica_amp": number;
|
|
380
317
|
"ratio": number;
|
|
381
318
|
"label": string;
|
|
382
319
|
};
|
|
383
|
-
"40.
|
|
320
|
+
"40.2297": {
|
|
384
321
|
"period_kyr": number;
|
|
385
322
|
"lr04_post_mpt_amp": number;
|
|
386
323
|
"epica_amp": number;
|
|
387
324
|
"ratio": number;
|
|
388
325
|
"label": string;
|
|
389
326
|
};
|
|
390
|
-
"40.
|
|
327
|
+
"40.9244": {
|
|
391
328
|
"period_kyr": number;
|
|
392
329
|
"lr04_post_mpt_amp": number;
|
|
393
330
|
"epica_amp": number;
|
|
394
331
|
"ratio": number;
|
|
395
332
|
"label": string;
|
|
396
333
|
};
|
|
397
|
-
"41.
|
|
334
|
+
"41.6450": {
|
|
398
335
|
"period_kyr": number;
|
|
399
336
|
"lr04_post_mpt_amp": number;
|
|
400
337
|
"epica_amp": number;
|
|
401
338
|
"ratio": number;
|
|
402
339
|
"label": string;
|
|
403
340
|
};
|
|
404
|
-
"53.
|
|
341
|
+
"53.6182": {
|
|
405
342
|
"period_kyr": number;
|
|
406
343
|
"lr04_post_mpt_amp": number;
|
|
407
344
|
"epica_amp": number;
|
|
@@ -634,17 +571,4 @@ export declare const FITTED_COEFFICIENTS: {
|
|
|
634
571
|
};
|
|
635
572
|
readonly MEEUS_LATITUDE_TERMS: Array<number[]>;
|
|
636
573
|
readonly MEEUS_LONGITUDE_TERMS: Array<number[]>;
|
|
637
|
-
readonly PERI_HARMONICS_RAW: Array<[number, number, number]>;
|
|
638
|
-
readonly PERI_OFFSET: number;
|
|
639
|
-
readonly RA_DAY_OFFSET_MS: {
|
|
640
|
-
"mean": number;
|
|
641
|
-
"terms": Array<[number, number, number]>;
|
|
642
|
-
"note": string;
|
|
643
|
-
};
|
|
644
|
-
readonly SIDEREAL_YEAR_HARMONICS: Array<[number, number, number]>;
|
|
645
|
-
readonly SOLSTICE_OBLIQUITY_HARMONICS: Array<[number, number, number]>;
|
|
646
|
-
readonly SOLSTICE_OBLIQUITY_MEAN_FITTED: number;
|
|
647
|
-
readonly SUN_LONGITUDE_HARMONICS: Array<[number, number, number]>;
|
|
648
|
-
readonly SUN_LONGITUDE_MEAN: number;
|
|
649
|
-
readonly TROPICAL_YEAR_HARMONICS: Array<[number, number, number]>;
|
|
650
574
|
};
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
// Gives the TypeScript website full type safety at the boundary (§2g) while
|
|
3
3
|
// packages/physics stays JavaScript.
|
|
4
4
|
|
|
5
|
-
export declare const CONSTANTS_HASH: "
|
|
5
|
+
export declare const CONSTANTS_HASH: "c161ec19e5984b9e";
|
|
6
6
|
|
|
7
7
|
export declare const MODEL_VERSION: string;
|
|
8
8
|
|
|
9
9
|
export declare const PREPRINT_DOI: string;
|
|
10
10
|
|
|
11
11
|
export declare const DEFAULT_CONSTANTS: {
|
|
12
|
-
readonly hash: "
|
|
12
|
+
readonly hash: "c161ec19e5984b9e";
|
|
13
13
|
readonly additionalBodies: {
|
|
14
14
|
"pluto": {
|
|
15
15
|
"name": string;
|
|
@@ -148,6 +148,14 @@ export declare const DEFAULT_CONSTANTS: {
|
|
|
148
148
|
"earthInvPlaneInclinationAmplitude": number;
|
|
149
149
|
"eccentricityBase": number;
|
|
150
150
|
"eccentricityAmplitude": number;
|
|
151
|
+
"kDeviceInclinationPhaseJ2000Deg": number;
|
|
152
|
+
"kDeviceWheelPeriodYears": {
|
|
153
|
+
"3": number;
|
|
154
|
+
"5": number;
|
|
155
|
+
"8": number;
|
|
156
|
+
"13": number;
|
|
157
|
+
"16": number;
|
|
158
|
+
};
|
|
151
159
|
"kDeviceWheelPhaseAtJ2000Cycles": number;
|
|
152
160
|
};
|
|
153
161
|
readonly earthOrbital: {
|
|
@@ -156,13 +164,13 @@ export declare const DEFAULT_CONSTANTS: {
|
|
|
156
164
|
"juneSolstice2000_JD": number;
|
|
157
165
|
"obliquityJ2000_deg": number;
|
|
158
166
|
"obliquityRate_arcsecPerCentury": number;
|
|
167
|
+
"generalPrecessionJ2000_arcsecPerYr": number;
|
|
159
168
|
"earthEccentricityJ2000": number;
|
|
160
169
|
"earthEccentricityDotJ2000": number;
|
|
161
170
|
"earthEccentricityDotDotJ2000": number;
|
|
162
171
|
"earthPerihelionLongitudeJ2000": number;
|
|
163
172
|
"sunMeanLongitudeJ2000_deg": number;
|
|
164
173
|
"earthAscendingNodeInvPlane": number;
|
|
165
|
-
"earthInclinationCycleAnchor": number;
|
|
166
174
|
"perihelionPassageJ2000_JD": number;
|
|
167
175
|
"earthInclinationJ2000_deg": number;
|
|
168
176
|
"earthInclinationRate_arcsecPerCentury": number;
|
|
@@ -170,9 +178,6 @@ export declare const DEFAULT_CONSTANTS: {
|
|
|
170
178
|
"sunTilt": number;
|
|
171
179
|
};
|
|
172
180
|
readonly foundational: {
|
|
173
|
-
"holisticyearLength": number;
|
|
174
|
-
"stepYears": number;
|
|
175
|
-
"inputmeanlengthsolaryearindays": number;
|
|
176
181
|
"startmodelJD": number;
|
|
177
182
|
"startmodelYear": number;
|
|
178
183
|
"correctionDays": number;
|
|
@@ -480,7 +485,6 @@ export declare const DEFAULT_CONSTANTS: {
|
|
|
480
485
|
"type": string;
|
|
481
486
|
"mirrorPair": string;
|
|
482
487
|
"ascendingNodeInvPlane": number;
|
|
483
|
-
"ascendingNodeCyclesIn8H": number;
|
|
484
488
|
};
|
|
485
489
|
"venus": {
|
|
486
490
|
"name": string;
|
|
@@ -490,7 +494,6 @@ export declare const DEFAULT_CONSTANTS: {
|
|
|
490
494
|
"type": string;
|
|
491
495
|
"mirrorPair": string;
|
|
492
496
|
"ascendingNodeInvPlane": number;
|
|
493
|
-
"ascendingNodeCyclesIn8H": number;
|
|
494
497
|
};
|
|
495
498
|
"mars": {
|
|
496
499
|
"name": string;
|
|
@@ -500,7 +503,6 @@ export declare const DEFAULT_CONSTANTS: {
|
|
|
500
503
|
"type": string;
|
|
501
504
|
"mirrorPair": string;
|
|
502
505
|
"ascendingNodeInvPlane": number;
|
|
503
|
-
"ascendingNodeCyclesIn8H": number;
|
|
504
506
|
};
|
|
505
507
|
"jupiter": {
|
|
506
508
|
"name": string;
|
|
@@ -510,7 +512,6 @@ export declare const DEFAULT_CONSTANTS: {
|
|
|
510
512
|
"type": string;
|
|
511
513
|
"mirrorPair": string;
|
|
512
514
|
"ascendingNodeInvPlane": number;
|
|
513
|
-
"ascendingNodeCyclesIn8H": number;
|
|
514
515
|
};
|
|
515
516
|
"saturn": {
|
|
516
517
|
"name": string;
|
|
@@ -520,7 +521,6 @@ export declare const DEFAULT_CONSTANTS: {
|
|
|
520
521
|
"type": string;
|
|
521
522
|
"mirrorPair": string;
|
|
522
523
|
"ascendingNodeInvPlane": number;
|
|
523
|
-
"ascendingNodeCyclesIn8H": number;
|
|
524
524
|
};
|
|
525
525
|
"uranus": {
|
|
526
526
|
"name": string;
|
|
@@ -530,7 +530,6 @@ export declare const DEFAULT_CONSTANTS: {
|
|
|
530
530
|
"type": string;
|
|
531
531
|
"mirrorPair": string;
|
|
532
532
|
"ascendingNodeInvPlane": number;
|
|
533
|
-
"ascendingNodeCyclesIn8H": number;
|
|
534
533
|
};
|
|
535
534
|
"neptune": {
|
|
536
535
|
"name": string;
|
|
@@ -540,7 +539,6 @@ export declare const DEFAULT_CONSTANTS: {
|
|
|
540
539
|
"type": string;
|
|
541
540
|
"mirrorPair": string;
|
|
542
541
|
"ascendingNodeInvPlane": number;
|
|
543
|
-
"ascendingNodeCyclesIn8H": number;
|
|
544
542
|
};
|
|
545
543
|
};
|
|
546
544
|
readonly timeReference: {
|
|
@@ -556,10 +554,7 @@ export declare const DEFAULT_CONSTANTS: {
|
|
|
556
554
|
"tropicalYearSS": number;
|
|
557
555
|
"tropicalYearAE": number;
|
|
558
556
|
"tropicalYearWS": number;
|
|
559
|
-
"tropicalYearMean": number;
|
|
560
|
-
"anomalisticYear": number;
|
|
561
557
|
"siderealYear": number;
|
|
562
|
-
"iauPrecessionJ2000": number;
|
|
563
558
|
"tropicalYearRateSecPerCentury": number;
|
|
564
559
|
"solarDay": number;
|
|
565
560
|
"siderealDay": number;
|
|
@@ -716,6 +711,7 @@ export declare const REFERENCE_DATA: {
|
|
|
716
711
|
"meeusPeriLong2000AD": number;
|
|
717
712
|
"meeusPeriLong2500AD": number;
|
|
718
713
|
"meeusPeriLong3000AD": number;
|
|
714
|
+
"simon1994AnomalisticYearDays": number;
|
|
719
715
|
"mainstreamAxialPrecKyr": number;
|
|
720
716
|
"mainstreamPeriPrecKyr": number;
|
|
721
717
|
"mainstreamObliqCycleKyr": number;
|
|
@@ -25,17 +25,12 @@ export type DeepTimeLodConstants = {
|
|
|
25
25
|
alpha1PerMa: number;
|
|
26
26
|
alpha3PerMa3: number;
|
|
27
27
|
alpha4PerMa4: number;
|
|
28
|
-
holisticYearJ2000: number;
|
|
29
28
|
/**
|
|
30
|
-
* - the
|
|
29
|
+
* - ω₀, the J2000 day length (the SI day since plan 09; identifier kept)
|
|
31
30
|
*/
|
|
32
31
|
lodNowH13Seconds: number;
|
|
33
32
|
meanSiderealYearJ2000Seconds: number;
|
|
34
33
|
solarMassLossFracPerYear: number;
|
|
35
|
-
/**
|
|
36
|
-
* - Actual-LOD numerator
|
|
37
|
-
*/
|
|
38
|
-
siderealYearDaysKinematicJ2000: number;
|
|
39
34
|
/**
|
|
40
35
|
* - f_S, the solar fraction of the J2000
|
|
41
36
|
* precession torque (derive-params) — the unit H(t) = 13·T_p,composed needs it
|
|
@@ -49,7 +44,6 @@ export type DeepTimeLodDeps = {
|
|
|
49
44
|
* - GIA α(t)
|
|
50
45
|
*/
|
|
51
46
|
moiFactorAtAge: (tMa: number) => number;
|
|
52
|
-
siderealYearDaysFourierAt: (year: number) => number;
|
|
53
47
|
/**
|
|
54
48
|
* - gated δLOD sum (incl. swing)
|
|
55
49
|
*/
|
|
@@ -101,11 +95,9 @@ export type DeepTimeLodDeps = {
|
|
|
101
95
|
* @property {number} aMoonNowMetres - Farhat polynomial anchor
|
|
102
96
|
* @property {number} alpha1PerMa @property {number} alpha3PerMa3
|
|
103
97
|
* @property {number} alpha4PerMa4
|
|
104
|
-
* @property {number}
|
|
105
|
-
* @property {number} lodNowH13Seconds - the H/13-identity mean LOD at J2000
|
|
98
|
+
* @property {number} lodNowH13Seconds - ω₀, the J2000 day length (the SI day since plan 09; identifier kept)
|
|
106
99
|
* @property {number} meanSiderealYearJ2000Seconds
|
|
107
100
|
* @property {number} solarMassLossFracPerYear
|
|
108
|
-
* @property {number} siderealYearDaysKinematicJ2000 - Actual-LOD numerator
|
|
109
101
|
* @property {number} precessionSolarShareJ2000 - f_S, the solar fraction of the J2000
|
|
110
102
|
* precession torque (derive-params) — the unit H(t) = 13·T_p,composed needs it
|
|
111
103
|
*/
|
|
@@ -114,7 +106,6 @@ export type DeepTimeLodDeps = {
|
|
|
114
106
|
* @property {DeepTimeLodConstants} constants
|
|
115
107
|
* @property {(tMa: number) => number} moonDistanceMetresAtAge
|
|
116
108
|
* @property {(tMa: number) => number} moiFactorAtAge - GIA α(t)
|
|
117
|
-
* @property {(year: number) => number} siderealYearDaysFourierAt
|
|
118
109
|
* @property {(year: number) => number} cycleLodSumAt - gated δLOD sum (incl. swing)
|
|
119
110
|
* @property {(year: number) => number} swingLodAt - gated swing δLOD alone
|
|
120
111
|
* @property {(year: number) => number} swingLodRateAt - gated analytic swing rate
|
|
@@ -141,7 +132,6 @@ export function createDeepTimeLod(deps: DeepTimeLodDeps): {
|
|
|
141
132
|
lodSecondsAtAge: (t_Ma: number) => number | null;
|
|
142
133
|
lodSecondsAtAgeWithAlpha: (t_Ma: number, alpha: number) => number | null;
|
|
143
134
|
lodHoursAtAge: (t_Ma: number) => number | null;
|
|
144
|
-
hAtAge: (t_Ma: number) => number | null;
|
|
145
135
|
lunisolarPrecessionRateArcsecPerYrAtAge: (t_Ma: number) => number | null;
|
|
146
136
|
lunisolarPrecessionPeriodYearsAtAge: (t_Ma: number) => number | null;
|
|
147
137
|
lunarTorqueFactorAtAge: (tMa: number) => (number | null);
|
|
@@ -149,11 +139,11 @@ export function createDeepTimeLod(deps: DeepTimeLodDeps): {
|
|
|
149
139
|
siderealYearSecondsAtAge: (t_Ma: number) => number;
|
|
150
140
|
tropicalYearSecondsAtAge: (t_Ma: number) => number;
|
|
151
141
|
tropicalYearDaysAtAge: (t_Ma: number) => number | null;
|
|
142
|
+
tropicalYearSecondsFromLod: (t_Ma: number, LOD_s: number | null) => number;
|
|
152
143
|
eclipticLodCorrectionSecondsAtAge: (t_Ma: number) => number | null;
|
|
153
144
|
yearInDaysAtAge: (t_Ma: number) => number | null;
|
|
154
145
|
deltaTRawSecondsAtAge: (t_Ma: number) => number;
|
|
155
146
|
lodSecondsWithCorrectionsAtAge: (t_Ma: number) => number | null;
|
|
156
|
-
lodSecondsActualAtAge: (t_Ma: number) => number | null;
|
|
157
147
|
dLodDtDecompositionAtAge: (t_Ma: number) => {
|
|
158
148
|
tidal: number | null;
|
|
159
149
|
gia: number | null;
|
|
@@ -163,7 +153,4 @@ export function createDeepTimeLod(deps: DeepTimeLodDeps): {
|
|
|
163
153
|
net_L3: number | null;
|
|
164
154
|
net_L4: number | null;
|
|
165
155
|
};
|
|
166
|
-
eraClockHAtAge: (t_Ma: number) => number | null;
|
|
167
|
-
eraClockTropicalYearSecondsAtAge: (t_Ma: number) => number;
|
|
168
|
-
eraClockYearInDaysAtAge: (t_Ma: number) => number | null;
|
|
169
156
|
};
|
|
@@ -53,6 +53,18 @@ export function createYearLengths({ sampleAt, massLossSiderealSecondsAtYearFn }:
|
|
|
53
53
|
/** The planetary λ̇ ratio (diagnostic; ≡1 at J2000). */
|
|
54
54
|
planetaryRelAtYear: (year: number) => number;
|
|
55
55
|
}>;
|
|
56
|
+
/** The J2000 mean tropical year, DAYS — derived in ONE home from two IAU
|
|
57
|
+
* inputs, the sidereal year and the general precession in longitude p_A
|
|
58
|
+
* (″ per JULIAN year), in the exact rate form
|
|
59
|
+
* 1/T_trop = 1/T_sid + p_A / (1,296,000″ · 365.25 d)
|
|
60
|
+
* — the same beat `shorterYear` evaluates of date. 365.242190469 d on the
|
|
61
|
+
* IAU 2006 inputs. Plan 09: replaces the Meeus & Savoie 1992 input
|
|
62
|
+
* 365.2421897 (66 ms shorter, whose beat with the sidereal year read
|
|
63
|
+
* 25,770.7 yr against p_A's 25,771.6 — three inputs over-determining a
|
|
64
|
+
* two-parameter identity). Counting p_A per tropical or sidereal year
|
|
65
|
+
* instead moves this by 26 ms; IAU states p_A per Julian year.
|
|
66
|
+
* @param {number} siderealYearDays @param {number} generalPrecessionArcsecPerJulianYr @returns {number} */
|
|
67
|
+
export function computeMeanTropicalYearJ2000Days(siderealYearDays: number, generalPrecessionArcsecPerJulianYr: number): number;
|
|
56
68
|
/**
|
|
57
69
|
* The published of-date window (plan 06 Phase 3 S2): inside |year − 2000| ≤
|
|
58
70
|
* this span the one-family route is THE published year-length / precession
|
|
@@ -63,15 +63,6 @@ export function computeCarrierRatesDegPerCy({ meanSiderealYearDays, moonSidereal
|
|
|
63
63
|
* @returns {[number, number]}
|
|
64
64
|
*/
|
|
65
65
|
export function eccVectorOfDateEmbedded(bodyIndex: number, T: number): [number, number];
|
|
66
|
-
/** sha256/16 of JSON.stringify(FITTED_COEFFICIENTS.SUN_LONGITUDE_HARMONICS)
|
|
67
|
-
* at derivation time — the matched-pair fingerprint asserted by test:model.
|
|
68
|
-
* Unchanged from v1/v2: SUN_HARMONICS did not move in the D2 or N3
|
|
69
|
-
* landings. Plan 07 R10 moved the hash WITHOUT a refit: the three (sin, cos)
|
|
70
|
-
* pairs were rotated exactly from the t₀ phase origin to J2000
|
|
71
|
-
* (tools/fit/reorigin-combs-j2000.mjs), the finder Sun is bit-identical, so
|
|
72
|
-
* the residual this table was derived from is unchanged — the table stands
|
|
73
|
-
* (fidelity 0.616″, 70 terms), only the fingerprint is re-recorded. */
|
|
74
|
-
export const PAIRED_SUN_HARMONICS_SHA256: "53530a28a60b3c4a";
|
|
75
66
|
/** sha256/16 of JSON.stringify([...planets, moonElongation]) — the seven
|
|
76
67
|
* full-precision carrier rates (deg/cy TT) the tables pair with: since plan
|
|
77
68
|
* 06 I3 the model's own banked J2000 sidereal mean motions for the planets
|