@essrt/physics 1.16.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@essrt/physics",
3
- "version": "1.16.0",
3
+ "version": "2.0.0",
4
4
  "description": "ESSRT (Expanding Solar System Resonance Theory) physics core \u2014 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
- "modelVersion": "v11.0",
6
+ "modelVersion": "v12.0",
7
7
  "_note": "The model identity this package version ships (IP-unified-architecture \u00a710: package semver tracks the API axis; the model version + CONSTANTS_HASH/COEFFICIENTS_HASH in src/constants/ carry the scientific identity). The version-pinning gate enforces this pairing against public/input/model-version.json."
8
8
  },
9
9
  "type": "module",
@@ -60,8 +60,6 @@ const DRIFT_SIMPSON_N_MIN = 64;
60
60
  * balancedYear: number,
61
61
  * meanSolarYearDays: number,
62
62
  * hJ2000: number,
63
- * eccentricityBase: number,
64
- * eccentricityAmplitude: number,
65
63
  * tiltMeanDeg: number,
66
64
  * raAngleDeg: number,
67
65
  * inclAmplitudeDeg: number,
@@ -72,6 +70,7 @@ const DRIFT_SIMPSON_N_MIN = 64;
72
70
  * meanHAtAgeMa: (tMa: number) => (number | null),
73
71
  * meanYearRealLodDays: (tMa: number) => (number | null),
74
72
  * eccentricityAt: (year: number) => number,
73
+ * eccentricityRateAt: (year: number) => number,
75
74
  * },
76
75
  * }} deps
77
76
  */
@@ -86,8 +85,6 @@ function createCardinalModel({ isDeepTime, constants, fns }) {
86
85
  balancedYear,
87
86
  meanSolarYearDays,
88
87
  hJ2000,
89
- eccentricityBase,
90
- eccentricityAmplitude,
91
88
  tiltMeanDeg, // for RA
92
89
  raAngleDeg,
93
90
  inclAmplitudeDeg,
@@ -97,7 +94,8 @@ function createCardinalModel({ isDeepTime, constants, fns }) {
97
94
  analyticTropicalDays, // (year) => SI days | null — the drift integrand base
98
95
  meanHAtAgeMa, // (t_Ma) => H | null — the derivative's dc/dY
99
96
  meanYearRealLodDays, // (t_Ma) => days | null — real-LOD drift convention
100
- eccentricityAt, // (year) => e(t), law of cosines on the H/16 phase
97
+ eccentricityAt, // (year) => e(t) the model's ONE eccentricity law (H/3 vector sum, plan IP-eccentricity-unification)
98
+ eccentricityRateAt, // (year) => de/dyear of the same law — the braid's EoC derivative rides it
101
99
  } = fns;
102
100
 
103
101
  /** @param {number} year */
@@ -272,7 +270,10 @@ function createCardinalModel({ isDeepTime, constants, fns }) {
272
270
  const th16 = 2 * Math.PI * 16 * cY;
273
271
  const thp = 2 * Math.PI * 16 * dcdY;
274
272
  const e = eccentricityAt(year);
275
- const de = eccentricityBase * eccentricityAmplitude * Math.sin(th16) * thp / e;
273
+ // de/dyear from the one law (formerly the H/16 law-of-cosines derivative).
274
+ // The braid's own phase θ16 stays: it is the perihelion-OF-DATE phase the
275
+ // equation of centre is seen through — an H/16 quantity by nature.
276
+ const de = eccentricityRateAt(year);
276
277
  for (const t of ecc) {
277
278
  const n = t.order, nth = n * th16;
278
279
  const eN = Math.pow(e, n), eN1 = Math.pow(e, n - 1);