@essrt/physics 22.1.0 → 23.2.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 +2 -1
- package/package.json +9 -3
- package/src/constants/coefficients.d.ts +11 -11
- package/src/constants/coefficients.js +4 -4
- package/src/constants/generated.d.ts +4 -16
- package/src/constants/generated.js +8 -32
- package/src/constants/units.cjs +20 -0
- package/src/deltat/deep-time-chain.js +457 -0
- package/src/deltat/deep-time.cjs +68 -25
- package/src/deltat/moon-distance-artifact.cjs +23 -0
- package/src/deltat/moon-distance-history.cjs +115 -0
- package/src/earth/deep-orbital-history.cjs +69 -19
- package/src/earth/mass-chain.cjs +95 -0
- package/src/earth/mean-obliquity-history.cjs +94 -0
- package/src/earth/precession-composed.cjs +49 -3
- package/src/index.js +23 -1
- package/src/layer0/derive-params.js +1 -5
- package/src/layer0/index.js +30 -17
- package/src/math/angles.cjs +38 -0
- package/src/model.js +100 -266
- package/src/moon/arguments.cjs +5 -31
- package/src/moon/month-chain.cjs +12 -19
- package/src/planets/chain-artifact.js +2 -2
- package/src/time/calendar.cjs +165 -0
- package/types/constants/coefficients.d.ts +11 -11
- package/types/constants/generated.d.ts +4 -16
- package/types/constants/units.d.cts +8 -0
- package/types/deltat/deep-time-chain.d.ts +266 -0
- package/types/deltat/deep-time.d.cts +42 -12
- package/types/deltat/moon-distance-artifact.d.cts +22 -0
- package/types/deltat/moon-distance-history.d.cts +36 -0
- package/types/earth/deep-orbital-history.d.cts +5 -3
- package/types/earth/mass-chain.d.cts +78 -0
- package/types/earth/mean-obliquity-history.d.cts +32 -0
- package/types/earth/precession-composed.d.cts +11 -1
- package/types/index.d.ts +8 -1
- package/types/layer0/derive-params.d.ts +3 -2
- package/types/layer0/index.d.ts +9 -6
- package/types/math/angles.d.cts +18 -0
- package/types/model.d.ts +21 -3
- package/types/moon/arguments.d.cts +2 -6
- package/types/moon/month-chain.d.cts +7 -13
- package/types/time/calendar.d.cts +78 -0
- package/src/deltat/recession-history.cjs +0 -169
- package/types/deltat/recession-history.d.cts +0 -80
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// The fitted coefficients' shapes for TypeScript consumers (§2g); values live
|
|
3
3
|
// in coefficients.js, emitted VERBATIM from the fit artifacts under data/.
|
|
4
4
|
|
|
5
|
-
export declare const COEFFICIENTS_HASH: "
|
|
5
|
+
export declare const COEFFICIENTS_HASH: "ff77fbc9baa370e4";
|
|
6
6
|
|
|
7
7
|
export declare const FITTED_COEFFICIENTS: {
|
|
8
8
|
readonly BALANCE_PRESETS: Array<Array<number | string>>;
|
|
@@ -275,70 +275,70 @@ export declare const FITTED_COEFFICIENTS: {
|
|
|
275
275
|
"ratio": number;
|
|
276
276
|
"label": string;
|
|
277
277
|
};
|
|
278
|
-
"27.
|
|
278
|
+
"27.2689": {
|
|
279
279
|
"period_kyr": number;
|
|
280
280
|
"lr04_post_mpt_amp": number;
|
|
281
281
|
"epica_amp": number;
|
|
282
282
|
"ratio": number;
|
|
283
283
|
"label": string;
|
|
284
284
|
};
|
|
285
|
-
"28.
|
|
285
|
+
"28.8424": {
|
|
286
286
|
"period_kyr": number;
|
|
287
287
|
"lr04_post_mpt_amp": number;
|
|
288
288
|
"epica_amp": number;
|
|
289
289
|
"ratio": number;
|
|
290
290
|
"label": string;
|
|
291
291
|
};
|
|
292
|
-
"29.
|
|
292
|
+
"29.0048": {
|
|
293
293
|
"period_kyr": number;
|
|
294
294
|
"lr04_post_mpt_amp": number;
|
|
295
295
|
"epica_amp": number;
|
|
296
296
|
"ratio": number;
|
|
297
297
|
"label": string;
|
|
298
298
|
};
|
|
299
|
-
"29.
|
|
299
|
+
"29.6172": {
|
|
300
300
|
"period_kyr": number;
|
|
301
301
|
"lr04_post_mpt_amp": number;
|
|
302
302
|
"epica_amp": number;
|
|
303
303
|
"ratio": number;
|
|
304
304
|
"label": string;
|
|
305
305
|
};
|
|
306
|
-
"29.
|
|
306
|
+
"29.8092": {
|
|
307
307
|
"period_kyr": number;
|
|
308
308
|
"lr04_post_mpt_amp": number;
|
|
309
309
|
"epica_amp": number;
|
|
310
310
|
"ratio": number;
|
|
311
311
|
"label": string;
|
|
312
312
|
};
|
|
313
|
-
"39.
|
|
313
|
+
"39.5560": {
|
|
314
314
|
"period_kyr": number;
|
|
315
315
|
"lr04_post_mpt_amp": number;
|
|
316
316
|
"epica_amp": number;
|
|
317
317
|
"ratio": number;
|
|
318
318
|
"label": string;
|
|
319
319
|
};
|
|
320
|
-
"40.
|
|
320
|
+
"40.2293": {
|
|
321
321
|
"period_kyr": number;
|
|
322
322
|
"lr04_post_mpt_amp": number;
|
|
323
323
|
"epica_amp": number;
|
|
324
324
|
"ratio": number;
|
|
325
325
|
"label": string;
|
|
326
326
|
};
|
|
327
|
-
"40.
|
|
327
|
+
"40.9239": {
|
|
328
328
|
"period_kyr": number;
|
|
329
329
|
"lr04_post_mpt_amp": number;
|
|
330
330
|
"epica_amp": number;
|
|
331
331
|
"ratio": number;
|
|
332
332
|
"label": string;
|
|
333
333
|
};
|
|
334
|
-
"41.
|
|
334
|
+
"41.6446": {
|
|
335
335
|
"period_kyr": number;
|
|
336
336
|
"lr04_post_mpt_amp": number;
|
|
337
337
|
"epica_amp": number;
|
|
338
338
|
"ratio": number;
|
|
339
339
|
"label": string;
|
|
340
340
|
};
|
|
341
|
-
"53.
|
|
341
|
+
"53.6175": {
|
|
342
342
|
"period_kyr": number;
|
|
343
343
|
"lr04_post_mpt_amp": number;
|
|
344
344
|
"epica_amp": number;
|
|
@@ -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: "896558c2d878571d";
|
|
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: "896558c2d878571d";
|
|
13
13
|
readonly additionalBodiesReference: {
|
|
14
14
|
"pluto": {
|
|
15
15
|
"solarYearInput": number;
|
|
@@ -83,24 +83,11 @@ export declare const DEFAULT_CONSTANTS: {
|
|
|
83
83
|
};
|
|
84
84
|
readonly deepTime: {
|
|
85
85
|
"alpha1PerMa": number;
|
|
86
|
-
"alpha3PerMa3": number;
|
|
87
|
-
"alpha4PerMa4": number;
|
|
88
86
|
"alphaGiaRateJ2000PerYr": number;
|
|
89
87
|
"alphaGiaRelaxationKyr": number;
|
|
90
88
|
"j2RateJ2000PerYr": number;
|
|
91
89
|
"dtStackTaperFullHalfwidthYr": number;
|
|
92
90
|
"dtStackTaperTotalHalfwidthYr": number;
|
|
93
|
-
"recessionRegime": {
|
|
94
|
-
"jointMa": number;
|
|
95
|
-
"knotAgesMa": number[];
|
|
96
|
-
"knotDistancesKm": number[];
|
|
97
|
-
"genesisMa": number;
|
|
98
|
-
"rocheLimitKm": number;
|
|
99
|
-
"solarOceanLeakBeta0": number;
|
|
100
|
-
"thermalPumpStartMa": number;
|
|
101
|
-
"thermalPumpEndMa": number;
|
|
102
|
-
"thermalPumpFactor": number;
|
|
103
|
-
};
|
|
104
91
|
};
|
|
105
92
|
readonly earthOrbital: {
|
|
106
93
|
"j2000EpochYear": number;
|
|
@@ -207,6 +194,8 @@ export declare const DEFAULT_CONSTANTS: {
|
|
|
207
194
|
"earthJ2": number;
|
|
208
195
|
"earthEquatorialRadiusKm": number;
|
|
209
196
|
"earthParallaxRadiusKm": number;
|
|
197
|
+
"earthMeanRadiusKm": number;
|
|
198
|
+
"solarConstantWm2": number;
|
|
210
199
|
"solarParallaxArcsec": number;
|
|
211
200
|
"arcsecDisplacementKm": number;
|
|
212
201
|
};
|
|
@@ -566,7 +555,6 @@ export declare const REFERENCE_DATA: {
|
|
|
566
555
|
"wellsRecessionCmYr": number;
|
|
567
556
|
"modernLLRRecessionCmYr": number;
|
|
568
557
|
"tidalLockApproachGyr": number;
|
|
569
|
-
"essrtFormulaHorizonGyr": number;
|
|
570
558
|
"iceAlbedoShareLongPct": number;
|
|
571
559
|
"testAObliquityLagPercentile": number;
|
|
572
560
|
"testAObliquityPeakMatch": string;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** The SI day, seconds. */
|
|
2
|
+
export const SECONDS_PER_DAY: 86400;
|
|
3
|
+
/** The Julian year, days (IAU). */
|
|
4
|
+
export const DAYS_PER_JULIAN_YEAR: 365.25;
|
|
5
|
+
/** The Julian century, days. */
|
|
6
|
+
export const JULIAN_CENTURY_DAYS: 36525;
|
|
7
|
+
/** The Julian year, SI seconds. */
|
|
8
|
+
export const SECONDS_PER_JULIAN_YEAR: number;
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ΔT stack's switches. `resonator` gates the swing's δLOD terms; the
|
|
3
|
+
* swing's ΔT term is gated by `resonatorDeltaT` when given (the Node twin
|
|
4
|
+
* gates it on BOTH env vars, DT_CORRECTIONS and DT_RESONATOR), else by
|
|
5
|
+
* `resonator`. The four cycles' δLOD terms follow their flags only when
|
|
6
|
+
* `cycleLodFollowsFlags` is true (the browser's research toggles switch a
|
|
7
|
+
* cycle's ΔT and δLOD together); the Node twin sums them unconditionally.
|
|
8
|
+
* Their ΔT terms always follow their flags. Identical with every flag ON.
|
|
9
|
+
* @typedef {{bond: boolean, hallstatt: boolean, jose5: boolean, jose4: boolean, resonator: boolean, resonatorDeltaT?: boolean, cycleLodFollowsFlags?: boolean}} DeltaTFlags
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* @param {{
|
|
13
|
+
* constants: any,
|
|
14
|
+
* fitted: any,
|
|
15
|
+
* deepModes: any,
|
|
16
|
+
* moonDistanceArtifact: any,
|
|
17
|
+
* ageAnchorYear?: number,
|
|
18
|
+
* flagsAt?: () => DeltaTFlags,
|
|
19
|
+
* planetAuRatios?: Record<string, number>,
|
|
20
|
+
* stellarDayRaProjection?: number,
|
|
21
|
+
* }} deps — `constants` the generated DEFAULT_CONSTANTS, `fitted` the
|
|
22
|
+
* generated FITTED_COEFFICIENTS, `deepModes` the DEEP_MODES_ARTIFACT,
|
|
23
|
+
* `moonDistanceArtifact` the MOON_DISTANCE_ARTIFACT — the cited distance
|
|
24
|
+
* AND mean-obliquity columns, plan 12 option A / §8 (a) (injected so a
|
|
25
|
+
* counterfactual context can replace any of them); `ageAnchorYear` the
|
|
26
|
+
* scene epoch (default constants.timeReference.sceneEpochYear);
|
|
27
|
+
* `flagsAt` the ΔT stack's switches (default all ON); `planetAuRatios`
|
|
28
|
+
* the planets' J2000 semi-major axes in AU (for the per-planet family);
|
|
29
|
+
* `stellarDayRaProjection` cos ε₀-class factor for the projected stellar day.
|
|
30
|
+
*/
|
|
31
|
+
export function createDeepTimeChain(deps: {
|
|
32
|
+
constants: any;
|
|
33
|
+
fitted: any;
|
|
34
|
+
deepModes: any;
|
|
35
|
+
moonDistanceArtifact: any;
|
|
36
|
+
ageAnchorYear?: number;
|
|
37
|
+
flagsAt?: () => DeltaTFlags;
|
|
38
|
+
planetAuRatios?: Record<string, number>;
|
|
39
|
+
stellarDayRaProjection?: number;
|
|
40
|
+
}): Readonly<{
|
|
41
|
+
meanSolarYearDays: number;
|
|
42
|
+
meanSiderealYearDays: any;
|
|
43
|
+
meanSiderealYearSeconds: number;
|
|
44
|
+
meanLengthOfDay: any;
|
|
45
|
+
meanTropicalYearJ2000Seconds: number;
|
|
46
|
+
siTropicalYearDays: number;
|
|
47
|
+
axialPrecessionJ2000Years: number;
|
|
48
|
+
axialPrecessionJ2000Days: number;
|
|
49
|
+
G_CONSTANT: any;
|
|
50
|
+
MASS_RATIO_EARTH_MOON: any;
|
|
51
|
+
currentAUDistance: any;
|
|
52
|
+
earthMoiFactorJ2000: any;
|
|
53
|
+
moonDistanceKm: any;
|
|
54
|
+
moonSiderealMonthInput: any;
|
|
55
|
+
moonOrbitalShift: number;
|
|
56
|
+
moonDistanceCorrected: number;
|
|
57
|
+
GM_EARTH_MOON_SYSTEM: number;
|
|
58
|
+
GM_EARTH_ALONE: number;
|
|
59
|
+
GM_MOON_ALONE: number;
|
|
60
|
+
GM_SUN_PLUS_EARTH: number;
|
|
61
|
+
GM_SUN: number;
|
|
62
|
+
M_SUN: number;
|
|
63
|
+
moonApsidalJ2000Seconds: number;
|
|
64
|
+
moonNodalJ2000Seconds: number;
|
|
65
|
+
moonSiderealMonthJ2000Seconds: number;
|
|
66
|
+
moonPeriods: {
|
|
67
|
+
moonApsidalPrecessionDaysEarth: number;
|
|
68
|
+
moonNodalPrecessionDaysEarth: number;
|
|
69
|
+
moonApsidalJ2000Seconds: number;
|
|
70
|
+
moonNodalJ2000Seconds: number;
|
|
71
|
+
moonSiderealMonthJ2000Seconds: number;
|
|
72
|
+
moonAnomalisticMonthDays: number;
|
|
73
|
+
moonNodalMonthDays: number;
|
|
74
|
+
moonSynodicMonthDays: number;
|
|
75
|
+
moonTropicalMonthDays: number;
|
|
76
|
+
moonFullMoonCycleEarthDays: number;
|
|
77
|
+
moonFullMoonCycleICRFDays: number;
|
|
78
|
+
moonApsidalMeetsNodalDays: number;
|
|
79
|
+
moonLunarLevelingCycleDays: number;
|
|
80
|
+
moonDraconicYearICRFDays: number;
|
|
81
|
+
moonDraconicYearEarthDays: number;
|
|
82
|
+
};
|
|
83
|
+
certifiedAxialPrecessionJ2000Years: () => number;
|
|
84
|
+
precessionRateJ2000ArcsecPerYr: () => number;
|
|
85
|
+
EPOCH_PARAMS: import("../layer0/index.js").EpochParams;
|
|
86
|
+
ageAnchorYear: any;
|
|
87
|
+
alphaGia: {
|
|
88
|
+
alphaAt: (year: number) => number;
|
|
89
|
+
j2RatioAt: (year: number) => number;
|
|
90
|
+
laggedL1PermilAt: (year: number) => number;
|
|
91
|
+
kPerPermille: number;
|
|
92
|
+
relaxationKyr: number;
|
|
93
|
+
laggedL1Terms: Array<{
|
|
94
|
+
period_kyr: number;
|
|
95
|
+
a: number;
|
|
96
|
+
b: number;
|
|
97
|
+
}>;
|
|
98
|
+
};
|
|
99
|
+
earthMoiFactorAtAge: (tMa: number) => number;
|
|
100
|
+
withLatticeAlpha: (build: () => void) => void;
|
|
101
|
+
j2RatioAtYear: (year: number) => number;
|
|
102
|
+
iEarthAtAge: (tMa: number) => number;
|
|
103
|
+
recession: {
|
|
104
|
+
distanceMetresAtAge: (tMa: number) => number | null;
|
|
105
|
+
slopeMetresPerMaAtAge: (tMa: number) => number | null;
|
|
106
|
+
ratioAtAge: (tMa: number) => number | null;
|
|
107
|
+
spanMa: number;
|
|
108
|
+
};
|
|
109
|
+
meanObliquity: {
|
|
110
|
+
meanObliquityDegAtAge: (tMa: number) => number | null;
|
|
111
|
+
cosRatioAtAge: (tMa: number) => number | null;
|
|
112
|
+
meanObliquityJ2000Deg: number;
|
|
113
|
+
spanMa: number;
|
|
114
|
+
};
|
|
115
|
+
dtCycles: {
|
|
116
|
+
taperAt: (year: number) => number;
|
|
117
|
+
taperDerivativeAt: (year: number) => number;
|
|
118
|
+
cycleDeltaTSecondsAt: (cycleKey: string, year: number) => number;
|
|
119
|
+
cycleLodSecondsAt: (cycleKey: string, year: number) => number;
|
|
120
|
+
swingDeltaTSecondsAt: (year: number) => number;
|
|
121
|
+
swingLodSecondsAt: (year: number) => number;
|
|
122
|
+
swingLodRateAt: (year: number) => number;
|
|
123
|
+
};
|
|
124
|
+
s3ArcsecPerYr: number;
|
|
125
|
+
deepLod: {
|
|
126
|
+
lodSecondsAtAge: (t_Ma: number) => number | null;
|
|
127
|
+
lodSecondsAtAgeWithAlpha: (t_Ma: number, alpha: number) => number | null;
|
|
128
|
+
lodHoursAtAge: (t_Ma: number) => number | null;
|
|
129
|
+
lunisolarPrecessionRateArcsecPerYrAtAge: (t_Ma: number) => number | null;
|
|
130
|
+
lunisolarPrecessionPeriodYearsAtAge: (t_Ma: number) => number | null;
|
|
131
|
+
lunisolarTorqueRateArcsecPerYrAtAge: (t_Ma: number) => number | null;
|
|
132
|
+
lunisolarTorquePeriodYearsAtAge: (t_Ma: number) => number | null;
|
|
133
|
+
precessionObliquityFactorAtAge: (t_Ma: number) => number | null;
|
|
134
|
+
lunarTorqueFactorAtAge: (tMa: number) => (number | null);
|
|
135
|
+
precessionTorqueTermAtAge: (tMa: number) => (number | null);
|
|
136
|
+
siderealYearSecondsAtAge: (t_Ma: number) => number;
|
|
137
|
+
tropicalYearSecondsAtAge: (t_Ma: number) => number;
|
|
138
|
+
tropicalYearDaysAtAge: (t_Ma: number) => number | null;
|
|
139
|
+
tropicalYearSecondsFromLod: (t_Ma: number, LOD_s: number | null) => number;
|
|
140
|
+
eclipticLodCorrectionSecondsAtAge: (t_Ma: number) => number | null;
|
|
141
|
+
yearInDaysAtAge: (t_Ma: number) => number | null;
|
|
142
|
+
deltaTRawSecondsAtAge: (t_Ma: number) => number;
|
|
143
|
+
lodSecondsWithCorrectionsAtAge: (t_Ma: number) => number | null;
|
|
144
|
+
dLodDtDecompositionAtAge: (t_Ma: number) => {
|
|
145
|
+
tidal: number | null;
|
|
146
|
+
gia: number | null;
|
|
147
|
+
stack: number | null;
|
|
148
|
+
resonator: number | null;
|
|
149
|
+
net_L2: number | null;
|
|
150
|
+
net_L3: number | null;
|
|
151
|
+
net_L4: number | null;
|
|
152
|
+
};
|
|
153
|
+
};
|
|
154
|
+
l0: import("../layer0/index.js").EpochPrimitives;
|
|
155
|
+
deepEcc: {
|
|
156
|
+
eccAt: (tYr: number) => number;
|
|
157
|
+
eccRateAt: (tYr: number) => number;
|
|
158
|
+
modulation: (tMa: number, s: number) => number;
|
|
159
|
+
channelIntegral: (T: number, s: number) => number;
|
|
160
|
+
eFactorAt: (tYr: number) => number;
|
|
161
|
+
e0: number;
|
|
162
|
+
g0: number;
|
|
163
|
+
};
|
|
164
|
+
eCompModulation: (tMa: number, s: number) => number;
|
|
165
|
+
moonChain: {
|
|
166
|
+
distanceMetresAtAge: (tMa: number) => number | null;
|
|
167
|
+
distanceKmAtAge: (tMa: number) => number | null;
|
|
168
|
+
solarDeltaAKmAtAge: (tMa: number, aApparentKm: number) => number | null;
|
|
169
|
+
distanceCorrectedKmAtAge: (tMa: number) => number | null;
|
|
170
|
+
siderealMonthSecondsAtAge: (tMa: number) => number | null;
|
|
171
|
+
synodicMonthSecondsAtAge: (tMa: number) => number | null;
|
|
172
|
+
tropicalMonthSecondsAtAge: (tMa: number) => number | null;
|
|
173
|
+
perigeePrecessionSecondsAtAge: (tMa: number) => number | null;
|
|
174
|
+
nodePrecessionSecondsAtAge: (tMa: number) => number | null;
|
|
175
|
+
anomalisticMonthSecondsAtAge: (tMa: number) => number | null;
|
|
176
|
+
nodalMonthSecondsAtAge: (tMa: number) => number | null;
|
|
177
|
+
apsidalMeetsNodalSecondsAtAge: (tMa: number) => number | null;
|
|
178
|
+
lunarLevelingSecondsAtAge: (tMa: number) => number | null;
|
|
179
|
+
};
|
|
180
|
+
meanMoonDistanceMetresAtAge: (tMa: number) => number | null;
|
|
181
|
+
meanMoonDistanceAtAge: (tMa: number) => number | null;
|
|
182
|
+
meanLodSecondsAtAge: (tMa: number) => number | null;
|
|
183
|
+
meanLodHoursAtAge: (t_Ma: number) => number | null;
|
|
184
|
+
meanLunisolarPrecessionRateArcsecPerYrAtAge: (t_Ma: number) => number | null;
|
|
185
|
+
meanLunisolarPrecessionPeriodYearsAtAge: (tMa: number) => number | null;
|
|
186
|
+
meanLunisolarTorqueRateArcsecPerYrAtAge: (t_Ma: number) => number | null;
|
|
187
|
+
meanLunisolarTorquePeriodYearsAtAge: (t_Ma: number) => number | null;
|
|
188
|
+
precessionObliquityFactorAtAge: (t_Ma: number) => number | null;
|
|
189
|
+
meanObliquityCitedDegAtAge: (tMa: number) => number | null;
|
|
190
|
+
meanAuAtAge: (tMa: number) => number;
|
|
191
|
+
meanSiderealYearSecondsAtAge: (tMa: number) => number;
|
|
192
|
+
meanTropicalYearSecondsAtAge: (t_Ma: number) => number;
|
|
193
|
+
meanTropicalYearDaysAtAge: (t_Ma: number) => number | null;
|
|
194
|
+
meanYearInDaysAtAge: (t_Ma: number) => number | null;
|
|
195
|
+
meanDeltaTSecondsAtAge: (tMa: number) => number;
|
|
196
|
+
bondCycleDeltaTCorrection: (year: number) => number;
|
|
197
|
+
hallstattCycleDeltaTCorrection: (year: number) => number;
|
|
198
|
+
jose5CycleDeltaTCorrection: (year: number) => number;
|
|
199
|
+
jose4CycleDeltaTCorrection: (year: number) => number;
|
|
200
|
+
bondCycleLodCorrection: (year: number) => number;
|
|
201
|
+
hallstattCycleLodCorrection: (year: number) => number;
|
|
202
|
+
jose5CycleLodCorrection: (year: number) => number;
|
|
203
|
+
jose4CycleLodCorrection: (year: number) => number;
|
|
204
|
+
dtCycleLodCorrectionSum: (year: number) => number;
|
|
205
|
+
resonatorSwingDeltaTCorrection: (year: number) => number;
|
|
206
|
+
resonatorSwingLodCorrection: (year: number) => number;
|
|
207
|
+
resonatorSwingLodRate: (year: number) => number;
|
|
208
|
+
meanLodSecondsWithCorrectionsAtAge: (t_Ma: number) => number | null;
|
|
209
|
+
dLodDtDecompositionAtAge: (t_Ma: number) => {
|
|
210
|
+
tidal: number | null;
|
|
211
|
+
gia: number | null;
|
|
212
|
+
stack: number | null;
|
|
213
|
+
resonator: number | null;
|
|
214
|
+
net_L2: number | null;
|
|
215
|
+
net_L3: number | null;
|
|
216
|
+
net_L4: number | null;
|
|
217
|
+
};
|
|
218
|
+
h5Correction: (year: number) => number;
|
|
219
|
+
computeLodKinematicSecondsAtEpoch: (year: number) => number;
|
|
220
|
+
computeLodRealSecondsAtEpoch: (year: number) => number;
|
|
221
|
+
meanSolarDeltaAAtAge: (tMa: number, aApparentKm: number) => number | null;
|
|
222
|
+
meanMoonDistanceCorrectedAtAge: (tMa: number) => number | null;
|
|
223
|
+
meanMoonSiderealMonthAtAge: (tMa: number) => number | null;
|
|
224
|
+
meanSynodicMonthAtAge: (tMa: number) => number | null;
|
|
225
|
+
meanTropicalMonthAtAge: (tMa: number) => number | null;
|
|
226
|
+
meanLunarPerigeePrecessionAtAge: (tMa: number) => number | null;
|
|
227
|
+
meanLunarNodePrecessionAtAge: (tMa: number) => number | null;
|
|
228
|
+
meanAnomalisticMonthAtAge: (tMa: number) => number | null;
|
|
229
|
+
meanNodalMonthAtAge: (tMa: number) => number | null;
|
|
230
|
+
meanApsidalMeetsNodalAtAge: (tMa: number) => number | null;
|
|
231
|
+
meanLunarLevelingCycleAtAge: (tMa: number) => number | null;
|
|
232
|
+
meanStellarDayAtAge: (tMa: number) => number | null;
|
|
233
|
+
meanStellarDayProjectedAtAge: (tMa: number) => number | null;
|
|
234
|
+
meanSiderealDayAtAge: (tMa: number) => number | null;
|
|
235
|
+
meanPlanetSemiMajorAxisAtAge: (planetName: string, tMa: number) => number | null;
|
|
236
|
+
/** @param {number} tMa @param {number} periodJ2000Seconds @returns {number} */
|
|
237
|
+
meanPlanetOrbitalPeriodAtAge: (tMa: number, periodJ2000Seconds: number) => number;
|
|
238
|
+
/** @param {number} tMa @param {number} periodJ2000Seconds @returns {number} */
|
|
239
|
+
meanEarthPlanetSynodicPeriodAtAge: (tMa: number, periodJ2000Seconds: number) => number;
|
|
240
|
+
}>;
|
|
241
|
+
/**
|
|
242
|
+
* Moon-channel eccentricity sensitivities (perigee/node), the [g/g₀]^s
|
|
243
|
+
* exponents of the factored deep-time law — Meeus-effective (S_N moved
|
|
244
|
+
* 1.0 → 1.018 with the v4 frame-attribution batch). ONE home since B2 (they
|
|
245
|
+
* were literals in model.js, tools/lib/deep-time.js and script.js `_FW_MOON`).
|
|
246
|
+
*/
|
|
247
|
+
export const MOON_ECC_SENSITIVITY_PERIGEE: 2.407;
|
|
248
|
+
export const MOON_ECC_SENSITIVITY_NODE: 1.018;
|
|
249
|
+
/**
|
|
250
|
+
* The ΔT stack's switches. `resonator` gates the swing's δLOD terms; the
|
|
251
|
+
* swing's ΔT term is gated by `resonatorDeltaT` when given (the Node twin
|
|
252
|
+
* gates it on BOTH env vars, DT_CORRECTIONS and DT_RESONATOR), else by
|
|
253
|
+
* `resonator`. The four cycles' δLOD terms follow their flags only when
|
|
254
|
+
* `cycleLodFollowsFlags` is true (the browser's research toggles switch a
|
|
255
|
+
* cycle's ΔT and δLOD together); the Node twin sums them unconditionally.
|
|
256
|
+
* Their ΔT terms always follow their flags. Identical with every flag ON.
|
|
257
|
+
*/
|
|
258
|
+
export type DeltaTFlags = {
|
|
259
|
+
bond: boolean;
|
|
260
|
+
hallstatt: boolean;
|
|
261
|
+
jose5: boolean;
|
|
262
|
+
jose4: boolean;
|
|
263
|
+
resonator: boolean;
|
|
264
|
+
resonatorDeltaT?: boolean;
|
|
265
|
+
cycleLodFollowsFlags?: boolean;
|
|
266
|
+
};
|
|
@@ -22,9 +22,10 @@ export type DeepTimeLodConstants = {
|
|
|
22
22
|
* - Farhat polynomial anchor
|
|
23
23
|
*/
|
|
24
24
|
aMoonNowMetres: number;
|
|
25
|
+
/**
|
|
26
|
+
* - the LLR recession rate (the J2000 slope of the cited history)
|
|
27
|
+
*/
|
|
25
28
|
alpha1PerMa: number;
|
|
26
|
-
alpha3PerMa3: number;
|
|
27
|
-
alpha4PerMa4: number;
|
|
28
29
|
/**
|
|
29
30
|
* - ω₀, the J2000 day length (the SI day since plan 09; identifier kept)
|
|
30
31
|
*/
|
|
@@ -39,7 +40,10 @@ export type DeepTimeLodConstants = {
|
|
|
39
40
|
};
|
|
40
41
|
export type DeepTimeLodDeps = {
|
|
41
42
|
constants: DeepTimeLodConstants;
|
|
42
|
-
|
|
43
|
+
/**
|
|
44
|
+
* - null beyond the cited history's span
|
|
45
|
+
*/
|
|
46
|
+
moonDistanceMetresAtAge: (tMa: number) => number | null;
|
|
43
47
|
/**
|
|
44
48
|
* - GIA α(t)
|
|
45
49
|
*/
|
|
@@ -77,11 +81,26 @@ export type DeepTimeLodDeps = {
|
|
|
77
81
|
nodalPeriodYearsFn: () => number;
|
|
78
82
|
/**
|
|
79
83
|
* - OPTIONAL time-dependent
|
|
80
|
-
* Earth-Moon angular momentum
|
|
81
|
-
*
|
|
82
|
-
*
|
|
84
|
+
* Earth-Moon angular momentum. Absent → the J2000 constant: conservation
|
|
85
|
+
* (plan 12 option A — the Driver-1½ solar-channel budget is deleted;
|
|
86
|
+
* measured: conservation on the cited history reproduces Farhat's own LOD
|
|
87
|
+
* to 0.01 h at 100 Ma, 0.14 h at 2.46 Ga).
|
|
83
88
|
*/
|
|
84
89
|
lEmAtAgeKgm2S?: ((tMa: number) => number) | undefined;
|
|
90
|
+
/**
|
|
91
|
+
* -
|
|
92
|
+
* OPTIONAL analytic slope of the distance history (metres per Ma, positive
|
|
93
|
+
* into the past means a growing a... sign as da/dt_Ma); absent → a central
|
|
94
|
+
* difference on moonDistanceMetresAtAge (the LOD-rate decomposition's tidal term).
|
|
95
|
+
*/
|
|
96
|
+
moonDistanceSlopeMetresPerMaAtAge?: ((tMa: number) => number | null) | undefined;
|
|
97
|
+
/**
|
|
98
|
+
* -
|
|
99
|
+
* OPTIONAL cos ε̄(t)/cos ε̄(0) of the cited mean obliquity (earth/mean-
|
|
100
|
+
* obliquity-history) — the factor the precession RATE of date carries on the
|
|
101
|
+
* constant (plan 12 §8 option (a)); absent → 1, the constant alone, bit-identical.
|
|
102
|
+
*/
|
|
103
|
+
meanObliquityCosRatioAtAge?: ((tMa: number) => number | null) | undefined;
|
|
85
104
|
};
|
|
86
105
|
/**
|
|
87
106
|
* @typedef {Object} DeepTimeLodConstants
|
|
@@ -93,8 +112,7 @@ export type DeepTimeLodDeps = {
|
|
|
93
112
|
* @property {number} eFactorMoon - √(1−e²) factor of the lunar orbit
|
|
94
113
|
* @property {number} aLockMetres - tidal-lock distance (LOD denominator → 0)
|
|
95
114
|
* @property {number} aMoonNowMetres - Farhat polynomial anchor
|
|
96
|
-
* @property {number} alpha1PerMa
|
|
97
|
-
* @property {number} alpha4PerMa4
|
|
115
|
+
* @property {number} alpha1PerMa - the LLR recession rate (the J2000 slope of the cited history)
|
|
98
116
|
* @property {number} lodNowH13Seconds - ω₀, the J2000 day length (the SI day since plan 09; identifier kept)
|
|
99
117
|
* @property {number} meanSiderealYearJ2000Seconds
|
|
100
118
|
* @property {number} solarMassLossFracPerYear
|
|
@@ -104,7 +122,7 @@ export type DeepTimeLodDeps = {
|
|
|
104
122
|
/**
|
|
105
123
|
* @typedef {Object} DeepTimeLodDeps
|
|
106
124
|
* @property {DeepTimeLodConstants} constants
|
|
107
|
-
* @property {(tMa: number) => number} moonDistanceMetresAtAge
|
|
125
|
+
* @property {(tMa: number) => number|null} moonDistanceMetresAtAge - null beyond the cited history's span
|
|
108
126
|
* @property {(tMa: number) => number} moiFactorAtAge - GIA α(t)
|
|
109
127
|
* @property {(year: number) => number} cycleLodSumAt - gated δLOD sum (incl. swing)
|
|
110
128
|
* @property {(year: number) => number} swingLodAt - gated swing δLOD alone
|
|
@@ -123,9 +141,18 @@ export type DeepTimeLodDeps = {
|
|
|
123
141
|
* formerly the spin unit's H/5, 67,063 yr, 2.5 % off and scaling with the
|
|
124
142
|
* spin at deep time). Lazy, like the precession anchor.
|
|
125
143
|
* @property {(tMa: number) => number} [lEmAtAgeKgm2S] - OPTIONAL time-dependent
|
|
126
|
-
* Earth-Moon angular momentum
|
|
127
|
-
*
|
|
128
|
-
*
|
|
144
|
+
* Earth-Moon angular momentum. Absent → the J2000 constant: conservation
|
|
145
|
+
* (plan 12 option A — the Driver-1½ solar-channel budget is deleted;
|
|
146
|
+
* measured: conservation on the cited history reproduces Farhat's own LOD
|
|
147
|
+
* to 0.01 h at 100 Ma, 0.14 h at 2.46 Ga).
|
|
148
|
+
* @property {(tMa: number) => number|null} [moonDistanceSlopeMetresPerMaAtAge] -
|
|
149
|
+
* OPTIONAL analytic slope of the distance history (metres per Ma, positive
|
|
150
|
+
* into the past means a growing a... sign as da/dt_Ma); absent → a central
|
|
151
|
+
* difference on moonDistanceMetresAtAge (the LOD-rate decomposition's tidal term).
|
|
152
|
+
* @property {(tMa: number) => number|null} [meanObliquityCosRatioAtAge] -
|
|
153
|
+
* OPTIONAL cos ε̄(t)/cos ε̄(0) of the cited mean obliquity (earth/mean-
|
|
154
|
+
* obliquity-history) — the factor the precession RATE of date carries on the
|
|
155
|
+
* constant (plan 12 §8 option (a)); absent → 1, the constant alone, bit-identical.
|
|
129
156
|
*/
|
|
130
157
|
/** @param {DeepTimeLodDeps} deps */
|
|
131
158
|
export function createDeepTimeLod(deps: DeepTimeLodDeps): {
|
|
@@ -134,6 +161,9 @@ export function createDeepTimeLod(deps: DeepTimeLodDeps): {
|
|
|
134
161
|
lodHoursAtAge: (t_Ma: number) => number | null;
|
|
135
162
|
lunisolarPrecessionRateArcsecPerYrAtAge: (t_Ma: number) => number | null;
|
|
136
163
|
lunisolarPrecessionPeriodYearsAtAge: (t_Ma: number) => number | null;
|
|
164
|
+
lunisolarTorqueRateArcsecPerYrAtAge: (t_Ma: number) => number | null;
|
|
165
|
+
lunisolarTorquePeriodYearsAtAge: (t_Ma: number) => number | null;
|
|
166
|
+
precessionObliquityFactorAtAge: (t_Ma: number) => number | null;
|
|
137
167
|
lunarTorqueFactorAtAge: (tMa: number) => (number | null);
|
|
138
168
|
precessionTorqueTermAtAge: (tMa: number) => (number | null);
|
|
139
169
|
siderealYearSecondsAtAge: (t_Ma: number) => number;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export const MOON_DISTANCE_ARTIFACT: Readonly<{
|
|
2
|
+
source: {
|
|
3
|
+
citation: string;
|
|
4
|
+
doi: string;
|
|
5
|
+
distributor: string;
|
|
6
|
+
fileSha256: {
|
|
7
|
+
data: string;
|
|
8
|
+
readme: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
earthRadiusKm: 6378.1366;
|
|
12
|
+
ageStepMa: 1;
|
|
13
|
+
spanMa: 4429;
|
|
14
|
+
ageMa: number[];
|
|
15
|
+
aEarthRadii: number[];
|
|
16
|
+
aMinEarthRadii: number[];
|
|
17
|
+
aMaxEarthRadii: number[];
|
|
18
|
+
obliquityDeg: number[];
|
|
19
|
+
obliquityMinDeg: number[];
|
|
20
|
+
obliquityMaxDeg: number[];
|
|
21
|
+
}>;
|
|
22
|
+
export const MOON_DISTANCE_ARTIFACT_HASH: "850cd0b266d46a71";
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export type MoonDistanceTable = {
|
|
2
|
+
/**
|
|
3
|
+
* - ascending, 0 first, uniform 1-Myr step
|
|
4
|
+
*/
|
|
5
|
+
ageMa: ReadonlyArray<number>;
|
|
6
|
+
/**
|
|
7
|
+
* - the distance column (any consistent unit; only ratios are read)
|
|
8
|
+
*/
|
|
9
|
+
aEarthRadii: ReadonlyArray<number>;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* @typedef {Object} MoonDistanceTable
|
|
13
|
+
* @property {ReadonlyArray<number>} ageMa - ascending, 0 first, uniform 1-Myr step
|
|
14
|
+
* @property {ReadonlyArray<number>} aEarthRadii - the distance column (any consistent unit; only ratios are read)
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* @param {{ table: MoonDistanceTable, aMoonNowMetres: number, alpha1PerMa: number }} deps
|
|
18
|
+
* aMoonNowMetres — the model's J2000 anchor (the observed mean distance);
|
|
19
|
+
* alpha1PerMa — the LLR rate as a fraction of a₀ per Ma (negative into the past: a shrinks).
|
|
20
|
+
* @returns {{
|
|
21
|
+
* distanceMetresAtAge: (tMa: number) => number|null,
|
|
22
|
+
* slopeMetresPerMaAtAge: (tMa: number) => number|null,
|
|
23
|
+
* ratioAtAge: (tMa: number) => number|null,
|
|
24
|
+
* spanMa: number,
|
|
25
|
+
* }}
|
|
26
|
+
*/
|
|
27
|
+
export function createMoonDistanceHistory(deps: {
|
|
28
|
+
table: MoonDistanceTable;
|
|
29
|
+
aMoonNowMetres: number;
|
|
30
|
+
alpha1PerMa: number;
|
|
31
|
+
}): {
|
|
32
|
+
distanceMetresAtAge: (tMa: number) => number | null;
|
|
33
|
+
slopeMetresPerMaAtAge: (tMa: number) => number | null;
|
|
34
|
+
ratioAtAge: (tMa: number) => number | null;
|
|
35
|
+
spanMa: number;
|
|
36
|
+
};
|
|
@@ -25,9 +25,11 @@
|
|
|
25
25
|
* measured at the 500-yr artifact cadence: 0.16″/0.18″ rms vs IAU-2006
|
|
26
26
|
* over 1900–2100/1600–2400 vs the era tier's 0.31″/0.63″, and 0.0396°
|
|
27
27
|
* vs La2004 over −200 kyr vs the deep tier's 0.069° — the C-1 verdict,
|
|
28
|
-
* plan 02) and zetaModes serves only as the TAIL beyond the span
|
|
29
|
-
*
|
|
30
|
-
*
|
|
28
|
+
* plan 02) and zetaModes serves only as the TAIL beyond the span, joined
|
|
29
|
+
* to the series at each edge so n̂ is continuous there (plan 12 §8.3 — the
|
|
30
|
+
* J2000-point anchor left a 1.6° step at −10 Myr that kicked the hybrid's
|
|
31
|
+
* mean obliquity +0.9° for the whole tail; far outside every certified window).
|
|
32
|
+
* solarTorqueShareJ2000 and
|
|
31
33
|
* dynamicalEllipticityRatioAtYearFn: THE PRECESSION OF DATE — the two
|
|
32
34
|
* factors on the precession constant (see alphaAtGeneral below); absent,
|
|
33
35
|
* the constant is the secular law alone, bit-identical.
|