universal-physics-tensor 0.7.3 → 0.14.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 (293) hide show
  1. package/README.md +147 -109
  2. package/bin/upt.mjs +508 -0
  3. package/dist/bridges/be23-planckian-confrontation.d.ts +162 -0
  4. package/dist/bridges/be23-planckian-confrontation.d.ts.map +1 -0
  5. package/dist/bridges/be23-planckian-confrontation.js +196 -0
  6. package/dist/bridges/be23-planckian-confrontation.js.map +1 -0
  7. package/dist/bridges/be36-gw170817-confrontation.d.ts +111 -0
  8. package/dist/bridges/be36-gw170817-confrontation.d.ts.map +1 -0
  9. package/dist/bridges/be36-gw170817-confrontation.js +100 -0
  10. package/dist/bridges/be36-gw170817-confrontation.js.map +1 -0
  11. package/dist/bridges/bridge-equations.d.ts +129 -0
  12. package/dist/bridges/bridge-equations.d.ts.map +1 -0
  13. package/dist/bridges/bridge-equations.js +130 -0
  14. package/dist/bridges/bridge-equations.js.map +1 -0
  15. package/dist/bridges/catalog-adapter.d.ts +1 -1
  16. package/dist/bridges/catalog-adapter.js +1 -1
  17. package/dist/bridges/confrontation-coverage.d.ts +67 -0
  18. package/dist/bridges/confrontation-coverage.d.ts.map +1 -0
  19. package/dist/bridges/confrontation-coverage.js +83 -0
  20. package/dist/bridges/confrontation-coverage.js.map +1 -0
  21. package/dist/bridges/equations/_be-helpers.d.ts +2 -1
  22. package/dist/bridges/equations/_be-helpers.d.ts.map +1 -1
  23. package/dist/bridges/equations/be-12-coherence-length.d.ts +1 -1
  24. package/dist/bridges/equations/be-13-einstein-trace.d.ts +2 -2
  25. package/dist/bridges/equations/be-13-einstein-trace.js +1 -1
  26. package/dist/bridges/equations/be-14-ryu-takayanagi.d.ts +2 -2
  27. package/dist/bridges/equations/be-15-emergence.d.ts +19 -5
  28. package/dist/bridges/equations/be-15-emergence.d.ts.map +1 -1
  29. package/dist/bridges/equations/be-15-emergence.js +18 -4
  30. package/dist/bridges/equations/be-15-emergence.js.map +1 -1
  31. package/dist/bridges/equations/be-16-landauer.d.ts +1 -1
  32. package/dist/bridges/equations/be-17-einstein-cartan.d.ts +1 -1
  33. package/dist/bridges/equations/be-18-higgs-mass.d.ts +1 -1
  34. package/dist/bridges/equations/be-19-quantum-bounce.d.ts +1 -1
  35. package/dist/bridges/equations/be-20-vacuum-energy.d.ts +4 -4
  36. package/dist/bridges/equations/be-20-vacuum-energy.d.ts.map +1 -1
  37. package/dist/bridges/equations/be-20-vacuum-energy.js +4 -2
  38. package/dist/bridges/equations/be-20-vacuum-energy.js.map +1 -1
  39. package/dist/bridges/equations/be-22-topological-entanglement.d.ts +1 -1
  40. package/dist/bridges/equations/be-23-syk-planckian.d.ts +1 -1
  41. package/dist/bridges/equations/be-24-foerster-fret.d.ts +1 -1
  42. package/dist/bridges/equations/be-25-iit-phi.d.ts +1 -1
  43. package/dist/bridges/equations/be-25-orch-or.d.ts +13 -1
  44. package/dist/bridges/equations/be-25-orch-or.d.ts.map +1 -1
  45. package/dist/bridges/equations/be-25-orch-or.js +12 -0
  46. package/dist/bridges/equations/be-25-orch-or.js.map +1 -1
  47. package/dist/bridges/equations/be-26-dna-tunneling.d.ts +2 -2
  48. package/dist/bridges/equations/be-26-dna-tunneling.js +1 -1
  49. package/dist/bridges/equations/be-27-effective-temperature.d.ts +1 -1
  50. package/dist/bridges/equations/be-28-onsager-entropy-production.d.ts +1 -1
  51. package/dist/bridges/equations/be-29-jarzynski.d.ts +1 -1
  52. package/dist/bridges/equations/be-30-flm-first-law.d.ts +2 -2
  53. package/dist/bridges/equations/be-31-causal-set-bd.d.ts +1 -1
  54. package/dist/bridges/equations/be-32-quantum-reference-frame.d.ts +1 -1
  55. package/dist/bridges/equations/be-33-hertz-millis.d.ts +1 -1
  56. package/dist/bridges/equations/be-34-kibble-zurek.d.ts +1 -1
  57. package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts +1 -1
  58. package/dist/bridges/equations/be-36-gw-speed-bound.d.ts +12 -5
  59. package/dist/bridges/equations/be-36-gw-speed-bound.d.ts.map +1 -1
  60. package/dist/bridges/equations/be-36-gw-speed-bound.js +11 -4
  61. package/dist/bridges/equations/be-36-gw-speed-bound.js.map +1 -1
  62. package/dist/bridges/equations/be-38-mond.d.ts +1 -1
  63. package/dist/bridges/equations/be-39-asymptotic-safety.d.ts +2 -2
  64. package/dist/bridges/equations/be-40-composite-higgs.d.ts +1 -1
  65. package/dist/bridges/equations/be-41-swampland.d.ts +1 -1
  66. package/dist/bridges/equations/be-43-er-epr.d.ts +1 -1
  67. package/dist/bridges/equations/be-44-soft-hair.d.ts +1 -1
  68. package/dist/bridges/equations/be-45-tcc.d.ts +1 -1
  69. package/dist/bridges/equations/be-46-multiverse-measure.d.ts +1 -1
  70. package/dist/bridges/equations/be-47-bbn-dark-sector.d.ts +1 -1
  71. package/dist/bridges/equations/be-48-grw-localization.d.ts +1 -1
  72. package/dist/bridges/equations/be-49-quantum-darwinism.d.ts +1 -1
  73. package/dist/bridges/equations/be-50-wheeler-feynman.d.ts +1 -1
  74. package/dist/bridges/index.d.ts +10 -7
  75. package/dist/bridges/index.d.ts.map +1 -1
  76. package/dist/bridges/index.js +47 -34
  77. package/dist/bridges/index.js.map +1 -1
  78. package/dist/bridges/membership.d.ts +44 -0
  79. package/dist/bridges/membership.d.ts.map +1 -0
  80. package/dist/bridges/membership.js +59 -0
  81. package/dist/bridges/membership.js.map +1 -0
  82. package/dist/bridges/rejected.d.ts +40 -0
  83. package/dist/bridges/rejected.d.ts.map +1 -0
  84. package/dist/bridges/rejected.js +81 -0
  85. package/dist/bridges/rejected.js.map +1 -0
  86. package/dist/composition/bridge-analysis.d.ts +189 -0
  87. package/dist/composition/bridge-analysis.d.ts.map +1 -0
  88. package/dist/composition/bridge-analysis.js +445 -0
  89. package/dist/composition/bridge-analysis.js.map +1 -0
  90. package/dist/composition/bridge-prediction.d.ts +95 -0
  91. package/dist/composition/bridge-prediction.d.ts.map +1 -0
  92. package/dist/composition/bridge-prediction.js +0 -0
  93. package/dist/composition/bridge-prediction.js.map +1 -0
  94. package/dist/composition/catalog-graph.d.ts +20 -0
  95. package/dist/composition/catalog-graph.d.ts.map +1 -0
  96. package/dist/composition/catalog-graph.js +39 -0
  97. package/dist/composition/catalog-graph.js.map +1 -0
  98. package/dist/composition/compose-surface.d.ts +12 -0
  99. package/dist/composition/compose-surface.d.ts.map +1 -0
  100. package/dist/composition/compose-surface.js +10 -0
  101. package/dist/composition/compose-surface.js.map +1 -0
  102. package/dist/composition/compose-symbolic.d.ts +75 -0
  103. package/dist/composition/compose-symbolic.d.ts.map +1 -0
  104. package/dist/composition/compose-symbolic.js +157 -0
  105. package/dist/composition/compose-symbolic.js.map +1 -0
  106. package/dist/composition/compose.d.ts +110 -0
  107. package/dist/composition/compose.d.ts.map +1 -0
  108. package/dist/composition/compose.js +231 -0
  109. package/dist/composition/compose.js.map +1 -0
  110. package/dist/composition/consistency.d.ts +24 -0
  111. package/dist/composition/consistency.d.ts.map +1 -0
  112. package/dist/composition/consistency.js +26 -0
  113. package/dist/composition/consistency.js.map +1 -0
  114. package/dist/composition/discovery.d.ts +104 -0
  115. package/dist/composition/discovery.d.ts.map +1 -0
  116. package/dist/composition/discovery.js +165 -0
  117. package/dist/composition/discovery.js.map +1 -0
  118. package/dist/composition/edge.d.ts +139 -0
  119. package/dist/composition/edge.d.ts.map +1 -0
  120. package/dist/composition/edge.js +72 -0
  121. package/dist/composition/edge.js.map +1 -0
  122. package/dist/composition/edges/calibration.d.ts +107 -0
  123. package/dist/composition/edges/calibration.d.ts.map +1 -0
  124. package/dist/composition/edges/calibration.js +373 -0
  125. package/dist/composition/edges/calibration.js.map +1 -0
  126. package/dist/composition/edges/catalog-full.d.ts +299 -0
  127. package/dist/composition/edges/catalog-full.d.ts.map +1 -0
  128. package/dist/composition/edges/catalog-full.js +989 -0
  129. package/dist/composition/edges/catalog-full.js.map +1 -0
  130. package/dist/composition/edges/catalog-tranche.d.ts +112 -0
  131. package/dist/composition/edges/catalog-tranche.d.ts.map +1 -0
  132. package/dist/composition/edges/catalog-tranche.js +241 -0
  133. package/dist/composition/edges/catalog-tranche.js.map +1 -0
  134. package/dist/composition/enumerate.d.ts +67 -0
  135. package/dist/composition/enumerate.d.ts.map +1 -0
  136. package/dist/composition/enumerate.js +78 -0
  137. package/dist/composition/enumerate.js.map +1 -0
  138. package/dist/composition/explain.d.ts +102 -0
  139. package/dist/composition/explain.d.ts.map +1 -0
  140. package/dist/composition/explain.js +244 -0
  141. package/dist/composition/explain.js.map +1 -0
  142. package/dist/composition/expr-eval.d.ts +33 -0
  143. package/dist/composition/expr-eval.d.ts.map +1 -0
  144. package/dist/composition/expr-eval.js +95 -0
  145. package/dist/composition/expr-eval.js.map +1 -0
  146. package/dist/composition/expr-simplify.d.ts +60 -0
  147. package/dist/composition/expr-simplify.d.ts.map +1 -0
  148. package/dist/composition/expr-simplify.js +330 -0
  149. package/dist/composition/expr-simplify.js.map +1 -0
  150. package/dist/composition/expr-subst.d.ts +29 -0
  151. package/dist/composition/expr-subst.d.ts.map +1 -0
  152. package/dist/composition/expr-subst.js +60 -0
  153. package/dist/composition/expr-subst.js.map +1 -0
  154. package/dist/composition/identifiability.d.ts +103 -0
  155. package/dist/composition/identifiability.d.ts.map +1 -0
  156. package/dist/composition/identifiability.js +148 -0
  157. package/dist/composition/identifiability.js.map +1 -0
  158. package/dist/composition/index.d.ts +37 -0
  159. package/dist/composition/index.d.ts.map +1 -0
  160. package/dist/composition/index.js +27 -0
  161. package/dist/composition/index.js.map +1 -0
  162. package/dist/composition/quantities.d.ts +297 -0
  163. package/dist/composition/quantities.d.ts.map +1 -0
  164. package/dist/composition/quantities.js +1017 -0
  165. package/dist/composition/quantities.js.map +1 -0
  166. package/dist/composition/quantity.d.ts +59 -0
  167. package/dist/composition/quantity.d.ts.map +1 -0
  168. package/dist/composition/quantity.js +36 -0
  169. package/dist/composition/quantity.js.map +1 -0
  170. package/dist/composition/retrodiction.d.ts +94 -0
  171. package/dist/composition/retrodiction.d.ts.map +1 -0
  172. package/dist/composition/retrodiction.js +171 -0
  173. package/dist/composition/retrodiction.js.map +1 -0
  174. package/dist/composition/symbolic-constants.d.ts +33 -0
  175. package/dist/composition/symbolic-constants.d.ts.map +1 -0
  176. package/dist/composition/symbolic-constants.js +50 -0
  177. package/dist/composition/symbolic-constants.js.map +1 -0
  178. package/dist/composition/uncertainty.d.ts +45 -0
  179. package/dist/composition/uncertainty.d.ts.map +1 -0
  180. package/dist/composition/uncertainty.js +59 -0
  181. package/dist/composition/uncertainty.js.map +1 -0
  182. package/dist/core/axes-registry.d.ts +1 -1
  183. package/dist/core/axes-registry.js +1 -1
  184. package/dist/core/cell.d.ts +0 -8
  185. package/dist/core/cell.d.ts.map +1 -1
  186. package/dist/core/cell.js +1 -1
  187. package/dist/core/cell.js.map +1 -1
  188. package/dist/core/constants.d.ts +15 -1
  189. package/dist/core/constants.d.ts.map +1 -1
  190. package/dist/core/constants.js +15 -1
  191. package/dist/core/constants.js.map +1 -1
  192. package/dist/core/flux-rules.d.ts +10 -13
  193. package/dist/core/flux-rules.d.ts.map +1 -1
  194. package/dist/core/flux-rules.js +19 -10
  195. package/dist/core/flux-rules.js.map +1 -1
  196. package/dist/core/labeled-tensor.d.ts +80 -1
  197. package/dist/core/labeled-tensor.d.ts.map +1 -1
  198. package/dist/core/labeled-tensor.js +263 -17
  199. package/dist/core/labeled-tensor.js.map +1 -1
  200. package/dist/core/universal-index.d.ts +1 -1
  201. package/dist/core/universal-index.js +1 -1
  202. package/dist/dimensional/buckingham.d.ts +103 -0
  203. package/dist/dimensional/buckingham.d.ts.map +1 -0
  204. package/dist/dimensional/buckingham.js +284 -0
  205. package/dist/dimensional/buckingham.js.map +1 -0
  206. package/dist/dimensional/dimension-spec.d.ts +24 -0
  207. package/dist/dimensional/dimension-spec.d.ts.map +1 -0
  208. package/dist/dimensional/dimension-spec.js +110 -0
  209. package/dist/dimensional/dimension-spec.js.map +1 -0
  210. package/dist/dimensional/field-equation-helpers.d.ts +1 -1
  211. package/dist/dimensional/field-equation-helpers.js +1 -1
  212. package/dist/dimensional/friedmann-equation.d.ts +1 -1
  213. package/dist/dimensional/friedmann-equation.js +1 -1
  214. package/dist/dimensional/gauge-field.d.ts +1 -1
  215. package/dist/dimensional/gauge-field.js +1 -1
  216. package/dist/dimensional/klein-gordon-equation.d.ts +8 -5
  217. package/dist/dimensional/klein-gordon-equation.d.ts.map +1 -1
  218. package/dist/dimensional/klein-gordon-equation.js +8 -5
  219. package/dist/dimensional/klein-gordon-equation.js.map +1 -1
  220. package/dist/dimensional/tensor-trace.d.ts +1 -1
  221. package/dist/dimensional/tensor-trace.js +1 -1
  222. package/dist/dimensional/validator.d.ts +13 -3
  223. package/dist/dimensional/validator.d.ts.map +1 -1
  224. package/dist/dimensional/validator.js +129 -42
  225. package/dist/dimensional/validator.js.map +1 -1
  226. package/dist/index.d.ts +32 -2
  227. package/dist/index.d.ts.map +1 -1
  228. package/dist/index.js +63 -2
  229. package/dist/index.js.map +1 -1
  230. package/dist/numerical/be37-covariant-eikonal.d.ts.map +1 -1
  231. package/dist/numerical/be37-covariant-eikonal.js +15 -18
  232. package/dist/numerical/be37-covariant-eikonal.js.map +1 -1
  233. package/dist/numerical/curvature-lowering-helpers.d.ts +7 -13
  234. package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
  235. package/dist/numerical/curvature-lowering-helpers.js +1 -1
  236. package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
  237. package/dist/numerical/derivative-lowering.d.ts +2 -1
  238. package/dist/numerical/derivative-lowering.d.ts.map +1 -1
  239. package/dist/numerical/formula-dimension.d.ts +40 -0
  240. package/dist/numerical/formula-dimension.d.ts.map +1 -0
  241. package/dist/numerical/formula-dimension.js +199 -0
  242. package/dist/numerical/formula-dimension.js.map +1 -0
  243. package/dist/numerical/formula-mathts.d.ts +27 -0
  244. package/dist/numerical/formula-mathts.d.ts.map +1 -0
  245. package/dist/numerical/formula-mathts.js +98 -0
  246. package/dist/numerical/formula-mathts.js.map +1 -0
  247. package/dist/numerical/formula-registry.d.ts +30 -0
  248. package/dist/numerical/formula-registry.d.ts.map +1 -0
  249. package/dist/numerical/formula-registry.js +88 -0
  250. package/dist/numerical/formula-registry.js.map +1 -0
  251. package/dist/numerical/formula.d.ts +75 -0
  252. package/dist/numerical/formula.d.ts.map +1 -0
  253. package/dist/numerical/formula.js +275 -0
  254. package/dist/numerical/formula.js.map +1 -0
  255. package/dist/numerical/geometrized.d.ts +51 -0
  256. package/dist/numerical/geometrized.d.ts.map +1 -0
  257. package/dist/numerical/geometrized.js +66 -0
  258. package/dist/numerical/geometrized.js.map +1 -0
  259. package/dist/numerical/gl4-integrator.d.ts +8 -6
  260. package/dist/numerical/gl4-integrator.d.ts.map +1 -1
  261. package/dist/numerical/gl4-integrator.js +6 -6
  262. package/dist/numerical/gl4-integrator.js.map +1 -1
  263. package/dist/numerical/klein-gordon.d.ts +145 -0
  264. package/dist/numerical/klein-gordon.d.ts.map +1 -0
  265. package/dist/numerical/klein-gordon.js +145 -0
  266. package/dist/numerical/klein-gordon.js.map +1 -0
  267. package/dist/numerical/kretschmann.d.ts +43 -12
  268. package/dist/numerical/kretschmann.d.ts.map +1 -1
  269. package/dist/numerical/kretschmann.js +116 -29
  270. package/dist/numerical/kretschmann.js.map +1 -1
  271. package/dist/numerical/lowering.d.ts +18 -0
  272. package/dist/numerical/lowering.d.ts.map +1 -1
  273. package/dist/numerical/lowering.js +54 -42
  274. package/dist/numerical/lowering.js.map +1 -1
  275. package/dist/numerical/null-ic.d.ts +1 -1
  276. package/dist/numerical/null-ic.d.ts.map +1 -1
  277. package/dist/numerical/null-ic.js +3 -2
  278. package/dist/numerical/null-ic.js.map +1 -1
  279. package/dist/numerical/painleve-gullstrand-metric.d.ts +18 -6
  280. package/dist/numerical/painleve-gullstrand-metric.d.ts.map +1 -1
  281. package/dist/numerical/painleve-gullstrand-metric.js +31 -16
  282. package/dist/numerical/painleve-gullstrand-metric.js.map +1 -1
  283. package/dist/numerical/perihelion-finder.d.ts +4 -3
  284. package/dist/numerical/perihelion-finder.d.ts.map +1 -1
  285. package/dist/numerical/perihelion-finder.js +5 -4
  286. package/dist/numerical/perihelion-finder.js.map +1 -1
  287. package/dist/numerical/types.d.ts +6 -3
  288. package/dist/numerical/types.d.ts.map +1 -1
  289. package/dist/numerical/weyl-lowering.d.ts +4 -4
  290. package/dist/numerical/weyl-lowering.d.ts.map +1 -1
  291. package/dist/numerical/weyl-lowering.js +14 -1
  292. package/dist/numerical/weyl-lowering.js.map +1 -1
  293. package/package.json +19 -8
