universal-physics-tensor 0.4.5 → 0.5.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.
Files changed (78) hide show
  1. package/dist/dimensional/bridge-check.d.ts +6 -0
  2. package/dist/dimensional/bridge-check.d.ts.map +1 -1
  3. package/dist/dimensional/bridge-check.js +6 -0
  4. package/dist/dimensional/bridge-check.js.map +1 -1
  5. package/dist/dimensional/connection-validators.d.ts +61 -3
  6. package/dist/dimensional/connection-validators.d.ts.map +1 -1
  7. package/dist/dimensional/connection-validators.js +82 -9
  8. package/dist/dimensional/connection-validators.js.map +1 -1
  9. package/dist/dimensional/curvature.d.ts +336 -0
  10. package/dist/dimensional/curvature.d.ts.map +1 -0
  11. package/dist/dimensional/curvature.js +291 -0
  12. package/dist/dimensional/curvature.js.map +1 -0
  13. package/dist/dimensional/metric-validators.d.ts +12 -0
  14. package/dist/dimensional/metric-validators.d.ts.map +1 -1
  15. package/dist/dimensional/metric-validators.js.map +1 -1
  16. package/dist/dimensional/tensor.d.ts.map +1 -1
  17. package/dist/dimensional/tensor.js +7 -2
  18. package/dist/dimensional/tensor.js.map +1 -1
  19. package/dist/dimensional/validator.d.ts +5 -3
  20. package/dist/dimensional/validator.d.ts.map +1 -1
  21. package/dist/dimensional/validator.js +59 -2
  22. package/dist/dimensional/validator.js.map +1 -1
  23. package/dist/index.d.ts +8 -2
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +21 -2
  26. package/dist/index.js.map +1 -1
  27. package/dist/numerical/be37-covariant-eikonal.d.ts +96 -38
  28. package/dist/numerical/be37-covariant-eikonal.d.ts.map +1 -1
  29. package/dist/numerical/be37-covariant-eikonal.js +202 -39
  30. package/dist/numerical/be37-covariant-eikonal.js.map +1 -1
  31. package/dist/numerical/connection-lowering-helpers.d.ts +8 -6
  32. package/dist/numerical/connection-lowering-helpers.d.ts.map +1 -1
  33. package/dist/numerical/connection-lowering-helpers.js +25 -28
  34. package/dist/numerical/connection-lowering-helpers.js.map +1 -1
  35. package/dist/numerical/curvature-lowering-helpers.d.ts +162 -0
  36. package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -0
  37. package/dist/numerical/curvature-lowering-helpers.js +378 -0
  38. package/dist/numerical/curvature-lowering-helpers.js.map +1 -0
  39. package/dist/numerical/errors.d.ts +16 -0
  40. package/dist/numerical/errors.d.ts.map +1 -1
  41. package/dist/numerical/errors.js +20 -0
  42. package/dist/numerical/errors.js.map +1 -1
  43. package/dist/numerical/float64-engine.d.ts +4 -2
  44. package/dist/numerical/float64-engine.d.ts.map +1 -1
  45. package/dist/numerical/float64-engine.js +35 -45
  46. package/dist/numerical/float64-engine.js.map +1 -1
  47. package/dist/numerical/gl4-integrator.d.ts +167 -0
  48. package/dist/numerical/gl4-integrator.d.ts.map +1 -0
  49. package/dist/numerical/gl4-integrator.js +276 -0
  50. package/dist/numerical/gl4-integrator.js.map +1 -0
  51. package/dist/numerical/index.d.ts +8 -0
  52. package/dist/numerical/index.d.ts.map +1 -1
  53. package/dist/numerical/index.js +4 -0
  54. package/dist/numerical/index.js.map +1 -1
  55. package/dist/numerical/lowering.d.ts +3 -4
  56. package/dist/numerical/lowering.d.ts.map +1 -1
  57. package/dist/numerical/lowering.js +216 -22
  58. package/dist/numerical/lowering.js.map +1 -1
  59. package/dist/numerical/mathts-engine.d.ts +2 -2
  60. package/dist/numerical/mathts-engine.d.ts.map +1 -1
  61. package/dist/numerical/mathts-engine.js +13 -12
  62. package/dist/numerical/mathts-engine.js.map +1 -1
  63. package/dist/numerical/pderiv.d.ts.map +1 -1
  64. package/dist/numerical/pderiv.js +4 -18
  65. package/dist/numerical/pderiv.js.map +1 -1
  66. package/dist/numerical/perihelion-finder.d.ts +84 -0
  67. package/dist/numerical/perihelion-finder.d.ts.map +1 -0
  68. package/dist/numerical/perihelion-finder.js +261 -0
  69. package/dist/numerical/perihelion-finder.js.map +1 -0
  70. package/dist/numerical/strides.d.ts +26 -0
  71. package/dist/numerical/strides.d.ts.map +1 -0
  72. package/dist/numerical/strides.js +41 -0
  73. package/dist/numerical/strides.js.map +1 -0
  74. package/dist/numerical/tensor-engine.d.ts +4 -2
  75. package/dist/numerical/tensor-engine.d.ts.map +1 -1
  76. package/dist/numerical/tensor-engine.js +4 -2
  77. package/dist/numerical/tensor-engine.js.map +1 -1
  78. package/package.json +1 -1
