@essrt/physics 8.0.0 → 9.1.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/README.md +1 -1
- package/package.json +3 -1
- package/src/constants/generated.d.ts +109 -25
- package/src/constants/generated.js +219 -89
- package/src/deltat/deep-time.cjs +23 -6
- package/src/index.js +4 -0
- package/src/model.js +63 -14
- package/src/moon/deep-ecc-channel.cjs +59 -12
- package/src/moon/deep-modes-artifact.cjs +4 -2
- package/src/moon/month-chain.cjs +21 -10
- package/src/planets/chain-artifact.js +2 -2
- package/src/planets/fibonacci-laws.cjs +7 -42
- package/src/planets/model.cjs +10 -13
- package/src/planets/orientation.cjs +2 -2
- package/src/planets/secular-shape.cjs +36 -0
- package/src/planets/spin-channel.cjs +391 -0
- package/types/constants/generated.d.ts +109 -25
- package/types/index.d.ts +2 -0
- package/types/model.d.ts +23 -0
- package/types/moon/deep-ecc-channel.d.cts +31 -2
- package/types/moon/deep-modes-artifact.d.cts +2 -0
- package/types/moon/month-chain.d.cts +4 -0
- package/types/planets/fibonacci-laws.d.cts +0 -29
- package/types/planets/model.d.cts +10 -4
- package/types/planets/orientation.d.cts +1 -1
- package/types/planets/secular-shape.d.cts +30 -0
- package/types/planets/spin-channel.d.cts +193 -0
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# @essrt/physics
|
|
2
2
|
|
|
3
3
|
The physics core of **ESSRT** — the Expanding Solar System Resonance Theory —
|
|
4
|
-
as implemented by the [
|
|
4
|
+
as implemented by the [ESSRT simulator](https://3d.holisticuniverse.com)
|
|
5
5
|
([source, AGPL-3.0](https://github.com/dvansonsbeek/3d)). Pure computation:
|
|
6
6
|
no I/O, no globals, no DOM, constants injected. The package ships the
|
|
7
7
|
**complete model**, including the fitted coefficients, so an installed copy
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@essrt/physics",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "9.1.1",
|
|
4
4
|
"description": "ESSRT (Expanding Solar System Resonance Theory) physics core — pure, injectable-constants, no I/O, no globals, no DOM. The complete model incl. fitted coefficients; every published version immutably ships one recorded model identity.",
|
|
5
5
|
"essrt": {
|
|
6
6
|
"modelVersion": "v14.0",
|
|
@@ -55,6 +55,8 @@
|
|
|
55
55
|
"./planets/asc-node-integrator": { "types": "./types/planets/asc-node-integrator.d.cts", "default": "./src/planets/asc-node-integrator.cjs" },
|
|
56
56
|
"./planets/orbit-chain": { "types": "./types/planets/orbit-chain.d.cts", "default": "./src/planets/orbit-chain.cjs" },
|
|
57
57
|
"./planets/keplerian-chain": { "types": "./types/planets/keplerian-chain.d.cts", "default": "./src/planets/keplerian-chain.cjs" },
|
|
58
|
+
"./planets/spin-channel": { "types": "./types/planets/spin-channel.d.cts", "default": "./src/planets/spin-channel.cjs" },
|
|
59
|
+
"./planets/secular-shape": { "types": "./types/planets/secular-shape.d.cts", "default": "./src/planets/secular-shape.cjs" },
|
|
58
60
|
"./planets/inv-plane-frame": { "types": "./types/planets/inv-plane-frame.d.cts", "default": "./src/planets/inv-plane-frame.cjs" },
|
|
59
61
|
"./planets/secular-series": { "types": "./types/planets/secular-series.d.cts", "default": "./src/planets/secular-series.cjs" },
|
|
60
62
|
"./planets/model": { "types": "./types/planets/model.d.cts", "default": "./src/planets/model.cjs" },
|
|
@@ -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: "b9c4d78647577e67";
|
|
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: "b9c4d78647577e67";
|
|
13
13
|
readonly additionalBodies: {
|
|
14
14
|
"pluto": {
|
|
15
15
|
"name": string;
|
|
@@ -372,6 +372,113 @@ export declare const DEFAULT_CONSTANTS: {
|
|
|
372
372
|
"rotationPeriodDays": number;
|
|
373
373
|
};
|
|
374
374
|
};
|
|
375
|
+
readonly planetSpinPhysical: {
|
|
376
|
+
"mercury": {
|
|
377
|
+
"j2": number;
|
|
378
|
+
"j2ReferenceRadiusKm": number;
|
|
379
|
+
"momentOfInertiaFactor": number;
|
|
380
|
+
"momentOfInertiaFactorClass": string;
|
|
381
|
+
"rotationRateDegPerDay": number;
|
|
382
|
+
"poleRaJ2000Deg": number;
|
|
383
|
+
"poleDecJ2000Deg": number;
|
|
384
|
+
"cassiniLocked": boolean;
|
|
385
|
+
"satellites": unknown[];
|
|
386
|
+
};
|
|
387
|
+
"venus": {
|
|
388
|
+
"j2": number;
|
|
389
|
+
"j2ReferenceRadiusKm": number;
|
|
390
|
+
"momentOfInertiaFactor": number;
|
|
391
|
+
"momentOfInertiaFactorClass": string;
|
|
392
|
+
"rotationRateDegPerDay": number;
|
|
393
|
+
"poleRaJ2000Deg": number;
|
|
394
|
+
"poleDecJ2000Deg": number;
|
|
395
|
+
"cassiniLocked": boolean;
|
|
396
|
+
"satellites": unknown[];
|
|
397
|
+
};
|
|
398
|
+
"mars": {
|
|
399
|
+
"j2": number;
|
|
400
|
+
"j2ReferenceRadiusKm": number;
|
|
401
|
+
"momentOfInertiaFactor": number;
|
|
402
|
+
"momentOfInertiaFactorClass": string;
|
|
403
|
+
"rotationRateDegPerDay": number;
|
|
404
|
+
"poleRaJ2000Deg": number;
|
|
405
|
+
"poleDecJ2000Deg": number;
|
|
406
|
+
"cassiniLocked": boolean;
|
|
407
|
+
"satellites": Array<{
|
|
408
|
+
"name": string;
|
|
409
|
+
"gmKm3S2": number;
|
|
410
|
+
"semiMajorAxisKm": number;
|
|
411
|
+
"orbitalPeriodDays": number;
|
|
412
|
+
}>;
|
|
413
|
+
};
|
|
414
|
+
"jupiter": {
|
|
415
|
+
"j2": number;
|
|
416
|
+
"j2ReferenceRadiusKm": number;
|
|
417
|
+
"momentOfInertiaFactor": number;
|
|
418
|
+
"momentOfInertiaFactorClass": string;
|
|
419
|
+
"momentOfInertiaFactorAlternative": number;
|
|
420
|
+
"rotationRateDegPerDay": number;
|
|
421
|
+
"poleRaJ2000Deg": number;
|
|
422
|
+
"poleDecJ2000Deg": number;
|
|
423
|
+
"cassiniLocked": boolean;
|
|
424
|
+
"satellites": Array<{
|
|
425
|
+
"name": string;
|
|
426
|
+
"gmKm3S2": number;
|
|
427
|
+
"semiMajorAxisKm": number;
|
|
428
|
+
"orbitalPeriodDays": number;
|
|
429
|
+
}>;
|
|
430
|
+
};
|
|
431
|
+
"saturn": {
|
|
432
|
+
"j2": number;
|
|
433
|
+
"j2ReferenceRadiusKm": number;
|
|
434
|
+
"momentOfInertiaFactor": number;
|
|
435
|
+
"momentOfInertiaFactorClass": string;
|
|
436
|
+
"momentOfInertiaFactorAlternative": [number, number];
|
|
437
|
+
"rotationRateDegPerDay": number;
|
|
438
|
+
"poleRaJ2000Deg": number;
|
|
439
|
+
"poleDecJ2000Deg": number;
|
|
440
|
+
"cassiniLocked": boolean;
|
|
441
|
+
"satellites": Array<{
|
|
442
|
+
"name": string;
|
|
443
|
+
"gmKm3S2": number;
|
|
444
|
+
"semiMajorAxisKm": number;
|
|
445
|
+
"orbitalPeriodDays": number;
|
|
446
|
+
}>;
|
|
447
|
+
};
|
|
448
|
+
"uranus": {
|
|
449
|
+
"j2": number;
|
|
450
|
+
"j2ReferenceRadiusKm": number;
|
|
451
|
+
"momentOfInertiaFactor": number;
|
|
452
|
+
"momentOfInertiaFactorClass": string;
|
|
453
|
+
"rotationRateDegPerDay": number;
|
|
454
|
+
"poleRaJ2000Deg": number;
|
|
455
|
+
"poleDecJ2000Deg": number;
|
|
456
|
+
"cassiniLocked": boolean;
|
|
457
|
+
"satellites": Array<{
|
|
458
|
+
"name": string;
|
|
459
|
+
"gmKm3S2": number;
|
|
460
|
+
"semiMajorAxisKm": number;
|
|
461
|
+
"orbitalPeriodDays": number;
|
|
462
|
+
}>;
|
|
463
|
+
};
|
|
464
|
+
"neptune": {
|
|
465
|
+
"j2": number;
|
|
466
|
+
"j2ReferenceRadiusKm": number;
|
|
467
|
+
"momentOfInertiaFactor": number;
|
|
468
|
+
"momentOfInertiaFactorClass": string;
|
|
469
|
+
"rotationRateDegPerDay": number;
|
|
470
|
+
"poleRaJ2000Deg": number;
|
|
471
|
+
"poleDecJ2000Deg": number;
|
|
472
|
+
"cassiniLocked": boolean;
|
|
473
|
+
"satellites": Array<{
|
|
474
|
+
"name": string;
|
|
475
|
+
"gmKm3S2": number;
|
|
476
|
+
"semiMajorAxisKm": number;
|
|
477
|
+
"orbitalPeriodDays": number;
|
|
478
|
+
"retrograde": boolean;
|
|
479
|
+
}>;
|
|
480
|
+
};
|
|
481
|
+
};
|
|
375
482
|
readonly planets: {
|
|
376
483
|
"mercury": {
|
|
377
484
|
"name": string;
|
|
@@ -386,9 +493,6 @@ export declare const DEFAULT_CONSTANTS: {
|
|
|
386
493
|
"inclinationCycleAnchor": number;
|
|
387
494
|
"antiPhase": boolean;
|
|
388
495
|
"ascendingNodeCyclesIn8H": number;
|
|
389
|
-
"obliquityCycleFraction": [number, number];
|
|
390
|
-
"axialPrecessionFraction": [number, number];
|
|
391
|
-
"eccentricityCycleFraction": [number, number];
|
|
392
496
|
};
|
|
393
497
|
"venus": {
|
|
394
498
|
"name": string;
|
|
@@ -403,9 +507,6 @@ export declare const DEFAULT_CONSTANTS: {
|
|
|
403
507
|
"inclinationCycleAnchor": number;
|
|
404
508
|
"antiPhase": boolean;
|
|
405
509
|
"ascendingNodeCyclesIn8H": number;
|
|
406
|
-
"obliquityCycleFraction": null;
|
|
407
|
-
"axialPrecessionFraction": [number, number];
|
|
408
|
-
"eccentricityCycleFraction": [number, number];
|
|
409
510
|
};
|
|
410
511
|
"mars": {
|
|
411
512
|
"name": string;
|
|
@@ -420,9 +521,6 @@ export declare const DEFAULT_CONSTANTS: {
|
|
|
420
521
|
"inclinationCycleAnchor": number;
|
|
421
522
|
"antiPhase": boolean;
|
|
422
523
|
"ascendingNodeCyclesIn8H": number;
|
|
423
|
-
"obliquityCycleFraction": [number, number];
|
|
424
|
-
"axialPrecessionFraction": [number, number];
|
|
425
|
-
"eccentricityCycleFraction": [number, number];
|
|
426
524
|
};
|
|
427
525
|
"jupiter": {
|
|
428
526
|
"name": string;
|
|
@@ -437,9 +535,6 @@ export declare const DEFAULT_CONSTANTS: {
|
|
|
437
535
|
"inclinationCycleAnchor": number;
|
|
438
536
|
"antiPhase": boolean;
|
|
439
537
|
"ascendingNodeCyclesIn8H": number;
|
|
440
|
-
"obliquityCycleFraction": [number, number];
|
|
441
|
-
"axialPrecessionFraction": [number, number];
|
|
442
|
-
"eccentricityCycleFraction": [number, number];
|
|
443
538
|
};
|
|
444
539
|
"saturn": {
|
|
445
540
|
"name": string;
|
|
@@ -454,9 +549,6 @@ export declare const DEFAULT_CONSTANTS: {
|
|
|
454
549
|
"inclinationCycleAnchor": number;
|
|
455
550
|
"antiPhase": boolean;
|
|
456
551
|
"ascendingNodeCyclesIn8H": number;
|
|
457
|
-
"obliquityCycleFraction": [number, number];
|
|
458
|
-
"axialPrecessionFraction": [number, number];
|
|
459
|
-
"eccentricityCycleFraction": [number, number];
|
|
460
552
|
};
|
|
461
553
|
"uranus": {
|
|
462
554
|
"name": string;
|
|
@@ -471,10 +563,6 @@ export declare const DEFAULT_CONSTANTS: {
|
|
|
471
563
|
"inclinationCycleAnchor": number;
|
|
472
564
|
"antiPhase": boolean;
|
|
473
565
|
"ascendingNodeCyclesIn8H": number;
|
|
474
|
-
"obliquityCycleFraction": [number, number];
|
|
475
|
-
"axialPrecessionFraction": [number, number];
|
|
476
|
-
"eccentricityCycleFraction": [number, number];
|
|
477
|
-
"eccentricityCycleApprox": boolean;
|
|
478
566
|
};
|
|
479
567
|
"neptune": {
|
|
480
568
|
"name": string;
|
|
@@ -489,10 +577,6 @@ export declare const DEFAULT_CONSTANTS: {
|
|
|
489
577
|
"inclinationCycleAnchor": number;
|
|
490
578
|
"antiPhase": boolean;
|
|
491
579
|
"ascendingNodeCyclesIn8H": number;
|
|
492
|
-
"obliquityCycleFraction": null;
|
|
493
|
-
"axialPrecessionFraction": [number, number];
|
|
494
|
-
"eccentricityCycleFraction": [number, number];
|
|
495
|
-
"eccentricityCycleApprox": boolean;
|
|
496
580
|
};
|
|
497
581
|
};
|
|
498
582
|
readonly timeReference: {
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
* carry it so a counterfactual is reproducible (§2d).
|
|
34
34
|
* @type {string}
|
|
35
35
|
*/
|
|
36
|
-
export const CONSTANTS_HASH = "
|
|
36
|
+
export const CONSTANTS_HASH = "b9c4d78647577e67";
|
|
37
37
|
|
|
38
38
|
/** Model version label — single source: public/input/model-version.json (§10 two-axis scheme). */
|
|
39
39
|
export const MODEL_VERSION = "v14.0";
|
|
@@ -43,7 +43,7 @@ export const PREPRINT_DOI = "10.21203/rs.3.rs-8758810/v4";
|
|
|
43
43
|
|
|
44
44
|
/** @type {Readonly<Record<string, unknown>>} */
|
|
45
45
|
export const DEFAULT_CONSTANTS = Object.freeze({
|
|
46
|
-
hash: "
|
|
46
|
+
hash: "b9c4d78647577e67",
|
|
47
47
|
additionalBodies: {
|
|
48
48
|
"pluto": {
|
|
49
49
|
"name": "Pluto",
|
|
@@ -430,6 +430,216 @@ export const DEFAULT_CONSTANTS = Object.freeze({
|
|
|
430
430
|
"rotationPeriodDays": 0.671300001591743
|
|
431
431
|
}
|
|
432
432
|
},
|
|
433
|
+
planetSpinPhysical: {
|
|
434
|
+
"mercury": {
|
|
435
|
+
"j2": 0.0000503,
|
|
436
|
+
"j2ReferenceRadiusKm": 2440,
|
|
437
|
+
"momentOfInertiaFactor": 0.346,
|
|
438
|
+
"momentOfInertiaFactorClass": "spin-inferred",
|
|
439
|
+
"rotationRateDegPerDay": 6.1385108,
|
|
440
|
+
"poleRaJ2000Deg": 281.0103,
|
|
441
|
+
"poleDecJ2000Deg": 61.4155,
|
|
442
|
+
"cassiniLocked": true,
|
|
443
|
+
"satellites": []
|
|
444
|
+
},
|
|
445
|
+
"venus": {
|
|
446
|
+
"j2": 0.0000044044,
|
|
447
|
+
"j2ReferenceRadiusKm": 6051,
|
|
448
|
+
"momentOfInertiaFactor": 0.337,
|
|
449
|
+
"momentOfInertiaFactorClass": "spin-inferred",
|
|
450
|
+
"rotationRateDegPerDay": -1.4813688,
|
|
451
|
+
"poleRaJ2000Deg": 272.76,
|
|
452
|
+
"poleDecJ2000Deg": 67.16,
|
|
453
|
+
"cassiniLocked": false,
|
|
454
|
+
"satellites": []
|
|
455
|
+
},
|
|
456
|
+
"mars": {
|
|
457
|
+
"j2": 0.001956608,
|
|
458
|
+
"j2ReferenceRadiusKm": 3396,
|
|
459
|
+
"momentOfInertiaFactor": 0.3644,
|
|
460
|
+
"momentOfInertiaFactorClass": "spin-inferred",
|
|
461
|
+
"rotationRateDegPerDay": 350.891982443297,
|
|
462
|
+
"poleRaJ2000Deg": 317.68143,
|
|
463
|
+
"poleDecJ2000Deg": 52.8865,
|
|
464
|
+
"cassiniLocked": false,
|
|
465
|
+
"satellites": [
|
|
466
|
+
{
|
|
467
|
+
"name": "Phobos",
|
|
468
|
+
"gmKm3S2": 0.0007087,
|
|
469
|
+
"semiMajorAxisKm": 9375,
|
|
470
|
+
"orbitalPeriodDays": 0.3187
|
|
471
|
+
},
|
|
472
|
+
{
|
|
473
|
+
"name": "Deimos",
|
|
474
|
+
"gmKm3S2": 0.0000962,
|
|
475
|
+
"semiMajorAxisKm": 23457,
|
|
476
|
+
"orbitalPeriodDays": 1.2625
|
|
477
|
+
}
|
|
478
|
+
]
|
|
479
|
+
},
|
|
480
|
+
"jupiter": {
|
|
481
|
+
"j2": 0.014696572,
|
|
482
|
+
"j2ReferenceRadiusKm": 71492,
|
|
483
|
+
"momentOfInertiaFactor": 0.26393,
|
|
484
|
+
"momentOfInertiaFactorClass": "gravity-constrained",
|
|
485
|
+
"momentOfInertiaFactorAlternative": 0.2756,
|
|
486
|
+
"rotationRateDegPerDay": 870.536,
|
|
487
|
+
"poleRaJ2000Deg": 268.056595,
|
|
488
|
+
"poleDecJ2000Deg": 64.495303,
|
|
489
|
+
"cassiniLocked": false,
|
|
490
|
+
"satellites": [
|
|
491
|
+
{
|
|
492
|
+
"name": "Io",
|
|
493
|
+
"gmKm3S2": 5959.91547,
|
|
494
|
+
"semiMajorAxisKm": 421800,
|
|
495
|
+
"orbitalPeriodDays": 1.762732
|
|
496
|
+
},
|
|
497
|
+
{
|
|
498
|
+
"name": "Europa",
|
|
499
|
+
"gmKm3S2": 3202.7121,
|
|
500
|
+
"semiMajorAxisKm": 671100,
|
|
501
|
+
"orbitalPeriodDays": 3.525463
|
|
502
|
+
},
|
|
503
|
+
{
|
|
504
|
+
"name": "Ganymede",
|
|
505
|
+
"gmKm3S2": 9887.83275,
|
|
506
|
+
"semiMajorAxisKm": 1070400,
|
|
507
|
+
"orbitalPeriodDays": 7.155588
|
|
508
|
+
},
|
|
509
|
+
{
|
|
510
|
+
"name": "Callisto",
|
|
511
|
+
"gmKm3S2": 7179.2834,
|
|
512
|
+
"semiMajorAxisKm": 1882700,
|
|
513
|
+
"orbitalPeriodDays": 16.69044
|
|
514
|
+
}
|
|
515
|
+
]
|
|
516
|
+
},
|
|
517
|
+
"saturn": {
|
|
518
|
+
"j2": 0.016290573,
|
|
519
|
+
"j2ReferenceRadiusKm": 60330,
|
|
520
|
+
"momentOfInertiaFactor": 0.2181,
|
|
521
|
+
"momentOfInertiaFactorClass": "gravity-constrained",
|
|
522
|
+
"momentOfInertiaFactorAlternative": [
|
|
523
|
+
0.2257,
|
|
524
|
+
0.2438
|
|
525
|
+
],
|
|
526
|
+
"rotationRateDegPerDay": 810.7939024,
|
|
527
|
+
"poleRaJ2000Deg": 40.589,
|
|
528
|
+
"poleDecJ2000Deg": 83.537,
|
|
529
|
+
"cassiniLocked": false,
|
|
530
|
+
"satellites": [
|
|
531
|
+
{
|
|
532
|
+
"name": "Mimas",
|
|
533
|
+
"gmKm3S2": 2.50349,
|
|
534
|
+
"semiMajorAxisKm": 186000,
|
|
535
|
+
"orbitalPeriodDays": 0.942422
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
"name": "Enceladus",
|
|
539
|
+
"gmKm3S2": 7.21037,
|
|
540
|
+
"semiMajorAxisKm": 238400,
|
|
541
|
+
"orbitalPeriodDays": 1.370218
|
|
542
|
+
},
|
|
543
|
+
{
|
|
544
|
+
"name": "Tethys",
|
|
545
|
+
"gmKm3S2": 41.21353,
|
|
546
|
+
"semiMajorAxisKm": 295000,
|
|
547
|
+
"orbitalPeriodDays": 1.887802
|
|
548
|
+
},
|
|
549
|
+
{
|
|
550
|
+
"name": "Dione",
|
|
551
|
+
"gmKm3S2": 73.11607,
|
|
552
|
+
"semiMajorAxisKm": 377700,
|
|
553
|
+
"orbitalPeriodDays": 2.736916
|
|
554
|
+
},
|
|
555
|
+
{
|
|
556
|
+
"name": "Rhea",
|
|
557
|
+
"gmKm3S2": 153.94175,
|
|
558
|
+
"semiMajorAxisKm": 527200,
|
|
559
|
+
"orbitalPeriodDays": 4.517503
|
|
560
|
+
},
|
|
561
|
+
{
|
|
562
|
+
"name": "Titan",
|
|
563
|
+
"gmKm3S2": 8978.1371,
|
|
564
|
+
"semiMajorAxisKm": 1221900,
|
|
565
|
+
"orbitalPeriodDays": 15.945448
|
|
566
|
+
},
|
|
567
|
+
{
|
|
568
|
+
"name": "Iapetus",
|
|
569
|
+
"gmKm3S2": 120.51511,
|
|
570
|
+
"semiMajorAxisKm": 3561700,
|
|
571
|
+
"orbitalPeriodDays": 79.331002
|
|
572
|
+
}
|
|
573
|
+
]
|
|
574
|
+
},
|
|
575
|
+
"uranus": {
|
|
576
|
+
"j2": 0.00351068,
|
|
577
|
+
"j2ReferenceRadiusKm": 25559,
|
|
578
|
+
"momentOfInertiaFactor": 0.225,
|
|
579
|
+
"momentOfInertiaFactorClass": "interior-model",
|
|
580
|
+
"rotationRateDegPerDay": -501.1600928,
|
|
581
|
+
"poleRaJ2000Deg": 257.311,
|
|
582
|
+
"poleDecJ2000Deg": -15.175,
|
|
583
|
+
"cassiniLocked": false,
|
|
584
|
+
"satellites": [
|
|
585
|
+
{
|
|
586
|
+
"name": "Miranda",
|
|
587
|
+
"gmKm3S2": 4.3,
|
|
588
|
+
"semiMajorAxisKm": 129846,
|
|
589
|
+
"orbitalPeriodDays": 1.413479
|
|
590
|
+
},
|
|
591
|
+
{
|
|
592
|
+
"name": "Ariel",
|
|
593
|
+
"gmKm3S2": 83.5,
|
|
594
|
+
"semiMajorAxisKm": 190929,
|
|
595
|
+
"orbitalPeriodDays": 2.520379
|
|
596
|
+
},
|
|
597
|
+
{
|
|
598
|
+
"name": "Umbriel",
|
|
599
|
+
"gmKm3S2": 85.1,
|
|
600
|
+
"semiMajorAxisKm": 265986,
|
|
601
|
+
"orbitalPeriodDays": 4.144177
|
|
602
|
+
},
|
|
603
|
+
{
|
|
604
|
+
"name": "Titania",
|
|
605
|
+
"gmKm3S2": 226.9,
|
|
606
|
+
"semiMajorAxisKm": 436298,
|
|
607
|
+
"orbitalPeriodDays": 8.705869
|
|
608
|
+
},
|
|
609
|
+
{
|
|
610
|
+
"name": "Oberon",
|
|
611
|
+
"gmKm3S2": 205.3,
|
|
612
|
+
"semiMajorAxisKm": 583511,
|
|
613
|
+
"orbitalPeriodDays": 13.463237
|
|
614
|
+
}
|
|
615
|
+
]
|
|
616
|
+
},
|
|
617
|
+
"neptune": {
|
|
618
|
+
"j2": 0.00340843,
|
|
619
|
+
"j2ReferenceRadiusKm": 25225,
|
|
620
|
+
"momentOfInertiaFactor": 0.23,
|
|
621
|
+
"momentOfInertiaFactorClass": "interior-model",
|
|
622
|
+
"rotationRateDegPerDay": 541.1397757,
|
|
623
|
+
"poleRaJ2000Deg": 299.36,
|
|
624
|
+
"poleDecJ2000Deg": 43.46,
|
|
625
|
+
"cassiniLocked": false,
|
|
626
|
+
"satellites": [
|
|
627
|
+
{
|
|
628
|
+
"name": "Triton",
|
|
629
|
+
"gmKm3S2": 1428.49546,
|
|
630
|
+
"semiMajorAxisKm": 354800,
|
|
631
|
+
"orbitalPeriodDays": 5.876994,
|
|
632
|
+
"retrograde": true
|
|
633
|
+
},
|
|
634
|
+
{
|
|
635
|
+
"name": "Proteus",
|
|
636
|
+
"gmKm3S2": 2.58342,
|
|
637
|
+
"semiMajorAxisKm": 117600,
|
|
638
|
+
"orbitalPeriodDays": 1.122315
|
|
639
|
+
}
|
|
640
|
+
]
|
|
641
|
+
}
|
|
642
|
+
},
|
|
433
643
|
planets: {
|
|
434
644
|
"mercury": {
|
|
435
645
|
"name": "Mercury",
|
|
@@ -446,19 +656,7 @@ export const DEFAULT_CONSTANTS = Object.freeze({
|
|
|
446
656
|
"ascendingNodeInvPlane": 32.83,
|
|
447
657
|
"inclinationCycleAnchor": 234.52,
|
|
448
658
|
"antiPhase": false,
|
|
449
|
-
"ascendingNodeCyclesIn8H": 9
|
|
450
|
-
"obliquityCycleFraction": [
|
|
451
|
-
8,
|
|
452
|
-
3
|
|
453
|
-
],
|
|
454
|
-
"axialPrecessionFraction": [
|
|
455
|
-
-8,
|
|
456
|
-
9
|
|
457
|
-
],
|
|
458
|
-
"eccentricityCycleFraction": [
|
|
459
|
-
2,
|
|
460
|
-
21
|
|
461
|
-
]
|
|
659
|
+
"ascendingNodeCyclesIn8H": 9
|
|
462
660
|
},
|
|
463
661
|
"venus": {
|
|
464
662
|
"name": "Venus",
|
|
@@ -475,16 +673,7 @@ export const DEFAULT_CONSTANTS = Object.freeze({
|
|
|
475
673
|
"ascendingNodeInvPlane": 54.7,
|
|
476
674
|
"inclinationCycleAnchor": 218.64,
|
|
477
675
|
"antiPhase": false,
|
|
478
|
-
"ascendingNodeCyclesIn8H": 1
|
|
479
|
-
"obliquityCycleFraction": null,
|
|
480
|
-
"axialPrecessionFraction": [
|
|
481
|
-
8,
|
|
482
|
-
91
|
|
483
|
-
],
|
|
484
|
-
"eccentricityCycleFraction": [
|
|
485
|
-
8,
|
|
486
|
-
19
|
|
487
|
-
]
|
|
676
|
+
"ascendingNodeCyclesIn8H": 1
|
|
488
677
|
},
|
|
489
678
|
"mars": {
|
|
490
679
|
"name": "Mars",
|
|
@@ -501,19 +690,7 @@ export const DEFAULT_CONSTANTS = Object.freeze({
|
|
|
501
690
|
"ascendingNodeInvPlane": 354.87,
|
|
502
691
|
"inclinationCycleAnchor": 236.07,
|
|
503
692
|
"antiPhase": false,
|
|
504
|
-
"ascendingNodeCyclesIn8H": 64
|
|
505
|
-
"obliquityCycleFraction": [
|
|
506
|
-
8,
|
|
507
|
-
21
|
|
508
|
-
],
|
|
509
|
-
"axialPrecessionFraction": [
|
|
510
|
-
-1,
|
|
511
|
-
2
|
|
512
|
-
],
|
|
513
|
-
"eccentricityCycleFraction": [
|
|
514
|
-
8,
|
|
515
|
-
52
|
|
516
|
-
]
|
|
693
|
+
"ascendingNodeCyclesIn8H": 64
|
|
517
694
|
},
|
|
518
695
|
"jupiter": {
|
|
519
696
|
"name": "Jupiter",
|
|
@@ -530,19 +707,7 @@ export const DEFAULT_CONSTANTS = Object.freeze({
|
|
|
530
707
|
"ascendingNodeInvPlane": 312.89,
|
|
531
708
|
"inclinationCycleAnchor": 287.06,
|
|
532
709
|
"antiPhase": false,
|
|
533
|
-
"ascendingNodeCyclesIn8H": 36
|
|
534
|
-
"obliquityCycleFraction": [
|
|
535
|
-
1,
|
|
536
|
-
2
|
|
537
|
-
],
|
|
538
|
-
"axialPrecessionFraction": [
|
|
539
|
-
-8,
|
|
540
|
-
21
|
|
541
|
-
],
|
|
542
|
-
"eccentricityCycleFraction": [
|
|
543
|
-
8,
|
|
544
|
-
44
|
|
545
|
-
]
|
|
710
|
+
"ascendingNodeCyclesIn8H": 36
|
|
546
711
|
},
|
|
547
712
|
"saturn": {
|
|
548
713
|
"name": "Saturn",
|
|
@@ -559,19 +724,7 @@ export const DEFAULT_CONSTANTS = Object.freeze({
|
|
|
559
724
|
"ascendingNodeInvPlane": 118.81,
|
|
560
725
|
"inclinationCycleAnchor": 116.26,
|
|
561
726
|
"antiPhase": true,
|
|
562
|
-
"ascendingNodeCyclesIn8H": 36
|
|
563
|
-
"obliquityCycleFraction": [
|
|
564
|
-
1,
|
|
565
|
-
3
|
|
566
|
-
],
|
|
567
|
-
"axialPrecessionFraction": [
|
|
568
|
-
-4,
|
|
569
|
-
3
|
|
570
|
-
],
|
|
571
|
-
"eccentricityCycleFraction": [
|
|
572
|
-
8,
|
|
573
|
-
163
|
|
574
|
-
]
|
|
727
|
+
"ascendingNodeCyclesIn8H": 36
|
|
575
728
|
},
|
|
576
729
|
"uranus": {
|
|
577
730
|
"name": "Uranus",
|
|
@@ -588,20 +741,7 @@ export const DEFAULT_CONSTANTS = Object.freeze({
|
|
|
588
741
|
"ascendingNodeInvPlane": 307.8,
|
|
589
742
|
"inclinationCycleAnchor": 21.33,
|
|
590
743
|
"antiPhase": false,
|
|
591
|
-
"ascendingNodeCyclesIn8H": 11
|
|
592
|
-
"obliquityCycleFraction": [
|
|
593
|
-
1,
|
|
594
|
-
2
|
|
595
|
-
],
|
|
596
|
-
"axialPrecessionFraction": [
|
|
597
|
-
610,
|
|
598
|
-
1
|
|
599
|
-
],
|
|
600
|
-
"eccentricityCycleFraction": [
|
|
601
|
-
1,
|
|
602
|
-
10
|
|
603
|
-
],
|
|
604
|
-
"eccentricityCycleApprox": true
|
|
744
|
+
"ascendingNodeCyclesIn8H": 11
|
|
605
745
|
},
|
|
606
746
|
"neptune": {
|
|
607
747
|
"name": "Neptune",
|
|
@@ -618,17 +758,7 @@ export const DEFAULT_CONSTANTS = Object.freeze({
|
|
|
618
758
|
"ascendingNodeInvPlane": 192.04,
|
|
619
759
|
"inclinationCycleAnchor": 174.04,
|
|
620
760
|
"antiPhase": false,
|
|
621
|
-
"ascendingNodeCyclesIn8H": 3
|
|
622
|
-
"obliquityCycleFraction": null,
|
|
623
|
-
"axialPrecessionFraction": [
|
|
624
|
-
-68,
|
|
625
|
-
1
|
|
626
|
-
],
|
|
627
|
-
"eccentricityCycleFraction": [
|
|
628
|
-
2,
|
|
629
|
-
25
|
|
630
|
-
],
|
|
631
|
-
"eccentricityCycleApprox": true
|
|
761
|
+
"ascendingNodeCyclesIn8H": 3
|
|
632
762
|
}
|
|
633
763
|
},
|
|
634
764
|
timeReference: {
|
package/src/deltat/deep-time.cjs
CHANGED
|
@@ -125,7 +125,15 @@ function createDeepTimeLod(deps) {
|
|
|
125
125
|
* the unit H(t) below.
|
|
126
126
|
* @param {number} t_Ma @returns {number|null} */
|
|
127
127
|
function eraClockHAtAge(t_Ma) {
|
|
128
|
-
|
|
128
|
+
return eraClockHFromLod(lodSecondsAtAge(t_Ma));
|
|
129
|
+
}
|
|
130
|
+
// The `…FromLod` twins take an ALREADY-COMPUTED LOD(t): the Simpson ΔT
|
|
131
|
+
// integrand below evaluated the LOD four times and the tropical year twice
|
|
132
|
+
// per node through these helpers (measured 8.8 → 4.8 ms per cardinal panel
|
|
133
|
+
// year with the model's ΔT memo). Same operations, same inputs — every
|
|
134
|
+
// value bit-identical (11,958-value sweep, 0 differences).
|
|
135
|
+
/** @param {number|null} LOD_s @returns {number|null} */
|
|
136
|
+
function eraClockHFromLod(LOD_s) {
|
|
129
137
|
if (LOD_s === null) return null;
|
|
130
138
|
return K.holisticYearJ2000 * LOD_s / K.lodNowH13Seconds;
|
|
131
139
|
}
|
|
@@ -156,7 +164,11 @@ function createDeepTimeLod(deps) {
|
|
|
156
164
|
* ≡ H_era wherever (a₀/a_M)³ ≈ 1. Identifier kept (plan 06 P4).
|
|
157
165
|
* @param {number} t_Ma @returns {number|null} */
|
|
158
166
|
function hAtAge(t_Ma) {
|
|
159
|
-
|
|
167
|
+
return hFromLod(t_Ma, lodSecondsAtAge(t_Ma));
|
|
168
|
+
}
|
|
169
|
+
/** @param {number} t_Ma @param {number|null} LOD_s @returns {number|null} */
|
|
170
|
+
function hFromLod(t_Ma, LOD_s) {
|
|
171
|
+
const hEra = eraClockHFromLod(LOD_s);
|
|
160
172
|
const term = composed.torqueTermAtAge(t_Ma);
|
|
161
173
|
return hEra === null || term === null ? null : hEra / term;
|
|
162
174
|
}
|
|
@@ -202,8 +214,12 @@ function createDeepTimeLod(deps) {
|
|
|
202
214
|
* ±2 Myr, measured), and re-basing would move every comb coefficient
|
|
203
215
|
* for a rounding-level gain. This tier stays a named device. */
|
|
204
216
|
function tropicalYearSecondsAtAge(t_Ma) {
|
|
217
|
+
return tropicalYearSecondsFromLod(t_Ma, lodSecondsAtAge(t_Ma));
|
|
218
|
+
}
|
|
219
|
+
/** @param {number} t_Ma @param {number|null} LOD_s @returns {number} */
|
|
220
|
+
function tropicalYearSecondsFromLod(t_Ma, LOD_s) {
|
|
205
221
|
const sidSec = siderealYearSecondsAtAge(t_Ma);
|
|
206
|
-
const Ht =
|
|
222
|
+
const Ht = hFromLod(t_Ma, LOD_s);
|
|
207
223
|
if (Ht === null) return sidSec * (1 - 13 / K.holisticYearJ2000);
|
|
208
224
|
return sidSec * (1 - 13 / Ht);
|
|
209
225
|
}
|
|
@@ -281,15 +297,16 @@ function createDeepTimeLod(deps) {
|
|
|
281
297
|
const tau = i * h;
|
|
282
298
|
const lodMean = lodSecondsAtAge(tau);
|
|
283
299
|
if (lodMean === null) return NaN;
|
|
284
|
-
const yearS =
|
|
300
|
+
const yearS = tropicalYearSecondsFromLod(tau, lodMean);
|
|
285
301
|
// Ecliptic "missing motion" — the solar day is measured against the
|
|
286
302
|
// Sun on the ECLIPTIC, whose plane turns on the invariable plane at the
|
|
287
303
|
// nodal rate s₃ (period ≈ 68,751 yr, an orbital quantity), not in the
|
|
288
304
|
// inclination frame. Adds ~3.4 ms at J2000; the fitted cycle stack
|
|
289
305
|
// closes Layer-4 LOD_real onto the USNO anchor. Non-null: the helper
|
|
290
306
|
// can only be null when lodSecondsAtAge(tau) is null, which already
|
|
291
|
-
// returned NaN above
|
|
292
|
-
|
|
307
|
+
// returned NaN above. Spelled inline from the node's own lodMean and
|
|
308
|
+
// yearS — the same operations as eclipticLodCorrectionSecondsAtAge(tau).
|
|
309
|
+
const lodH5Raw = lodMean + lodMean / (deps.nodalPeriodYearsFn() * (yearS / 86400));
|
|
293
310
|
const integrand = (86400 - lodH5Raw) * yearS * 1e6 / 86400;
|
|
294
311
|
const w = (i === 0 || i === n) ? 1 : (i % 2 === 1 ? 4 : 2);
|
|
295
312
|
sum += w * integrand;
|
package/src/index.js
CHANGED
|
@@ -127,9 +127,13 @@ export { integrateAscendingNode } from './planets/asc-node-integrator.cjs';
|
|
|
127
127
|
export * as planetOrbitChain from './planets/orbit-chain.cjs';
|
|
128
128
|
// P5/K4.6c — the engine-D Keplerian chain (pure evaluator + the embedded
|
|
129
129
|
// governed artifact; the browser flag path consumes exactly these).
|
|
130
|
+
export { computeSecularShape } from './planets/secular-shape.cjs';
|
|
130
131
|
export { buildPlanetChainsFromArtifactData, computePlanetElementsAtYear, computeHeliocentricEclipticFromElements, computePoissonArgRad, computeOsculatingElements, solveKeplerRad, computeApsidalSecularDegPerYr, ANCHOR_EPOCH_YEAR, ANCHOR_EPOCH_JD } from './planets/keplerian-chain.cjs';
|
|
131
132
|
export { computeEquatorNodeOriginSFrameDeg, convertNodeSFrameToEquatorOriginDeg } from './planets/inv-plane-frame.cjs';
|
|
132
133
|
export { createSecularSeriesOverride } from './planets/secular-series.cjs';
|
|
134
|
+
// Plan 06 Phase 7 — the planets' spin channel (the precession constant from
|
|
135
|
+
// each planet's own torques, the spin integrated on its own ζ plane history).
|
|
136
|
+
export { computePlanetPrecessionConstant, createPlanetSpinChannel, createPlanetSpinChannelFromArtifacts, computeObliquityJ2000Deg } from './planets/spin-channel.cjs';
|
|
133
137
|
export { CHAIN_ARTIFACT, CHAIN_ARTIFACT_HASH } from './planets/chain-artifact.js';
|
|
134
138
|
// Engine-switch Stage B, T5d-(d): the deep-time Earth-z channel (the deep
|
|
135
139
|
// lunar-chain modulation rides it; era consumers stay on the H/3 channel).
|