@@ -1,15 +1,18 @@
1
1
  /**
2
- * Kretschmann scalar numerical contraction (v0.6.0 Phase 3, Task 3.6).
2
+ * Kretschmann scalar numerical contraction (v0.6.0 Phase 3, Task 3.6;
3
+ * factored-raising optimization 2026-06-11).
3
4
  *
4
5
  * Computes K = R_{ρσμν} R^{ρσμν} from the fully-lowered Riemann tensor and
5
6
  * the inverse metric by raising all four indices on the second Riemann factor.
6
7
  *
7
- * **PERFORMANCE WARNING**: O(4⁸) = 65536 multiplications per call. Acceptable
8
- * for diagnostic / sample-point use, but DO NOT call inside tight integration
9
- * loops (10⁶ steps × 65k ops = ~6.5e10 ops). Future optimization (v0.7.0
10
- * candidate): exploit Riemann symmetries to reduce to ~20 independent
11
- * components × symmetric weighting; estimated speedup ~12×. Tracked in
12
- * v0.6.0 brainstorm carry-forward.
8
+ * **PERFORMANCE (2026-06-11 optimization)**: the original implementation
9
+ * raised all four indices inside the contraction loop O(4⁸) = 65536
10
+ * inner products (~327k multiplications). The current implementation
11
+ * factors the four-index raise into FOUR successive single-index raisings
12
+ * (4 × 4⁵ = 4096 multiply-adds) plus one 256-term contraction — a ~70×
13
+ * reduction in multiplications that is EXACT for arbitrary input (pure
14
+ * reassociation of the sums; no Riemann-symmetry assumption). See the
15
+ * algorithm notes inside {@link computeKretschmann}.
13
16
  *
14
17
  * @module numerical/kretschmann
15
18
  */
