universal-physics-tensor 9.0.0 → 11.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 +21 -17
- package/bin/upt.mjs +13 -1
- package/data/atlas/atlas.json +79 -68
- package/data/atlas/atlas.jsonld +1 -1
- package/data/atlas/diffusion.json +24 -23
- package/data/atlas/oscillators.json +21 -16
- package/data/atlas/waves.json +36 -31
- package/data/atlas/witness-results.json +11 -11
- package/data/bridge-catalog.json +1192 -1636
- package/data/bridge-catalog.schema.json +390 -135
- 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 +35 -18
- 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 +12 -3
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.js +30 -21
- 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 +2 -2
- 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 +3 -3
- package/dist/atlas/benchmark/stats.d.ts.map +1 -1
- package/dist/atlas/benchmark/stats.js +16 -8
- 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.d.ts +26 -3
- package/dist/atlas/catalog-formal-ref.d.ts.map +1 -1
- package/dist/atlas/catalog-formal-ref.js +52 -5
- 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 +12 -24
- 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 +0 -4
- package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/diffusion/bridges-closure.js +8 -17
- 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 +27 -42
- package/dist/atlas/diffusion/bridges.js.map +1 -1
- package/dist/atlas/diffusion/dimensions.d.ts +6 -14
- package/dist/atlas/diffusion/dimensions.d.ts.map +1 -1
- package/dist/atlas/diffusion/dimensions.js +8 -16
- 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.d.ts +3 -3
- package/dist/atlas/diffusion/models.d.ts.map +1 -1
- package/dist/atlas/diffusion/models.js +5 -10
- package/dist/atlas/diffusion/models.js.map +1 -1
- package/dist/atlas/diffusion/numerics.d.ts +16 -4
- package/dist/atlas/diffusion/numerics.d.ts.map +1 -1
- package/dist/atlas/diffusion/numerics.js +38 -24
- 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 +107 -4
- package/dist/atlas/link-prediction.d.ts.map +1 -1
- package/dist/atlas/link-prediction.js +212 -66
- 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 +7 -12
- 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 +6 -10
- package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.d.ts +3 -16
- package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.js +23 -36
- package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
- package/dist/atlas/oscillators/dimensions.d.ts +9 -21
- package/dist/atlas/oscillators/dimensions.d.ts.map +1 -1
- package/dist/atlas/oscillators/dimensions.js +9 -21
- 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.d.ts +2 -2
- package/dist/atlas/oscillators/limit-witnesses.d.ts.map +1 -1
- package/dist/atlas/oscillators/limit-witnesses.js +17 -15
- package/dist/atlas/oscillators/limit-witnesses.js.map +1 -1
- package/dist/atlas/oscillators/models.d.ts.map +1 -1
- package/dist/atlas/oscillators/models.js +2 -6
- 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.d.ts +29 -6
- package/dist/atlas/oscillators/pendulum-motion.d.ts.map +1 -1
- package/dist/atlas/oscillators/pendulum-motion.js +60 -40
- 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.d.ts +0 -11
- package/dist/atlas/oscillators/phase-translation.d.ts.map +1 -1
- package/dist/atlas/oscillators/phase-translation.js +3 -4
- package/dist/atlas/oscillators/phase-translation.js.map +1 -1
- package/dist/atlas/oscillators/position-translation.d.ts +68 -7
- package/dist/atlas/oscillators/position-translation.d.ts.map +1 -1
- package/dist/atlas/oscillators/position-translation.js +123 -12
- package/dist/atlas/oscillators/position-translation.js.map +1 -1
- package/dist/atlas/oscillators/rejections.d.ts +0 -2
- package/dist/atlas/oscillators/rejections.d.ts.map +1 -1
- package/dist/atlas/oscillators/rejections.js +0 -7
- package/dist/atlas/oscillators/rejections.js.map +1 -1
- package/dist/atlas/path-bound.js.map +1 -1
- package/dist/atlas/physjs-entries.generated.d.ts +25 -24
- package/dist/atlas/physjs-entries.generated.d.ts.map +1 -1
- package/dist/atlas/physjs-entries.generated.js +25 -24
- package/dist/atlas/physjs-entries.generated.js.map +1 -1
- package/dist/atlas/physjs-ref.d.ts +107 -70
- package/dist/atlas/physjs-ref.d.ts.map +1 -1
- package/dist/atlas/physjs-ref.js +184 -101
- 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.d.ts +0 -19
- package/dist/atlas/poster/statements.d.ts.map +1 -1
- package/dist/atlas/poster/statements.js +1 -1
- package/dist/atlas/poster/statements.js.map +1 -1
- package/dist/atlas/proof-target.d.ts +1 -1
- package/dist/atlas/proof-target.js +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.d.ts +1 -1
- package/dist/atlas/regime.d.ts.map +1 -1
- package/dist/atlas/regime.js +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/text-overlap.d.ts +23 -0
- package/dist/atlas/text-overlap.d.ts.map +1 -0
- package/dist/atlas/text-overlap.js +41 -0
- package/dist/atlas/text-overlap.js.map +1 -0
- 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 +2 -9
- 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 +32 -52
- 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.d.ts +5 -6
- package/dist/atlas/waves/models.d.ts.map +1 -1
- package/dist/atlas/waves/models.js +7 -13
- package/dist/atlas/waves/models.js.map +1 -1
- package/dist/atlas/waves/numerics.d.ts.map +1 -1
- package/dist/atlas/waves/numerics.js +10 -3
- 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 +38 -4
- package/dist/atlas/witness-numeric.d.ts.map +1 -1
- package/dist/atlas/witness-numeric.js +80 -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.d.ts.map +1 -1
- package/dist/atlas/witness-specs.js +19 -0
- package/dist/atlas/witness-specs.js.map +1 -1
- package/dist/atlas/witness-symbolic.d.ts +75 -3
- package/dist/atlas/witness-symbolic.d.ts.map +1 -1
- package/dist/atlas/witness-symbolic.js +116 -10
- 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 +181 -13
- package/dist/bridges/catalog-load.js.map +1 -1
- package/dist/bridges/catalog-types.d.ts +74 -26
- package/dist/bridges/catalog-types.d.ts.map +1 -1
- package/dist/bridges/catalog-types.js +11 -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 +46 -3
- package/dist/bridges/evaluation-errors.d.ts.map +1 -1
- package/dist/bridges/evaluation-errors.js +40 -4
- package/dist/bridges/evaluation-errors.js.map +1 -1
- package/dist/bridges/evaluator-inputs.d.ts.map +1 -1
- package/dist/bridges/evaluator-inputs.js +7 -5
- 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 +76 -28
- package/dist/bridges/evaluators.js.map +1 -1
- package/dist/bridges/expr-parse.d.ts +38 -4
- package/dist/bridges/expr-parse.d.ts.map +1 -1
- package/dist/bridges/expr-parse.js +101 -12
- package/dist/bridges/expr-parse.js.map +1 -1
- package/dist/bridges/holds.d.ts +40 -4
- package/dist/bridges/holds.d.ts.map +1 -1
- package/dist/bridges/holds.js +128 -19
- 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.d.ts.map +1 -1
- package/dist/bridges/notices.js +5 -5
- 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 +6 -7
- package/dist/bridges/relation-eval.d.ts.map +1 -1
- package/dist/bridges/relation-eval.js +20 -50
- 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 +27 -13
- 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/bridges/validity.d.ts +33 -0
- package/dist/bridges/validity.d.ts.map +1 -0
- package/dist/bridges/validity.js +67 -0
- package/dist/bridges/validity.js.map +1 -0
- 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 +1 -3
- package/dist/canonical/entries/atomic.js.map +1 -1
- package/dist/canonical/entries/condensed-matter.d.ts.map +1 -1
- package/dist/canonical/entries/condensed-matter.js +8 -9
- package/dist/canonical/entries/condensed-matter.js.map +1 -1
- package/dist/canonical/entries/dimensional-classics.d.ts.map +1 -1
- package/dist/canonical/entries/dimensional-classics.js +5 -6
- package/dist/canonical/entries/dimensional-classics.js.map +1 -1
- package/dist/canonical/entries/electromagnetism.d.ts.map +1 -1
- package/dist/canonical/entries/electromagnetism.js +6 -12
- package/dist/canonical/entries/electromagnetism.js.map +1 -1
- package/dist/canonical/entries/fluids-waves.d.ts.map +1 -1
- package/dist/canonical/entries/fluids-waves.js +3 -7
- package/dist/canonical/entries/fluids-waves.js.map +1 -1
- package/dist/canonical/entries/mechanics.d.ts.map +1 -1
- package/dist/canonical/entries/mechanics.js +4 -6
- 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 +38 -39
- package/dist/canonical/entries/nonmonomial.js.map +1 -1
- package/dist/canonical/entries/relativity.d.ts.map +1 -1
- package/dist/canonical/entries/relativity.js +6 -6
- 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.d.ts.map +1 -1
- package/dist/canonical/entries/thermo-nuclear-cosmo.js +6 -10
- package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
- package/dist/canonical/fixed-points.d.ts +94 -0
- package/dist/canonical/fixed-points.d.ts.map +1 -0
- package/dist/canonical/fixed-points.js +81 -0
- package/dist/canonical/fixed-points.js.map +1 -0
- package/dist/canonical/linkage.d.ts +29 -4
- package/dist/canonical/linkage.d.ts.map +1 -1
- package/dist/canonical/linkage.js +47 -64
- 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 +22 -23
- 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 +42 -21
- package/dist/canonical/structural.d.ts.map +1 -1
- package/dist/canonical/structural.js +64 -23
- package/dist/canonical/structural.js.map +1 -1
- package/dist/cases/brownian-sphere.d.ts +3 -3
- package/dist/cases/brownian-sphere.d.ts.map +1 -1
- package/dist/cases/brownian-sphere.js +10 -9
- package/dist/cases/brownian-sphere.js.map +1 -1
- package/dist/cases/damped-resonator.d.ts.map +1 -1
- package/dist/cases/damped-resonator.js +8 -11
- package/dist/cases/damped-resonator.js.map +1 -1
- package/dist/cases/index.js.map +1 -1
- package/dist/cases/kepler-rv.d.ts +1 -1
- package/dist/cases/kepler-rv.d.ts.map +1 -1
- package/dist/cases/kepler-rv.js +3 -2
- package/dist/cases/kepler-rv.js.map +1 -1
- package/dist/cases/lumped-cooling.d.ts +8 -3
- package/dist/cases/lumped-cooling.d.ts.map +1 -1
- package/dist/cases/lumped-cooling.js +22 -24
- package/dist/cases/lumped-cooling.js.map +1 -1
- package/dist/cases/quadrature.d.ts +7 -9
- package/dist/cases/quadrature.d.ts.map +1 -1
- package/dist/cases/quadrature.js +28 -32
- package/dist/cases/quadrature.js.map +1 -1
- package/dist/cases/resistor-noise.js +7 -7
- package/dist/cases/resistor-noise.js.map +1 -1
- package/dist/cases/skin-depth.d.ts +0 -4
- package/dist/cases/skin-depth.d.ts.map +1 -1
- package/dist/cases/skin-depth.js +3 -7
- package/dist/cases/skin-depth.js.map +1 -1
- package/dist/cases/types.js.map +1 -1
- package/dist/cli/args.d.ts +30 -3
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +47 -9
- 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 +33 -0
- package/dist/cli/bindings.js.map +1 -0
- package/dist/cli/closed-form-range.js.map +1 -1
- package/dist/cli/command.d.ts +8 -1
- package/dist/cli/command.d.ts.map +1 -1
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/commands/_atlas-map.d.ts +2 -11
- package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
- package/dist/cli/commands/_atlas-map.js +50 -35
- package/dist/cli/commands/_atlas-map.js.map +1 -1
- package/dist/cli/commands/_atlas-route.d.ts.map +1 -1
- package/dist/cli/commands/_atlas-route.js +6 -2
- 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 +48 -14
- 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 +9 -8
- 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 +20 -20
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/axes.d.ts.map +1 -1
- package/dist/cli/commands/axes.js +20 -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 -20
- 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 +60 -35
- 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 +20 -10
- 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 +14 -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 +108 -58
- 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 +16 -8
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/frontier.js.map +1 -1
- package/dist/cli/commands/ground.d.ts.map +1 -1
- package/dist/cli/commands/ground.js +41 -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 +155 -92
- package/dist/cli/commands/map.js.map +1 -1
- package/dist/cli/commands/metric.d.ts.map +1 -1
- package/dist/cli/commands/metric.js +58 -20
- package/dist/cli/commands/metric.js.map +1 -1
- package/dist/cli/commands/path.d.ts +10 -0
- package/dist/cli/commands/path.d.ts.map +1 -1
- package/dist/cli/commands/path.js +29 -7
- 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 +105 -38
- package/dist/cli/commands/probe.js.map +1 -1
- package/dist/cli/commands/recover.js +1 -1
- package/dist/cli/commands/recover.js.map +1 -1
- package/dist/cli/commands/regime.d.ts +5 -4
- package/dist/cli/commands/regime.d.ts.map +1 -1
- package/dist/cli/commands/regime.js +25 -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 +23 -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 +9 -4
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/symbolic.js +31 -36
- package/dist/cli/commands/symbolic.js.map +1 -1
- package/dist/cli/commands/testplan.d.ts.map +1 -1
- package/dist/cli/commands/testplan.js +5 -3
- 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 +28 -3
- package/dist/cli/expr-print.d.ts.map +1 -1
- package/dist/cli/expr-print.js +42 -22
- 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.d.ts +7 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +25 -6
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/map-evidence.js.map +1 -1
- package/dist/cli/numeric-flag.d.ts +12 -0
- package/dist/cli/numeric-flag.d.ts.map +1 -0
- package/dist/cli/numeric-flag.js +44 -0
- package/dist/cli/numeric-flag.js.map +1 -0
- package/dist/cli/output.d.ts +23 -6
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +15 -0
- 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 +17 -11
- package/dist/cli/record-reach.js.map +1 -1
- package/dist/cli/record-tables.d.ts.map +1 -1
- package/dist/cli/record-tables.js +7 -6
- package/dist/cli/record-tables.js.map +1 -1
- package/dist/cli/record.d.ts +1 -5
- package/dist/cli/record.d.ts.map +1 -1
- package/dist/cli/record.js +40 -20
- 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 +19 -7
- package/dist/cli/search-index.js.map +1 -1
- package/dist/cli/statuses.d.ts +0 -2
- package/dist/cli/statuses.d.ts.map +1 -1
- package/dist/cli/statuses.js +0 -7
- package/dist/cli/statuses.js.map +1 -1
- package/dist/cli/stored-results.d.ts +7 -0
- package/dist/cli/stored-results.d.ts.map +1 -0
- package/dist/cli/stored-results.js +23 -0
- package/dist/cli/stored-results.js.map +1 -0
- package/dist/cli/top-level-help.js.map +1 -1
- package/dist/cli/version.d.ts.map +1 -1
- package/dist/cli/version.js +7 -5
- package/dist/cli/version.js.map +1 -1
- package/dist/cli-api.d.ts +49 -14
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +42 -17
- package/dist/cli-api.js.map +1 -1
- package/dist/composition/adjudication.js.map +1 -1
- package/dist/composition/algebraic-equivalence.d.ts +43 -0
- package/dist/composition/algebraic-equivalence.d.ts.map +1 -0
- package/dist/composition/algebraic-equivalence.js +115 -0
- package/dist/composition/algebraic-equivalence.js.map +1 -0
- 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 +6 -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.d.ts +47 -20
- package/dist/composition/axis-audit.d.ts.map +1 -1
- package/dist/composition/axis-audit.js +82 -9
- package/dist/composition/axis-audit.js.map +1 -1
- package/dist/composition/bridge-analysis.d.ts +14 -15
- package/dist/composition/bridge-analysis.d.ts.map +1 -1
- package/dist/composition/bridge-analysis.js +148 -91
- 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 +40 -0
- package/dist/composition/canonical-compare.d.ts.map +1 -1
- package/dist/composition/canonical-compare.js +134 -26
- package/dist/composition/canonical-compare.js.map +1 -1
- package/dist/composition/canonical-graph.d.ts +9 -10
- package/dist/composition/canonical-graph.d.ts.map +1 -1
- package/dist/composition/canonical-graph.js +33 -102
- package/dist/composition/canonical-graph.js.map +1 -1
- package/dist/composition/canonical-json.js +2 -2
- 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 +8 -25
- package/dist/composition/catalog-graph.js.map +1 -1
- package/dist/composition/chain-candidate.d.ts +10 -0
- package/dist/composition/chain-candidate.d.ts.map +1 -1
- package/dist/composition/chain-candidate.js +11 -2
- package/dist/composition/chain-candidate.js.map +1 -1
- package/dist/composition/chain-match.d.ts +6 -3
- package/dist/composition/chain-match.d.ts.map +1 -1
- package/dist/composition/chain-match.js +4 -1
- package/dist/composition/chain-match.js.map +1 -1
- package/dist/composition/chain-regime.js.map +1 -1
- package/dist/composition/chain-result.d.ts.map +1 -1
- package/dist/composition/chain-result.js +2 -14
- package/dist/composition/chain-result.js.map +1 -1
- package/dist/composition/compose-surface.js.map +1 -1
- package/dist/composition/compose-symbolic.d.ts.map +1 -1
- package/dist/composition/compose-symbolic.js +3 -2
- package/dist/composition/compose-symbolic.js.map +1 -1
- package/dist/composition/compose.d.ts.map +1 -1
- package/dist/composition/compose.js +166 -41
- package/dist/composition/compose.js.map +1 -1
- package/dist/composition/composition-recovery.d.ts.map +1 -1
- package/dist/composition/composition-recovery.js +4 -7
- 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 +77 -11
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +194 -80
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/edge.d.ts +40 -10
- package/dist/composition/edge.d.ts.map +1 -1
- package/dist/composition/edge.js +47 -12
- 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 +18 -3
- package/dist/composition/enumerate.js.map +1 -1
- package/dist/composition/evaluate-relation.d.ts +35 -11
- package/dist/composition/evaluate-relation.d.ts.map +1 -1
- package/dist/composition/evaluate-relation.js +60 -39
- package/dist/composition/evaluate-relation.js.map +1 -1
- package/dist/composition/explain.d.ts +5 -9
- package/dist/composition/explain.d.ts.map +1 -1
- package/dist/composition/explain.js +38 -18
- package/dist/composition/explain.js.map +1 -1
- package/dist/composition/expr-eval.d.ts.map +1 -1
- package/dist/composition/expr-eval.js +2 -11
- package/dist/composition/expr-eval.js.map +1 -1
- package/dist/composition/expr-simplify.d.ts +16 -0
- package/dist/composition/expr-simplify.d.ts.map +1 -1
- package/dist/composition/expr-simplify.js +24 -59
- 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 +28 -0
- package/dist/composition/formula-shape.d.ts.map +1 -1
- package/dist/composition/formula-shape.js +96 -2
- 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-structure.d.ts +98 -0
- package/dist/composition/graph-structure.d.ts.map +1 -0
- package/dist/composition/graph-structure.js +167 -0
- package/dist/composition/graph-structure.js.map +1 -0
- package/dist/composition/graph-viz-svg.d.ts.map +1 -1
- package/dist/composition/graph-viz-svg.js +1 -1
- package/dist/composition/graph-viz-svg.js.map +1 -1
- package/dist/composition/graph-viz.d.ts.map +1 -1
- package/dist/composition/graph-viz.js +8 -37
- package/dist/composition/graph-viz.js.map +1 -1
- package/dist/composition/grounding.js.map +1 -1
- package/dist/composition/identifiability.d.ts +91 -4
- package/dist/composition/identifiability.d.ts.map +1 -1
- package/dist/composition/identifiability.js +363 -6
- package/dist/composition/identifiability.js.map +1 -1
- package/dist/composition/index.d.ts +14 -8
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +7 -5
- package/dist/composition/index.js.map +1 -1
- package/dist/composition/mathts-quiet.d.ts +29 -0
- package/dist/composition/mathts-quiet.d.ts.map +1 -0
- package/dist/composition/mathts-quiet.js +57 -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 +20 -35
- 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.d.ts +4 -2
- package/dist/composition/probe/corpus.d.ts.map +1 -1
- package/dist/composition/probe/corpus.js +20 -9
- package/dist/composition/probe/corpus.js.map +1 -1
- package/dist/composition/probe/dataset.d.ts +17 -0
- package/dist/composition/probe/dataset.d.ts.map +1 -1
- package/dist/composition/probe/dataset.js +95 -50
- package/dist/composition/probe/dataset.js.map +1 -1
- package/dist/composition/probe/experiment-design.d.ts +5 -1
- package/dist/composition/probe/experiment-design.d.ts.map +1 -1
- package/dist/composition/probe/experiment-design.js +44 -24
- 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 +16 -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 +7 -1
- package/dist/composition/probe/fit.d.ts.map +1 -1
- package/dist/composition/probe/fit.js +48 -23
- package/dist/composition/probe/fit.js.map +1 -1
- package/dist/composition/probe/frontier.d.ts.map +1 -1
- package/dist/composition/probe/frontier.js +33 -15
- package/dist/composition/probe/frontier.js.map +1 -1
- package/dist/composition/probe/generator.d.ts +27 -1
- package/dist/composition/probe/generator.d.ts.map +1 -1
- package/dist/composition/probe/generator.js +53 -30
- package/dist/composition/probe/generator.js.map +1 -1
- package/dist/composition/probe/index.d.ts +18 -2
- package/dist/composition/probe/index.d.ts.map +1 -1
- package/dist/composition/probe/index.js +10 -2
- package/dist/composition/probe/index.js.map +1 -1
- package/dist/composition/probe/limits.d.ts +24 -1
- package/dist/composition/probe/limits.d.ts.map +1 -1
- package/dist/composition/probe/limits.js +53 -11
- 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 +22 -9
- package/dist/composition/probe/pipeline.js.map +1 -1
- package/dist/composition/probe/power-law.d.ts +121 -0
- package/dist/composition/probe/power-law.d.ts.map +1 -0
- package/dist/composition/probe/power-law.js +255 -0
- package/dist/composition/probe/power-law.js.map +1 -0
- package/dist/composition/probe/problem.d.ts +12 -1
- package/dist/composition/probe/problem.d.ts.map +1 -1
- package/dist/composition/probe/problem.js +242 -48
- package/dist/composition/probe/problem.js.map +1 -1
- package/dist/composition/probe/report.js +1 -1
- package/dist/composition/probe/report.js.map +1 -1
- package/dist/composition/probe/residual.d.ts +6 -1
- package/dist/composition/probe/residual.d.ts.map +1 -1
- package/dist/composition/probe/residual.js +9 -7
- 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.d.ts +82 -17
- package/dist/composition/probe/structure.d.ts.map +1 -1
- package/dist/composition/probe/structure.js +129 -55
- package/dist/composition/probe/structure.js.map +1 -1
- package/dist/composition/probe/study.d.ts +35 -12
- package/dist/composition/probe/study.d.ts.map +1 -1
- package/dist/composition/probe/study.js +241 -184
- package/dist/composition/probe/study.js.map +1 -1
- package/dist/composition/probe/t-tail.d.ts +17 -0
- package/dist/composition/probe/t-tail.d.ts.map +1 -0
- package/dist/composition/probe/t-tail.js +32 -0
- package/dist/composition/probe/t-tail.js.map +1 -0
- package/dist/composition/probe/types.d.ts +6 -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 +51 -13
- package/dist/composition/proposed-bridges.d.ts.map +1 -1
- package/dist/composition/proposed-bridges.js +110 -58
- 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-clusters.d.ts +48 -0
- package/dist/composition/quantity-clusters.d.ts.map +1 -0
- package/dist/composition/quantity-clusters.js +98 -0
- package/dist/composition/quantity-clusters.js.map +1 -0
- 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/rational-exponent.d.ts +40 -0
- package/dist/composition/rational-exponent.d.ts.map +1 -0
- package/dist/composition/rational-exponent.js +65 -0
- package/dist/composition/rational-exponent.js.map +1 -0
- package/dist/composition/representative-values.d.ts +22 -0
- package/dist/composition/representative-values.d.ts.map +1 -1
- package/dist/composition/representative-values.js +23 -0
- 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 +36 -10
- package/dist/composition/retrodiction.js.map +1 -1
- package/dist/composition/uncertainty.js.map +1 -1
- package/dist/composition/user-equation.d.ts.map +1 -1
- package/dist/composition/user-equation.js +2 -2
- package/dist/composition/user-equation.js.map +1 -1
- package/dist/core/assignment.d.ts +19 -0
- package/dist/core/assignment.d.ts.map +1 -0
- package/dist/core/assignment.js +19 -0
- package/dist/core/assignment.js.map +1 -0
- 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/compare.d.ts +32 -0
- package/dist/core/compare.d.ts.map +1 -0
- package/dist/core/compare.js +46 -0
- package/dist/core/compare.js.map +1 -0
- package/dist/core/constants.d.ts +35 -35
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +52 -37
- package/dist/core/constants.js.map +1 -1
- package/dist/core/data-file.d.ts +7 -0
- package/dist/core/data-file.d.ts.map +1 -1
- package/dist/core/data-file.js +17 -0
- 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/format.d.ts +36 -0
- package/dist/core/format.d.ts.map +1 -0
- package/dist/core/format.js +39 -0
- package/dist/core/format.js.map +1 -0
- package/dist/core/hash.d.ts +14 -0
- package/dist/core/hash.d.ts.map +1 -0
- package/dist/core/hash.js +17 -0
- package/dist/core/hash.js.map +1 -0
- package/dist/core/json-schema.d.ts +3 -1
- package/dist/core/json-schema.d.ts.map +1 -1
- package/dist/core/json-schema.js +41 -16
- 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 -16
- package/dist/core/labeled-tensor.js.map +1 -1
- package/dist/core/mathts-read.d.ts +25 -0
- package/dist/core/mathts-read.d.ts.map +1 -0
- package/dist/core/mathts-read.js +51 -0
- package/dist/core/mathts-read.js.map +1 -0
- 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 +64 -8
- package/dist/core/tensor.js.map +1 -1
- package/dist/core/types.d.ts +5 -5
- 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 +43 -86
- package/dist/diff/bridge-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-gradient.js +40 -109
- 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 +19 -4
- package/dist/diff/bridge-specs.js.map +1 -1
- package/dist/dimensional/algebra.d.ts +18 -0
- package/dist/dimensional/algebra.d.ts.map +1 -1
- package/dist/dimensional/algebra.js +41 -1
- package/dist/dimensional/algebra.js.map +1 -1
- package/dist/dimensional/ast-builders.d.ts +12 -4
- package/dist/dimensional/ast-builders.d.ts.map +1 -1
- package/dist/dimensional/ast-builders.js +17 -5
- package/dist/dimensional/ast-builders.js.map +1 -1
- package/dist/dimensional/ast-leaves.d.ts +81 -0
- package/dist/dimensional/ast-leaves.d.ts.map +1 -0
- package/dist/dimensional/ast-leaves.js +146 -0
- package/dist/dimensional/ast-leaves.js.map +1 -0
- package/dist/dimensional/ast-types.js.map +1 -1
- package/dist/dimensional/bridge-check.js.map +1 -1
- package/dist/dimensional/buckingham.d.ts.map +1 -1
- package/dist/dimensional/buckingham.js +15 -27
- 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 +17 -13
- 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.d.ts.map +1 -1
- package/dist/dimensional/dimension-inference.js +1 -2
- 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 +4 -2
- package/dist/dimensional/errors.d.ts.map +1 -1
- package/dist/dimensional/errors.js +3 -17
- package/dist/dimensional/errors.js.map +1 -1
- package/dist/dimensional/exact-scale.d.ts +0 -17
- package/dist/dimensional/exact-scale.d.ts.map +1 -1
- package/dist/dimensional/exact-scale.js +8 -8
- 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 +2 -3
- package/dist/dimensional/gauge-field.js.map +1 -1
- package/dist/dimensional/hyphen-names.d.ts +12 -2
- package/dist/dimensional/hyphen-names.d.ts.map +1 -1
- package/dist/dimensional/hyphen-names.js +45 -12
- 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.d.ts.map +1 -1
- package/dist/dimensional/metric.js +0 -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 +9 -0
- package/dist/dimensional/symbolic-constants.d.ts.map +1 -1
- package/dist/dimensional/symbolic-constants.js +20 -3
- 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.d.ts +36 -0
- package/dist/dimensional/types.d.ts.map +1 -1
- package/dist/dimensional/types.js +45 -7
- 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 +11 -7
- 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 +59 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -24
- 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.d.ts.map +1 -1
- package/dist/numerical/christoffel-flat.js +3 -2
- 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 +36 -13
- 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 +9 -5
- 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 -8
- 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/finite-difference.d.ts +22 -0
- package/dist/numerical/finite-difference.d.ts.map +1 -0
- package/dist/numerical/finite-difference.js +27 -0
- package/dist/numerical/finite-difference.js.map +1 -0
- 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.d.ts.map +1 -1
- package/dist/numerical/geodesic-integrator.js +22 -14
- package/dist/numerical/geodesic-integrator.js.map +1 -1
- package/dist/numerical/geometrized.d.ts.map +1 -1
- package/dist/numerical/geometrized.js +0 -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 +16 -25
- package/dist/numerical/mathts-engine.js.map +1 -1
- package/dist/numerical/metric-inverse.d.ts.map +1 -1
- package/dist/numerical/metric-inverse.js +83 -46
- package/dist/numerical/metric-inverse.js.map +1 -1
- package/dist/numerical/null-ic.js.map +1 -1
- package/dist/numerical/null-ray-integrator.d.ts +2 -1
- package/dist/numerical/null-ray-integrator.d.ts.map +1 -1
- package/dist/numerical/null-ray-integrator.js +12 -12
- package/dist/numerical/null-ray-integrator.js.map +1 -1
- package/dist/numerical/painleve-gullstrand-metric.js +2 -2
- 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.d.ts +0 -36
- package/dist/numerical/perihelion-finder.d.ts.map +1 -1
- package/dist/numerical/perihelion-finder.js +41 -87
- 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 +19 -4
- package/dist/numerical/quadrature.js.map +1 -1
- package/dist/numerical/rk4-trajectory.d.ts +10 -0
- package/dist/numerical/rk4-trajectory.d.ts.map +1 -0
- package/dist/numerical/rk4-trajectory.js +37 -0
- package/dist/numerical/rk4-trajectory.js.map +1 -0
- package/dist/numerical/schwarzschild.d.ts +14 -0
- package/dist/numerical/schwarzschild.d.ts.map +1 -0
- package/dist/numerical/schwarzschild.js +17 -0
- package/dist/numerical/schwarzschild.js.map +1 -0
- package/dist/numerical/spacetime-metrics.d.ts +25 -19
- package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
- package/dist/numerical/spacetime-metrics.js +180 -286
- package/dist/numerical/spacetime-metrics.js.map +1 -1
- package/dist/numerical/statistics.d.ts +24 -0
- package/dist/numerical/statistics.d.ts.map +1 -0
- package/dist/numerical/statistics.js +52 -0
- package/dist/numerical/statistics.js.map +1 -0
- package/dist/numerical/strides.js.map +1 -1
- package/dist/numerical/tensor-engine.d.ts +30 -5
- package/dist/numerical/tensor-engine.d.ts.map +1 -1
- package/dist/numerical/tensor-engine.js +12 -0
- 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 +28 -8
- package/dist/relations/regime.d.ts.map +1 -1
- package/dist/relations/regime.js +44 -15
- 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 +16 -20
- 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
|
@@ -35,11 +35,11 @@ import type { ApproximationBound, AtlasBridge, RelationContract } from '../types
|
|
|
35
35
|
* @internal
|
|
36
36
|
*/
|
|
37
37
|
export declare function makeApproximation(bound: ApproximationBound): ApproximationBound;
|
|
38
|
-
/** Arithmetic–geometric mean, the standard evaluation route for `K`. @internal */
|
|
39
|
-
export declare function agm(a0: number, b0: number): number;
|
|
40
38
|
/**
|
|
41
39
|
* The EXACT relative period error of the pendulum at amplitude `theta0`:
|
|
42
|
-
* `(2/π) K(sin(θ0/2)) − 1
|
|
40
|
+
* `(2/π) K(sin(θ0/2)) − 1`, with `K` MathTS `ellipticK`, which takes the
|
|
41
|
+
* PARAMETER `m = k² = sin²(θ0/2)` and evaluates it by the AGM
|
|
42
|
+
* (`K = π / (2·AGM(1, √(1−m)))`, so this is `1/AGM(1, cos(θ0/2)) − 1`).
|
|
43
43
|
*
|
|
44
44
|
* This is the machine form of `ab-pendulum-linear`'s `delta`. It is SHARP —
|
|
45
45
|
* the bound equals the error it bounds — and it is strictly increasing in
|
|
@@ -102,19 +102,6 @@ export declare const AB_PENDULUM_LINEAR: AtlasBridge;
|
|
|
102
102
|
export declare const AB_DAMPED_MASSLESS: AtlasBridge;
|
|
103
103
|
/** The two approximation bridges of this module, in design-note order. @internal */
|
|
104
104
|
export declare const LIMIT_BRIDGES: readonly AtlasBridge[];
|
|
105
|
-
/**
|
|
106
|
-
* The two approximation bridges re-registered through `RelationContract`.
|
|
107
|
-
*
|
|
108
|
-
* The union REQUIRES `bound` on an `approximation`, and `ApproximationBound`
|
|
109
|
-
* requires its own machine `horizonHolds`, so these two lines are what turn
|
|
110
|
-
* Sprint 0's doc-comment requirement into a compile-and-throw one. Both bounds
|
|
111
|
-
* are the records' own, measured ones — nothing is restated here.
|
|
112
|
-
*
|
|
113
|
-
* @internal
|
|
114
|
-
*/
|
|
115
|
-
export declare const CONTRACT_PENDULUM_LINEAR: RelationContract;
|
|
116
|
-
/** @internal */
|
|
117
|
-
export declare const CONTRACT_DAMPED_MASSLESS: RelationContract;
|
|
118
105
|
/** The two limit contracts, in design-note order. @internal */
|
|
119
106
|
export declare const LIMIT_CONTRACTS: readonly RelationContract[];
|
|
120
107
|
//# sourceMappingURL=bridges-limits.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridges-limits.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/bridges-limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;
|
|
1
|
+
{"version":3,"file":"bridges-limits.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/bridges-limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAOH,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,gBAAgB,EAAU,MAAM,aAAa,CAAC;AAS7F;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAG,kBAAkB,CAO/E;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAMtF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAKpF;AAiCD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAgFhC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAmFhC,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAA6C,CAAC;AAmB9F,+DAA+D;AAC/D,eAAO,MAAM,eAAe,EAAE,SAAS,gBAAgB,EAGtD,CAAC"}
|
|
@@ -20,8 +20,10 @@
|
|
|
20
20
|
*
|
|
21
21
|
* @module atlas/oscillators/bridges-limits
|
|
22
22
|
*/
|
|
23
|
+
import { ellipticK } from '@danielsimonjr/mathts-functions';
|
|
24
|
+
import { numberFrom } from '../../core/mathts-read.js';
|
|
23
25
|
import { physjsFormalRef } from '../physjs-ref.js';
|
|
24
|
-
import {
|
|
26
|
+
import { makeRegime } from '../regime.js';
|
|
25
27
|
import { MissingHorizonError } from '../types.js';
|
|
26
28
|
import { relationContractOf } from './bridges-exact.js';
|
|
27
29
|
import { DAMPING, SPRING_CONSTANT } from './dimensions.js';
|
|
@@ -48,18 +50,11 @@ export function makeApproximation(bound) {
|
|
|
48
50
|
}
|
|
49
51
|
return bound;
|
|
50
52
|
}
|
|
51
|
-
/** Arithmetic–geometric mean, the standard evaluation route for `K`. @internal */
|
|
52
|
-
export function agm(a0, b0) {
|
|
53
|
-
let a = a0;
|
|
54
|
-
let b = b0;
|
|
55
|
-
for (let i = 0; i < 60 && a !== b; i++) {
|
|
56
|
-
[a, b] = [(a + b) / 2, Math.sqrt(a * b)];
|
|
57
|
-
}
|
|
58
|
-
return a;
|
|
59
|
-
}
|
|
60
53
|
/**
|
|
61
54
|
* The EXACT relative period error of the pendulum at amplitude `theta0`:
|
|
62
|
-
* `(2/π) K(sin(θ0/2)) − 1
|
|
55
|
+
* `(2/π) K(sin(θ0/2)) − 1`, with `K` MathTS `ellipticK`, which takes the
|
|
56
|
+
* PARAMETER `m = k² = sin²(θ0/2)` and evaluates it by the AGM
|
|
57
|
+
* (`K = π / (2·AGM(1, √(1−m)))`, so this is `1/AGM(1, cos(θ0/2)) − 1`).
|
|
63
58
|
*
|
|
64
59
|
* This is the machine form of `ab-pendulum-linear`'s `delta`. It is SHARP —
|
|
65
60
|
* the bound equals the error it bounds — and it is strictly increasing in
|
|
@@ -79,7 +74,9 @@ export function pendulumPeriodErrorAt(params) {
|
|
|
79
74
|
const { theta0 } = params;
|
|
80
75
|
if (!Number.isFinite(theta0) || Math.abs(theta0) >= Math.PI)
|
|
81
76
|
return Infinity;
|
|
82
|
-
|
|
77
|
+
const m = Math.sin(theta0 / 2) ** 2;
|
|
78
|
+
const k = numberFrom('ellipticK', ellipticK(m));
|
|
79
|
+
return (2 / Math.PI) * k - 1;
|
|
83
80
|
}
|
|
84
81
|
/**
|
|
85
82
|
* The position-offset bound of `ab-damped-massless` at a point:
|
|
@@ -103,14 +100,10 @@ export function dampedOffsetBoundAt(params) {
|
|
|
103
100
|
return (2 * (1 + Math.abs(v0)) * m) / b;
|
|
104
101
|
}
|
|
105
102
|
/** Pendulum regime: `θ0 ≤ 0.5 rad`, stated on the dimensionless input. @internal */
|
|
106
|
-
const PENDULUM_REGIME =
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
{ name: 'g', dim: ACCELERATION },
|
|
111
|
-
{ name: 'ell', dim: LENGTH },
|
|
112
|
-
], ['theta0']),
|
|
113
|
-
};
|
|
103
|
+
const PENDULUM_REGIME = makeRegime(FAMILY, [
|
|
104
|
+
{ name: 'g', dim: ACCELERATION },
|
|
105
|
+
{ name: 'ell', dim: LENGTH },
|
|
106
|
+
], ['theta0'], [{ group: 'theta0', op: '<=', bound: 0.5, alias: 'θ0 ≤ 0.5 rad' }]);
|
|
114
107
|
/**
|
|
115
108
|
* Damped-spring regime: overdamped, `m k / b² < 1/4`.
|
|
116
109
|
*
|
|
@@ -120,15 +113,11 @@ const PENDULUM_REGIME = {
|
|
|
120
113
|
*
|
|
121
114
|
* @internal
|
|
122
115
|
*/
|
|
123
|
-
const DAMPED_REGIME =
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
{ name: 'b', dim: DAMPING },
|
|
129
|
-
{ name: 'k', dim: SPRING_CONSTANT },
|
|
130
|
-
], []),
|
|
131
|
-
};
|
|
116
|
+
const DAMPED_REGIME = makeRegime(FAMILY, [
|
|
117
|
+
{ name: 'm', dim: MASS },
|
|
118
|
+
{ name: 'b', dim: DAMPING },
|
|
119
|
+
{ name: 'k', dim: SPRING_CONSTANT },
|
|
120
|
+
], [], [{ group: 'm · b^-2 · k', op: '<', bound: 0.25, alias: 'ζ > 1' }]);
|
|
132
121
|
/**
|
|
133
122
|
* `ab-pendulum-linear` — small-angle pendulum → harmonic spring.
|
|
134
123
|
*
|
|
@@ -158,8 +147,8 @@ export const AB_PENDULUM_LINEAR = {
|
|
|
158
147
|
bound: makeApproximation({
|
|
159
148
|
K: 1,
|
|
160
149
|
// Sup over `θ0 ≤ 0.5`: the error is strictly increasing in |θ0|, so the
|
|
161
|
-
// edge value IS the supremum. 0.0158525311014... (
|
|
162
|
-
// reproduced by quadrature of the complete elliptic integral.
|
|
150
|
+
// edge value IS the supremum. 0.0158525311014... (MathTS ellipticK, by the
|
|
151
|
+
// AGM), independently reproduced by quadrature of the complete elliptic integral.
|
|
163
152
|
delta: pendulumPeriodErrorAt({ theta0: 0.5 }),
|
|
164
153
|
deltaAt: pendulumPeriodErrorAt,
|
|
165
154
|
deltaAtBasis: 'closed-form',
|
|
@@ -194,7 +183,6 @@ export const AB_PENDULUM_LINEAR = {
|
|
|
194
183
|
witness: 'W7b',
|
|
195
184
|
},
|
|
196
185
|
],
|
|
197
|
-
evidence: new Set(['numerically-supported']),
|
|
198
186
|
witnesses: [
|
|
199
187
|
{
|
|
200
188
|
id: 'W7',
|
|
@@ -225,7 +213,7 @@ export const AB_PENDULUM_LINEAR = {
|
|
|
225
213
|
// certifies the TRANSFORMATION (mass mℓ², spring constant mgℓ, ω0² = g/ℓ),
|
|
226
214
|
// not `bound.delta`. Physlib's period results concern `periodFormula`, which
|
|
227
215
|
// its own TODO has not yet tied to the motion. The sanity lemmas instantiate
|
|
228
|
-
// that imported statement. Keyed by `formal/
|
|
216
|
+
// that imported statement. Keyed by `formal/lean/manifest.json`.
|
|
229
217
|
formalRef: physjsFormalRef('ab-pendulum-linear'),
|
|
230
218
|
};
|
|
231
219
|
/**
|
|
@@ -302,7 +290,6 @@ export const AB_DAMPED_MASSLESS = {
|
|
|
302
290
|
witness: 'W8b',
|
|
303
291
|
},
|
|
304
292
|
],
|
|
305
|
-
evidence: new Set(['numerically-supported']),
|
|
306
293
|
witnesses: [
|
|
307
294
|
{
|
|
308
295
|
id: 'W8',
|
|
@@ -335,9 +322,9 @@ export const LIMIT_BRIDGES = [AB_PENDULUM_LINEAR, AB_DAMPED_MASSLESS];
|
|
|
335
322
|
*
|
|
336
323
|
* @internal
|
|
337
324
|
*/
|
|
338
|
-
|
|
325
|
+
const CONTRACT_PENDULUM_LINEAR = relationContractOf(AB_PENDULUM_LINEAR);
|
|
339
326
|
/** @internal */
|
|
340
|
-
|
|
327
|
+
const CONTRACT_DAMPED_MASSLESS = relationContractOf(AB_DAMPED_MASSLESS);
|
|
341
328
|
/** The two limit contracts, in design-note order. @internal */
|
|
342
329
|
export const LIMIT_CONTRACTS = [
|
|
343
330
|
CONTRACT_PENDULUM_LINEAR,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridges-limits.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/bridges-limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAExE,MAAM,MAAM,GAAG,aAAa,CAAC;AAC7B,MAAM,SAAS,GAAG,wCAAwC,CAAC;AAE3D;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAyB;IACzD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAChC,MAAM,IAAI,mBAAmB,CAC3B,+EAA+E,CAChF,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,GAAG,CAAC,EAAU,EAAE,EAAU;IACxC,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAwC;IAC5E,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC;IAC7E,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAwC;IAC1E,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;IACnC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC/D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACpD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED,oFAAoF;AACpF,MAAM,eAAe,GAAW;IAC9B,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAChF,gBAAgB,EAAE,kBAAkB,CAClC,MAAM,EACN;QACE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE;QAChC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE;KAC7B,EACD,CAAC,QAAQ,CAAC,CACX;CACF,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,aAAa,GAAW;IAC5B,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC/E,gBAAgB,EAAE,kBAAkB,CAClC,MAAM,EACN;QACE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE;QACxB,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE;QAC3B,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,eAAe,EAAE;KACpC,EACD,EAAE,CACH;CACF,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAgB;IAC7C,EAAE,EAAE,oBAAoB;IACxB,QAAQ,EAAE,eAAe;IACzB,QAAQ,EAAE,CAAC,gBAAgB,CAAC;IAC5B,UAAU,EAAE,cAAc;IAC1B,cAAc,EAAE,uCAAuC;IACvD,SAAS,EAAE,CAAC,iCAAiC,EAAE,qBAAqB,EAAE,wBAAwB,CAAC;IAC/F,eAAe,EAAE,CAAC,wCAAwC,EAAE,gCAAgC,CAAC;IAC7F,cAAc,EAAE,CAAC,cAAc,EAAE,wDAAwD,CAAC;IAC1F,KAAK,EAAE,iBAAiB,CAAC;QACvB,CAAC,EAAE,CAAC;QACJ,wEAAwE;QACxE,sEAAsE;QACtE,8DAA8D;QAC9D,KAAK,EAAE,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QAC7C,OAAO,EAAE,qBAAqB;QAC9B,YAAY,EAAE,aAAa;QAC3B,IAAI,EAAE,oBAAoB;QAC1B,MAAM,EAAE,cAAc;QACtB,OAAO,EAAE,8DAA8D;QACvE,sEAAsE;QACtE,yEAAyE;QACzE,yEAAyE;QACzE,wEAAwE;QACxE,uEAAuE;QACvE,uEAAuE;QACvE,kEAAkE;QAClE,+DAA+D;QAC/D,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAC1B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,cAAc,EAAE,cAAc;QAC9B,cAAc,EAAE,SAAS;QACzB,wEAAwE;QACxE,cAAc;QACd,UAAU,EAAE,CAAC,yCAAyC,CAAC;KACxD,CAAC;IACF,MAAM,EAAE,eAAe;IACvB,eAAe,EAAE;QACf;YACE,WAAW,EACT,oFAAoF;gBACpF,yDAAyD;YAC3D,OAAO,EAAE,KAAK;SACf;KACF;IACD,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC,uBAAuB,CAAC,CAAC;IAC5C,SAAS,EAAE;QACT;YACE,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,4EAA4E;SACxF;QACD;YACE,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,6CAA6C;SACzD;QACD;YACE,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,sEAAsE;SAClF;KACF;IACD,SAAS,EAAE;QACT,oFAAoF;QACpF,iDAAiD;KAClD;IACD,YAAY,EAAE,UAAU;IACxB,4EAA4E;IAC5E,yEAAyE;IACzE,2EAA2E;IAC3E,6EAA6E;IAC7E,6EAA6E;IAC7E,mEAAmE;IACnE,SAAS,EAAE,eAAe,CAAC,oBAAoB,CAAC;CACjD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAgB;IAC7C,EAAE,EAAE,oBAAoB;IACxB,QAAQ,EAAE,eAAe;IACzB,QAAQ,EAAE,CAAC,qBAAqB,CAAC;IACjC,UAAU,EAAE,mBAAmB;IAC/B,cAAc,EAAE,+BAA+B;IAC/C,SAAS,EAAE,CAAC,sCAAsC,EAAE,wCAAwC,CAAC;IAC7F,eAAe,EAAE;QACf,qCAAqC;QACrC,qEAAqE;QACrE,wBAAwB;KACzB;IACD,cAAc,EAAE;QACd,4BAA4B;QAC5B,4DAA4D;KAC7D;IACD,KAAK,EAAE,iBAAiB,CAAC;QACvB,CAAC,EAAE,CAAC;QACJ,yEAAyE;QACzE,oEAAoE;QACpE,0EAA0E;QAC1E,0EAA0E;QAC1E,uEAAuE;QACvE,0EAA0E;QAC1E,mEAAmE;QACnE,kBAAkB;QAClB,wEAAwE;QACxE,4EAA4E;QAC5E,yEAAyE;QACzE,kEAAkE;QAClE,2EAA2E;QAC3E,6EAA6E;QAC7E,2DAA2D;QAC3D,yDAAyD;QACzD,yDAAyD;QACzD,KAAK,EAAE,mBAAmB,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QACjE,OAAO,EAAE,mBAAmB;QAC5B,sFAAsF;QACtF,YAAY,EAAE,uBAAuB;QACrC,IAAI,EAAE,mCAAmC;QACzC,MAAM,EAAE,+DAA+D;QACvE,OAAO,EAAE,wCAAwC;QACjD,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAC1B,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,cAAc,EAAE,0DAA0D;QAC1E,cAAc,EAAE,UAAU;QAC1B,UAAU,EAAE;YACV,+DAA+D;YAC/D,0BAA0B;SAC3B;KACF,CAAC;IACF,MAAM,EAAE,aAAa;IACrB,eAAe,EAAE;QACf;YACE,WAAW,EACT,8EAA8E;gBAC9E,wEAAwE;YAC1E,OAAO,EAAE,KAAK;SACf;KACF;IACD,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC,uBAAuB,CAAC,CAAC;IAC5C,SAAS,EAAE;QACT;YACE,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,wEAAwE;SACpF;QACD;YACE,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,SAAS,EACP,2FAA2F;SAC9F;KACF;IACD,SAAS,EAAE;QACT,4FAA4F;QAC5F,mFAAmF;KACpF;IACD,YAAY,EAAE,UAAU;CACzB,CAAC;AAEF,oFAAoF;AACpF,MAAM,CAAC,MAAM,aAAa,GAA2B,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;AAE9F;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,wBAAwB,GACnC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;AAEzC,gBAAgB;AAChB,MAAM,CAAC,MAAM,wBAAwB,GACnC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;AAEzC,+DAA+D;AAC/D,MAAM,CAAC,MAAM,eAAe,GAAgC;IAC1D,wBAAwB;IACxB,wBAAwB;CACzB,CAAC"}
|
|
1
|
+
{"version":3,"file":"bridges-limits.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/bridges-limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAExE,MAAM,MAAM,GAAG,aAAa,CAAC;AAC7B,MAAM,SAAS,GAAG,wCAAwC,CAAC;AAE3D;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAyB;IACzD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAChC,MAAM,IAAI,mBAAmB,CAC3B,+EAA+E,CAChF,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAwC;IAC5E,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC;IAC7E,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,CAAC,GAAG,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAwC;IAC1E,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;IACnC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC/D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACpD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED,oFAAoF;AACpF,MAAM,eAAe,GAAW,UAAU,CACxC,MAAM,EACN;IACE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE;IAChC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE;CAC7B,EACD,CAAC,QAAQ,CAAC,EACV,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CACnE,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,aAAa,GAAW,UAAU,CACtC,MAAM,EACN;IACE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE;IACxB,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE;IAC3B,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,eAAe,EAAE;CACpC,EACD,EAAE,EACF,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAClE,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAgB;IAC7C,EAAE,EAAE,oBAAoB;IACxB,QAAQ,EAAE,eAAe;IACzB,QAAQ,EAAE,CAAC,gBAAgB,CAAC;IAC5B,UAAU,EAAE,cAAc;IAC1B,cAAc,EAAE,uCAAuC;IACvD,SAAS,EAAE,CAAC,iCAAiC,EAAE,qBAAqB,EAAE,wBAAwB,CAAC;IAC/F,eAAe,EAAE,CAAC,wCAAwC,EAAE,gCAAgC,CAAC;IAC7F,cAAc,EAAE,CAAC,cAAc,EAAE,wDAAwD,CAAC;IAC1F,KAAK,EAAE,iBAAiB,CAAC;QACvB,CAAC,EAAE,CAAC;QACJ,wEAAwE;QACxE,2EAA2E;QAC3E,kFAAkF;QAClF,KAAK,EAAE,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QAC7C,OAAO,EAAE,qBAAqB;QAC9B,YAAY,EAAE,aAAa;QAC3B,IAAI,EAAE,oBAAoB;QAC1B,MAAM,EAAE,cAAc;QACtB,OAAO,EAAE,8DAA8D;QACvE,sEAAsE;QACtE,yEAAyE;QACzE,yEAAyE;QACzE,wEAAwE;QACxE,uEAAuE;QACvE,uEAAuE;QACvE,kEAAkE;QAClE,+DAA+D;QAC/D,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAC1B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,cAAc,EAAE,cAAc;QAC9B,cAAc,EAAE,SAAS;QACzB,wEAAwE;QACxE,cAAc;QACd,UAAU,EAAE,CAAC,yCAAyC,CAAC;KACxD,CAAC;IACF,MAAM,EAAE,eAAe;IACvB,eAAe,EAAE;QACf;YACE,WAAW,EACT,oFAAoF;gBACpF,yDAAyD;YAC3D,OAAO,EAAE,KAAK;SACf;KACF;IACD,SAAS,EAAE;QACT;YACE,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,4EAA4E;SACxF;QACD;YACE,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,6CAA6C;SACzD;QACD;YACE,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,sEAAsE;SAClF;KACF;IACD,SAAS,EAAE;QACT,oFAAoF;QACpF,iDAAiD;KAClD;IACD,YAAY,EAAE,UAAU;IACxB,4EAA4E;IAC5E,yEAAyE;IACzE,2EAA2E;IAC3E,6EAA6E;IAC7E,6EAA6E;IAC7E,iEAAiE;IACjE,SAAS,EAAE,eAAe,CAAC,oBAAoB,CAAC;CACjD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAgB;IAC7C,EAAE,EAAE,oBAAoB;IACxB,QAAQ,EAAE,eAAe;IACzB,QAAQ,EAAE,CAAC,qBAAqB,CAAC;IACjC,UAAU,EAAE,mBAAmB;IAC/B,cAAc,EAAE,+BAA+B;IAC/C,SAAS,EAAE,CAAC,sCAAsC,EAAE,wCAAwC,CAAC;IAC7F,eAAe,EAAE;QACf,qCAAqC;QACrC,qEAAqE;QACrE,wBAAwB;KACzB;IACD,cAAc,EAAE;QACd,4BAA4B;QAC5B,4DAA4D;KAC7D;IACD,KAAK,EAAE,iBAAiB,CAAC;QACvB,CAAC,EAAE,CAAC;QACJ,yEAAyE;QACzE,oEAAoE;QACpE,0EAA0E;QAC1E,0EAA0E;QAC1E,uEAAuE;QACvE,0EAA0E;QAC1E,mEAAmE;QACnE,kBAAkB;QAClB,wEAAwE;QACxE,4EAA4E;QAC5E,yEAAyE;QACzE,kEAAkE;QAClE,2EAA2E;QAC3E,6EAA6E;QAC7E,2DAA2D;QAC3D,yDAAyD;QACzD,yDAAyD;QACzD,KAAK,EAAE,mBAAmB,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QACjE,OAAO,EAAE,mBAAmB;QAC5B,sFAAsF;QACtF,YAAY,EAAE,uBAAuB;QACrC,IAAI,EAAE,mCAAmC;QACzC,MAAM,EAAE,+DAA+D;QACvE,OAAO,EAAE,wCAAwC;QACjD,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAC1B,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,cAAc,EAAE,0DAA0D;QAC1E,cAAc,EAAE,UAAU;QAC1B,UAAU,EAAE;YACV,+DAA+D;YAC/D,0BAA0B;SAC3B;KACF,CAAC;IACF,MAAM,EAAE,aAAa;IACrB,eAAe,EAAE;QACf;YACE,WAAW,EACT,8EAA8E;gBAC9E,wEAAwE;YAC1E,OAAO,EAAE,KAAK;SACf;KACF;IACD,SAAS,EAAE;QACT;YACE,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,wEAAwE;SACpF;QACD;YACE,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,SAAS,EACP,2FAA2F;SAC9F;KACF;IACD,SAAS,EAAE;QACT,4FAA4F;QAC5F,mFAAmF;KACpF;IACD,YAAY,EAAE,UAAU;CACzB,CAAC;AAEF,oFAAoF;AACpF,MAAM,CAAC,MAAM,aAAa,GAA2B,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;AAE9F;;;;;;;;;GASG;AACH,MAAM,wBAAwB,GAC5B,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;AAEzC,gBAAgB;AAChB,MAAM,wBAAwB,GAC5B,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;AAEzC,+DAA+D;AAC/D,MAAM,CAAC,MAAM,eAAe,GAAgC;IAC1D,wBAAwB;IACxB,wBAAwB;CACzB,CAAC","sourcesContent":["/**\n * The two Phase 0 APPROXIMATION bridges — design note §3, bridges 3 and 4.\n *\n * - `ab-pendulum-linear` — a REGULAR limit. `θ'' + ω0² sin θ = 0` reduces to\n * `θ'' + ω0² θ = 0` as `θ0 → 0`. The order of the system does not drop, the\n * error is `O(θ0²)` in the relative period, and the approximation is\n * NON-UNIFORM in time: a fixed relative period error accumulates phase\n * without bound, so the bound carries the horizon `t ≪ 16 T0/θ0²`.\n * - `ab-damped-massless` — a SINGULAR limit. `m x'' + b x' + k x = 0` reduces\n * to `b x' + k x = 0` as `m → 0`. The order DROPS from two to one, one\n * initial condition is lost, and the reduced model cannot satisfy `x'(0)`.\n * The bound therefore holds only OUTSIDE the boundary layer, `t ≥ 5 m/b`.\n *\n * On the position offset of the singular bridge: `x_full − x_red` is an\n * `O((1 + |v0|) m)` deviation that PERSISTS THROUGHOUT THE OUTER REGION and\n * decays only on the slow time scale `b/k`. It is the matched-asymptotics\n * correction, not a boundary-layer transient, and waiting out the fast mode\n * does not remove it. (Design note §9 YELLOW (5) — \"non-vanishing\" was the\n * imprecise wording this replaces: the offset does go to zero as `t → ∞`.)\n *\n * @module atlas/oscillators/bridges-limits\n */\n\nimport { ellipticK } from '@danielsimonjr/mathts-functions';\nimport { numberFrom } from '../../core/mathts-read.js';\nimport { physjsFormalRef } from '../physjs-ref.js';\nimport { makeRegime } from '../regime.js';\nimport { MissingHorizonError } from '../types.js';\nimport type { ApproximationBound, AtlasBridge, RelationContract, Regime } from '../types.js';\nimport { relationContractOf } from './bridges-exact.js';\nimport { DAMPING, SPRING_CONSTANT } from './dimensions.js';\nimport { RELATIVE_PERIOD_NORM } from './norms.js';\nimport { ACCELERATION, LENGTH, MASS } from '../../dimensional/types.js';\n\nconst FAMILY = 'oscillators';\nconst TEST_FILE = 'tests/atlas/oscillators-limits.test.ts';\n\n/**\n * Build an `ApproximationBound`, rejecting one with no prose horizon.\n *\n * Every `approximation` bridge in this module is constructed through here, so\n * the mandatory-horizon rule of `ApproximationBound` has something that FAILS\n * rather than a comment asking for compliance. `horizonHolds` is mandatory by\n * the type; the prose `horizon` is the field a caller can satisfy with `''`,\n * so it is the one checked at run time. `uniformity: null` is accepted: not\n * yet analysed is a real state, and the refusal lives in `boundPath`.\n *\n * @throws MissingHorizonError if `horizon` is empty or whitespace.\n * @internal\n */\nexport function makeApproximation(bound: ApproximationBound): ApproximationBound {\n if (bound.horizon.trim() === '') {\n throw new MissingHorizonError(\n 'an approximation bound requires a non-empty prose horizon beside horizonHolds',\n );\n }\n return bound;\n}\n\n/**\n * The EXACT relative period error of the pendulum at amplitude `theta0`:\n * `(2/π) K(sin(θ0/2)) − 1`, with `K` MathTS `ellipticK`, which takes the\n * PARAMETER `m = k² = sin²(θ0/2)` and evaluates it by the AGM\n * (`K = π / (2·AGM(1, √(1−m)))`, so this is `1/AGM(1, cos(θ0/2)) − 1`).\n *\n * This is the machine form of `ab-pendulum-linear`'s `delta`. It is SHARP —\n * the bound equals the error it bounds — and it is strictly increasing in\n * `|θ0|`, so its value at the edge of a declared amplitude range is the\n * supremum over that range. That last property is what lets the record state\n * one scalar for the whole domain honestly.\n *\n * The series `θ0²/16` is the LEADING TERM of this quantity, not an upper bound\n * on it: at the domain edge `θ0 = 0.5` the series gives `0.0156250` while the\n * exact error is `0.0158525311`, so the series UNDERSTATES by 1.456%. A record\n * that declares the series value is violated at its own boundary.\n *\n * @returns `Infinity` outside `|θ0| < π`, where no finite period error exists.\n * @internal\n */\nexport function pendulumPeriodErrorAt(params: Readonly<Record<string, number>>): number {\n const { theta0 } = params;\n if (!Number.isFinite(theta0) || Math.abs(theta0) >= Math.PI) return Infinity;\n const m = Math.sin(theta0 / 2) ** 2;\n const k = numberFrom('ellipticK', ellipticK(m));\n return (2 / Math.PI) * k - 1;\n}\n\n/**\n * The position-offset bound of `ab-damped-massless` at a point:\n * `2 (1 + |v0|) m / b`, the formula this record's docstring has always\n * carried. It is a bound ONLY at the witness normalisation `b = k = x0 = 1`:\n * the leading offset is `(m/b)(v0 + k x0/b)`, and the formula has no `k` or\n * `x0` in it. At `m = 1e-3, b = 1, k = 100` (inside `m k/b² < 1/4`) the true\n * error is more than 20 times the formula.\n *\n * @returns `Infinity` unless `m`, `b`, `k`, `x0` and `v0` are all finite and\n * `b = k = x0 = 1` — a missing parameter would otherwise silently return a\n * bound for a normalisation the caller did not ask about.\n * @internal\n */\nexport function dampedOffsetBoundAt(params: Readonly<Record<string, number>>): number {\n const { m, b, k, x0, v0 } = params;\n if (![m, b, k, x0, v0].every(Number.isFinite)) return Infinity;\n if (b !== 1 || k !== 1 || x0 !== 1) return Infinity;\n return (2 * (1 + Math.abs(v0)) * m) / b;\n}\n\n/** Pendulum regime: `θ0 ≤ 0.5 rad`, stated on the dimensionless input. @internal */\nconst PENDULUM_REGIME: Regime = makeRegime(\n FAMILY,\n [\n { name: 'g', dim: ACCELERATION },\n { name: 'ell', dim: LENGTH },\n ],\n ['theta0'],\n [{ group: 'theta0', op: '<=', bound: 0.5, alias: 'θ0 ≤ 0.5 rad' }],\n);\n\n/**\n * Damped-spring regime: overdamped, `m k / b² < 1/4`.\n *\n * The inequality is written on the π-group, not on `ζ = ½ (m k / b²)^(−½)`,\n * which is a derived quantity and not a group (`RegimeInequality` doc).\n * `m k / b² < 1/4` is exactly `ζ > 1`, recorded as the display alias.\n *\n * @internal\n */\nconst DAMPED_REGIME: Regime = makeRegime(\n FAMILY,\n [\n { name: 'm', dim: MASS },\n { name: 'b', dim: DAMPING },\n { name: 'k', dim: SPRING_CONSTANT },\n ],\n [],\n [{ group: 'm · b^-2 · k', op: '<', bound: 0.25, alias: 'ζ > 1' }],\n);\n\n/**\n * `ab-pendulum-linear` — small-angle pendulum → harmonic spring.\n *\n * `θ0²/16` is the leading term of the exact relative period error\n * `(2/π) K(sin(θ0/2)) − 1`. At `θ0 = 0.2` the residual is `5.744e-6`, which\n * the next series term `11 θ0⁴/3072 = 5.729e-6` accounts for to `1.5e-8`.\n *\n * `delta` is the EXACT error at the edge of the declared range, not that\n * series term. The record previously declared `0.5²/16 = 0.0156250`, which is\n * the series evaluated at `θ0 = 0.5` — and the exact error there is\n * `0.0158525311`, so the declared bound was VIOLATED AT ITS OWN BOUNDARY by\n * 1.456%. A truncated series is an approximation of the error, not a bound on\n * it, and the sign of its omitted tail decides which. Here the tail is\n * positive, so the series sits below what it was asked to cover.\n *\n * @internal\n */\nexport const AB_PENDULUM_LINEAR: AtlasBridge = {\n id: 'ab-pendulum-linear',\n relation: 'approximation',\n premises: ['model-pendulum'],\n conclusion: 'model-spring',\n transformation: 'sin θ → θ, with x ↔ ℓ θ and ω0² = g/ℓ',\n preserves: ['harmonic frequency ω0 to O(θ0²)', 'energy conservation', 'time-reversal symmetry'],\n doesNotPreserve: ['the amplitude dependence of the period', 'phase over times t ≳ 16 T0/θ0²'],\n sideConditions: ['θ0 ≤ 0.5 rad', 'the bound is a PERIOD error and is not uniform in time'],\n bound: makeApproximation({\n K: 1,\n // Sup over `θ0 ≤ 0.5`: the error is strictly increasing in |θ0|, so the\n // edge value IS the supremum. 0.0158525311014... (MathTS ellipticK, by the\n // AGM), independently reproduced by quadrature of the complete elliptic integral.\n delta: pendulumPeriodErrorAt({ theta0: 0.5 }),\n deltaAt: pendulumPeriodErrorAt,\n deltaAtBasis: 'closed-form',\n norm: RELATIVE_PERIOD_NORM,\n domain: 'θ0 ≤ 0.5 rad',\n horizon: 't ≪ 16 T0/θ0²; machine form t < 4 T0/θ0², the π/2-drift time',\n // ⚠ The machine form is a QUARTER of the prose scale, and it must be.\n // `16 T0/θ0²` is the time at which the accumulated phase drift reaches a\n // FULL 2π (measured: 400 T0 at θ0 = 0.2, drift 6.2976 rad) — by then the\n // approximation has lapped, so `t < 16 T0/θ0²` is not a horizon at all.\n // The `≪` is what carries the whole claim, and `<` does not render it.\n // `4 T0/θ0²` is the π/2-drift time, which is exactly what W7b measures\n // independently (99.77 cycles at θ0 = 0.2). It is also what makes\n // `horizonHolds(200 T0)` false and `horizonHolds(10 T0)` true.\n horizonHolds: (t, params) => {\n const { T0, theta0 } = params;\n if (!Number.isFinite(T0) || !Number.isFinite(theta0) || theta0 === 0) return false;\n return t < (4 * T0) / theta0 ** 2;\n },\n parameterRange: 'θ0 ≤ 0.5 rad',\n limitCharacter: 'regular',\n // A period error. The record says it is not uniform in time, so time is\n // not listed.\n uniformity: ['one period, for θ0 in the stated domain'],\n }),\n regime: PENDULUM_REGIME,\n counterexamples: [\n {\n description:\n 'the approximation is non-uniform in time: at θ0 = 0.2 the phase drift reaches π/2 ' +\n 'after ~100 cycles, however small the per-cycle error is',\n witness: 'W7b',\n },\n ],\n witnesses: [\n {\n id: 'W7',\n kind: 'numeric',\n test: TEST_FILE,\n tolerance: 'T/T0 − 1 ∈ [0.002505, 0.002507]; residual ∈ [5.70e-6, 5.76e-6] at θ0 = 0.2',\n },\n {\n id: 'W7b',\n kind: 'numeric',\n test: TEST_FILE,\n tolerance: 'cycles to π/2 drift ∈ [99, 101] at θ0 = 0.2',\n },\n {\n id: 'W7c',\n kind: 'numeric',\n test: TEST_FILE,\n tolerance: 'RK4 zero-crossing lag within 0.05° of the elliptic prediction 89.98°',\n },\n ],\n citations: [\n 'Landau & Lifshitz, Mechanics §11 (pendulum period as a complete elliptic integral)',\n 'Abramowitz & Stegun §17.6 (AGM evaluation of K)',\n ],\n reviewStatus: 'proposed',\n // Milestone 1. The reference is the PhysJS theorem, which imports Physlib's\n // `ClassicalMechanics.SimplePendulum.linearizedEquationOfMotion_iff`. It\n // certifies the TRANSFORMATION (mass mℓ², spring constant mgℓ, ω0² = g/ℓ),\n // not `bound.delta`. Physlib's period results concern `periodFormula`, which\n // its own TODO has not yet tied to the motion. The sanity lemmas instantiate\n // that imported statement. Keyed by `formal/lean/manifest.json`.\n formalRef: physjsFormalRef('ab-pendulum-linear'),\n};\n\n/**\n * `ab-damped-massless` — the SINGULAR `m → 0` limit of the damped spring.\n *\n * `deltaAt = 2(1 + |v0|) m/b` bounds the position offset outside the boundary\n * layer, and `delta` is its supremum over the declared range rather than its\n * value at one fixture. The lost initial condition is visible in the VELOCITY: inside the\n * layer the reduced model's `x'` is wrong by O(1/m·…), and it is only after\n * `t ≈ 5 m/b` that the fast mode has decayed.\n *\n * @internal\n */\nexport const AB_DAMPED_MASSLESS: AtlasBridge = {\n id: 'ab-damped-massless',\n relation: 'approximation',\n premises: ['model-damped-spring'],\n conclusion: 'model-first-order',\n transformation: 'm → 0, dropping the m x″ term',\n preserves: ['the slow relaxation rate k/b to O(m)', 'the sign and monotonicity of the decay'],\n doesNotPreserve: [\n 'the order of the system (two → one)',\n \"the initial condition x'(0), which the reduced model cannot satisfy\",\n 'the fast mode r ≈ −b/m',\n ],\n sideConditions: [\n 'overdamped: m k / b² < 1/4',\n 'the bound holds only outside the boundary layer, t ≥ 5 m/b',\n ],\n bound: makeApproximation({\n K: 1,\n // Sup over the DECLARED range, not the fixture. `2(1+|v0|)m/b` increases\n // in both m and |v0|, and the declared range is `m k/b² < 1/4` with\n // `|v0| ≤ 5`; at the witness normalisation `b = k = 1` that is `m < 1/4`,\n // so the supremum is `2·(1+5)·(1/4) = 3`, approached at the open edge and\n // not attained. The record previously declared `2·(1+5)·1e-3 = 0.012`,\n // the same formula frozen at the ONE fixture mass `m = 1e-3` — true error\n // there is 5.96e-3, but at m = 0.24 it is 5.19e-1, forty times the\n // declared bound.\n // KNOWN LOOSENESS (0.47.0 persona re-test, L9 residual; documented, not\n // tightened): for x0 = 1 the measured sup of |x − x_reduced| over the whole\n // declared range (m < 1/4, |v0| ≤ 5, t ≥ 5m/b) is 0.524, at m ≈ 0.21 and\n // v0 = +5, and it does not grow toward critical damping (0.514 at\n // m = 0.249999). So δ = 3 holds but is 5.7× loose, and it exceeds the unit\n // signal it bounds. A tighter δ needs a bound with its own basis, not a grid\n // maximum; until then `upt path` withholds the point bound\n // (deltaAtBasis below). Independent check: the persona's\n // checks/recheck_047.py and a 115 × 2 grid over (m, ±5).\n delta: dampedOffsetBoundAt({ m: 0.25, b: 1, k: 1, x0: 1, v0: 5 }),\n deltaAt: dampedOffsetBoundAt,\n // Witness W8b supports it numerically for m ∈ {1e-1, 1e-2, 1e-3}; no proof covers it.\n deltaAtBasis: 'numerically-supported',\n norm: 'sup |x − x_reduced| for t ≥ 5 m/b',\n domain: 't ≥ 5 m/b, overdamped, at the witness normalisation b = k = 1',\n horizon: 't ≥ 5 m/b (outside the boundary layer)',\n horizonHolds: (t, params) => {\n const { m, b } = params;\n if (!Number.isFinite(m) || !Number.isFinite(b) || b === 0) return false;\n return t >= (5 * m) / b;\n },\n parameterRange: 'm k / b² < 1/4, |v0| ≤ 5; with b = k = 1 this is m < 1/4',\n limitCharacter: 'singular',\n uniformity: [\n 't ≥ 5 m/b, overdamped, at the witness normalisation b = k = 1',\n 'm k / b² < 1/4, |v0| ≤ 5',\n ],\n }),\n regime: DAMPED_REGIME,\n counterexamples: [\n {\n description:\n \"inside the boundary layer the reduced model's velocity is wrong by O(1): at \" +\n \"t = 0.5 m/b with v0 = 5 the velocity error is 3.6, against x'_red = −1\",\n witness: 'W8b',\n },\n ],\n witnesses: [\n {\n id: 'W8',\n kind: 'numeric',\n test: TEST_FILE,\n tolerance: '|r_slow + k/b| < 2m and |r_fast·m + b| < 2m for m ∈ {1e-1, 1e-2, 1e-3}',\n },\n {\n id: 'W8b',\n kind: 'numeric',\n test: TEST_FILE,\n tolerance:\n \"|x_full − x_red| < 2(1+v0)·m for t ≥ 5 m/b; |x'| error > 1 at 0.5 m/b and < 0.05 at 5 m/b\",\n },\n ],\n citations: [\n \"Kevorkian & Cole, Multiple Scale and Singular Perturbation Methods §2 (Tikhonov's theorem)\",\n 'Verhulst, Methods and Applications of Singular Perturbations §8 (boundary layers)',\n ],\n reviewStatus: 'proposed',\n};\n\n/** The two approximation bridges of this module, in design-note order. @internal */\nexport const LIMIT_BRIDGES: readonly AtlasBridge[] = [AB_PENDULUM_LINEAR, AB_DAMPED_MASSLESS];\n\n/**\n * The two approximation bridges re-registered through `RelationContract`.\n *\n * The union REQUIRES `bound` on an `approximation`, and `ApproximationBound`\n * requires its own machine `horizonHolds`, so these two lines are what turn\n * Sprint 0's doc-comment requirement into a compile-and-throw one. Both bounds\n * are the records' own, measured ones — nothing is restated here.\n *\n * @internal\n */\nconst CONTRACT_PENDULUM_LINEAR: RelationContract =\n relationContractOf(AB_PENDULUM_LINEAR);\n\n/** @internal */\nconst CONTRACT_DAMPED_MASSLESS: RelationContract =\n relationContractOf(AB_DAMPED_MASSLESS);\n\n/** The two limit contracts, in design-note order. @internal */\nexport const LIMIT_CONTRACTS: readonly RelationContract[] = [\n CONTRACT_PENDULUM_LINEAR,\n CONTRACT_DAMPED_MASSLESS,\n];\n"]}
|
|
@@ -1,32 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Dimension constants the oscillator pilot needs
|
|
3
|
-
* files declare MODULE-LOCAL and do not export.
|
|
2
|
+
* Dimension constants the oscillator pilot needs.
|
|
4
3
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Capacitance, inductance, resistance and the spring constant are the named
|
|
5
|
+
* shapes of `src/dimensional/types.ts`, re-exported here so the family's
|
|
6
|
+
* modules keep one import site; `tests/atlas/models.test.ts` asserts they are
|
|
7
|
+
* those objects, not copies. `DAMPING` and `CUBIC_STIFFNESS` are this family's
|
|
8
|
+
* own and are defined here.
|
|
8
9
|
*
|
|
9
10
|
* `FREQUENCY`, `MASS`, `LENGTH`, `VELOCITY` and `ACCELERATION` are importable
|
|
10
|
-
* from `src/dimensional/types.ts` and are NOT
|
|
11
|
+
* from `src/dimensional/types.ts` and are NOT re-exported here.
|
|
11
12
|
*
|
|
12
13
|
* @module atlas/oscillators/dimensions
|
|
13
14
|
*/
|
|
14
15
|
import type { Dimension } from '../../dimensional/types.js';
|
|
15
|
-
/**
|
|
16
|
-
export
|
|
17
|
-
/** henry, `L^2 M T^-2 I^-2` — `src/canonical/entries/electromagnetism.ts:43`. @internal */
|
|
18
|
-
export declare const INDUCTANCE: Dimension;
|
|
19
|
-
/** ohm, `L^2 M T^-3 I^-2` — `src/canonical/entries/electromagnetism.ts:40`. @internal */
|
|
20
|
-
export declare const RESISTANCE: Dimension;
|
|
21
|
-
/**
|
|
22
|
-
* `M T^-2` — defined TWICE, identically, at
|
|
23
|
-
* `src/canonical/entries/mechanics.ts:35` and
|
|
24
|
-
* `src/canonical/entries/fluids-waves.ts:48`. One definition here; the test
|
|
25
|
-
* asserts agreement with both.
|
|
26
|
-
*
|
|
27
|
-
* @internal
|
|
28
|
-
*/
|
|
29
|
-
export declare const SPRING_CONSTANT: Dimension;
|
|
16
|
+
/** Farad, henry, ohm and newton per metre: the named shapes of `dimensional/types.ts`. @internal */
|
|
17
|
+
export { CAPACITANCE, INDUCTANCE, RESISTANCE, SPRING_CONSTANT } from '../../dimensional/types.js';
|
|
30
18
|
/** `M T^-1` — the `b` of `m x'' + b x' + k x = 0`. @internal */
|
|
31
19
|
export declare const DAMPING: Dimension;
|
|
32
20
|
/** `M L^-2 T^-2` — the `β` of `m x'' + k x + β x³ = 0`. @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dimensions.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/dimensions.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dimensions.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/dimensions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D,oGAAoG;AACpG,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElG,gEAAgE;AAChE,eAAO,MAAM,OAAO,EAAE,SAAyB,CAAC;AAEhD,qEAAqE;AACrE,eAAO,MAAM,eAAe,EAAE,SAA0B,CAAC"}
|
|
@@ -1,32 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Dimension constants the oscillator pilot needs
|
|
3
|
-
* files declare MODULE-LOCAL and do not export.
|
|
2
|
+
* Dimension constants the oscillator pilot needs.
|
|
4
3
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Capacitance, inductance, resistance and the spring constant are the named
|
|
5
|
+
* shapes of `src/dimensional/types.ts`, re-exported here so the family's
|
|
6
|
+
* modules keep one import site; `tests/atlas/models.test.ts` asserts they are
|
|
7
|
+
* those objects, not copies. `DAMPING` and `CUBIC_STIFFNESS` are this family's
|
|
8
|
+
* own and are defined here.
|
|
8
9
|
*
|
|
9
10
|
* `FREQUENCY`, `MASS`, `LENGTH`, `VELOCITY` and `ACCELERATION` are importable
|
|
10
|
-
* from `src/dimensional/types.ts` and are NOT
|
|
11
|
+
* from `src/dimensional/types.ts` and are NOT re-exported here.
|
|
11
12
|
*
|
|
12
13
|
* @module atlas/oscillators/dimensions
|
|
13
14
|
*/
|
|
14
15
|
import { dim } from '../../dimensional/ast-builders.js';
|
|
15
|
-
/**
|
|
16
|
-
export
|
|
17
|
-
/** henry, `L^2 M T^-2 I^-2` — `src/canonical/entries/electromagnetism.ts:43`. @internal */
|
|
18
|
-
export const INDUCTANCE = dim(2, 1, -2, -2);
|
|
19
|
-
/** ohm, `L^2 M T^-3 I^-2` — `src/canonical/entries/electromagnetism.ts:40`. @internal */
|
|
20
|
-
export const RESISTANCE = dim(2, 1, -3, -2);
|
|
21
|
-
/**
|
|
22
|
-
* `M T^-2` — defined TWICE, identically, at
|
|
23
|
-
* `src/canonical/entries/mechanics.ts:35` and
|
|
24
|
-
* `src/canonical/entries/fluids-waves.ts:48`. One definition here; the test
|
|
25
|
-
* asserts agreement with both.
|
|
26
|
-
*
|
|
27
|
-
* @internal
|
|
28
|
-
*/
|
|
29
|
-
export const SPRING_CONSTANT = dim(0, 1, -2);
|
|
16
|
+
/** Farad, henry, ohm and newton per metre: the named shapes of `dimensional/types.ts`. @internal */
|
|
17
|
+
export { CAPACITANCE, INDUCTANCE, RESISTANCE, SPRING_CONSTANT } from '../../dimensional/types.js';
|
|
30
18
|
/** `M T^-1` — the `b` of `m x'' + b x' + k x = 0`. @internal */
|
|
31
19
|
export const DAMPING = dim(0, 1, -1);
|
|
32
20
|
/** `M L^-2 T^-2` — the `β` of `m x'' + k x + β x³ = 0`. @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dimensions.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/dimensions.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dimensions.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/dimensions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,mCAAmC,CAAC;AAGxD,oGAAoG;AACpG,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElG,gEAAgE;AAChE,MAAM,CAAC,MAAM,OAAO,GAAc,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAEhD,qEAAqE;AACrE,MAAM,CAAC,MAAM,eAAe,GAAc,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC","sourcesContent":["/**\n * Dimension constants the oscillator pilot needs.\n *\n * Capacitance, inductance, resistance and the spring constant are the named\n * shapes of `src/dimensional/types.ts`, re-exported here so the family's\n * modules keep one import site; `tests/atlas/models.test.ts` asserts they are\n * those objects, not copies. `DAMPING` and `CUBIC_STIFFNESS` are this family's\n * own and are defined here.\n *\n * `FREQUENCY`, `MASS`, `LENGTH`, `VELOCITY` and `ACCELERATION` are importable\n * from `src/dimensional/types.ts` and are NOT re-exported here.\n *\n * @module atlas/oscillators/dimensions\n */\n\nimport { dim } from '../../dimensional/ast-builders.js';\nimport type { Dimension } from '../../dimensional/types.js';\n\n/** Farad, henry, ohm and newton per metre: the named shapes of `dimensional/types.ts`. @internal */\nexport { CAPACITANCE, INDUCTANCE, RESISTANCE, SPRING_CONSTANT } from '../../dimensional/types.js';\n\n/** `M T^-1` — the `b` of `m x'' + b x' + k x = 0`. @internal */\nexport const DAMPING: Dimension = dim(0, 1, -1);\n\n/** `M L^-2 T^-2` — the `β` of `m x'' + k x + β x³ = 0`. @internal */\nexport const CUBIC_STIFFNESS: Dimension = dim(-2, 1, -2);\n"]}
|
|
@@ -12,22 +12,7 @@
|
|
|
12
12
|
*
|
|
13
13
|
* @module atlas/oscillators
|
|
14
14
|
*/
|
|
15
|
-
import type {
|
|
16
|
-
import type { AtlasModel } from '../model.js';
|
|
17
|
-
/**
|
|
18
|
-
* One atlas family: its models, the bridges between them, and the claimed
|
|
19
|
-
* bridges that were refuted. A rejection is evidence, not an omission, so it
|
|
20
|
-
* travels with the family rather than being dropped.
|
|
21
|
-
*
|
|
22
|
-
* @internal
|
|
23
|
-
*/
|
|
24
|
-
export interface AtlasFamily {
|
|
25
|
-
/** `'oscillators'`. */
|
|
26
|
-
readonly family: string;
|
|
27
|
-
readonly models: readonly AtlasModel[];
|
|
28
|
-
readonly bridges: readonly AtlasBridge[];
|
|
29
|
-
readonly rejections: readonly AtlasRejection[];
|
|
30
|
-
}
|
|
15
|
+
import type { AtlasFamily } from '../family.js';
|
|
31
16
|
/**
|
|
32
17
|
* The oscillator pilot family, in design-note order: the two exact
|
|
33
18
|
* equivalences, the two approximations, then the coarse-graining.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAOhD;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAU/B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAgB;IAC5C,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE;QACP,gBAAgB;QAChB,iBAAiB;QACjB,GAAG,aAAa;QAChB,iBAAiB;KAClB;IACD,UAAU,EAAE,gBAAgB;CAC7B,CAAC","sourcesContent":["/**\n * Oscillator-family assembly (Atlas Phase 0, S0.6).\n *\n * Collects the W1/W2 records — the nine models, the five bridges and the one\n * rejection — into the single value the JSON projection serializes. Assembly\n * only: this module defines no physics and no numbers of its own, so a change\n * to a bridge is a change in ONE place.\n *\n * The design note calls this file `family.ts` (§1 layout); the S0.6 brief\n * places it at `oscillators/index.ts`. The brief is followed, because the\n * package's `exports` map and every other barrel in this tree use `index.ts`.\n *\n * @module atlas/oscillators\n */\n\nimport type { AtlasFamily } from '../family.js';\nimport { ATLAS_MODELS } from './models.js';\nimport { BRIDGE_SPRING_LC, BRIDGE_DAMPED_RLC } from './bridges-exact.js';\nimport { LIMIT_BRIDGES } from './bridges-limits.js';\nimport { BRIDGE_CHAIN_WAVE } from './bridges-coarse.js';\nimport { ATLAS_REJECTIONS } from './rejections.js';\n\n/**\n * The oscillator pilot family, in design-note order: the two exact\n * equivalences, the two approximations, then the coarse-graining.\n *\n * @internal\n */\nexport const OSCILLATOR_FAMILY: AtlasFamily = {\n family: 'oscillators',\n models: ATLAS_MODELS,\n bridges: [\n BRIDGE_SPRING_LC,\n BRIDGE_DAMPED_RLC,\n ...LIMIT_BRIDGES,\n BRIDGE_CHAIN_WAVE,\n ],\n rejections: ATLAS_REJECTIONS,\n};\n"]}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* bridges that had none: W7 (`ab-pendulum-linear`), W8b (`ab-damped-massless`)
|
|
4
4
|
* and W9 (`ab-chain-wave`).
|
|
5
5
|
*
|
|
6
|
-
* Each one INTEGRATES the premise model's own equation with
|
|
7
|
-
* `solveODESystem`
|
|
6
|
+
* Each one INTEGRATES the premise model's own equation with `rk4Trajectory`
|
|
7
|
+
* (MathTS `solveODESystem` with `dt`, every state kept) and reads the
|
|
8
8
|
* claimed quantity off the motion. None evaluates the closed form its record
|
|
9
9
|
* states, so a test comparing the measurement with that closed form compares
|
|
10
10
|
* two methods, not one method with itself.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limit-witnesses.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/limit-witnesses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH;;;;;GAKG;AACH,eAAO,MAAM,UAAU;aAAK,MAAM,EAAE,GAAG;aAAE,cAAc,EAAE,KAAM;CAAW,CAAC;AAE3E;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,GAAE,MAAkC,GAAG,MAAM,CAKrH;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW;aAAK,CAAC,EAAE,IAAI;aAAE,CAAC,EAAE,CAAC;aAAE,CAAC,EAAE,CAAC;aAAE,EAAE,EAAE,CAAC;aAAE,EAAE,EAAE,CAAC;aAAE,IAAI,EAAE,EAAE;aAAE,YAAY,EAAE,EAAE;CAAW,CAAC;AAEtG;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,CAAC,EAAE,MAAM,EACT,OAAO,GAAE;IAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAAgB,GAChK,MAAM,
|
|
1
|
+
{"version":3,"file":"limit-witnesses.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/limit-witnesses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH;;;;;GAKG;AACH,eAAO,MAAM,UAAU;aAAK,MAAM,EAAE,GAAG;aAAE,cAAc,EAAE,KAAM;CAAW,CAAC;AAE3E;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,GAAE,MAAkC,GAAG,MAAM,CAKrH;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW;aAAK,CAAC,EAAE,IAAI;aAAE,CAAC,EAAE,CAAC;aAAE,CAAC,EAAE,CAAC;aAAE,EAAE,EAAE,CAAC;aAAE,EAAE,EAAE,CAAC;aAAE,IAAI,EAAE,EAAE;aAAE,YAAY,EAAE,EAAE;CAAW,CAAC;AAEtG;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,CAAC,EAAE,MAAM,EACT,OAAO,GAAE;IAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAAgB,GAChK,MAAM,CAcR;AAED;;;;;;GAMG;AACH,eAAO,MAAM,UAAU;aAAK,MAAM,EAAE,EAAE;aAAE,KAAK,EAAE,CAAC;aAAE,CAAC,EAAE,CAAC;aAAE,CAAC,EAAE,CAAC;aAAE,gBAAgB,EAAE,IAAI;CAAW,CAAC;AAEhG;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;CAAe,GAC1H,MAAM,CAsDR"}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* bridges that had none: W7 (`ab-pendulum-linear`), W8b (`ab-damped-massless`)
|
|
4
4
|
* and W9 (`ab-chain-wave`).
|
|
5
5
|
*
|
|
6
|
-
* Each one INTEGRATES the premise model's own equation with
|
|
7
|
-
* `solveODESystem`
|
|
6
|
+
* Each one INTEGRATES the premise model's own equation with `rk4Trajectory`
|
|
7
|
+
* (MathTS `solveODESystem` with `dt`, every state kept) and reads the
|
|
8
8
|
* claimed quantity off the motion. None evaluates the closed form its record
|
|
9
9
|
* states, so a test comparing the measurement with that closed form compares
|
|
10
10
|
* two methods, not one method with itself.
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* @module atlas/oscillators/limit-witnesses
|
|
13
13
|
* @internal
|
|
14
14
|
*/
|
|
15
|
-
import {
|
|
15
|
+
import { rk4Trajectory } from '../../numerical/rk4-trajectory.js';
|
|
16
16
|
import { quarterPeriod } from './norm-transport-witness.js';
|
|
17
17
|
/**
|
|
18
18
|
* W7: the pendulum θ'' = −ω0² sin θ at ω0 = 1, released from rest; the
|
|
@@ -59,10 +59,10 @@ export function measureMasslessOffset(m, fixture = W8B_FIXTURE) {
|
|
|
59
59
|
const h = m / stepsPerMass;
|
|
60
60
|
const layerSteps = Math.ceil((5 * stepsPerMass) / b);
|
|
61
61
|
const steps = Math.ceil(tEnd / h);
|
|
62
|
-
const
|
|
62
|
+
const states = rk4Trajectory((_t, y) => [y[1], -(b * y[1] + k * y[0]) / m], [x0, v0], 0, steps * h, steps);
|
|
63
63
|
let sup = 0;
|
|
64
64
|
for (let i = layerSteps; i <= steps; i++) {
|
|
65
|
-
const x =
|
|
65
|
+
const x = states[i]?.[0];
|
|
66
66
|
if (x === undefined)
|
|
67
67
|
return Number.NaN;
|
|
68
68
|
sup = Math.max(sup, Math.abs(x - x0 * Math.exp((-k / b) * i * h)));
|
|
@@ -98,21 +98,24 @@ export function measureChainDispersionError(masses, fixture = W9_FIXTURE) {
|
|
|
98
98
|
return out;
|
|
99
99
|
};
|
|
100
100
|
const h = 1 / stepsPerUnitTime;
|
|
101
|
-
|
|
101
|
+
const start = [
|
|
102
102
|
...Float64Array.from({ length: N }, (_, n) => Math.cos((2 * Math.PI * n) / N)),
|
|
103
103
|
...new Array(N).fill(0),
|
|
104
104
|
];
|
|
105
105
|
// Twice the lattice quarter period π/(4√(κ/m) sin(π/N)): the crossing is inside.
|
|
106
106
|
const maxSteps = Math.ceil(((2 * Math.PI) / (4 * Math.sqrt(w) * Math.sin(Math.PI / N))) * stepsPerUnitTime);
|
|
107
|
+
// One continuous run; the system ignores t, so the states are those of a
|
|
108
|
+
// step-by-step loop, and the first crossing of u_0 is read off them.
|
|
109
|
+
const states = rk4Trajectory((_t, y) => {
|
|
110
|
+
const pos = Float64Array.from(y.slice(0, N));
|
|
111
|
+
const vel = y.slice(N);
|
|
112
|
+
const a = accel(pos);
|
|
113
|
+
return [...vel, ...a];
|
|
114
|
+
}, start, 0, maxSteps * h, maxSteps);
|
|
107
115
|
for (let i = 0; i < maxSteps; i++) {
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
const a = accel(pos);
|
|
112
|
-
return [...vel, ...a];
|
|
113
|
-
}, state, [0, h], { dt: h });
|
|
114
|
-
const next = sol.y[sol.y.length - 1];
|
|
115
|
-
if (next === undefined)
|
|
116
|
+
const state = states[i];
|
|
117
|
+
const next = states[i + 1];
|
|
118
|
+
if (state === undefined || next === undefined)
|
|
116
119
|
return Number.NaN;
|
|
117
120
|
const u0 = state[0];
|
|
118
121
|
const nu0 = next[0];
|
|
@@ -130,7 +133,6 @@ export function measureChainDispersionError(masses, fixture = W9_FIXTURE) {
|
|
|
130
133
|
const q = (2 * Math.PI) / (N * a);
|
|
131
134
|
return 1 - omega / (c * q);
|
|
132
135
|
}
|
|
133
|
-
state = next.slice();
|
|
134
136
|
}
|
|
135
137
|
return Number.NaN;
|
|
136
138
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limit-witnesses.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/limit-witnesses.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"limit-witnesses.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/limit-witnesses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,EAAW,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAc,EAAE,cAAc,GAAW,UAAU,CAAC,cAAc;IAC3G,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC;IACzD,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,cAAc,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC;IACpG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAW,CAAC;AAEtG;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,CAAS,EACT,OAAO,GAA+I,WAAW;IAEjK,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IACrD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC;IAC5E,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;IAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9G,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC;QACvC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAW,CAAC;AAEhG;;;;;;;GAOG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAAc,EACd,OAAO,GAA0G,UAAU;IAE3H,MAAM,CAAC,GAAG,MAAM,CAAC;IACjB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC;IACrD,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;IAClD,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IACpB,MAAM,KAAK,GAAG,CAAC,CAAe,EAAgB,EAAE;QAC9C,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC;QAC7F,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IACF,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC;IAC/B,MAAM,KAAK,GAAG;QACZ,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9E,GAAG,IAAI,KAAK,CAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;KAChC,CAAC;IACF,iFAAiF;IACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC;IAC5G,yEAAyE;IACzE,qEAAqE;IACrE,MAAM,MAAM,GAAG,aAAa,CAC1B,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QACR,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACxB,CAAC,EACD,KAAK,EACL,CAAC,EACD,QAAQ,GAAG,CAAC,EACZ,QAAQ,CACT,CAAC;IACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3B,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC;QACjE,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACrB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACrB,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;YACpD,MAAM,CAAC,GAAG,CAAC,CAAS,EAAU,EAAE,CAC9B,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;YACjI,MAAM,EAAE,GAAG,CAAC,CAAS,EAAU,EAAE,CAC/B,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YACrH,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;YACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC;AACpB,CAAC","sourcesContent":["/**\n * The measurements behind the in-process witnesses of the three oscillator\n * bridges that had none: W7 (`ab-pendulum-linear`), W8b (`ab-damped-massless`)\n * and W9 (`ab-chain-wave`).\n *\n * Each one INTEGRATES the premise model's own equation with `rk4Trajectory`\n * (MathTS `solveODESystem` with `dt`, every state kept) and reads the\n * claimed quantity off the motion. None evaluates the closed form its record\n * states, so a test comparing the measurement with that closed form compares\n * two methods, not one method with itself.\n *\n * @module atlas/oscillators/limit-witnesses\n * @internal\n */\n\nimport { rk4Trajectory } from '../../numerical/rk4-trajectory.js';\nimport { quarterPeriod } from './norm-transport-witness.js';\n\n/**\n * W7: the pendulum θ'' = −ω0² sin θ at ω0 = 1, released from rest; the\n * amplitude is `theta0 / resolution`, so refinement moves into the θ0 → 0 limit.\n *\n * @internal\n */\nexport const W7_FIXTURE = { theta0: 0.4, stepsPerPeriod: 16_384 } as const;\n\n/**\n * T/T0 of the pendulum released from rest at `theta0`, measured by RK4 with\n * `stepsPerPeriod` steps per linear period T0 = 2π (ω0 = 1).\n *\n * @returns NaN unless 0 < theta0 < π.\n * @internal\n */\nexport function measurePendulumPeriodRatio(theta0: number, stepsPerPeriod: number = W7_FIXTURE.stepsPerPeriod): number {\n if (!(theta0 > 0 && theta0 < Math.PI)) return Number.NaN;\n const T0 = 2 * Math.PI;\n const quarter = quarterPeriod((x) => -Math.sin(x), theta0, T0 / stepsPerPeriod, 2 * stepsPerPeriod);\n return (4 * quarter) / T0;\n}\n\n/**\n * W8b: the damped spring m x'' + b x' + k x = 0 at the record's witness\n * normalisation b = k = x0 = 1, with v0 = 5 (the edge of |v0| ≤ 5). The mass is\n * `m / resolution`. The RK4 step is m/20, so the fast rate b/m is resolved at\n * every mass, and 5m/b is a whole number of steps.\n *\n * @internal\n */\nexport const W8B_FIXTURE = { m: 0.02, b: 1, k: 1, x0: 1, v0: 5, tEnd: 10, stepsPerMass: 20 } as const;\n\n/**\n * sup |x(t) − x0 e^(−kt/b)| over the RK4 grid on t ∈ [5m/b, tEnd], x from the\n * full second-order model: the norm of `ab-damped-massless`'s bound. The\n * window stops at `tEnd`; both motions there are below x0·e^(−k·tEnd/b).\n *\n * @returns NaN unless m, b and k are positive and finite.\n * @internal\n */\nexport function measureMasslessOffset(\n m: number,\n fixture: { readonly b: number; readonly k: number; readonly x0: number; readonly v0: number; readonly tEnd: number; readonly stepsPerMass: number } = W8B_FIXTURE,\n): number {\n const { b, k, x0, v0, tEnd, stepsPerMass } = fixture;\n if (![m, b, k].every((v) => Number.isFinite(v) && v > 0)) return Number.NaN;\n const h = m / stepsPerMass;\n const layerSteps = Math.ceil((5 * stepsPerMass) / b);\n const steps = Math.ceil(tEnd / h);\n const states = rk4Trajectory((_t, y) => [y[1]!, -(b * y[1]! + k * y[0]!) / m], [x0, v0], 0, steps * h, steps);\n let sup = 0;\n for (let i = layerSteps; i <= steps; i++) {\n const x = states[i]?.[0];\n if (x === undefined) return Number.NaN;\n sup = Math.max(sup, Math.abs(x - x0 * Math.exp((-k / b) * i * h)));\n }\n return sup;\n}\n\n/**\n * W9: a ring of `masses · resolution` masses, m u_n'' = κ(u_{n+1} − 2u_n + u_{n−1}),\n * started at rest in its longest mode u_n = cos(2π n/N). Refinement doubles N, so\n * qa = 2π/N halves.\n *\n * @internal\n */\nexport const W9_FIXTURE = { masses: 16, kappa: 1, m: 1, a: 1, stepsPerUnitTime: 1000 } as const;\n\n/**\n * 1 − ω/(c q) on a ring of `masses` masses in its longest mode, with ω measured\n * from the first zero of u_0(t) = cos ωt (RK4, cubic Hermite and Newton on the\n * bracketing step) and c = a √(κ/m), q = 2π/(N a).\n *\n * @returns NaN for fewer than 3 masses or no crossing.\n * @internal\n */\nexport function measureChainDispersionError(\n masses: number,\n fixture: { readonly kappa: number; readonly m: number; readonly a: number; readonly stepsPerUnitTime: number } = W9_FIXTURE,\n): number {\n const N = masses;\n if (!Number.isInteger(N) || N < 3) return Number.NaN;\n const { kappa, m, a, stepsPerUnitTime } = fixture;\n const w = kappa / m;\n const accel = (u: Float64Array): Float64Array => {\n const out = new Float64Array(N);\n for (let n = 0; n < N; n++) out[n] = w * (u[(n + 1) % N]! - 2 * u[n]! + u[(n - 1 + N) % N]!);\n return out;\n };\n const h = 1 / stepsPerUnitTime;\n const start = [\n ...Float64Array.from({ length: N }, (_, n) => Math.cos((2 * Math.PI * n) / N)),\n ...new Array<number>(N).fill(0),\n ];\n // Twice the lattice quarter period π/(4√(κ/m) sin(π/N)): the crossing is inside.\n const maxSteps = Math.ceil(((2 * Math.PI) / (4 * Math.sqrt(w) * Math.sin(Math.PI / N))) * stepsPerUnitTime);\n // One continuous run; the system ignores t, so the states are those of a\n // step-by-step loop, and the first crossing of u_0 is read off them.\n const states = rk4Trajectory(\n (_t, y) => {\n const pos = Float64Array.from(y.slice(0, N));\n const vel = y.slice(N);\n const a = accel(pos);\n return [...vel, ...a];\n },\n start,\n 0,\n maxSteps * h,\n maxSteps,\n );\n for (let i = 0; i < maxSteps; i++) {\n const state = states[i];\n const next = states[i + 1];\n if (state === undefined || next === undefined) return Number.NaN;\n const u0 = state[0]!;\n const nu0 = next[0]!;\n const v0 = state[N]!;\n const nv0 = next[N]!;\n if (u0 > 0 && nu0 <= 0) {\n const [p0, m0, p1, m1] = [u0, v0 * h, nu0, nv0 * h];\n const p = (s: number): number =>\n (2 * s ** 3 - 3 * s ** 2 + 1) * p0 + (s ** 3 - 2 * s ** 2 + s) * m0 + (-2 * s ** 3 + 3 * s ** 2) * p1 + (s ** 3 - s ** 2) * m1;\n const dp = (s: number): number =>\n (6 * s ** 2 - 6 * s) * p0 + (3 * s ** 2 - 4 * s + 1) * m0 + (-6 * s ** 2 + 6 * s) * p1 + (3 * s ** 2 - 2 * s) * m1;\n let s = p0 / (p0 - p1);\n for (let j = 0; j < 8; j++) s -= p(s) / dp(s);\n const omega = Math.PI / (2 * (i + s) * h);\n const c = a * Math.sqrt(w);\n const q = (2 * Math.PI) / (N * a);\n return 1 - omega / (c * q);\n }\n }\n return Number.NaN;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/models.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AASH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/models.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AASH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAyB9C,6EAA6E;AAC7E,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAmH7C,CAAC;AAIF,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAIpD"}
|
|
@@ -19,18 +19,14 @@
|
|
|
19
19
|
* @module atlas/oscillators/models
|
|
20
20
|
*/
|
|
21
21
|
import { ACCELERATION, LENGTH, MASS, VELOCITY, } from '../../dimensional/types.js';
|
|
22
|
-
import {
|
|
22
|
+
import { makeRegime } from '../regime.js';
|
|
23
23
|
import { CAPACITANCE, CUBIC_STIFFNESS, DAMPING, INDUCTANCE, RESISTANCE, SPRING_CONSTANT, } from './dimensions.js';
|
|
24
24
|
const FAMILY = 'oscillators';
|
|
25
25
|
function model(spec) {
|
|
26
26
|
return {
|
|
27
27
|
...spec,
|
|
28
28
|
family: FAMILY,
|
|
29
|
-
regime:
|
|
30
|
-
family: FAMILY,
|
|
31
|
-
inequalities: [],
|
|
32
|
-
groupDefinitions: deriveRegimeGroups(FAMILY, spec.parameters, spec.dimensionlessInputs),
|
|
33
|
-
},
|
|
29
|
+
regime: makeRegime(FAMILY, spec.parameters, spec.dimensionlessInputs, []),
|
|
34
30
|
};
|
|
35
31
|
}
|
|
36
32
|
/** The nine Phase 0 oscillator models, in design-note §3 order. @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/models.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EACL,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,QAAQ,GACT,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/models.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The nine oscillator models of design note §3.\n *\n * Each model's `regime` carries the π-groups `deriveRegimeGroups` produces\n * from its own parameters and dimensionless inputs. `inequalities` is EMPTY\n * on every model: Phase 0 states its inequalities on the BRIDGES (which carry\n * the regime of validity), and the design note fixes no per-model inequality.\n * An invented one would be a fabricated constraint, so none is written.\n *\n * The Phase 3 fields `boundaryData`, `initialData` and `symmetryGroup`\n * (`../model.ts`) are ABSENT on all nine for the same reason `inequalities`\n * is empty: no source records them for these ODE models, and an absent field\n * says \"not recorded\" where a present empty one would claim \"there are none\".\n *\n * `canonicalRefs` are restricted to ids that exist in `CANONICAL_EQUATIONS`;\n * `tests/atlas/models.test.ts` resolves every one of them, and a new one needs\n * a numeric check in `tests/atlas/canonical-links.test.ts`.\n *\n * @module atlas/oscillators/models\n */\n\nimport {\n ACCELERATION,\n LENGTH,\n MASS,\n VELOCITY,\n} from '../../dimensional/types.js';\nimport { makeRegime } from '../regime.js';\nimport type { AtlasModel } from '../model.js';\nimport type { DimensionalVariable } from '../../dimensional/buckingham.js';\nimport {\n CAPACITANCE,\n CUBIC_STIFFNESS,\n DAMPING,\n INDUCTANCE,\n RESISTANCE,\n SPRING_CONSTANT,\n} from './dimensions.js';\n\nconst FAMILY = 'oscillators';\n\nfunction model(\n spec: Omit<AtlasModel, 'family' | 'regime'> & {\n readonly parameters: readonly DimensionalVariable[];\n },\n): AtlasModel {\n return {\n ...spec,\n family: FAMILY,\n regime: makeRegime(FAMILY, spec.parameters, spec.dimensionlessInputs, []),\n };\n}\n\n/** The nine Phase 0 oscillator models, in design-note §3 order. @internal */\nexport const ATLAS_MODELS: readonly AtlasModel[] = [\n model({\n id: 'model-spring',\n stateSpace: '(x, x′) ∈ ℝ²',\n dynamics: 'm x″ + k x = 0',\n observables: ['x', 'x′', 'energy'],\n parameters: [\n { name: 'm', dim: MASS },\n { name: 'k', dim: SPRING_CONSTANT },\n ],\n dimensionlessInputs: [],\n canonicalRefs: [\n 'CE-simple-harmonic-frequency',\n 'CE-spring-potential-energy',\n 'CE-oscillator-energy',\n ],\n }),\n model({\n id: 'model-lc',\n stateSpace: '(q, q′) ∈ ℝ²',\n dynamics: 'L q″ + q/C = 0',\n observables: ['q', 'q′', 'energy'],\n parameters: [\n { name: 'L', dim: INDUCTANCE },\n { name: 'C', dim: CAPACITANCE },\n ],\n dimensionlessInputs: [],\n canonicalRefs: ['CE-lc-resonance', 'CE-capacitor-energy'],\n }),\n model({\n id: 'model-damped-spring',\n stateSpace: '(x, x′) ∈ ℝ²',\n dynamics: 'm x″ + b x′ + k x = 0',\n observables: ['x', 'x′'],\n parameters: [\n { name: 'm', dim: MASS },\n { name: 'b', dim: DAMPING },\n { name: 'k', dim: SPRING_CONSTANT },\n ],\n dimensionlessInputs: [],\n canonicalRefs: [],\n }),\n model({\n id: 'model-rlc',\n stateSpace: '(q, q′) ∈ ℝ²',\n dynamics: 'L q″ + R q′ + q/C = 0',\n observables: ['q', 'q′'],\n parameters: [\n { name: 'L', dim: INDUCTANCE },\n { name: 'R', dim: RESISTANCE },\n { name: 'C', dim: CAPACITANCE },\n ],\n dimensionlessInputs: [],\n canonicalRefs: [],\n }),\n model({\n id: 'model-pendulum',\n stateSpace: '(θ, θ′) ∈ S¹ × ℝ',\n dynamics: 'θ″ + (g/ℓ) sin θ = 0',\n observables: ['theta', 'theta′', 'period'],\n parameters: [\n { name: 'g', dim: ACCELERATION },\n { name: 'ell', dim: LENGTH },\n ],\n dimensionlessInputs: ['theta0'],\n canonicalRefs: ['CE-pendulum-period'],\n }),\n model({\n id: 'model-chain',\n stateSpace: '(u_n, u_n′) ∈ ℝ^N × ℝ^N',\n dynamics: 'm u_n″ = κ(u_{n+1} − 2u_n + u_{n−1})',\n observables: ['u_n', 'u_n′', 'dispersion'],\n parameters: [\n { name: 'm', dim: MASS },\n { name: 'kappa', dim: SPRING_CONSTANT },\n { name: 'a', dim: LENGTH },\n ],\n dimensionlessInputs: ['qa'],\n canonicalRefs: [],\n }),\n model({\n id: 'model-wave-1d',\n stateSpace: 'u(x, t), a field on ℝ × ℝ',\n dynamics: 'u_tt = c² u_xx',\n observables: ['u', 'u_t', 'dispersion'],\n parameters: [{ name: 'c', dim: VELOCITY }],\n dimensionlessInputs: [],\n canonicalRefs: ['CE-wave-speed'],\n }),\n model({\n id: 'model-cubic-spring',\n stateSpace: '(x, x′) ∈ ℝ²',\n dynamics: 'm x″ + k x + β x³ = 0',\n observables: ['x', 'x′', 'amplitude-dependent period'],\n parameters: [\n { name: 'm', dim: MASS },\n { name: 'k', dim: SPRING_CONSTANT },\n { name: 'beta', dim: CUBIC_STIFFNESS },\n { name: 'x0', dim: LENGTH },\n ],\n dimensionlessInputs: [],\n canonicalRefs: [],\n }),\n model({\n id: 'model-first-order',\n stateSpace: 'x ∈ ℝ',\n dynamics: 'b x′ + k x = 0',\n observables: ['x'],\n parameters: [\n { name: 'b', dim: DAMPING },\n { name: 'k', dim: SPRING_CONSTANT },\n ],\n dimensionlessInputs: [],\n canonicalRefs: [],\n }),\n];\n\nconst BY_ID: ReadonlyMap<string, AtlasModel> = new Map(ATLAS_MODELS.map((m) => [m.id, m]));\n\n/** Look up a model by id, throwing on an unknown one. @internal */\nexport function getAtlasModel(id: string): AtlasModel {\n const found = BY_ID.get(id);\n if (found === undefined) throw new Error(`unknown atlas model id: ${id}`);\n return found;\n}\n"]}
|