@essrt/physics 23.0.0 → 23.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +7 -2
- package/src/constants/coefficients.d.ts +1 -1
- package/src/constants/coefficients.js +3 -3
- package/src/constants/generated.d.ts +4 -3
- package/src/constants/generated.js +6 -5
- package/src/constants/units.cjs +20 -0
- package/src/deltat/deep-time-chain.js +457 -0
- package/src/deltat/deep-time.cjs +42 -13
- package/src/deltat/moon-distance-artifact.cjs +6 -3
- package/src/earth/deep-orbital-history.cjs +44 -15
- 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 +17 -0
- package/src/layer0/index.js +20 -6
- package/src/math/angles.cjs +38 -0
- package/src/model.js +76 -227
- package/src/moon/arguments.cjs +5 -31
- package/src/planets/chain-artifact.js +2 -2
- package/src/time/calendar.cjs +165 -0
- package/types/constants/coefficients.d.ts +1 -1
- package/types/constants/generated.d.ts +4 -3
- 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 +14 -0
- package/types/deltat/moon-distance-artifact.d.cts +3 -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 +6 -0
- package/types/layer0/index.d.ts +3 -2
- 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/time/calendar.d.cts +78 -0
|
@@ -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
|
+
};
|
|
@@ -94,6 +94,13 @@ export type DeepTimeLodDeps = {
|
|
|
94
94
|
* difference on moonDistanceMetresAtAge (the LOD-rate decomposition's tidal term).
|
|
95
95
|
*/
|
|
96
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;
|
|
97
104
|
};
|
|
98
105
|
/**
|
|
99
106
|
* @typedef {Object} DeepTimeLodConstants
|
|
@@ -142,6 +149,10 @@ export type DeepTimeLodDeps = {
|
|
|
142
149
|
* OPTIONAL analytic slope of the distance history (metres per Ma, positive
|
|
143
150
|
* into the past means a growing a... sign as da/dt_Ma); absent → a central
|
|
144
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.
|
|
145
156
|
*/
|
|
146
157
|
/** @param {DeepTimeLodDeps} deps */
|
|
147
158
|
export function createDeepTimeLod(deps: DeepTimeLodDeps): {
|
|
@@ -150,6 +161,9 @@ export function createDeepTimeLod(deps: DeepTimeLodDeps): {
|
|
|
150
161
|
lodHoursAtAge: (t_Ma: number) => number | null;
|
|
151
162
|
lunisolarPrecessionRateArcsecPerYrAtAge: (t_Ma: number) => number | null;
|
|
152
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;
|
|
153
167
|
lunarTorqueFactorAtAge: (tMa: number) => (number | null);
|
|
154
168
|
precessionTorqueTermAtAge: (tMa: number) => (number | null);
|
|
155
169
|
siderealYearSecondsAtAge: (t_Ma: number) => number;
|
|
@@ -15,5 +15,8 @@ export const MOON_DISTANCE_ARTIFACT: Readonly<{
|
|
|
15
15
|
aEarthRadii: number[];
|
|
16
16
|
aMinEarthRadii: number[];
|
|
17
17
|
aMaxEarthRadii: number[];
|
|
18
|
+
obliquityDeg: number[];
|
|
19
|
+
obliquityMinDeg: number[];
|
|
20
|
+
obliquityMaxDeg: number[];
|
|
18
21
|
}>;
|
|
19
22
|
export const MOON_DISTANCE_ARTIFACT_HASH: "850cd0b266d46a71";
|
|
@@ -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.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The mass chain in §9 order: Δa (the Sun's tidal coupling to the Earth–Moon
|
|
3
|
+
* barycentric wobble, leading order), the corrected Moon distance, Kepler on
|
|
4
|
+
* the Moon's orbit → G(M_E + M_M), the DE440 split → GM_E and GM_M, Kepler on
|
|
5
|
+
* Earth's orbit → G(M_☉ + M_E), the subtraction → GM_☉ and M_☉.
|
|
6
|
+
* @param {{
|
|
7
|
+
* moonDistanceKm: number, moonSiderealMonthDays: number, meanSiderealYearDays: number,
|
|
8
|
+
* meanLengthOfDaySeconds: number, massRatioEarthMoon: number, currentAUDistanceKm: number,
|
|
9
|
+
* gravitationalConstantKm3KgS2: number,
|
|
10
|
+
* }} c
|
|
11
|
+
* @returns {{
|
|
12
|
+
* meanSiderealYearSeconds: number, moonOrbitalShiftKm: number, moonDistanceCorrectedKm: number,
|
|
13
|
+
* gmEarthMoonSystemKm3S2: number, gmEarthAloneKm3S2: number, gmMoonAloneKm3S2: number,
|
|
14
|
+
* gmSunPlusEarthKm3S2: number, gmSunKm3S2: number, sunMassKg: number,
|
|
15
|
+
* }}
|
|
16
|
+
*/
|
|
17
|
+
export function computeMassChainJ2000(c: {
|
|
18
|
+
moonDistanceKm: number;
|
|
19
|
+
moonSiderealMonthDays: number;
|
|
20
|
+
meanSiderealYearDays: number;
|
|
21
|
+
meanLengthOfDaySeconds: number;
|
|
22
|
+
massRatioEarthMoon: number;
|
|
23
|
+
currentAUDistanceKm: number;
|
|
24
|
+
gravitationalConstantKm3KgS2: number;
|
|
25
|
+
}): {
|
|
26
|
+
meanSiderealYearSeconds: number;
|
|
27
|
+
moonOrbitalShiftKm: number;
|
|
28
|
+
moonDistanceCorrectedKm: number;
|
|
29
|
+
gmEarthMoonSystemKm3S2: number;
|
|
30
|
+
gmEarthAloneKm3S2: number;
|
|
31
|
+
gmMoonAloneKm3S2: number;
|
|
32
|
+
gmSunPlusEarthKm3S2: number;
|
|
33
|
+
gmSunKm3S2: number;
|
|
34
|
+
sunMassKg: number;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* The Moon's J2000 periods on the IAU inputs. The two precession inputs are
|
|
38
|
+
* equinox-OF-DATE observables (3231.50 d / 6798.38 d; the legacy "ICRF" name
|
|
39
|
+
* is kept); the star-referenced periods remove the equinox's own precession,
|
|
40
|
+
* 1/T_E = 1/T_I ∓ 1/T_p (the perigee advances, the node regresses), T_p the
|
|
41
|
+
* J2000 precession anchor in days. The months follow kinematically.
|
|
42
|
+
* @param {{
|
|
43
|
+
* moonSiderealMonthDays: number, moonApsidalPrecessionDaysInput: number, moonNodalPrecessionDaysInput: number,
|
|
44
|
+
* axialPrecessionJ2000Days: number, meanSiderealYearDays: number, meanSolarYearDays: number,
|
|
45
|
+
* }} c
|
|
46
|
+
* @returns {{
|
|
47
|
+
* moonApsidalPrecessionDaysEarth: number, moonNodalPrecessionDaysEarth: number,
|
|
48
|
+
* moonApsidalJ2000Seconds: number, moonNodalJ2000Seconds: number, moonSiderealMonthJ2000Seconds: number,
|
|
49
|
+
* moonAnomalisticMonthDays: number, moonNodalMonthDays: number, moonSynodicMonthDays: number, moonTropicalMonthDays: number,
|
|
50
|
+
* moonFullMoonCycleEarthDays: number, moonFullMoonCycleICRFDays: number,
|
|
51
|
+
* moonApsidalMeetsNodalDays: number, moonLunarLevelingCycleDays: number,
|
|
52
|
+
* moonDraconicYearICRFDays: number, moonDraconicYearEarthDays: number,
|
|
53
|
+
* }}
|
|
54
|
+
*/
|
|
55
|
+
export function computeMoonPeriodsJ2000(c: {
|
|
56
|
+
moonSiderealMonthDays: number;
|
|
57
|
+
moonApsidalPrecessionDaysInput: number;
|
|
58
|
+
moonNodalPrecessionDaysInput: number;
|
|
59
|
+
axialPrecessionJ2000Days: number;
|
|
60
|
+
meanSiderealYearDays: number;
|
|
61
|
+
meanSolarYearDays: number;
|
|
62
|
+
}): {
|
|
63
|
+
moonApsidalPrecessionDaysEarth: number;
|
|
64
|
+
moonNodalPrecessionDaysEarth: number;
|
|
65
|
+
moonApsidalJ2000Seconds: number;
|
|
66
|
+
moonNodalJ2000Seconds: number;
|
|
67
|
+
moonSiderealMonthJ2000Seconds: number;
|
|
68
|
+
moonAnomalisticMonthDays: number;
|
|
69
|
+
moonNodalMonthDays: number;
|
|
70
|
+
moonSynodicMonthDays: number;
|
|
71
|
+
moonTropicalMonthDays: number;
|
|
72
|
+
moonFullMoonCycleEarthDays: number;
|
|
73
|
+
moonFullMoonCycleICRFDays: number;
|
|
74
|
+
moonApsidalMeetsNodalDays: number;
|
|
75
|
+
moonLunarLevelingCycleDays: number;
|
|
76
|
+
moonDraconicYearICRFDays: number;
|
|
77
|
+
moonDraconicYearEarthDays: number;
|
|
78
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type MeanObliquityTable = {
|
|
2
|
+
/**
|
|
3
|
+
* - ascending, 0 first, uniform 1-Myr step
|
|
4
|
+
*/
|
|
5
|
+
ageMa: ReadonlyArray<number>;
|
|
6
|
+
/**
|
|
7
|
+
* - the cited mean obliquity column, degrees
|
|
8
|
+
*/
|
|
9
|
+
obliquityDeg: ReadonlyArray<number>;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* @typedef {Object} MeanObliquityTable
|
|
13
|
+
* @property {ReadonlyArray<number>} ageMa - ascending, 0 first, uniform 1-Myr step
|
|
14
|
+
* @property {ReadonlyArray<number>} obliquityDeg - the cited mean obliquity column, degrees
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* @param {{ table: MeanObliquityTable }} deps
|
|
18
|
+
* @returns {{
|
|
19
|
+
* meanObliquityDegAtAge: (tMa: number) => number|null,
|
|
20
|
+
* cosRatioAtAge: (tMa: number) => number|null,
|
|
21
|
+
* meanObliquityJ2000Deg: number,
|
|
22
|
+
* spanMa: number,
|
|
23
|
+
* }}
|
|
24
|
+
*/
|
|
25
|
+
export function createMeanObliquityHistory(deps: {
|
|
26
|
+
table: MeanObliquityTable;
|
|
27
|
+
}): {
|
|
28
|
+
meanObliquityDegAtAge: (tMa: number) => number | null;
|
|
29
|
+
cosRatioAtAge: (tMa: number) => number | null;
|
|
30
|
+
meanObliquityJ2000Deg: number;
|
|
31
|
+
spanMa: number;
|
|
32
|
+
};
|
|
@@ -24,14 +24,20 @@ export function computeSolarTorqueShare(c: {
|
|
|
24
24
|
* moonDistanceMetresAtAge: (tMa: number) => (number | null),
|
|
25
25
|
* moonDistanceJ2000Metres: number,
|
|
26
26
|
* yearToTMa: (year: number) => number,
|
|
27
|
+
* meanObliquityCosRatioAtAge?: (tMa: number) => (number | null),
|
|
27
28
|
* }} deps - p0 = the model's derived J2000 rate, 1,296,000/axial0 (S5; a
|
|
28
29
|
* number or a LAZY getter — the callers' certified year laws read the
|
|
29
30
|
* deep-time factory this is built inside, so the anchor is resolved on
|
|
30
31
|
* the first RATE use, never at construction; the torque term needs no
|
|
31
|
-
* anchor); lodJ2000Seconds the SAME day basis lodSecondsAtAge(0) returns
|
|
32
|
+
* anchor); lodJ2000Seconds the SAME day basis lodSecondsAtAge(0) returns;
|
|
33
|
+
* meanObliquityCosRatioAtAge the cited mean obliquity's cos ε̄(t)/cos ε̄(0)
|
|
34
|
+
* (OPTIONAL — absent, the rate of date is the constant alone, bit-identical).
|
|
32
35
|
* @returns {{
|
|
33
36
|
* composedRateArcsecPerYrAtAge: (tMa: number) => (number | null),
|
|
34
37
|
* composedPeriodYearsAtAge: (tMa: number) => (number | null),
|
|
38
|
+
* torqueRateArcsecPerYrAtAge: (tMa: number) => (number | null),
|
|
39
|
+
* torquePeriodYearsAtAge: (tMa: number) => (number | null),
|
|
40
|
+
* obliquityFactorAtAge: (tMa: number) => (number | null),
|
|
35
41
|
* composedRateArcsecPerYrAtYear: (year: number) => (number | null),
|
|
36
42
|
* composedPeriodYearsAtYear: (year: number) => (number | null),
|
|
37
43
|
* composedRateRatioAtAge: (tMa: number) => (number | null),
|
|
@@ -49,9 +55,13 @@ export function createComposedPrecession(deps: {
|
|
|
49
55
|
moonDistanceMetresAtAge: (tMa: number) => (number | null);
|
|
50
56
|
moonDistanceJ2000Metres: number;
|
|
51
57
|
yearToTMa: (year: number) => number;
|
|
58
|
+
meanObliquityCosRatioAtAge?: (tMa: number) => (number | null);
|
|
52
59
|
}): {
|
|
53
60
|
composedRateArcsecPerYrAtAge: (tMa: number) => (number | null);
|
|
54
61
|
composedPeriodYearsAtAge: (tMa: number) => (number | null);
|
|
62
|
+
torqueRateArcsecPerYrAtAge: (tMa: number) => (number | null);
|
|
63
|
+
torquePeriodYearsAtAge: (tMa: number) => (number | null);
|
|
64
|
+
obliquityFactorAtAge: (tMa: number) => (number | null);
|
|
55
65
|
composedRateArcsecPerYrAtYear: (year: number) => (number | null);
|
|
56
66
|
composedPeriodYearsAtYear: (year: number) => (number | null);
|
|
57
67
|
composedRateRatioAtAge: (tMa: number) => (number | null);
|
package/types/index.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export { createSecularSeriesOverride } from "./planets/secular-series.cjs";
|
|
|
14
14
|
export { createDeepEccChannel } from "./moon/deep-ecc-channel.cjs";
|
|
15
15
|
export { createDeepOrbitalHistory } from "./earth/deep-orbital-history.cjs";
|
|
16
16
|
export { createSiderealYearChannel } from "./earth/sidereal-year-channel.cjs";
|
|
17
|
+
export { createMeanObliquityHistory } from "./earth/mean-obliquity-history.cjs";
|
|
17
18
|
export { createPlanetModel } from "./planets/model.cjs";
|
|
18
19
|
export { PLANET_DISPLAY_NAMES } from "./planets/display-names.cjs";
|
|
19
20
|
export { createDeltaTCycles } from "./deltat/cycles.cjs";
|
|
@@ -58,6 +59,11 @@ import { REFERENCE_DATA } from './constants/index.js';
|
|
|
58
59
|
import { assembleModel } from './model.js';
|
|
59
60
|
export { GENERATED as DEFAULT_CONSTANTS, CONSTANTS_HASH, MODEL_VERSION, PREPRINT_DOI, REFERENCE_DATA };
|
|
60
61
|
export { FITTED_COEFFICIENTS, COEFFICIENTS_HASH } from "./constants/index.js";
|
|
62
|
+
export { GREGORIAN_START, GREGORIAN_START_JD, calendarToJD, jdToCalendar, jdToDecimalYear, dayFractionToHMS, julianCalendarToJD, jdToJulianCalendar } from "./time/calendar.cjs";
|
|
63
|
+
export { DEG2RAD, RAD2DEG, ARCSEC_PER_TURN, ARCSEC_PER_RAD, wrap360, wrap180, wrap180Closed, wrap2pi, wrapPi } from "./math/angles.cjs";
|
|
64
|
+
export { createDeepTimeChain, MOON_ECC_SENSITIVITY_PERIGEE, MOON_ECC_SENSITIVITY_NODE } from "./deltat/deep-time-chain.js";
|
|
65
|
+
export { computeMassChainJ2000, computeMoonPeriodsJ2000 } from "./earth/mass-chain.cjs";
|
|
66
|
+
export { SECONDS_PER_DAY, DAYS_PER_JULIAN_YEAR, JULIAN_CENTURY_DAYS, SECONDS_PER_JULIAN_YEAR } from "./constants/units.cjs";
|
|
61
67
|
export { computeEarthFrameOfDate, solveWheelAngleForLongitude, computeSceneWorldFrameJ2000, SCENE_EQUINOX_VIEW_AZIMUTH_DEG } from "./earth/frame-of-date.cjs";
|
|
62
68
|
export { derivePlanetGeometry, scaffoldOrbitInputs } from "./planets/geometry.cjs";
|
|
63
69
|
export { buildPlanetChainsFromArtifactData, computePlanetElementsAtYear, computeHeliocentricEclipticFromElements, computePoissonArgRad, computeOsculatingElements, solveKeplerRad, computeApsidalSecularDegPerYr, ANCHOR_EPOCH_YEAR, ANCHOR_EPOCH_JD } from "./planets/keplerian-chain.cjs";
|
package/types/layer0/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export function createEpochPrimitives({ params: p, alphaAtAgeMa, moonDistanceMetresAtAge }: {
|
|
1
|
+
export function createEpochPrimitives({ params: p, alphaAtAgeMa, moonDistanceMetresAtAge, meanObliquityCosRatioAtAge }: {
|
|
2
2
|
params: EpochParams;
|
|
3
3
|
alphaAtAgeMa: (tMa: number) => number;
|
|
4
4
|
moonDistanceMetresAtAge: (tMa: number) => number | null;
|
|
5
|
+
meanObliquityCosRatioAtAge?: (tMa: number) => number | null;
|
|
5
6
|
}): EpochPrimitives;
|
|
6
7
|
export type EpochParams = {
|
|
7
8
|
/**
|
|
@@ -53,7 +54,7 @@ export type EpochPrimitives = {
|
|
|
53
54
|
lodSeconds: (year: number) => number | null;
|
|
54
55
|
siderealYearSeconds: (year: number) => number;
|
|
55
56
|
/**
|
|
56
|
-
* sidereal less one equinox turn per T_p(t) (the composed precession period)
|
|
57
|
+
* sidereal less one equinox turn per T_p(t) (the composed precession period on the RATE of date)
|
|
57
58
|
*/
|
|
58
59
|
tropicalYearSeconds: (year: number) => number;
|
|
59
60
|
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** π/180 — degrees to radians. */
|
|
2
|
+
export const DEG2RAD: number;
|
|
3
|
+
/** 180/π — radians to degrees. */
|
|
4
|
+
export const RAD2DEG: number;
|
|
5
|
+
/** Arcseconds in a full turn. */
|
|
6
|
+
export const ARCSEC_PER_TURN: 1296000;
|
|
7
|
+
/** Arcseconds per radian, 206264.806… */
|
|
8
|
+
export const ARCSEC_PER_RAD: number;
|
|
9
|
+
/** @param {number} x degrees @returns {number} the same angle in [0, 360) */
|
|
10
|
+
export function wrap360(x: number): number;
|
|
11
|
+
/** @param {number} x degrees @returns {number} the same angle in [−180, 180) */
|
|
12
|
+
export function wrap180(x: number): number;
|
|
13
|
+
/** @param {number} x degrees @returns {number} the same angle in (−180, 180] */
|
|
14
|
+
export function wrap180Closed(x: number): number;
|
|
15
|
+
/** @param {number} x radians @returns {number} the same angle in [0, 2π) */
|
|
16
|
+
export function wrap2pi(x: number): number;
|
|
17
|
+
/** @param {number} x radians @returns {number} the same angle in [−π, π) */
|
|
18
|
+
export function wrapPi(x: number): number;
|
package/types/model.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RA-day-offset Fourier amplitudes (ms). KNOWN EXCEPTION carried over from
|
|
3
|
+
* the reference adapters: these are fit results that live as literals in the
|
|
4
|
+
* engine too — packaging them into FITTED_COEFFICIENTS is the remaining
|
|
5
|
+
* §7a-step-1b move; until then this is their single packaged home.
|
|
6
|
+
*/
|
|
1
7
|
/**
|
|
2
8
|
* Assemble the model surfaces from a resolved constants context + fitted
|
|
3
9
|
* coefficients. Internal: `createModel` in index.js composes this with the
|
|
@@ -41,7 +47,7 @@ export function assembleModel(C: Readonly<Record<string, any>>, F: Readonly<Reco
|
|
|
41
47
|
lunarSmallParameter: number;
|
|
42
48
|
moonMassFraction: number;
|
|
43
49
|
solarTidalShiftKm: number;
|
|
44
|
-
moonDistanceCorrectedKm:
|
|
50
|
+
moonDistanceCorrectedKm: number;
|
|
45
51
|
gmEarthMoonSystemKm3S2: number;
|
|
46
52
|
gmEarthKm3S2: number;
|
|
47
53
|
gmMoonKm3S2: number;
|
|
@@ -69,10 +75,18 @@ export function assembleModel(C: Readonly<Record<string, any>>, F: Readonly<Reco
|
|
|
69
75
|
tropicalYearSecondsAtYear: (year: number) => number;
|
|
70
76
|
}>;
|
|
71
77
|
lunisolar: Readonly<{
|
|
72
|
-
/** The mean lunisolar precession period T_p(t), years — the
|
|
78
|
+
/** The mean lunisolar precession period T_p(t), years — 1,296,000/the precession RATE of date (25,771.6 at J2000): THE published deep-time clock. @param {number} year @returns {number} */
|
|
73
79
|
meanPeriodYearsAtYear: (year: number) => number;
|
|
74
|
-
/**
|
|
80
|
+
/** THE PRECESSION RATE OF DATE ψ̇(t) = [ω/ω₀]·p₀·[f_S + (1 − f_S)(a₀/a_M)³] × cos ε̄(t)/cos ε̄(0), ″/yr — the constant's scaling on the spin and the lunar torque times the cited mean obliquity's cosine (plan 12 §8 option (a); p₀ = 50.2880, the IAU 2006 input). @param {number} year @returns {number} */
|
|
75
81
|
meanRateArcsecPerYrAtYear: (year: number) => number;
|
|
82
|
+
/** THE PRECESSION CONSTANT OF DATE as a rate on the J2000 obliquity, ″/yr — the spin and torque scaling alone (the hybrid obliquity integration's integrand: its own ŝ·n̂ carries the cosine). @param {number} year @returns {number} */
|
|
83
|
+
torqueRateArcsecPerYrAtYear: (year: number) => number;
|
|
84
|
+
/** 1,296,000/the torque rate, years. @param {number} year @returns {number} */
|
|
85
|
+
torquePeriodYearsAtYear: (year: number) => number;
|
|
86
|
+
/** cos ε̄(t)/cos ε̄(0) — the rate of date's obliquity factor on the constant (1 at J2000; 1.0075 at the Devonian, 1.0245 at 2.46 Ga). @param {number} year @returns {number} */
|
|
87
|
+
precessionObliquityFactorAtYear: (year: number) => number;
|
|
88
|
+
/** THE CITED MEAN OBLIQUITY OF DATE ε̄(t), degrees — Farhat et al. 2022's own column of the Earth–Moon history (a Myr-scale MEAN: 23.25° at age 0 against the J2000 instant 23.44°; 22.23° Devonian, 19.73° at 2.46 Ga); read as the shape cos ε̄(t)/cos ε̄(0) on the precession rate. NaN beyond the input's span (4,429 Ma); forward of J2000 the J2000 slope is held. @param {number} year @returns {number} */
|
|
89
|
+
meanObliquityCitedDegAtYear: (year: number) => number;
|
|
76
90
|
/** The of-date period — the one-family beat inside ±2 Myr, the composed mean beyond. @param {number} year @returns {number} */
|
|
77
91
|
ofDatePeriodYearsAtYear: (year: number) => number;
|
|
78
92
|
/** f_S, the solar fraction of the J2000 precession torque. */
|
|
@@ -142,6 +156,10 @@ export function assembleModel(C: Readonly<Record<string, any>>, F: Readonly<Reco
|
|
|
142
156
|
earth: Readonly<{
|
|
143
157
|
perihelionLongitudeDeg: (year: number) => number;
|
|
144
158
|
obliquityDeg: (year: number) => number;
|
|
159
|
+
/** The hybrid's own domain, [yearFrom, yearTo] — the banked ζ series' span, ±10 Myr about J2000 (plan 12 §8.5: the published surfaces serve `obliquityDeg` inside it only; null without a series, i.e. a bare createModel()). */
|
|
160
|
+
obliquityHybridDomainYears: [number, number] | null;
|
|
161
|
+
/** The cited mean obliquity of date ε̄(t) (Farhat et al. 2022's column; plan 12 §8 option (a)), degrees — a Myr-scale mean; NaN beyond 4,429 Ma. @param {number} year @returns {number} */
|
|
162
|
+
meanObliquityCitedDeg: (year: number) => number;
|
|
145
163
|
eccentricity: (year: number) => number;
|
|
146
164
|
inclinationDeg: (year: number) => number;
|
|
147
165
|
ascendingNodeDeg: (year: number) => number;
|
|
@@ -121,12 +121,7 @@ export function createMoonArguments({ constants, fns }: {
|
|
|
121
121
|
};
|
|
122
122
|
};
|
|
123
123
|
};
|
|
124
|
-
|
|
125
|
-
* Astronomical JD → decimal year: Julian calendar before 1582-10-15,
|
|
126
|
-
* Gregorian after (Meeus Ch. 7 inverse). The S3-aligned coordinate for the
|
|
127
|
-
* Sun secular deviations. @param {number} jd @returns {number}
|
|
128
|
-
*/
|
|
129
|
-
export function jdToDecimalYear(jd: number): number;
|
|
124
|
+
import { jdToDecimalYear } from "../time/calendar.cjs";
|
|
130
125
|
/**
|
|
131
126
|
* @typedef {{Lp: number, D: number, M: number, Mp: number, F: number}} MoonArgsDeg
|
|
132
127
|
*/
|
|
@@ -137,3 +132,4 @@ export function jdToDecimalYear(jd: number): number;
|
|
|
137
132
|
* 5c: it was written as the era unit's twelfth, H/12, "lattice-derived";
|
|
138
133
|
* the value is kept bit-identical and named for what it is). */
|
|
139
134
|
export const SECULAR_COMPLETION_TAPER_YEARS: 27943.083333333332;
|
|
135
|
+
export { jdToDecimalYear };
|