universal-physics-tensor 0.4.6 → 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 (44) hide show
  1. package/dist/dimensional/connection-validators.d.ts +59 -1
  2. package/dist/dimensional/connection-validators.d.ts.map +1 -1
  3. package/dist/dimensional/connection-validators.js +75 -1
  4. package/dist/dimensional/connection-validators.js.map +1 -1
  5. package/dist/dimensional/curvature.d.ts +336 -0
  6. package/dist/dimensional/curvature.d.ts.map +1 -0
  7. package/dist/dimensional/curvature.js +291 -0
  8. package/dist/dimensional/curvature.js.map +1 -0
  9. package/dist/dimensional/validator.d.ts +5 -3
  10. package/dist/dimensional/validator.d.ts.map +1 -1
  11. package/dist/dimensional/validator.js +58 -1
  12. package/dist/dimensional/validator.js.map +1 -1
  13. package/dist/index.d.ts +8 -2
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +19 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/numerical/be37-covariant-eikonal.d.ts +96 -39
  18. package/dist/numerical/be37-covariant-eikonal.d.ts.map +1 -1
  19. package/dist/numerical/be37-covariant-eikonal.js +202 -40
  20. package/dist/numerical/be37-covariant-eikonal.js.map +1 -1
  21. package/dist/numerical/curvature-lowering-helpers.d.ts +162 -0
  22. package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -0
  23. package/dist/numerical/curvature-lowering-helpers.js +378 -0
  24. package/dist/numerical/curvature-lowering-helpers.js.map +1 -0
  25. package/dist/numerical/errors.d.ts +16 -0
  26. package/dist/numerical/errors.d.ts.map +1 -1
  27. package/dist/numerical/errors.js +20 -0
  28. package/dist/numerical/errors.js.map +1 -1
  29. package/dist/numerical/gl4-integrator.d.ts +167 -0
  30. package/dist/numerical/gl4-integrator.d.ts.map +1 -0
  31. package/dist/numerical/gl4-integrator.js +276 -0
  32. package/dist/numerical/gl4-integrator.js.map +1 -0
  33. package/dist/numerical/index.d.ts +8 -0
  34. package/dist/numerical/index.d.ts.map +1 -1
  35. package/dist/numerical/index.js +4 -0
  36. package/dist/numerical/index.js.map +1 -1
  37. package/dist/numerical/lowering.d.ts.map +1 -1
  38. package/dist/numerical/lowering.js +170 -0
  39. package/dist/numerical/lowering.js.map +1 -1
  40. package/dist/numerical/perihelion-finder.d.ts +84 -0
  41. package/dist/numerical/perihelion-finder.d.ts.map +1 -0
  42. package/dist/numerical/perihelion-finder.js +261 -0
  43. package/dist/numerical/perihelion-finder.js.map +1 -0
  44. package/package.json +1 -1
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Gauss-Legendre 4th-order quadrature nodes c₁, c₂ — the two roots of the
3
+ * shifted Legendre polynomial P₂(x) on [0,1].
4
+ *
5
+ * c₁ = ½ − √3/6, c₂ = ½ + √3/6.
6
+ *
7
+ * @public
8
+ */
9
+ export declare const GL4_C: readonly [number, number];
10
+ /**
11
+ * GL4 Butcher matrix a_{ij} — the 2×2 collocation table for the implicit
12
+ * stages:
13
+ *
14
+ * [ 1/4 1/4 − √3/6 ]
15
+ * [ 1/4 + √3/6 1/4 ]
16
+ *
17
+ * (Hairer/Lubich/Wanner §II.1, Table 1.1.)
18
+ *
19
+ * @public
20
+ */
21
+ export declare const GL4_A: readonly [readonly [number, number], readonly [number, number]];
22
+ /**
23
+ * GL4 stage weights — the 2-point Gauss-Legendre quadrature weights on
24
+ * [0,1]: b₁ = b₂ = ½.
25
+ *
26
+ * @public
27
+ */
28
+ export declare const GL4_B: readonly [number, number];
29
+ /**
30
+ * Canonical (x, p) phase-space state for the geodesic flow on T*M.
31
+ *
32
+ * x^μ — coordinate 4-vector
33
+ * p_μ — covariant momentum, p_μ = g_μν dx^ν/dτ
34
+ *
35
+ * Decision #3 (v0.5.0): the canonical state is (x, p), not (x, v). The
36
+ * symplectic 2-form ω = dp_μ ∧ dx^μ is preserved by the GL4 flow only on
37
+ * this representation.
38
+ *
39
+ * @public
40
+ */
41
+ export interface GL4State {
42
+ /** Coordinate 4-vector x^μ. */
43
+ readonly x: readonly number[];
44
+ /** Covariant momentum p_μ = g_μν v^ν. */
45
+ readonly p: readonly number[];
46
+ }
47
+ /**
48
+ * Per-step snapshot recorded by the integrator. `v` (the contravariant
49
+ * 4-velocity v^μ = g^{μν} p_ν) is optional — emitted when the caller asks
50
+ * for it, since it requires an extra metric-inverse contraction.
51
+ *
52
+ * @public
53
+ */
54
+ export interface GL4Snapshot {
55
+ readonly tau: number;
56
+ readonly x: readonly number[];
57
+ readonly p: readonly number[];
58
+ readonly v?: readonly number[];
59
+ }
60
+ /**
61
+ * Options for `integrateGeodesicGL4` (lands in Task 3).
62
+ *
63
+ * @public
64
+ */
65
+ export interface GL4Options {
66
+ /** Number of integration steps (uniform-step baseline; may be subdivided
67
+ * by adaptive step-halving). */
68
+ readonly steps: number;
69
+ /** Final proper time τ_max (initial τ = 0). */
70
+ readonly tauMax: number;
71
+ /** Inverse-metric closure: `gInverseFn(x)[μ][ν] = g^{μν}(x)`. */
72
+ readonly gInverseFn: (x: readonly number[]) => readonly (readonly number[])[];
73
+ /**
74
+ * Partial derivatives of the inverse metric.
75
+ * Index order: `dgInverseFn(x)[lambda][mu][nu] = ∂_lambda g^{mu nu}` at coords x.
76
+ * (I2: axis semantics pinned here to prevent silent transposition bugs.)
77
+ */
78
+ readonly dgInverseFn: (x: readonly number[]) => readonly (readonly (readonly number[])[])[];
79
+ /** Picard fixed-point tolerance (default chosen in Task 2). */
80
+ readonly picardTol?: number;
81
+ /** Picard fixed-point iteration cap (default chosen in Task 2). */
82
+ readonly picardMaxIter?: number;
83
+ /** Adaptive step-halving floor (I4). If step-halving reaches h_min, throws with diagnostic. */
84
+ readonly hMin?: number;
85
+ /** Minimum radial coordinate (or domain analog) — abort integration if
86
+ * the trajectory crosses inside this radius (e.g., the Schwarzschild
87
+ * event horizon at r = r_s). */
88
+ readonly domainMinRadius?: number;
89
+ }
90
+ /**
91
+ * Result of `solveGL4Stage` — the two converged stage values plus the
92
+ * iteration count actually consumed. Consumed by the upcoming
93
+ * `integrateGeodesicGL4` step driver (Task 3).
94
+ *
95
+ * @internal
96
+ */
97
+ export interface StageSolveResult {
98
+ readonly stageX: readonly [readonly number[], readonly number[]];
99
+ readonly stageP: readonly [readonly number[], readonly number[]];
100
+ readonly iterations: number;
101
+ }
102
+ /**
103
+ * Picard fixed-point solver for the GL4 implicit stage system.
104
+ *
105
+ * Per Design §3 Task 1a, the implicit system is:
106
+ * X_i = x_n + h · Σ_j a_{ij} · g^{·ν}(X_j) P_{j,ν}
107
+ * P_{i,μ} = p_n − h · Σ_j a_{ij} · ½ (∂_μ g^νρ)(X_j) P_{j,ν} P_{j,ρ}
108
+ *
109
+ * Data flow (F15 / M1): stage values (X_j, P_j) at iterate k feed forward
110
+ * to update (X_i, P_i) at iterate k+1. This is Picard iteration (NOT
111
+ * Newton) — no Jacobian assembly or LU decomposition. Convergence is
112
+ * linear with contraction rate ≈ h·|∂f/∂x|. For Mercury (h ≈ 150 s),
113
+ * expect 30–40 iterations at tol=1e-12. GL4's symplecticity is guaranteed
114
+ * by the Butcher tableau, not by the inner solver's convergence speed
115
+ * (Sanz-Serna 1988; Hairer/Lubich/Wanner §II.1).
116
+ *
117
+ * The `dgInverseFn` index order is `dg[λ][μ][ν] = ∂_λ g^{μν}` (Task 0 I2
118
+ * pin, also recorded on `GL4Options.dgInverseFn`). When we evaluate
119
+ * `dp_μ = −½ (∂_μ g^{νρ}) P_ν P_ρ` we therefore read
120
+ * `dgInvAtXj[mu][nu][rho]` — `mu` is the differentiation axis (λ in the
121
+ * pinned order) and `(nu, rho)` are the upper metric indices.
122
+ *
123
+ * Throws `GL4ConvergenceError` with message matching
124
+ * `/Picard iteration did not converge/` if `picardMaxIter` is exhausted.
125
+ *
126
+ * @internal
127
+ */
128
+ export declare function solveGL4Stage(state: GL4State, h: number, gInverseFn: (x: readonly number[]) => readonly (readonly number[])[], dgInverseFn: (x: readonly number[]) => readonly (readonly (readonly number[])[])[], opts: {
129
+ picardTol: number;
130
+ picardMaxIter: number;
131
+ }): StageSolveResult;
132
+ /**
133
+ * GL4 symplectic integrator on the canonical (x, p) geodesic Hamiltonian.
134
+ *
135
+ * H(x, p) = ½ g^{μν}(x) p_μ p_ν
136
+ *
137
+ * Drives the implicit Picard stage solver (`solveGL4Stage`) for each step,
138
+ * with **adaptive step-halving on Picard non-convergence** (Adam+Eve I4,
139
+ * replaces the single-retry R8): if Picard fails at step size h, retry at
140
+ * h/2, h/4, … down to `hMin` (default `h · 1e-9`); throw
141
+ * `GL4ConvergenceError` with a diagnostic message only when h_min is also
142
+ * exhausted.
143
+ *
144
+ * Symplecticity (preservation of ω = dp_μ ∧ dx^μ) is a property of the
145
+ * Butcher tableau, not of the inner Picard solver — see Sanz-Serna 1988,
146
+ * Hairer/Lubich/Wanner §II.1. Hamiltonian drift over long integrations is
147
+ * bounded; for non-resonant systems it remains O(h^p) over exponentially
148
+ * long times (`p = 4` for GL4).
149
+ *
150
+ * **Domain guard.** If `domainMinRadius` is provided and `initialState.x[1]`
151
+ * (radial coordinate) is below the bound, throws `NumericalBackendError`
152
+ * synchronously with a `/domain/i`-matching message. The mid-trajectory
153
+ * domain crossing is not checked here — callers needing that supply a
154
+ * `gInverseFn` that throws on out-of-domain input.
155
+ *
156
+ * @param initialState — canonical (x, p) at τ = 0.
157
+ * @param options — see {@link GL4Options} for picardTol, picardMaxIter,
158
+ * hMin (step-halving floor), domainMinRadius.
159
+ * @returns `steps + 1` snapshots: index `0` is the initial state, index `n`
160
+ * is the state after `n` steps (τ = n · h).
161
+ * @throws NumericalBackendError if `initialState.x[1] < domainMinRadius`.
162
+ * @throws GL4ConvergenceError if Picard fails even after step-halving to h_min.
163
+ *
164
+ * @public
165
+ */
166
+ export declare function integrateGeodesicGL4(initialState: GL4State, options: GL4Options): readonly GL4Snapshot[];
167
+ //# sourceMappingURL=gl4-integrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gl4-integrator.d.ts","sourceRoot":"","sources":["../../src/numerical/gl4-integrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,276 @@
1
+ /**
2
+ * Gauss-Legendre 4th-order (GL4) symplectic integrator — types + Butcher
3
+ * tableau scaffold (v0.5.0 Task 1, Phase 1a-i).
4
+ *
5
+ * GL4 is a 2-stage implicit Runge-Kutta method built on the roots of the
6
+ * shifted Legendre polynomial P₂, with order p = 4 and stage order s = 2.
7
+ * It is symplectic for non-separable Hamiltonians — the property that
8
+ * justifies its selection over Ruth-4 for the geodesic Hamiltonian
9
+ *
10
+ * H(x, p) = ½ g^{μν}(x) p_μ p_ν,
11
+ *
12
+ * which is non-separable because g^{μν} depends on x. (v0.5.0 Decision #2,
13
+ * post-adversarial reconciliation; Sanz-Serna 1988; Hairer/Lubich/Wanner
14
+ * "Geometric Numerical Integration" §II.1.)
15
+ *
16
+ * The state is canonical (x, p) (Decision #3) — covariant momentum
17
+ * p_μ = g_μν dx^ν/dτ — not (x, v). This is what makes the flow symplectic
18
+ * on T*M.
19
+ *
20
+ * This module ships **types + Butcher constants only**. The implicit Picard
21
+ * stage solver lands in Task 2; the integrator entry-point
22
+ * `integrateGeodesicGL4` lands in Task 3.
23
+ *
24
+ * @module numerical/gl4-integrator
25
+ */
26
+ import { GL4ConvergenceError, NumericalBackendError } from './errors.js';
27
+ const SQRT3_OVER_6 = Math.sqrt(3) / 6;
28
+ /**
29
+ * Gauss-Legendre 4th-order quadrature nodes c₁, c₂ — the two roots of the
30
+ * shifted Legendre polynomial P₂(x) on [0,1].
31
+ *
32
+ * c₁ = ½ − √3/6, c₂ = ½ + √3/6.
33
+ *
34
+ * @public
35
+ */
36
+ export const GL4_C = [0.5 - SQRT3_OVER_6, 0.5 + SQRT3_OVER_6];
37
+ /**
38
+ * GL4 Butcher matrix a_{ij} — the 2×2 collocation table for the implicit
39
+ * stages:
40
+ *
41
+ * [ 1/4 1/4 − √3/6 ]
42
+ * [ 1/4 + √3/6 1/4 ]
43
+ *
44
+ * (Hairer/Lubich/Wanner §II.1, Table 1.1.)
45
+ *
46
+ * @public
47
+ */
48
+ export const GL4_A = [
49
+ [0.25, 0.25 - SQRT3_OVER_6],
50
+ [0.25 + SQRT3_OVER_6, 0.25],
51
+ ];
52
+ /**
53
+ * GL4 stage weights — the 2-point Gauss-Legendre quadrature weights on
54
+ * [0,1]: b₁ = b₂ = ½.
55
+ *
56
+ * @public
57
+ */
58
+ export const GL4_B = [0.5, 0.5];
59
+ /**
60
+ * Picard fixed-point solver for the GL4 implicit stage system.
61
+ *
62
+ * Per Design §3 Task 1a, the implicit system is:
63
+ * X_i = x_n + h · Σ_j a_{ij} · g^{·ν}(X_j) P_{j,ν}
64
+ * P_{i,μ} = p_n − h · Σ_j a_{ij} · ½ (∂_μ g^νρ)(X_j) P_{j,ν} P_{j,ρ}
65
+ *
66
+ * Data flow (F15 / M1): stage values (X_j, P_j) at iterate k feed forward
67
+ * to update (X_i, P_i) at iterate k+1. This is Picard iteration (NOT
68
+ * Newton) — no Jacobian assembly or LU decomposition. Convergence is
69
+ * linear with contraction rate ≈ h·|∂f/∂x|. For Mercury (h ≈ 150 s),
70
+ * expect 30–40 iterations at tol=1e-12. GL4's symplecticity is guaranteed
71
+ * by the Butcher tableau, not by the inner solver's convergence speed
72
+ * (Sanz-Serna 1988; Hairer/Lubich/Wanner §II.1).
73
+ *
74
+ * The `dgInverseFn` index order is `dg[λ][μ][ν] = ∂_λ g^{μν}` (Task 0 I2
75
+ * pin, also recorded on `GL4Options.dgInverseFn`). When we evaluate
76
+ * `dp_μ = −½ (∂_μ g^{νρ}) P_ν P_ρ` we therefore read
77
+ * `dgInvAtXj[mu][nu][rho]` — `mu` is the differentiation axis (λ in the
78
+ * pinned order) and `(nu, rho)` are the upper metric indices.
79
+ *
80
+ * Throws `GL4ConvergenceError` with message matching
81
+ * `/Picard iteration did not converge/` if `picardMaxIter` is exhausted.
82
+ *
83
+ * @internal
84
+ */
85
+ export function solveGL4Stage(state, h, gInverseFn, dgInverseFn, opts) {
86
+ const dim = state.x.length;
87
+ // Initial guess: stage values = state values (k=0 of fixed-point iteration).
88
+ let X = [state.x.slice(), state.x.slice()];
89
+ let P = [state.p.slice(), state.p.slice()];
90
+ for (let k = 0; k < opts.picardMaxIter; k++) {
91
+ const Xnew = [new Array(dim).fill(0), new Array(dim).fill(0)];
92
+ const Pnew = [new Array(dim).fill(0), new Array(dim).fill(0)];
93
+ for (let i = 0; i < 2; i++) {
94
+ // dx^μ/dτ at stage j = g^{μν}(X_j) P_{j,ν}
95
+ // dp_μ/dτ at stage j = −½ (∂_μ g^νρ)(X_j) P_{j,ν} P_{j,ρ}
96
+ for (let mu = 0; mu < dim; mu++) {
97
+ let xAccum = state.x[mu];
98
+ let pAccum = state.p[mu];
99
+ for (let j = 0; j < 2; j++) {
100
+ const gInvAtXj = gInverseFn(X[j]);
101
+ const dgInvAtXj = dgInverseFn(X[j]);
102
+ // dx^μ contribution: + h · a_{ij} · Σ_ν g^{μν}(X_j) P_{j,ν}
103
+ let dxStage = 0;
104
+ for (let nu = 0; nu < dim; nu++) {
105
+ dxStage += gInvAtXj[mu][nu] * P[j][nu];
106
+ }
107
+ xAccum += h * GL4_A[i][j] * dxStage;
108
+ // dp_μ contribution: − h · a_{ij} · ½ Σ_{νρ} (∂_μ g^{νρ})(X_j) P_{j,ν} P_{j,ρ}
109
+ // I2 pin: dgInvAtXj[mu][nu][rho] = ∂_mu g^{nu rho}.
110
+ let dpStage = 0;
111
+ for (let nu = 0; nu < dim; nu++) {
112
+ for (let rho = 0; rho < dim; rho++) {
113
+ dpStage += dgInvAtXj[mu][nu][rho] * P[j][nu] * P[j][rho];
114
+ }
115
+ }
116
+ pAccum -= h * GL4_A[i][j] * 0.5 * dpStage;
117
+ }
118
+ Xnew[i][mu] = xAccum;
119
+ Pnew[i][mu] = pAccum;
120
+ }
121
+ }
122
+ // Convergence check: max |δX, δP|
123
+ let maxDelta = 0;
124
+ for (let i = 0; i < 2; i++) {
125
+ for (let mu = 0; mu < dim; mu++) {
126
+ maxDelta = Math.max(maxDelta, Math.abs(Xnew[i][mu] - X[i][mu]));
127
+ maxDelta = Math.max(maxDelta, Math.abs(Pnew[i][mu] - P[i][mu]));
128
+ }
129
+ }
130
+ X = Xnew;
131
+ P = Pnew;
132
+ if (maxDelta < opts.picardTol) {
133
+ return {
134
+ stageX: [X[0], X[1]],
135
+ stageP: [P[0], P[1]],
136
+ iterations: k + 1,
137
+ };
138
+ }
139
+ }
140
+ throw new GL4ConvergenceError(`Picard iteration did not converge in ${opts.picardMaxIter} iterations (maxDelta above picardTol=${opts.picardTol})`);
141
+ }
142
+ // ---------------------------------------------------------------------------
143
+ // Integrator entry-point (Task 3, Phase 1a-iii)
144
+ // ---------------------------------------------------------------------------
145
+ /**
146
+ * Step update for x^μ given converged GL4 stage values.
147
+ *
148
+ * x^μ_{n+1} = x^μ_n + h · Σ_i b_i · (g^{μν}(X_i) P_{i,ν})
149
+ *
150
+ * Module-private — only `integrateGeodesicGL4` consumes it.
151
+ *
152
+ * @internal
153
+ */
154
+ function updateFromStages(xPrev, h, stageX, stageP, gInverseFn) {
155
+ const dim = xPrev.length;
156
+ const x = xPrev.slice();
157
+ for (let mu = 0; mu < dim; mu++) {
158
+ let delta = 0;
159
+ for (let i = 0; i < 2; i++) {
160
+ const gInv = gInverseFn(stageX[i]);
161
+ let xDot = 0;
162
+ for (let nu = 0; nu < dim; nu++) {
163
+ xDot += gInv[mu][nu] * stageP[i][nu];
164
+ }
165
+ delta += GL4_B[i] * xDot;
166
+ }
167
+ x[mu] += h * delta;
168
+ }
169
+ return x;
170
+ }
171
+ /**
172
+ * Step update for p_μ given converged GL4 stage values.
173
+ *
174
+ * p_μ_{n+1} = p_μ_n − ½ h · Σ_i b_i · (∂_μ g^{νρ})(X_i) P_{i,ν} P_{i,ρ}
175
+ *
176
+ * I2 pin: `dgInverseFn(x)[mu][nu][rho] = ∂_mu g^{nu rho}` — `mu` is the
177
+ * differentiation axis (`λ` in the pinned order). Consistent with the
178
+ * Picard solver's stage update.
179
+ *
180
+ * Module-private.
181
+ *
182
+ * @internal
183
+ */
184
+ function updateMomentumFromStages(pPrev, h, stageX, stageP, dgInverseFn) {
185
+ const dim = pPrev.length;
186
+ const p = pPrev.slice();
187
+ for (let mu = 0; mu < dim; mu++) {
188
+ let delta = 0;
189
+ for (let i = 0; i < 2; i++) {
190
+ const dg = dgInverseFn(stageX[i]);
191
+ let pDot = 0;
192
+ for (let nu = 0; nu < dim; nu++) {
193
+ for (let rho = 0; rho < dim; rho++) {
194
+ pDot += dg[mu][nu][rho] * stageP[i][nu] * stageP[i][rho];
195
+ }
196
+ }
197
+ delta += GL4_B[i] * (-0.5 * pDot);
198
+ }
199
+ p[mu] += h * delta;
200
+ }
201
+ return p;
202
+ }
203
+ /**
204
+ * GL4 symplectic integrator on the canonical (x, p) geodesic Hamiltonian.
205
+ *
206
+ * H(x, p) = ½ g^{μν}(x) p_μ p_ν
207
+ *
208
+ * Drives the implicit Picard stage solver (`solveGL4Stage`) for each step,
209
+ * with **adaptive step-halving on Picard non-convergence** (Adam+Eve I4,
210
+ * replaces the single-retry R8): if Picard fails at step size h, retry at
211
+ * h/2, h/4, … down to `hMin` (default `h · 1e-9`); throw
212
+ * `GL4ConvergenceError` with a diagnostic message only when h_min is also
213
+ * exhausted.
214
+ *
215
+ * Symplecticity (preservation of ω = dp_μ ∧ dx^μ) is a property of the
216
+ * Butcher tableau, not of the inner Picard solver — see Sanz-Serna 1988,
217
+ * Hairer/Lubich/Wanner §II.1. Hamiltonian drift over long integrations is
218
+ * bounded; for non-resonant systems it remains O(h^p) over exponentially
219
+ * long times (`p = 4` for GL4).
220
+ *
221
+ * **Domain guard.** If `domainMinRadius` is provided and `initialState.x[1]`
222
+ * (radial coordinate) is below the bound, throws `NumericalBackendError`
223
+ * synchronously with a `/domain/i`-matching message. The mid-trajectory
224
+ * domain crossing is not checked here — callers needing that supply a
225
+ * `gInverseFn` that throws on out-of-domain input.
226
+ *
227
+ * @param initialState — canonical (x, p) at τ = 0.
228
+ * @param options — see {@link GL4Options} for picardTol, picardMaxIter,
229
+ * hMin (step-halving floor), domainMinRadius.
230
+ * @returns `steps + 1` snapshots: index `0` is the initial state, index `n`
231
+ * is the state after `n` steps (τ = n · h).
232
+ * @throws NumericalBackendError if `initialState.x[1] < domainMinRadius`.
233
+ * @throws GL4ConvergenceError if Picard fails even after step-halving to h_min.
234
+ *
235
+ * @public
236
+ */
237
+ export function integrateGeodesicGL4(initialState, options) {
238
+ const { steps, tauMax, gInverseFn, dgInverseFn, picardTol = 1e-12, picardMaxIter = 50, hMin, domainMinRadius, } = options;
239
+ if (domainMinRadius !== undefined && initialState.x[1] < domainMinRadius) {
240
+ throw new NumericalBackendError(`GL4 integrator: initial r=${initialState.x[1]} < domainMinRadius=${domainMinRadius} (domain violation)`);
241
+ }
242
+ const h = tauMax / steps;
243
+ const hFloor = hMin ?? h * 1e-9;
244
+ const snapshots = [
245
+ { tau: 0, x: initialState.x.slice(), p: initialState.p.slice() },
246
+ ];
247
+ let x = initialState.x.slice();
248
+ let p = initialState.p.slice();
249
+ for (let n = 0; n < steps; n++) {
250
+ let stages;
251
+ // I4: adaptive step-halving loop (not single-retry) on Picard non-convergence.
252
+ let stepH = h;
253
+ let stepSucceeded = false;
254
+ while (stepH >= hFloor) {
255
+ try {
256
+ stages = solveGL4Stage({ x, p }, stepH, gInverseFn, dgInverseFn, {
257
+ picardTol,
258
+ picardMaxIter,
259
+ });
260
+ stepSucceeded = true;
261
+ break;
262
+ }
263
+ catch {
264
+ stepH /= 2;
265
+ }
266
+ }
267
+ if (!stepSucceeded || stages === undefined) {
268
+ throw new GL4ConvergenceError(`GL4 integrator: Picard iteration did not converge even at h_min=${hFloor} (step ${n}). Diagnose step-size or metric singularity.`);
269
+ }
270
+ x = updateFromStages(x, h, stages.stageX, stages.stageP, gInverseFn);
271
+ p = updateMomentumFromStages(p, h, stages.stageX, stages.stageP, dgInverseFn);
272
+ snapshots.push({ tau: (n + 1) * h, x: x.slice(), p: p.slice() });
273
+ }
274
+ return snapshots;
275
+ }
276
+ //# sourceMappingURL=gl4-integrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gl4-integrator.js","sourceRoot":"","sources":["../../src/numerical/gl4-integrator.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,14 @@ export { evaluateMetricInverse };
32
32
  /** @public */