@@ -19,15 +22,43 @@
19
22
  * Algorithm:
20
23
  * 1. Raise all four indices on the second Riemann factor:
21
24
  * R^{ρσμν} = g^{ρα} g^{σβ} g^{μγ} g^{νδ} R_{αβγδ}
25
+ * — factored as four successive single-index raisings (see below).
22
26
  * 2. Contract:
23
27
  * K = Σ_{ρσμν} R_{ρσμν} · R^{ρσμν}
24
28
  *
25
- * The outer sum has 4⁴ = 256 terms; each inner raise requires 4⁴ = 256
26
- * metric products, giving the O(4⁸) = 65536 total multiplications.
29
+ * **Factored raising (exact, input-shape-agnostic).** The naive raise is a
30
+ * rank-8 contraction, O(4⁸). Because the four metric factors each touch a
31
+ * single Riemann index, the sum factors exactly:
32
+ *
33
+ * T1^ρ_{βγδ} = g^{ρα} R_{αβγδ} (axis-0 raise, 4⁵ = 1024 mult-adds)
34
+ * T2^{ρσ}_{γδ} = g^{σβ} T1^ρ_{βγδ} (axis-1 raise, 1024)
35
+ * T3^{ρσμ}_δ = g^{μγ} T2^{ρσ}_{γδ} (axis-2 raise, 1024)
36
+ * R^{ρσμν} = g^{νδ} T3^{ρσμ}_δ (axis-3 raise, 1024)
37
+ *
38
+ * This is a pure reassociation of the quadruple sum — mathematically
39
+ * identical for ARBITRARY (even non-antisymmetric) `riemannLower` input,
40
+ * which matters because the FD-built Riemann is only approximately
41
+ * antisymmetric.
42
+ *
43
+ * **Rejected alternative — symmetry pair-iteration.** Under EXACT Riemann
44
+ * antisymmetry (R_{ρσμν} = −R_{σρμν} = −R_{ρσνμ}) all components with
45
+ * ρ = σ or μ = ν vanish and the survivors come in sign-pairs, so the
46
+ * contraction collapses to the 6×6 independent index PAIRS:
47
+ *
48
+ * K = 4 · Σ_{ρ<σ} Σ_{μ<ν} R_{ρσμν} R^{ρσμν}
49
+ *
50
+ * (each unordered pair contributes 4 ordered combinations whose sign
51
+ * factors square away: (−1)·(−1) = +1). That formula is NOT identical to
52
+ * the full sum for arbitrary input — the FD pipeline produces small
53
+ * antisymmetry violations — so it was rejected in favour of the factored
54
+ * raise, which needs no input-symmetry assumption.
27
55
  *
