universal-physics-tensor 0.5.0 → 0.7.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/README.md +66 -105
- package/dist/bridges/catalog-adapter.d.ts +116 -0
- package/dist/bridges/catalog-adapter.d.ts.map +1 -0
- package/dist/bridges/catalog-adapter.js +302 -0
- package/dist/bridges/catalog-adapter.js.map +1 -0
- package/dist/bridges/equations/_be-helpers.d.ts +145 -0
- package/dist/bridges/equations/_be-helpers.d.ts.map +1 -0
- package/dist/bridges/equations/_be-helpers.js +179 -0
- package/dist/bridges/equations/_be-helpers.js.map +1 -0
- package/dist/bridges/equations/be-11-decoherence-master.d.ts +1 -2
- package/dist/bridges/equations/be-11-decoherence-master.d.ts.map +1 -1
- package/dist/bridges/equations/be-11-decoherence-master.js +9 -20
- package/dist/bridges/equations/be-11-decoherence-master.js.map +1 -1
- package/dist/bridges/equations/be-12-coherence-length.d.ts +7 -1
- package/dist/bridges/equations/be-12-coherence-length.d.ts.map +1 -1
- package/dist/bridges/equations/be-12-coherence-length.js +8 -16
- package/dist/bridges/equations/be-12-coherence-length.js.map +1 -1
- package/dist/bridges/equations/be-13-einstein-trace.d.ts +51 -3
- package/dist/bridges/equations/be-13-einstein-trace.d.ts.map +1 -1
- package/dist/bridges/equations/be-13-einstein-trace.js +74 -17
- package/dist/bridges/equations/be-13-einstein-trace.js.map +1 -1
- package/dist/bridges/equations/be-14-ryu-takayanagi.d.ts +10 -4
- package/dist/bridges/equations/be-14-ryu-takayanagi.d.ts.map +1 -1
- package/dist/bridges/equations/be-14-ryu-takayanagi.js +6 -17
- package/dist/bridges/equations/be-14-ryu-takayanagi.js.map +1 -1
- package/dist/bridges/equations/be-15-emergence.d.ts +7 -1
- package/dist/bridges/equations/be-15-emergence.d.ts.map +1 -1
- package/dist/bridges/equations/be-15-emergence.js +12 -22
- package/dist/bridges/equations/be-15-emergence.js.map +1 -1
- package/dist/bridges/equations/be-16-landauer.d.ts +7 -1
- package/dist/bridges/equations/be-16-landauer.d.ts.map +1 -1
- package/dist/bridges/equations/be-16-landauer.js +5 -13
- package/dist/bridges/equations/be-16-landauer.js.map +1 -1
- package/dist/bridges/equations/be-17-einstein-cartan.d.ts +26 -13
- package/dist/bridges/equations/be-17-einstein-cartan.d.ts.map +1 -1
- package/dist/bridges/equations/be-17-einstein-cartan.js +28 -31
- package/dist/bridges/equations/be-17-einstein-cartan.js.map +1 -1
- package/dist/bridges/equations/be-18-higgs-mass.d.ts +7 -1
- package/dist/bridges/equations/be-18-higgs-mass.d.ts.map +1 -1
- package/dist/bridges/equations/be-18-higgs-mass.js +5 -16
- package/dist/bridges/equations/be-18-higgs-mass.js.map +1 -1
- package/dist/bridges/equations/be-19-quantum-bounce.d.ts +38 -3
- package/dist/bridges/equations/be-19-quantum-bounce.d.ts.map +1 -1
- package/dist/bridges/equations/be-19-quantum-bounce.js +69 -20
- package/dist/bridges/equations/be-19-quantum-bounce.js.map +1 -1
- package/dist/bridges/equations/be-20-vacuum-energy.d.ts +20 -1
- package/dist/bridges/equations/be-20-vacuum-energy.d.ts.map +1 -1
- package/dist/bridges/equations/be-20-vacuum-energy.js +36 -15
- package/dist/bridges/equations/be-20-vacuum-energy.js.map +1 -1
- package/dist/bridges/equations/be-21-kss-bound.d.ts +2 -0
- package/dist/bridges/equations/be-21-kss-bound.d.ts.map +1 -1
- package/dist/bridges/equations/be-21-kss-bound.js +4 -10
- package/dist/bridges/equations/be-21-kss-bound.js.map +1 -1
- package/dist/bridges/equations/be-22-topological-entanglement.d.ts +6 -9
- package/dist/bridges/equations/be-22-topological-entanglement.d.ts.map +1 -1
- package/dist/bridges/equations/be-22-topological-entanglement.js +9 -21
- package/dist/bridges/equations/be-22-topological-entanglement.js.map +1 -1
- package/dist/bridges/equations/be-23-syk-planckian.d.ts +7 -1
- package/dist/bridges/equations/be-23-syk-planckian.d.ts.map +1 -1
- package/dist/bridges/equations/be-23-syk-planckian.js +11 -25
- package/dist/bridges/equations/be-23-syk-planckian.js.map +1 -1
- package/dist/bridges/equations/be-24-foerster-fret.d.ts +7 -1
- package/dist/bridges/equations/be-24-foerster-fret.d.ts.map +1 -1
- package/dist/bridges/equations/be-24-foerster-fret.js +8 -16
- package/dist/bridges/equations/be-24-foerster-fret.js.map +1 -1
- package/dist/bridges/equations/be-25-iit-phi.d.ts +7 -1
- package/dist/bridges/equations/be-25-iit-phi.d.ts.map +1 -1
- package/dist/bridges/equations/be-25-iit-phi.js +12 -16
- package/dist/bridges/equations/be-25-iit-phi.js.map +1 -1
- package/dist/bridges/equations/be-25-orch-or.d.ts +6 -3
- package/dist/bridges/equations/be-25-orch-or.d.ts.map +1 -1
- package/dist/bridges/equations/be-25-orch-or.js +8 -17
- package/dist/bridges/equations/be-25-orch-or.js.map +1 -1
- package/dist/bridges/equations/be-26-dna-tunneling.d.ts +6 -3
- package/dist/bridges/equations/be-26-dna-tunneling.d.ts.map +1 -1
- package/dist/bridges/equations/be-26-dna-tunneling.js +11 -26
- package/dist/bridges/equations/be-26-dna-tunneling.js.map +1 -1
- package/dist/bridges/equations/be-27-effective-temperature.d.ts +7 -1
- package/dist/bridges/equations/be-27-effective-temperature.d.ts.map +1 -1
- package/dist/bridges/equations/be-27-effective-temperature.js +8 -16
- package/dist/bridges/equations/be-27-effective-temperature.js.map +1 -1
- package/dist/bridges/equations/be-28-onsager-entropy-production.d.ts +7 -1
- package/dist/bridges/equations/be-28-onsager-entropy-production.d.ts.map +1 -1
- package/dist/bridges/equations/be-28-onsager-entropy-production.js +9 -13
- package/dist/bridges/equations/be-28-onsager-entropy-production.js.map +1 -1
- package/dist/bridges/equations/be-29-jarzynski.d.ts +7 -1
- package/dist/bridges/equations/be-29-jarzynski.d.ts.map +1 -1
- package/dist/bridges/equations/be-29-jarzynski.js +8 -13
- package/dist/bridges/equations/be-29-jarzynski.js.map +1 -1
- package/dist/bridges/equations/be-30-flm-first-law.d.ts +11 -2
- package/dist/bridges/equations/be-30-flm-first-law.d.ts.map +1 -1
- package/dist/bridges/equations/be-30-flm-first-law.js +10 -21
- package/dist/bridges/equations/be-30-flm-first-law.js.map +1 -1
- package/dist/bridges/equations/be-31-causal-set-bd.d.ts +7 -1
- package/dist/bridges/equations/be-31-causal-set-bd.d.ts.map +1 -1
- package/dist/bridges/equations/be-31-causal-set-bd.js +11 -25
- package/dist/bridges/equations/be-31-causal-set-bd.js.map +1 -1
- package/dist/bridges/equations/be-32-quantum-reference-frame.d.ts +6 -9
- package/dist/bridges/equations/be-32-quantum-reference-frame.d.ts.map +1 -1
- package/dist/bridges/equations/be-32-quantum-reference-frame.js +8 -18
- package/dist/bridges/equations/be-32-quantum-reference-frame.js.map +1 -1
- package/dist/bridges/equations/be-33-hertz-millis.d.ts +53 -28
- package/dist/bridges/equations/be-33-hertz-millis.d.ts.map +1 -1
- package/dist/bridges/equations/be-33-hertz-millis.js +55 -51
- package/dist/bridges/equations/be-33-hertz-millis.js.map +1 -1
- package/dist/bridges/equations/be-34-kibble-zurek.d.ts +6 -3
- package/dist/bridges/equations/be-34-kibble-zurek.d.ts.map +1 -1
- package/dist/bridges/equations/be-34-kibble-zurek.js +15 -26
- package/dist/bridges/equations/be-34-kibble-zurek.js.map +1 -1
- package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts +6 -9
- package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts.map +1 -1
- package/dist/bridges/equations/be-35-conformal-bootstrap.js +9 -21
- package/dist/bridges/equations/be-35-conformal-bootstrap.js.map +1 -1
- package/dist/bridges/equations/be-36-gw-speed-bound.d.ts +7 -1
- package/dist/bridges/equations/be-36-gw-speed-bound.d.ts.map +1 -1
- package/dist/bridges/equations/be-36-gw-speed-bound.js +5 -13
- package/dist/bridges/equations/be-36-gw-speed-bound.js.map +1 -1
- package/dist/bridges/equations/be-37-shapiro-delay.d.ts +4 -2
- package/dist/bridges/equations/be-37-shapiro-delay.d.ts.map +1 -1
- package/dist/bridges/equations/be-37-shapiro-delay.js +22 -37
- package/dist/bridges/equations/be-37-shapiro-delay.js.map +1 -1
- package/dist/bridges/equations/be-38-mond.d.ts +7 -1
- package/dist/bridges/equations/be-38-mond.d.ts.map +1 -1
- package/dist/bridges/equations/be-38-mond.js +9 -19
- package/dist/bridges/equations/be-38-mond.js.map +1 -1
- package/dist/bridges/equations/be-39-asymptotic-safety.d.ts +66 -2
- package/dist/bridges/equations/be-39-asymptotic-safety.d.ts.map +1 -1
- package/dist/bridges/equations/be-39-asymptotic-safety.js +128 -20
- package/dist/bridges/equations/be-39-asymptotic-safety.js.map +1 -1
- package/dist/bridges/equations/be-40-composite-higgs.d.ts +7 -1
- package/dist/bridges/equations/be-40-composite-higgs.d.ts.map +1 -1
- package/dist/bridges/equations/be-40-composite-higgs.js +10 -22
- package/dist/bridges/equations/be-40-composite-higgs.js.map +1 -1
- package/dist/bridges/equations/be-41-swampland.d.ts +6 -3
- package/dist/bridges/equations/be-41-swampland.d.ts.map +1 -1
- package/dist/bridges/equations/be-41-swampland.js +11 -23
- package/dist/bridges/equations/be-41-swampland.js.map +1 -1
- package/dist/bridges/equations/be-42-hawking-temperature.d.ts +2 -0
- package/dist/bridges/equations/be-42-hawking-temperature.d.ts.map +1 -1
- package/dist/bridges/equations/be-42-hawking-temperature.js +5 -13
- package/dist/bridges/equations/be-42-hawking-temperature.js.map +1 -1
- package/dist/bridges/equations/be-43-er-epr.d.ts +7 -1
- package/dist/bridges/equations/be-43-er-epr.d.ts.map +1 -1
- package/dist/bridges/equations/be-43-er-epr.js +5 -13
- package/dist/bridges/equations/be-43-er-epr.js.map +1 -1
- package/dist/bridges/equations/be-44-soft-hair.d.ts +7 -1
- package/dist/bridges/equations/be-44-soft-hair.d.ts.map +1 -1
- package/dist/bridges/equations/be-44-soft-hair.js +5 -13
- package/dist/bridges/equations/be-44-soft-hair.js.map +1 -1
- package/dist/bridges/equations/be-45-tcc.d.ts +7 -1
- package/dist/bridges/equations/be-45-tcc.d.ts.map +1 -1
- package/dist/bridges/equations/be-45-tcc.js +10 -22
- package/dist/bridges/equations/be-45-tcc.js.map +1 -1
- package/dist/bridges/equations/be-46-multiverse-measure.d.ts +7 -1
- package/dist/bridges/equations/be-46-multiverse-measure.d.ts.map +1 -1
- package/dist/bridges/equations/be-46-multiverse-measure.js +9 -19
- package/dist/bridges/equations/be-46-multiverse-measure.js.map +1 -1
- package/dist/bridges/equations/be-47-bbn-dark-sector.d.ts +7 -1
- package/dist/bridges/equations/be-47-bbn-dark-sector.d.ts.map +1 -1
- package/dist/bridges/equations/be-47-bbn-dark-sector.js +14 -16
- package/dist/bridges/equations/be-47-bbn-dark-sector.js.map +1 -1
- package/dist/bridges/equations/be-48-grw-localization.d.ts +7 -1
- package/dist/bridges/equations/be-48-grw-localization.d.ts.map +1 -1
- package/dist/bridges/equations/be-48-grw-localization.js +15 -20
- package/dist/bridges/equations/be-48-grw-localization.js.map +1 -1
- package/dist/bridges/equations/be-49-quantum-darwinism.d.ts +7 -1
- package/dist/bridges/equations/be-49-quantum-darwinism.d.ts.map +1 -1
- package/dist/bridges/equations/be-49-quantum-darwinism.js +10 -22
- package/dist/bridges/equations/be-49-quantum-darwinism.js.map +1 -1
- package/dist/bridges/equations/be-50-wheeler-feynman.d.ts +42 -12
- package/dist/bridges/equations/be-50-wheeler-feynman.d.ts.map +1 -1
- package/dist/bridges/equations/be-50-wheeler-feynman.js +84 -20
- package/dist/bridges/equations/be-50-wheeler-feynman.js.map +1 -1
- package/dist/bridges/equations/be-53-yang-mills-beta.d.ts +158 -0
- package/dist/bridges/equations/be-53-yang-mills-beta.d.ts.map +1 -0
- package/dist/bridges/equations/be-53-yang-mills-beta.js +175 -0
- package/dist/bridges/equations/be-53-yang-mills-beta.js.map +1 -0
- package/dist/bridges/equations/be-54-randall-sundrum-brane.d.ts +117 -0
- package/dist/bridges/equations/be-54-randall-sundrum-brane.d.ts.map +1 -0
- package/dist/bridges/equations/be-54-randall-sundrum-brane.js +213 -0
- package/dist/bridges/equations/be-54-randall-sundrum-brane.js.map +1 -0
- package/dist/bridges/gravitational-lensing.d.ts +13 -2
- package/dist/bridges/gravitational-lensing.d.ts.map +1 -1
- package/dist/bridges/gravitational-lensing.js +17 -6
- package/dist/bridges/gravitational-lensing.js.map +1 -1
- package/dist/bridges/index.d.ts +40 -1
- package/dist/bridges/index.d.ts.map +1 -1
- package/dist/bridges/index.js +130 -48
- package/dist/bridges/index.js.map +1 -1
- package/dist/bridges/perihelion-precession-labeled.d.ts +46 -0
- package/dist/bridges/perihelion-precession-labeled.d.ts.map +1 -0
- package/dist/bridges/perihelion-precession-labeled.js +54 -0
- package/dist/bridges/perihelion-precession-labeled.js.map +1 -0
- package/dist/bridges/perihelion-precession.d.ts +18 -3
- package/dist/bridges/perihelion-precession.d.ts.map +1 -1
- package/dist/bridges/perihelion-precession.js +22 -8
- package/dist/bridges/perihelion-precession.js.map +1 -1
- package/dist/core/axes-registry.d.ts +67 -0
- package/dist/core/axes-registry.d.ts.map +1 -0
- package/dist/core/axes-registry.js +75 -0
- package/dist/core/axes-registry.js.map +1 -0
- package/dist/core/cell.d.ts +176 -0
- package/dist/core/cell.d.ts.map +1 -0
- package/dist/core/cell.js +166 -0
- package/dist/core/cell.js.map +1 -0
- package/dist/core/constants.d.ts +50 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +50 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/flux-rules.d.ts +176 -0
- package/dist/core/flux-rules.d.ts.map +1 -0
- package/dist/core/flux-rules.js +329 -0
- package/dist/core/flux-rules.js.map +1 -0
- package/dist/core/labeled-tensor.d.ts +143 -0
- package/dist/core/labeled-tensor.d.ts.map +1 -0
- package/dist/core/labeled-tensor.js +275 -0
- package/dist/core/labeled-tensor.js.map +1 -0
- package/dist/core/regime-registry.d.ts +169 -0
- package/dist/core/regime-registry.d.ts.map +1 -0
- package/dist/core/regime-registry.js +174 -0
- package/dist/core/regime-registry.js.map +1 -0
- package/dist/core/regime-rule-install.d.ts +26 -0
- package/dist/core/regime-rule-install.d.ts.map +1 -0
- package/dist/core/regime-rule-install.js +90 -0
- package/dist/core/regime-rule-install.js.map +1 -0
- package/dist/core/regimes-builtins.d.ts +22 -0
- package/dist/core/regimes-builtins.d.ts.map +1 -0
- package/dist/core/regimes-builtins.js +96 -0
- package/dist/core/regimes-builtins.js.map +1 -0
- package/dist/core/tensor.d.ts +112 -0
- package/dist/core/tensor.d.ts.map +1 -1
- package/dist/core/tensor.js +366 -0
- package/dist/core/tensor.js.map +1 -1
- package/dist/core/types.d.ts +7 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/universal-index.d.ts +97 -0
- package/dist/core/universal-index.d.ts.map +1 -0
- package/dist/core/universal-index.js +70 -0
- package/dist/core/universal-index.js.map +1 -0
- package/dist/diff/bridge-gradient.d.ts +94 -0
- package/dist/diff/bridge-gradient.d.ts.map +1 -0
- package/dist/diff/bridge-gradient.js +83 -0
- package/dist/diff/bridge-gradient.js.map +1 -0
- package/dist/diff/bridge-specs.d.ts +68 -0
- package/dist/diff/bridge-specs.d.ts.map +1 -0
- package/dist/diff/bridge-specs.js +96 -0
- package/dist/diff/bridge-specs.js.map +1 -0
- package/dist/dimensional/bridge-check.d.ts.map +1 -1
- package/dist/dimensional/bridge-check.js +8 -0
- package/dist/dimensional/bridge-check.js.map +1 -1
- package/dist/dimensional/connection-validators.d.ts +13 -6
- package/dist/dimensional/connection-validators.d.ts.map +1 -1
- package/dist/dimensional/connection-validators.js +1 -1
- package/dist/dimensional/connection-validators.js.map +1 -1
- package/dist/dimensional/curvature-composite.d.ts +90 -0
- package/dist/dimensional/curvature-composite.d.ts.map +1 -0
- package/dist/dimensional/curvature-composite.js +57 -0
- package/dist/dimensional/curvature-composite.js.map +1 -0
- package/dist/dimensional/curvature-invariants.d.ts +90 -0
- package/dist/dimensional/curvature-invariants.d.ts.map +1 -0
- package/dist/dimensional/curvature-invariants.js +64 -0
- package/dist/dimensional/curvature-invariants.js.map +1 -0
- package/dist/dimensional/curvature.d.ts +82 -41
- package/dist/dimensional/curvature.d.ts.map +1 -1
- package/dist/dimensional/curvature.js +19 -11
- package/dist/dimensional/curvature.js.map +1 -1
- package/dist/dimensional/einstein-equation.d.ts +126 -0
- package/dist/dimensional/einstein-equation.d.ts.map +1 -0
- package/dist/dimensional/einstein-equation.js +122 -0
- package/dist/dimensional/einstein-equation.js.map +1 -0
- package/dist/dimensional/field-equation-helpers.d.ts +82 -0
- package/dist/dimensional/field-equation-helpers.d.ts.map +1 -0
- package/dist/dimensional/field-equation-helpers.js +123 -0
- package/dist/dimensional/field-equation-helpers.js.map +1 -0
- package/dist/dimensional/friedmann-equation.d.ts +148 -0
- package/dist/dimensional/friedmann-equation.d.ts.map +1 -0
- package/dist/dimensional/friedmann-equation.js +150 -0
- package/dist/dimensional/friedmann-equation.js.map +1 -0
- package/dist/dimensional/gauge-field.d.ts +182 -0
- package/dist/dimensional/gauge-field.d.ts.map +1 -0
- package/dist/dimensional/gauge-field.js +134 -0
- package/dist/dimensional/gauge-field.js.map +1 -0
- package/dist/dimensional/killing-validators.d.ts +94 -0
- package/dist/dimensional/killing-validators.d.ts.map +1 -0
- package/dist/dimensional/killing-validators.js +66 -0
- package/dist/dimensional/killing-validators.js.map +1 -0
- package/dist/dimensional/klein-gordon-equation.d.ts +113 -0
- package/dist/dimensional/klein-gordon-equation.d.ts.map +1 -0
- package/dist/dimensional/klein-gordon-equation.js +98 -0
- package/dist/dimensional/klein-gordon-equation.js.map +1 -0
- package/dist/dimensional/rg-flow.d.ts +156 -0
- package/dist/dimensional/rg-flow.d.ts.map +1 -0
- package/dist/dimensional/rg-flow.js +150 -0
- package/dist/dimensional/rg-flow.js.map +1 -0
- package/dist/dimensional/stress-energy-validators.d.ts +74 -0
- package/dist/dimensional/stress-energy-validators.d.ts.map +1 -0
- package/dist/dimensional/stress-energy-validators.js +47 -0
- package/dist/dimensional/stress-energy-validators.js.map +1 -0
- package/dist/dimensional/tensor-trace.d.ts +128 -0
- package/dist/dimensional/tensor-trace.d.ts.map +1 -0
- package/dist/dimensional/tensor-trace.js +95 -0
- package/dist/dimensional/tensor-trace.js.map +1 -0
- package/dist/dimensional/tensor.d.ts +6 -8
- package/dist/dimensional/tensor.d.ts.map +1 -1
- package/dist/dimensional/tensor.js +3 -1
- package/dist/dimensional/tensor.js.map +1 -1
- package/dist/dimensional/validator-registry.d.ts +90 -0
- package/dist/dimensional/validator-registry.d.ts.map +1 -0
- package/dist/dimensional/validator-registry.js +131 -0
- package/dist/dimensional/validator-registry.js.map +1 -0
- package/dist/dimensional/validator.d.ts +12 -2
- package/dist/dimensional/validator.d.ts.map +1 -1
- package/dist/dimensional/validator.js +60 -75
- package/dist/dimensional/validator.js.map +1 -1
- package/dist/dimensional/weyl-validators.d.ts +84 -0
- package/dist/dimensional/weyl-validators.d.ts.map +1 -0
- package/dist/dimensional/weyl-validators.js +84 -0
- package/dist/dimensional/weyl-validators.js.map +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -1
- package/dist/numerical/be37-covariant-eikonal.d.ts +37 -2
- package/dist/numerical/be37-covariant-eikonal.d.ts.map +1 -1
- package/dist/numerical/be37-covariant-eikonal.js +51 -14
- package/dist/numerical/be37-covariant-eikonal.js.map +1 -1
- package/dist/numerical/christoffel-flat.d.ts +49 -0
- package/dist/numerical/christoffel-flat.d.ts.map +1 -0
- package/dist/numerical/christoffel-flat.js +86 -0
- package/dist/numerical/christoffel-flat.js.map +1 -0
- package/dist/numerical/curvature-lowering-helpers.d.ts +76 -57
- package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.js +203 -64
- package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
- package/dist/numerical/derivative-lowering.d.ts +67 -0
- package/dist/numerical/derivative-lowering.d.ts.map +1 -0
- package/dist/numerical/derivative-lowering.js +243 -0
- package/dist/numerical/derivative-lowering.js.map +1 -0
- package/dist/numerical/einstein-equation.d.ts +106 -0
- package/dist/numerical/einstein-equation.d.ts.map +1 -0
- package/dist/numerical/einstein-equation.js +172 -0
- package/dist/numerical/einstein-equation.js.map +1 -0
- package/dist/numerical/engine-registry.js +4 -4
- package/dist/numerical/engine-registry.js.map +1 -1
- package/dist/numerical/geodesic-integrator.d.ts +7 -4
- package/dist/numerical/geodesic-integrator.d.ts.map +1 -1
- package/dist/numerical/geodesic-integrator.js +5 -1
- package/dist/numerical/geodesic-integrator.js.map +1 -1
- package/dist/numerical/gl4-integrator.d.ts +57 -9
- package/dist/numerical/gl4-integrator.d.ts.map +1 -1
- package/dist/numerical/gl4-integrator.js +63 -16
- package/dist/numerical/gl4-integrator.js.map +1 -1
- package/dist/numerical/killing.d.ts +157 -0
- package/dist/numerical/killing.d.ts.map +1 -0
- package/dist/numerical/killing.js +242 -0
- package/dist/numerical/killing.js.map +1 -0
- package/dist/numerical/kretschmann.d.ts +62 -0
- package/dist/numerical/kretschmann.d.ts.map +1 -0
- package/dist/numerical/kretschmann.js +88 -0
- package/dist/numerical/kretschmann.js.map +1 -0
- package/dist/numerical/lowering-utils.d.ts +47 -0
- package/dist/numerical/lowering-utils.d.ts.map +1 -0
- package/dist/numerical/lowering-utils.js +64 -0
- package/dist/numerical/lowering-utils.js.map +1 -0
- package/dist/numerical/lowering.d.ts +1 -29
- package/dist/numerical/lowering.d.ts.map +1 -1
- package/dist/numerical/lowering.js +226 -415
- package/dist/numerical/lowering.js.map +1 -1
- package/dist/numerical/mathts-engine.js +8 -8
- package/dist/numerical/mathts-engine.js.map +1 -1
- package/dist/numerical/metric-inverse.d.ts.map +1 -1
- package/dist/numerical/metric-inverse.js +28 -0
- package/dist/numerical/metric-inverse.js.map +1 -1
- package/dist/numerical/null-ic.d.ts +40 -0
- package/dist/numerical/null-ic.d.ts.map +1 -0
- package/dist/numerical/null-ic.js +50 -0
- package/dist/numerical/null-ic.js.map +1 -0
- package/dist/numerical/null-ray-integrator.d.ts +3 -2
- package/dist/numerical/null-ray-integrator.d.ts.map +1 -1
- package/dist/numerical/null-ray-integrator.js +6 -3
- package/dist/numerical/null-ray-integrator.js.map +1 -1
- package/dist/numerical/painleve-gullstrand-metric.d.ts +74 -0
- package/dist/numerical/painleve-gullstrand-metric.d.ts.map +1 -0
- package/dist/numerical/painleve-gullstrand-metric.js +121 -0
- package/dist/numerical/painleve-gullstrand-metric.js.map +1 -0
- package/dist/numerical/pderiv.d.ts +35 -3
- package/dist/numerical/pderiv.d.ts.map +1 -1
- package/dist/numerical/pderiv.js +47 -12
- package/dist/numerical/pderiv.js.map +1 -1
- package/dist/numerical/perihelion-finder.d.ts +57 -0
- package/dist/numerical/perihelion-finder.d.ts.map +1 -1
- package/dist/numerical/perihelion-finder.js +57 -0
- package/dist/numerical/perihelion-finder.js.map +1 -1
- package/dist/numerical/tensor-engine.d.ts +2 -2
- package/dist/numerical/tensor-engine.d.ts.map +1 -1
- package/dist/numerical/weyl-lowering.d.ts +60 -0
- package/dist/numerical/weyl-lowering.d.ts.map +1 -0
- package/dist/numerical/weyl-lowering.js +111 -0
- package/dist/numerical/weyl-lowering.js.map +1 -0
- package/package.json +9 -7
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Killing-equation numerical verification (v0.6.0 Phase 1, Task 1.3).
|
|
3
|
+
*
|
|
4
|
+
* F-3 reconciliation (hybrid impl):
|
|
5
|
+
* - Uses EXACT symbolic Christoffels for all Γ terms.
|
|
6
|
+
* - For the outer ∂_μ ξ_α = (∂_μ g_{αβ}) ξ^β + g_{αβ} ∂_μ ξ^β, two paths:
|
|
7
|
+
* 1. constantKilling=true (default for constant ξ^β): uses metric
|
|
8
|
+
* compatibility ∂_μ g_{αβ} = Γ^λ_{μα} g_{λβ} + Γ^λ_{μβ} g_{αλ} to
|
|
9
|
+
* derive ∇_μ ξ_α = Γ^λ_{μβ} g_{αλ} ξ^β without any FD. Achieves
|
|
10
|
+
* machine-precision (~1e-15 or exact 0) for Schwarzschild.
|
|
11
|
+
* 2. constantKilling=false with dMetricFn supplied: uses exact analytic
|
|
12
|
+
* ∂_μ g_{αβ} + FD for ∂_μ ξ^β. Handles spatially-varying Killing fields.
|
|
13
|
+
* 3. Fallback FD path: differentiates ξ_α(y) = g_{αβ}(y) ξ^β(y) via 4th-
|
|
14
|
+
* order FD. WARNING: suffers c²-cancellation noise for SI-scaled metrics.
|
|
15
|
+
*
|
|
16
|
+
* The Killing equation (Carroll Eq. 3.174):
|
|
17
|
+
* ∇_μ ξ_ν + ∇_ν ξ_μ = 0
|
|
18
|
+
*
|
|
19
|
+
* where ∇_μ ξ_ν = ∂_μ ξ_ν − Γ^λ_{μν} ξ_λ (covariant derivative of the
|
|
20
|
+
* lowered Killing field ξ_ν = g_{νβ} ξ^β).
|
|
21
|
+
*
|
|
22
|
+
* @module numerical/killing
|
|
23
|
+
*/
|
|
24
|
+
import { pderivNumericalFn } from './pderiv.js';
|
|
25
|
+
/**
|
|
26
|
+
* Compute `||∇_μ ξ_ν + ∇_ν ξ_μ||_∞` at point `x`, returning the maximum
|
|
27
|
+
* absolute symmetrized residual over all 16 (μ, ν) pairs.
|
|
28
|
+
*
|
|
29
|
+
* For constant Killing fields (constantKilling=true, the default):
|
|
30
|
+
* Uses metric compatibility to derive ∇_μ ξ_α = Γ^λ_{μβ} g_{αλ} ξ^β
|
|
31
|
+
* algebraically — no FD at all. Achieves machine-precision residuals
|
|
32
|
+
* for Schwarzschild Killing fields in SI units.
|
|
33
|
+
*
|
|
34
|
+
* @param killingFn - Factory returning ξ^μ(x) (upper index).
|
|
35
|
+
* @param metricFn - Covariant metric g_{μν}(x).
|
|
36
|
+
* @param christoffelAt - Christoffel accessor factory (layout-agnostic).
|
|
37
|
+
* @param x - Evaluation point [t, r, θ, φ].
|
|
38
|
+
* @param opts - Optional overrides (see {@link KillingEquationOptions}).
|
|
39
|
+
* @returns Maximum absolute residual of the symmetrized Killing equation.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* import { verifyKillingEquation } from 'universal-physics-tensor';
|
|
44
|
+
* import {
|
|
45
|
+
* schwarzschildKillingT,
|
|
46
|
+
* schwarzschildGFn,
|
|
47
|
+
* schwarzschildChristoffelFn,
|
|
48
|
+
* schwarzschildRs,
|
|
49
|
+
* } from '../tests/fixtures/schwarzschild.js'; // or your own metric closures
|
|
50
|
+
*
|
|
51
|
+
* const M = 1.989e30; // solar mass, kg
|
|
52
|
+
* const r_s = schwarzschildRs(M);
|
|
53
|
+
* const x: [number, number, number, number] = [0, 5 * r_s, Math.PI / 2, 0];
|
|
54
|
+
*
|
|
55
|
+
* // Christoffel accessor wrapping the flat Float64Array layout (BR-2)
|
|
56
|
+
* const gammaFn = schwarzschildChristoffelFn(M);
|
|
57
|
+
* const christoffelAccessAt = (pt: [number, number, number, number]) => {
|
|
58
|
+
* const arr = gammaFn(pt);
|
|
59
|
+
* return (lam: number, mu: number, nu: number) => arr[16 * lam + 4 * mu + nu];
|
|
60
|
+
* };
|
|
61
|
+
*
|
|
62
|
+
* const residual = verifyKillingEquation(
|
|
63
|
+
* schwarzschildKillingT,
|
|
64
|
+
* schwarzschildGFn(M),
|
|
65
|
+
* christoffelAccessAt,
|
|
66
|
+
* x,
|
|
67
|
+
* { constantKilling: true },
|
|
68
|
+
* );
|
|
69
|
+
* // residual < 1e-12 for the exact time-translation Killing field
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
* @public
|
|
73
|
+
*/
|
|
74
|
+
export function verifyKillingEquation(killingFn, metricFn, christoffelAt, x, opts = {}) {
|
|
75
|
+
const order = opts.order ?? 4;
|
|
76
|
+
const constantKilling = opts.constantKilling ?? true;
|
|
77
|
+
const xi = killingFn();
|
|
78
|
+
const g = metricFn(x);
|
|
79
|
+
const xiAtX = xi(x);
|
|
80
|
+
const Gamma = christoffelAt(x);
|
|
81
|
+
// Lowered Killing field: ξ_α = g_{αβ} ξ^β
|
|
82
|
+
const xiLower = [0, 0, 0, 0];
|
|
83
|
+
for (let a = 0; a < 4; a++) {
|
|
84
|
+
let s = 0;
|
|
85
|
+
for (let b = 0; b < 4; b++)
|
|
86
|
+
s += g[a][b] * xiAtX[b];
|
|
87
|
+
xiLower[a] = s;
|
|
88
|
+
}
|
|
89
|
+
// Covariant derivative ∇_μ ξ_α (4×4 matrix)
|
|
90
|
+
const cov = [
|
|
91
|
+
[0, 0, 0, 0],
|
|
92
|
+
[0, 0, 0, 0],
|
|
93
|
+
[0, 0, 0, 0],
|
|
94
|
+
[0, 0, 0, 0],
|
|
95
|
+
];
|
|
96
|
+
if (constantKilling) {
|
|
97
|
+
// Algebraic path (metric compatibility, ∂_μ ξ^β = 0):
|
|
98
|
+
// ∇_μ ξ_α = ∂_μ ξ_α − Γ^λ_{μα} ξ_λ
|
|
99
|
+
// where ∂_μ ξ_α = (Γ^λ_{μα} g_{λβ} + Γ^λ_{μβ} g_{αλ}) ξ^β
|
|
100
|
+
// cancelling Γ^λ_{μα} g_{λβ} ξ^β = Γ^λ_{μα} ξ_λ gives:
|
|
101
|
+
// ∇_μ ξ_α = Σ_β Σ_λ Γ^λ_{μβ} g_{αλ} ξ^β
|
|
102
|
+
//
|
|
103
|
+
// Symmetrized: ∇_μ ξ_α + ∇_α ξ_μ = Σ_β [Γ^λ_{μβ} g_{αλ} + Γ^λ_{αβ} g_{μλ}] ξ^β
|
|
104
|
+
// This is the Killing equation in terms of Christoffels only.
|
|
105
|
+
for (let mu = 0; mu < 4; mu++) {
|
|
106
|
+
for (let a = 0; a < 4; a++) {
|
|
107
|
+
let s = 0;
|
|
108
|
+
for (let lam = 0; lam < 4; lam++) {
|
|
109
|
+
for (let b = 0; b < 4; b++) {
|
|
110
|
+
s += Gamma(lam, mu, b) * g[a][lam] * xiAtX[b];
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
cov[mu][a] = s;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else if (opts.dMetricFn !== undefined) {
|
|
118
|
+
// Exact dMetricFn + FD path for spatially-varying Killing fields.
|
|
119
|
+
// ∂_μ ξ_α = (∂_μ g_{αβ}) ξ^β + g_{αβ} ∂_μ ξ^β
|
|
120
|
+
const dg = opts.dMetricFn(x);
|
|
121
|
+
// FD for ∂_μ ξ^β (upper components)
|
|
122
|
+
const dxiUpper = [
|
|
123
|
+
[0, 0, 0, 0],
|
|
124
|
+
[0, 0, 0, 0],
|
|
125
|
+
[0, 0, 0, 0],
|
|
126
|
+
[0, 0, 0, 0],
|
|
127
|
+
];
|
|
128
|
+
for (let b = 0; b < 4; b++) {
|
|
129
|
+
const xiUpperB = (y) => xi(y)[b];
|
|
130
|
+
for (let mu = 0; mu < 4; mu++) {
|
|
131
|
+
const raw = pderivNumericalFn(xiUpperB, x, mu, { order });
|
|
132
|
+
dxiUpper[mu][b] = typeof raw === 'number' ? raw : raw[0];
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
const partial = [
|
|
136
|
+
[0, 0, 0, 0],
|
|
137
|
+
[0, 0, 0, 0],
|
|
138
|
+
[0, 0, 0, 0],
|
|
139
|
+
[0, 0, 0, 0],
|
|
140
|
+
];
|
|
141
|
+
for (let mu = 0; mu < 4; mu++) {
|
|
142
|
+
for (let a = 0; a < 4; a++) {
|
|
143
|
+
let s = 0;
|
|
144
|
+
for (let b = 0; b < 4; b++) {
|
|
145
|
+
s += dg[mu][a][b] * xiAtX[b];
|
|
146
|
+
s += g[a][b] * dxiUpper[mu][b];
|
|
147
|
+
}
|
|
148
|
+
partial[mu][a] = s;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
for (let mu = 0; mu < 4; mu++) {
|
|
152
|
+
for (let a = 0; a < 4; a++) {
|
|
153
|
+
let connSum = 0;
|
|
154
|
+
for (let lam = 0; lam < 4; lam++)
|
|
155
|
+
connSum += Gamma(lam, mu, a) * xiLower[lam];
|
|
156
|
+
cov[mu][a] = partial[mu][a] - connSum;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
// Pure FD fallback: differentiate ξ_α(y) = g_{αβ}(y) ξ^β(y) numerically.
|
|
162
|
+
// WARNING: large-scale SI metrics (c²·g_tt ~ 6e16) produce cancellation
|
|
163
|
+
// noise at the ~1-10 absolute level. Use constantKilling=true for
|
|
164
|
+
// constant Schwarzschild Killing fields.
|
|
165
|
+
const partial = [
|
|
166
|
+
[0, 0, 0, 0],
|
|
167
|
+
[0, 0, 0, 0],
|
|
168
|
+
[0, 0, 0, 0],
|
|
169
|
+
[0, 0, 0, 0],
|
|
170
|
+
];
|
|
171
|
+
for (let a = 0; a < 4; a++) {
|
|
172
|
+
const xiLowerA = (y) => {
|
|
173
|
+
const gy = metricFn(y);
|
|
174
|
+
const xy = xi(y);
|
|
175
|
+
let s = 0;
|
|
176
|
+
for (let b = 0; b < 4; b++)
|
|
177
|
+
s += gy[a][b] * xy[b];
|
|
178
|
+
return s;
|
|
179
|
+
};
|
|
180
|
+
for (let mu = 0; mu < 4; mu++) {
|
|
181
|
+
const raw = pderivNumericalFn(xiLowerA, x, mu, { order });
|
|
182
|
+
partial[mu][a] = typeof raw === 'number' ? raw : raw[0];
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
for (let mu = 0; mu < 4; mu++) {
|
|
186
|
+
for (let a = 0; a < 4; a++) {
|
|
187
|
+
let connSum = 0;
|
|
188
|
+
for (let lam = 0; lam < 4; lam++)
|
|
189
|
+
connSum += Gamma(lam, mu, a) * xiLower[lam];
|
|
190
|
+
cov[mu][a] = partial[mu][a] - connSum;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// Symmetrize ∇_μ ξ_ν + ∇_ν ξ_μ and find max|·| over 16 pairs.
|
|
195
|
+
let maxResid = 0;
|
|
196
|
+
for (let mu = 0; mu < 4; mu++) {
|
|
197
|
+
for (let nu = 0; nu < 4; nu++) {
|
|
198
|
+
const sym = cov[mu][nu] + cov[nu][mu];
|
|
199
|
+
const ab = Math.abs(sym);
|
|
200
|
+
if (ab > maxResid)
|
|
201
|
+
maxResid = ab;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return maxResid;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Evaluate the conserved charge Q = ξ^μ p_μ at point x along a geodesic.
|
|
208
|
+
*
|
|
209
|
+
* Sign convention: raw contraction ξ^μ p_μ. For the time-translation
|
|
210
|
+
* Killing field in (−,+,+,+) signature, p_t < 0 for forward-time motion,
|
|
211
|
+
* so the physical energy of common usage is E = −Q (Carroll Eq. 8.30).
|
|
212
|
+
* Use `|ΔQ / Q|` for drift diagnostics to stay sign-agnostic.
|
|
213
|
+
*
|
|
214
|
+
* @param killingFn - Factory returning ξ^μ(x) (upper index).
|
|
215
|
+
* @param momentumLower - Co-momentum p_μ at the geodesic point (lower index).
|
|
216
|
+
* @param x - Geodesic coordinate [t, r, θ, φ].
|
|
217
|
+
* @returns Q = ξ^μ p_μ (dimensioned as energy if p is 4-momentum).
|
|
218
|
+
*
|
|
219
|
+
* @example
|
|
220
|
+
* ```typescript
|
|
221
|
+
* import { evaluateConservedCharge } from 'universal-physics-tensor';
|
|
222
|
+
* import { schwarzschildKillingT } from '../tests/fixtures/schwarzschild.js';
|
|
223
|
+
*
|
|
224
|
+
* // Co-momentum p_μ at a geodesic snapshot (p_t < 0 for forward-time motion)
|
|
225
|
+
* const pLower: [number, number, number, number] = [-8.988e16, 0, 0, 0];
|
|
226
|
+
* const x: [number, number, number, number] = [0, 1e7, Math.PI / 2, 0];
|
|
227
|
+
*
|
|
228
|
+
* const Q = evaluateConservedCharge(schwarzschildKillingT, pLower, x);
|
|
229
|
+
* // Q = ξ^t · p_t = 1 · p_t = p_t (energy with sign from metric)
|
|
230
|
+
* // Physical energy E = −Q (Carroll sign convention for (−,+,+,+))
|
|
231
|
+
* ```
|
|
232
|
+
*
|
|
233
|
+
* @public
|
|
234
|
+
*/
|
|
235
|
+
export function evaluateConservedCharge(killingFn, momentumLower, x) {
|
|
236
|
+
const xi = killingFn()(x);
|
|
237
|
+
let q = 0;
|
|
238
|
+
for (let m = 0; m < 4; m++)
|
|
239
|
+
q += xi[m] * momentumLower[m];
|
|
240
|
+
return q;
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=killing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"killing.js","sourceRoot":"","sources":["../../src/numerical/killing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AA0DhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAAoB,EACpB,QAAkB,EAClB,aAA8B,EAC9B,CAAO,EACP,OAA+B,EAAE;IAEjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC;IACrD,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IACvB,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAE/B,0CAA0C;IAC1C,MAAM,OAAO,GAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,4CAA4C;IAC5C,MAAM,GAAG,GAAe;QACtB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACZ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACZ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACZ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KACb,CAAC;IAEF,IAAI,eAAe,EAAE,CAAC;QACpB,sDAAsD;QACtD,qCAAqC;QACrC,4DAA4D;QAC5D,yDAAyD;QACzD,0CAA0C;QAC1C,EAAE;QACF,+EAA+E;QAC/E,8DAA8D;QAC9D,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;YAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,IAAI,CAAC,GAAG,CAAC,CAAC;gBACV,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;oBACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC3B,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAChD,CAAC;gBACH,CAAC;gBACD,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;SAAM,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACxC,kEAAkE;QAClE,8CAA8C;QAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAE7B,oCAAoC;QACpC,MAAM,QAAQ,GAAe;YAC3B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACZ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACZ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACZ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SACb,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,CAAC,CAAwB,EAAU,EAAE,CAAC,EAAE,CAAC,CAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;gBAC9B,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1D,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,GAAgB,CAAC,CAAC,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAe;YAC1B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACZ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACZ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACZ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SACb,CAAC;QACF,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;YAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,IAAI,CAAC,GAAG,CAAC,CAAC;gBACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC3B,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC7B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjC,CAAC;gBACD,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;YAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,IAAI,OAAO,GAAG,CAAC,CAAC;gBAChB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE;oBAAE,OAAO,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC9E,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,yEAAyE;QACzE,wEAAwE;QACxE,kEAAkE;QAClE,yCAAyC;QACzC,MAAM,OAAO,GAAe;YAC1B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACZ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACZ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACZ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SACb,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,CAAC,CAAwB,EAAU,EAAE;gBACpD,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACvB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAS,CAAC,CAAC;gBACzB,IAAI,CAAC,GAAG,CAAC,CAAC;gBACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;oBAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBAClD,OAAO,CAAC,CAAC;YACX,CAAC,CAAC;YACF,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;gBAC9B,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1D,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,GAAgB,CAAC,CAAC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QACD,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;YAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,IAAI,OAAO,GAAG,CAAC,CAAC;gBAChB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE;oBAAE,OAAO,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC9E,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAED,8DAA8D;IAC9D,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;QAC9B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACtC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,EAAE,GAAG,QAAQ;gBAAE,QAAQ,GAAG,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAAoB,EACpB,aAAmB,EACnB,CAAO;IAEP,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kretschmann scalar numerical contraction (v0.6.0 Phase 3, Task 3.6).
|
|
3
|
+
*
|
|
4
|
+
* Computes K = R_{ρσμν} R^{ρσμν} from the fully-lowered Riemann tensor and
|
|
5
|
+
* the inverse metric by raising all four indices on the second Riemann factor.
|
|
6
|
+
*
|
|
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.
|
|
13
|
+
*
|
|
14
|
+
* @module numerical/kretschmann
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Kretschmann invariant K = R_{ρσμν} R^{ρσμν}.
|
|
18
|
+
*
|
|
19
|
+
* Algorithm:
|
|
20
|
+
* 1. Raise all four indices on the second Riemann factor:
|
|
21
|
+
* R^{ρσμν} = g^{ρα} g^{σβ} g^{μγ} g^{νδ} R_{αβγδ}
|
|
22
|
+
* 2. Contract:
|
|
23
|
+
* K = Σ_{ρσμν} R_{ρσμν} · R^{ρσμν}
|
|
24
|
+
*
|
|
25
|
+
* The outer sum has 4⁴ = 256 terms; each inner raise requires 4⁴ = 256
|
|
26
|
+
* metric products, giving the O(4⁸) = 65536 total multiplications.
|
|
27
|
+
*
|
|
28
|
+
* @param riemannLower - R_{ρσμν}: all-lower Riemann tensor, shape [4][4][4][4].
|
|
29
|
+
* Obtain by lowering R^ρ_{σμν} via g_{ρα}: R_{αβγδ} = g_{αρ} R^ρ_{βγδ}.
|
|
30
|
+
* @param metricInverse - g^{αβ}: inverse metric, shape [4][4].
|
|
31
|
+
* @returns K, a scalar. Dimension [L⁻⁴] (Riemann is [L⁻²] per F8/I3 convention).
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* import { computeKretschmann, G_SI, C_SI } from 'universal-physics-tensor';
|
|
36
|
+
* import {
|
|
37
|
+
* schwarzschildGFn,
|
|
38
|
+
* schwarzschildGInverseFn,
|
|
39
|
+
* schwarzschildRs,
|
|
40
|
+
* } from '../tests/fixtures/schwarzschild.js';
|
|
41
|
+
* import { riemannLowerAt } from '../src/numerical/curvature-lowering-helpers.js';
|
|
42
|
+
* import { Float64ReferenceEngine } from '../src/numerical/float64-engine.js';
|
|
43
|
+
*
|
|
44
|
+
* const M = 1.989e30;
|
|
45
|
+
* const r_s = schwarzschildRs(M);
|
|
46
|
+
* const r = 5 * r_s;
|
|
47
|
+
* const x: [number, number, number, number] = [0, r, Math.PI / 2, 0];
|
|
48
|
+
*
|
|
49
|
+
* const engine = new Float64ReferenceEngine();
|
|
50
|
+
* const rLower = riemannLowerAt(x, schwarzschildGFn(M), schwarzschildGInverseFn(M), 4, engine);
|
|
51
|
+
* const gInv = schwarzschildGInverseFn(M)(x);
|
|
52
|
+
* const K = computeKretschmann(rLower, gInv);
|
|
53
|
+
*
|
|
54
|
+
* // Schwarzschild closed-form: K = 48 G² M² / (c⁴ r⁶)
|
|
55
|
+
* const K_analytic = 48 * G_SI**2 * M**2 / (C_SI**4 * r**6);
|
|
56
|
+
* // |K - K_analytic| / K_analytic < 1e-4
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* @public
|
|
60
|
+
*/
|
|
61
|
+
export declare function computeKretschmann(riemannLower: number[][][][], metricInverse: number[][]): number;
|
|
62
|
+
//# sourceMappingURL=kretschmann.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kretschmann.d.ts","sourceRoot":"","sources":["../../src/numerical/kretschmann.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAC5B,aAAa,EAAE,MAAM,EAAE,EAAE,GACxB,MAAM,CA0BR"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kretschmann scalar numerical contraction (v0.6.0 Phase 3, Task 3.6).
|
|
3
|
+
*
|
|
4
|
+
* Computes K = R_{ρσμν} R^{ρσμν} from the fully-lowered Riemann tensor and
|
|
5
|
+
* the inverse metric by raising all four indices on the second Riemann factor.
|
|
6
|
+
*
|
|
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.
|
|
13
|
+
*
|
|
14
|
+
* @module numerical/kretschmann
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Kretschmann invariant K = R_{ρσμν} R^{ρσμν}.
|
|
18
|
+
*
|
|
19
|
+
* Algorithm:
|
|
20
|
+
* 1. Raise all four indices on the second Riemann factor:
|
|
21
|
+
* R^{ρσμν} = g^{ρα} g^{σβ} g^{μγ} g^{νδ} R_{αβγδ}
|
|
22
|
+
* 2. Contract:
|
|
23
|
+
* K = Σ_{ρσμν} R_{ρσμν} · R^{ρσμν}
|
|
24
|
+
*
|
|
25
|
+
* The outer sum has 4⁴ = 256 terms; each inner raise requires 4⁴ = 256
|
|
26
|
+
* metric products, giving the O(4⁸) = 65536 total multiplications.
|
|
27
|
+
*
|
|
28
|
+
* @param riemannLower - R_{ρσμν}: all-lower Riemann tensor, shape [4][4][4][4].
|
|
29
|
+
* Obtain by lowering R^ρ_{σμν} via g_{ρα}: R_{αβγδ} = g_{αρ} R^ρ_{βγδ}.
|
|
30
|
+
* @param metricInverse - g^{αβ}: inverse metric, shape [4][4].
|
|
31
|
+
* @returns K, a scalar. Dimension [L⁻⁴] (Riemann is [L⁻²] per F8/I3 convention).
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* import { computeKretschmann, G_SI, C_SI } from 'universal-physics-tensor';
|
|
36
|
+
* import {
|
|
37
|
+
* schwarzschildGFn,
|
|
38
|
+
* schwarzschildGInverseFn,
|
|
39
|
+
* schwarzschildRs,
|
|
40
|
+
* } from '../tests/fixtures/schwarzschild.js';
|
|
41
|
+
* import { riemannLowerAt } from '../src/numerical/curvature-lowering-helpers.js';
|
|
42
|
+
* import { Float64ReferenceEngine } from '../src/numerical/float64-engine.js';
|
|
43
|
+
*
|
|
44
|
+
* const M = 1.989e30;
|
|
45
|
+
* const r_s = schwarzschildRs(M);
|
|
46
|
+
* const r = 5 * r_s;
|
|
47
|
+
* const x: [number, number, number, number] = [0, r, Math.PI / 2, 0];
|
|
48
|
+
*
|
|
49
|
+
* const engine = new Float64ReferenceEngine();
|
|
50
|
+
* const rLower = riemannLowerAt(x, schwarzschildGFn(M), schwarzschildGInverseFn(M), 4, engine);
|
|
51
|
+
* const gInv = schwarzschildGInverseFn(M)(x);
|
|
52
|
+
* const K = computeKretschmann(rLower, gInv);
|
|
53
|
+
*
|
|
54
|
+
* // Schwarzschild closed-form: K = 48 G² M² / (c⁴ r⁶)
|
|
55
|
+
* const K_analytic = 48 * G_SI**2 * M**2 / (C_SI**4 * r**6);
|
|
56
|
+
* // |K - K_analytic| / K_analytic < 1e-4
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* @public
|
|
60
|
+
*/
|
|
61
|
+
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;
|
|
65
|
+
for (let rho = 0; rho < 4; rho++) {
|
|
66
|
+
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;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return K;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=kretschmann.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared private utilities for the `numerical/lowering*.ts` modules.
|
|
3
|
+
*
|
|
4
|
+
* Carved out of `lowering.ts` in the v0.7 follow-up to its v0.6.1
|
|
5
|
+
* sprint-target miss (LOC 903 vs ≤890). Centralizes the four helpers
|
|
6
|
+
* that both `lowering.ts` and the v0.7 `derivative-lowering.ts`
|
|
7
|
+
* need, avoiding both a forward-import cycle and code duplication.
|
|
8
|
+
*
|
|
9
|
+
* No public surface — every export carries an `@internal` JSDoc tag.
|
|
10
|
+
*
|
|
11
|
+
* @module numerical/lowering-utils
|
|
12
|
+
*/
|
|
13
|
+
import type { NumericalInputs, NestedArray } from './types.js';
|
|
14
|
+
import type { MetricTensorNode } from '../dimensional/metric-validators.js';
|
|
15
|
+
/**
|
|
16
|
+
* Module-private type predicate for the `metric-tensor` AST kind.
|
|
17
|
+
* Replaces the duplicated `(n as { kind?: unknown }).kind ===
|
|
18
|
+
* 'metric-tensor'` cast pattern. TypeScript narrows the operand to
|
|
19
|
+
* `MetricTensorNode` after the predicate, removing follow-up `as
|
|
20
|
+
* MetricTensorNode` casts.
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export declare function isMetricTensorNode(n: unknown): n is MetricTensorNode;
|
|
25
|
+
/**
|
|
26
|
+
* Coordinate-space dimension supplied via `NumericalInputs.dimension`,
|
|
27
|
+
* defaulting to 4 (spacetime). Read at most case-arms in lowering.
|
|
28
|
+
*
|
|
29
|
+
* @internal
|
|
30
|
+
*/
|
|
31
|
+
export declare function dimensionOf(inputs: NumericalInputs): number;
|
|
32
|
+
/**
|
|
33
|
+
* Look up a named tensor's concrete value from
|
|
34
|
+
* `NumericalInputs.tensors`, or throw with a clear message.
|
|
35
|
+
*
|
|
36
|
+
* @internal
|
|
37
|
+
*/
|
|
38
|
+
export declare function requireValue(name: string, inputs: NumericalInputs): NestedArray;
|
|
39
|
+
/**
|
|
40
|
+
* Flatten a `NestedArray` to a plain `number[]` and check the result
|
|
41
|
+
* matches `expectedSize`. Wraps the canonical `flattenNA()` with a
|
|
42
|
+
* size-mismatch guard so consumers don't silently swallow bad input.
|
|
43
|
+
*
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
export declare function flattenNestedArray(data: NestedArray, expectedSize: number): number[];
|
|
47
|
+
//# sourceMappingURL=lowering-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lowering-utils.d.ts","sourceRoot":"","sources":["../../src/numerical/lowering-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAI5E;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,gBAAgB,CAGpE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,WAAW,CAM/E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAQpF"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared private utilities for the `numerical/lowering*.ts` modules.
|
|
3
|
+
*
|
|
4
|
+
* Carved out of `lowering.ts` in the v0.7 follow-up to its v0.6.1
|
|
5
|
+
* sprint-target miss (LOC 903 vs ≤890). Centralizes the four helpers
|
|
6
|
+
* that both `lowering.ts` and the v0.7 `derivative-lowering.ts`
|
|
7
|
+
* need, avoiding both a forward-import cycle and code duplication.
|
|
8
|
+
*
|
|
9
|
+
* No public surface — every export carries an `@internal` JSDoc tag.
|
|
10
|
+
*
|
|
11
|
+
* @module numerical/lowering-utils
|
|
12
|
+
*/
|
|
13
|
+
import { NumericalBackendError } from './errors.js';
|
|
14
|
+
import { flattenNA } from './connection-lowering-helpers.js';
|
|
15
|
+
/**
|
|
16
|
+
* Module-private type predicate for the `metric-tensor` AST kind.
|
|
17
|
+
* Replaces the duplicated `(n as { kind?: unknown }).kind ===
|
|
18
|
+
* 'metric-tensor'` cast pattern. TypeScript narrows the operand to
|
|
19
|
+
* `MetricTensorNode` after the predicate, removing follow-up `as
|
|
20
|
+
* MetricTensorNode` casts.
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export function isMetricTensorNode(n) {
|
|
25
|
+
return typeof n === 'object' && n !== null
|
|
26
|
+
&& n.kind === 'metric-tensor';
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Coordinate-space dimension supplied via `NumericalInputs.dimension`,
|
|
30
|
+
* defaulting to 4 (spacetime). Read at most case-arms in lowering.
|
|
31
|
+
*
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
export function dimensionOf(inputs) {
|
|
35
|
+
return inputs.dimension ?? 4;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Look up a named tensor's concrete value from
|
|
39
|
+
* `NumericalInputs.tensors`, or throw with a clear message.
|
|
40
|
+
*
|
|
41
|
+
* @internal
|
|
42
|
+
*/
|
|
43
|
+
export function requireValue(name, inputs) {
|
|
44
|
+
const v = inputs.tensors.get(name);
|
|
45
|
+
if (v === undefined) {
|
|
46
|
+
throw new NumericalBackendError(`lowering: no value supplied for "${name}" in inputs.tensors`);
|
|
47
|
+
}
|
|
48
|
+
return v;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Flatten a `NestedArray` to a plain `number[]` and check the result
|
|
52
|
+
* matches `expectedSize`. Wraps the canonical `flattenNA()` with a
|
|
53
|
+
* size-mismatch guard so consumers don't silently swallow bad input.
|
|
54
|
+
*
|
|
55
|
+
* @internal
|
|
56
|
+
*/
|
|
57
|
+
export function flattenNestedArray(data, expectedSize) {
|
|
58
|
+
const out = flattenNA(data);
|
|
59
|
+
if (out.length !== expectedSize) {
|
|
60
|
+
throw new NumericalBackendError(`lowering: flattenNestedArray: got ${out.length} elements, expected ${expectedSize}`);
|
|
61
|
+
}
|
|
62
|
+
return out;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=lowering-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lowering-utils.js","sourceRoot":"","sources":["../../src/numerical/lowering-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,CAAU;IAC3C,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;WACpC,CAAwB,CAAC,IAAI,KAAK,eAAe,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,MAAuB;IACjD,OAAO,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,MAAuB;IAChE,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,MAAM,IAAI,qBAAqB,CAAC,oCAAoC,IAAI,qBAAqB,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAiB,EAAE,YAAoB;IACxE,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,GAAG,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QAChC,MAAM,IAAI,qBAAqB,CAC7B,qCAAqC,GAAG,CAAC,MAAM,uBAAuB,YAAY,EAAE,CACrF,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -11,37 +11,9 @@
|
|
|
11
11
|
* @module numerical/lowering
|
|
12
12
|
*/
|
|
13
13
|
import type { ExprNode } from '../dimensional/validator.js';
|
|
14
|
-
import type {
|
|
15
|
-
import type { EngineTensor, TensorEngine, EinsumSpec } from './tensor-engine.js';
|
|
14
|
+
import type { EngineTensor, TensorEngine } from './tensor-engine.js';
|
|
16
15
|
import type { NumericalInputs } from './types.js';
|
|
17
|
-
/** Operand kinds a flat tensor-product can lower in v0.3.5: the three
|
|
18
|
-
* index-carrying nodes plus tensor-partial-derivative (whose effective
|
|
19
|
-
* indices are `of`'s indices followed by its wrtIndex). */
|
|
20
|
-
type ContractableNode = Extract<ExprNode, {
|
|
21
|
-
indices: ReadonlyArray<TensorIndex>;
|
|
22
|
-
}> | Extract<ExprNode, {
|
|
23
|
-
kind: 'tensor-partial-derivative';
|
|
24
|
-
}>;
|
|
25
|
-
/**
|
|
26
|
-
* Build the EinsumSpec for a flat tensor-product.
|
|
27
|
-
*
|
|
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
|
|
31
|
-
* contracted or free. buildEinsumSpec only maps those already-classified
|
|
32
|
-
* labels to their (operand, axis) sites. There is exactly one
|
|
33
|
-
* contraction-decision implementation in the codebase.
|
|
34
|
-
*
|
|
35
|
-
* @internal — cross-module/test use only; not part of the consumer surface.
|
|
36
|
-
*/
|
|
37
|
-
export declare function buildEinsumSpec(operands: ReadonlyArray<ContractableNode>, contractionPairs: ReadonlyArray<{
|
|
38
|
-
label: string;
|
|
39
|
-
}>, freeIndices: ReadonlyMap<string, {
|
|
40
|
-
upper: number;
|
|
41
|
-
lower: number;
|
|
42
|
-
}>): EinsumSpec;
|
|
43
16
|
/** Lower a validated ExprNode to an EngineTensor.
|
|
44
17
|
* @internal — cross-module/test use only; not part of the consumer surface. */
|
|
45
18
|
export declare function lowerNode(node: ExprNode, inputs: NumericalInputs, engine: TensorEngine): EngineTensor;
|
|
46
|
-
export {};
|
|
47
19
|
//# 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;
|
|
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"}
|