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
|
@@ -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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"}
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
*
|
|
5
5
|
* c₁ = ½ − √3/6, c₂ = ½ + √3/6.
|
|
6
6
|
*
|
|
7
|
-
* @
|
|
7
|
+
* @internal — exported for unit tests pinning the Butcher tableau invariants.
|
|
8
|
+
* Public callers should use {@link integrateGeodesicGL4}, not the raw constants.
|
|
8
9
|
*/
|
|
9
10
|
export declare const GL4_C: readonly [number, number];
|
|
10
11
|
/**
|
|
@@ -16,14 +17,16 @@ export declare const GL4_C: readonly [number, number];
|
|
|
16
17
|
*
|
|
17
18
|
* (Hairer/Lubich/Wanner §II.1, Table 1.1.)
|
|
18
19
|
*
|
|
19
|
-
* @
|
|
20
|
+
* @internal — exported for unit tests pinning the Butcher tableau invariants.
|
|
21
|
+
* Public callers should use {@link integrateGeodesicGL4}, not the raw constants.
|
|
20
22
|
*/
|
|
21
23
|
export declare const GL4_A: readonly [readonly [number, number], readonly [number, number]];
|
|
22
24
|
/**
|
|
23
25
|
* GL4 stage weights — the 2-point Gauss-Legendre quadrature weights on
|
|
24
26
|
* [0,1]: b₁ = b₂ = ½.
|
|
25
27
|
*
|
|
26
|
-
* @
|
|
28
|
+
* @internal — exported for unit tests pinning the Butcher tableau invariants.
|
|
29
|
+
* Public callers should use {@link integrateGeodesicGL4}, not the raw constants.
|
|
27
30
|
*/
|
|
28
31
|
export declare const GL4_B: readonly [number, number];
|
|
29
32
|
/**
|
|
@@ -86,15 +89,36 @@ export interface GL4Options {
|
|
|
86
89
|
* the trajectory crosses inside this radius (e.g., the Schwarzschild
|
|
87
90
|
* event horizon at r = r_s). */
|
|
88
91
|
readonly domainMinRadius?: number;
|
|
92
|
+
/**
|
|
93
|
+
* v0.5.1 PD-4: opt-in per-step diagnostics callback. Fires once per
|
|
94
|
+
* successful step with the Picard iteration count consumed and whether
|
|
95
|
+
* adaptive step-halving had to subdivide (an "exhaustion" event from the
|
|
96
|
+
* caller's perspective: the original h failed Picard and was halved).
|
|
97
|
+
*
|
|
98
|
+
* Used by the gated `GL4_LONG=1` Mercury 100-orbit Picard-convergence
|
|
99
|
+
* test to measure the failure fraction across millions of steps without
|
|
100
|
+
* polluting the integrator's return shape for normal callers.
|
|
101
|
+
*
|
|
102
|
+
* - `iterations`: Picard iteration count actually consumed at the
|
|
103
|
+
* successful step size (always 1..picardMaxIter).
|
|
104
|
+
* - `halvings`: number of step-halvings the step required before
|
|
105
|
+
* succeeding (0 = first try; ≥1 means original h hit picardMaxIter).
|
|
106
|
+
*/
|
|
107
|
+
readonly onStep?: (event: {
|
|
108
|
+
step: number;
|
|
109
|
+
iterations: number;
|
|
110
|
+
halvings: number;
|
|
111
|
+
}) => void;
|
|
89
112
|
}
|
|
90
113
|
/**
|
|
91
114
|
* Result of `solveGL4Stage` — the two converged stage values plus the
|
|
92
115
|
* iteration count actually consumed. Consumed by the upcoming
|
|
93
116
|
* `integrateGeodesicGL4` step driver (Task 3).
|
|
94
117
|
*
|
|
95
|
-
*
|
|
118
|
+
* v0.6.1: dropped export — internal-only result shape (was already
|
|
119
|
+
* @internal-tagged but had no external consumer).
|
|
96
120
|
*/
|
|
97
|
-
|
|
121
|
+
interface StageSolveResult {
|
|
98
122
|
readonly stageX: readonly [readonly number[], readonly number[]];
|
|
99
123
|
readonly stageP: readonly [readonly number[], readonly number[]];
|
|
100
124
|
readonly iterations: number;
|
|
@@ -153,15 +177,39 @@ export declare function solveGL4Stage(state: GL4State, h: number, gInverseFn: (x
|
|
|
153
177
|
* domain crossing is not checked here — callers needing that supply a
|
|
154
178
|
* `gInverseFn` that throws on out-of-domain input.
|
|
155
179
|
*
|
|
156
|
-
*
|
|
157
|
-
*
|
|
158
|
-
*
|
|
180
|
+
* **Units.** The integrator is metric-agnostic — units follow the units of
|
|
181
|
+
* the supplied `gInverseFn` and `initialState`. For UPT's canonical SI
|
|
182
|
+
* Schwarzschild applications (BE-37 Shapiro delay, BE-52 Mercury):
|
|
183
|
+
* - `initialState.x` — `(t, r, θ, φ)` in **(s, m, rad, rad)** (SI).
|
|
184
|
+
* - `initialState.p` — covariant 4-momentum `p_μ = g_μν v^ν` in
|
|
185
|
+
* **(J·s, kg·m, kg·m², kg·m²)** under the affine normalization
|
|
186
|
+
* `p_t = −c²` used by `evaluateBE37CovariantEikonalNumerical`.
|
|
187
|
+
* - `tauMax` — affine-parameter (proper-time for timelike, coordinate-
|
|
188
|
+
* time-like for the null normalization) extent in **seconds** under
|
|
189
|
+
* the BE-37 convention; **dimensionless** if the caller chose
|
|
190
|
+
* geometric units. The integrator does not enforce a choice.
|
|
191
|
+
* - `domainMinRadius` — radial coordinate lower bound in the same length
|
|
192
|
+
* units as `initialState.x[1]` (typically **metres** for SI).
|
|
193
|
+
*
|
|
194
|
+
* @param initialState — canonical (x, p) at τ = 0. Units follow the
|
|
195
|
+
* `gInverseFn` convention (see above).
|
|
196
|
+
* @param options — see {@link GL4Options}:
|
|
197
|
+
* - `steps` — integer step count (dimensionless).
|
|
198
|
+
* - `tauMax` — affine-parameter extent (seconds in canonical SI).
|
|
199
|
+
* - `gInverseFn(x)[μ][ν]` — inverse metric g^{μν}(x).
|
|
200
|
+
* - `dgInverseFn(x)[λ][μ][ν]` — ∂_λ g^{μν}(x).
|
|
201
|
+
* - `picardTol` — convergence tolerance (dimensionless, default 1e-12).
|
|
202
|
+
* - `picardMaxIter` — fixed-point iteration cap (dimensionless, default 50).
|
|
203
|
+
* - `hMin` — step-halving floor (same units as `tauMax / steps`).
|
|
204
|
+
* - `domainMinRadius` — radial cutoff (same units as `initialState.x[1]`).
|
|
159
205
|
* @returns `steps + 1` snapshots: index `0` is the initial state, index `n`
|
|
160
|
-
* is the state after `n` steps (τ = n · h).
|
|
206
|
+
* is the state after `n` steps (τ = n · h). Each snapshot carries `tau`,
|
|
207
|
+
* `x`, `p` (and optional `v` = g^{μν} p_ν) in the units chosen above.
|
|
161
208
|
* @throws NumericalBackendError if `initialState.x[1] < domainMinRadius`.
|
|
162
209
|
* @throws GL4ConvergenceError if Picard fails even after step-halving to h_min.
|
|
163
210
|
*
|
|
164
211
|
* @public
|
|
165
212
|
*/
|
|
166
213
|
export declare function integrateGeodesicGL4(initialState: GL4State, options: GL4Options): readonly GL4Snapshot[];
|
|
214
|
+
export {};
|
|
167
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
|
|
1
|
+
{"version":3,"file":"gl4-integrator.d.ts","sourceRoot":"","sources":["../../src/numerical/gl4-integrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,8 @@ const SQRT3_OVER_6 = Math.sqrt(3) / 6;
|
|
|
31
31
|
*
|
|
32
32
|
* c₁ = ½ − √3/6, c₂ = ½ + √3/6.
|
|
33
33
|
*
|
|
34
|
-
* @
|
|
34
|
+
* @internal — exported for unit tests pinning the Butcher tableau invariants.
|
|
35
|
+
* Public callers should use {@link integrateGeodesicGL4}, not the raw constants.
|
|
35
36
|
*/
|
|
36
37
|
export const GL4_C = [0.5 - SQRT3_OVER_6, 0.5 + SQRT3_OVER_6];
|
|
37
38
|
/**
|
|
@@ -43,7 +44,8 @@ export const GL4_C = [0.5 - SQRT3_OVER_6, 0.5 + SQRT3_OVER_6];
|
|
|
43
44
|
*
|
|
44
45
|
* (Hairer/Lubich/Wanner §II.1, Table 1.1.)
|
|
45
46
|
*
|
|
46
|
-
* @
|
|
47
|
+
* @internal — exported for unit tests pinning the Butcher tableau invariants.
|
|
48
|
+
* Public callers should use {@link integrateGeodesicGL4}, not the raw constants.
|
|
47
49
|
*/
|
|
48
50
|
export const GL4_A = [
|
|
49
51
|
[0.25, 0.25 - SQRT3_OVER_6],
|
|
@@ -53,7 +55,8 @@ export const GL4_A = [
|
|
|
53
55
|
* GL4 stage weights — the 2-point Gauss-Legendre quadrature weights on
|
|
54
56
|
* [0,1]: b₁ = b₂ = ½.
|
|
55
57
|
*
|
|
56
|
-
* @
|
|
58
|
+
* @internal — exported for unit tests pinning the Butcher tableau invariants.
|
|
59
|
+
* Public callers should use {@link integrateGeodesicGL4}, not the raw constants.
|
|
57
60
|
*/
|
|
58
61
|
export const GL4_B = [0.5, 0.5];
|
|
59
62
|
/**
|
|
@@ -84,12 +87,25 @@ export const GL4_B = [0.5, 0.5];
|
|
|
84
87
|
*/
|
|
85
88
|
export function solveGL4Stage(state, h, gInverseFn, dgInverseFn, opts) {
|
|
86
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)];
|
|
87
99
|
// Initial guess: stage values = state values (k=0 of fixed-point iteration).
|
|
88
|
-
|
|
89
|
-
|
|
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;
|
|
90
108
|
for (let k = 0; k < opts.picardMaxIter; k++) {
|
|
91
|
-
const Xnew = [new Array(dim).fill(0), new Array(dim).fill(0)];
|
|
92
|
-
const Pnew = [new Array(dim).fill(0), new Array(dim).fill(0)];
|
|
93
109
|
for (let i = 0; i < 2; i++) {
|
|
94
110
|
// dx^μ/dτ at stage j = g^{μν}(X_j) P_{j,ν}
|
|
95
111
|
// dp_μ/dτ at stage j = −½ (∂_μ g^νρ)(X_j) P_{j,ν} P_{j,ρ}
|
|
@@ -127,12 +143,15 @@ export function solveGL4Stage(state, h, gInverseFn, dgInverseFn, opts) {
|
|
|
127
143
|
maxDelta = Math.max(maxDelta, Math.abs(Pnew[i][mu] - P[i][mu]));
|
|
128
144
|
}
|
|
129
145
|
}
|
|
130
|
-
|
|
131
|
-
|
|
146
|
+
// Ping-pong swap: read-from + write-to buffers exchange roles for next iter.
|
|
147
|
+
[X, Xnew] = [Xnew, X];
|
|
148
|
+
[P, Pnew] = [Pnew, P];
|
|
132
149
|
if (maxDelta < opts.picardTol) {
|
|
150
|
+
// Clone on return — caller may retain references and the next
|
|
151
|
+
// solveGL4Stage call will overwrite our internal buffers.
|
|
133
152
|
return {
|
|
134
|
-
stageX: [X[0], X[1]],
|
|
135
|
-
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])],
|
|
136
155
|
iterations: k + 1,
|
|
137
156
|
};
|
|
138
157
|
}
|
|
@@ -224,18 +243,41 @@ function updateMomentumFromStages(pPrev, h, stageX, stageP, dgInverseFn) {
|
|
|
224
243
|
* domain crossing is not checked here — callers needing that supply a
|
|
225
244
|
* `gInverseFn` that throws on out-of-domain input.
|
|
226
245
|
*
|
|
227
|
-
*
|
|
228
|
-
*
|
|
229
|
-
*
|
|
246
|
+
* **Units.** The integrator is metric-agnostic — units follow the units of
|
|
247
|
+
* the supplied `gInverseFn` and `initialState`. For UPT's canonical SI
|
|
248
|
+
* Schwarzschild applications (BE-37 Shapiro delay, BE-52 Mercury):
|
|
249
|
+
* - `initialState.x` — `(t, r, θ, φ)` in **(s, m, rad, rad)** (SI).
|
|
250
|
+
* - `initialState.p` — covariant 4-momentum `p_μ = g_μν v^ν` in
|
|
251
|
+
* **(J·s, kg·m, kg·m², kg·m²)** under the affine normalization
|
|
252
|
+
* `p_t = −c²` used by `evaluateBE37CovariantEikonalNumerical`.
|
|
253
|
+
* - `tauMax` — affine-parameter (proper-time for timelike, coordinate-
|
|
254
|
+
* time-like for the null normalization) extent in **seconds** under
|
|
255
|
+
* the BE-37 convention; **dimensionless** if the caller chose
|
|
256
|
+
* geometric units. The integrator does not enforce a choice.
|
|
257
|
+
* - `domainMinRadius` — radial coordinate lower bound in the same length
|
|
258
|
+
* units as `initialState.x[1]` (typically **metres** for SI).
|
|
259
|
+
*
|
|
260
|
+
* @param initialState — canonical (x, p) at τ = 0. Units follow the
|
|
261
|
+
* `gInverseFn` convention (see above).
|
|
262
|
+
* @param options — see {@link GL4Options}:
|
|
263
|
+
* - `steps` — integer step count (dimensionless).
|
|
264
|
+
* - `tauMax` — affine-parameter extent (seconds in canonical SI).
|
|
265
|
+
* - `gInverseFn(x)[μ][ν]` — inverse metric g^{μν}(x).
|
|
266
|
+
* - `dgInverseFn(x)[λ][μ][ν]` — ∂_λ g^{μν}(x).
|
|
267
|
+
* - `picardTol` — convergence tolerance (dimensionless, default 1e-12).
|
|
268
|
+
* - `picardMaxIter` — fixed-point iteration cap (dimensionless, default 50).
|
|
269
|
+
* - `hMin` — step-halving floor (same units as `tauMax / steps`).
|
|
270
|
+
* - `domainMinRadius` — radial cutoff (same units as `initialState.x[1]`).
|
|
230
271
|
* @returns `steps + 1` snapshots: index `0` is the initial state, index `n`
|
|
231
|
-
* is the state after `n` steps (τ = n · h).
|
|
272
|
+
* is the state after `n` steps (τ = n · h). Each snapshot carries `tau`,
|
|
273
|
+
* `x`, `p` (and optional `v` = g^{μν} p_ν) in the units chosen above.
|
|
232
274
|
* @throws NumericalBackendError if `initialState.x[1] < domainMinRadius`.
|
|
233
275
|
* @throws GL4ConvergenceError if Picard fails even after step-halving to h_min.
|
|
234
276
|
*
|
|
235
277
|
* @public
|
|
236
278
|
*/
|
|
237
279
|
export function integrateGeodesicGL4(initialState, options) {
|
|
238
|
-
const { steps, tauMax, gInverseFn, dgInverseFn, picardTol = 1e-12, picardMaxIter = 50, hMin, domainMinRadius, } = options;
|
|
280
|
+
const { steps, tauMax, gInverseFn, dgInverseFn, picardTol = 1e-12, picardMaxIter = 50, hMin, domainMinRadius, onStep, } = options;
|
|
239
281
|
if (domainMinRadius !== undefined && initialState.x[1] < domainMinRadius) {
|
|
240
282
|
throw new NumericalBackendError(`GL4 integrator: initial r=${initialState.x[1]} < domainMinRadius=${domainMinRadius} (domain violation)`);
|
|
241
283
|
}
|
|
@@ -251,6 +293,7 @@ export function integrateGeodesicGL4(initialState, options) {
|
|
|
251
293
|
// I4: adaptive step-halving loop (not single-retry) on Picard non-convergence.
|
|
252
294
|
let stepH = h;
|
|
253
295
|
let stepSucceeded = false;
|
|
296
|
+
let halvings = 0;
|
|
254
297
|
while (stepH >= hFloor) {
|
|
255
298
|
try {
|
|
256
299
|
stages = solveGL4Stage({ x, p }, stepH, gInverseFn, dgInverseFn, {
|
|
@@ -262,6 +305,7 @@ export function integrateGeodesicGL4(initialState, options) {
|
|
|
262
305
|
}
|
|
263
306
|
catch {
|
|
264
307
|
stepH /= 2;
|
|
308
|
+
halvings++;
|
|
265
309
|
}
|
|
266
310
|
}
|
|
267
311
|
if (!stepSucceeded || stages === undefined) {
|
|
@@ -270,6 +314,9 @@ export function integrateGeodesicGL4(initialState, options) {
|
|
|
270
314
|
x = updateFromStages(x, h, stages.stageX, stages.stageP, gInverseFn);
|
|
271
315
|
p = updateMomentumFromStages(p, h, stages.stageX, stages.stageP, dgInverseFn);
|
|
272
316
|
snapshots.push({ tau: (n + 1) * h, x: x.slice(), p: p.slice() });
|
|
317
|
+
if (onStep !== undefined) {
|
|
318
|
+
onStep({ step: n, iterations: stages.iterations, halvings });
|
|
319
|
+
}
|
|
273
320
|
}
|
|
274
321
|
return snapshots;
|
|
275
322
|
}
|
|
@@ -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
|
|
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"}
|