28
56
  * @param riemannLower - R_{ρσμν}: all-lower Riemann tensor, shape [4][4][4][4].
29
57
  * Obtain by lowering R^ρ_{σμν} via g_{ρα}: R_{αβγδ} = g_{αρ} R^ρ_{βγδ}.
30
- * @param metricInverse - g^{αβ}: inverse metric, shape [4][4].
58
+ * @param metricInverse - g^{αβ}: inverse metric. Either nested `number[][]`
59
+ * (shape [4][4]) or row-major `Float64Array(16)` with `flat[mu*4 + nu]`
60
+ * (the v0.9.0 fixture layout). Normalized ONCE at entry — O-4 widening,
61
+ * non-breaking for existing nested callers.
31
62
  * @returns K, a scalar. Dimension [L⁻⁴] (Riemann is [L⁻²] per F8/I3 convention).
32
63
  *
33
64
  * @example
@@ -48,7 +79,7 @@
48
79
  *
49
80
  * const engine = new Float64ReferenceEngine();
50
81
  * const rLower = riemannLowerAt(x, schwarzschildGFn(M), schwarzschildGInverseFn(M), 4, engine);
51
- * const gInv = schwarzschildGInverseFn(M)(x);
82
+ * const gInv = schwarzschildGInverseFn(M)(x); // Float64Array(16) — accepted directly
52
83
  * const K = computeKretschmann(rLower, gInv);
53
84
  *
54
85
  * // Schwarzschild closed-form: K = 48 G² M² / (c⁴ r⁶)
@@ -59,28 +90,84 @@
59
90
  * @public
60
91
  */