33
33
  export { evaluateBE37CovariantEikonalNumerical, } from './be37-covariant-eikonal.js';
34
34
  export type { BE37CovariantEikonalInputs, BE37CovariantEikonalResult, } from './be37-covariant-eikonal.js';
35
+ /** @public — v0.5.0 GL4 symplectic integrator. */
36
+ export { integrateGeodesicGL4 } from './gl4-integrator.js';
37
+ /** @public — v0.5.0 GL4 types. */
38
+ export type { GL4State, GL4Snapshot, GL4Options } from './gl4-integrator.js';
39
+ /** @public — v0.5.0 perihelion finder (Task 4, Phase 1b). */
40
+ export { findPerihelion } from './perihelion-finder.js';
41
+ /** @public — v0.5.0 perihelion-finder types. */
42
+ export type { PerihelionResult, FindPerihelionOptions } from './perihelion-finder.js';
35
43
  /**
36
44
  * Plain-JS result of `evaluateNumerical`.
37
45
  * @public
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/numerical/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAEvE,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI/D,OAAO,EAAE,qBAAqB,EAAqB,MAAM,qBAAqB,CAAC;AAE/E,cAAc;AACd,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvH,cAAc;AACd,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,cAAc;AACd,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC/D,qEAAqE;AACrE,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,cAAc;AACd,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,cAAc;AACd,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACxE,cAAc;AACd,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD;;0EAE0E;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,cAAc;AACd,OAAO,EAAE,qBAAqB,EAAE,CAAC;AACjC,cAAc;AACd,OAAO,EACL,qCAAqC,GACtC,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC;AAErC;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5E,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;CAC7C;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5E,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAC5C,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;CAChC;AAiCD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,eAAe,CAAC,CAU1B;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAW7B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/numerical/index.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,10 @@ export { DuplicateCoordinateWarning } from '../dimensional/errors.js';
19
19
  export { evaluateMetricInverse };
20
20
  /** @public */