@@ -12,16 +12,16 @@
12
12
  * @module numerical/connection-lowering-helpers
13
13
  */
14
14
  import { NumericalBackendError } from './errors.js';
15
+ import { rowMajorStrides as buildStrides, flatIndex, sameShape } from './strides.js';
15
16
  // ---------------------------------------------------------------------------
16
17
  // Flat-array utilities
17
18
  // ---------------------------------------------------------------------------
18
19
  /**
19
20
  * Flatten a NestedArray to a plain number[] in row-major order.
20
- * Canonical implementation. `flattenNestedArray` in lowering.ts is NOT a
21
- * duplicate it delegates here and adds an expectedSize invariant check
22
- * (throws NumericalBackendError if the flattened count mismatches). This
23
- * function deliberately omits that check for callers that do not know the
24
- * expected count ahead of time.
21
+ * Canonical implementation for this module. `flattenNestedArray` in
22
+ * lowering.ts wraps this and adds an expectedSize invariant check.
23
+ * `pderiv.ts` previously had its own identical `flattenToNumbers`
24
+ * consolidated to this function in v0.4.6 (see Task 9 of the v0.4.6 plan).
25
25
  */
26
26
  export function flattenNA(data) {
27
27
  if (typeof data === 'number')
@@ -113,9 +113,6 @@ export function tensorAddScaled(a, b, sign, engine) {
113
113
  return engine.add(a, b);
114
114
  return engine.sub(a, b);
115
115
  }
116
- function sameShape(a, b) {
117
- return a.length === b.length && a.every((v, i) => v === b[i]);
118
- }
119
116
  // ---------------------------------------------------------------------------
120
117
  // Christoffel numerical computation
121
118
  // ---------------------------------------------------------------------------
@@ -135,15 +132,23 @@ export function computeChristoffelTensor(gInverseFlat, getMetricDeriv, N, engine
135
132
  // Output: Gamma[alpha][mu][nu] stored in row-major order
136
133
  const size = N * N * N;
137
134
  const Gamma = new Array(size).fill(0);
135
+ // Precompute all N metric derivative arrays before the triple loop.
136
+ // For strategy='supplied', getMetricDeriv calls flattenNA on the stored NestedArray
137
+ // each invocation. Precomputing reduces calls from O(N^2 + N^2 + N^3) to N.
138
+ // Per Step 1 verification: getMetricDeriv (backed by getMetricDerivFlat) returns
139
+ // FRESH arrays on every call — 'zero' branch uses new Array().fill(0) and 'supplied'
140
+ // branch calls flattenNA() which allocates a new number[] each time. No cached
141
+ // references exist, so shallow-cloning is NOT required.
142
+ const dMetric = Array.from({ length: N }, (_, mu) => getMetricDeriv(mu));
138
143
  for (let alpha = 0; alpha < N; alpha++) {
139
144
  for (let mu = 0; mu < N; mu++) {
140
145
  for (let nu = 0; nu < N; nu++) {
141
146
  let sum = 0;
142
- const dmu = getMetricDeriv(mu); // ∂_μ g_{ρν} — shape [N,N], ρ outer
143
- const dnu = getMetricDeriv(nu); // ∂_ν g_{ρμ}
147
+ const dmu = dMetric[mu]; // ∂_μ g_{ρν} — shape [N,N], ρ outer
148
+ const dnu = dMetric[nu]; // ∂_ν g_{ρμ}
144
149
  for (let rho = 0; rho < N; rho++) {
145
150
  const gInvAlphaRho = gInverseFlat[alpha * N + rho]; // g^{α ρ}
146
- const drho = getMetricDeriv(rho); // ∂_ρ g_{μν}
151
+ const drho = dMetric[rho]; // ∂_ρ g_{μν}
147
152
  // ∂_μ g_{ρν} → index [ρ,ν] in flat ∂_μ g
148
153
  const term1 = dmu[rho * N + nu];
149
154
  // ∂_ν g_{ρμ} → index [ρ,μ] in flat ∂_ν g
@@ -251,21 +256,10 @@ export function contractChristoffelWithOperand(GammaFlat, ofFlat, ofShape, freeI
251
256
  // ---------------------------------------------------------------------------
252
257
  // Internal utilities
253
258
  // ---------------------------------------------------------------------------
254
- function buildStrides(shape) {
255
- const strides = new Array(shape.length);
256
- let s = 1;
257
- for (let k = shape.length - 1; k >= 0; k--) {
258
- strides[k] = s;
259
- s *= shape[k];
260
- }
261
- return strides;
262
- }
263
- function flatIndex(idx, strides) {
264
- let f = 0;
265
- for (let k = 0; k < idx.length; k++)
266
- f += idx[k] * strides[k];
267
- return f;
268
- }
259
+ // INVARIANT: The visitor MUST NOT mutate the `idx` array. If mutation is needed,
260
+ // the visitor must call `idx.slice()` first.
261
+ // Current callers (confirmed by Step 1 audit): contractChristoffelWithOperand
262
+ // uses outIdx.slice(0, rank) to take its own copy safe.
269
263
  function forEachMultiIndex(shape, visit) {
270
264
  if (shape.length === 0) {
271
265
  visit([]);
@@ -274,7 +268,7 @@ function forEachMultiIndex(shape, visit) {
274
268
  const idx = new Array(shape.length).fill(0);
275
269
  const total = shape.reduce((a, b) => a * b, 1);
276
270
  for (let n = 0; n < total; n++) {
277
- visit([...idx]);
271
+ visit(idx); // Visitor must not mutate idx — use .slice() if a copy is needed.
278
272
  for (let k = shape.length - 1; k >= 0; k--) {
279
273
  if (++idx[k] < shape[k])
280
274
  break;
@@ -287,7 +281,10 @@ function forEachMultiIndex(shape, visit) {
287
281
  // ---------------------------------------------------------------------------
288
282
  /**
289
283
  * Look up ∂_{mu} g from inputs.metricDerivatives.
290
- * Key format: `${metricName}_${mu}` (e.g. 'g/μ_0' for ∂_0 g).
284
+ * Key format: `${metricName}/${coordLabel}_${mu}` (e.g. 'g/x_0' where
285
+ * 'x' is the coordLabel string and '0' is the mu index). The coordLabel
286
+ * is whatever string the caller passes — typically a coordinate label
287
+ * like 'x', 't', 'r'; the literal Greek letter μ is NOT used as a key.
291
288
  * Returns a flat [N*N] array.
292
289
  *
293
290
  * Strategy 'zero': returns [N*N] zeros.
@@ -1 +1 @@
1
- {"version":3,"file":"connection-lowering-helpers.js","sourceRoot":"","sources":["../../src/numerical/connection-lowering-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection-lowering-helpers.js","sourceRoot":"","sources":["../../src/numerical/connection-lowering-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Numerical helpers for Riemann-curvature lowering (Task 6 [U] / v0.5.0 1c-ii).
3
+ *
4
+ * Mirrors `connection-lowering-helpers.ts`: produces Γ and ∂Γ tensors from
5
+ * coordinate-dependent metric closures, then assembles the Riemann tensor via
6
+ * the corrected (Carroll-Ch.3 §3.4 / Adam+Eve F4-S3) formula:
7
+ *
8
+ * R^ρ_{σμν} = ∂_μ Γ^ρ_{σν} − ∂_ν Γ^ρ_{σμ} + Σ_λ (Γ^ρ_{λμ} Γ^λ_{σν} − Γ^ρ_{λν} Γ^λ_{σμ})
9
+ *
10
+ * Index conventions (pinned via JSDoc + a runtime assert):
11
+ * - Γ[ρ][σ][ν] = Γ^ρ_{σν} (matches computeChristoffelTensor's [α][μ][ν] with
12
+ * σ ↔ μ — i.e., the SECOND axis is σ, the THIRD is ν, per Carroll Ch.5).
13
+ * - dGamma[λ][ρ][σ][ν] = ∂_λ Γ^ρ_{σν} (I3)
14
+ * - R[ρ][σ][μ][ν] = R^ρ_{σμν} (Carroll)
15
+ *
16
+ * NOTE on the σ/μ swap vs `computeChristoffelTensor`:
17
+ * `computeChristoffelTensor` was authored for v0.4.0 covariant-derivative
18
+ * lowering, which sums Γ^α_{μλ} T^λ over the middle index `μ` (the wrt index
19
+ * of the cov-deriv). v0.5.0 Riemann needs σ in the SECOND-lower slot of every
20
+ * Γ. Because Γ is symmetric in its two lower indices (Christoffel symmetry),
21
+ * the two storage conventions are numerically identical — we use the
22
+ * existing [α][middle][last] storage and access it with σ in the middle slot.
23
+ *
24
+ * The fast path uses the v0.4.0 `computeChristoffelTensor` infrastructure
25
+ * (no new tensor-engine code) and the v0.4.0 `pderivNumericalFn` pattern
26
+ * (centered finite differences). M11: ∂Γ is computed by repeated centered
27
+ * finite-differences on `christoffel()`, not a new AST node type or AD pass.
28
+ *
29
+ * @module numerical/curvature-lowering-helpers
30
+ */
31
+ import type { TensorEngine } from './tensor-engine.js';
32
+ import type { NestedArray } from './types.js';
33
+ /** Flat row-major N×N matrix (one g or g^{-1} sample). */
34
+ export type FlatMatrix = ReadonlyArray<number>;
35
+ /** A coordinate-dependent rank-2 closure: f(x) → N×N as a NestedArray
36
+ * (number[][] or any nested form that `flattenNA` can flatten). */
37
+ export type MetricFn = (x: ReadonlyArray<number>) => NestedArray;
38
+ /**
39
+ * dGamma[λ][ρ][σ][ν] = ∂_λ Γ^ρ_{σν} at the given coordinates (I3).
40
+ *
41
+ * 4-deep nested number array — readonly to mark this as an output container
42
+ * the helper produces but does not mutate after construction.
43
+ */
44
+ export type DGammaTensor = readonly (readonly (readonly (readonly number[])[])[])[];
45
+ /** Gamma[ρ][σ][ν] = Γ^ρ_{σν} — same index order as `computeChristoffelTensor`
46
+ * output (just renamed for the Riemann use). */
47
+ export type GammaTensor = readonly (readonly (readonly number[])[])[];
48
+ /**
49
+ * Step size for finite differences on the Christoffel function.
50
+ *
51
+ * Inner step (∂g for one Γ evaluation) uses the v0.4.0 default
52
+ * `1e-6·max(|x|,1)` via `pderivNumericalFn`-style centered FD. This gives ∂g
53
+ * with relative precision ≈ 1e-11 on Schwarzschild components (verified by
54
+ * inspection at r=3·r_s).
55
+ *
56
+ * Outer step (∂Γ for one R evaluation) is `1e-4·max(|x|,1)` and we use a
57
+ * **4th-order centered stencil**:
58
+ *
59
+ * f'(x) ≈ [−f(x+2h) + 8 f(x+h) − 8 f(x-h) + f(x-2h)] / (12 h)
60
+ *
61
+ * Truncation O(h⁴) instead of O(h²). At h=0.886 m (r=3·r_s, M=M_sun),
62
+ * truncation ≈ h⁴·Γ⁽⁵⁾/Γ ~ 1e-13 relative, round-off ε·|Γ|/h ~ 1e-15 relative.
63
+ * Both sit well below the 1e-9 gate.
64
+ *
65
+ * The 2nd-order outer FD that v0.4.0 covariant-derivative lowering uses
66
+ * leaves ~3e-6 relative error on R^t_{rtr} due to noise propagation through
67
+ * the c²-scaled g_{tt} component — 4th-order outer FD recovers the precision.
68
+ */
69
+ export declare function outerStep(x: number): number;
70
+ /**
71
+ * Compute Γ^ρ_{σν} at coordinate x. Internally builds a centered-FD ∂g sampler
72
+ * around x and delegates to `computeChristoffelTensor` (the v0.4.0 helper).
73
+ *
74
+ * Returns a fully-materialised 3-deep nested array Γ[ρ][σ][ν]. (We do NOT keep
75
+ * the EngineTensor wrapper because we immediately rebuild dGamma and R as
76
+ * plain nested arrays — round-tripping through the engine on every FD sample
77
+ * would dominate the cost.)
78
+ */
79
+ export declare function christoffelAt(x: ReadonlyArray<number>, gFn: MetricFn, gInverseFn: MetricFn, N: number, engine: TensorEngine): number[][][];
80
+ /**
81
+ * dGamma[λ][ρ][σ][ν] = ∂_λ Γ^ρ_{σν} via centered FD on `christoffelAt`. (I3)
82
+ *
83
+ * Includes a runtime index-assert verifying `dGamma[1][1][1][1]` is finite
84
+ * before returning (catches silent shape-permutation bugs introduced by future
85
+ * edits to `computeChristoffelTensor`'s output ordering).
86
+ */
87
+ export declare function dGammaAt(x: ReadonlyArray<number>, gFn: MetricFn, gInverseFn: MetricFn, N: number, engine: TensorEngine): DGammaTensor;
88
+ /**
89
+ * Build the full 4×4×4×4 Riemann tensor R^ρ_{σμν} from Γ and ∂Γ per the
90
+ * Carroll formula (Adam+Eve F4-S3):
91
+ *
92
+ * R[ρ][σ][μ][ν] = ∂_μ Γ[ρ][σ][ν] − ∂_ν Γ[ρ][σ][μ]
93
+ * + Σ_λ (Γ[ρ][λ][μ] Γ[λ][σ][ν] − Γ[ρ][λ][ν] Γ[λ][σ][μ])
94
+ *
95
+ * σ in the SECOND lower slot of each Γ (F4/S3 correction).
96
+ */
97
+ export declare function buildRiemann(gamma: GammaTensor, dGamma: DGammaTensor, N: number): number[][][][];
98
+ /**
99
+ * Compute the upper-Riemann tensor R^ρ_{σμν} at coordinate x using the same
100
+ * Γ + ∂Γ pipeline as the riemann-tensor lowering case. Encapsulates the
101
+ * full christoffelAt + dGammaAt + buildRiemann sequence so callers (Task 9
102
+ * Bianchi residual) can sample R at perturbed coordinates without
103
+ * re-implementing the FD machinery.
104
+ */
105
+ export declare function riemannUpperAt(x: ReadonlyArray<number>, gFn: MetricFn, gInverseFn: MetricFn, N: number, engine: TensorEngine): number[][][][];
106
+ /**
107
+ * Lower the upper-ρ index of R^ρ_{σμν} via the covariant metric g_{aρ}:
108
+ *
109
+ * R_{aσμν} = Σ_ρ g_{aρ} R^ρ_{σμν}
110
+ *
111
+ * Output index order: `[a][σ][μ][ν]` — all four lower. (a is the freshly
112
+ * lowered index in the first slot.)
113
+ */
114
+ export declare function lowerFirstIndex(R: number[][][][], gLowerFlat: ReadonlyArray<number>, N: number): number[][][][];
115
+ /**
116
+ * Sample the all-lower Riemann tensor R_{αβγδ}(x) — combines `riemannUpperAt`
117
+ * with `lowerFirstIndex` for the single-coordinate evaluation. Used both as
118
+ * the base sample and (with perturbed x) as the FD inputs for ∂_λ R_{αβγδ}.
119
+ */
120
+ export declare function riemannLowerAt(x: ReadonlyArray<number>, gFn: MetricFn, gInverseFn: MetricFn, N: number, engine: TensorEngine): number[][][][];
121
+ /**
122
+ * Compute ∂_λ R_{αβγδ}(x) via a 4th-order centered stencil on
123
+ * `riemannLowerAt`. Index order: `dR[λ][α][β][γ][δ] = ∂_λ R_{αβγδ}`.
124
+ *
125
+ * Uses the same outer step (`outerStep`) as Task 6's dGammaAt so the
126
+ * FD-noise compounding pattern matches. This is one extra layer of FD on top
127
+ * of the Christoffel-of-Christoffel double-FD already inside `riemannLowerAt`
128
+ * — total: ∂(∂(∂g)) at 4th order in each layer. Empirical noise floor reached
129
+ * by the per-component value is documented in the test report.
130
+ */
131
+ export declare function dRiemannLowerAt(x: ReadonlyArray<number>, gFn: MetricFn, gInverseFn: MetricFn, N: number, engine: TensorEngine): number[][][][][];
132
+ /**
133
+ * Compute ∇_λ R_{μνρσ} via partial + Christoffel-correction terms (Approach 1).
134
+ *
135
+ * ∇_λ R_{μνρσ} = ∂_λ R_{μνρσ}
136
+ * − Γ^α_{λμ} R_{ανρσ}
137
+ * − Γ^α_{λν} R_{μαρσ}
138
+ * − Γ^α_{λρ} R_{μνασ}
139
+ * − Γ^α_{λσ} R_{μνρα}
140
+ *
141
+ * Index order: `covR[λ][μ][ν][ρ][σ] = ∇_λ R_{μνρσ}`.
142
+ *
143
+ * Approach choice (full ∇, not raw ∂): the second Bianchi identity
144
+ * ∇_{[λ} R_{μν]ρσ} = 0 is the canonical statement. Using raw ∂ would give a
145
+ * residual dominated by the (cyclic-non-cancelling) Christoffel-correction
146
+ * terms, masking the identity check with O(1) algebraic clutter. Full ∇
147
+ * makes the test a genuine self-consistency check of the lowered Riemann.
148
+ */
149
+ export declare function covariantDerivRiemannLowerAt(x: ReadonlyArray<number>, gFn: MetricFn, gInverseFn: MetricFn, N: number, engine: TensorEngine): number[][][][][];
150
+ /**
151
+ * Build the second-Bianchi-identity residual (cyclic over first three indices):
152
+ *
153
+ * B_{λμνρσ} = ∇_λ R_{μνρσ} + ∇_μ R_{νλρσ} + ∇_ν R_{λμρσ}
154
+ *
155
+ * Carroll Eq. 3.95: B ≡ 0 in any (torsion-free) Lorentzian manifold. The
156
+ * residual measures the FD-truncation + cancellation noise on the lowered
157
+ * Riemann tensor through one extra ∂ layer.
158
+ *
159
+ * Index order: `B[λ][μ][ν][ρ][σ]` — all five lower.
160
+ */
161
+ export declare function bianchiResidualAt(x: ReadonlyArray<number>, gFn: MetricFn, gInverseFn: MetricFn, N: number, engine: TensorEngine): number[][][][][];
162
+ //# sourceMappingURL=curvature-lowering-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curvature-lowering-helpers.d.ts","sourceRoot":"","sources":["../../src/numerical/curvature-lowering-helpers.ts"],"names":[],"mappings":"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"}