universal-physics-tensor 0.5.1 → 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 +15 -28
- 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/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/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/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 +12 -5
- package/dist/dimensional/connection-validators.d.ts.map +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 +46 -30
- package/dist/dimensional/curvature.d.ts.map +1 -1
- 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 +37 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -1
- package/dist/numerical/be37-covariant-eikonal.d.ts +19 -0
- package/dist/numerical/be37-covariant-eikonal.d.ts.map +1 -1
- package/dist/numerical/be37-covariant-eikonal.js +29 -9
- 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 +49 -57
- package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.js +109 -4
- 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/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 +4 -2
- package/dist/numerical/gl4-integrator.d.ts.map +1 -1
- package/dist/numerical/gl4-integrator.js +24 -8
- 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 +219 -415
- package/dist/numerical/lowering.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/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 +17 -9
- package/dist/numerical/pderiv.d.ts.map +1 -1
- package/dist/numerical/pderiv.js +6 -3
- package/dist/numerical/pderiv.js.map +1 -1
- package/dist/numerical/perihelion-finder.d.ts +30 -0
- package/dist/numerical/perihelion-finder.d.ts.map +1 -1
- package/dist/numerical/perihelion-finder.js +30 -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
|
@@ -35,6 +35,9 @@ function combineRK4(y, k1, k2, k3, k4, h) {
|
|
|
35
35
|
/**
|
|
36
36
|
* Evaluate the Christoffel acceleration −Γ^μ_{νρ} v^ν v^ρ at position x
|
|
37
37
|
* with 4-velocity v. Returns (dx/dτ, dv/dτ) = (v, accel).
|
|
38
|
+
*
|
|
39
|
+
* BR-2 (v0.6.0 Task 2.9): christoffelFn now returns Float64Array(64).
|
|
40
|
+
* Index access: G[16*mu + 4*nu + rho] (λ-major layout).
|
|
38
41
|
*/
|
|
39
42
|
function geodesicRHS(christoffelFn, x, v) {
|
|
40
43
|
const G = christoffelFn(x);
|
|
@@ -43,7 +46,7 @@ function geodesicRHS(christoffelFn, x, v) {
|
|
|
43
46
|
let acc = 0;
|
|
44
47
|
for (let nu = 0; nu < 4; nu++) {
|
|
45
48
|
for (let rho = 0; rho < 4; rho++) {
|
|
46
|
-
acc += G[mu
|
|
49
|
+
acc += G[16 * mu + 4 * nu + rho] * v[nu] * v[rho];
|
|
47
50
|
}
|
|
48
51
|
}
|
|
49
52
|
dv[mu] = -acc;
|
|
@@ -62,6 +65,7 @@ function geodesicRHS(christoffelFn, x, v) {
|
|
|
62
65
|
*/
|
|
63
66
|
export function integrateGeodesic(inputs) {
|
|
64
67
|
const { christoffelFn, x0, v0, tauStart, tauEnd, steps, domainMinRadius } = inputs;
|
|
68
|
+
// BR-2: christoffelFn now returns Float64Array(64); geodesicRHS reads flat layout.
|
|
65
69
|
// E11 fix: explicit option in place of monkey-patched .r_s on the closure.
|
|
66
70
|
// Callers (e.g. the Schwarzschild test fixture) pass `3 * r_s` directly.
|
|
67
71
|
if (typeof domainMinRadius === 'number' && x0[1] < domainMinRadius) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geodesic-integrator.js","sourceRoot":"","sources":["../../src/numerical/geodesic-integrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"geodesic-integrator.js","sourceRoot":"","sources":["../../src/numerical/geodesic-integrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -115,9 +115,10 @@ export interface GL4Options {
|
|
|
115
115
|
* iteration count actually consumed. Consumed by the upcoming
|
|
116
116
|
* `integrateGeodesicGL4` step driver (Task 3).
|
|
117
117
|
*
|
|
118
|
-
*
|
|
118
|
+
* v0.6.1: dropped export — internal-only result shape (was already
|
|
119
|
+
* @internal-tagged but had no external consumer).
|
|
119
120
|
*/
|
|
120
|
-
|
|
121
|
+
interface StageSolveResult {
|
|
121
122
|
readonly stageX: readonly [readonly number[], readonly number[]];
|
|
122
123
|
readonly stageP: readonly [readonly number[], readonly number[]];
|
|
123
124
|
readonly iterations: number;
|
|
@@ -210,4 +211,5 @@ export declare function solveGL4Stage(state: GL4State, h: number, gInverseFn: (x
|
|
|
210
211
|
* @public
|
|
211
212
|
*/
|
|
212
213
|
export declare function integrateGeodesicGL4(initialState: GL4State, options: GL4Options): readonly GL4Snapshot[];
|
|
214
|
+
export {};
|
|
213
215
|
//# sourceMappingURL=gl4-integrator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gl4-integrator.d.ts","sourceRoot":"","sources":["../../src/numerical/gl4-integrator.ts"],"names":[],"mappings":"AA6BA;;;;;;;;GAQG;AACH,eAAO,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAA4C,CAAC;AAEzF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAGjF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAc,CAAC;AAE3D;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,QAAQ;IACvB,+BAA+B;IAC/B,QAAQ,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,yCAAyC;IACzC,QAAQ,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB;qCACiC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,KAAK,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;IAC9E;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,KAAK,SAAS,CAAC,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC5F,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,mEAAmE;IACnE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,+FAA+F;IAC/F,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;qCAEiC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC3F;AAED
|
|
1
|
+
{"version":3,"file":"gl4-integrator.d.ts","sourceRoot":"","sources":["../../src/numerical/gl4-integrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -87,12 +87,25 @@ export const GL4_B = [0.5, 0.5];
|
|
|
87
87
|
*/
|
|
88
88
|
export function solveGL4Stage(state, h, gInverseFn, dgInverseFn, opts) {
|
|
89
89
|
const dim = state.x.length;
|
|
90
|
+
// Pre-allocate ping-pong buffers (O-2): both X / P stage pairs as
|
|
91
|
+
// reusable Float64Arrays. The original implementation allocated 4
|
|
92
|
+
// arrays per Picard iteration (up to picardMaxIter = 50 iters per
|
|
93
|
+
// RK4 step); now allocation is once per call and references are
|
|
94
|
+
// swapped per iteration.
|
|
95
|
+
const bufXA = [new Float64Array(dim), new Float64Array(dim)];
|
|
96
|
+
const bufXB = [new Float64Array(dim), new Float64Array(dim)];
|
|
97
|
+
const bufPA = [new Float64Array(dim), new Float64Array(dim)];
|
|
98
|
+
const bufPB = [new Float64Array(dim), new Float64Array(dim)];
|
|
90
99
|
// Initial guess: stage values = state values (k=0 of fixed-point iteration).
|
|
91
|
-
|
|
92
|
-
|
|
100
|
+
bufXA[0].set(state.x);
|
|
101
|
+
bufXA[1].set(state.x);
|
|
102
|
+
bufPA[0].set(state.p);
|
|
103
|
+
bufPA[1].set(state.p);
|
|
104
|
+
let X = bufXA;
|
|
105
|
+
let P = bufPA;
|
|
106
|
+
let Xnew = bufXB;
|
|
107
|
+
let Pnew = bufPB;
|
|
93
108
|
for (let k = 0; k < opts.picardMaxIter; k++) {
|
|
94
|
-
const Xnew = [new Array(dim).fill(0), new Array(dim).fill(0)];
|
|
95
|
-
const Pnew = [new Array(dim).fill(0), new Array(dim).fill(0)];
|
|
96
109
|
for (let i = 0; i < 2; i++) {
|
|
97
110
|
// dx^μ/dτ at stage j = g^{μν}(X_j) P_{j,ν}
|
|
98
111
|
// dp_μ/dτ at stage j = −½ (∂_μ g^νρ)(X_j) P_{j,ν} P_{j,ρ}
|
|
@@ -130,12 +143,15 @@ export function solveGL4Stage(state, h, gInverseFn, dgInverseFn, opts) {
|
|
|
130
143
|
maxDelta = Math.max(maxDelta, Math.abs(Pnew[i][mu] - P[i][mu]));
|
|
131
144
|
}
|
|
132
145
|
}
|
|
133
|
-
|
|
134
|
-
|
|
146
|
+
// Ping-pong swap: read-from + write-to buffers exchange roles for next iter.
|
|
147
|
+
[X, Xnew] = [Xnew, X];
|
|
148
|
+
[P, Pnew] = [Pnew, P];
|
|
135
149
|
if (maxDelta < opts.picardTol) {
|
|
150
|
+
// Clone on return — caller may retain references and the next
|
|
151
|
+
// solveGL4Stage call will overwrite our internal buffers.
|
|
136
152
|
return {
|
|
137
|
-
stageX: [X[0], X[1]],
|
|
138
|
-
stageP: [P[0], P[1]],
|
|
153
|
+
stageX: [Array.from(X[0]), Array.from(X[1])],
|
|
154
|
+
stageP: [Array.from(P[0]), Array.from(P[1])],
|
|
139
155
|
iterations: k + 1,
|
|
140
156
|
};
|
|
141
157
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gl4-integrator.js","sourceRoot":"","sources":["../../src/numerical/gl4-integrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAEtC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,KAAK,GAA8B,CAAC,GAAG,GAAG,YAAY,EAAE,GAAG,GAAG,YAAY,CAAC,CAAC;AAEzF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,KAAK,GAAoE;IACpF,CAAC,IAAI,EAAE,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC,IAAI,GAAG,YAAY,EAAE,IAAI,CAAC;CAC5B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,KAAK,GAA8B,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"gl4-integrator.js","sourceRoot":"","sources":["../../src/numerical/gl4-integrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
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
|
+
/** Options for {@link verifyKillingEquation}.
|
|
25
|
+
*
|
|
26
|
+
* @public */
|
|
27
|
+
export interface KillingEquationOptions {
|
|
28
|
+
/**
|
|
29
|
+
* Maximum tolerated residual ||∇_μ ξ_ν + ∇_ν ξ_μ||_∞.
|
|
30
|
+
* Default 1e-10.
|
|
31
|
+
*/
|
|
32
|
+
readonly tolerance?: number;
|
|
33
|
+
/**
|
|
34
|
+
* Finite-difference stencil order for the outer ∂_μ ξ_α partials
|
|
35
|
+
* (used only when constantKilling=false and dMetricFn is not supplied).
|
|
36
|
+
* Default 4.
|
|
37
|
+
*/
|
|
38
|
+
readonly order?: 2 | 4;
|
|
39
|
+
/**
|
|
40
|
+
* When true (default), assumes ξ^β is coordinate-independent (∂_μ ξ^β = 0)
|
|
41
|
+
* and uses the metric-compatibility identity to compute the covariant
|
|
42
|
+
* derivative purely algebraically:
|
|
43
|
+
*
|
|
44
|
+
* ∇_μ ξ_α = Γ^λ_{μβ} g_{αλ} ξ^β (for constant ξ^β)
|
|
45
|
+
*
|
|
46
|
+
* This avoids all FD and any c²-scale cancellation noise. Exactly correct for
|
|
47
|
+
* the Schwarzschild time-translation (ξ^t = 1) and axial (ξ^φ = 1) fields.
|
|
48
|
+
* Set to false for spatially-varying Killing fields.
|
|
49
|
+
*/
|
|
50
|
+
readonly constantKilling?: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Optional exact partial derivatives of the covariant metric
|
|
53
|
+
* (used only when constantKilling=false).
|
|
54
|
+
* dMetricFn(x)[lambda][mu][nu] = ∂_lambda g_{mu nu}.
|
|
55
|
+
* When supplied with constantKilling=false, ∂_μ g_{αβ} is exact;
|
|
56
|
+
* ∂_μ ξ^β is computed via 4th-order FD.
|
|
57
|
+
*/
|
|
58
|
+
readonly dMetricFn?: (x: ReadonlyArray<number>) => number[][][];
|
|
59
|
+
}
|
|
60
|
+
type Vec4 = [number, number, number, number];
|
|
61
|
+
type KillingFn = () => (x: Vec4) => Vec4;
|
|
62
|
+
type MetricFn = (x: ReadonlyArray<number>) => number[][];
|
|
63
|
+
/**
|
|
64
|
+
* Layout-agnostic Christoffel accessor.
|
|
65
|
+
*
|
|
66
|
+
* P-3 fix: both nested (number[4][4][4]) and flat (Float64Array(64))
|
|
67
|
+
* Christoffel producers can provide a ChristoffelAccess. This insulates
|
|
68
|
+
* {@link verifyKillingEquation} from the Phase 2 BR-2 migration:
|
|
69
|
+
* Task 2.9 changes how christoffelAt(x) is *constructed*, but consumers
|
|
70
|
+
* only call `christoffelAt(x)(λ, μ, ν)`.
|
|
71
|
+
*
|
|
72
|
+
* @public
|
|
73
|
+
*/
|
|
74
|
+
export type ChristoffelAccess = (lambda: number, mu: number, nu: number) => number;
|
|
75
|
+
type ChristoffelAtFn = (x: Vec4) => ChristoffelAccess;
|
|
76
|
+
/**
|
|
77
|
+
* Compute `||∇_μ ξ_ν + ∇_ν ξ_μ||_∞` at point `x`, returning the maximum
|
|
78
|
+
* absolute symmetrized residual over all 16 (μ, ν) pairs.
|
|
79
|
+
*
|
|
80
|
+
* For constant Killing fields (constantKilling=true, the default):
|
|
81
|
+
* Uses metric compatibility to derive ∇_μ ξ_α = Γ^λ_{μβ} g_{αλ} ξ^β
|
|
82
|
+
* algebraically — no FD at all. Achieves machine-precision residuals
|
|
83
|
+
* for Schwarzschild Killing fields in SI units.
|
|
84
|
+
*
|
|
85
|
+
* @param killingFn - Factory returning ξ^μ(x) (upper index).
|
|
86
|
+
* @param metricFn - Covariant metric g_{μν}(x).
|
|
87
|
+
* @param christoffelAt - Christoffel accessor factory (layout-agnostic).
|
|
88
|
+
* @param x - Evaluation point [t, r, θ, φ].
|
|
89
|
+
* @param opts - Optional overrides (see {@link KillingEquationOptions}).
|
|
90
|
+
* @returns Maximum absolute residual of the symmetrized Killing equation.
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```typescript
|
|
94
|
+
* import { verifyKillingEquation } from 'universal-physics-tensor';
|
|
95
|
+
* import {
|
|
96
|
+
* schwarzschildKillingT,
|
|
97
|
+
* schwarzschildGFn,
|
|
98
|
+
* schwarzschildChristoffelFn,
|
|
99
|
+
* schwarzschildRs,
|
|
100
|
+
* } from '../tests/fixtures/schwarzschild.js'; // or your own metric closures
|
|
101
|
+
*
|
|
102
|
+
* const M = 1.989e30; // solar mass, kg
|
|
103
|
+
* const r_s = schwarzschildRs(M);
|
|
104
|
+
* const x: [number, number, number, number] = [0, 5 * r_s, Math.PI / 2, 0];
|
|
105
|
+
*
|
|
106
|
+
* // Christoffel accessor wrapping the flat Float64Array layout (BR-2)
|
|
107
|
+
* const gammaFn = schwarzschildChristoffelFn(M);
|
|
108
|
+
* const christoffelAccessAt = (pt: [number, number, number, number]) => {
|
|
109
|
+
* const arr = gammaFn(pt);
|
|
110
|
+
* return (lam: number, mu: number, nu: number) => arr[16 * lam + 4 * mu + nu];
|
|
111
|
+
* };
|
|
112
|
+
*
|
|
113
|
+
* const residual = verifyKillingEquation(
|
|
114
|
+
* schwarzschildKillingT,
|
|
115
|
+
* schwarzschildGFn(M),
|
|
116
|
+
* christoffelAccessAt,
|
|
117
|
+
* x,
|
|
118
|
+
* { constantKilling: true },
|
|
119
|
+
* );
|
|
120
|
+
* // residual < 1e-12 for the exact time-translation Killing field
|
|
121
|
+
* ```
|
|
122
|
+
*
|
|
123
|
+
* @public
|
|
124
|
+
*/
|
|
125
|
+
export declare function verifyKillingEquation(killingFn: KillingFn, metricFn: MetricFn, christoffelAt: ChristoffelAtFn, x: Vec4, opts?: KillingEquationOptions): number;
|
|
126
|
+
/**
|
|
127
|
+
* Evaluate the conserved charge Q = ξ^μ p_μ at point x along a geodesic.
|
|
128
|
+
*
|
|
129
|
+
* Sign convention: raw contraction ξ^μ p_μ. For the time-translation
|
|
130
|
+
* Killing field in (−,+,+,+) signature, p_t < 0 for forward-time motion,
|
|
131
|
+
* so the physical energy of common usage is E = −Q (Carroll Eq. 8.30).
|
|
132
|
+
* Use `|ΔQ / Q|` for drift diagnostics to stay sign-agnostic.
|
|
133
|
+
*
|
|
134
|
+
* @param killingFn - Factory returning ξ^μ(x) (upper index).
|
|
135
|
+
* @param momentumLower - Co-momentum p_μ at the geodesic point (lower index).
|
|
136
|
+
* @param x - Geodesic coordinate [t, r, θ, φ].
|
|
137
|
+
* @returns Q = ξ^μ p_μ (dimensioned as energy if p is 4-momentum).
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* ```typescript
|
|
141
|
+
* import { evaluateConservedCharge } from 'universal-physics-tensor';
|
|
142
|
+
* import { schwarzschildKillingT } from '../tests/fixtures/schwarzschild.js';
|
|
143
|
+
*
|
|
144
|
+
* // Co-momentum p_μ at a geodesic snapshot (p_t < 0 for forward-time motion)
|
|
145
|
+
* const pLower: [number, number, number, number] = [-8.988e16, 0, 0, 0];
|
|
146
|
+
* const x: [number, number, number, number] = [0, 1e7, Math.PI / 2, 0];
|
|
147
|
+
*
|
|
148
|
+
* const Q = evaluateConservedCharge(schwarzschildKillingT, pLower, x);
|
|
149
|
+
* // Q = ξ^t · p_t = 1 · p_t = p_t (energy with sign from metric)
|
|
150
|
+
* // Physical energy E = −Q (Carroll sign convention for (−,+,+,+))
|
|
151
|
+
* ```
|
|
152
|
+
*
|
|
153
|
+
* @public
|
|
154
|
+
*/
|
|
155
|
+
export declare function evaluateConservedCharge(killingFn: KillingFn, momentumLower: Vec4, x: Vec4): number;
|
|
156
|
+
export {};
|
|
157
|
+
//# sourceMappingURL=killing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"killing.d.ts","sourceRoot":"","sources":["../../src/numerical/killing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH;;cAEc;AACd,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACvB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,EAAE,EAAE,CAAC;CACjE;AAED,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,KAAK,SAAS,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC;AACzC,KAAK,QAAQ,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,EAAE,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;AAEnF,KAAK,eAAe,GAAG,CAAC,CAAC,EAAE,IAAI,KAAK,iBAAiB,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,eAAe,EAC9B,CAAC,EAAE,IAAI,EACP,IAAI,GAAE,sBAA2B,GAChC,MAAM,CAmIR;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,IAAI,EACnB,CAAC,EAAE,IAAI,GACN,MAAM,CAKR"}
|
|
@@ -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
|