21
21
  export { evaluateBE37CovariantEikonalNumerical, } from './be37-covariant-eikonal.js';
22
+ /** @public — v0.5.0 GL4 symplectic integrator. */
23
+ export { integrateGeodesicGL4 } from './gl4-integrator.js';
24
+ /** @public — v0.5.0 perihelion finder (Task 4, Phase 1b). */
25
+ export { findPerihelion } from './perihelion-finder.js';
22
26
  /** Validate the AST and return (engine, validation result) or throw. */
23
27
  async function prepare(node, options) {
24
28
  const vr = validate(node);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/numerical/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/numerical/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAGvD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAI/E,cAAc;AACd,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAK/E,cAAc;AACd,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,cAAc;AACd,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACxE,cAAc;AACd,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD;;0EAE0E;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,cAAc;AACd,OAAO,EAAE,qBAAqB,EAAE,CAAC;AACjC,cAAc;AACd,OAAO,EACL,qCAAqC,GACtC,MAAM,6BAA6B,CAAC;AAMrC,kDAAkD;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAI3D,6DAA6D;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAoCxD,wEAAwE;AACxE,KAAK,UAAU,OAAO,CAAC,IAAc,EAAE,OAAyB;IAC9D,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACX,MAAM,IAAI,qBAAqB,CAC7B,0DAA0D;cACxD,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,iBAAiB;cACxC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACnE,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,MAAM,eAAe,EAAE,CAAC;IAC1D,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;IACvE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,iBAA8B,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC;AACnG,CAAC;AAED;;mDAEmD;AACnD,KAAK,UAAU,4BAA4B,CACzC,IAAc,EACd,MAAuB,EACvB,MAAoB;IAEpB,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,qBAAqB,CAC7C,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CACxD,CAAC;IACF,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAc,EACd,MAAuB,EACvB,OAAyB;IAEzB,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,qBAAqB,GAAG,MAAM,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvF,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC9B,GAAG;QACH,WAAW;QACX,QAAQ,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,qBAAqB,CAAC;KAClD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAc,EACd,MAAuB,EACvB,OAAyB;IAEzB,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,qBAAqB,GAAG,MAAM,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvF,OAAO;QACL,KAAK,EAAE,MAAM;QACb,GAAG;QACH,WAAW;QACX,QAAQ,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,qBAAqB,CAAC;QACjD,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAC7C,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"lowering.d.ts","sourceRoot":"","sources":["../../src/numerical/lowering.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,0BAA0B,CAAC;AAW9E,OAAO,KAAK,EACV,YAAY,EAAE,YAAY,EAAE,UAAU,EACvC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,YAAY,CAAC;AAc/D;;4DAE4D;AAC5D,KAAK,gBAAgB,GACjB,OAAO,CAAC,QAAQ,EAAE;IAAE,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;CAAE,CAAC,GAC1D,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,2BAA2B,CAAA;CAAE,CAAC,CAAC;AAqD7D;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC,EACzC,gBAAgB,EAAE,aAAa,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GACjE,UAAU,CA0CZ;AAiBD;gFACgF;AAChF,wBAAgB,SAAS,CACvB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,YAAY,GACnB,YAAY,CA6Zd"}
1
+ {"version":3,"file":"lowering.d.ts","sourceRoot":"","sources":["../../src/numerical/lowering.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,0BAA0B,CAAC;AAY9E,OAAO,KAAK,EACV,YAAY,EAAE,YAAY,EAAE,UAAU,EACvC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,YAAY,CAAC;AAqB/D;;4DAE4D;AAC5D,KAAK,gBAAgB,GACjB,OAAO,CAAC,QAAQ,EAAE;IAAE,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;CAAE,CAAC,GAC1D,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,2BAA2B,CAAA;CAAE,CAAC,CAAC;AAqD7D;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC,EACzC,gBAAgB,EAAE,aAAa,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GACjE,UAAU,CA0CZ;AAiBD;gFACgF;AAChF,wBAAgB,SAAS,CACvB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,YAAY,GACnB,YAAY,CA2lBd"}