universal-physics-tensor 8.0.0 → 10.0.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 +26 -21
- package/data/atlas/atlas.json +75 -64
- package/data/atlas/atlas.jsonld +1 -1
- package/data/atlas/diffusion.json +23 -22
- package/data/atlas/oscillators.json +21 -16
- package/data/atlas/waves.json +33 -28
- package/data/bridge-catalog.json +1356 -1791
- package/data/bridge-catalog.schema.json +789 -46
- package/data/quantities.json +280 -234
- package/data/quantities.schema.json +52 -0
- package/data/schemas/atlas-record.v0.json +184 -46
- package/data/units.json +1178 -0
- package/data/units.schema.json +124 -0
- package/dist/atlas/applicability.d.ts.map +1 -1
- package/dist/atlas/applicability.js +14 -3
- package/dist/atlas/applicability.js.map +1 -1
- package/dist/atlas/association.d.ts +1 -1
- package/dist/atlas/association.js.map +1 -1
- package/dist/atlas/benchmark/backend-shapes.d.ts.map +1 -1
- package/dist/atlas/benchmark/backend-shapes.js +5 -1
- package/dist/atlas/benchmark/backend-shapes.js.map +1 -1
- package/dist/atlas/benchmark/baselines.d.ts.map +1 -1
- package/dist/atlas/benchmark/baselines.js +8 -0
- package/dist/atlas/benchmark/baselines.js.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts +3 -2
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.js +16 -12
- package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -1
- package/dist/atlas/benchmark/leakage.js.map +1 -1
- package/dist/atlas/benchmark/loader.js.map +1 -1
- package/dist/atlas/benchmark/run-atlas.d.ts.map +1 -1
- package/dist/atlas/benchmark/run-atlas.js +14 -2
- package/dist/atlas/benchmark/run-atlas.js.map +1 -1
- package/dist/atlas/benchmark/stats.d.ts +1 -1
- package/dist/atlas/benchmark/stats.d.ts.map +1 -1
- package/dist/atlas/benchmark/stats.js +1 -1
- package/dist/atlas/benchmark/stats.js.map +1 -1
- package/dist/atlas/benchmark/study.js.map +1 -1
- package/dist/atlas/benchmark/types.js.map +1 -1
- package/dist/atlas/bridge-record.d.ts +4 -4
- package/dist/atlas/bridge-record.d.ts.map +1 -1
- package/dist/atlas/bridge-record.js +6 -6
- package/dist/atlas/bridge-record.js.map +1 -1
- package/dist/atlas/catalog-formal-ref.js.map +1 -1
- package/dist/atlas/chain-pipeline.d.ts +0 -11
- package/dist/atlas/chain-pipeline.d.ts.map +1 -1
- package/dist/atlas/chain-pipeline.js +5 -16
- package/dist/atlas/chain-pipeline.js.map +1 -1
- package/dist/atlas/composition-table.js.map +1 -1
- package/dist/atlas/conventions.js.map +1 -1
- package/dist/atlas/coverage.d.ts +2 -2
- package/dist/atlas/coverage.js.map +1 -1
- package/dist/atlas/derivation.js.map +1 -1
- package/dist/atlas/derive-evidence.d.ts +6 -4
- package/dist/atlas/derive-evidence.d.ts.map +1 -1
- package/dist/atlas/derive-evidence.js +7 -2
- package/dist/atlas/derive-evidence.js.map +1 -1
- package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/diffusion/bridges-closure.js +0 -5
- package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
- package/dist/atlas/diffusion/bridges.d.ts.map +1 -1
- package/dist/atlas/diffusion/bridges.js +0 -3
- package/dist/atlas/diffusion/bridges.js.map +1 -1
- package/dist/atlas/diffusion/dimensions.js.map +1 -1
- package/dist/atlas/diffusion/index.d.ts +1 -1
- package/dist/atlas/diffusion/index.d.ts.map +1 -1
- package/dist/atlas/diffusion/index.js.map +1 -1
- package/dist/atlas/diffusion/models.js.map +1 -1
- package/dist/atlas/diffusion/numerics.js.map +1 -1
- package/dist/atlas/error-algebra.d.ts +6 -0
- package/dist/atlas/error-algebra.d.ts.map +1 -1
- package/dist/atlas/error-algebra.js +26 -0
- package/dist/atlas/error-algebra.js.map +1 -1
- package/dist/atlas/export.d.ts +18 -2
- package/dist/atlas/export.d.ts.map +1 -1
- package/dist/atlas/export.js +9 -3
- package/dist/atlas/export.js.map +1 -1
- package/dist/atlas/families.d.ts +19 -2
- package/dist/atlas/families.d.ts.map +1 -1
- package/dist/atlas/families.js +26 -3
- package/dist/atlas/families.js.map +1 -1
- package/dist/atlas/family.d.ts +27 -0
- package/dist/atlas/family.d.ts.map +1 -0
- package/dist/atlas/family.js +12 -0
- package/dist/atlas/family.js.map +1 -0
- package/dist/atlas/index.d.ts +3 -2
- package/dist/atlas/index.d.ts.map +1 -1
- package/dist/atlas/index.js +2 -1
- package/dist/atlas/index.js.map +1 -1
- package/dist/atlas/link-prediction.d.ts +1 -1
- package/dist/atlas/link-prediction.d.ts.map +1 -1
- package/dist/atlas/link-prediction.js.map +1 -1
- package/dist/atlas/model.js.map +1 -1
- package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-coarse.js +0 -1
- package/dist/atlas/oscillators/bridges-coarse.js.map +1 -1
- package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-exact.js +0 -3
- package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.js +0 -2
- package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
- package/dist/atlas/oscillators/dimensions.js.map +1 -1
- package/dist/atlas/oscillators/index.d.ts +1 -16
- package/dist/atlas/oscillators/index.d.ts.map +1 -1
- package/dist/atlas/oscillators/index.js.map +1 -1
- package/dist/atlas/oscillators/limit-witnesses.js.map +1 -1
- package/dist/atlas/oscillators/models.js.map +1 -1
- package/dist/atlas/oscillators/norm-transport-witness.js.map +1 -1
- package/dist/atlas/oscillators/norm-transport.js.map +1 -1
- package/dist/atlas/oscillators/norms.js.map +1 -1
- package/dist/atlas/oscillators/pendulum-motion.js.map +1 -1
- package/dist/atlas/oscillators/phase-carriage.js.map +1 -1
- package/dist/atlas/oscillators/phase-translation.js.map +1 -1
- package/dist/atlas/oscillators/position-translation.js.map +1 -1
- package/dist/atlas/oscillators/rejections.js.map +1 -1
- package/dist/atlas/path-bound.js.map +1 -1
- package/dist/atlas/physjs-entries.generated.d.ts +1601 -220
- package/dist/atlas/physjs-entries.generated.d.ts.map +1 -1
- package/dist/atlas/physjs-entries.generated.js +1854 -345
- package/dist/atlas/physjs-entries.generated.js.map +1 -1
- package/dist/atlas/physjs-ref.d.ts +151 -117
- package/dist/atlas/physjs-ref.d.ts.map +1 -1
- package/dist/atlas/physjs-ref.js +244 -211
- package/dist/atlas/physjs-ref.js.map +1 -1
- package/dist/atlas/physjs-reviewed.d.ts +31 -0
- package/dist/atlas/physjs-reviewed.d.ts.map +1 -0
- package/dist/atlas/physjs-reviewed.js +194 -0
- package/dist/atlas/physjs-reviewed.js.map +1 -0
- package/dist/atlas/poster/associations.js.map +1 -1
- package/dist/atlas/poster/derivations.js.map +1 -1
- package/dist/atlas/poster/statements.js.map +1 -1
- package/dist/atlas/proof-target.d.ts +16 -8
- package/dist/atlas/proof-target.d.ts.map +1 -1
- package/dist/atlas/proof-target.js +34 -31
- package/dist/atlas/proof-target.js.map +1 -1
- package/dist/atlas/public.d.ts +2 -1
- package/dist/atlas/public.d.ts.map +1 -1
- package/dist/atlas/public.js +2 -1
- package/dist/atlas/public.js.map +1 -1
- package/dist/atlas/regime.js.map +1 -1
- package/dist/atlas/serialize.d.ts +18 -12
- package/dist/atlas/serialize.d.ts.map +1 -1
- package/dist/atlas/serialize.js +28 -18
- package/dist/atlas/serialize.js.map +1 -1
- package/dist/atlas/statement.js.map +1 -1
- package/dist/atlas/translation-registry.js.map +1 -1
- package/dist/atlas/translation.js.map +1 -1
- package/dist/atlas/types.d.ts +9 -2
- package/dist/atlas/types.d.ts.map +1 -1
- package/dist/atlas/types.js +1 -1
- package/dist/atlas/types.js.map +1 -1
- package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/waves/bridges-closure.js +0 -3
- package/dist/atlas/waves/bridges-closure.js.map +1 -1
- package/dist/atlas/waves/bridges.d.ts.map +1 -1
- package/dist/atlas/waves/bridges.js +0 -4
- package/dist/atlas/waves/bridges.js.map +1 -1
- package/dist/atlas/waves/index.d.ts +1 -1
- package/dist/atlas/waves/index.d.ts.map +1 -1
- package/dist/atlas/waves/index.js.map +1 -1
- package/dist/atlas/waves/models.js.map +1 -1
- package/dist/atlas/waves/numerics.js.map +1 -1
- package/dist/atlas/witness-artifact.js.map +1 -1
- package/dist/atlas/witness-dominance.d.ts +4 -3
- package/dist/atlas/witness-dominance.d.ts.map +1 -1
- package/dist/atlas/witness-dominance.js +15 -5
- package/dist/atlas/witness-dominance.js.map +1 -1
- package/dist/atlas/witness-numeric.d.ts +8 -4
- package/dist/atlas/witness-numeric.d.ts.map +1 -1
- package/dist/atlas/witness-numeric.js +27 -2
- package/dist/atlas/witness-numeric.js.map +1 -1
- package/dist/atlas/witness-result.d.ts +7 -1
- package/dist/atlas/witness-result.d.ts.map +1 -1
- package/dist/atlas/witness-result.js.map +1 -1
- package/dist/atlas/witness-specs.js.map +1 -1
- package/dist/atlas/witness-symbolic.js.map +1 -1
- package/dist/atlas/witnesses/quantum-support.js.map +1 -1
- package/dist/bridges/caller-table.d.ts +1 -1
- package/dist/bridges/caller-table.d.ts.map +1 -1
- package/dist/bridges/caller-table.js.map +1 -1
- package/dist/bridges/carrier-sign.d.ts.map +1 -1
- package/dist/bridges/carrier-sign.js +8 -3
- package/dist/bridges/carrier-sign.js.map +1 -1
- package/dist/bridges/catalog-adapter.d.ts +12 -3
- package/dist/bridges/catalog-adapter.d.ts.map +1 -1
- package/dist/bridges/catalog-adapter.js +22 -14
- package/dist/bridges/catalog-adapter.js.map +1 -1
- package/dist/bridges/catalog-load.d.ts +19 -2
- package/dist/bridges/catalog-load.d.ts.map +1 -1
- package/dist/bridges/catalog-load.js +233 -14
- package/dist/bridges/catalog-load.js.map +1 -1
- package/dist/bridges/catalog-types.d.ts +96 -27
- package/dist/bridges/catalog-types.d.ts.map +1 -1
- package/dist/bridges/catalog-types.js.map +1 -1
- package/dist/bridges/coefficient-statement.js +1 -5
- package/dist/bridges/coefficient-statement.js.map +1 -1
- package/dist/bridges/confrontation-coverage.js.map +1 -1
- package/dist/bridges/confrontations.d.ts +1 -1
- package/dist/bridges/confrontations.d.ts.map +1 -1
- package/dist/bridges/confrontations.js +1 -1
- package/dist/bridges/confrontations.js.map +1 -1
- package/dist/bridges/evaluation-errors.d.ts +89 -0
- package/dist/bridges/evaluation-errors.d.ts.map +1 -0
- package/dist/bridges/evaluation-errors.js +136 -0
- package/dist/bridges/evaluation-errors.js.map +1 -0
- package/dist/bridges/evaluator-inputs.d.ts +5 -3
- package/dist/bridges/evaluator-inputs.d.ts.map +1 -1
- package/dist/bridges/evaluator-inputs.js +24 -24
- package/dist/bridges/evaluator-inputs.js.map +1 -1
- package/dist/bridges/evaluators.d.ts +48 -8
- package/dist/bridges/evaluators.d.ts.map +1 -1
- package/dist/bridges/evaluators.js +173 -38
- package/dist/bridges/evaluators.js.map +1 -1
- package/dist/bridges/expr-parse.d.ts +38 -7
- package/dist/bridges/expr-parse.d.ts.map +1 -1
- package/dist/bridges/expr-parse.js +129 -156
- package/dist/bridges/expr-parse.js.map +1 -1
- package/dist/bridges/holds.d.ts +16 -8
- package/dist/bridges/holds.d.ts.map +1 -1
- package/dist/bridges/holds.js +130 -236
- package/dist/bridges/holds.js.map +1 -1
- package/dist/bridges/index.d.ts +15 -14
- package/dist/bridges/index.d.ts.map +1 -1
- package/dist/bridges/index.js +14 -15
- package/dist/bridges/index.js.map +1 -1
- package/dist/bridges/input-contract.d.ts +65 -0
- package/dist/bridges/input-contract.d.ts.map +1 -0
- package/dist/bridges/input-contract.js +97 -0
- package/dist/bridges/input-contract.js.map +1 -0
- package/dist/bridges/membership.d.ts +5 -3
- package/dist/bridges/membership.d.ts.map +1 -1
- package/dist/bridges/membership.js +5 -6
- package/dist/bridges/membership.js.map +1 -1
- package/dist/bridges/notices.d.ts +11 -0
- package/dist/bridges/notices.d.ts.map +1 -0
- package/dist/bridges/notices.js +22 -0
- package/dist/bridges/notices.js.map +1 -0
- package/dist/bridges/observations/types.js.map +1 -1
- package/dist/bridges/rejected.d.ts +11 -17
- package/dist/bridges/rejected.d.ts.map +1 -1
- package/dist/bridges/rejected.js +13 -68
- package/dist/bridges/rejected.js.map +1 -1
- package/dist/bridges/relation-eval.d.ts +5 -6
- package/dist/bridges/relation-eval.d.ts.map +1 -1
- package/dist/bridges/relation-eval.js +9 -38
- package/dist/bridges/relation-eval.js.map +1 -1
- package/dist/bridges/rhs-registry.js.map +1 -1
- package/dist/bridges/sensitivity.d.ts +11 -3
- package/dist/bridges/sensitivity.d.ts.map +1 -1
- package/dist/bridges/sensitivity.js +24 -10
- package/dist/bridges/sensitivity.js.map +1 -1
- package/dist/bridges/tensor-index.js.map +1 -1
- package/dist/bridges/types.d.ts +1 -7
- package/dist/bridges/types.d.ts.map +1 -1
- package/dist/bridges/types.js +1 -4
- package/dist/bridges/types.js.map +1 -1
- package/dist/canonical/canonical-equation.d.ts +31 -0
- package/dist/canonical/canonical-equation.d.ts.map +1 -1
- package/dist/canonical/canonical-equation.js.map +1 -1
- package/dist/canonical/dimensional-fields.js.map +1 -1
- package/dist/canonical/entries/_l1-build.js.map +1 -1
- package/dist/canonical/entries/atomic.d.ts.map +1 -1
- package/dist/canonical/entries/atomic.js +11 -1
- package/dist/canonical/entries/atomic.js.map +1 -1
- package/dist/canonical/entries/condensed-matter.d.ts.map +1 -1
- package/dist/canonical/entries/condensed-matter.js +7 -4
- package/dist/canonical/entries/condensed-matter.js.map +1 -1
- package/dist/canonical/entries/dimensional-classics.d.ts.map +1 -1
- package/dist/canonical/entries/dimensional-classics.js +50 -2
- package/dist/canonical/entries/dimensional-classics.js.map +1 -1
- package/dist/canonical/entries/electromagnetism.d.ts.map +1 -1
- package/dist/canonical/entries/electromagnetism.js +32 -2
- package/dist/canonical/entries/electromagnetism.js.map +1 -1
- package/dist/canonical/entries/fluids-waves.d.ts.map +1 -1
- package/dist/canonical/entries/fluids-waves.js +34 -0
- package/dist/canonical/entries/fluids-waves.js.map +1 -1
- package/dist/canonical/entries/mechanics.d.ts.map +1 -1
- package/dist/canonical/entries/mechanics.js +24 -0
- package/dist/canonical/entries/mechanics.js.map +1 -1
- package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
- package/dist/canonical/entries/nonmonomial.js +42 -24
- package/dist/canonical/entries/nonmonomial.js.map +1 -1
- package/dist/canonical/entries/relativity.d.ts.map +1 -1
- package/dist/canonical/entries/relativity.js +6 -0
- package/dist/canonical/entries/relativity.js.map +1 -1
- package/dist/canonical/entries/statistical-mechanics.d.ts.map +1 -1
- package/dist/canonical/entries/statistical-mechanics.js +24 -5
- package/dist/canonical/entries/statistical-mechanics.js.map +1 -1
- package/dist/canonical/entries/thermo-nuclear-cosmo.d.ts.map +1 -1
- package/dist/canonical/entries/thermo-nuclear-cosmo.js +15 -0
- package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
- package/dist/canonical/linkage.d.ts +29 -4
- package/dist/canonical/linkage.d.ts.map +1 -1
- package/dist/canonical/linkage.js +31 -29
- package/dist/canonical/linkage.js.map +1 -1
- package/dist/canonical/normal-form.d.ts +0 -8
- package/dist/canonical/normal-form.d.ts.map +1 -1
- package/dist/canonical/normal-form.js +17 -12
- package/dist/canonical/normal-form.js.map +1 -1
- package/dist/canonical/registry.js.map +1 -1
- package/dist/canonical/residual.js.map +1 -1
- package/dist/canonical/seed-l-layer.d.ts +7 -1
- package/dist/canonical/seed-l-layer.d.ts.map +1 -1
- package/dist/canonical/seed-l-layer.js +7 -1
- package/dist/canonical/seed-l-layer.js.map +1 -1
- package/dist/canonical/structural.d.ts +21 -0
- package/dist/canonical/structural.d.ts.map +1 -1
- package/dist/canonical/structural.js +24 -4
- package/dist/canonical/structural.js.map +1 -1
- package/dist/cases/brownian-sphere.js +4 -4
- package/dist/cases/brownian-sphere.js.map +1 -1
- package/dist/cases/damped-resonator.js +2 -2
- package/dist/cases/damped-resonator.js.map +1 -1
- package/dist/cases/index.d.ts +9 -2
- package/dist/cases/index.d.ts.map +1 -1
- package/dist/cases/index.js +26 -7
- package/dist/cases/index.js.map +1 -1
- package/dist/cases/kepler-rv.js +6 -6
- package/dist/cases/kepler-rv.js.map +1 -1
- package/dist/cases/lumped-cooling.js +1 -1
- package/dist/cases/lumped-cooling.js.map +1 -1
- package/dist/cases/quadrature.js.map +1 -1
- package/dist/cases/resistor-noise.js +3 -3
- package/dist/cases/resistor-noise.js.map +1 -1
- package/dist/cases/skin-depth.js.map +1 -1
- package/dist/cases/types.js.map +1 -1
- package/dist/cli/args.d.ts +7 -2
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +18 -2
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/bindings.d.ts +13 -0
- package/dist/cli/bindings.d.ts.map +1 -0
- package/dist/cli/bindings.js +32 -0
- package/dist/cli/bindings.js.map +1 -0
- package/dist/cli/closed-form-range.js.map +1 -1
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/commands/_atlas-map.d.ts +3 -3
- package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
- package/dist/cli/commands/_atlas-map.js +43 -18
- package/dist/cli/commands/_atlas-map.js.map +1 -1
- package/dist/cli/commands/_atlas-route.js.map +1 -1
- package/dist/cli/commands/_discovery-opts.d.ts +2 -1
- package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
- package/dist/cli/commands/_discovery-opts.js +48 -18
- package/dist/cli/commands/_discovery-opts.js.map +1 -1
- package/dist/cli/commands/atlas.d.ts.map +1 -1
- package/dist/cli/commands/atlas.js +7 -12
- package/dist/cli/commands/atlas.js.map +1 -1
- package/dist/cli/commands/audit.d.ts.map +1 -1
- package/dist/cli/commands/audit.js +13 -21
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/axes.js.map +1 -1
- package/dist/cli/commands/candidates.d.ts.map +1 -1
- package/dist/cli/commands/candidates.js +16 -8
- package/dist/cli/commands/candidates.js.map +1 -1
- package/dist/cli/commands/canonical.js.map +1 -1
- package/dist/cli/commands/chain.js +1 -1
- package/dist/cli/commands/chain.js.map +1 -1
- package/dist/cli/commands/confront.d.ts.map +1 -1
- package/dist/cli/commands/confront.js +22 -14
- package/dist/cli/commands/confront.js.map +1 -1
- package/dist/cli/commands/connectors.d.ts.map +1 -1
- package/dist/cli/commands/connectors.js +8 -9
- package/dist/cli/commands/connectors.js.map +1 -1
- package/dist/cli/commands/coverage.js.map +1 -1
- package/dist/cli/commands/derive.d.ts.map +1 -1
- package/dist/cli/commands/derive.js +50 -26
- package/dist/cli/commands/derive.js.map +1 -1
- package/dist/cli/commands/discover.d.ts.map +1 -1
- package/dist/cli/commands/discover.js +18 -13
- package/dist/cli/commands/discover.js.map +1 -1
- package/dist/cli/commands/eval.d.ts.map +1 -1
- package/dist/cli/commands/eval.js +29 -26
- package/dist/cli/commands/eval.js.map +1 -1
- package/dist/cli/commands/evaluate.d.ts +1 -35
- package/dist/cli/commands/evaluate.d.ts.map +1 -1
- package/dist/cli/commands/evaluate.js +99 -208
- package/dist/cli/commands/evaluate.js.map +1 -1
- package/dist/cli/commands/explain.d.ts.map +1 -1
- package/dist/cli/commands/explain.js +57 -45
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/frontier.js.map +1 -1
- package/dist/cli/commands/ground.d.ts.map +1 -1
- package/dist/cli/commands/ground.js +41 -11
- package/dist/cli/commands/ground.js.map +1 -1
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/map.d.ts.map +1 -1
- package/dist/cli/commands/map.js +84 -92
- package/dist/cli/commands/map.js.map +1 -1
- package/dist/cli/commands/metric.d.ts.map +1 -1
- package/dist/cli/commands/metric.js +53 -15
- package/dist/cli/commands/metric.js.map +1 -1
- package/dist/cli/commands/path.js +4 -4
- package/dist/cli/commands/path.js.map +1 -1
- package/dist/cli/commands/predict.js.map +1 -1
- package/dist/cli/commands/priority.js.map +1 -1
- package/dist/cli/commands/probe.d.ts.map +1 -1
- package/dist/cli/commands/probe.js +50 -26
- package/dist/cli/commands/probe.js.map +1 -1
- package/dist/cli/commands/recover.js +1 -1
- package/dist/cli/commands/recover.js.map +1 -1
- package/dist/cli/commands/regime.d.ts +5 -4
- package/dist/cli/commands/regime.d.ts.map +1 -1
- package/dist/cli/commands/regime.js +25 -27
- package/dist/cli/commands/regime.js.map +1 -1
- package/dist/cli/commands/retrieve.d.ts.map +1 -1
- package/dist/cli/commands/retrieve.js +22 -14
- package/dist/cli/commands/retrieve.js.map +1 -1
- package/dist/cli/commands/search.d.ts.map +1 -1
- package/dist/cli/commands/search.js +8 -4
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/symbolic.d.ts.map +1 -1
- package/dist/cli/commands/symbolic.js +14 -7
- package/dist/cli/commands/symbolic.js.map +1 -1
- package/dist/cli/commands/testplan.js +4 -4
- package/dist/cli/commands/testplan.js.map +1 -1
- package/dist/cli/conventions.d.ts +6 -7
- package/dist/cli/conventions.d.ts.map +1 -1
- package/dist/cli/conventions.js +19 -28
- package/dist/cli/conventions.js.map +1 -1
- package/dist/cli/determination.js.map +1 -1
- package/dist/cli/errors.js.map +1 -1
- package/dist/cli/euler-guard.d.ts +13 -2
- package/dist/cli/euler-guard.d.ts.map +1 -1
- package/dist/cli/euler-guard.js +17 -3
- package/dist/cli/euler-guard.js.map +1 -1
- package/dist/cli/eval-numbers.d.ts +4 -9
- package/dist/cli/eval-numbers.d.ts.map +1 -1
- package/dist/cli/eval-numbers.js +11 -41
- package/dist/cli/eval-numbers.js.map +1 -1
- package/dist/cli/expr-print.d.ts +29 -2
- package/dist/cli/expr-print.d.ts.map +1 -1
- package/dist/cli/expr-print.js +46 -2
- package/dist/cli/expr-print.js.map +1 -1
- package/dist/cli/flag-help.js.map +1 -1
- package/dist/cli/graphs.js.map +1 -1
- package/dist/cli/library-defaults.d.ts +19 -0
- package/dist/cli/library-defaults.d.ts.map +1 -0
- package/dist/cli/library-defaults.js +22 -0
- package/dist/cli/library-defaults.js.map +1 -0
- package/dist/cli/main.js +7 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/map-evidence.js.map +1 -1
- package/dist/cli/output.d.ts +3 -6
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/published-url.d.ts +2 -0
- package/dist/cli/published-url.d.ts.map +1 -1
- package/dist/cli/published-url.js +5 -0
- package/dist/cli/published-url.js.map +1 -1
- package/dist/cli/record-reach.d.ts +6 -0
- package/dist/cli/record-reach.d.ts.map +1 -1
- package/dist/cli/record-reach.js +16 -10
- package/dist/cli/record-reach.js.map +1 -1
- package/dist/cli/record-tables.d.ts +2 -1
- package/dist/cli/record-tables.d.ts.map +1 -1
- package/dist/cli/record-tables.js +8 -3
- package/dist/cli/record-tables.js.map +1 -1
- package/dist/cli/record.d.ts.map +1 -1
- package/dist/cli/record.js +31 -12
- package/dist/cli/record.js.map +1 -1
- package/dist/cli/search-index.d.ts +5 -0
- package/dist/cli/search-index.d.ts.map +1 -1
- package/dist/cli/search-index.js +12 -1
- package/dist/cli/search-index.js.map +1 -1
- package/dist/cli/statuses.js.map +1 -1
- package/dist/cli/top-level-help.js.map +1 -1
- package/dist/cli/version.js.map +1 -1
- package/dist/cli-api.d.ts +57 -18
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +49 -21
- package/dist/cli-api.js.map +1 -1
- package/dist/composition/adjudication.d.ts +8 -30
- package/dist/composition/adjudication.d.ts.map +1 -1
- package/dist/composition/adjudication.js +15 -67
- package/dist/composition/adjudication.js.map +1 -1
- package/dist/composition/aliases.d.ts +1 -1
- package/dist/composition/aliases.d.ts.map +1 -1
- package/dist/composition/aliases.js +10 -20
- package/dist/composition/aliases.js.map +1 -1
- package/dist/composition/audit-coverage.d.ts +2 -0
- package/dist/composition/audit-coverage.d.ts.map +1 -1
- package/dist/composition/audit-coverage.js.map +1 -1
- package/dist/composition/axes.d.ts +12 -0
- package/dist/composition/axes.d.ts.map +1 -1
- package/dist/composition/axes.js +18 -6
- package/dist/composition/axes.js.map +1 -1
- package/dist/composition/axis-audit.js.map +1 -1
- package/dist/composition/bridge-analysis.d.ts +0 -14
- package/dist/composition/bridge-analysis.d.ts.map +1 -1
- package/dist/composition/bridge-analysis.js +66 -57
- package/dist/composition/bridge-analysis.js.map +1 -1
- package/dist/composition/bridge-prediction.d.ts +5 -1
- package/dist/composition/bridge-prediction.d.ts.map +1 -1
- package/dist/composition/bridge-prediction.js +12 -16
- package/dist/composition/bridge-prediction.js.map +1 -1
- package/dist/composition/buckingham-filter.js.map +1 -1
- package/dist/composition/canonical-compare.d.ts.map +1 -1
- package/dist/composition/canonical-compare.js +12 -2
- package/dist/composition/canonical-compare.js.map +1 -1
- package/dist/composition/canonical-graph.d.ts +15 -18
- package/dist/composition/canonical-graph.d.ts.map +1 -1
- package/dist/composition/canonical-graph.js +59 -85
- package/dist/composition/canonical-graph.js.map +1 -1
- package/dist/composition/canonical-json.js.map +1 -1
- package/dist/composition/canonical-prefactors.d.ts +10 -29
- package/dist/composition/canonical-prefactors.d.ts.map +1 -1
- package/dist/composition/canonical-prefactors.js +15 -202
- package/dist/composition/canonical-prefactors.js.map +1 -1
- package/dist/composition/catalog-graph.d.ts.map +1 -1
- package/dist/composition/catalog-graph.js +6 -20
- package/dist/composition/catalog-graph.js.map +1 -1
- package/dist/composition/chain-candidate.d.ts +2 -0
- package/dist/composition/chain-candidate.d.ts.map +1 -1
- package/dist/composition/chain-candidate.js +2 -0
- package/dist/composition/chain-candidate.js.map +1 -1
- package/dist/composition/chain-match.js.map +1 -1
- package/dist/composition/chain-regime.js.map +1 -1
- package/dist/composition/chain-result.js.map +1 -1
- package/dist/composition/compose-surface.js.map +1 -1
- package/dist/composition/compose-symbolic.js.map +1 -1
- package/dist/composition/compose.d.ts.map +1 -1
- package/dist/composition/compose.js +154 -36
- package/dist/composition/compose.js.map +1 -1
- package/dist/composition/composition-recovery.js.map +1 -1
- package/dist/composition/consequence.d.ts.map +1 -1
- package/dist/composition/consequence.js +15 -6
- package/dist/composition/consequence.js.map +1 -1
- package/dist/composition/consistency.js.map +1 -1
- package/dist/composition/descriptor.d.ts +1 -1
- package/dist/composition/descriptor.d.ts.map +1 -1
- package/dist/composition/descriptor.js.map +1 -1
- package/dist/composition/dimension-adjacency.js.map +1 -1
- package/dist/composition/discovery.d.ts +67 -7
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +83 -23
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/edge.d.ts +19 -22
- package/dist/composition/edge.d.ts.map +1 -1
- package/dist/composition/edge.js +25 -28
- package/dist/composition/edge.js.map +1 -1
- package/dist/composition/enumerate.d.ts +2 -2
- package/dist/composition/enumerate.d.ts.map +1 -1
- package/dist/composition/enumerate.js.map +1 -1
- package/dist/composition/evaluate-relation.d.ts +29 -5
- package/dist/composition/evaluate-relation.d.ts.map +1 -1
- package/dist/composition/evaluate-relation.js +100 -72
- package/dist/composition/evaluate-relation.js.map +1 -1
- package/dist/composition/explain.d.ts +14 -4
- package/dist/composition/explain.d.ts.map +1 -1
- package/dist/composition/explain.js +53 -19
- package/dist/composition/explain.js.map +1 -1
- package/dist/composition/expr-eval.d.ts.map +1 -1
- package/dist/composition/expr-eval.js +2 -1
- package/dist/composition/expr-eval.js.map +1 -1
- package/dist/composition/expr-simplify.d.ts.map +1 -1
- package/dist/composition/expr-simplify.js +9 -39
- package/dist/composition/expr-simplify.js.map +1 -1
- package/dist/composition/expr-subst.js.map +1 -1
- package/dist/composition/formula-shape.d.ts +9 -0
- package/dist/composition/formula-shape.d.ts.map +1 -1
- package/dist/composition/formula-shape.js +54 -0
- package/dist/composition/formula-shape.js.map +1 -1
- package/dist/composition/frontier-account.d.ts +3 -2
- package/dist/composition/frontier-account.d.ts.map +1 -1
- package/dist/composition/frontier-account.js +7 -3
- package/dist/composition/frontier-account.js.map +1 -1
- package/dist/composition/graph-viz-svg.js.map +1 -1
- package/dist/composition/graph-viz.js.map +1 -1
- package/dist/composition/grounding.js.map +1 -1
- package/dist/composition/identifiability.js.map +1 -1
- package/dist/composition/index.d.ts +9 -5
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +7 -4
- package/dist/composition/index.js.map +1 -1
- package/dist/composition/mathts-quiet.d.ts +28 -0
- package/dist/composition/mathts-quiet.d.ts.map +1 -0
- package/dist/composition/mathts-quiet.js +56 -0
- package/dist/composition/mathts-quiet.js.map +1 -0
- package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -1
- package/dist/composition/mathts-scalar-symbols.js +18 -34
- package/dist/composition/mathts-scalar-symbols.js.map +1 -1
- package/dist/composition/not-composable-seeds.d.ts +3 -1
- package/dist/composition/not-composable-seeds.d.ts.map +1 -1
- package/dist/composition/not-composable-seeds.js +2 -0
- package/dist/composition/not-composable-seeds.js.map +1 -1
- package/dist/composition/probe/backend-protocol.js.map +1 -1
- package/dist/composition/probe/candidate-store.js.map +1 -1
- package/dist/composition/probe/corpus.js.map +1 -1
- package/dist/composition/probe/dataset.js.map +1 -1
- package/dist/composition/probe/experiment-design.js.map +1 -1
- package/dist/composition/probe/expression-gaps.js.map +1 -1
- package/dist/composition/probe/falsify.d.ts +14 -3
- package/dist/composition/probe/falsify.d.ts.map +1 -1
- package/dist/composition/probe/falsify.js +14 -27
- package/dist/composition/probe/falsify.js.map +1 -1
- package/dist/composition/probe/fingerprint.js.map +1 -1
- package/dist/composition/probe/fit.d.ts +1 -1
- package/dist/composition/probe/fit.d.ts.map +1 -1
- package/dist/composition/probe/fit.js +2 -1
- package/dist/composition/probe/fit.js.map +1 -1
- package/dist/composition/probe/frontier.js.map +1 -1
- package/dist/composition/probe/generator.js.map +1 -1
- package/dist/composition/probe/index.d.ts +4 -2
- package/dist/composition/probe/index.d.ts.map +1 -1
- package/dist/composition/probe/index.js +4 -2
- package/dist/composition/probe/index.js.map +1 -1
- package/dist/composition/probe/limits.js.map +1 -1
- package/dist/composition/probe/metadata.js.map +1 -1
- package/dist/composition/probe/pipeline.d.ts +5 -0
- package/dist/composition/probe/pipeline.d.ts.map +1 -1
- package/dist/composition/probe/pipeline.js +13 -6
- package/dist/composition/probe/pipeline.js.map +1 -1
- package/dist/composition/probe/problem.d.ts +8 -0
- package/dist/composition/probe/problem.d.ts.map +1 -1
- package/dist/composition/probe/problem.js +78 -12
- package/dist/composition/probe/problem.js.map +1 -1
- package/dist/composition/probe/report.js.map +1 -1
- package/dist/composition/probe/residual.js.map +1 -1
- package/dist/composition/probe/run-manifest.js +2 -2
- package/dist/composition/probe/run-manifest.js.map +1 -1
- package/dist/composition/probe/scoring.d.ts +2 -1
- package/dist/composition/probe/scoring.d.ts.map +1 -1
- package/dist/composition/probe/scoring.js +21 -7
- package/dist/composition/probe/scoring.js.map +1 -1
- package/dist/composition/probe/search-budget.js.map +1 -1
- package/dist/composition/probe/serialize.js.map +1 -1
- package/dist/composition/probe/structure.js.map +1 -1
- package/dist/composition/probe/study.d.ts +4 -3
- package/dist/composition/probe/study.d.ts.map +1 -1
- package/dist/composition/probe/study.js +5 -3
- package/dist/composition/probe/study.js.map +1 -1
- package/dist/composition/probe/types.d.ts +3 -1
- package/dist/composition/probe/types.d.ts.map +1 -1
- package/dist/composition/probe/types.js +2 -0
- package/dist/composition/probe/types.js.map +1 -1
- package/dist/composition/proposed-bridges.d.ts +11 -4
- package/dist/composition/proposed-bridges.d.ts.map +1 -1
- package/dist/composition/proposed-bridges.js +14 -6
- package/dist/composition/proposed-bridges.js.map +1 -1
- package/dist/composition/quantities.d.ts +0 -4
- package/dist/composition/quantities.d.ts.map +1 -1
- package/dist/composition/quantities.js +5 -5
- package/dist/composition/quantities.js.map +1 -1
- package/dist/composition/quantity.d.ts +18 -2
- package/dist/composition/quantity.d.ts.map +1 -1
- package/dist/composition/quantity.js +35 -6
- package/dist/composition/quantity.js.map +1 -1
- package/dist/composition/representative-values.js.map +1 -1
- package/dist/composition/retrodiction.d.ts +18 -0
- package/dist/composition/retrodiction.d.ts.map +1 -1
- package/dist/composition/retrodiction.js +37 -7
- package/dist/composition/retrodiction.js.map +1 -1
- package/dist/composition/uncertainty.js.map +1 -1
- package/dist/composition/user-equation.d.ts +11 -7
- package/dist/composition/user-equation.d.ts.map +1 -1
- package/dist/composition/user-equation.js +24 -26
- package/dist/composition/user-equation.js.map +1 -1
- package/dist/core/axes-registry.d.ts +8 -5
- package/dist/core/axes-registry.d.ts.map +1 -1
- package/dist/core/axes-registry.js.map +1 -1
- package/dist/core/cell.js.map +1 -1
- package/dist/core/constants.d.ts +35 -12
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +46 -15
- package/dist/core/constants.js.map +1 -1
- package/dist/core/data-file.d.ts +27 -0
- package/dist/core/data-file.d.ts.map +1 -0
- package/dist/core/data-file.js +48 -0
- package/dist/core/data-file.js.map +1 -0
- package/dist/core/flux-rules.js +1 -1
- package/dist/core/flux-rules.js.map +1 -1
- package/dist/core/json-schema.d.ts +27 -0
- package/dist/core/json-schema.d.ts.map +1 -0
- package/dist/core/json-schema.js +177 -0
- package/dist/core/json-schema.js.map +1 -0
- package/dist/core/labeled-tensor.d.ts +6 -1
- package/dist/core/labeled-tensor.d.ts.map +1 -1
- package/dist/core/labeled-tensor.js +18 -8
- package/dist/core/labeled-tensor.js.map +1 -1
- package/dist/core/regime-registry.d.ts +6 -2
- package/dist/core/regime-registry.d.ts.map +1 -1
- package/dist/core/regime-registry.js.map +1 -1
- package/dist/core/regime-rule-install.js.map +1 -1
- package/dist/core/regimes-builtins.js.map +1 -1
- package/dist/core/tensor.d.ts +7 -4
- package/dist/core/tensor.d.ts.map +1 -1
- package/dist/core/tensor.js +40 -8
- package/dist/core/tensor.js.map +1 -1
- package/dist/core/types.d.ts +3 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +16 -14
- package/dist/core/types.js.map +1 -1
- package/dist/core/universal-index.js.map +1 -1
- package/dist/diff/bridge-ast-gradient.d.ts +4 -5
- package/dist/diff/bridge-ast-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-ast-gradient.js +16 -23
- package/dist/diff/bridge-ast-gradient.js.map +1 -1
- package/dist/diff/bridge-gradient.d.ts +24 -80
- package/dist/diff/bridge-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-gradient.js +21 -98
- package/dist/diff/bridge-gradient.js.map +1 -1
- package/dist/diff/bridge-specs.d.ts +18 -6
- package/dist/diff/bridge-specs.d.ts.map +1 -1
- package/dist/diff/bridge-specs.js +17 -5
- package/dist/diff/bridge-specs.js.map +1 -1
- package/dist/dimensional/algebra.js.map +1 -1
- package/dist/dimensional/ast-builders.d.ts +5 -4
- package/dist/dimensional/ast-builders.d.ts.map +1 -1
- package/dist/dimensional/ast-builders.js +6 -5
- package/dist/dimensional/ast-builders.js.map +1 -1
- package/dist/dimensional/ast-types.js.map +1 -1
- package/dist/dimensional/bridge-check.d.ts.map +1 -1
- package/dist/dimensional/bridge-check.js +3 -5
- package/dist/dimensional/bridge-check.js.map +1 -1
- package/dist/dimensional/buckingham.js.map +1 -1
- package/dist/dimensional/connection-validators.d.ts +2 -1
- package/dist/dimensional/connection-validators.d.ts.map +1 -1
- package/dist/dimensional/connection-validators.js.map +1 -1
- package/dist/dimensional/connection.js.map +1 -1
- package/dist/dimensional/constant-rows.d.ts +54 -0
- package/dist/dimensional/constant-rows.d.ts.map +1 -0
- package/dist/dimensional/constant-rows.js +115 -0
- package/dist/dimensional/constant-rows.js.map +1 -0
- package/dist/dimensional/constants.d.ts +7 -17
- package/dist/dimensional/constants.d.ts.map +1 -1
- package/dist/dimensional/constants.js +12 -21
- package/dist/dimensional/constants.js.map +1 -1
- package/dist/dimensional/curvature-composite.js.map +1 -1
- package/dist/dimensional/curvature-invariants.js.map +1 -1
- package/dist/dimensional/curvature.js.map +1 -1
- package/dist/dimensional/dimension-inference.js.map +1 -1
- package/dist/dimensional/dimension-spec.d.ts +21 -6
- package/dist/dimensional/dimension-spec.d.ts.map +1 -1
- package/dist/dimensional/dimension-spec.js +150 -160
- package/dist/dimensional/dimension-spec.js.map +1 -1
- package/dist/dimensional/einstein-equation.js.map +1 -1
- package/dist/dimensional/errors.d.ts +3 -1
- package/dist/dimensional/errors.d.ts.map +1 -1
- package/dist/dimensional/errors.js +2 -2
- package/dist/dimensional/errors.js.map +1 -1
- package/dist/dimensional/exact-scale.d.ts +79 -0
- package/dist/dimensional/exact-scale.d.ts.map +1 -0
- package/dist/dimensional/exact-scale.js +222 -0
- package/dist/dimensional/exact-scale.js.map +1 -0
- package/dist/dimensional/field-equation-helpers.js.map +1 -1
- package/dist/dimensional/formula-names.d.ts +13 -12
- package/dist/dimensional/formula-names.d.ts.map +1 -1
- package/dist/dimensional/formula-names.js +28 -51
- package/dist/dimensional/formula-names.js.map +1 -1
- package/dist/dimensional/fresh-label.js.map +1 -1
- package/dist/dimensional/friedmann-equation.d.ts +3 -3
- package/dist/dimensional/friedmann-equation.js +3 -3
- package/dist/dimensional/friedmann-equation.js.map +1 -1
- package/dist/dimensional/gauge-field.d.ts +2 -3
- package/dist/dimensional/gauge-field.d.ts.map +1 -1
- package/dist/dimensional/gauge-field.js +0 -1
- package/dist/dimensional/gauge-field.js.map +1 -1
- package/dist/dimensional/hyphen-names.d.ts.map +1 -1
- package/dist/dimensional/hyphen-names.js +8 -0
- package/dist/dimensional/hyphen-names.js.map +1 -1
- package/dist/dimensional/killing-validators.js.map +1 -1
- package/dist/dimensional/klein-gordon-equation.js.map +1 -1
- package/dist/dimensional/metric-validators.d.ts +2 -1
- package/dist/dimensional/metric-validators.d.ts.map +1 -1
- package/dist/dimensional/metric-validators.js.map +1 -1
- package/dist/dimensional/metric.js.map +1 -1
- package/dist/dimensional/natural-units.js.map +1 -1
- package/dist/dimensional/quantity-registry.d.ts +23 -1
- package/dist/dimensional/quantity-registry.d.ts.map +1 -1
- package/dist/dimensional/quantity-registry.js +55 -18
- package/dist/dimensional/quantity-registry.js.map +1 -1
- package/dist/dimensional/rg-flow.js.map +1 -1
- package/dist/dimensional/stress-energy-validators.js.map +1 -1
- package/dist/dimensional/symbolic-constants.d.ts +63 -19
- package/dist/dimensional/symbolic-constants.d.ts.map +1 -1
- package/dist/dimensional/symbolic-constants.js +114 -92
- package/dist/dimensional/symbolic-constants.js.map +1 -1
- package/dist/dimensional/tensor-trace.js.map +1 -1
- package/dist/dimensional/tensor.js.map +1 -1
- package/dist/dimensional/types.js.map +1 -1
- package/dist/dimensional/unit-convention.d.ts +0 -2
- package/dist/dimensional/unit-convention.d.ts.map +1 -1
- package/dist/dimensional/unit-convention.js +2 -2
- package/dist/dimensional/unit-convention.js.map +1 -1
- package/dist/dimensional/unit-data.d.ts +70 -0
- package/dist/dimensional/unit-data.d.ts.map +1 -0
- package/dist/dimensional/unit-data.js +139 -0
- package/dist/dimensional/unit-data.js.map +1 -0
- package/dist/dimensional/units.d.ts +87 -24
- package/dist/dimensional/units.d.ts.map +1 -1
- package/dist/dimensional/units.js +290 -295
- package/dist/dimensional/units.js.map +1 -1
- package/dist/dimensional/validator-registry.js.map +1 -1
- package/dist/dimensional/validator.d.ts +0 -16
- package/dist/dimensional/validator.d.ts.map +1 -1
- package/dist/dimensional/validator.js +65 -29
- package/dist/dimensional/validator.js.map +1 -1
- package/dist/dimensional/weyl-validators.js.map +1 -1
- package/dist/index.d.ts +65 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -24
- package/dist/index.js.map +1 -1
- package/dist/numerical/bianchi-residual.js.map +1 -1
- package/dist/numerical/binding-value.d.ts +32 -7
- package/dist/numerical/binding-value.d.ts.map +1 -1
- package/dist/numerical/binding-value.js +218 -209
- package/dist/numerical/binding-value.js.map +1 -1
- package/dist/numerical/christoffel-flat.js.map +1 -1
- package/dist/numerical/connection-lowering-helpers.js.map +1 -1
- package/dist/numerical/covariant-eikonal.d.ts.map +1 -1
- package/dist/numerical/covariant-eikonal.js +2 -2
- package/dist/numerical/covariant-eikonal.js.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.d.ts +20 -0
- package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.js +6 -3
- package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
- package/dist/numerical/derivative-lowering.js.map +1 -1
- package/dist/numerical/einstein-equation.js.map +1 -1
- package/dist/numerical/engine-registry.js.map +1 -1
- package/dist/numerical/errors.d.ts +7 -3
- package/dist/numerical/errors.d.ts.map +1 -1
- package/dist/numerical/errors.js +5 -5
- package/dist/numerical/errors.js.map +1 -1
- package/dist/numerical/evaluator-uncertainty.d.ts +34 -0
- package/dist/numerical/evaluator-uncertainty.d.ts.map +1 -0
- package/dist/numerical/evaluator-uncertainty.js +134 -0
- package/dist/numerical/evaluator-uncertainty.js.map +1 -0
- package/dist/numerical/formula-contract.d.ts +67 -7
- package/dist/numerical/formula-contract.d.ts.map +1 -1
- package/dist/numerical/formula-contract.js +68 -42
- package/dist/numerical/formula-contract.js.map +1 -1
- package/dist/numerical/formula-dimension.d.ts +17 -7
- package/dist/numerical/formula-dimension.d.ts.map +1 -1
- package/dist/numerical/formula-dimension.js +120 -44
- package/dist/numerical/formula-dimension.js.map +1 -1
- package/dist/numerical/formula-mathts.d.ts.map +1 -1
- package/dist/numerical/formula-mathts.js +10 -3
- package/dist/numerical/formula-mathts.js.map +1 -1
- package/dist/numerical/formula-registry.d.ts +13 -3
- package/dist/numerical/formula-registry.d.ts.map +1 -1
- package/dist/numerical/formula-registry.js +7 -2
- package/dist/numerical/formula-registry.js.map +1 -1
- package/dist/numerical/geodesic-integrator.js.map +1 -1
- package/dist/numerical/geometrized.js.map +1 -1
- package/dist/numerical/gl4-integrator.d.ts +28 -27
- package/dist/numerical/gl4-integrator.d.ts.map +1 -1
- package/dist/numerical/gl4-integrator.js +44 -45
- package/dist/numerical/gl4-integrator.js.map +1 -1
- package/dist/numerical/grid-field.js.map +1 -1
- package/dist/numerical/index.js.map +1 -1
- package/dist/numerical/input-validation.d.ts +3 -6
- package/dist/numerical/input-validation.d.ts.map +1 -1
- package/dist/numerical/input-validation.js +4 -8
- package/dist/numerical/input-validation.js.map +1 -1
- package/dist/numerical/killing.d.ts +8 -5
- package/dist/numerical/killing.d.ts.map +1 -1
- package/dist/numerical/killing.js.map +1 -1
- package/dist/numerical/klein-gordon.js.map +1 -1
- package/dist/numerical/kretschmann.js.map +1 -1
- package/dist/numerical/lowering-utils.js.map +1 -1
- package/dist/numerical/lowering.d.ts.map +1 -1
- package/dist/numerical/lowering.js +7 -17
- package/dist/numerical/lowering.js.map +1 -1
- package/dist/numerical/mathts-engine.d.ts.map +1 -1
- package/dist/numerical/mathts-engine.js +11 -6
- package/dist/numerical/mathts-engine.js.map +1 -1
- package/dist/numerical/metric-inverse.js.map +1 -1
- package/dist/numerical/null-ic.js.map +1 -1
- package/dist/numerical/null-ray-integrator.js +4 -4
- package/dist/numerical/null-ray-integrator.js.map +1 -1
- package/dist/numerical/painleve-gullstrand-metric.js.map +1 -1
- package/dist/numerical/pderiv.d.ts.map +1 -1
- package/dist/numerical/pderiv.js +9 -2
- package/dist/numerical/pderiv.js.map +1 -1
- package/dist/numerical/perihelion-finder.js.map +1 -1
- package/dist/numerical/quadrature.d.ts +5 -2
- package/dist/numerical/quadrature.d.ts.map +1 -1
- package/dist/numerical/quadrature.js +20 -3
- package/dist/numerical/quadrature.js.map +1 -1
- package/dist/numerical/spacetime-metrics.d.ts +17 -19
- package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
- package/dist/numerical/spacetime-metrics.js +158 -250
- package/dist/numerical/spacetime-metrics.js.map +1 -1
- package/dist/numerical/strides.js.map +1 -1
- package/dist/numerical/tensor-engine.d.ts +9 -5
- package/dist/numerical/tensor-engine.d.ts.map +1 -1
- package/dist/numerical/tensor-engine.js.map +1 -1
- package/dist/numerical/types.js.map +1 -1
- package/dist/numerical/weyl-lowering.js.map +1 -1
- package/dist/relations/category.js.map +1 -1
- package/dist/relations/composition-table.d.ts +4 -4
- package/dist/relations/composition-table.js +4 -4
- package/dist/relations/composition-table.js.map +1 -1
- package/dist/relations/conventions.js.map +1 -1
- package/dist/relations/domain-regimes.js.map +1 -1
- package/dist/relations/regime-registration.js.map +1 -1
- package/dist/relations/regime-vocabularies.js.map +1 -1
- package/dist/relations/regime.d.ts +18 -8
- package/dist/relations/regime.d.ts.map +1 -1
- package/dist/relations/regime.js +26 -14
- package/dist/relations/regime.js.map +1 -1
- package/dist/relations/types.d.ts +26 -6
- package/dist/relations/types.d.ts.map +1 -1
- package/dist/relations/types.js +15 -3
- package/dist/relations/types.js.map +1 -1
- package/package.json +10 -14
- package/dist/bridges/registry.d.ts +0 -60
- package/dist/bridges/registry.d.ts.map +0 -1
- package/dist/bridges/registry.js +0 -87
- package/dist/bridges/registry.js.map +0 -1
- package/dist/cli/poster-source.d.ts +0 -154
- package/dist/cli/poster-source.d.ts.map +0 -1
- package/dist/cli/poster-source.js +0 -184
- package/dist/cli/poster-source.js.map +0 -1
|
@@ -6,27 +6,39 @@
|
|
|
6
6
|
* node uses the same mostly-plus signature. The Kretschmann scalar does not
|
|
7
7
|
* depend on that choice.
|
|
8
8
|
*
|
|
9
|
-
* Schwarzschild Christoffel symbols are
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
9
|
+
* Schwarzschild and Kerr Christoffel symbols are closed forms; the Kerr
|
|
10
|
+
* ones come from the analytic metric derivatives through the one Christoffel
|
|
11
|
+
* builder (`computeChristoffelTensor`). Riemann, Ricci and Kretschmann are
|
|
12
|
+
* the finite-difference curvature stack of `curvature-lowering-helpers.ts`
|
|
13
|
+
* (`christoffelAt`, `riemannUpperAt`, `lowerFirstIndex`) and
|
|
14
|
+
* `computeKretschmann`, checked in tests against the closed forms
|
|
15
|
+
* (Schwarzschild Kretschmann, flat-dust FLRW Ricci scalar, Kerr
|
|
16
|
+
* Kretschmann). The metric inverse is MathTS `inv`. Kerr geodesics in
|
|
17
|
+
* Boyer–Lindquist coordinates, including inclined ones, take their initial
|
|
18
|
+
* data from the Carter constant and are integrated with the second-order
|
|
19
|
+
* geodesic equation by `integrateGeodesic` (`geodesic-integrator.ts`).
|
|
20
|
+
* This module holds no curvature or geodesic arithmetic of its own.
|
|
15
21
|
*
|
|
16
22
|
* @module numerical/spacetime-metrics
|
|
17
23
|
* @internal
|
|
18
24
|
*/
|
|
19
|
-
import {
|
|
25
|
+
import { det, inv } from '@danielsimonjr/mathts-functions';
|
|
20
26
|
import { C_SI, G_SI, M_SUN_SI } from '../core/constants.js';
|
|
21
27
|
import { DIMENSIONLESS, LENGTH, MASS, MASS_DENSITY, TIME, VELOCITY } from '../dimensional/types.js';
|
|
28
|
+
import { UnitError } from '../dimensional/units.js';
|
|
22
29
|
import { readParameter } from './binding-value.js';
|
|
23
|
-
|
|
30
|
+
import { computeChristoffelTensor } from './connection-lowering-helpers.js';
|
|
31
|
+
import { christoffelAt, lowerFirstIndex, riemannUpperAt } from './curvature-lowering-helpers.js';
|
|
32
|
+
import { integrateGeodesic as integrateGeodesicRK4 } from './geodesic-integrator.js';
|
|
33
|
+
import { computeKretschmann } from './kretschmann.js';
|
|
34
|
+
import { MathTSEngine } from './mathts-engine.js';
|
|
35
|
+
/** The signature this module differentiates; `CurvatureReport.signature` is its type. */
|
|
24
36
|
export const METRIC_SIGNATURE = '(-,+,+,+)';
|
|
25
37
|
/**
|
|
26
38
|
* Printed with every curvature report. The line element and the canonical
|
|
27
39
|
* Einstein-equation metric node share this mostly-plus signature.
|
|
28
40
|
*/
|
|
29
|
-
|
|
41
|
+
const METRIC_SIGNATURE_NOTE = 'Line element signature (−,+,+,+), the same mostly-plus signature as the Schwarzschild fixture ' +
|
|
30
42
|
'and as the canonical Einstein-equation metric node. ' +
|
|
31
43
|
'The Kretschmann scalar does not depend on that choice.';
|
|
32
44
|
const Z = 1e-8;
|
|
@@ -36,145 +48,59 @@ function zeros(n) {
|
|
|
36
48
|
function mat4() {
|
|
37
49
|
return [zeros(4), zeros(4), zeros(4), zeros(4)];
|
|
38
50
|
}
|
|
51
|
+
/** The engine the curvature helpers carry their tensors on. */
|
|
52
|
+
const ENGINE = new MathTSEngine();
|
|
53
|
+
/**
|
|
54
|
+
* The metric inverse, MathTS `inv`. A singular metric is this module's error,
|
|
55
|
+
* decided by MathTS `det` before the inverse is asked for, so no error text is
|
|
56
|
+
* read. `inv` and `det` are typed over every MathTS matrix kind, so their
|
|
57
|
+
* results are read back as the number and the 4×4 number array they are for a
|
|
58
|
+
* number[][] input.
|
|
59
|
+
*/
|
|
39
60
|
function invert4(src) {
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
out[j] = row[j];
|
|
44
|
-
out[4 + i] = 1;
|
|
45
|
-
return out;
|
|
46
|
-
});
|
|
47
|
-
for (let col = 0; col < 4; col++) {
|
|
48
|
-
let pivot = col;
|
|
49
|
-
for (let r = col + 1; r < 4; r++) {
|
|
50
|
-
if (Math.abs(a[r][col]) > Math.abs(a[pivot][col]))
|
|
51
|
-
pivot = r;
|
|
52
|
-
}
|
|
53
|
-
const tmp = a[col];
|
|
54
|
-
a[col] = a[pivot];
|
|
55
|
-
a[pivot] = tmp;
|
|
56
|
-
const div = a[col][col];
|
|
57
|
-
if (!Number.isFinite(div) || Math.abs(div) < 1e-18)
|
|
58
|
-
throw new Error('metric is singular at this point');
|
|
59
|
-
for (let j = 0; j < 8; j++)
|
|
60
|
-
a[col][j] = a[col][j] / div;
|
|
61
|
-
for (let r = 0; r < 4; r++) {
|
|
62
|
-
if (r === col)
|
|
63
|
-
continue;
|
|
64
|
-
const f = a[r][col];
|
|
65
|
-
for (let j = 0; j < 8; j++)
|
|
66
|
-
a[r][j] = a[r][j] - f * a[col][j];
|
|
67
|
-
}
|
|
61
|
+
const determinant = det(src);
|
|
62
|
+
if (typeof determinant !== 'number' || !Number.isFinite(determinant) || determinant === 0) {
|
|
63
|
+
throw new Error('metric is singular at this point');
|
|
68
64
|
}
|
|
69
|
-
|
|
65
|
+
const out = inv(src);
|
|
66
|
+
if (!Array.isArray(out) || out.length !== 4)
|
|
67
|
+
throw new Error('metric inverse is not a 4×4 matrix');
|
|
68
|
+
return out.map((row) => {
|
|
69
|
+
if (!Array.isArray(row) || row.length !== 4)
|
|
70
|
+
throw new Error('metric inverse is not a 4×4 matrix');
|
|
71
|
+
return row.map((v) => {
|
|
72
|
+
if (typeof v !== 'number')
|
|
73
|
+
throw new Error('metric inverse is not a 4×4 matrix');
|
|
74
|
+
return v;
|
|
75
|
+
});
|
|
76
|
+
});
|
|
70
77
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
return
|
|
75
|
-
}
|
|
76
|
-
/** 4th-order central difference of a matrix-valued function. */
|
|
77
|
-
function dMetric(g, x, mu, h) {
|
|
78
|
-
const at = (s) => g(shift(x, mu, s * h));
|
|
79
|
-
const a = at(-2);
|
|
80
|
-
const b = at(-1);
|
|
81
|
-
const c = at(1);
|
|
82
|
-
const d = at(2);
|
|
83
|
-
const out = mat4();
|
|
84
|
-
for (let i = 0; i < 4; i++) {
|
|
85
|
-
for (let j = 0; j < 4; j++) {
|
|
86
|
-
const av = a[i][j];
|
|
87
|
-
const bv = b[i][j];
|
|
88
|
-
const cv = c[i][j];
|
|
89
|
-
const dv = d[i][j];
|
|
90
|
-
// A component that does not change must not differentiate a huge constant
|
|
91
|
-
// (g_tt = −c²): the stencil cancels only up to a roundoff, and that
|
|
92
|
-
// roundoff divided by h is a fake Christoffel.
|
|
93
|
-
out[i][j] = av === bv && bv === cv && cv === dv ? 0 : (-dv + 8 * cv - 8 * bv + av) / (12 * h);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
return out;
|
|
78
|
+
/** The nested-array closures the curvature helpers take, over a `MetricFn`. */
|
|
79
|
+
function closuresOf(g) {
|
|
80
|
+
const at = (x) => g([x[0], x[1], x[2], x[3]]);
|
|
81
|
+
return { gFn: at, gInverseFn: (x) => invert4(at(x)) };
|
|
97
82
|
}
|
|
98
83
|
function blankGamma() {
|
|
99
84
|
return [0, 1, 2, 3].map(() => mat4());
|
|
100
85
|
}
|
|
101
|
-
/**
|
|
102
|
-
function
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
function christoffelOf(g, x, steps) {
|
|
106
|
-
const gi = invert4(g(x));
|
|
107
|
-
const dg = [0, 1, 2, 3].map((mu) => dMetric(g, x, mu, steps[mu]));
|
|
108
|
-
const G = blankGamma();
|
|
109
|
-
for (let rho = 0; rho < 4; rho++) {
|
|
110
|
-
for (let mu = 0; mu < 4; mu++) {
|
|
111
|
-
for (let nu = mu; nu < 4; nu++) {
|
|
112
|
-
let s = 0;
|
|
113
|
-
for (let sigma = 0; sigma < 4; sigma++) {
|
|
114
|
-
s += gi[rho][sigma] * (dg[mu][nu][sigma] + dg[nu][mu][sigma] - dg[sigma][mu][nu]);
|
|
115
|
-
}
|
|
116
|
-
const v = 0.5 * s;
|
|
117
|
-
G[rho][mu][nu] = v;
|
|
118
|
-
G[rho][nu][mu] = v;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
return G;
|
|
86
|
+
/** Γ^ρ_{μν}(x) by the finite-difference Christoffel of the curvature helpers. */
|
|
87
|
+
function christoffelOf(g, x) {
|
|
88
|
+
const { gFn, gInverseFn } = closuresOf(g);
|
|
89
|
+
return christoffelAt(x, gFn, gInverseFn, 4, ENGINE);
|
|
123
90
|
}
|
|
124
91
|
/**
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
92
|
+
* Christoffel, Ricci, the Ricci scalar and the Kretschmann scalar at `x`:
|
|
93
|
+
* `christoffelAt` and `riemannUpperAt` (the finite-difference Γ and R^ρ_{σμν}
|
|
94
|
+
* of the curvature helpers), the Ricci contraction R_{σν} = R^ρ_{σρν}, and
|
|
95
|
+
* `computeKretschmann` over the lowered Riemann. Checked against the
|
|
96
|
+
* Schwarzschild Kretschmann closed form.
|
|
129
97
|
*/
|
|
130
|
-
function tensorsOf(g, x
|
|
98
|
+
function tensorsOf(g, x) {
|
|
99
|
+
const { gFn, gInverseFn } = closuresOf(g);
|
|
131
100
|
const g0 = g(x);
|
|
132
101
|
const gi = invert4(g0);
|
|
133
|
-
const gamma =
|
|
134
|
-
const
|
|
135
|
-
for (let mu = 0; mu < 4; mu++) {
|
|
136
|
-
const h = steps[mu];
|
|
137
|
-
const plus = christoffelOf(g, shift(x, mu, h), steps);
|
|
138
|
-
const minus = christoffelOf(g, shift(x, mu, -h), steps);
|
|
139
|
-
const d = blankGamma();
|
|
140
|
-
for (let rho = 0; rho < 4; rho++) {
|
|
141
|
-
for (let a = 0; a < 4; a++) {
|
|
142
|
-
for (let b = 0; b < 4; b++) {
|
|
143
|
-
d[rho][a][b] = (plus[rho][a][b] - minus[rho][a][b]) / (2 * h);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
partial.push(d);
|
|
148
|
-
}
|
|
149
|
-
const up = tensor4();
|
|
150
|
-
for (let rho = 0; rho < 4; rho++) {
|
|
151
|
-
for (let sigma = 0; sigma < 4; sigma++) {
|
|
152
|
-
for (let mu = 0; mu < 4; mu++) {
|
|
153
|
-
for (let nu = 0; nu < 4; nu++) {
|
|
154
|
-
let s = partial[mu][rho][nu][sigma] - partial[nu][rho][mu][sigma];
|
|
155
|
-
for (let lam = 0; lam < 4; lam++) {
|
|
156
|
-
s +=
|
|
157
|
-
gamma[rho][mu][lam] * gamma[lam][nu][sigma] -
|
|
158
|
-
gamma[rho][nu][lam] * gamma[lam][mu][sigma];
|
|
159
|
-
}
|
|
160
|
-
up[rho][sigma][mu][nu] = s;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
const lower = tensor4();
|
|
166
|
-
for (let a = 0; a < 4; a++) {
|
|
167
|
-
for (let b = 0; b < 4; b++) {
|
|
168
|
-
for (let c = 0; c < 4; c++) {
|
|
169
|
-
for (let d = 0; d < 4; d++) {
|
|
170
|
-
let s = 0;
|
|
171
|
-
for (let rho = 0; rho < 4; rho++)
|
|
172
|
-
s += g0[a][rho] * up[rho][b][c][d];
|
|
173
|
-
lower[a][b][c][d] = s;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
102
|
+
const gamma = christoffelAt(x, gFn, gInverseFn, 4, ENGINE);
|
|
103
|
+
const up = riemannUpperAt(x, gFn, gInverseFn, 4, ENGINE, gamma);
|
|
178
104
|
const ricci = mat4();
|
|
179
105
|
for (let sigma = 0; sigma < 4; sigma++) {
|
|
180
106
|
for (let nu = 0; nu < 4; nu++) {
|
|
@@ -189,26 +115,8 @@ function tensorsOf(g, x, steps) {
|
|
|
189
115
|
for (let b = 0; b < 4; b++)
|
|
190
116
|
ricciScalar += gi[a][b] * ricci[a][b];
|
|
191
117
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
for (let b = 0; b < 4; b++) {
|
|
195
|
-
for (let c = 0; c < 4; c++) {
|
|
196
|
-
for (let d = 0; d < 4; d++) {
|
|
197
|
-
let raised = 0;
|
|
198
|
-
for (let ap = 0; ap < 4; ap++) {
|
|
199
|
-
for (let bp = 0; bp < 4; bp++) {
|
|
200
|
-
for (let cp = 0; cp < 4; cp++) {
|
|
201
|
-
for (let dp = 0; dp < 4; dp++) {
|
|
202
|
-
raised += gi[a][ap] * gi[b][bp] * gi[c][cp] * gi[d][dp] * lower[ap][bp][cp][dp];
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
kretschmann += lower[a][b][c][d] * raised;
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
}
|
|
118
|
+
const lower = lowerFirstIndex(up, g0.flat(), 4);
|
|
119
|
+
const kretschmann = computeKretschmann(lower, gi);
|
|
212
120
|
return { ricciScalar, kretschmann, ricci, christoffel: gamma };
|
|
213
121
|
}
|
|
214
122
|
function nonzeroMatrix(m, label) {
|
|
@@ -243,9 +151,6 @@ function nonzeroGamma(G) {
|
|
|
243
151
|
}
|
|
244
152
|
return out;
|
|
245
153
|
}
|
|
246
|
-
function stepsFor(x) {
|
|
247
|
-
return [Math.max(Math.abs(x[0]), 1) * 1e-4, Math.max(Math.abs(x[1]), 1) * 1e-4, 1e-4, 1e-4];
|
|
248
|
-
}
|
|
249
154
|
function schwarzschildMetric(M, c, G) {
|
|
250
155
|
const rs = (2 * G * M) / (c * c);
|
|
251
156
|
return (x) => {
|
|
@@ -330,6 +235,29 @@ export function kerrKretschmann(M, r, a, theta) {
|
|
|
330
235
|
((r * r + a * a * c2) ** 2 - 16 * r * r * a * a * c2);
|
|
331
236
|
return num / Sigma ** 6;
|
|
332
237
|
}
|
|
238
|
+
/** A metric parameter that is not a point of the manifold: a mass that is not positive. */
|
|
239
|
+
export class MetricMassError extends Error {
|
|
240
|
+
constructor(message) {
|
|
241
|
+
super(message);
|
|
242
|
+
this.name = 'MetricMassError';
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/** A mass that is not positive is not a source. */
|
|
246
|
+
function requirePositiveMass(M) {
|
|
247
|
+
if (!(M > 0))
|
|
248
|
+
throw new MetricMassError(`${M <= 0 ? 'a non-positive' : 'a non-finite'} mass (M = ${M} kg) is not a source: the metric needs a positive mass`);
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* The polar angle is a point of the spherical chart only on the open interval
|
|
252
|
+
* (0, π). The poles are coordinate singularities: `sin π` is 1.2e-16, not 0, so
|
|
253
|
+
* a test for exact zero lets θ = π through and the finite-difference stencil
|
|
254
|
+
* divides by it.
|
|
255
|
+
*/
|
|
256
|
+
function requirePolarInterior(theta) {
|
|
257
|
+
if (!(theta > 0 && theta < Math.PI && Math.sin(theta) > 1e-9)) {
|
|
258
|
+
throw new Error(`θ must be strictly between 0 and π (got ${theta}): the poles are coordinate singularities of the spherical chart`);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
333
261
|
/** SI dimension of each metric parameter. A bare number is already in that unit. */
|
|
334
262
|
const PARAM_DIM = {
|
|
335
263
|
M: MASS,
|
|
@@ -348,7 +276,7 @@ const PARAM_DIM = {
|
|
|
348
276
|
rho: MASS_DENSITY,
|
|
349
277
|
};
|
|
350
278
|
/** Parse `key=value` pairs. A value is a number, a unit, or a constant expression. @internal */
|
|
351
|
-
|
|
279
|
+
function metricParams(pairs, defaults) {
|
|
352
280
|
const values = { ...defaults };
|
|
353
281
|
const notes = [];
|
|
354
282
|
for (const pair of pairs) {
|
|
@@ -358,7 +286,16 @@ export function metricParams(pairs, defaults) {
|
|
|
358
286
|
const key = pair.slice(0, eq);
|
|
359
287
|
if (!(key in defaults))
|
|
360
288
|
throw new Error(`unknown parameter '${key}' (expected ${Object.keys(defaults).join(', ')})`);
|
|
361
|
-
|
|
289
|
+
let read;
|
|
290
|
+
try {
|
|
291
|
+
read = readParameter(pair.slice(eq + 1), PARAM_DIM[key] ?? DIMENSIONLESS);
|
|
292
|
+
}
|
|
293
|
+
catch (e) {
|
|
294
|
+
// The reader knows the text and the dimension it was given, not which parameter held them.
|
|
295
|
+
if (e instanceof UnitError)
|
|
296
|
+
throw new UnitError(`parameter ${key}: ${e.message}`);
|
|
297
|
+
throw e;
|
|
298
|
+
}
|
|
362
299
|
values[key] = read.value;
|
|
363
300
|
for (const note of read.notes)
|
|
364
301
|
if (!notes.includes(note))
|
|
@@ -382,22 +319,25 @@ export function curvatureReport(metric, pairs = []) {
|
|
|
382
319
|
return m;
|
|
383
320
|
};
|
|
384
321
|
const x = [p.t, p.r, p.theta, p.phi];
|
|
385
|
-
const t = tensorsOf(g, x
|
|
322
|
+
const t = tensorsOf(g, x);
|
|
386
323
|
return stateCurvature(pack('minkowski', p, x, t, { ricciScalar: 0, kretschmann: 0 }, [
|
|
387
324
|
'Minkowski in Cartesian-like coordinates (the angular part is not a sphere here; g_θθ = g_φφ = 1).',
|
|
388
325
|
...notes,
|
|
389
326
|
]));
|
|
390
327
|
}
|
|
391
328
|
if (metric === 'schwarzschild') {
|
|
392
|
-
|
|
329
|
+
// NaN marks r as not supplied. A supplied r = 0 is a point, not the default.
|
|
330
|
+
const { values: p, notes } = metricParams(pairs, { M: M_SUN_SI, c: C_SI, G: G_SI, r: Number.NaN, theta: Math.PI / 2, phi: 0, t: 0 });
|
|
331
|
+
requirePositiveMass(p.M);
|
|
332
|
+
requirePolarInterior(p.theta);
|
|
393
333
|
const rs = (2 * p.G * p.M) / (p.c * p.c);
|
|
394
|
-
if (p.r
|
|
334
|
+
if (Number.isNaN(p.r))
|
|
395
335
|
p.r = 10 * rs;
|
|
396
336
|
if (!(p.r > rs))
|
|
397
|
-
throw new Error(`r must be outside the horizon (r_s = ${rs})`);
|
|
337
|
+
throw new Error(`r must be outside the horizon (r = ${p.r} m, r_s = ${rs} m)`);
|
|
398
338
|
const g = schwarzschildMetric(p.M, p.c, p.G);
|
|
399
339
|
const x = [p.t, p.r, p.theta, p.phi];
|
|
400
|
-
const t = tensorsOf(g, x
|
|
340
|
+
const t = tensorsOf(g, x);
|
|
401
341
|
const K = schwarzschildKretschmann(p.M, p.r, p.c, p.G);
|
|
402
342
|
return stateCurvature(pack('schwarzschild', p, x, t, { kretschmann: K, ricciScalar: 0, horizon_m: rs }, [
|
|
403
343
|
'Closed form: Kretschmann = 48 G² M² / (c⁴ r⁶), Ricci = 0.',
|
|
@@ -430,8 +370,8 @@ export function curvatureReport(metric, pairs = []) {
|
|
|
430
370
|
// Christoffel in the SI metric. Ricci and Kretschmann are computed at c = 1
|
|
431
371
|
// and divided by c² and c⁴: g_tt = −c² makes those scalars smaller than the
|
|
432
372
|
// roundoff of an SI finite difference.
|
|
433
|
-
const tSi = tensorsOf(g, x
|
|
434
|
-
const t1 = p.c === 1 ? tSi : tensorsOf(flrwMetric(p.a0, p.t0, p.n, p.k, 1), x
|
|
373
|
+
const tSi = tensorsOf(g, x);
|
|
374
|
+
const t1 = p.c === 1 ? tSi : tensorsOf(flrwMetric(p.a0, p.t0, p.n, p.k, 1), x);
|
|
435
375
|
const c2 = p.c * p.c;
|
|
436
376
|
const t = {
|
|
437
377
|
christoffel: tSi.christoffel,
|
|
@@ -465,19 +405,23 @@ export function curvatureReport(metric, pairs = []) {
|
|
|
465
405
|
a: 0,
|
|
466
406
|
c: C_SI,
|
|
467
407
|
G: G_SI,
|
|
468
|
-
r:
|
|
408
|
+
r: Number.NaN,
|
|
469
409
|
theta: Math.PI / 2,
|
|
470
410
|
phi: 0,
|
|
471
411
|
t: 0,
|
|
472
412
|
});
|
|
413
|
+
requirePositiveMass(p.M);
|
|
414
|
+
requirePolarInterior(p.theta);
|
|
473
415
|
const Mgeom = (p.G * p.M) / (p.c * p.c);
|
|
474
|
-
if (p.r
|
|
416
|
+
if (Number.isNaN(p.r))
|
|
475
417
|
p.r = 10 * Mgeom;
|
|
418
|
+
if (!(p.r > 0))
|
|
419
|
+
throw new Error(`r must be positive and outside the singularity (got r = ${p.r} m)`);
|
|
476
420
|
if (Math.abs(p.a) >= p.r)
|
|
477
421
|
throw new Error('Kerr finite difference wants |a| < r and r outside the ring');
|
|
478
422
|
const g = kerrMetric(Mgeom, p.a);
|
|
479
423
|
const x = [p.t, p.r, p.theta, p.phi];
|
|
480
|
-
const t = tensorsOf(g, x
|
|
424
|
+
const t = tensorsOf(g, x);
|
|
481
425
|
const K = kerrKretschmann(Mgeom, p.r, p.a, p.theta);
|
|
482
426
|
const aOverM = p.a / Mgeom;
|
|
483
427
|
const kerrNotes = [
|
|
@@ -560,51 +504,12 @@ export function schwarzschildCircularOrbit(opts) {
|
|
|
560
504
|
const uphi = Omega * ut;
|
|
561
505
|
if (!(f > 0) || !Number.isFinite(ut))
|
|
562
506
|
throw new Error('circular orbit needs r > 1.5 r_s');
|
|
563
|
-
//
|
|
564
|
-
//
|
|
565
|
-
// a floating-point step off θ = π/2 makes cot θ explode.
|
|
566
|
-
const gamma = (r) => {
|
|
567
|
-
const ff = 1 - rs / r;
|
|
568
|
-
const Gma = blankGamma();
|
|
569
|
-
const set = (rho, mu, nu, v) => {
|
|
570
|
-
Gma[rho][mu][nu] = v;
|
|
571
|
-
Gma[rho][nu][mu] = v;
|
|
572
|
-
};
|
|
573
|
-
set(0, 0, 1, rs / (2 * r * (r - rs)));
|
|
574
|
-
set(1, 0, 0, (rs * ff) / (2 * r * r));
|
|
575
|
-
set(1, 1, 1, -rs / (2 * r * (r - rs)));
|
|
576
|
-
set(1, 2, 2, -(r - rs));
|
|
577
|
-
set(1, 3, 3, -(r - rs));
|
|
578
|
-
set(2, 1, 2, 1 / r);
|
|
579
|
-
set(3, 1, 3, 1 / r);
|
|
580
|
-
return Gma;
|
|
581
|
-
};
|
|
582
|
-
// state: t, r, th, phi, ut, ur, uth, uphi
|
|
583
|
-
let y = [0, r0, Math.PI / 2, 0, ut, 0, 0, uphi];
|
|
584
|
-
const accel = (s) => {
|
|
585
|
-
const Gma = gamma(s[1]);
|
|
586
|
-
const u = [s[4], s[5], s[6], s[7]];
|
|
587
|
-
const du = [0, 0, 0, 0];
|
|
588
|
-
for (let rho = 0; rho < 4; rho++) {
|
|
589
|
-
let sum = 0;
|
|
590
|
-
for (let mu = 0; mu < 4; mu++) {
|
|
591
|
-
for (let nu = 0; nu < 4; nu++)
|
|
592
|
-
sum += Gma[rho][mu][nu] * u[mu] * u[nu];
|
|
593
|
-
}
|
|
594
|
-
du[rho] = -sum;
|
|
595
|
-
}
|
|
596
|
-
return [u[0], u[1], u[2], u[3], du[0], du[1], du[2], du[3]];
|
|
597
|
-
};
|
|
507
|
+
// The closed-form Schwarzschild Christoffel symbols, polar terms included:
|
|
508
|
+
// with u^θ = 0 and θ = π/2 the polar terms stay zero to roundoff.
|
|
598
509
|
const period = (2 * Math.PI) / uphi;
|
|
599
510
|
const fraction = opts?.fraction ?? 0.02;
|
|
600
511
|
const steps = 400;
|
|
601
|
-
const
|
|
602
|
-
for (let n = 0; n < steps; n++) {
|
|
603
|
-
const sol = solveODESystem((_t, s) => accel(s), y, [0, h], { dt: h });
|
|
604
|
-
y = (sol.y[sol.y.length - 1] ?? y).slice();
|
|
605
|
-
y[2] = Math.PI / 2;
|
|
606
|
-
y[6] = 0;
|
|
607
|
-
}
|
|
512
|
+
const y = integrateWithChristoffel((r, theta) => schwarzschildChristoffel(M, r, theta), [0, r0, Math.PI / 2, 0, ut, 0, 0, uphi], period * fraction, steps);
|
|
608
513
|
return { r0, rEnd: y[1], phiAdvance: y[3], steps };
|
|
609
514
|
}
|
|
610
515
|
/**
|
|
@@ -833,26 +738,15 @@ function kerrMetricDerivatives(M, a, r, theta) {
|
|
|
833
738
|
dth[3][3] = ((2 * s * c * A + s * s * dAt) * Sigma - s * s * A * dSt) / Sigma2;
|
|
834
739
|
return { dr, dth };
|
|
835
740
|
}
|
|
741
|
+
/**
|
|
742
|
+
* Γ^ρ_{μν} from a metric and its analytic partial derivatives, through the
|
|
743
|
+
* one Christoffel builder (`computeChristoffelTensor`). A `null` derivative
|
|
744
|
+
* is a coordinate the metric does not depend on.
|
|
745
|
+
*/
|
|
836
746
|
function christoffelFrom(g, dg) {
|
|
837
|
-
const
|
|
838
|
-
const
|
|
839
|
-
|
|
840
|
-
for (let mu = 0; mu < 4; mu++) {
|
|
841
|
-
for (let nu = mu; nu < 4; nu++) {
|
|
842
|
-
let s = 0;
|
|
843
|
-
for (let sigma = 0; sigma < 4; sigma++) {
|
|
844
|
-
const dmu = dg[mu]?.[nu][sigma] ?? 0;
|
|
845
|
-
const dnu = dg[nu]?.[mu][sigma] ?? 0;
|
|
846
|
-
const dsig = dg[sigma]?.[mu][nu] ?? 0;
|
|
847
|
-
s += gi[rho][sigma] * (dmu + dnu - dsig);
|
|
848
|
-
}
|
|
849
|
-
const v = 0.5 * s;
|
|
850
|
-
G[rho][mu][nu] = v;
|
|
851
|
-
G[rho][nu][mu] = v;
|
|
852
|
-
}
|
|
853
|
-
}
|
|
854
|
-
}
|
|
855
|
-
return G;
|
|
747
|
+
const gInverseFlat = invert4(g).flat();
|
|
748
|
+
const tensor = computeChristoffelTensor(gInverseFlat, (mu) => (dg[mu] ?? mat4()).flat(), 4, ENGINE);
|
|
749
|
+
return ENGINE.toNested(tensor);
|
|
856
750
|
}
|
|
857
751
|
function kerrChristoffel(M, a, r, theta) {
|
|
858
752
|
const partial = kerrMetricDerivatives(M, a, r, theta);
|
|
@@ -862,7 +756,7 @@ function kerrChristoffel(M, a, r, theta) {
|
|
|
862
756
|
export function kerrChristoffelFdGap(M, a, r, theta) {
|
|
863
757
|
const x = [0, r, theta, 0];
|
|
864
758
|
const analytic = kerrChristoffel(M, a, r, theta);
|
|
865
|
-
const fd = christoffelOf(kerrMetric(M, a), x
|
|
759
|
+
const fd = christoffelOf(kerrMetric(M, a), x);
|
|
866
760
|
let gap = 0;
|
|
867
761
|
for (let rho = 0; rho < 4; rho++) {
|
|
868
762
|
for (let mu = 0; mu < 4; mu++) {
|
|
@@ -932,24 +826,38 @@ function carterState(M, a, r, theta, E, L, Q, mu2, signR, signTheta, allowOffShe
|
|
|
932
826
|
const uth = signTheta * Math.sqrt(Math.max(Theta, 0)) / Sigma;
|
|
933
827
|
return [0, r, theta, 0, ut, ur, uth, uphi];
|
|
934
828
|
}
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
829
|
+
/**
|
|
830
|
+
* The state `[t, r, θ, φ, u^t, u^r, u^θ, u^φ]` after `steps` RK4 steps of
|
|
831
|
+
* the second-order geodesic equation over an affine extent `tauEnd`, by
|
|
832
|
+
* `integrateGeodesic` of `geodesic-integrator.ts` with `gammaAt` packed into
|
|
833
|
+
* its flat layout `G[16·μ + 4·ν + ρ] = Γ^μ_{νρ}`.
|
|
834
|
+
*/
|
|
835
|
+
function integrateWithChristoffel(gammaAt, y0, tauEnd, steps) {
|
|
836
|
+
const christoffelFn = (x, out) => {
|
|
837
|
+
const flat = out ?? new Float64Array(64);
|
|
838
|
+
const gamma = gammaAt(x[1], x[2]);
|
|
839
|
+
for (let mu = 0; mu < 4; mu++) {
|
|
840
|
+
for (let nu = 0; nu < 4; nu++) {
|
|
841
|
+
for (let rho = 0; rho < 4; rho++)
|
|
842
|
+
flat[16 * mu + 4 * nu + rho] = gamma[mu][nu][rho];
|
|
843
|
+
}
|
|
946
844
|
}
|
|
947
|
-
return
|
|
845
|
+
return flat;
|
|
948
846
|
};
|
|
847
|
+
const result = integrateGeodesicRK4({
|
|
848
|
+
christoffelFn,
|
|
849
|
+
x0: [y0[0], y0[1], y0[2], y0[3]],
|
|
850
|
+
v0: [y0[4], y0[5], y0[6], y0[7]],
|
|
851
|
+
tauStart: 0,
|
|
852
|
+
tauEnd,
|
|
853
|
+
steps,
|
|
854
|
+
});
|
|
855
|
+
return [...result.xFinal, ...result.vFinal];
|
|
856
|
+
}
|
|
857
|
+
/** `fraction` of an orbit's angular period, from the start's angular rate. */
|
|
858
|
+
function orbitExtent(y0, fraction) {
|
|
949
859
|
const angular = Math.max(Math.abs(y0[7]), Math.abs(y0[6]), 1e-12);
|
|
950
|
-
|
|
951
|
-
const sol = solveODESystem((_t, s) => accel(s), y0.slice(), [0, steps * h], { dt: h });
|
|
952
|
-
return sol.y[sol.y.length - 1] ?? y0.slice();
|
|
860
|
+
return ((2 * Math.PI) / angular) * fraction;
|
|
953
861
|
}
|
|
954
862
|
function sampleOf(metric, a, y0, y1, steps, mu2) {
|
|
955
863
|
const start = conservedOf(metric, a, y0, mu2);
|
|
@@ -994,7 +902,7 @@ export function kerrGeodesic(opts) {
|
|
|
994
902
|
const fraction = opts.fraction ?? 0.01;
|
|
995
903
|
const metric = kerrMetric(M, a);
|
|
996
904
|
const y0 = carterState(M, a, r, theta, opts.E, opts.L, opts.Q, mu2, opts.signR ?? 1, opts.signTheta ?? 1, opts.allowOffShell === true);
|
|
997
|
-
const y1 =
|
|
905
|
+
const y1 = integrateWithChristoffel((rr, th) => kerrChristoffel(M, a, rr, th), y0, orbitExtent(y0, fraction), steps);
|
|
998
906
|
return sampleOf(metric, a, y0, y1, steps, mu2);
|
|
999
907
|
}
|
|
1000
908
|
/**
|
|
@@ -1013,7 +921,7 @@ export function schwarzschildGeodesic(opts) {
|
|
|
1013
921
|
const fraction = opts.fraction ?? 0.01;
|
|
1014
922
|
const metric = schwarzschildMetric(M, 1, 1);
|
|
1015
923
|
const y0 = carterState(M, 0, r, theta, opts.E, opts.L, opts.Q, 1, opts.signR ?? 1, opts.signTheta ?? 1, false);
|
|
1016
|
-
const y1 =
|
|
924
|
+
const y1 = integrateWithChristoffel((rr, th) => schwarzschildChristoffel(M, rr, th), y0, orbitExtent(y0, fraction), steps);
|
|
1017
925
|
return sampleOf(metric, 0, y0, y1, steps, 1);
|
|
1018
926
|
}
|
|
1019
927
|
/**
|