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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formula-mathts.js","sourceRoot":"","sources":["../../src/numerical/formula-mathts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"formula-mathts.js","sourceRoot":"","sources":["../../src/numerical/formula-mathts.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * MathTS-backed scalar-formula parser.\n *\n * Backed by `@danielsimonjr/mathts-functions` (`parse(expr) → Node`,\n * `node.evaluate(scope)`). The package is a required dependency.\n *\n * SCALAR-ONLY guard: the CLI/inference contract returns a `number`. If a\n * formula evaluates to a non-number (matrix, complex, unit, function), this\n * throws a {@link FormulaError} rather than leaking MathTS types through the\n * seam.\n *\n * Bare `e` is the elementary charge. MathTS `{ physics: true, charge: 'scalar' }`\n * binds that symbol to the SI magnitude `1.602176634e-19`, so `1-e^2` is\n * ordinary arithmetic. `{ physics: true }` without `charge: 'scalar'` is a\n * Unit, and subtract does not accept it. Euler's number is `exp(x)`. The name\n * `euler` is refused. `E` stays unbound.\n *\n * @module numerical/formula-mathts\n */\n\nimport { compileExpr, parse as parseMathTs } from '@danielsimonjr/mathts-functions';\nimport type { CompiledFormula, FormulaParser } from './formula-contract.js';\nimport { BUILTIN_FUNCTION_NAMES, callBuiltinFunction, EulerNumberError, FormulaError, unknownFunctionMessage, FormulaValueError } from './formula-contract.js';\n\n/** Bare `e` is the SI magnitude, not the coulomb Unit. */\nconst PHYSICS_SCALAR = { physics: true, charge: 'scalar' } as const;\n\n/** Minimal structural shape of a MathTS AST node (the bits we use). */\ninterface MathNode {\n evaluate(scope: Record<string, number>): unknown;\n filter(predicate: (node: MathNode) => boolean): MathNode[];\n toString(): string;\n readonly isSymbolNode?: boolean;\n readonly isFunctionNode?: boolean;\n readonly name?: string;\n readonly fn?: { readonly name?: string };\n}\n\n/** Minimal structural shape of the @danielsimonjr/mathts-functions module. */\ninterface MathtsFunctionsModule {\n parse(expr: string): MathNode;\n}\n\n/**\n * Build a {@link FormulaParser} bound to an already-loaded mathts-functions\n * module. Pure (no I/O) — the dynamic import lives in the registry.\n */\nfunction createMathtsFormulaParser(\n mod: MathtsFunctionsModule,\n): FormulaParser {\n const builtinCache = new Map<string, boolean>();\n const isBuiltin = (name: string): boolean => {\n const cached = builtinCache.get(name);\n if (cached !== undefined) return cached;\n let builtin: boolean;\n try {\n mod.parse(name).evaluate({});\n builtin = true; // pi / e / sin / … resolve with an empty scope\n } catch {\n builtin = false; // a free variable does not\n }\n builtinCache.set(name, builtin);\n return builtin;\n };\n\n // A MathTS *function* (`gamma`, `distance`, `zeta`, `sin`, …) also resolves\n // with an empty scope: it returns the function. That is not a value. A bare\n // symbol with that name is a quantity (the adiabatic index, a length), and\n // treating it as a built-in dropped it from the free-variable list, so\n // `sqrt(gamma*pressure/density)` died as \"undeclared symbol 'gamma'\".\n // Only a name that evaluates to a number is a MathTS constant (`pi`, `tau`).\n // Bare `e` is one of those under MathTS's default (Euler's number). Evaluation\n // below reads it as the elementary charge through `{ physics: true, charge: 'scalar' }`.\n // An explicit scope `e` still wins. The name `euler` is refused below.\n // A call such as `gamma(5)` is still a callee, decided separately.\n const valueConstantCache = new Map<string, boolean>();\n const isValueConstant = (name: string): boolean => {\n const cached = valueConstantCache.get(name);\n if (cached !== undefined) return cached;\n let constant = false;\n try {\n constant = typeof mod.parse(name).evaluate({}) === 'number';\n } catch {\n constant = false;\n }\n valueConstantCache.set(name, constant);\n return constant;\n };\n\n // Functions the built-in parser documents but MathTS does not define (`ln`),\n // supplied through the scope so a formula means the same under either\n // parser. Anything outside the documented list still fails.\n const shims: Record<string, (...args: number[]) => number> = {};\n for (const name of BUILTIN_FUNCTION_NAMES) {\n if (!isBuiltin(name)) shims[name] = (...args) => callBuiltinFunction(name, args);\n }\n\n return {\n parse(expr: string): CompiledFormula {\n if (!expr || !expr.trim()) throw new FormulaError('empty formula');\n let node: MathNode;\n try {\n node = mod.parse(expr);\n } catch (err) {\n throw new FormulaError(\n `parse error: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n\n // Free variables = symbol names − function callees − numeric constants.\n // A function name is excluded only where it is called (`gamma(5)`), not\n // where it is a quantity (`gamma` the adiabatic index).\n const callees = new Set(\n node\n .filter((n) => n.isFunctionNode === true)\n .map((n) => n.fn?.name)\n .filter((n): n is string => typeof n === 'string'),\n );\n // A callee MathTS does not resolve and no shim supplies: evaluation would fail with MathTS's\n // own \"Undefined function\", so it fails with the shared diagnostic instead (audit I4).\n const symbolNames = node\n .filter((n) => n.isSymbolNode === true)\n .map((n) => n.name)\n .filter((n): n is string => typeof n === 'string');\n if (symbolNames.includes('euler') || callees.has('euler')) {\n throw new EulerNumberError();\n }\n const unknownCallee = [...callees].find((n) => !(n in shims) && !isBuiltin(n));\n const variables = [\n ...new Set(\n node\n .filter((n) => n.isSymbolNode === true)\n .map((n) => n.name)\n .filter((n): n is string => typeof n === 'string')\n .filter((n) => !callees.has(n) && !isValueConstant(n)),\n ),\n ].sort();\n\n // `compileExpr` applies `{ physics: true, charge: 'scalar' }` on each\n // evaluation, so bare `e` is the SI magnitude and a scope entry for `e` wins.\n const compiled = compileExpr(expr, PHYSICS_SCALAR);\n return {\n source: expr,\n variables,\n evaluate(scope: Record<string, number>): number {\n if (unknownCallee !== undefined) throw new FormulaError(unknownFunctionMessage(unknownCallee));\n let result: unknown;\n try {\n result = compiled.evaluate({ ...shims, ...scope });\n } catch (err) {\n // `compileExpr` quotes the name (`Undefined symbol \"process\"`).\n // The interpreter path reports `Undefined symbol process`.\n // The one place src/ reads MathTS message text: MathTS throws a plain `Error` with no\n // symbol field, and a pre-check against the scope cannot stand in because MathTS resolves\n // some names itself (`hbar` reads as a unit). It only normalizes the text; nothing branches on it.\n // Tracked in ACTIVE.md as a MathTS follow-up (a typed undefined-symbol error).\n const message = err instanceof Error ? err.message : String(err);\n throw new FormulaError(message.replace(/^Undefined symbol \"([^\"]+)\"$/, 'Undefined symbol $1'));\n }\n if (typeof result !== 'number' || !Number.isFinite(result)) {\n // typeof Infinity and NaN is \"number\", which reads as a type error.\n // A Complex is an object; \"got object\" hides that sqrt(-1) left the reals.\n throw new FormulaValueError(`formula did not evaluate to a finite number (got ${describeNonFinite(result)})`);\n }\n return result;\n },\n };\n },\n };\n}\n\n/** What a non-finite or non-number result was, for the error text. */\nfunction describeNonFinite(result: unknown): string {\n if (typeof result === 'number') return String(result);\n if (result !== null && typeof result === 'object') {\n const c = result as { re?: unknown; im?: unknown; toString?: () => string };\n if (typeof c.re === 'number' && typeof c.im === 'number') {\n const text = typeof c.toString === 'function' ? c.toString() : `${c.re}+${c.im}i`;\n return `a complex number (${text})`;\n }\n }\n return typeof result;\n}\n\nconst mathTsModule: MathtsFunctionsModule = {\n // MathTS's Node type is not imported; `MathNode` is the structural subset\n // this parser reads (`evaluate`, `filter`, `isSymbolNode`, `isFunctionNode`,\n // `name`, `fn`), every member of which exists on a MathTS node.\n parse: (expr) => parseMathTs(expr) as unknown as MathNode,\n};\n\n/** The MathTS formula parser. @internal */\nexport const mathtsFormulaParser: FormulaParser = createMathtsFormulaParser(mathTsModule);\n\n/** Parse a scalar formula. @internal */\nexport function parseFormula(expr: string): CompiledFormula {\n return mathtsFormulaParser.parse(expr);\n}\n"]}
|
|
@@ -10,10 +10,20 @@
|
|
|
10
10
|
import type { FormulaParser } from './formula-contract.js';
|
|
11
11
|
import type { Dimension } from '../dimensional/types.js';
|
|
12
12
|
import type { FormulaDimensionChecker, ParsedPhysics } from './formula-dimension.js';
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
/**
|
|
14
|
+
* The one formula parser kind. The `builtin` recursive-descent parser was
|
|
15
|
+
* removed with Path B, so the type has no second member; the CLI records
|
|
16
|
+
* this value in an experiment record's environment.
|
|
17
|
+
*/
|
|
18
|
+
type FormulaParserKind = 'mathts';
|
|
19
|
+
/**
|
|
20
|
+
* Resolve the active formula parser. It is the MathTS parser. The function
|
|
21
|
+
* stays async because the CLI awaits it on a code path that once loaded an
|
|
22
|
+
* optional peer; the value is constant.
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
15
25
|
export declare function getFormulaParser(): Promise<FormulaParser>;
|
|
16
|
-
/** Which parser is active
|
|
26
|
+
/** Which parser is active: `mathts`, the one value of {@link FormulaParserKind}. @internal */
|
|
17
27
|
export declare function getFormulaParserKind(): Promise<FormulaParserKind>;
|
|
18
28
|
/**
|
|
19
29
|
* The dimensional checker for user formulas. It transpiles the MathTS AST.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formula-registry.d.ts","sourceRoot":"","sources":["../../src/numerical/formula-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGrF,KAAK,iBAAiB,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"formula-registry.d.ts","sourceRoot":"","sources":["../../src/numerical/formula-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGrF;;;;GAIG;AACH,KAAK,iBAAiB,GAAG,QAAQ,CAAC;AAElC;;;;;GAKG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,CAE/D;AAED,8FAA8F;AAC9F,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAEvE;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAEnF;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GACxC,OAAO,CAAC,aAAa,CAAC,CAExB"}
|
|
@@ -9,11 +9,16 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { mathtsFormulaParser } from './formula-mathts.js';
|
|
11
11
|
import { builtinFormulaDimensionChecker } from './formula-dimension.js';
|
|
12
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Resolve the active formula parser. It is the MathTS parser. The function
|
|
14
|
+
* stays async because the CLI awaits it on a code path that once loaded an
|
|
15
|
+
* optional peer; the value is constant.
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
13
18
|
export async function getFormulaParser() {
|
|
14
19
|
return mathtsFormulaParser;
|
|
15
20
|
}
|
|
16
|
-
/** Which parser is active
|
|
21
|
+
/** Which parser is active: `mathts`, the one value of {@link FormulaParserKind}. @internal */
|
|
17
22
|
export async function getFormulaParserKind() {
|
|
18
23
|
return 'mathts';
|
|
19
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formula-registry.js","sourceRoot":"","sources":["../../src/numerical/formula-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG1D,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"formula-registry.js","sourceRoot":"","sources":["../../src/numerical/formula-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG1D,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AASxE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,8FAA8F;AAC9F,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B;IAC9C,OAAO,8BAA8B,EAAE,CAAC;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAY,EACZ,IAAyC;IAEzC,OAAO,8BAA8B,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5D,CAAC","sourcesContent":["/**\n * Formula-parser registry.\n *\n * `getFormulaParser()` returns the MathTS-backed parser. The MathTS packages\n * are required dependencies, so there is no absent-peer branch and no Path B\n * parser.\n *\n * @module numerical/formula-registry\n */\n\nimport type { FormulaParser } from './formula-contract.js';\nimport { mathtsFormulaParser } from './formula-mathts.js';\nimport type { Dimension } from '../dimensional/types.js';\nimport type { FormulaDimensionChecker, ParsedPhysics } from './formula-dimension.js';\nimport { builtinFormulaDimensionChecker } from './formula-dimension.js';\n\n/**\n * The one formula parser kind. The `builtin` recursive-descent parser was\n * removed with Path B, so the type has no second member; the CLI records\n * this value in an experiment record's environment.\n */\ntype FormulaParserKind = 'mathts';\n\n/**\n * Resolve the active formula parser. It is the MathTS parser. The function\n * stays async because the CLI awaits it on a code path that once loaded an\n * optional peer; the value is constant.\n * @internal\n */\nexport async function getFormulaParser(): Promise<FormulaParser> {\n return mathtsFormulaParser;\n}\n\n/** Which parser is active: `mathts`, the one value of {@link FormulaParserKind}. @internal */\nexport async function getFormulaParserKind(): Promise<FormulaParserKind> {\n return 'mathts';\n}\n\n/**\n * The dimensional checker for user formulas. It transpiles the MathTS AST.\n * @internal\n */\nexport async function getFormulaDimensionChecker(): Promise<FormulaDimensionChecker> {\n return builtinFormulaDimensionChecker();\n}\n\n/**\n * Parse physics text to a dimensional `ExprNode` + its inferred dimension.\n * The single public string→`ExprNode` entry point.\n *\n * @throws {FormulaDimensionError} on a parse error or non-homogeneity.\n * @public\n */\nexport async function parsePhysics(\n text: string,\n dims: Readonly<Record<string, Dimension>>,\n): Promise<ParsedPhysics> {\n return builtinFormulaDimensionChecker().parse(text, dims);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geodesic-integrator.js","sourceRoot":"","sources":["../../src/numerical/geodesic-integrator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"geodesic-integrator.js","sourceRoot":"","sources":["../../src/numerical/geodesic-integrator.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Fixed-step RK4 integrator for the geodesic equation in an arbitrary\n * Lorentzian manifold (v0.4.0, Task 14 [U]).\n *\n * Solves the second-order ODE system\n *\n * d²x^μ/dτ² + Γ^μ_{νρ}(x) (dx^ν/dτ)(dx^ρ/dτ) = 0\n *\n * by casting it as a first-order system on the (x, v) phase space:\n *\n * dx^μ/dτ = v^μ\n * dv^μ/dτ = −Γ^μ_{νρ}(x) v^ν v^ρ (Einstein summation over ν, ρ)\n *\n * The Christoffel symbol Γ^μ_{νρ} is supplied as a plain-JS closure that\n * maps a 4-coordinate array to a [4][4][4] tensor. No TensorEngine\n * dependency — the integrator is self-contained. The fixed steps are\n * MathTS `solveODESystem` with `dt` set, which is that library's classical\n * RK4. Adaptive `solveODE` is not this step.\n *\n * Validated against the cycloid parametric form for radial Schwarzschild\n * infall to ±1e-6 (Task 14 test, η = 0.5).\n *\n * @module numerical/geodesic-integrator\n */\nimport { solveODESystem } from '@danielsimonjr/mathts-functions';\nimport { NumericalBackendError } from './errors.js';\n\n/**\n * Input bundle for `integrateGeodesic`.\n * @public\n */\nexport interface GeodesicIntegratorInputs {\n /**\n * Christoffel-symbol closure. Maps a 4-coordinate array x^μ to a\n * Float64Array(64) containing Γ^μ_{νρ}(x) in λ-major layout:\n * index (λ, μ, ν) → 16·λ + 4·μ + ν.\n *\n * BR-2 (v0.6.0 Task 2.9): migrated from nested number[][][] to flat\n * Float64Array(64). Consumers call `arr[16*mu + 4*nu + rho]`.\n *\n * The optional `out` buffer lets the integrator pass a reused scratch\n * Float64Array(64) so the hot loop avoids per-call allocation. A function\n * that ignores `out` (e.g. allocates fresh each call) still satisfies this\n * type — the optimization is opt-in.\n */\n christoffelFn: (x: ReadonlyArray<number>, out?: Float64Array) => Float64Array;\n\n /** Initial 4-position x^μ(τ₀) = [t, r, θ, φ]. */\n x0: readonly [number, number, number, number];\n\n /**\n * Initial 4-velocity dx^μ/dτ at τ₀.\n *\n * I2 fix: for a Schwarzschild radial timelike geodesic starting at\n * coordinate radius r₀, use\n * v0 = [1/√(1 − r_s/r₀), 0, 0, 0]\n * so that g_{μν} u^μ u^ν = −c² holds. At r₀ = 100·r_s this gives\n * dt/dτ ≈ 1.005, not 1.\n */\n v0: readonly [number, number, number, number];\n\n /** Proper-time parameter at the start of integration. */\n tauStart: number;\n\n /** Proper-time parameter at the end of integration. */\n tauEnd: number;\n\n /** Number of fixed RK4 steps. Must be a positive integer. */\n steps: number;\n\n /**\n * E11 fix: explicit domain-validity option in place of the\n * `(christoffelFn as any).r_s` monkey-patch. If supplied, the\n * integrator throws `NumericalBackendError` when `x0[1] < domainMinRadius`\n * (e.g. for Schwarzschild: caller passes `3 * r_s` to enforce the\n * v0.4.0 domain restriction r ≥ 3·r_Schwarz).\n */\n domainMinRadius?: number;\n}\n\n/**\n * Result of `integrateGeodesic`.\n * @public\n */\nexport interface GeodesicIntegratorResult {\n /** Final 4-position x^μ(τEnd). */\n readonly xFinal: readonly [number, number, number, number];\n\n /** Final 4-velocity v^μ(τEnd). */\n readonly vFinal: readonly [number, number, number, number];\n\n /**\n * Sampled trajectory positions (approximately 100 evenly-spaced snapshots\n * plus the initial point). Useful for visualisation and diagnostics.\n */\n readonly trajectory: ReadonlyArray<readonly [number, number, number, number]>;\n}\n\n// ---------------------------------------------------------------------------\n// Internal helpers\n// ---------------------------------------------------------------------------\n\ntype Vec4 = [number, number, number, number];\n\n/**\n * Evaluate the Christoffel acceleration −Γ^μ_{νρ} v^ν v^ρ at position x\n * with 4-velocity v. Returns (dx/dτ, dv/dτ) = (v, accel).\n *\n * BR-2 (v0.6.0 Task 2.9): christoffelFn now returns Float64Array(64).\n * Index access: G[16*mu + 4*nu + rho] (λ-major layout).\n */\nfunction geodesicRHS(\n christoffelFn: (x: ReadonlyArray<number>, out?: Float64Array) => Float64Array,\n x: Vec4,\n v: Vec4,\n // Reused scratch buffer for the Christoffel evaluation. Safe: G is fully\n // consumed into `dv` below before geodesicRHS returns, so the next call may\n // overwrite it. `dx`/`dv` are fresh arrays and never alias G.\n scratch?: Float64Array,\n): { dx: Vec4; dv: Vec4 } {\n const G = christoffelFn(x, scratch);\n const v0 = v[0], v1 = v[1], v2 = v[2], v3 = v[3];\n let dv0 = 0, dv1 = 0, dv2 = 0, dv3 = 0;\n\n for (let mu = 0; mu < 4; mu++) {\n // Bolt: Hoist the invariant 16 * mu multiplication outside the nu, rho loops\n const mu16 = mu * 16;\n let acc = 0;\n let accTerm = 0;\n let g = 0;\n\n // Bolt: Fully unroll the inner `nu` and `rho` loops for a fixed 4D spacetime\n // to eliminate loop overhead and index arithmetic, caching `v` into scalar variables.\n\n // nu = 0\n let offset = mu16;\n accTerm = 0;\n g = G[offset]; if (g !== 0) accTerm += g * v0;\n g = G[offset+1]; if (g !== 0) accTerm += g * v1;\n g = G[offset+2]; if (g !== 0) accTerm += g * v2;\n g = G[offset+3]; if (g !== 0) accTerm += g * v3;\n if (accTerm !== 0) acc += accTerm * v0;\n\n // nu = 1\n offset += 4;\n accTerm = 0;\n g = G[offset]; if (g !== 0) accTerm += g * v0;\n g = G[offset+1]; if (g !== 0) accTerm += g * v1;\n g = G[offset+2]; if (g !== 0) accTerm += g * v2;\n g = G[offset+3]; if (g !== 0) accTerm += g * v3;\n if (accTerm !== 0) acc += accTerm * v1;\n\n // nu = 2\n offset += 4;\n accTerm = 0;\n g = G[offset]; if (g !== 0) accTerm += g * v0;\n g = G[offset+1]; if (g !== 0) accTerm += g * v1;\n g = G[offset+2]; if (g !== 0) accTerm += g * v2;\n g = G[offset+3]; if (g !== 0) accTerm += g * v3;\n if (accTerm !== 0) acc += accTerm * v2;\n\n // nu = 3\n offset += 4;\n accTerm = 0;\n g = G[offset]; if (g !== 0) accTerm += g * v0;\n g = G[offset+1]; if (g !== 0) accTerm += g * v1;\n g = G[offset+2]; if (g !== 0) accTerm += g * v2;\n g = G[offset+3]; if (g !== 0) accTerm += g * v3;\n if (accTerm !== 0) acc += accTerm * v3;\n\n if (mu === 0) dv0 = -acc;\n else if (mu === 1) dv1 = -acc;\n else if (mu === 2) dv2 = -acc;\n else dv3 = -acc;\n }\n\n return { dx: [v0, v1, v2, v3], dv: [dv0, dv1, dv2, dv3] };\n}\n\n// ---------------------------------------------------------------------------\n// Public API\n// ---------------------------------------------------------------------------\n\n/**\n * Numerically integrate the geodesic equation for a timelike (or null)\n * worldline in an arbitrary curved spacetime using a fixed-step classical\n * fourth-order Runge-Kutta scheme.\n *\n * @public\n */\nexport function integrateGeodesic(\n inputs: GeodesicIntegratorInputs,\n): GeodesicIntegratorResult {\n const { christoffelFn, x0, v0, tauStart, tauEnd, steps, domainMinRadius } = inputs;\n // BR-2: christoffelFn now returns Float64Array(64); geodesicRHS reads flat layout.\n\n // E11 fix: explicit option in place of monkey-patched .r_s on the closure.\n // Callers (e.g. the Schwarzschild test fixture) pass `3 * r_s` directly.\n if (typeof domainMinRadius === 'number' && x0[1] < domainMinRadius) {\n throw new NumericalBackendError(\n `integrateGeodesic: initial radius r0=${x0[1]} < domainMinRadius=${domainMinRadius}. ` +\n `Position is outside the valid integration domain. ` +\n `For Schwarzschild geodesics this restriction is r ≥ 3·r_Schwarz (v0.4.0).`,\n );\n }\n\n if (!Number.isInteger(steps) || steps <= 0) {\n throw new NumericalBackendError(\n `integrateGeodesic: steps must be a positive integer, got ${steps}`,\n );\n }\n\n const h = (tauEnd - tauStart) / steps;\n const y0 = [x0[0], x0[1], x0[2], x0[3], v0[0], v0[1], v0[2], v0[3]];\n\n // One scratch buffer reused across all Christoffel evaluations (4 per step).\n // Each geodesicRHS consumes its Γ before the next call, so reuse is safe and\n // avoids ~4·steps Float64Array(64) allocations per integration.\n const scratch = new Float64Array(64);\n const sol = solveODESystem(\n (_tau, y) => {\n const x: Vec4 = [y[0], y[1], y[2], y[3]];\n const v: Vec4 = [y[4], y[5], y[6], y[7]];\n const s = geodesicRHS(christoffelFn, x, v, scratch);\n return [s.dx[0], s.dx[1], s.dx[2], s.dx[3], s.dv[0], s.dv[1], s.dv[2], s.dv[3]];\n },\n y0,\n [tauStart, tauEnd],\n { dt: h },\n );\n\n const asVec4 = (row: readonly number[]): Vec4 => [row[0], row[1], row[2], row[3]];\n const sampleEvery = Math.max(1, Math.floor(steps / 100));\n const trajectory: Vec4[] = [asVec4(sol.y[0] ?? y0)];\n for (let i = 0; i < steps; i++) {\n if ((i + 1) % sampleEvery === 0) {\n const row = sol.y[i + 1] ?? sol.y[sol.y.length - 1] ?? y0;\n trajectory.push(asVec4(row));\n }\n }\n const last = sol.y[sol.y.length - 1] ?? y0;\n\n return {\n xFinal: asVec4(last),\n vFinal: [last[4], last[5], last[6], last[7]],\n trajectory,\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometrized.js","sourceRoot":"","sources":["../../src/numerical/geometrized.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;;;GAKG;AACH,MAAM,OAAO,8BAA+B,SAAQ,QAAQ;IAC1D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;QAC7C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,8BAA8B,CAAC,SAAS,CAAC,CAAC;IACxE,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAc;IAC9C,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,8BAA8B,CACtC,qEAAqE;YACnE,wCAAwC,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,KAAK,IAAI;YACjE,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,iDAAiD,CAC1E,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,GAAc;IAC3D,OAAO,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,GAAc;IAC/D,OAAO,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC"}
|
|
1
|
+
{"version":3,"file":"geometrized.js","sourceRoot":"","sources":["../../src/numerical/geometrized.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;;;GAKG;AACH,MAAM,OAAO,8BAA+B,SAAQ,QAAQ;IAC1D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;QAC7C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,8BAA8B,CAAC,SAAS,CAAC,CAAC;IACxE,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAc;IAC9C,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,8BAA8B,CACtC,qEAAqE;YACnE,wCAAwC,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,KAAK,IAAI;YACjE,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,iDAAiD,CAC1E,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,GAAc;IAC3D,OAAO,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,GAAc;IAC/D,OAAO,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC","sourcesContent":["/**\n * Geometrized-units boundary adapters (G-9 increment 1).\n *\n * Converts a scalar between SI and geometrized (G = c = 1) units, driven\n * MECHANICALLY by the `Dimension` exponent vector — the dimension functor\n * earning its keep. For an SI quantity of dimension L^l M^m T^t the single\n * conversion factor is `G^m · c^(t − 2m)` (each kg → G/c² metres, each second\n * → c metres); the geometrized quantity is a pure length L^(l+m+t).\n *\n * This is the self-contained FOUNDATION of the units-normalization layer\n * (design: docs/planning/v0.10.0-Units-Normalization-Design-Note.md, Adam-\n * vetted r2; plan: docs/planning/v0.13-G9-Adapters-Plan.md, Eve-vetted). Only c\n * and G are in scope: a nonzero electromagnetic / thermal / molar / luminous\n * exponent (I/Θ/N/J) throws.\n *\n * PUBLIC boundary API (G-9 increment 2): a consumer running the GR pipeline in\n * geometrized (G = c = 1) units converts scalars at the boundary with these\n * adapters. The consumer-wide DEFAULT-pipeline migration (increment 3) was\n * DECLINED after adversarial review — it is measured to give no precision win\n * (and far worse far-field; see docs/planning/v0.14-G9-Increment3-Disposition.md).\n * The SI pipeline stays the default; this geometrized layer is the optional\n * boundary API.\n *\n * @module numerical/geometrized\n */\n\nimport type { Dimension } from '../dimensional/types.js';\nimport { UPTError } from '../dimensional/errors.js';\nimport { C_SI, G_SI } from '../core/constants.js';\n\n/**\n * A dimension carries a non-c/G base (I/Θ/N/J ≠ 0) and cannot be geometrized\n * by c and G alone (k_B / ε₀ extensions are out of scope for this increment).\n *\n * @public\n */\nexport class NonGeometrizableDimensionError extends UPTError {\n constructor(message: string) {\n super(message);\n this.name = 'NonGeometrizableDimensionError';\n Object.setPrototypeOf(this, NonGeometrizableDimensionError.prototype);\n }\n}\n\n/**\n * The single SI→geometrized conversion factor for `dim`: `G^M · c^(T − 2M)`\n * (only the mass and time exponents enter). Shared by `toGeometrized` /\n * `fromGeometrized` so the round-trip is a clean inverse. A nonzero I/Θ/N/J\n * exponent throws `NonGeometrizableDimensionError` BEFORE any factor is\n * computed.\n *\n * @public\n */\nexport function geometrizedFactor(dim: Dimension): number {\n if (dim.I !== 0 || dim.Theta !== 0 || dim.N !== 0 || dim.J !== 0) {\n throw new NonGeometrizableDimensionError(\n `geometrizedFactor: only c and G are in scope; this dimension has a ` +\n `nonzero non-mechanizable exponent (I=${dim.I}, Θ=${dim.Theta}, ` +\n `N=${dim.N}, J=${dim.J}). Geometrization handles length / mass / time.`,\n );\n }\n return Math.pow(G_SI, dim.M) * Math.pow(C_SI, dim.T - 2 * dim.M);\n}\n\n/** SI → geometrized (G = c = 1). @public */\nexport function toGeometrized(valueSI: number, dim: Dimension): number {\n return valueSI * geometrizedFactor(dim);\n}\n\n/** Geometrized (G = c = 1) → SI. @public */\nexport function fromGeometrized(valueGeom: number, dim: Dimension): number {\n return valueGeom / geometrizedFactor(dim);\n}\n"]}
|
|
@@ -26,8 +26,9 @@ export interface GL4State {
|
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
28
|
* Per-step snapshot recorded by the integrator. `v` (the contravariant
|
|
29
|
-
* 4-velocity v^μ = g^{μν} p_ν) is optional
|
|
30
|
-
* for it,
|
|
29
|
+
* 4-velocity v^μ = g^{μν} p_ν) is declared optional and is never emitted:
|
|
30
|
+
* no option asks for it, and nothing in `src/` reads it. It stays so a caller's
|
|
31
|
+
* own snapshot type can carry one.
|
|
31
32
|
*
|
|
32
33
|
* @public
|
|
33
34
|
*/
|
|
@@ -90,34 +91,27 @@ export interface GL4Options {
|
|
|
90
91
|
}) => void;
|
|
91
92
|
}
|
|
92
93
|
/**
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
* v0.6.1: dropped export — internal-only result shape (was already
|
|
98
|
-
* @internal-tagged but had no external consumer).
|
|
94
|
+
* The state after one GL4 step, with the Picard iteration count that step
|
|
95
|
+
* consumed. MathTS `gaussLegendre4` does not expose its two internal stage
|
|
96
|
+
* values, so this is the advanced state and nothing else.
|
|
97
|
+
* @internal
|
|
99
98
|
*/
|
|
100
|
-
interface
|
|
101
|
-
readonly
|
|
102
|
-
readonly
|
|
103
|
-
readonly stageDx: readonly [readonly number[], readonly number[]];
|
|
104
|
-
readonly stageDp: readonly [readonly number[], readonly number[]];
|
|
99
|
+
export interface GL4StepResult {
|
|
100
|
+
readonly x: readonly number[];
|
|
101
|
+
readonly p: readonly number[];
|
|
105
102
|
readonly iterations: number;
|
|
106
103
|
}
|
|
107
104
|
/**
|
|
108
|
-
* One GL4 step
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
* with a message matching `/Picard iteration did not converge/` when the
|
|
113
|
-
* Picard cap is exhausted.
|
|
114
|
-
*
|
|
105
|
+
* One GL4 step of the geodesic Hamiltonian, via MathTS `gaussLegendre4`.
|
|
106
|
+
* Throws `GL4ConvergenceError` with a message matching
|
|
107
|
+
* `/Picard iteration did not converge/` when the Picard cap is exhausted;
|
|
108
|
+
* any other error from the metric closures propagates unchanged.
|
|
115
109
|
* @internal
|
|
116
110
|
*/
|
|
117
|
-
export declare function
|
|
111
|
+
export declare function gl4Step(state: GL4State, h: number, gInverseFn: (x: readonly number[]) => Float64Array, dgInverseFn: (x: readonly number[]) => Float64Array, opts: {
|
|
118
112
|
picardTol: number;
|
|
119
113
|
picardMaxIter: number;
|
|
120
|
-
}):
|
|
114
|
+
}): GL4StepResult;
|
|
121
115
|
/**
|
|
122
116
|
* GL4 symplectic integrator on the canonical (x, p) geodesic Hamiltonian.
|
|
123
117
|
*
|
|
@@ -163,10 +157,11 @@ export declare function solveGL4Stage(state: GL4State, h: number, gInverseFn: (x
|
|
|
163
157
|
* @param initialState — canonical (x, p) at τ = 0. Units follow the
|
|
164
158
|
* `gInverseFn` convention (see above).
|
|
165
159
|
* @param options — see {@link GL4Options}:
|
|
166
|
-
* - `steps` — integer step count (dimensionless).
|
|
167
|
-
* - `tauMax` — affine-parameter extent (seconds in
|
|
168
|
-
*
|
|
169
|
-
* - `
|
|
160
|
+
* - `steps` — positive integer step count (dimensionless).
|
|
161
|
+
* - `tauMax` — positive finite affine-parameter extent (seconds in
|
|
162
|
+
* canonical SI). The integrator runs forward from τ = 0 only.
|
|
163
|
+
* - `gInverseFn(x)[μ*dim + ν]` — inverse metric g^{μν}(x), row-major flat.
|
|
164
|
+
* - `dgInverseFn(x)[λ*dim² + μ*dim + ν]` — ∂_λ g^{μν}(x), flat.
|
|
170
165
|
* - `picardTol` — convergence tolerance (dimensionless, default 1e-12).
|
|
171
166
|
* - `picardMaxIter` — fixed-point iteration cap (dimensionless, default 50).
|
|
172
167
|
* - `hMin` — step-halving floor (same units as `tauMax / steps`).
|
|
@@ -174,8 +169,14 @@ export declare function solveGL4Stage(state: GL4State, h: number, gInverseFn: (x
|
|
|
174
169
|
* @returns `steps + 1` snapshots: index `0` is the initial state, index `n`
|
|
175
170
|
* is the state after `n` steps (τ = n · h). Each snapshot carries `tau`,
|
|
176
171
|
* `x`, `p` (and optional `v` = g^{μν} p_ν) in the units chosen above.
|
|
177
|
-
* @throws NumericalBackendError if `
|
|
172
|
+
* @throws NumericalBackendError if `steps` is not a positive integer, if
|
|
173
|
+
* `tauMax` is not a positive finite number, or if
|
|
174
|
+
* `initialState.x[1] < domainMinRadius`. The two option checks run before
|
|
175
|
+
* any metric evaluation.
|
|
178
176
|
* @throws GL4ConvergenceError if Picard fails even after step-halving to h_min.
|
|
177
|
+
* Any other error thrown by `gInverseFn` or `dgInverseFn` (a domain
|
|
178
|
+
* crossing the caller signals by throwing, or a programming error) is
|
|
179
|
+
* rethrown unchanged; it is not halved away.
|
|
179
180
|
*
|
|
180
181
|
* @public
|
|
181
182
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gl4-integrator.d.ts","sourceRoot":"","sources":["../../src/numerical/gl4-integrator.ts"],"names":[],"mappings":"AA4BA;;;;;;GAMG;AACH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAEtE;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,QAAQ;IACvB,+BAA+B;IAC/B,QAAQ,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,yCAAyC;IACzC,QAAQ,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B;AAED
|
|
1
|
+
{"version":3,"file":"gl4-integrator.d.ts","sourceRoot":"","sources":["../../src/numerical/gl4-integrator.ts"],"names":[],"mappings":"AA4BA;;;;;;GAMG;AACH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAEtE;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,QAAQ;IACvB,+BAA+B;IAC/B,QAAQ,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,yCAAyC;IACzC,QAAQ,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB;qCACiC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;gFAC4E;IAC5E,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,KAAK,YAAY,CAAC;IAC5D;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,KAAK,YAAY,CAAC;IAC7D,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,mEAAmE;IACnE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,+FAA+F;IAC/F,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;qCAEiC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC3F;AAgDD;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,QAAQ,EACf,CAAC,EAAE,MAAM,EACT,UAAU,EAAE,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,KAAK,YAAY,EAClD,WAAW,EAAE,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,KAAK,YAAY,EACnD,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACjD,aAAa,CA6Bf;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,QAAQ,EACtB,OAAO,EAAE,UAAU,GAClB,SAAS,WAAW,EAAE,CA0GxB"}
|
|
@@ -17,9 +17,9 @@
|
|
|
17
17
|
* p_μ = g_μν dx^ν/dτ — not (x, v). This is what makes the flow symplectic
|
|
18
18
|
* on T*M.
|
|
19
19
|
*
|
|
20
|
-
* This module holds the types, the Butcher constants, the
|
|
21
|
-
*
|
|
22
|
-
* `integrateGeodesicGL4`.
|
|
20
|
+
* This module holds the types, the Butcher constants, the one-step driver
|
|
21
|
+
* (`gl4Step`, internal; the implicit Picard stages are MathTS
|
|
22
|
+
* `gaussLegendre4`'s), and the integrator entry point `integrateGeodesicGL4`.
|
|
23
23
|
*
|
|
24
24
|
* @module numerical/gl4-integrator
|
|
25
25
|
*/
|
|
@@ -41,14 +41,15 @@ export { GL4_A, GL4_B, GL4_C } from '@danielsimonjr/mathts-functions';
|
|
|
41
41
|
*
|
|
42
42
|
* `dg[μ*dim² + ν*dim + ρ] = ∂_μ g^{νρ}`. A coefficient that is exactly 0 is
|
|
43
43
|
* skipped, so `0 * NaN` does not poison a component the term does not enter.
|
|
44
|
+
* `xBuf` is a reused coordinate buffer of length `dim`; it is the array the
|
|
45
|
+
* metric closures receive, so it is a plain `number[]` and needs no cast.
|
|
44
46
|
*/
|
|
45
47
|
function geodesicDeriv(y, gInverseFn, dgInverseFn, xBuf) {
|
|
46
48
|
const dim = xBuf.length;
|
|
47
49
|
for (let i = 0; i < dim; i++)
|
|
48
50
|
xBuf[i] = y[i];
|
|
49
|
-
const
|
|
50
|
-
const
|
|
51
|
-
const dgInv = dgInverseFn(coords);
|
|
51
|
+
const gInv = gInverseFn(xBuf);
|
|
52
|
+
const dgInv = dgInverseFn(xBuf);
|
|
52
53
|
const out = new Array(dim * 2);
|
|
53
54
|
for (let mu = 0; mu < dim; mu++) {
|
|
54
55
|
let dx = 0;
|
|
@@ -76,15 +77,21 @@ function geodesicDeriv(y, gInverseFn, dgInverseFn, xBuf) {
|
|
|
76
77
|
}
|
|
77
78
|
return out;
|
|
78
79
|
}
|
|
79
|
-
/**
|
|
80
|
-
|
|
80
|
+
/**
|
|
81
|
+
* One GL4 step of the geodesic Hamiltonian, via MathTS `gaussLegendre4`.
|
|
82
|
+
* Throws `GL4ConvergenceError` with a message matching
|
|
83
|
+
* `/Picard iteration did not converge/` when the Picard cap is exhausted;
|
|
84
|
+
* any other error from the metric closures propagates unchanged.
|
|
85
|
+
* @internal
|
|
86
|
+
*/
|
|
87
|
+
export function gl4Step(state, h, gInverseFn, dgInverseFn, opts) {
|
|
81
88
|
const dim = state.x.length;
|
|
82
89
|
const y0 = new Array(dim * 2);
|
|
83
90
|
for (let i = 0; i < dim; i++) {
|
|
84
91
|
y0[i] = state.x[i];
|
|
85
92
|
y0[dim + i] = state.p[i];
|
|
86
93
|
}
|
|
87
|
-
const xBuf = new
|
|
94
|
+
const xBuf = new Array(dim).fill(0);
|
|
88
95
|
let solved;
|
|
89
96
|
try {
|
|
90
97
|
solved = gaussLegendre4((_t, y) => geodesicDeriv(y, gInverseFn, dgInverseFn, xBuf), y0, [0, h], { steps: 1, picardTol: opts.picardTol, picardMaxIter: opts.picardMaxIter });
|
|
@@ -102,29 +109,6 @@ function advanceGl4(state, h, gInverseFn, dgInverseFn, opts) {
|
|
|
102
109
|
}
|
|
103
110
|
return { x: y1.slice(0, dim), p: y1.slice(dim), iterations };
|
|
104
111
|
}
|
|
105
|
-
/**
|
|
106
|
-
* One GL4 step, reported in the stage-result shape the stage tests read.
|
|
107
|
-
*
|
|
108
|
-
* The step itself is MathTS `gaussLegendre4`. In flat space `p` is constant,
|
|
109
|
-
* so both stage momenta equal that advanced `p`. Throws `GL4ConvergenceError`
|
|
110
|
-
* with a message matching `/Picard iteration did not converge/` when the
|
|
111
|
-
* Picard cap is exhausted.
|
|
112
|
-
*
|
|
113
|
-
* @internal
|
|
114
|
-
*/
|
|
115
|
-
export function solveGL4Stage(state, h, gInverseFn, dgInverseFn, opts) {
|
|
116
|
-
const step = advanceGl4(state, h, gInverseFn, dgInverseFn, opts);
|
|
117
|
-
const dim = step.p.length;
|
|
118
|
-
const zeros = new Array(dim).fill(0);
|
|
119
|
-
// In flat space p is constant, so both stage momenta equal the advanced p.
|
|
120
|
-
return {
|
|
121
|
-
stageX: [step.x.slice(), step.x.slice()],
|
|
122
|
-
stageP: [step.p.slice(), step.p.slice()],
|
|
123
|
-
stageDx: [zeros, zeros.slice()],
|
|
124
|
-
stageDp: [zeros.slice(), zeros.slice()],
|
|
125
|
-
iterations: step.iterations,
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
112
|
// ---------------------------------------------------------------------------
|
|
129
113
|
// Integrator entry-point (Task 3, Phase 1a-iii)
|
|
130
114
|
// ---------------------------------------------------------------------------
|
|
@@ -173,10 +157,11 @@ export function solveGL4Stage(state, h, gInverseFn, dgInverseFn, opts) {
|
|
|
173
157
|
* @param initialState — canonical (x, p) at τ = 0. Units follow the
|
|
174
158
|
* `gInverseFn` convention (see above).
|
|
175
159
|
* @param options — see {@link GL4Options}:
|
|
176
|
-
* - `steps` — integer step count (dimensionless).
|
|
177
|
-
* - `tauMax` — affine-parameter extent (seconds in
|
|
178
|
-
*
|
|
179
|
-
* - `
|
|
160
|
+
* - `steps` — positive integer step count (dimensionless).
|
|
161
|
+
* - `tauMax` — positive finite affine-parameter extent (seconds in
|
|
162
|
+
* canonical SI). The integrator runs forward from τ = 0 only.
|
|
163
|
+
* - `gInverseFn(x)[μ*dim + ν]` — inverse metric g^{μν}(x), row-major flat.
|
|
164
|
+
* - `dgInverseFn(x)[λ*dim² + μ*dim + ν]` — ∂_λ g^{μν}(x), flat.
|
|
180
165
|
* - `picardTol` — convergence tolerance (dimensionless, default 1e-12).
|
|
181
166
|
* - `picardMaxIter` — fixed-point iteration cap (dimensionless, default 50).
|
|
182
167
|
* - `hMin` — step-halving floor (same units as `tauMax / steps`).
|
|
@@ -184,21 +169,31 @@ export function solveGL4Stage(state, h, gInverseFn, dgInverseFn, opts) {
|
|
|
184
169
|
* @returns `steps + 1` snapshots: index `0` is the initial state, index `n`
|
|
185
170
|
* is the state after `n` steps (τ = n · h). Each snapshot carries `tau`,
|
|
186
171
|
* `x`, `p` (and optional `v` = g^{μν} p_ν) in the units chosen above.
|
|
187
|
-
* @throws NumericalBackendError if `
|
|
172
|
+
* @throws NumericalBackendError if `steps` is not a positive integer, if
|
|
173
|
+
* `tauMax` is not a positive finite number, or if
|
|
174
|
+
* `initialState.x[1] < domainMinRadius`. The two option checks run before
|
|
175
|
+
* any metric evaluation.
|
|
188
176
|
* @throws GL4ConvergenceError if Picard fails even after step-halving to h_min.
|
|
177
|
+
* Any other error thrown by `gInverseFn` or `dgInverseFn` (a domain
|
|
178
|
+
* crossing the caller signals by throwing, or a programming error) is
|
|
179
|
+
* rethrown unchanged; it is not halved away.
|
|
189
180
|
*
|
|
190
181
|
* @public
|
|
191
182
|
*/
|
|
192
183
|
export function integrateGeodesicGL4(initialState, options) {
|
|
193
184
|
const { steps, tauMax, gInverseFn, dgInverseFn, picardTol = 1e-12, picardMaxIter = 50, hMin, domainMinRadius, onStep, } = options;
|
|
185
|
+
if (!Number.isInteger(steps) || steps <= 0) {
|
|
186
|
+
throw new NumericalBackendError(`GL4 integrator: steps must be a positive integer, got ${steps}`);
|
|
187
|
+
}
|
|
188
|
+
if (!Number.isFinite(tauMax) || tauMax <= 0) {
|
|
189
|
+
throw new NumericalBackendError(`GL4 integrator: tauMax must be a positive finite number, got ${tauMax}`);
|
|
190
|
+
}
|
|
194
191
|
if (domainMinRadius !== undefined && initialState.x[1] < domainMinRadius) {
|
|
195
192
|
throw new NumericalBackendError(`GL4 integrator: initial r=${initialState.x[1]} < domainMinRadius=${domainMinRadius} (domain violation)`);
|
|
196
193
|
}
|
|
197
194
|
const h = tauMax / steps;
|
|
198
195
|
const hFloor = hMin ?? h * 1e-9;
|
|
199
|
-
const snapshots = [
|
|
200
|
-
{ tau: 0, x: initialState.x.slice(), p: initialState.p.slice() },
|
|
201
|
-
];
|
|
196
|
+
const snapshots = [{ tau: 0, x: initialState.x.slice(), p: initialState.p.slice() }];
|
|
202
197
|
let x = initialState.x.slice();
|
|
203
198
|
let p = initialState.p.slice();
|
|
204
199
|
const stateDim = x.length;
|
|
@@ -225,14 +220,18 @@ export function integrateGeodesicGL4(initialState, options) {
|
|
|
225
220
|
let subH = trialH;
|
|
226
221
|
while (subH >= hFloor) {
|
|
227
222
|
try {
|
|
228
|
-
advanced =
|
|
223
|
+
advanced = gl4Step({ x, p }, subH, gInverseFn, dgInverseFn, {
|
|
229
224
|
picardTol,
|
|
230
225
|
picardMaxIter,
|
|
231
226
|
});
|
|
232
227
|
stepSucceeded = true;
|
|
233
228
|
break;
|
|
234
229
|
}
|
|
235
|
-
catch {
|
|
230
|
+
catch (err) {
|
|
231
|
+
// Only a Picard failure is a reason to halve. A throw from the metric
|
|
232
|
+
// closures (a domain crossing the caller signals, or a bug) is that error.
|
|
233
|
+
if (!(err instanceof GL4ConvergenceError))
|
|
234
|
+
throw err;
|
|
236
235
|
subH /= 2;
|
|
237
236
|
halvings++;
|
|
238
237
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gl4-integrator.js","sourceRoot":"","sources":["../../src/numerical/gl4-integrator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gl4-integrator.js","sourceRoot":"","sources":["../../src/numerical/gl4-integrator.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Gauss-Legendre 4th-order (GL4) symplectic integrator — types + Butcher\n * tableau scaffold (v0.5.0 Task 1, Phase 1a-i).\n *\n * GL4 is a 2-stage implicit Runge-Kutta method built on the roots of the\n * shifted Legendre polynomial P₂, with order p = 4 and stage order s = 2.\n * It is symplectic for non-separable Hamiltonians — the property that\n * justifies its selection over Ruth-4 for the geodesic Hamiltonian\n *\n * H(x, p) = ½ g^{μν}(x) p_μ p_ν,\n *\n * which is non-separable because g^{μν} depends on x. (v0.5.0 Decision #2,\n * post-adversarial reconciliation; Sanz-Serna 1988; Hairer/Lubich/Wanner\n * \"Geometric Numerical Integration\" §II.1.)\n *\n * The state is canonical (x, p) (Decision #3) — covariant momentum\n * p_μ = g_μν dx^ν/dτ — not (x, v). This is what makes the flow symplectic\n * on T*M.\n *\n * This module holds the types, the Butcher constants, the one-step driver\n * (`gl4Step`, internal; the implicit Picard stages are MathTS\n * `gaussLegendre4`'s), and the integrator entry point `integrateGeodesicGL4`.\n *\n * @module numerical/gl4-integrator\n */\nimport { gaussLegendre4, GL4ConvergenceError as MathTsGL4ConvergenceError } from '@danielsimonjr/mathts-functions';\nimport { GL4ConvergenceError, NumericalBackendError } from './errors.js';\n\n/**\n * Gauss–Legendre order-4 Butcher tableau from MathTS. `GL4_A` is the 2×2\n * stage matrix, `GL4_B` the weights (both ½), and `GL4_C` the two nodes.\n * `integrateGeodesicGL4` does not read these names; the tableau tests do.\n *\n * @internal\n */\nexport { GL4_A, GL4_B, GL4_C } from '@danielsimonjr/mathts-functions';\n\n/**\n * Canonical (x, p) phase-space state for the geodesic flow on T*M.\n *\n * x^μ — coordinate 4-vector\n * p_μ — covariant momentum, p_μ = g_μν dx^ν/dτ\n *\n * Decision #3 (v0.5.0): the canonical state is (x, p), not (x, v). The\n * symplectic 2-form ω = dp_μ ∧ dx^μ is preserved by the GL4 flow only on\n * this representation.\n *\n * @public\n */\nexport interface GL4State {\n /** Coordinate 4-vector x^μ. */\n readonly x: readonly number[];\n /** Covariant momentum p_μ = g_μν v^ν. */\n readonly p: readonly number[];\n}\n\n/**\n * Per-step snapshot recorded by the integrator. `v` (the contravariant\n * 4-velocity v^μ = g^{μν} p_ν) is declared optional and is never emitted:\n * no option asks for it, and nothing in `src/` reads it. It stays so a caller's\n * own snapshot type can carry one.\n *\n * @public\n */\nexport interface GL4Snapshot {\n readonly tau: number;\n readonly x: readonly number[];\n readonly p: readonly number[];\n readonly v?: readonly number[];\n}\n\n/**\n * Options for `integrateGeodesicGL4`.\n *\n * @public\n */\nexport interface GL4Options {\n /** Number of integration steps (uniform-step baseline; may be subdivided\n * by adaptive step-halving). */\n readonly steps: number;\n /** Final proper time τ_max (initial τ = 0). */\n readonly tauMax: number;\n /** Inverse-metric closure (v0.9.0 O-1 flat layout):\n * `gInverseFn(x)[μ*dim + ν] = g^{μν}(x)`, row-major Float64Array(dim²). */\n readonly gInverseFn: (x: readonly number[]) => Float64Array;\n /**\n * Partial derivatives of the inverse metric.\n * Index order (v0.9.0 O-1 flat layout):\n * `dgInverseFn(x)[lambda*dim² + mu*dim + nu] = ∂_lambda g^{mu nu}` at coords x.\n * (I2: axis semantics pinned here to prevent silent transposition bugs.)\n */\n readonly dgInverseFn: (x: readonly number[]) => Float64Array;\n /** Picard fixed-point tolerance (default chosen in Task 2). */\n readonly picardTol?: number;\n /** Picard fixed-point iteration cap (default chosen in Task 2). */\n readonly picardMaxIter?: number;\n /** Adaptive step-halving floor (I4). If step-halving reaches h_min, throws with diagnostic. */\n readonly hMin?: number;\n /** Minimum radial coordinate (or domain analog) — abort integration if\n * the trajectory crosses inside this radius (e.g., the Schwarzschild\n * event horizon at r = r_s). */\n readonly domainMinRadius?: number;\n /**\n * v0.5.1 PD-4: opt-in per-step diagnostics callback. Fires once per\n * successful step with the Picard iteration count consumed and whether\n * adaptive step-halving had to subdivide (an \"exhaustion\" event from the\n * caller's perspective: the original h failed Picard and was halved).\n *\n * Used by the gated `GL4_LONG=1` Mercury 100-orbit Picard-convergence\n * test to measure the failure fraction across millions of steps without\n * polluting the integrator's return shape for normal callers.\n *\n * - `iterations`: Picard iteration count actually consumed at the\n * successful step size (always 1..picardMaxIter).\n * - `halvings`: number of step-halvings the step required before\n * succeeding (0 = first try; ≥1 means original h hit picardMaxIter).\n */\n readonly onStep?: (event: { step: number; iterations: number; halvings: number }) => void;\n}\n\n/**\n * Geodesic Hamiltonian derivative, packed as `y = [x..., p...]`.\n *\n * dx^μ = g^{μν} p_ν\n * dp_μ = −½ (∂_μ g^{νρ}) p_ν p_ρ\n *\n * `dg[μ*dim² + ν*dim + ρ] = ∂_μ g^{νρ}`. A coefficient that is exactly 0 is\n * skipped, so `0 * NaN` does not poison a component the term does not enter.\n * `xBuf` is a reused coordinate buffer of length `dim`; it is the array the\n * metric closures receive, so it is a plain `number[]` and needs no cast.\n */\nfunction geodesicDeriv(\n y: readonly number[],\n gInverseFn: (x: readonly number[]) => Float64Array,\n dgInverseFn: (x: readonly number[]) => Float64Array,\n xBuf: number[],\n): number[] {\n const dim = xBuf.length;\n for (let i = 0; i < dim; i++) xBuf[i] = y[i]!;\n const gInv = gInverseFn(xBuf);\n const dgInv = dgInverseFn(xBuf);\n const out = new Array<number>(dim * 2);\n for (let mu = 0; mu < dim; mu++) {\n let dx = 0;\n let dp = 0;\n const gRow = mu * dim;\n const dgBase = gRow * dim;\n for (let nu = 0; nu < dim; nu++) {\n const pNu = y[dim + nu]!;\n const g = gInv[gRow + nu]!;\n // Skip an exact zero so `0 * NaN` does not poison a component this term does not enter.\n if (g !== 0) dx += g * pNu;\n let pDot = 0;\n const offset = dgBase + nu * dim;\n for (let rho = 0; rho < dim; rho++) {\n const dg = dgInv[offset + rho]!;\n if (dg !== 0) pDot += dg * y[dim + rho]!;\n }\n if (pDot !== 0) dp += pDot * pNu;\n }\n out[mu] = dx;\n out[dim + mu] = dp === 0 ? 0 : -0.5 * dp;\n }\n return out;\n}\n\n/**\n * The state after one GL4 step, with the Picard iteration count that step\n * consumed. MathTS `gaussLegendre4` does not expose its two internal stage\n * values, so this is the advanced state and nothing else.\n * @internal\n */\nexport interface GL4StepResult {\n readonly x: readonly number[];\n readonly p: readonly number[];\n readonly iterations: number;\n}\n\n/**\n * One GL4 step of the geodesic Hamiltonian, via MathTS `gaussLegendre4`.\n * Throws `GL4ConvergenceError` with a message matching\n * `/Picard iteration did not converge/` when the Picard cap is exhausted;\n * any other error from the metric closures propagates unchanged.\n * @internal\n */\nexport function gl4Step(\n state: GL4State,\n h: number,\n gInverseFn: (x: readonly number[]) => Float64Array,\n dgInverseFn: (x: readonly number[]) => Float64Array,\n opts: { picardTol: number; picardMaxIter: number },\n): GL4StepResult {\n const dim = state.x.length;\n const y0 = new Array<number>(dim * 2);\n for (let i = 0; i < dim; i++) {\n y0[i] = state.x[i]!;\n y0[dim + i] = state.p[i]!;\n }\n const xBuf = new Array<number>(dim).fill(0);\n let solved: ReturnType<typeof gaussLegendre4>;\n try {\n solved = gaussLegendre4(\n (_t, y) => geodesicDeriv(y, gInverseFn, dgInverseFn, xBuf),\n y0,\n [0, h],\n { steps: 1, picardTol: opts.picardTol, picardMaxIter: opts.picardMaxIter },\n );\n } catch (err) {\n // MathTS throws its own typed GL4ConvergenceError for a Picard step that does not converge.\n if (err instanceof MathTsGL4ConvergenceError) throw new GL4ConvergenceError(err.message);\n throw err;\n }\n const y1 = solved.y[solved.y.length - 1];\n const iterations = solved.iterations[0];\n if (y1 === undefined || iterations === undefined) {\n throw new GL4ConvergenceError(\n `Picard iteration did not converge in ${opts.picardMaxIter} iterations (maxDelta above picardTol=${opts.picardTol})`,\n );\n }\n return { x: y1.slice(0, dim), p: y1.slice(dim), iterations };\n}\n\n// ---------------------------------------------------------------------------\n// Integrator entry-point (Task 3, Phase 1a-iii)\n// ---------------------------------------------------------------------------\n\n/**\n * GL4 symplectic integrator on the canonical (x, p) geodesic Hamiltonian.\n *\n * H(x, p) = ½ g^{μν}(x) p_μ p_ν\n *\n * Each accepted step is MathTS `gaussLegendre4` on the geodesic Hamiltonian.\n * Adaptive step-halving stays here. `onStep` reads that step's `iterations`.\n * with **adaptive step-halving on Picard non-convergence** (Adam+Eve I4,\n * replaces the single-retry R8): if Picard fails at step size h, retry at\n * h/2, h/4, … down to `hMin` (default `h · 1e-9`); throw\n * `GL4ConvergenceError` with a diagnostic message only when h_min is also\n * exhausted.\n *\n * Symplecticity (preservation of ω = dp_μ ∧ dx^μ) is a property of the\n * Butcher tableau, not of the inner Picard solver — see Sanz-Serna 1988,\n * Hairer/Lubich/Wanner §II.1. Hamiltonian drift over long integrations is\n * bounded; for non-resonant systems it remains O(h^p) over exponentially\n * long times (`p = 4` for GL4).\n *\n * **Domain guard.** If `domainMinRadius` is provided and `initialState.x[1]`\n * (radial coordinate) is below the bound, throws `NumericalBackendError`\n * synchronously with a `/domain/i`-matching message. The mid-trajectory\n * domain crossing is not checked here — callers needing that supply a\n * `gInverseFn` that throws on out-of-domain input.\n *\n * **Units.** The integrator is metric-agnostic — units follow the units of\n * the supplied `gInverseFn` and `initialState`. For UPT's canonical SI\n * Schwarzschild applications (the covariant-eikonal method used by\n * catalog relation be-37, and the perihelion method used by catalog\n * relation be-52):\n * - `initialState.x` — `(t, r, θ, φ)` in **(s, m, rad, rad)** (SI).\n * - `initialState.p` — covariant 4-momentum `p_μ = g_μν v^ν` in\n * **(J·s, kg·m, kg·m², kg·m²)** under the affine normalization\n * `p_t = −c²` used by `evaluateCovariantEikonalNumerical`.\n * - `tauMax` — affine-parameter (proper-time for timelike, coordinate-\n * time-like for the null normalization) extent in **seconds** under\n * the covariant-eikonal method's convention (catalog relation be-37);\n * **dimensionless** if the caller chose\n * geometric units. The integrator does not enforce a choice.\n * - `domainMinRadius` — radial coordinate lower bound in the same length\n * units as `initialState.x[1]` (typically **metres** for SI).\n *\n * @param initialState — canonical (x, p) at τ = 0. Units follow the\n * `gInverseFn` convention (see above).\n * @param options — see {@link GL4Options}:\n * - `steps` — positive integer step count (dimensionless).\n * - `tauMax` — positive finite affine-parameter extent (seconds in\n * canonical SI). The integrator runs forward from τ = 0 only.\n * - `gInverseFn(x)[μ*dim + ν]` — inverse metric g^{μν}(x), row-major flat.\n * - `dgInverseFn(x)[λ*dim² + μ*dim + ν]` — ∂_λ g^{μν}(x), flat.\n * - `picardTol` — convergence tolerance (dimensionless, default 1e-12).\n * - `picardMaxIter` — fixed-point iteration cap (dimensionless, default 50).\n * - `hMin` — step-halving floor (same units as `tauMax / steps`).\n * - `domainMinRadius` — radial cutoff (same units as `initialState.x[1]`).\n * @returns `steps + 1` snapshots: index `0` is the initial state, index `n`\n * is the state after `n` steps (τ = n · h). Each snapshot carries `tau`,\n * `x`, `p` (and optional `v` = g^{μν} p_ν) in the units chosen above.\n * @throws NumericalBackendError if `steps` is not a positive integer, if\n * `tauMax` is not a positive finite number, or if\n * `initialState.x[1] < domainMinRadius`. The two option checks run before\n * any metric evaluation.\n * @throws GL4ConvergenceError if Picard fails even after step-halving to h_min.\n * Any other error thrown by `gInverseFn` or `dgInverseFn` (a domain\n * crossing the caller signals by throwing, or a programming error) is\n * rethrown unchanged; it is not halved away.\n *\n * @public\n */\nexport function integrateGeodesicGL4(\n initialState: GL4State,\n options: GL4Options,\n): readonly GL4Snapshot[] {\n const {\n steps,\n tauMax,\n gInverseFn,\n dgInverseFn,\n picardTol = 1e-12,\n picardMaxIter = 50,\n hMin,\n domainMinRadius,\n onStep,\n } = options;\n\n if (!Number.isInteger(steps) || steps <= 0) {\n throw new NumericalBackendError(`GL4 integrator: steps must be a positive integer, got ${steps}`);\n }\n if (!Number.isFinite(tauMax) || tauMax <= 0) {\n throw new NumericalBackendError(`GL4 integrator: tauMax must be a positive finite number, got ${tauMax}`);\n }\n if (domainMinRadius !== undefined && initialState.x[1] < domainMinRadius) {\n throw new NumericalBackendError(\n `GL4 integrator: initial r=${initialState.x[1]} < domainMinRadius=${domainMinRadius} (domain violation)`,\n );\n }\n\n const h = tauMax / steps;\n const hFloor = hMin ?? h * 1e-9;\n const snapshots: GL4Snapshot[] = [{ tau: 0, x: initialState.x.slice(), p: initialState.p.slice() }];\n let x = initialState.x.slice();\n let p = initialState.p.slice();\n\n const stateDim = x.length;\n let newX = new Array<number>(stateDim);\n let newP = new Array<number>(stateDim);\n\n for (let n = 0; n < steps; n++) {\n // I4: adaptive step-halving loop (not single-retry) on Picard\n // non-convergence. When the full step fails, we advance by the SMALLER\n // converging step and sub-step until the macro-step `h` is covered — the\n // stages are solved at `stepH`, so the state/τ update MUST use `stepH`\n // too (advancing by full `h` after a halved solve destroys accuracy and\n // symplecticity). τ is reported on the fixed `(n+1)·h` grid; only the\n // residual-to-cover accumulator tracks intra-step progress.\n let remaining = h;\n let stepH = h;\n let halvings = 0;\n let lastIterations = 0;\n // Guard against FP residue: treat anything below a tiny fraction of h as done.\n const remainEps = h * 1e-12;\n while (remaining > remainEps) {\n const trialH = Math.min(stepH, remaining);\n let advanced: GL4StepResult | undefined;\n let stepSucceeded = false;\n let subH = trialH;\n while (subH >= hFloor) {\n try {\n advanced = gl4Step({ x, p }, subH, gInverseFn, dgInverseFn, {\n picardTol,\n picardMaxIter,\n });\n stepSucceeded = true;\n break;\n } catch (err) {\n // Only a Picard failure is a reason to halve. A throw from the metric\n // closures (a domain crossing the caller signals, or a bug) is that error.\n if (!(err instanceof GL4ConvergenceError)) throw err;\n subH /= 2;\n halvings++;\n }\n }\n if (!stepSucceeded || advanced === undefined) {\n throw new GL4ConvergenceError(\n `GL4 integrator: Picard iteration did not converge even at h_min=${hFloor} (step ${n}). Diagnose step-size or metric singularity.`,\n );\n }\n if (stateDim === 4) {\n newX[0] = advanced.x[0]!; newP[0] = advanced.p[0]!;\n newX[1] = advanced.x[1]!; newP[1] = advanced.p[1]!;\n newX[2] = advanced.x[2]!; newP[2] = advanced.p[2]!;\n newX[3] = advanced.x[3]!; newP[3] = advanced.p[3]!;\n } else {\n for (let mu = 0; mu < stateDim; mu++) {\n newX[mu] = advanced.x[mu]!;\n newP[mu] = advanced.p[mu]!;\n }\n }\n\n const tmpX = x;\n x = newX;\n newX = tmpX;\n\n const tmpP = p;\n p = newP;\n newP = tmpP;\n\n remaining -= subH;\n stepH = subH; // keep the converging size for the rest of this macro-step\n lastIterations = advanced.iterations;\n }\n snapshots.push({ tau: (n + 1) * h, x: x.slice(), p: p.slice() });\n if (onStep !== undefined) {\n onStep({ step: n, iterations: lastIterations, halvings });\n }\n }\n\n return snapshots;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid-field.js","sourceRoot":"","sources":["../../src/numerical/grid-field.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"grid-field.js","sourceRoot":"","sources":["../../src/numerical/grid-field.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * GridField — a sampled field on a regular grid, for the 'grid' numericalForm\n * finite-difference path. See v0.3.5-Design.md §5.\n *\n * The interface now lives in the leaf `./types.js` module (it only depends on\n * `NestedArray`), which removes the former `types ↔ grid-field` type cycle. This\n * module re-exports it so the established `numerical/grid-field` import path —\n * used by `pderiv.ts`, `numerical/index.ts`, and the public `src/index.ts` — keeps\n * working unchanged.\n *\n * @module numerical/grid-field\n */\nexport type { GridField } from './types.js';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/numerical/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAGvD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAI/E,cAAc;AACd,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAK/E,cAAc;AACd,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACxE,cAAc;AACd,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD;;0EAE0E;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE;;;;GAIG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,mEAAmE;AACnE,OAAO,EACL,iCAAiC,GAClC,MAAM,wBAAwB,CAAC;AAOhC,kDAAkD;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAI3D,6DAA6D;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAoCxD,wEAAwE;AACxE,KAAK,UAAU,OAAO,CAAC,IAAc,EAAE,OAAyB;IAC9D,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACX,MAAM,IAAI,qBAAqB,CAC7B,0DAA0D;cACxD,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,iBAAiB;cACxC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACnE,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,MAAM,eAAe,EAAE,CAAC;IAC1D,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;IACvE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,iBAA8B,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC;AACnG,CAAC;AAED;;mDAEmD;AACnD,KAAK,UAAU,4BAA4B,CACzC,IAAc,EACd,MAAuB,EACvB,MAAoB;IAEpB,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,qBAAqB,CAC7C,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CACxD,CAAC;IACF,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAc,EACd,MAAuB,EACvB,OAAyB;IAEzB,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,qBAAqB,GAAG,MAAM,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvF,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC9B,GAAG;QACH,WAAW;QACX,QAAQ,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,qBAAqB,CAAC;KAClD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAc,EACd,MAAuB,EACvB,OAAyB;IAEzB,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,qBAAqB,GAAG,MAAM,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvF,OAAO;QACL,KAAK,EAAE,MAAM;QACb,GAAG;QACH,WAAW;QACX,QAAQ,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,qBAAqB,CAAC;QACjD,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAC7C,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/numerical/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Public surface of the UPT numerical-contraction backend (v0.3.5).\n * See docs/planning/v0.3.5-Design.md §5.\n *\n * @module numerical\n */\nimport type { Dimension } from '../dimensional/types.js';\nimport type { ExprNode, Violation } from '../dimensional/validator.js';\nimport { validate } from '../dimensional/validator.js';\nimport type { EngineTensor, TensorEngine } from './tensor-engine.js';\nimport type { NumericalInputs, NestedArray } from './types.js';\nimport { lowerNode } from './lowering.js';\nimport { getActiveEngine } from './engine-registry.js';\nimport { NumericalBackendError } from './errors.js';\nimport { evaluateMetricInverse, scanForMetricPair } from './metric-inverse.js';\n\n/** @public */\nexport type { TensorEngine, EngineTensor, EinsumSpec, ForwardGradResult, ReverseGradResult } from './tensor-engine.js';\n/** @public */\nexport { hasAutogradSupport, EngineCapabilityError } from './tensor-engine.js';\n/** @public */\nexport type { NumericalInputs, NestedArray } from './types.js';\n/** @public — part of the `NumericalInputs.grids` public contract. */\nexport type { GridField } from './grid-field.js';\n/** @public */\nexport { getActiveEngine, setActiveEngine } from './engine-registry.js';\n/** @public */\nexport { NumericalBackendError } from './errors.js';\n/** @public — re-exported from dimensional/errors to keep numerical/index.ts\n * as the single public API surface, without creating a dimensional→numerical\n * import cycle. See v0.4.0-Implementation-Plan Task 13 for rationale. */\nexport { DuplicateCoordinateWarning } from '../dimensional/errors.js';\n/**\n * Evaluate a metric inverse from a detected pair.\n *\n * @public\n */\nexport { evaluateMetricInverse } from './metric-inverse.js';\n/** Integrate the covariant eikonal on a numerical grid. @public */\nexport {\n evaluateCovariantEikonalNumerical,\n} from './covariant-eikonal.js';\n/** Inputs and the result of the covariant eikonal integrator. */\nexport type {\n CovariantEikonalInputs,\n CovariantEikonalResult,\n} from './covariant-eikonal.js';\n\n/** @public — v0.5.0 GL4 symplectic integrator. */\nexport { integrateGeodesicGL4 } from './gl4-integrator.js';\n/** @public — v0.5.0 GL4 types. */\nexport type { GL4State, GL4Snapshot, GL4Options } from './gl4-integrator.js';\n\n/** @public — v0.5.0 perihelion finder (Task 4, Phase 1b). */\nexport { findPerihelion } from './perihelion-finder.js';\n/** @public — v0.5.0 perihelion-finder types. */\nexport type { PerihelionResult, FindPerihelionOptions } from './perihelion-finder.js';\n\n/**\n * Plain-JS result of `evaluateNumerical`.\n * @public\n */\nexport interface NumericalResult {\n readonly value: NestedArray;\n readonly dim: Dimension;\n readonly freeIndices: ReadonlyMap<string, { upper: number; lower: number }>;\n readonly warnings: ReadonlyArray<Violation>;\n}\n\n/**\n * Result of `evaluateNumericalRaw` — carries a live `EngineTensor` for\n * chaining workloads; the caller must `dispose()` it.\n * @public\n */\nexport interface NumericalRawResult {\n readonly value: EngineTensor;\n readonly dim: Dimension;\n readonly freeIndices: ReadonlyMap<string, { upper: number; lower: number }>;\n readonly warnings: ReadonlyArray<Violation>;\n dispose(): void;\n}\n\n/**\n * Per-call options for the `evaluateNumerical*` entry points.\n * @public\n */\nexport interface EvaluateOptions {\n readonly engine?: TensorEngine;\n}\n\n/** Validate the AST and return (engine, validation result) or throw. */\nasync function prepare(node: ExprNode, options?: EvaluateOptions) {\n const vr = validate(node);\n if (!vr.ok) {\n throw new NumericalBackendError(\n `evaluateNumerical: the AST is not dimensionally valid — `\n + `${vr.violations.length} violation(s): `\n + vr.violations.map((v) => `[${v.location}] ${v.note}`).join('; '),\n );\n }\n const engine = options?.engine ?? await getActiveEngine();\n const warnings = vr.violations.filter((v) => v.severity === 'warning');\n return { engine, dim: vr.inferredDimension as Dimension, freeIndices: vr.freeIndices, warnings };\n}\n\n/** If the AST contains an identifiable lower/upper metric pair, run the\n * numerical inverse-metric check and return any warning (deduplicated —\n * scanForMetricPair returns at most one pair). */\nasync function collectInverseMetricWarnings(\n node: ExprNode,\n inputs: NumericalInputs,\n engine: TensorEngine,\n): Promise<Violation[]> {\n const pair = scanForMetricPair(node);\n if (!pair) return [];\n const { warning } = await evaluateMetricInverse(\n pair.gUpper, pair.gLower, inputs, undefined, { engine },\n );\n return warning ? [warning] : [];\n}\n\n/**\n * Evaluate a validated AST to plain JS.\n * @public\n */\nexport async function evaluateNumerical(\n node: ExprNode,\n inputs: NumericalInputs,\n options?: EvaluateOptions,\n): Promise<NumericalResult> {\n const { engine, dim, freeIndices, warnings } = await prepare(node, options);\n const tensor = lowerNode(node, inputs, engine);\n const inverseMetricWarnings = await collectInverseMetricWarnings(node, inputs, engine);\n return {\n value: engine.toNested(tensor),\n dim,\n freeIndices,\n warnings: [...warnings, ...inverseMetricWarnings],\n };\n}\n\n/**\n * Evaluate to a live EngineTensor for chaining workloads.\n * @public\n */\nexport async function evaluateNumericalRaw(\n node: ExprNode,\n inputs: NumericalInputs,\n options?: EvaluateOptions,\n): Promise<NumericalRawResult> {\n const { engine, dim, freeIndices, warnings } = await prepare(node, options);\n const tensor = lowerNode(node, inputs, engine);\n const inverseMetricWarnings = await collectInverseMetricWarnings(node, inputs, engine);\n return {\n value: tensor,\n dim,\n freeIndices,\n warnings: [...warnings, ...inverseMetricWarnings],\n dispose: () => { engine.dispose?.(tensor); },\n };\n}\n"]}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Runtime input validation for numeric evaluators — `validateFiniteInputs`.
|
|
3
3
|
*
|
|
4
|
-
* A generic, dependency-free finite-and-in-range check
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* which forced the lower numerical layer to import upward from `bridges`; moving
|
|
8
|
-
* it here (a leaf module with no imports) removes that dependency while
|
|
9
|
-
* `_be-helpers.ts` re-exports it so every bridge evaluator is unchanged.
|
|
4
|
+
* A generic, dependency-free finite-and-in-range check for a numeric
|
|
5
|
+
* evaluator's input record (`klein-gordon.ts` reads it). It is a leaf module
|
|
6
|
+
* with no imports, so any layer may read it without an upward edge.
|
|
10
7
|
*
|
|
11
8
|
* @module numerical/input-validation
|
|
12
9
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-validation.d.ts","sourceRoot":"","sources":["../../src/numerical/input-validation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"input-validation.d.ts","sourceRoot":"","sources":["../../src/numerical/input-validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,WAAW,SAAS;IACxB,yDAAyD;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,wEAAwE;IACxE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAgCD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EACnD,KAAK,EAAE,CAAC,EACR,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,EACpC,aAAa,EAAE,MAAM,GACpB,IAAI,CA+BN"}
|