universal-physics-tensor 9.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 +19 -16
- package/data/atlas/atlas.json +55 -44
- package/data/atlas/atlas.jsonld +1 -1
- package/data/atlas/diffusion.json +19 -18
- package/data/atlas/oscillators.json +15 -10
- package/data/atlas/waves.json +23 -18
- package/data/bridge-catalog.json +886 -1473
- package/data/bridge-catalog.schema.json +349 -132
- package/data/quantities.json +53 -19
- package/data/schemas/atlas-record.v0.json +184 -46
- package/data/units.json +33 -4
- 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.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 +15 -8
- 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.js.map +1 -1
- package/dist/atlas/physjs-ref.d.ts +79 -45
- package/dist/atlas/physjs-ref.d.ts.map +1 -1
- package/dist/atlas/physjs-ref.js +143 -62
- 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.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 +17 -9
- package/dist/bridges/catalog-adapter.js.map +1 -1
- package/dist/bridges/catalog-load.d.ts +12 -2
- package/dist/bridges/catalog-load.d.ts.map +1 -1
- package/dist/bridges/catalog-load.js +171 -8
- package/dist/bridges/catalog-load.js.map +1 -1
- package/dist/bridges/catalog-types.d.ts +48 -24
- 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 +15 -2
- package/dist/bridges/evaluation-errors.d.ts.map +1 -1
- package/dist/bridges/evaluation-errors.js +20 -2
- package/dist/bridges/evaluation-errors.js.map +1 -1
- package/dist/bridges/evaluator-inputs.js.map +1 -1
- package/dist/bridges/evaluators.d.ts +17 -2
- package/dist/bridges/evaluators.d.ts.map +1 -1
- package/dist/bridges/evaluators.js +49 -16
- package/dist/bridges/evaluators.js.map +1 -1
- package/dist/bridges/expr-parse.d.ts +27 -4
- package/dist/bridges/expr-parse.d.ts.map +1 -1
- package/dist/bridges/expr-parse.js +90 -10
- package/dist/bridges/expr-parse.js.map +1 -1
- package/dist/bridges/holds.d.ts +5 -1
- package/dist/bridges/holds.d.ts.map +1 -1
- package/dist/bridges/holds.js +18 -3
- 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.js.map +1 -1
- 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.js.map +1 -1
- 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.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.js.map +1 -1
- package/dist/canonical/entries/condensed-matter.js +4 -4
- package/dist/canonical/entries/condensed-matter.js.map +1 -1
- package/dist/canonical/entries/dimensional-classics.js +2 -2
- package/dist/canonical/entries/dimensional-classics.js.map +1 -1
- package/dist/canonical/entries/electromagnetism.js +2 -2
- package/dist/canonical/entries/electromagnetism.js.map +1 -1
- package/dist/canonical/entries/fluids-waves.js.map +1 -1
- 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 +29 -22
- package/dist/canonical/entries/nonmonomial.js.map +1 -1
- package/dist/canonical/entries/relativity.js.map +1 -1
- package/dist/canonical/entries/statistical-mechanics.js +5 -5
- package/dist/canonical/entries/statistical-mechanics.js.map +1 -1
- 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.js.map +1 -1
- 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.map +1 -1
- package/dist/cli/commands/_discovery-opts.js +42 -7
- 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 +1 -3
- 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 -20
- 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.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 +42 -17
- 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 +15 -9
- 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 +13 -10
- package/dist/cli/commands/eval.js.map +1 -1
- package/dist/cli/commands/evaluate.d.ts.map +1 -1
- package/dist/cli/commands/evaluate.js +53 -31
- 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 +14 -7
- 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 +40 -10
- 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 +82 -89
- 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 -18
- 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 +24 -26
- 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 +13 -9
- package/dist/cli/commands/symbolic.js.map +1 -1
- package/dist/cli/commands/testplan.js +1 -1
- package/dist/cli/commands/testplan.js.map +1 -1
- 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.js.map +1 -1
- 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.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.js +1 -1
- 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 +15 -9
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +14 -13
- package/dist/cli-api.js.map +1 -1
- package/dist/composition/adjudication.js.map +1 -1
- 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 -18
- package/dist/composition/bridge-analysis.d.ts.map +1 -1
- package/dist/composition/bridge-analysis.js +57 -47
- 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 +8 -9
- package/dist/composition/canonical-graph.d.ts.map +1 -1
- package/dist/composition/canonical-graph.js +25 -67
- package/dist/composition/canonical-graph.js.map +1 -1
- package/dist/composition/canonical-json.js.map +1 -1
- 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 +153 -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 +21 -11
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +81 -21
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/edge.d.ts +19 -8
- package/dist/composition/edge.d.ts.map +1 -1
- package/dist/composition/edge.js +24 -11
- 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.js.map +1 -1
- package/dist/composition/explain.d.ts +14 -9
- package/dist/composition/explain.d.ts.map +1 -1
- package/dist/composition/explain.js +46 -13
- package/dist/composition/explain.js.map +1 -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 +6 -4
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +4 -3
- 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 +11 -4
- 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 +16 -6
- package/dist/composition/retrodiction.d.ts.map +1 -1
- package/dist/composition/retrodiction.js +34 -9
- package/dist/composition/retrodiction.js.map +1 -1
- package/dist/composition/uncertainty.js.map +1 -1
- 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 +8 -8
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +8 -10
- package/dist/core/constants.js.map +1 -1
- package/dist/core/data-file.js.map +1 -1
- package/dist/core/flux-rules.js +1 -1
- package/dist/core/flux-rules.js.map +1 -1
- package/dist/core/json-schema.d.ts +1 -1
- package/dist/core/json-schema.d.ts.map +1 -1
- package/dist/core/json-schema.js +31 -7
- package/dist/core/json-schema.js.map +1 -1
- 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.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 +10 -6
- 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 +16 -5
- package/dist/diff/bridge-specs.d.ts.map +1 -1
- package/dist/diff/bridge-specs.js +16 -4
- 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.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.map +1 -1
- package/dist/dimensional/constant-rows.js +9 -5
- package/dist/dimensional/constant-rows.js.map +1 -1
- package/dist/dimensional/constants.d.ts +5 -6
- package/dist/dimensional/constants.d.ts.map +1 -1
- package/dist/dimensional/constants.js +5 -6
- 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 +13 -7
- package/dist/dimensional/dimension-spec.d.ts.map +1 -1
- package/dist/dimensional/dimension-spec.js +49 -23
- 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.js.map +1 -1
- package/dist/dimensional/field-equation-helpers.js.map +1 -1
- 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 +13 -0
- package/dist/dimensional/quantity-registry.d.ts.map +1 -1
- package/dist/dimensional/quantity-registry.js +14 -6
- 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.map +1 -1
- package/dist/dimensional/symbolic-constants.js +7 -2
- 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.map +1 -1
- package/dist/dimensional/unit-data.js +9 -5
- package/dist/dimensional/unit-data.js.map +1 -1
- package/dist/dimensional/units.d.ts.map +1 -1
- package/dist/dimensional/units.js +38 -20
- 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 +50 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -20
- package/dist/index.js.map +1 -1
- package/dist/numerical/bianchi-residual.js.map +1 -1
- package/dist/numerical/binding-value.d.ts +11 -6
- package/dist/numerical/binding-value.d.ts.map +1 -1
- package/dist/numerical/binding-value.js +126 -122
- 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.map +1 -1
- package/dist/numerical/evaluator-uncertainty.js +19 -2
- package/dist/numerical/evaluator-uncertainty.js.map +1 -1
- package/dist/numerical/formula-contract.d.ts +63 -7
- package/dist/numerical/formula-contract.d.ts.map +1 -1
- package/dist/numerical/formula-contract.js +61 -42
- package/dist/numerical/formula-contract.js.map +1 -1
- package/dist/numerical/formula-dimension.d.ts +8 -7
- package/dist/numerical/formula-dimension.d.ts.map +1 -1
- package/dist/numerical/formula-dimension.js +58 -36
- 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 +5 -2
- 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 +41 -42
- 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 +13 -19
- package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
- package/dist/numerical/spacetime-metrics.js +126 -248
- 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 +18 -5
- package/dist/relations/types.d.ts.map +1 -1
- package/dist/relations/types.js +5 -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) => {
|
|
@@ -340,7 +245,7 @@ export class MetricMassError extends Error {
|
|
|
340
245
|
/** A mass that is not positive is not a source. */
|
|
341
246
|
function requirePositiveMass(M) {
|
|
342
247
|
if (!(M > 0))
|
|
343
|
-
throw new MetricMassError(`${M <= 0 ? 'a non-positive' : 'a non-finite'} mass is not a source: the metric needs a positive mass`);
|
|
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`);
|
|
344
249
|
}
|
|
345
250
|
/**
|
|
346
251
|
* The polar angle is a point of the spherical chart only on the open interval
|
|
@@ -371,7 +276,7 @@ const PARAM_DIM = {
|
|
|
371
276
|
rho: MASS_DENSITY,
|
|
372
277
|
};
|
|
373
278
|
/** Parse `key=value` pairs. A value is a number, a unit, or a constant expression. @internal */
|
|
374
|
-
|
|
279
|
+
function metricParams(pairs, defaults) {
|
|
375
280
|
const values = { ...defaults };
|
|
376
281
|
const notes = [];
|
|
377
282
|
for (const pair of pairs) {
|
|
@@ -381,7 +286,16 @@ export function metricParams(pairs, defaults) {
|
|
|
381
286
|
const key = pair.slice(0, eq);
|
|
382
287
|
if (!(key in defaults))
|
|
383
288
|
throw new Error(`unknown parameter '${key}' (expected ${Object.keys(defaults).join(', ')})`);
|
|
384
|
-
|
|
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
|
+
}
|
|
385
299
|
values[key] = read.value;
|
|
386
300
|
for (const note of read.notes)
|
|
387
301
|
if (!notes.includes(note))
|
|
@@ -405,7 +319,7 @@ export function curvatureReport(metric, pairs = []) {
|
|
|
405
319
|
return m;
|
|
406
320
|
};
|
|
407
321
|
const x = [p.t, p.r, p.theta, p.phi];
|
|
408
|
-
const t = tensorsOf(g, x
|
|
322
|
+
const t = tensorsOf(g, x);
|
|
409
323
|
return stateCurvature(pack('minkowski', p, x, t, { ricciScalar: 0, kretschmann: 0 }, [
|
|
410
324
|
'Minkowski in Cartesian-like coordinates (the angular part is not a sphere here; g_θθ = g_φφ = 1).',
|
|
411
325
|
...notes,
|
|
@@ -420,10 +334,10 @@ export function curvatureReport(metric, pairs = []) {
|
|
|
420
334
|
if (Number.isNaN(p.r))
|
|
421
335
|
p.r = 10 * rs;
|
|
422
336
|
if (!(p.r > rs))
|
|
423
|
-
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)`);
|
|
424
338
|
const g = schwarzschildMetric(p.M, p.c, p.G);
|
|
425
339
|
const x = [p.t, p.r, p.theta, p.phi];
|
|
426
|
-
const t = tensorsOf(g, x
|
|
340
|
+
const t = tensorsOf(g, x);
|
|
427
341
|
const K = schwarzschildKretschmann(p.M, p.r, p.c, p.G);
|
|
428
342
|
return stateCurvature(pack('schwarzschild', p, x, t, { kretschmann: K, ricciScalar: 0, horizon_m: rs }, [
|
|
429
343
|
'Closed form: Kretschmann = 48 G² M² / (c⁴ r⁶), Ricci = 0.',
|
|
@@ -456,8 +370,8 @@ export function curvatureReport(metric, pairs = []) {
|
|
|
456
370
|
// Christoffel in the SI metric. Ricci and Kretschmann are computed at c = 1
|
|
457
371
|
// and divided by c² and c⁴: g_tt = −c² makes those scalars smaller than the
|
|
458
372
|
// roundoff of an SI finite difference.
|
|
459
|
-
const tSi = tensorsOf(g, x
|
|
460
|
-
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);
|
|
461
375
|
const c2 = p.c * p.c;
|
|
462
376
|
const t = {
|
|
463
377
|
christoffel: tSi.christoffel,
|
|
@@ -502,12 +416,12 @@ export function curvatureReport(metric, pairs = []) {
|
|
|
502
416
|
if (Number.isNaN(p.r))
|
|
503
417
|
p.r = 10 * Mgeom;
|
|
504
418
|
if (!(p.r > 0))
|
|
505
|
-
throw new Error(`r must be positive and outside the singularity (got ${p.r})`);
|
|
419
|
+
throw new Error(`r must be positive and outside the singularity (got r = ${p.r} m)`);
|
|
506
420
|
if (Math.abs(p.a) >= p.r)
|
|
507
421
|
throw new Error('Kerr finite difference wants |a| < r and r outside the ring');
|
|
508
422
|
const g = kerrMetric(Mgeom, p.a);
|
|
509
423
|
const x = [p.t, p.r, p.theta, p.phi];
|
|
510
|
-
const t = tensorsOf(g, x
|
|
424
|
+
const t = tensorsOf(g, x);
|
|
511
425
|
const K = kerrKretschmann(Mgeom, p.r, p.a, p.theta);
|
|
512
426
|
const aOverM = p.a / Mgeom;
|
|
513
427
|
const kerrNotes = [
|
|
@@ -590,51 +504,12 @@ export function schwarzschildCircularOrbit(opts) {
|
|
|
590
504
|
const uphi = Omega * ut;
|
|
591
505
|
if (!(f > 0) || !Number.isFinite(ut))
|
|
592
506
|
throw new Error('circular orbit needs r > 1.5 r_s');
|
|
593
|
-
//
|
|
594
|
-
//
|
|
595
|
-
// a floating-point step off θ = π/2 makes cot θ explode.
|
|
596
|
-
const gamma = (r) => {
|
|
597
|
-
const ff = 1 - rs / r;
|
|
598
|
-
const Gma = blankGamma();
|
|
599
|
-
const set = (rho, mu, nu, v) => {
|
|
600
|
-
Gma[rho][mu][nu] = v;
|
|
601
|
-
Gma[rho][nu][mu] = v;
|
|
602
|
-
};
|
|
603
|
-
set(0, 0, 1, rs / (2 * r * (r - rs)));
|
|
604
|
-
set(1, 0, 0, (rs * ff) / (2 * r * r));
|
|
605
|
-
set(1, 1, 1, -rs / (2 * r * (r - rs)));
|
|
606
|
-
set(1, 2, 2, -(r - rs));
|
|
607
|
-
set(1, 3, 3, -(r - rs));
|
|
608
|
-
set(2, 1, 2, 1 / r);
|
|
609
|
-
set(3, 1, 3, 1 / r);
|
|
610
|
-
return Gma;
|
|
611
|
-
};
|
|
612
|
-
// state: t, r, th, phi, ut, ur, uth, uphi
|
|
613
|
-
let y = [0, r0, Math.PI / 2, 0, ut, 0, 0, uphi];
|
|
614
|
-
const accel = (s) => {
|
|
615
|
-
const Gma = gamma(s[1]);
|
|
616
|
-
const u = [s[4], s[5], s[6], s[7]];
|
|
617
|
-
const du = [0, 0, 0, 0];
|
|
618
|
-
for (let rho = 0; rho < 4; rho++) {
|
|
619
|
-
let sum = 0;
|
|
620
|
-
for (let mu = 0; mu < 4; mu++) {
|
|
621
|
-
for (let nu = 0; nu < 4; nu++)
|
|
622
|
-
sum += Gma[rho][mu][nu] * u[mu] * u[nu];
|
|
623
|
-
}
|
|
624
|
-
du[rho] = -sum;
|
|
625
|
-
}
|
|
626
|
-
return [u[0], u[1], u[2], u[3], du[0], du[1], du[2], du[3]];
|
|
627
|
-
};
|
|
507
|
+
// The closed-form Schwarzschild Christoffel symbols, polar terms included:
|
|
508
|
+
// with u^θ = 0 and θ = π/2 the polar terms stay zero to roundoff.
|
|
628
509
|
const period = (2 * Math.PI) / uphi;
|
|
629
510
|
const fraction = opts?.fraction ?? 0.02;
|
|
630
511
|
const steps = 400;
|
|
631
|
-
const
|
|
632
|
-
for (let n = 0; n < steps; n++) {
|
|
633
|
-
const sol = solveODESystem((_t, s) => accel(s), y, [0, h], { dt: h });
|
|
634
|
-
y = (sol.y[sol.y.length - 1] ?? y).slice();
|
|
635
|
-
y[2] = Math.PI / 2;
|
|
636
|
-
y[6] = 0;
|
|
637
|
-
}
|
|
512
|
+
const y = integrateWithChristoffel((r, theta) => schwarzschildChristoffel(M, r, theta), [0, r0, Math.PI / 2, 0, ut, 0, 0, uphi], period * fraction, steps);
|
|
638
513
|
return { r0, rEnd: y[1], phiAdvance: y[3], steps };
|
|
639
514
|
}
|
|
640
515
|
/**
|
|
@@ -863,26 +738,15 @@ function kerrMetricDerivatives(M, a, r, theta) {
|
|
|
863
738
|
dth[3][3] = ((2 * s * c * A + s * s * dAt) * Sigma - s * s * A * dSt) / Sigma2;
|
|
864
739
|
return { dr, dth };
|
|
865
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
|
+
*/
|
|
866
746
|
function christoffelFrom(g, dg) {
|
|
867
|
-
const
|
|
868
|
-
const
|
|
869
|
-
|
|
870
|
-
for (let mu = 0; mu < 4; mu++) {
|
|
871
|
-
for (let nu = mu; nu < 4; nu++) {
|
|
872
|
-
let s = 0;
|
|
873
|
-
for (let sigma = 0; sigma < 4; sigma++) {
|
|
874
|
-
const dmu = dg[mu]?.[nu][sigma] ?? 0;
|
|
875
|
-
const dnu = dg[nu]?.[mu][sigma] ?? 0;
|
|
876
|
-
const dsig = dg[sigma]?.[mu][nu] ?? 0;
|
|
877
|
-
s += gi[rho][sigma] * (dmu + dnu - dsig);
|
|
878
|
-
}
|
|
879
|
-
const v = 0.5 * s;
|
|
880
|
-
G[rho][mu][nu] = v;
|
|
881
|
-
G[rho][nu][mu] = v;
|
|
882
|
-
}
|
|
883
|
-
}
|
|
884
|
-
}
|
|
885
|
-
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);
|
|
886
750
|
}
|
|
887
751
|
function kerrChristoffel(M, a, r, theta) {
|
|
888
752
|
const partial = kerrMetricDerivatives(M, a, r, theta);
|
|
@@ -892,7 +756,7 @@ function kerrChristoffel(M, a, r, theta) {
|
|
|
892
756
|
export function kerrChristoffelFdGap(M, a, r, theta) {
|
|
893
757
|
const x = [0, r, theta, 0];
|
|
894
758
|
const analytic = kerrChristoffel(M, a, r, theta);
|
|
895
|
-
const fd = christoffelOf(kerrMetric(M, a), x
|
|
759
|
+
const fd = christoffelOf(kerrMetric(M, a), x);
|
|
896
760
|
let gap = 0;
|
|
897
761
|
for (let rho = 0; rho < 4; rho++) {
|
|
898
762
|
for (let mu = 0; mu < 4; mu++) {
|
|
@@ -962,24 +826,38 @@ function carterState(M, a, r, theta, E, L, Q, mu2, signR, signTheta, allowOffShe
|
|
|
962
826
|
const uth = signTheta * Math.sqrt(Math.max(Theta, 0)) / Sigma;
|
|
963
827
|
return [0, r, theta, 0, ut, ur, uth, uphi];
|
|
964
828
|
}
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
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
|
+
}
|
|
976
844
|
}
|
|
977
|
-
return
|
|
845
|
+
return flat;
|
|
978
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) {
|
|
979
859
|
const angular = Math.max(Math.abs(y0[7]), Math.abs(y0[6]), 1e-12);
|
|
980
|
-
|
|
981
|
-
const sol = solveODESystem((_t, s) => accel(s), y0.slice(), [0, steps * h], { dt: h });
|
|
982
|
-
return sol.y[sol.y.length - 1] ?? y0.slice();
|
|
860
|
+
return ((2 * Math.PI) / angular) * fraction;
|
|
983
861
|
}
|
|
984
862
|
function sampleOf(metric, a, y0, y1, steps, mu2) {
|
|
985
863
|
const start = conservedOf(metric, a, y0, mu2);
|
|
@@ -1024,7 +902,7 @@ export function kerrGeodesic(opts) {
|
|
|
1024
902
|
const fraction = opts.fraction ?? 0.01;
|
|
1025
903
|
const metric = kerrMetric(M, a);
|
|
1026
904
|
const y0 = carterState(M, a, r, theta, opts.E, opts.L, opts.Q, mu2, opts.signR ?? 1, opts.signTheta ?? 1, opts.allowOffShell === true);
|
|
1027
|
-
const y1 =
|
|
905
|
+
const y1 = integrateWithChristoffel((rr, th) => kerrChristoffel(M, a, rr, th), y0, orbitExtent(y0, fraction), steps);
|
|
1028
906
|
return sampleOf(metric, a, y0, y1, steps, mu2);
|
|
1029
907
|
}
|
|
1030
908
|
/**
|
|
@@ -1043,7 +921,7 @@ export function schwarzschildGeodesic(opts) {
|
|
|
1043
921
|
const fraction = opts.fraction ?? 0.01;
|
|
1044
922
|
const metric = schwarzschildMetric(M, 1, 1);
|
|
1045
923
|
const y0 = carterState(M, 0, r, theta, opts.E, opts.L, opts.Q, 1, opts.signR ?? 1, opts.signTheta ?? 1, false);
|
|
1046
|
-
const y1 =
|
|
924
|
+
const y1 = integrateWithChristoffel((rr, th) => schwarzschildChristoffel(M, rr, th), y0, orbitExtent(y0, fraction), steps);
|
|
1047
925
|
return sampleOf(metric, 0, y0, y1, steps, 1);
|
|
1048
926
|
}
|
|
1049
927
|
/**
|