61
92
  export function computeKretschmann(riemannLower, metricInverse) {
62
- // Raise: R^{ρσμν} = g^{ρα} g^{σβ} g^{μγ} g^{νδ} R_{αβγδ}
63
- // Then K = R_{ρσμν} R^{ρσμν} (sum over all 4⁴ = 256 components)
64
- let K = 0;
93
+ // O-4: normalize the inverse metric ONCE at entry to row-major flat
94
+ // g[mu*4 + nu]. Float64Array inputs pass through without copying.
95
+ let gInv;
96
+ if (metricInverse instanceof Float64Array) {
97
+ gInv = metricInverse;
98
+ }
99
+ else {
100
+ gInv = new Float64Array(16);
101
+ for (let mu = 0; mu < 4; mu++) {
102
+ for (let nu = 0; nu < 4; nu++) {
103
+ gInv[mu * 4 + nu] = metricInverse[mu][nu];
104
+ }
105
+ }
106
+ }
107
+ // Flatten R_{αβγδ} once to row-major strides [64, 16, 4, 1].
108
+ const R = new Float64Array(256);
109
+ for (let a = 0; a < 4; a++) {
110
+ const Ra = riemannLower[a];
111
+ for (let b = 0; b < 4; b++) {
112
+ const Rab = Ra[b];
113
+ for (let c = 0; c < 4; c++) {
114
+ const Rabc = Rab[c];
115
+ const base = a * 64 + b * 16 + c * 4;
116
+ R[base] = Rabc[0];
117
+ R[base + 1] = Rabc[1];
118
+ R[base + 2] = Rabc[2];
119
+ R[base + 3] = Rabc[3];
120
+ }
121
+ }
122
+ }
123
+ // Four successive single-index raisings (each 4⁵ = 1024 mult-adds).
124
+ // Axis-0 raise: T1[ρ,β,γ,δ] = Σ_α g^{ρα} R[α,β,γ,δ]
125
+ const T1 = new Float64Array(256);
126
+ for (let rho = 0; rho < 4; rho++) {
127
+ for (let rest = 0; rest < 64; rest++) {
128
+ let s = 0;
129
+ for (let a = 0; a < 4; a++) {
130
+ s += gInv[rho * 4 + a] * R[a * 64 + rest];
131
+ }
132
+ T1[rho * 64 + rest] = s;
133
+ }
134
+ }
135
+ // Axis-1 raise: T2[ρ,σ,γ,δ] = Σ_β g^{σβ} T1[ρ,β,γ,δ]
136
+ const T2 = new Float64Array(256);
65
137
  for (let rho = 0; rho < 4; rho++) {
66
138
  for (let sigma = 0; sigma < 4; sigma++) {
67
- for (let mu = 0; mu < 4; mu++) {
68
- for (let nu = 0; nu < 4; nu++) {
69
- let raised = 0;
70
- for (let a = 0; a < 4; a++) {
71
- for (let b = 0; b < 4; b++) {
72
- for (let c = 0; c < 4; c++) {
73
- for (let d = 0; d < 4; d++) {
74
- raised += metricInverse[rho][a] * metricInverse[sigma][b]
75
- * metricInverse[mu][c] * metricInverse[nu][d]
76
- * riemannLower[a][b][c][d];
77
- }
78
- }
79
- }
80
- }
81
- K += riemannLower[rho][sigma][mu][nu] * raised;
139
+ for (let rest = 0; rest < 16; rest++) {
140
+ let s = 0;
141
+ for (let b = 0; b < 4; b++) {
142
+ s += gInv[sigma * 4 + b] * T1[rho * 64 + b * 16 + rest];
143
+ }
144
+ T2[rho * 64 + sigma * 16 + rest] = s;
145
+ }
146
+ }
147
+ }
148
+ // Axis-2 raise: T3[ρ,σ,μ,δ] = Σ_γ g^{μγ} T2[ρ,σ,γ,δ]
149
+ const T3 = new Float64Array(256);
150
+ for (let head = 0; head < 16; head++) {
151
+ for (let mu = 0; mu < 4; mu++) {
152
+ for (let d = 0; d < 4; d++) {
153
+ let s = 0;
154
+ for (let c = 0; c < 4; c++) {
155
+ s += gInv[mu * 4 + c] * T2[head * 16 + c * 4 + d];
82
156
  }
157
+ T3[head * 16 + mu * 4 + d] = s;
158
+ }
159
+ }
160
+ }
161
+ // Axis-3 raise fused with the final contraction:
162
+ // R^{ρσμν} = Σ_δ g^{νδ} T3[ρ,σ,μ,δ]; K = Σ R_{ρσμν} R^{ρσμν}
163
+ let K = 0;
164
+ for (let head = 0; head < 64; head++) {
165
+ for (let nu = 0; nu < 4; nu++) {
166
+ let raised = 0;
167
+ for (let d = 0; d < 4; d++) {
168
+ raised += gInv[nu * 4 + d] * T3[head * 4 + d];
83
169
  }
170
+ K += R[head * 4 + nu] * raised;
84
171
  }
85
172
  }
86
173
  return K;
@@ -1 +1 @@
1
- {"version":3,"file":"kretschmann.js","sourceRoot":"","sources":["../../src/numerical/kretschmann.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,UAAU,kBAAkB,CAChC,YAA4B,EAC5B,aAAyB;IAEzB,yDAAyD;IACzD,gEAAgE;IAChE,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;QACjC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACvC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;gBAC9B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;oBAC9B,IAAI,MAAM,GAAG,CAAC,CAAC;oBACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;4BAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gCAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oCAC3B,MAAM,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;0CAC/C,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;0CAC3C,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gCACrC,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"kretschmann.js","sourceRoot":"","sources":["../../src/numerical/kretschmann.ts"],"names":[],"mappings":"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"}
@@ -15,5 +15,23 @@ import type { EngineTensor, TensorEngine } from './tensor-engine.js';
15
15
  import type { NumericalInputs } from './types.js';
16
16
  /** Lower a validated ExprNode to an EngineTensor.
17
17
  * @internal — cross-module/test use only; not part of the consumer surface. */
18
+ /**
19
+ * S-9 (v0.9.0): deferred-evaluator registry — the single source of
20
+ * truth for AST kinds whose numerical evaluation lives in a dedicated
21
+ * module instead of the lowering switch. The default arm consults this
22
+ * registry and raises a descriptive error naming the canonical
23
+ * evaluator; the per-kind explicit arms it replaces had drifted into
24
+ * 5 near-identical bodies (v0.7.1 S-9 finding).
25
+ *
26
+ * Exhaustiveness is pinned by tests/numerical/lowering-deferred-arms.test.ts
27
+ * (Adam A-8 mitigation: silent prose drift between registry and arms).
28
+ */
29
+ interface DeferredEvaluatorEntry {
30
+ readonly canonicalEvaluatorName: string;
31
+ readonly moduleHint: string;
32
+ }
33
+ type DeferredNodeKind = 'killing-vector' | 'conserved-charge' | 'stress-energy' | 'cosmological-constant' | 'einstein-equation';
34
+ export declare const DEFERRED_EVALUATOR_REGISTRY: Record<DeferredNodeKind, DeferredEvaluatorEntry>;
18
35
  export declare function lowerNode(node: ExprNode, inputs: NumericalInputs, engine: TensorEngine): EngineTensor;
36
+ export {};
19
37
  //# sourceMappingURL=lowering.d.ts.map
@@ -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;AAiB5D,OAAO,KAAK,EACV,YAAY,EAAE,YAAY,EAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,YAAY,CAAC;AAwW/D;gFACgF;AAChF,wBAAgB,SAAS,CACvB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,YAAY,GACnB,YAAY,CAqMd"}
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;AAiB5D,OAAO,KAAK,EACV,YAAY,EAAE,YAAY,EAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,YAAY,CAAC;AAgX/D;gFACgF;AAChF;;;;;;;;;;GAUG;AACH,UAAU,sBAAsB;IAC9B,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,KAAK,gBAAgB,GACjB,gBAAgB,GAChB,kBAAkB,GAClB,eAAe,GACf,uBAAuB,GACvB,mBAAmB,CAAC;AAExB,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,gBAAgB,EAAE,sBAAsB,CAqBxF,CAAC;AAMF,wBAAgB,SAAS,CACvB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,YAAY,GACnB,YAAY,CA8Kd"}
@@ -276,14 +276,42 @@ function lowerCurvature(node, inputs, engine) {
276
276
  `with a pre-computed riemannLower array and invertMetric().`);
277
277
  }
278
278
  default: {
279
+ // Compile-time exhaustiveness: in this default arm `node` is the
280
+ // union of the deferred kinds (all others have explicit arms).
281
+ // Excluding the registry-covered kinds must leave `never` — if a
282
+ // new ExprNode kind lands without an arm OR a registry entry,
283
+ // this assignment errors at tsc (Adam A-8 mitigation).
279
284
  const _exhaustive = node;
280
285
  void _exhaustive;
281
286
  throw new NumericalBackendError(`lowerCurvature: unhandled curvature kind ${JSON.stringify(node.kind)}`);
282
287
  }
283
288
  }
284
289
  }
285
- /** Lower a validated ExprNode to an EngineTensor.
286
- * @internal — cross-module/test use only; not part of the consumer surface. */
290
+ export const DEFERRED_EVALUATOR_REGISTRY = {
291
+ 'killing-vector': {
292
+ canonicalEvaluatorName: 'verifyKillingEquation',
293
+ moduleHint: 'src/numerical/killing.ts',
294
+ },
295
+ 'conserved-charge': {
296
+ canonicalEvaluatorName: 'evaluateConservedCharge',
297
+ moduleHint: 'src/numerical/killing.ts',
298
+ },
299
+ 'stress-energy': {
300
+ canonicalEvaluatorName: 'evaluateEinsteinEquationResidual',
301
+ moduleHint: 'src/numerical/einstein-equation.ts',
302
+ },
303
+ 'cosmological-constant': {
304
+ canonicalEvaluatorName: 'evaluateEinsteinEquationResidual',
305
+ moduleHint: 'src/numerical/einstein-equation.ts',
306
+ },
307
+ 'einstein-equation': {
308
+ canonicalEvaluatorName: 'evaluateEinsteinEquationResidual',
309
+ moduleHint: 'src/numerical/einstein-equation.ts',
310
+ },
311
+ };
312
+ function isDeferredNodeKind(kind) {
313
+ return Object.prototype.hasOwnProperty.call(DEFERRED_EVALUATOR_REGISTRY, kind);
314
+ }
287
315
  export function lowerNode(node, inputs, engine) {
288
316
  switch (node.kind) {
289
317
  case 'symbol':
@@ -388,6 +416,14 @@ export function lowerNode(node, inputs, engine) {
388
416
  case 'derivative':
389
417
  throw new NumericalBackendError(`lowering: '${node.kind}' is not numerically evaluated in v0.3.5 — `
390
418
  + 'use tensor-partial-derivative for differentiation');
419
+ // v0.14 distributional/variational primitives — dimensional-grammar only,
420
+ // not numerically evaluable (δ(0)=∞; a functional derivative needs the
421
+ // functional's explicit form). They never appear in a composable symbolic
422
+ // form, so the throw is correct.
423
+ case 'dirac-delta':
424
+ case 'variational-derivative':
425
+ throw new NumericalBackendError(`lowering: '${node.kind}' is a dimensional-grammar primitive (v0.14) `
426
+ + 'and is not numerically evaluated');
391
427
  // v0.6.0 Task 3.10e: ricci-tensor, einstein-tensor, bianchi-residual,
392
428
  // riemann-tensor, weyl-tensor, kretschmann-scalar all delegate to
393
429
  // lowerCurvature — the extracted curvature-composite dispatcher.
@@ -398,47 +434,23 @@ export function lowerNode(node, inputs, engine) {
398
434
  case 'weyl-tensor':
399
435
  case 'kretschmann-scalar':
400
436
  return lowerCurvature(node, inputs, engine);
401
- case 'killing-vector': {
402
- // v0.6.0 Task 1.1: KillingVectorNode symbolic AST added. Numerical
403
- // evaluation (verifyKillingEquation / evaluateConservedCharge) is
404
- // deferred to Task 1.3 (src/numerical/killing.ts). Until then, the
405
- // lowering layer raises a descriptive error so callers get a clear
406
- // signal instead of the generic 'unknown kind' message.
407
- throw new NumericalBackendError(`lowering: 'killing-vector' numerical evaluation is not yet implemented ` +
408
- `(Task 1.3). Use verifyKillingEquation() from src/numerical/killing.ts.`);
409
- }
410
- case 'conserved-charge': {
411
- // v0.6.0 Task 1.2: ConservedChargeNode symbolic AST added. Numerical
412
- // evaluation (evaluateConservedCharge) is deferred to Task 1.3
413
- // (src/numerical/killing.ts). Raises a descriptive error so callers
414
- // get a clear signal instead of the generic 'unknown kind' message.
415
- throw new NumericalBackendError(`lowering: 'conserved-charge' numerical evaluation is not yet implemented ` +
416
- `(Task 1.3). Use evaluateConservedCharge() from src/numerical/killing.ts.`);
417
- }
418
- case 'stress-energy': {
419
- // v0.6.0 Task 2.1: StressEnergyTensorNode symbolic AST added. Full
420
- // numerical evaluation (T_μν from a perfect-fluid or explicit component
421
- // map) is deferred to Task 2.4 (src/numerical/einstein-equation.ts).
422
- // Raises a descriptive error so callers get a clear signal instead of
423
- // the generic 'unknown kind' message from the exhaustiveness guard.
424
- throw new NumericalBackendError(`lowering: 'stress-energy' numerical evaluation is not yet implemented ` +
425
- `(Task 2.4). Use the Einstein-equation evaluator in src/numerical/einstein-equation.ts.`);
426
- }
427
- case 'cosmological-constant': {
428
- // v0.6.0 Task 2.1: CosmologicalConstantNode symbolic AST added. Numerical
429
- // evaluation (inject Λ as a scalar into the Einstein equation) is deferred
430
- // to Task 2.4 (src/numerical/einstein-equation.ts).
431
- throw new NumericalBackendError(`lowering: 'cosmological-constant' numerical evaluation is not yet implemented ` +
432
- `(Task 2.4). Use the Einstein-equation evaluator in src/numerical/einstein-equation.ts.`);
433
- }
434
- case 'einstein-equation': {
435
- // v0.6.0 Task 2.3: EinsteinFieldEquationNode predicate AST added. Numerical
436
- // evaluation (G_μν + Λ g_μν = κ T_μν residual tensor) is deferred to
437
- // Task 2.4 (src/numerical/einstein-equation.ts).
438
- throw new NumericalBackendError(`lowering: 'einstein-equation' numerical evaluation is not yet implemented ` +
439
- `(Task 2.4). Use the Einstein-equation evaluator in src/numerical/einstein-equation.ts.`);
440
- }
437
+ // S-9 (v0.9.0): the five deferred-evaluator arms (killing-vector,
438
+ // conserved-charge, stress-energy, cosmological-constant,
439
+ // einstein-equation) collapsed into the registry-consulting default
440
+ // arm below. Message wording unified (no test pinned the old
441
+ // per-arm text verified before consolidation).
441
442
  default: {
443
+ if (isDeferredNodeKind(node.kind)) {
444
+ const entry = DEFERRED_EVALUATOR_REGISTRY[node.kind];
445
+ throw new NumericalBackendError(`lowering: '${node.kind}' numerical evaluation is not yet implemented ` +
446
+ `in the lowering layer. Use ${entry.canonicalEvaluatorName}() from ` +
447
+ `${entry.moduleHint} instead.`);
448
+ }
449
+ // Compile-time exhaustiveness: in this default arm `node` is the
450
+ // union of the deferred kinds (all others have explicit arms).
451
+ // Excluding the registry-covered kinds must leave `never` — if a
452
+ // new ExprNode kind lands without an arm OR a registry entry,
453
+ // this assignment errors at tsc (Adam A-8 mitigation).
442
454
  const _exhaustive = node;
443
455
  void _exhaustive;
444
456
  throw new NumericalBackendError(`lowering: unknown ExprNode.kind ${JSON.stringify(node.kind)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"lowering.js","sourceRoot":"","sources":["../../src/numerical/lowering.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lowering.js","sourceRoot":"","sources":["../../src/numerical/lowering.ts"],"names":[],"mappings":"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"}
@@ -36,5 +36,5 @@
36
36
  *
37
37
  * @public
38
38
  */
39
- export declare function reconstructNullPr(gInverse: readonly (readonly number[])[], p_t: number, p_phi: number): number;
39
+ export declare function reconstructNullPr(gInverse: Float64Array, p_t: number, p_phi: number): number;
40
40
  //# sourceMappingURL=null-ic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"null-ic.d.ts","sourceRoot":"","sources":["../../src/numerical/null-ic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,EACxC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,MAAM,CAYR"}
1
+ {"version":3,"file":"null-ic.d.ts","sourceRoot":"","sources":["../../src/numerical/null-ic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,YAAY,EACtB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,MAAM,CAaR"}
@@ -37,13 +37,14 @@
37
37
  * @public
38
38
  */
39
39
  export function reconstructNullPr(gInverse, p_t, p_phi) {
40
+ // v0.9.0 O-1: flat row-major layout, gInverse[mu*4 + nu] = g^{μν}.
40
41
  // g^tt p_t² + g^rr p_r² + g^φφ p_φ² = 0
41
42
  // ⟹ p_r² = (−g^tt p_t² − g^φφ p_φ²) / g^rr
42
- const numerator = -gInverse[0][0] * p_t * p_t - gInverse[3][3] * p_phi * p_phi;
43
+ const numerator = -gInverse[0 * 4 + 0] * p_t * p_t - gInverse[3 * 4 + 3] * p_phi * p_phi;
43
44
  if (numerator < 0) {
44
45
  throw new RangeError(`reconstructNullPr: null condition has no real p_r (impact parameter too large; numerator=${numerator})`);
45
46
  }
46
- const p_r_magnitude = Math.sqrt(numerator / gInverse[1][1]);
47
+ const p_r_magnitude = Math.sqrt(numerator / gInverse[1 * 4 + 1]);
47
48
  // Inward motion: dr/dτ = g^rr p_r < 0 ⟹ p_r < 0.
48
49
  return -p_r_magnitude;
49
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"null-ic.js","sourceRoot":"","sources":["../../src/numerical/null-ic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAwC,EACxC,GAAW,EACX,KAAa;IAEb,wCAAwC;IACxC,2CAA2C;IAC3C,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;IAC/E,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,UAAU,CAClB,4FAA4F,SAAS,GAAG,CACzG,CAAC;IACJ,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,iDAAiD;IACjD,OAAO,CAAC,aAAa,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"null-ic.js","sourceRoot":"","sources":["../../src/numerical/null-ic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAsB,EACtB,GAAW,EACX,KAAa;IAEb,mEAAmE;IACnE,wCAAwC;IACxC,2CAA2C;IAC3C,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;IACzF,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,UAAU,CAClB,4FAA4F,SAAS,GAAG,CACzG,CAAC;IACJ,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjE,iDAAiD;IACjD,OAAO,CAAC,aAAa,CAAC;AACxB,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * Painlevé-Gullstrand (PG) metric for Schwarzschild spacetime —
3
3
  * regular at the event horizon.
4
4
  *
5
- * Per `docs/architecture/v0.7-near-horizon-kretschmann-design-note.md`
5
+ * Per `docs/architecture/archive/v0.7-near-horizon-kretschmann-design-note.md`
6
6
  * (v0.7 follow-up to v0.6.0's deferred "Near-horizon Kretschmann"
7
7
  * item). Schwarzschild coordinates have a coordinate singularity at
8
8
  * `r = r_s` (the event horizon); `g_rr = 1/(1−r_s/r) → ∞`. The
@@ -50,25 +50,37 @@
50
50
  *
51
51
  * @module numerical/painleve-gullstrand-metric
52
52
  */
53
+ import type { MetricFnFlat } from './curvature-lowering-helpers.js';
53
54
  /**
54
55
  * Builds a Painlevé-Gullstrand metric function `g_μν(T, r, θ, φ)`
55
56
  * for a Schwarzschild black hole of mass `M_kg`.
56
57
  *
57
58
  * The returned function maps a 4-tuple coordinate point to the
58
- * 4×4 lower-lower metric. Closed-form; no FD; regular at r=r_s.
59
+ * 4×4 lower-lower metric as a row-major `Float64Array(16)`
60
+ * `flat[mu*4 + nu] = g_{μν}` (v0.9.0 O-6 migration, mirroring the
61
+ * v0.6.0 BR-2 christoffelFn convention). Closed-form; no FD;
62
+ * regular at r=r_s.
63
+ *
64
+ * BREAKING (v0.9.0) for subpath-import consumers: previously
65
+ * returned `number[][]`.
59
66
  *
60
67
  * @public
61
68
  */
62
- export declare function painleveGullstrandGFn(M_kg: number): (x: ReadonlyArray<number>) => number[][];
69
+ export declare function painleveGullstrandGFn(M_kg: number): MetricFnFlat;
63
70
  /**
64
71
  * Builds a Painlevé-Gullstrand inverse-metric function `g^μν(T, r,
65
72
  * θ, φ)`. Closed-form (2×2 block inverse on the (T, r) block,
66
73
  * det = -1; angular block is trivially diagonal).
67
74
  *
68
- * At r=r_s, g^rr=0 (the horizon's coordinate-regularity signature
69
- * in PG: NO divergence). At r→∞, g^rr → 1 (asymptotic flatness).
75
+ * Returns a row-major `Float64Array(16)` `flat[mu*4 + nu] = g^{μν}`
76
+ * (v0.9.0 O-6 migration). At r=r_s, g^rr=0 (the horizon's
77
+ * coordinate-regularity signature in PG: NO divergence). At r→∞,
78
+ * g^rr → 1 (asymptotic flatness).
79
+ *
80
+ * BREAKING (v0.9.0) for subpath-import consumers: previously
81
+ * returned `number[][]`.
70
82
  *
71
83
  * @public
72
84
  */
73
- export declare function painleveGullstrandGInverseFn(M_kg: number): (x: ReadonlyArray<number>) => number[][];
85
+ export declare function painleveGullstrandGInverseFn(M_kg: number): MetricFnFlat;
74
86
  //# sourceMappingURL=painleve-gullstrand-metric.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"painleve-gullstrand-metric.d.ts","sourceRoot":"","sources":["../../src/numerical/painleve-gullstrand-metric.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAeH;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,GACX,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,EAAE,CAkB1C;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,GACX,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,EAAE,CAkB1C"}
1
+ {"version":3,"file":"painleve-gullstrand-metric.d.ts","sourceRoot":"","sources":["../../src/numerical/painleve-gullstrand-metric.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAapE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAoBhE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAoBvE"}
@@ -2,7 +2,7 @@
2
2
  * Painlevé-Gullstrand (PG) metric for Schwarzschild spacetime —
3
3
  * regular at the event horizon.
4
4
  *
5
- * Per `docs/architecture/v0.7-near-horizon-kretschmann-design-note.md`
5
+ * Per `docs/architecture/archive/v0.7-near-horizon-kretschmann-design-note.md`
6
6
  * (v0.7 follow-up to v0.6.0's deferred "Near-horizon Kretschmann"
7
7
  * item). Schwarzschild coordinates have a coordinate singularity at
8
8
  * `r = r_s` (the event horizon); `g_rr = 1/(1−r_s/r) → ∞`. The
@@ -66,7 +66,13 @@ function schwarzschildRs(M_kg) {
66
66
  * for a Schwarzschild black hole of mass `M_kg`.
67
67
  *
68
68
  * The returned function maps a 4-tuple coordinate point to the
69
- * 4×4 lower-lower metric. Closed-form; no FD; regular at r=r_s.
69
+ * 4×4 lower-lower metric as a row-major `Float64Array(16)`
70
+ * `flat[mu*4 + nu] = g_{μν}` (v0.9.0 O-6 migration, mirroring the
71
+ * v0.6.0 BR-2 christoffelFn convention). Closed-form; no FD;
72
+ * regular at r=r_s.
73
+ *
74
+ * BREAKING (v0.9.0) for subpath-import consumers: previously
75
+ * returned `number[][]`.
70
76
  *
71
77
  * @public
72
78
  */
@@ -81,12 +87,14 @@ export function painleveGullstrandGFn(M_kg) {
81
87
  const rho = r_s / r;
82
88
  const sqrtRho = Math.sqrt(rho);
83
89
  const sinTheta = Math.sin(theta);
84
- return [
85
- [-(1 - rho), sqrtRho, 0, 0],
86
- [sqrtRho, 1, 0, 0],
87
- [0, 0, r * r, 0],
88
- [0, 0, 0, r * r * sinTheta * sinTheta],
89
- ];
90
+ const out = new Float64Array(16);
91
+ out[0 * 4 + 0] = -(1 - rho);
92
+ out[0 * 4 + 1] = sqrtRho;
93
+ out[1 * 4 + 0] = sqrtRho;
94
+ out[1 * 4 + 1] = 1;
95
+ out[2 * 4 + 2] = r * r;
96
+ out[3 * 4 + 3] = r * r * sinTheta * sinTheta;
97
+ return out;
90
98
  };
91
99
  }
92
100
  /**
@@ -94,8 +102,13 @@ export function painleveGullstrandGFn(M_kg) {
94
102
  * θ, φ)`. Closed-form (2×2 block inverse on the (T, r) block,
95
103
  * det = -1; angular block is trivially diagonal).
96
104
  *
97
- * At r=r_s, g^rr=0 (the horizon's coordinate-regularity signature
98
- * in PG: NO divergence). At r→∞, g^rr → 1 (asymptotic flatness).
105
+ * Returns a row-major `Float64Array(16)` `flat[mu*4 + nu] = g^{μν}`
106
+ * (v0.9.0 O-6 migration). At r=r_s, g^rr=0 (the horizon's
107
+ * coordinate-regularity signature in PG: NO divergence). At r→∞,
108
+ * g^rr → 1 (asymptotic flatness).
109
+ *
110
+ * BREAKING (v0.9.0) for subpath-import consumers: previously
111
+ * returned `number[][]`.
99
112
  *
100
113
  * @public
101
114
  */
@@ -110,12 +123,14 @@ export function painleveGullstrandGInverseFn(M_kg) {
110
123
  const rho = r_s / r;
111
124
  const sqrtRho = Math.sqrt(rho);
112
125
  const sinTheta = Math.sin(theta);
113
- return [
114
- [-1, sqrtRho, 0, 0],
115
- [sqrtRho, 1 - rho, 0, 0],
116
- [0, 0, 1 / (r * r), 0],
117
- [0, 0, 0, 1 / (r * r * sinTheta * sinTheta)],
118
- ];
126
+ const out = new Float64Array(16);
127
+ out[0 * 4 + 0] = -1;
128
+ out[0 * 4 + 1] = sqrtRho;
129
+ out[1 * 4 + 0] = sqrtRho;
130
+ out[1 * 4 + 1] = 1 - rho;
131
+ out[2 * 4 + 2] = 1 / (r * r);
132
+ out[3 * 4 + 3] = 1 / (r * r * sinTheta * sinTheta);
133
+ return out;
119
134
  };
120
135
  }
121
136
  //# sourceMappingURL=painleve-gullstrand-metric.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"painleve-gullstrand-metric.js","sourceRoot":"","sources":["../../src/numerical/painleve-gullstrand-metric.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAY;IAEZ,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,SAAS,GAAG,CAAC,CAAwB;QAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACb,MAAM,IAAI,UAAU,CAAC,6CAA6C,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO;YACL,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;YAC3B,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,QAAQ,CAAC;SACvC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,4BAA4B,CAC1C,IAAY;IAEZ,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,SAAS,MAAM,CAAC,CAAwB;QAC7C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACb,MAAM,IAAI,UAAU,CAAC,oDAAoD,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO;YACL,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;YACnB,CAAC,OAAO,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACxB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACtB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;SAC7C,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"painleve-gullstrand-metric.js","sourceRoot":"","sources":["../../src/numerical/painleve-gullstrand-metric.ts"],"names":[],"mappings":"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"}