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.
- package/dist/dimensional/bridge-check.d.ts +6 -0
- package/dist/dimensional/bridge-check.d.ts.map +1 -1
- package/dist/dimensional/bridge-check.js +6 -0
- package/dist/dimensional/bridge-check.js.map +1 -1
- package/dist/dimensional/connection-validators.d.ts +61 -3
- package/dist/dimensional/connection-validators.d.ts.map +1 -1
- package/dist/dimensional/connection-validators.js +82 -9
- package/dist/dimensional/connection-validators.js.map +1 -1
- package/dist/dimensional/curvature.d.ts +336 -0
- package/dist/dimensional/curvature.d.ts.map +1 -0
- package/dist/dimensional/curvature.js +291 -0
- package/dist/dimensional/curvature.js.map +1 -0
- package/dist/dimensional/metric-validators.d.ts +12 -0
- package/dist/dimensional/metric-validators.d.ts.map +1 -1
- package/dist/dimensional/metric-validators.js.map +1 -1
- package/dist/dimensional/tensor.d.ts.map +1 -1
- package/dist/dimensional/tensor.js +7 -2
- package/dist/dimensional/tensor.js.map +1 -1
- package/dist/dimensional/validator.d.ts +5 -3
- package/dist/dimensional/validator.d.ts.map +1 -1
- package/dist/dimensional/validator.js +59 -2
- package/dist/dimensional/validator.js.map +1 -1
- package/dist/index.d.ts +8 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -2
- package/dist/index.js.map +1 -1
- package/dist/numerical/be37-covariant-eikonal.d.ts +96 -38
- package/dist/numerical/be37-covariant-eikonal.d.ts.map +1 -1
- package/dist/numerical/be37-covariant-eikonal.js +202 -39
- package/dist/numerical/be37-covariant-eikonal.js.map +1 -1
- package/dist/numerical/connection-lowering-helpers.d.ts +8 -6
- package/dist/numerical/connection-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/connection-lowering-helpers.js +25 -28
- package/dist/numerical/connection-lowering-helpers.js.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.d.ts +162 -0
- package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -0
- package/dist/numerical/curvature-lowering-helpers.js +378 -0
- package/dist/numerical/curvature-lowering-helpers.js.map +1 -0
- package/dist/numerical/errors.d.ts +16 -0
- package/dist/numerical/errors.d.ts.map +1 -1
- package/dist/numerical/errors.js +20 -0
- package/dist/numerical/errors.js.map +1 -1
- package/dist/numerical/float64-engine.d.ts +4 -2
- package/dist/numerical/float64-engine.d.ts.map +1 -1
- package/dist/numerical/float64-engine.js +35 -45
- package/dist/numerical/float64-engine.js.map +1 -1
- package/dist/numerical/gl4-integrator.d.ts +167 -0
- package/dist/numerical/gl4-integrator.d.ts.map +1 -0
- package/dist/numerical/gl4-integrator.js +276 -0
- package/dist/numerical/gl4-integrator.js.map +1 -0
- package/dist/numerical/index.d.ts +8 -0
- package/dist/numerical/index.d.ts.map +1 -1
- package/dist/numerical/index.js +4 -0
- package/dist/numerical/index.js.map +1 -1
- package/dist/numerical/lowering.d.ts +3 -4
- package/dist/numerical/lowering.d.ts.map +1 -1
- package/dist/numerical/lowering.js +216 -22
- package/dist/numerical/lowering.js.map +1 -1
- package/dist/numerical/mathts-engine.d.ts +2 -2
- package/dist/numerical/mathts-engine.d.ts.map +1 -1
- package/dist/numerical/mathts-engine.js +13 -12
- package/dist/numerical/mathts-engine.js.map +1 -1
- package/dist/numerical/pderiv.d.ts.map +1 -1
- package/dist/numerical/pderiv.js +4 -18
- package/dist/numerical/pderiv.js.map +1 -1
- package/dist/numerical/perihelion-finder.d.ts +84 -0
- package/dist/numerical/perihelion-finder.d.ts.map +1 -0
- package/dist/numerical/perihelion-finder.js +261 -0
- package/dist/numerical/perihelion-finder.js.map +1 -0
- package/dist/numerical/strides.d.ts +26 -0
- package/dist/numerical/strides.d.ts.map +1 -0
- package/dist/numerical/strides.js +41 -0
- package/dist/numerical/strides.js.map +1 -0
- package/dist/numerical/tensor-engine.d.ts +4 -2
- package/dist/numerical/tensor-engine.d.ts.map +1 -1
- package/dist/numerical/tensor-engine.js +4 -2
- package/dist/numerical/tensor-engine.js.map +1 -1
- package/package.json +1 -1
|
@@ -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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"}
|
package/dist/numerical/index.js
CHANGED
|
@@ -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":"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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/numerical/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,10 +25,9 @@ type ContractableNode = Extract<ExprNode, {
|
|
|
25
25
|
/**
|
|
26
26
|
* Build the EinsumSpec for a flat tensor-product.
|
|
27
27
|
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* implicit-identity-metric rule — already classified every label as
|
|
28
|
+
* NOTE: this function does NOT decide which indices contract. That authority
|
|
29
|
+
* belongs to `computeContraction()` (v0.2.0 symbolic-layer) — variance-aware,
|
|
30
|
+
* implicit-identity-metric rule — which already classified every label as
|
|
32
31
|
* contracted or free. buildEinsumSpec only maps those already-classified
|
|
33
32
|
* labels to their (operand, axis) sites. There is exactly one
|
|
34
33
|
* contraction-decision implementation in the codebase.
|
|
@@ -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;
|
|
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"}
|