universal-physics-tensor 0.47.1 → 1.0.1
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/LICENSE +21 -21
- package/README.md +396 -383
- package/bin/upt.mjs +7 -1
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts +108 -0
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -0
- package/dist/atlas/benchmark/hybrid-retrieval.js +241 -0
- package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -0
- package/dist/atlas/catalog-formal-ref.d.ts +24 -0
- package/dist/atlas/catalog-formal-ref.d.ts.map +1 -0
- package/dist/atlas/catalog-formal-ref.js +36 -0
- package/dist/atlas/catalog-formal-ref.js.map +1 -0
- package/dist/atlas/composition-table.d.ts +11 -46
- package/dist/atlas/composition-table.d.ts.map +1 -1
- package/dist/atlas/composition-table.js +7 -124
- package/dist/atlas/composition-table.js.map +1 -1
- package/dist/atlas/conventions.d.ts +4 -58
- package/dist/atlas/conventions.d.ts.map +1 -1
- package/dist/atlas/conventions.js +3 -88
- package/dist/atlas/conventions.js.map +1 -1
- package/dist/atlas/derive-evidence.d.ts +50 -3
- package/dist/atlas/derive-evidence.d.ts.map +1 -1
- package/dist/atlas/derive-evidence.js +73 -4
- package/dist/atlas/derive-evidence.js.map +1 -1
- package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/diffusion/bridges-closure.js +5 -1
- package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
- package/dist/atlas/index.d.ts +9 -7
- package/dist/atlas/index.d.ts.map +1 -1
- package/dist/atlas/index.js +6 -5
- package/dist/atlas/index.js.map +1 -1
- package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-exact.js +6 -0
- package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.d.ts +2 -0
- package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.js +11 -19
- package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
- package/dist/atlas/oscillators/limit-witnesses.d.ts +93 -0
- package/dist/atlas/oscillators/limit-witnesses.d.ts.map +1 -0
- package/dist/atlas/oscillators/limit-witnesses.js +152 -0
- package/dist/atlas/oscillators/limit-witnesses.js.map +1 -0
- package/dist/atlas/oscillators/models.d.ts +2 -1
- package/dist/atlas/oscillators/models.d.ts.map +1 -1
- package/dist/atlas/oscillators/models.js +4 -3
- package/dist/atlas/oscillators/models.js.map +1 -1
- package/dist/atlas/oscillators/norm-transport-witness.d.ts +37 -0
- package/dist/atlas/oscillators/norm-transport-witness.d.ts.map +1 -0
- package/dist/atlas/oscillators/norm-transport-witness.js +58 -0
- package/dist/atlas/oscillators/norm-transport-witness.js.map +1 -0
- package/dist/atlas/oscillators/norm-transport.d.ts +44 -0
- package/dist/atlas/oscillators/norm-transport.d.ts.map +1 -0
- package/dist/atlas/oscillators/norm-transport.js +66 -0
- package/dist/atlas/oscillators/norm-transport.js.map +1 -0
- package/dist/atlas/oscillators/norms.d.ts +11 -0
- package/dist/atlas/oscillators/norms.d.ts.map +1 -0
- package/dist/atlas/oscillators/norms.js +11 -0
- package/dist/atlas/oscillators/norms.js.map +1 -0
- package/dist/atlas/oscillators/pendulum-motion.d.ts +38 -0
- package/dist/atlas/oscillators/pendulum-motion.d.ts.map +1 -0
- package/dist/atlas/oscillators/pendulum-motion.js +122 -0
- package/dist/atlas/oscillators/pendulum-motion.js.map +1 -0
- package/dist/atlas/oscillators/phase-carriage.d.ts +38 -0
- package/dist/atlas/oscillators/phase-carriage.d.ts.map +1 -0
- package/dist/atlas/oscillators/phase-carriage.js +96 -0
- package/dist/atlas/oscillators/phase-carriage.js.map +1 -0
- package/dist/atlas/oscillators/phase-translation.d.ts +46 -0
- package/dist/atlas/oscillators/phase-translation.d.ts.map +1 -0
- package/dist/atlas/oscillators/phase-translation.js +178 -0
- package/dist/atlas/oscillators/phase-translation.js.map +1 -0
- package/dist/atlas/oscillators/position-translation.d.ts +59 -0
- package/dist/atlas/oscillators/position-translation.d.ts.map +1 -0
- package/dist/atlas/oscillators/position-translation.js +254 -0
- package/dist/atlas/oscillators/position-translation.js.map +1 -0
- package/dist/atlas/path-bound.d.ts +126 -9
- package/dist/atlas/path-bound.d.ts.map +1 -1
- package/dist/atlas/path-bound.js +372 -23
- package/dist/atlas/path-bound.js.map +1 -1
- package/dist/atlas/physjs-ref.d.ts +112 -0
- package/dist/atlas/physjs-ref.d.ts.map +1 -0
- package/dist/atlas/physjs-ref.js +842 -0
- package/dist/atlas/physjs-ref.js.map +1 -0
- package/dist/atlas/regime.d.ts +12 -136
- package/dist/atlas/regime.d.ts.map +1 -1
- package/dist/atlas/regime.js +8 -254
- package/dist/atlas/regime.js.map +1 -1
- package/dist/atlas/serialize.d.ts.map +1 -1
- package/dist/atlas/serialize.js +25 -0
- package/dist/atlas/serialize.js.map +1 -1
- package/dist/atlas/translation-registry.d.ts +22 -0
- package/dist/atlas/translation-registry.d.ts.map +1 -0
- package/dist/atlas/translation-registry.js +31 -0
- package/dist/atlas/translation-registry.js.map +1 -0
- package/dist/atlas/translation.d.ts +116 -0
- package/dist/atlas/translation.d.ts.map +1 -0
- package/dist/atlas/translation.js +34 -0
- package/dist/atlas/translation.js.map +1 -0
- package/dist/atlas/types.d.ts +74 -240
- package/dist/atlas/types.d.ts.map +1 -1
- package/dist/atlas/types.js +5 -37
- 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 +4 -0
- 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 +3 -0
- package/dist/atlas/waves/bridges.js.map +1 -1
- package/dist/atlas/waves/models.js +1 -1
- package/dist/atlas/waves/models.js.map +1 -1
- package/dist/atlas/witness-dominance.d.ts +50 -0
- package/dist/atlas/witness-dominance.d.ts.map +1 -0
- package/dist/atlas/witness-dominance.js +86 -0
- package/dist/atlas/witness-dominance.js.map +1 -0
- package/dist/atlas/witness-specs.d.ts +30 -0
- package/dist/atlas/witness-specs.d.ts.map +1 -1
- package/dist/atlas/witness-specs.js +107 -0
- package/dist/atlas/witness-specs.js.map +1 -1
- package/dist/bridges/be53-yang-mills-confrontation.d.ts +81 -0
- package/dist/bridges/be53-yang-mills-confrontation.d.ts.map +1 -0
- package/dist/bridges/be53-yang-mills-confrontation.js +110 -0
- package/dist/bridges/be53-yang-mills-confrontation.js.map +1 -0
- package/dist/bridges/confrontations.d.ts +1 -1
- package/dist/bridges/confrontations.d.ts.map +1 -1
- package/dist/bridges/confrontations.js +291 -3
- package/dist/bridges/confrontations.js.map +1 -1
- package/dist/bridges/equations/be-13-einstein-trace.d.ts +2 -3
- package/dist/bridges/equations/be-13-einstein-trace.d.ts.map +1 -1
- package/dist/bridges/equations/be-13-einstein-trace.js +2 -3
- package/dist/bridges/equations/be-13-einstein-trace.js.map +1 -1
- package/dist/bridges/equations/be-38-mond.d.ts +7 -5
- package/dist/bridges/equations/be-38-mond.d.ts.map +1 -1
- package/dist/bridges/equations/be-38-mond.js +7 -5
- package/dist/bridges/equations/be-38-mond.js.map +1 -1
- package/dist/bridges/equations/be-53-yang-mills-beta.d.ts +21 -0
- package/dist/bridges/equations/be-53-yang-mills-beta.d.ts.map +1 -1
- package/dist/bridges/equations/be-53-yang-mills-beta.js +12 -0
- package/dist/bridges/equations/be-53-yang-mills-beta.js.map +1 -1
- package/dist/bridges/evaluator-inputs.d.ts +21 -0
- package/dist/bridges/evaluator-inputs.d.ts.map +1 -0
- package/dist/bridges/evaluator-inputs.js +75 -0
- package/dist/bridges/evaluator-inputs.js.map +1 -0
- package/dist/bridges/evaluators.d.ts +38 -0
- package/dist/bridges/evaluators.d.ts.map +1 -1
- package/dist/bridges/evaluators.js +41 -15
- package/dist/bridges/evaluators.js.map +1 -1
- package/dist/bridges/gravitational-lensing.d.ts +1 -1
- package/dist/bridges/gravitational-lensing.js +1 -1
- package/dist/bridges/index.d.ts +1 -1
- package/dist/bridges/index.d.ts.map +1 -1
- package/dist/bridges/index.js +13 -13
- package/dist/bridges/index.js.map +1 -1
- package/dist/bridges/observations/types.d.ts +110 -2
- package/dist/bridges/observations/types.d.ts.map +1 -1
- package/dist/bridges/observations/types.js +29 -0
- package/dist/bridges/observations/types.js.map +1 -1
- package/dist/bridges/perihelion-precession.d.ts +1 -1
- package/dist/bridges/perihelion-precession.js +1 -1
- package/dist/canonical/canonical-equation.d.ts +1 -1
- package/dist/canonical/canonical-equation.d.ts.map +1 -1
- package/dist/canonical/entries/atomic.d.ts.map +1 -1
- package/dist/canonical/entries/atomic.js +32 -10
- package/dist/canonical/entries/atomic.js.map +1 -1
- package/dist/canonical/entries/dimensional-classics.js +2 -2
- package/dist/canonical/entries/dimensional-classics.js.map +1 -1
- package/dist/canonical/entries/mechanics.d.ts.map +1 -1
- package/dist/canonical/entries/mechanics.js +10 -6
- package/dist/canonical/entries/mechanics.js.map +1 -1
- package/dist/canonical/entries/relativity.d.ts.map +1 -1
- package/dist/canonical/entries/relativity.js +41 -8
- package/dist/canonical/entries/relativity.js.map +1 -1
- package/dist/canonical/entries/thermo-nuclear-cosmo.js +5 -5
- package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
- package/dist/canonical/linkage.d.ts.map +1 -1
- package/dist/canonical/linkage.js +14 -8
- package/dist/canonical/linkage.js.map +1 -1
- package/dist/canonical/normal-form.d.ts +17 -0
- package/dist/canonical/normal-form.d.ts.map +1 -1
- package/dist/canonical/normal-form.js +21 -4
- package/dist/canonical/normal-form.js.map +1 -1
- package/dist/cases/brownian-sphere.d.ts +68 -0
- package/dist/cases/brownian-sphere.d.ts.map +1 -0
- package/dist/cases/brownian-sphere.js +353 -0
- package/dist/cases/brownian-sphere.js.map +1 -0
- package/dist/cases/damped-resonator.d.ts +23 -0
- package/dist/cases/damped-resonator.d.ts.map +1 -0
- package/dist/cases/damped-resonator.js +224 -0
- package/dist/cases/damped-resonator.js.map +1 -0
- package/dist/cases/index.d.ts +11 -0
- package/dist/cases/index.d.ts.map +1 -0
- package/dist/cases/index.js +29 -0
- package/dist/cases/index.js.map +1 -0
- package/dist/cases/kepler-rv.d.ts +13 -0
- package/dist/cases/kepler-rv.d.ts.map +1 -0
- package/dist/cases/kepler-rv.js +168 -0
- package/dist/cases/kepler-rv.js.map +1 -0
- package/dist/cases/lumped-cooling.d.ts +46 -0
- package/dist/cases/lumped-cooling.d.ts.map +1 -0
- package/dist/cases/lumped-cooling.js +261 -0
- package/dist/cases/lumped-cooling.js.map +1 -0
- package/dist/cases/quadrature.d.ts +14 -0
- package/dist/cases/quadrature.d.ts.map +1 -0
- package/dist/cases/quadrature.js +41 -0
- package/dist/cases/quadrature.js.map +1 -0
- package/dist/cases/resistor-noise.d.ts +14 -0
- package/dist/cases/resistor-noise.d.ts.map +1 -0
- package/dist/cases/resistor-noise.js +210 -0
- package/dist/cases/resistor-noise.js.map +1 -0
- package/dist/cases/skin-depth.d.ts +21 -0
- package/dist/cases/skin-depth.d.ts.map +1 -0
- package/dist/cases/skin-depth.js +174 -0
- package/dist/cases/skin-depth.js.map +1 -0
- package/dist/cases/types.d.ts +115 -0
- package/dist/cases/types.d.ts.map +1 -0
- package/dist/cases/types.js +20 -0
- package/dist/cases/types.js.map +1 -0
- package/dist/cli/commands/_atlas-map.d.ts +409 -0
- package/dist/cli/commands/_atlas-map.d.ts.map +1 -0
- package/dist/cli/commands/_atlas-map.js +1014 -0
- package/dist/cli/commands/_atlas-map.js.map +1 -0
- package/dist/cli/commands/_atlas-route.d.ts +111 -0
- package/dist/cli/commands/_atlas-route.d.ts.map +1 -0
- package/dist/cli/commands/_atlas-route.js +140 -0
- package/dist/cli/commands/_atlas-route.js.map +1 -0
- package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
- package/dist/cli/commands/_discovery-opts.js +10 -1
- package/dist/cli/commands/_discovery-opts.js.map +1 -1
- package/dist/cli/commands/atlas.d.ts +20 -0
- package/dist/cli/commands/atlas.d.ts.map +1 -1
- package/dist/cli/commands/atlas.js +333 -19
- 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 +12 -3
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/axes.js +4 -4
- package/dist/cli/commands/candidates.d.ts.map +1 -1
- package/dist/cli/commands/candidates.js +3 -2
- package/dist/cli/commands/candidates.js.map +1 -1
- package/dist/cli/commands/canonical.d.ts.map +1 -1
- package/dist/cli/commands/canonical.js +39 -10
- package/dist/cli/commands/canonical.js.map +1 -1
- package/dist/cli/commands/confront.d.ts.map +1 -1
- package/dist/cli/commands/confront.js +210 -28
- package/dist/cli/commands/confront.js.map +1 -1
- package/dist/cli/commands/connectors.d.ts.map +1 -1
- package/dist/cli/commands/connectors.js +5 -4
- package/dist/cli/commands/connectors.js.map +1 -1
- package/dist/cli/commands/coverage.js +3 -3
- package/dist/cli/commands/derive.d.ts.map +1 -1
- package/dist/cli/commands/derive.js +21 -9
- 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 +149 -32
- 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 +76 -17
- package/dist/cli/commands/eval.js.map +1 -1
- package/dist/cli/commands/evaluate.d.ts +30 -0
- package/dist/cli/commands/evaluate.d.ts.map +1 -1
- package/dist/cli/commands/evaluate.js +440 -25
- 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 +38 -11
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/frontier.d.ts +3 -0
- package/dist/cli/commands/frontier.d.ts.map +1 -0
- package/dist/cli/commands/frontier.js +28 -0
- package/dist/cli/commands/frontier.js.map +1 -0
- package/dist/cli/commands/ground.d.ts.map +1 -1
- package/dist/cli/commands/ground.js +37 -12
- package/dist/cli/commands/ground.js.map +1 -1
- package/dist/cli/commands/index.d.ts +5 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +5 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/map.d.ts +8 -0
- package/dist/cli/commands/map.d.ts.map +1 -1
- package/dist/cli/commands/map.js +385 -57
- package/dist/cli/commands/map.js.map +1 -1
- package/dist/cli/commands/metric.d.ts +3 -0
- package/dist/cli/commands/metric.d.ts.map +1 -0
- package/dist/cli/commands/metric.js +136 -0
- package/dist/cli/commands/metric.js.map +1 -0
- package/dist/cli/commands/path.d.ts +109 -1
- package/dist/cli/commands/path.d.ts.map +1 -1
- package/dist/cli/commands/path.js +1019 -109
- package/dist/cli/commands/path.js.map +1 -1
- package/dist/cli/commands/predict.d.ts.map +1 -1
- package/dist/cli/commands/predict.js +3 -2
- package/dist/cli/commands/predict.js.map +1 -1
- package/dist/cli/commands/priority.d.ts.map +1 -1
- package/dist/cli/commands/priority.js +3 -2
- package/dist/cli/commands/priority.js.map +1 -1
- package/dist/cli/commands/probe.d.ts +7 -0
- package/dist/cli/commands/probe.d.ts.map +1 -1
- package/dist/cli/commands/probe.js +234 -52
- package/dist/cli/commands/probe.js.map +1 -1
- package/dist/cli/commands/recover.d.ts.map +1 -1
- package/dist/cli/commands/recover.js +17 -6
- package/dist/cli/commands/recover.js.map +1 -1
- package/dist/cli/commands/regime.d.ts +1 -1
- package/dist/cli/commands/regime.d.ts.map +1 -1
- package/dist/cli/commands/regime.js +134 -33
- package/dist/cli/commands/regime.js.map +1 -1
- package/dist/cli/commands/retrieve.d.ts +3 -0
- package/dist/cli/commands/retrieve.d.ts.map +1 -0
- package/dist/cli/commands/retrieve.js +65 -0
- package/dist/cli/commands/retrieve.js.map +1 -0
- package/dist/cli/commands/search.d.ts +3 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +70 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/symbolic.d.ts.map +1 -1
- package/dist/cli/commands/symbolic.js +107 -16
- package/dist/cli/commands/symbolic.js.map +1 -1
- package/dist/cli/commands/testplan.d.ts +3 -0
- package/dist/cli/commands/testplan.d.ts.map +1 -0
- package/dist/cli/commands/testplan.js +131 -0
- package/dist/cli/commands/testplan.js.map +1 -0
- package/dist/cli/conventions.d.ts +22 -0
- package/dist/cli/conventions.d.ts.map +1 -0
- package/dist/cli/conventions.js +48 -0
- package/dist/cli/conventions.js.map +1 -0
- package/dist/cli/euler-guard.d.ts +9 -0
- package/dist/cli/euler-guard.d.ts.map +1 -0
- package/dist/cli/euler-guard.js +11 -0
- package/dist/cli/euler-guard.js.map +1 -0
- package/dist/cli/eval-numbers.d.ts +26 -0
- package/dist/cli/eval-numbers.d.ts.map +1 -0
- package/dist/cli/eval-numbers.js +49 -0
- package/dist/cli/eval-numbers.js.map +1 -0
- package/dist/cli/expr-print.d.ts +25 -0
- package/dist/cli/expr-print.d.ts.map +1 -0
- package/dist/cli/expr-print.js +123 -0
- package/dist/cli/expr-print.js.map +1 -0
- package/dist/cli/graphs.d.ts +26 -0
- package/dist/cli/graphs.d.ts.map +1 -1
- package/dist/cli/graphs.js +19 -0
- package/dist/cli/graphs.js.map +1 -1
- package/dist/cli/main.d.ts +4 -10
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +370 -167
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/map-evidence.d.ts +47 -0
- package/dist/cli/map-evidence.d.ts.map +1 -0
- package/dist/cli/map-evidence.js +53 -0
- package/dist/cli/map-evidence.js.map +1 -0
- package/dist/cli/output.d.ts +21 -1
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +5 -1
- package/dist/cli/output.js.map +1 -1
- package/dist/{composition → cli}/poster-source.d.ts +3 -2
- package/dist/cli/poster-source.d.ts.map +1 -0
- package/dist/{composition → cli}/poster-source.js +2 -1
- package/dist/cli/poster-source.js.map +1 -0
- package/dist/cli/record-reach.d.ts +44 -0
- package/dist/cli/record-reach.d.ts.map +1 -0
- package/dist/cli/record-reach.js +228 -0
- package/dist/cli/record-reach.js.map +1 -0
- package/dist/cli/record-tables.d.ts +38 -0
- package/dist/cli/record-tables.d.ts.map +1 -0
- package/dist/cli/record-tables.js +110 -0
- package/dist/cli/record-tables.js.map +1 -0
- package/dist/cli/record.d.ts +141 -0
- package/dist/cli/record.d.ts.map +1 -0
- package/dist/cli/record.js +612 -0
- package/dist/cli/record.js.map +1 -0
- package/dist/cli/search-index.d.ts +56 -0
- package/dist/cli/search-index.d.ts.map +1 -0
- package/dist/cli/search-index.js +190 -0
- package/dist/cli/search-index.js.map +1 -0
- package/dist/cli/statuses.d.ts +25 -0
- package/dist/cli/statuses.d.ts.map +1 -0
- package/dist/cli/statuses.js +276 -0
- package/dist/cli/statuses.js.map +1 -0
- package/dist/cli/version.d.ts +8 -0
- package/dist/cli/version.d.ts.map +1 -1
- package/dist/cli/version.js +32 -1
- package/dist/cli/version.js.map +1 -1
- package/dist/cli-api.d.ts +33 -15
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +31 -11
- package/dist/cli-api.js.map +1 -1
- package/dist/composition/bridge-analysis.d.ts.map +1 -1
- package/dist/composition/bridge-analysis.js +2 -1
- package/dist/composition/bridge-analysis.js.map +1 -1
- package/dist/composition/canonical-compare.d.ts +29 -16
- package/dist/composition/canonical-compare.d.ts.map +1 -1
- package/dist/composition/canonical-compare.js +355 -59
- package/dist/composition/canonical-compare.js.map +1 -1
- package/dist/composition/canonical-graph.d.ts +2 -2
- package/dist/composition/canonical-graph.js +3 -3
- package/dist/composition/canonical-graph.js.map +1 -1
- package/dist/composition/canonical-prefactors.d.ts +24 -1
- package/dist/composition/canonical-prefactors.d.ts.map +1 -1
- package/dist/composition/canonical-prefactors.js +97 -1
- package/dist/composition/canonical-prefactors.js.map +1 -1
- package/dist/composition/compose-symbolic.js +1 -1
- package/dist/composition/compose-symbolic.js.map +1 -1
- package/dist/composition/compose.d.ts.map +1 -1
- package/dist/composition/compose.js +17 -9
- package/dist/composition/compose.js.map +1 -1
- package/dist/composition/composition-recovery.d.ts +47 -0
- package/dist/composition/composition-recovery.d.ts.map +1 -0
- package/dist/composition/composition-recovery.js +77 -0
- package/dist/composition/composition-recovery.js.map +1 -0
- package/dist/composition/consequence.d.ts +39 -0
- package/dist/composition/consequence.d.ts.map +1 -1
- package/dist/composition/consequence.js +37 -0
- package/dist/composition/consequence.js.map +1 -1
- package/dist/composition/discovery.d.ts +20 -0
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +27 -5
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/edge.d.ts +1 -1
- package/dist/composition/edge.d.ts.map +1 -1
- package/dist/composition/edge.js.map +1 -1
- package/dist/composition/edges/_catalog-helpers.d.ts +4 -0
- package/dist/composition/edges/_catalog-helpers.d.ts.map +1 -1
- package/dist/composition/edges/_catalog-helpers.js +15 -0
- package/dist/composition/edges/_catalog-helpers.js.map +1 -1
- package/dist/composition/edges/calibration.d.ts.map +1 -1
- package/dist/composition/edges/calibration.js +57 -0
- package/dist/composition/edges/calibration.js.map +1 -1
- package/dist/composition/edges/catalog-fields.d.ts.map +1 -1
- package/dist/composition/edges/catalog-fields.js +2 -1
- package/dist/composition/edges/catalog-fields.js.map +1 -1
- package/dist/composition/edges/catalog-gravitation-cosmology.d.ts.map +1 -1
- package/dist/composition/edges/catalog-gravitation-cosmology.js +2 -1
- package/dist/composition/edges/catalog-gravitation-cosmology.js.map +1 -1
- package/dist/composition/edges/catalog-quantum.d.ts.map +1 -1
- package/dist/composition/edges/catalog-quantum.js +26 -0
- package/dist/composition/edges/catalog-quantum.js.map +1 -1
- package/dist/composition/edges/catalog-tranche.d.ts.map +1 -1
- package/dist/composition/edges/catalog-tranche.js +2 -1
- package/dist/composition/edges/catalog-tranche.js.map +1 -1
- package/dist/composition/expr-eval.d.ts.map +1 -1
- package/dist/composition/expr-eval.js +4 -1
- package/dist/composition/expr-eval.js.map +1 -1
- package/dist/composition/expr-simplify.js +1 -1
- package/dist/composition/expr-simplify.js.map +1 -1
- package/dist/composition/frontier-account.d.ts +78 -0
- package/dist/composition/frontier-account.d.ts.map +1 -0
- package/dist/composition/frontier-account.js +127 -0
- package/dist/composition/frontier-account.js.map +1 -0
- package/dist/composition/graph-viz.d.ts +7 -22
- package/dist/composition/graph-viz.d.ts.map +1 -1
- package/dist/composition/graph-viz.js +4 -27
- package/dist/composition/graph-viz.js.map +1 -1
- package/dist/composition/grounding.d.ts +49 -0
- package/dist/composition/grounding.d.ts.map +1 -1
- package/dist/composition/grounding.js +38 -0
- package/dist/composition/grounding.js.map +1 -1
- package/dist/composition/index.d.ts +0 -2
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +1 -1
- package/dist/composition/index.js.map +1 -1
- package/dist/composition/probe/expression-gaps.d.ts +27 -0
- package/dist/composition/probe/expression-gaps.d.ts.map +1 -0
- package/dist/composition/probe/expression-gaps.js +47 -0
- package/dist/composition/probe/expression-gaps.js.map +1 -0
- package/dist/composition/probe/frontier.d.ts +2 -1
- package/dist/composition/probe/frontier.d.ts.map +1 -1
- package/dist/composition/probe/frontier.js +3 -2
- package/dist/composition/probe/frontier.js.map +1 -1
- package/dist/composition/probe/index.d.ts +4 -1
- package/dist/composition/probe/index.d.ts.map +1 -1
- package/dist/composition/probe/index.js +3 -1
- package/dist/composition/probe/index.js.map +1 -1
- package/dist/composition/probe/pipeline.d.ts +2 -0
- package/dist/composition/probe/pipeline.d.ts.map +1 -1
- package/dist/composition/probe/pipeline.js +6 -2
- package/dist/composition/probe/pipeline.js.map +1 -1
- package/dist/composition/probe/problem.d.ts +7 -0
- package/dist/composition/probe/problem.d.ts.map +1 -1
- package/dist/composition/probe/problem.js +15 -5
- package/dist/composition/probe/problem.js.map +1 -1
- package/dist/composition/probe/search-budget.d.ts.map +1 -1
- package/dist/composition/probe/search-budget.js +6 -2
- package/dist/composition/probe/search-budget.js.map +1 -1
- package/dist/composition/probe/study.d.ts +340 -0
- package/dist/composition/probe/study.d.ts.map +1 -0
- package/dist/composition/probe/study.js +1519 -0
- package/dist/composition/probe/study.js.map +1 -0
- package/dist/composition/proposed-bridges.js +1 -1
- package/dist/composition/proposed-bridges.js.map +1 -1
- package/dist/composition/quantities.d.ts +4 -16
- package/dist/composition/quantities.d.ts.map +1 -1
- package/dist/composition/quantities.js +4 -16
- package/dist/composition/quantities.js.map +1 -1
- package/dist/composition/retrodiction.d.ts.map +1 -1
- package/dist/composition/retrodiction.js +6 -2
- package/dist/composition/retrodiction.js.map +1 -1
- package/dist/composition/uncertainty.d.ts +1 -1
- package/dist/composition/uncertainty.d.ts.map +1 -1
- package/dist/composition/user-equation.d.ts +79 -8
- package/dist/composition/user-equation.d.ts.map +1 -1
- package/dist/composition/user-equation.js +224 -32
- package/dist/composition/user-equation.js.map +1 -1
- package/dist/core/constants.d.ts +9 -4
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +9 -4
- package/dist/core/constants.js.map +1 -1
- package/dist/core/types.d.ts +1 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +2 -1
- package/dist/core/types.js.map +1 -1
- package/dist/dimensional/curvature.d.ts +7 -56
- package/dist/dimensional/curvature.d.ts.map +1 -1
- package/dist/dimensional/curvature.js +7 -76
- package/dist/dimensional/curvature.js.map +1 -1
- package/dist/dimensional/dimension-spec.d.ts +7 -1
- package/dist/dimensional/dimension-spec.d.ts.map +1 -1
- package/dist/dimensional/dimension-spec.js +131 -3
- package/dist/dimensional/dimension-spec.js.map +1 -1
- package/dist/dimensional/formula-names.d.ts +30 -0
- package/dist/dimensional/formula-names.d.ts.map +1 -0
- package/dist/dimensional/formula-names.js +37 -0
- package/dist/dimensional/formula-names.js.map +1 -0
- package/dist/dimensional/natural-units.d.ts +33 -0
- package/dist/dimensional/natural-units.d.ts.map +1 -0
- package/dist/dimensional/natural-units.js +58 -0
- package/dist/dimensional/natural-units.js.map +1 -0
- package/dist/{composition → dimensional}/symbolic-constants.d.ts +21 -2
- package/dist/dimensional/symbolic-constants.d.ts.map +1 -0
- package/dist/dimensional/symbolic-constants.js +116 -0
- package/dist/dimensional/symbolic-constants.js.map +1 -0
- package/dist/dimensional/unit-convention.d.ts +30 -0
- package/dist/dimensional/unit-convention.d.ts.map +1 -0
- package/dist/dimensional/unit-convention.js +60 -0
- package/dist/dimensional/unit-convention.js.map +1 -0
- package/dist/dimensional/units.d.ts +43 -0
- package/dist/dimensional/units.d.ts.map +1 -0
- package/dist/dimensional/units.js +197 -0
- package/dist/dimensional/units.js.map +1 -0
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/numerical/bianchi-residual.d.ts +55 -0
- package/dist/numerical/bianchi-residual.d.ts.map +1 -0
- package/dist/numerical/bianchi-residual.js +79 -0
- package/dist/numerical/bianchi-residual.js.map +1 -0
- package/dist/numerical/binding-value.d.ts +67 -0
- package/dist/numerical/binding-value.d.ts.map +1 -0
- package/dist/numerical/binding-value.js +347 -0
- package/dist/numerical/binding-value.js.map +1 -0
- package/dist/numerical/connection-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/connection-lowering-helpers.js +13 -26
- package/dist/numerical/connection-lowering-helpers.js.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.js +9 -0
- package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
- package/dist/numerical/float64-engine.d.ts.map +1 -1
- package/dist/numerical/float64-engine.js +23 -16
- package/dist/numerical/float64-engine.js.map +1 -1
- package/dist/numerical/formula-dimension.d.ts +7 -0
- package/dist/numerical/formula-dimension.d.ts.map +1 -1
- package/dist/numerical/formula-dimension.js +23 -6
- 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 +68 -6
- package/dist/numerical/formula-mathts.js.map +1 -1
- package/dist/numerical/formula.d.ts +27 -0
- package/dist/numerical/formula.d.ts.map +1 -1
- package/dist/numerical/formula.js +68 -6
- package/dist/numerical/formula.js.map +1 -1
- package/dist/numerical/spacetime-metrics.d.ts +243 -0
- package/dist/numerical/spacetime-metrics.d.ts.map +1 -0
- package/dist/numerical/spacetime-metrics.js +1056 -0
- package/dist/numerical/spacetime-metrics.js.map +1 -0
- package/dist/relations/composition-table.d.ts +61 -0
- package/dist/relations/composition-table.d.ts.map +1 -0
- package/dist/relations/composition-table.js +140 -0
- package/dist/relations/composition-table.js.map +1 -0
- package/dist/relations/conventions.d.ts +63 -0
- package/dist/relations/conventions.d.ts.map +1 -0
- package/dist/relations/conventions.js +93 -0
- package/dist/relations/conventions.js.map +1 -0
- package/dist/relations/regime.d.ts +159 -0
- package/dist/relations/regime.d.ts.map +1 -0
- package/dist/relations/regime.js +304 -0
- package/dist/relations/regime.js.map +1 -0
- package/dist/relations/types.d.ts +259 -0
- package/dist/relations/types.d.ts.map +1 -0
- package/dist/relations/types.js +37 -0
- package/dist/relations/types.js.map +1 -0
- package/package.json +166 -163
- package/dist/composition/poster-source.d.ts.map +0 -1
- package/dist/composition/poster-source.js.map +0 -1
- package/dist/composition/symbolic-constants.d.ts.map +0 -1
- package/dist/composition/symbolic-constants.js +0 -65
- package/dist/composition/symbolic-constants.js.map +0 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The measurement behind W1τ, `ab-spring-lc`'s relative-period norm transport
|
|
3
|
+
* (`./norm-transport.ts`).
|
|
4
|
+
*
|
|
5
|
+
* The pendulum is pushed through the bridge's map q(t_LC) = (q0/θ0)·θ(t),
|
|
6
|
+
* t_LC = t·ω_s/ω_LC, and integrated as its OWN equation in circuit time,
|
|
7
|
+
* q'' = −ω_LC² (q0/θ0) sin(θ0 q/q0). Its period is measured by RK4 and compared
|
|
8
|
+
* with the LC circuit's period 2π√(LC). Nothing here multiplies a pendulum
|
|
9
|
+
* period by a factor: the image is solved where the circuit lives.
|
|
10
|
+
*
|
|
11
|
+
* @module atlas/oscillators/norm-transport-witness
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
/** The circuit and release a measurement uses. @internal */
|
|
15
|
+
export interface TransportCircuit {
|
|
16
|
+
readonly L: number;
|
|
17
|
+
readonly C: number;
|
|
18
|
+
/** Release charge, > 0. */
|
|
19
|
+
readonly q0: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* First downward zero crossing of the release from rest at `q0 > 0`, by cubic
|
|
23
|
+
* Hermite interpolation of the bracketing RK4 step (values and derivatives at
|
|
24
|
+
* both ends), refined by Newton. Released from rest, it is a quarter period.
|
|
25
|
+
*
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
export declare function quarterPeriod(accel: (q: number) => number, q0: number, h: number, maxSteps: number): number;
|
|
29
|
+
/**
|
|
30
|
+
* T_image / T_LC − 1: the relative period error of the pendulum's image against
|
|
31
|
+
* the circuit, with `stepsPerPeriod` RK4 steps per LC period.
|
|
32
|
+
*
|
|
33
|
+
* @returns NaN when `theta0` is not in (0, π) or no crossing is found.
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
export declare function measureTransportedPeriodError(theta0: number, stepsPerPeriod: number, circuit?: TransportCircuit): number;
|
|
37
|
+
//# sourceMappingURL=norm-transport-witness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"norm-transport-witness.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/norm-transport-witness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmB3G;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,gBAAgC,GACxC,MAAM,CAOR"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The measurement behind W1τ, `ab-spring-lc`'s relative-period norm transport
|
|
3
|
+
* (`./norm-transport.ts`).
|
|
4
|
+
*
|
|
5
|
+
* The pendulum is pushed through the bridge's map q(t_LC) = (q0/θ0)·θ(t),
|
|
6
|
+
* t_LC = t·ω_s/ω_LC, and integrated as its OWN equation in circuit time,
|
|
7
|
+
* q'' = −ω_LC² (q0/θ0) sin(θ0 q/q0). Its period is measured by RK4 and compared
|
|
8
|
+
* with the LC circuit's period 2π√(LC). Nothing here multiplies a pendulum
|
|
9
|
+
* period by a factor: the image is solved where the circuit lives.
|
|
10
|
+
*
|
|
11
|
+
* @module atlas/oscillators/norm-transport-witness
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
import { rk4Step } from './pendulum-motion.js';
|
|
15
|
+
import { W1TAU_FIXTURE } from './norm-transport.js';
|
|
16
|
+
/**
|
|
17
|
+
* First downward zero crossing of the release from rest at `q0 > 0`, by cubic
|
|
18
|
+
* Hermite interpolation of the bracketing RK4 step (values and derivatives at
|
|
19
|
+
* both ends), refined by Newton. Released from rest, it is a quarter period.
|
|
20
|
+
*
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
export function quarterPeriod(accel, q0, h, maxSteps) {
|
|
24
|
+
let x = q0;
|
|
25
|
+
let v = 0;
|
|
26
|
+
for (let i = 0; i < maxSteps; i++) {
|
|
27
|
+
const [nx, nv] = rk4Step(x, v, h, accel);
|
|
28
|
+
if (x > 0 && nx <= 0) {
|
|
29
|
+
const [p0, m0, p1, m1] = [x, v * h, nx, nv * h];
|
|
30
|
+
const p = (s) => (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;
|
|
31
|
+
const dp = (s) => (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;
|
|
32
|
+
let s = p0 / (p0 - p1);
|
|
33
|
+
for (let k = 0; k < 8; k++)
|
|
34
|
+
s -= p(s) / dp(s);
|
|
35
|
+
return (i + s) * h;
|
|
36
|
+
}
|
|
37
|
+
x = nx;
|
|
38
|
+
v = nv;
|
|
39
|
+
}
|
|
40
|
+
return Number.NaN;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* T_image / T_LC − 1: the relative period error of the pendulum's image against
|
|
44
|
+
* the circuit, with `stepsPerPeriod` RK4 steps per LC period.
|
|
45
|
+
*
|
|
46
|
+
* @returns NaN when `theta0` is not in (0, π) or no crossing is found.
|
|
47
|
+
* @internal
|
|
48
|
+
*/
|
|
49
|
+
export function measureTransportedPeriodError(theta0, stepsPerPeriod, circuit = W1TAU_FIXTURE) {
|
|
50
|
+
if (!(theta0 > 0 && theta0 < Math.PI) || !(circuit.q0 > 0))
|
|
51
|
+
return Number.NaN;
|
|
52
|
+
const omegaLC = 1 / Math.sqrt(circuit.L * circuit.C);
|
|
53
|
+
const tLC = (2 * Math.PI) / omegaLC;
|
|
54
|
+
const accel = (q) => -(omegaLC ** 2) * (circuit.q0 / theta0) * Math.sin((theta0 * q) / circuit.q0);
|
|
55
|
+
const quarter = quarterPeriod(accel, circuit.q0, tLC / stepsPerPeriod, 2 * stepsPerPeriod);
|
|
56
|
+
return (4 * quarter) / tLC - 1;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=norm-transport-witness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"norm-transport-witness.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/norm-transport-witness.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ab-spring-lc`'s declared norm transport: the spring → LC map carries a bound
|
|
3
|
+
* in RELATIVE PERIOD ERROR unchanged. Design:
|
|
4
|
+
* `docs/planning/ADR-transported-norm-composition.md`.
|
|
5
|
+
*
|
|
6
|
+
* The bridge's composed map is q(t_LC) = (q0/x0)·x(t) with t_LC = t·ω_s/ω_LC:
|
|
7
|
+
* an amplitude scale and a uniform time scale. A period is a time, so every
|
|
8
|
+
* period on the spring side is multiplied by the same ω_s/ω_LC on the circuit
|
|
9
|
+
* side, and the ratio T_full/T_reduced − 1 is unchanged. K = 1, with no
|
|
10
|
+
* additive term.
|
|
11
|
+
*
|
|
12
|
+
* Declared in ONE direction and ONE norm:
|
|
13
|
+
*
|
|
14
|
+
* - LC → spring is not declared. The same algebra gives K = 1 there too, but no
|
|
15
|
+
* witness checks it and no route in the atlas uses it, and a declaration
|
|
16
|
+
* without its own witness is what the ADR forbids.
|
|
17
|
+
* - The absolute period error (factor ω_s/ω_LC) and the trajectory error
|
|
18
|
+
* (factor q0/x0, metres to coulombs) are not declared: the map is not an
|
|
19
|
+
* isometry of either, and a route in those norms stays refused.
|
|
20
|
+
*
|
|
21
|
+
* @module atlas/oscillators/norm-transport
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
import type { NormTransport } from '../types.js';
|
|
25
|
+
/** @internal */
|
|
26
|
+
export declare const SPRING_LC_TRANSPORT_TEST = "tests/atlas/spring-lc-norm-transport.test.ts";
|
|
27
|
+
/**
|
|
28
|
+
* The circuit W1τ integrates in: L = 0.5, C = 0.25 (W1a's circuit), so
|
|
29
|
+
* ω_LC = 2√2 while the spring side's ω_s = 2 — the time map is not the identity.
|
|
30
|
+
* q0 > 0 is the release charge, and θ0 = 0.5 is the edge of ab-pendulum-linear's
|
|
31
|
+
* domain, where its error is largest.
|
|
32
|
+
*
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
export declare const W1TAU_FIXTURE: {
|
|
36
|
+
readonly L: 0.5;
|
|
37
|
+
readonly C: 0.25;
|
|
38
|
+
readonly q0: 0.001;
|
|
39
|
+
readonly theta0: 0.5;
|
|
40
|
+
readonly omegaS: 2;
|
|
41
|
+
};
|
|
42
|
+
/** @internal */
|
|
43
|
+
export declare const SPRING_LC_RELATIVE_PERIOD_TRANSPORT: NormTransport;
|
|
44
|
+
//# sourceMappingURL=norm-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"norm-transport.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/norm-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,gBAAgB;AAChB,eAAO,MAAM,wBAAwB,iDAAiD,CAAC;AAEvF;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa;aAAK,CAAC,EAAE,GAAG;aAAE,CAAC,EAAE,IAAI;aAAE,EAAE,EAAE,KAAI;aAAE,MAAM,EAAE,GAAG;aAAE,MAAM,EAAE,CAAC;CAAW,CAAC;AAE5F,gBAAgB;AAChB,eAAO,MAAM,mCAAmC,EAAE,aA+BjD,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ab-spring-lc`'s declared norm transport: the spring → LC map carries a bound
|
|
3
|
+
* in RELATIVE PERIOD ERROR unchanged. Design:
|
|
4
|
+
* `docs/planning/ADR-transported-norm-composition.md`.
|
|
5
|
+
*
|
|
6
|
+
* The bridge's composed map is q(t_LC) = (q0/x0)·x(t) with t_LC = t·ω_s/ω_LC:
|
|
7
|
+
* an amplitude scale and a uniform time scale. A period is a time, so every
|
|
8
|
+
* period on the spring side is multiplied by the same ω_s/ω_LC on the circuit
|
|
9
|
+
* side, and the ratio T_full/T_reduced − 1 is unchanged. K = 1, with no
|
|
10
|
+
* additive term.
|
|
11
|
+
*
|
|
12
|
+
* Declared in ONE direction and ONE norm:
|
|
13
|
+
*
|
|
14
|
+
* - LC → spring is not declared. The same algebra gives K = 1 there too, but no
|
|
15
|
+
* witness checks it and no route in the atlas uses it, and a declaration
|
|
16
|
+
* without its own witness is what the ADR forbids.
|
|
17
|
+
* - The absolute period error (factor ω_s/ω_LC) and the trajectory error
|
|
18
|
+
* (factor q0/x0, metres to coulombs) are not declared: the map is not an
|
|
19
|
+
* isometry of either, and a route in those norms stays refused.
|
|
20
|
+
*
|
|
21
|
+
* @module atlas/oscillators/norm-transport
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
import { RELATIVE_PERIOD_NORM } from './norms.js';
|
|
25
|
+
/** @internal */
|
|
26
|
+
export const SPRING_LC_TRANSPORT_TEST = 'tests/atlas/spring-lc-norm-transport.test.ts';
|
|
27
|
+
/**
|
|
28
|
+
* The circuit W1τ integrates in: L = 0.5, C = 0.25 (W1a's circuit), so
|
|
29
|
+
* ω_LC = 2√2 while the spring side's ω_s = 2 — the time map is not the identity.
|
|
30
|
+
* q0 > 0 is the release charge, and θ0 = 0.5 is the edge of ab-pendulum-linear's
|
|
31
|
+
* domain, where its error is largest.
|
|
32
|
+
*
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
export const W1TAU_FIXTURE = { L: 0.5, C: 0.25, q0: 1e-3, theta0: 0.5, omegaS: 2 };
|
|
36
|
+
/** @internal */
|
|
37
|
+
export const SPRING_LC_RELATIVE_PERIOD_TRANSPORT = {
|
|
38
|
+
id: 'nt-spring-lc-relative-period',
|
|
39
|
+
fromModel: 'model-spring',
|
|
40
|
+
toModel: 'model-lc',
|
|
41
|
+
from: RELATIVE_PERIOD_NORM,
|
|
42
|
+
to: RELATIVE_PERIOD_NORM,
|
|
43
|
+
K: 1,
|
|
44
|
+
KAt: () => 1,
|
|
45
|
+
domain: "every m, k, L, C > 0 and x0, q0 ≠ 0 (the bridge's side conditions); K is the same constant throughout",
|
|
46
|
+
derivation: 'q(t_LC) = (q0/x0)·x(t) with t_LC = t·ω_s/ω_LC scales every period by the same ω_s/ω_LC, so a ratio of two ' +
|
|
47
|
+
'periods, T_full/T_reduced − 1, is unchanged: K = 1 and nothing is added',
|
|
48
|
+
timeMap: {
|
|
49
|
+
map: 't_LC = t·ω_s/ω_LC, one constant factor for every t',
|
|
50
|
+
uniform: true,
|
|
51
|
+
horizon: 'a horizon that reads time only through t/T0 holds unchanged with t read on the circuit clock and ' +
|
|
52
|
+
'T0 = 2π√(LC): a uniform time scale leaves t/T0 invariant',
|
|
53
|
+
restateHorizon: (holds) => holds,
|
|
54
|
+
},
|
|
55
|
+
uniformity: "preserved: K is one constant over the whole domain, so the incoming bound's uniformity holds unchanged",
|
|
56
|
+
witness: {
|
|
57
|
+
id: 'W1τ',
|
|
58
|
+
kind: 'numeric',
|
|
59
|
+
test: SPRING_LC_TRANSPORT_TEST,
|
|
60
|
+
tolerance: "RK4 relative period error of the pendulum's image q'' = −ω_LC²(q0/θ0) sin(θ0 q/q0) against the LC period, " +
|
|
61
|
+
'in circuit time (L = 0.5, C = 0.25, ω_LC = 2√2 ≠ ω_s = 2), at 640 steps per LC period within 1e-9 of K ' +
|
|
62
|
+
'times the closed-form elliptic error at θ0 = 0.5; 160 steps is the coarse resolution',
|
|
63
|
+
},
|
|
64
|
+
basis: 'numerically-supported',
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=norm-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"norm-transport.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/norm-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,gBAAgB;AAChB,MAAM,CAAC,MAAM,wBAAwB,GAAG,8CAA8C,CAAC;AAEvF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAW,CAAC;AAE5F,gBAAgB;AAChB,MAAM,CAAC,MAAM,mCAAmC,GAAkB;IAChE,EAAE,EAAE,8BAA8B;IAClC,SAAS,EAAE,cAAc;IACzB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,oBAAoB;IAC1B,EAAE,EAAE,oBAAoB;IACxB,CAAC,EAAE,CAAC;IACJ,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACZ,MAAM,EAAE,uGAAuG;IAC/G,UAAU,EACR,4GAA4G;QAC5G,yEAAyE;IAC3E,OAAO,EAAE;QACP,GAAG,EAAE,oDAAoD;QACzD,OAAO,EAAE,IAAI;QACb,OAAO,EACL,mGAAmG;YACnG,0DAA0D;QAC5D,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;KACjC;IACD,UAAU,EAAE,wGAAwG;IACpH,OAAO,EAAE;QACP,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,wBAAwB;QAC9B,SAAS,EACP,4GAA4G;YAC5G,yGAAyG;YACzG,sFAAsF;KACzF;IACD,KAAK,EAAE,uBAAuB;CAC/B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Norm names the oscillator records share, so a bound and the transport that
|
|
3
|
+
* carries it name the same norm by the same string. `boundPath` compares norms
|
|
4
|
+
* verbatim, and a norm spelled twice is a norm that can drift.
|
|
5
|
+
*
|
|
6
|
+
* @module atlas/oscillators/norms
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
/** The norm `ab-pendulum-linear` states its bound in. @internal */
|
|
10
|
+
export declare const RELATIVE_PERIOD_NORM = "relative period error, normalized by the value of the reduced model";
|
|
11
|
+
//# sourceMappingURL=norms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"norms.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/norms.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,mEAAmE;AACnE,eAAO,MAAM,oBAAoB,wEAAwE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Norm names the oscillator records share, so a bound and the transport that
|
|
3
|
+
* carries it name the same norm by the same string. `boundPath` compares norms
|
|
4
|
+
* verbatim, and a norm spelled twice is a norm that can drift.
|
|
5
|
+
*
|
|
6
|
+
* @module atlas/oscillators/norms
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
/** The norm `ab-pendulum-linear` states its bound in. @internal */
|
|
10
|
+
export const RELATIVE_PERIOD_NORM = 'relative period error, normalized by the value of the reduced model';
|
|
11
|
+
//# sourceMappingURL=norms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"norms.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/norms.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,mEAAmE;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,qEAAqE,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The pendulum and its linear oscillator, integrated and read off, for the
|
|
3
|
+
* witnesses of `ab-pendulum-linear`'s declared translations. Time is in units
|
|
4
|
+
* of T0 (ω0 = 2π); both motions are released from rest at θ0.
|
|
5
|
+
*
|
|
6
|
+
* Also the closed forms those translations are built from: θ0 recovered from
|
|
7
|
+
* the bound's ε, and the nome q of the pendulum's elliptic modulus.
|
|
8
|
+
*
|
|
9
|
+
* @module atlas/oscillators/pendulum-motion
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
/** ω0² at T0 = 1. @internal */
|
|
13
|
+
export declare const W2: number;
|
|
14
|
+
/** @internal */
|
|
15
|
+
export declare const pendulumAccel: (x: number) => number;
|
|
16
|
+
/** @internal */
|
|
17
|
+
export declare const linearAccel: (x: number) => number;
|
|
18
|
+
/** One classical RK4 step of x″ = accel(x). @internal */
|
|
19
|
+
export declare function rk4Step(x: number, v: number, h: number, accel: (x: number) => number): [number, number];
|
|
20
|
+
/** Zero-crossing times of a release from rest at `theta0`, over `periods` of T0 = 1. @internal */
|
|
21
|
+
export declare function crossingTimes(accel: (x: number) => number, theta0: number, stepsPerPeriod: number, periods: number): number[];
|
|
22
|
+
/** The phase at `t`, interpolated through the anchors (0, 0) and (c_k, π/2 + kπ). @internal */
|
|
23
|
+
export declare function phaseAt(crossings: readonly number[], t: number): number;
|
|
24
|
+
/**
|
|
25
|
+
* θ0 in [0, π) whose exact relative period error is `eps`, by bisection on the
|
|
26
|
+
* strictly increasing `pendulumPeriodErrorAt`.
|
|
27
|
+
*
|
|
28
|
+
* @returns NaN for a negative or non-finite `eps`.
|
|
29
|
+
* @internal
|
|
30
|
+
*/
|
|
31
|
+
export declare function theta0OfPeriodError(eps: number): number;
|
|
32
|
+
/**
|
|
33
|
+
* The nome q = exp(−π K′/K) of the modulus k = sin(θ0/2), with
|
|
34
|
+
* K′/K = AGM(1, cos(θ0/2)) / AGM(1, sin(θ0/2)).
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
export declare function pendulumNome(theta0: number): number;
|
|
38
|
+
//# sourceMappingURL=pendulum-motion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pendulum-motion.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/pendulum-motion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,+BAA+B;AAC/B,eAAO,MAAM,EAAE,QAAqB,CAAC;AACrC,gBAAgB;AAChB,eAAO,MAAM,aAAa,MAAO,MAAM,KAAG,MAA2B,CAAC;AACtE,gBAAgB;AAChB,eAAO,MAAM,WAAW,MAAO,MAAM,KAAG,MAAiB,CAAC;AAE1D,yDAAyD;AACzD,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAUvG;AA4BD,kGAAkG;AAClG,wBAAgB,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAY7H;AAED,+FAA+F;AAC/F,wBAAgB,OAAO,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAWvE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAYvD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAInD"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The pendulum and its linear oscillator, integrated and read off, for the
|
|
3
|
+
* witnesses of `ab-pendulum-linear`'s declared translations. Time is in units
|
|
4
|
+
* of T0 (ω0 = 2π); both motions are released from rest at θ0.
|
|
5
|
+
*
|
|
6
|
+
* Also the closed forms those translations are built from: θ0 recovered from
|
|
7
|
+
* the bound's ε, and the nome q of the pendulum's elliptic modulus.
|
|
8
|
+
*
|
|
9
|
+
* @module atlas/oscillators/pendulum-motion
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
import { agm, pendulumPeriodErrorAt } from './bridges-limits.js';
|
|
13
|
+
/** ω0² at T0 = 1. @internal */
|
|
14
|
+
export const W2 = (2 * Math.PI) ** 2;
|
|
15
|
+
/** @internal */
|
|
16
|
+
export const pendulumAccel = (x) => -W2 * Math.sin(x);
|
|
17
|
+
/** @internal */
|
|
18
|
+
export const linearAccel = (x) => -W2 * x;
|
|
19
|
+
/** One classical RK4 step of x″ = accel(x). @internal */
|
|
20
|
+
export function rk4Step(x, v, h, accel) {
|
|
21
|
+
const k1x = v;
|
|
22
|
+
const k1v = accel(x);
|
|
23
|
+
const k2x = v + 0.5 * h * k1v;
|
|
24
|
+
const k2v = accel(x + 0.5 * h * k1x);
|
|
25
|
+
const k3x = v + 0.5 * h * k2v;
|
|
26
|
+
const k3v = accel(x + 0.5 * h * k2x);
|
|
27
|
+
const k4x = v + h * k3v;
|
|
28
|
+
const k4v = accel(x + h * k3x);
|
|
29
|
+
return [x + (h / 6) * (k1x + 2 * k2x + 2 * k3x + k4x), v + (h / 6) * (k1v + 2 * k2v + 2 * k3v + k4v)];
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The root in (0, h] of x(τ), the position one partial RK4 step of length τ
|
|
33
|
+
* from (x, v), by the secant method from the bracket (0, x) and (h, nx).
|
|
34
|
+
*
|
|
35
|
+
* The crossing is then located to the integrator's own truncation error,
|
|
36
|
+
* rather than to the O(h³) error of a straight line between the two steps.
|
|
37
|
+
* That truncation error is nearly the same for the pendulum and the linear
|
|
38
|
+
* oscillator at small θ0, so it cancels in their phase difference; the
|
|
39
|
+
* interpolation error does not.
|
|
40
|
+
*/
|
|
41
|
+
function refineCrossing(x, v, nx, h, accel) {
|
|
42
|
+
let a = 0;
|
|
43
|
+
let fa = x;
|
|
44
|
+
let b = h;
|
|
45
|
+
let fb = nx;
|
|
46
|
+
for (let k = 0; k < 50 && fb !== 0 && fb !== fa; k++) {
|
|
47
|
+
const c = b - (fb * (b - a)) / (fb - fa);
|
|
48
|
+
if (!(c >= -h && c <= 2 * h) || c === b)
|
|
49
|
+
break;
|
|
50
|
+
a = b;
|
|
51
|
+
fa = fb;
|
|
52
|
+
b = c;
|
|
53
|
+
fb = rk4Step(x, v, c, accel)[0];
|
|
54
|
+
}
|
|
55
|
+
return b;
|
|
56
|
+
}
|
|
57
|
+
/** Zero-crossing times of a release from rest at `theta0`, over `periods` of T0 = 1. @internal */
|
|
58
|
+
export function crossingTimes(accel, theta0, stepsPerPeriod, periods) {
|
|
59
|
+
const h = 1 / stepsPerPeriod;
|
|
60
|
+
const out = [];
|
|
61
|
+
let x = theta0;
|
|
62
|
+
let v = 0;
|
|
63
|
+
for (let i = 0; i < stepsPerPeriod * periods; i++) {
|
|
64
|
+
const [nx, nv] = rk4Step(x, v, h, accel);
|
|
65
|
+
if (nx === 0 || x > 0 !== nx > 0)
|
|
66
|
+
out.push(i * h + refineCrossing(x, v, nx, h, accel));
|
|
67
|
+
x = nx;
|
|
68
|
+
v = nv;
|
|
69
|
+
}
|
|
70
|
+
return out;
|
|
71
|
+
}
|
|
72
|
+
/** The phase at `t`, interpolated through the anchors (0, 0) and (c_k, π/2 + kπ). @internal */
|
|
73
|
+
export function phaseAt(crossings, t) {
|
|
74
|
+
let prevT = 0;
|
|
75
|
+
let prevPhase = 0;
|
|
76
|
+
for (let k = 0; k < crossings.length; k++) {
|
|
77
|
+
const c = crossings[k];
|
|
78
|
+
const phase = Math.PI / 2 + k * Math.PI;
|
|
79
|
+
if (t <= c)
|
|
80
|
+
return prevPhase + ((phase - prevPhase) * (t - prevT)) / (c - prevT);
|
|
81
|
+
prevT = c;
|
|
82
|
+
prevPhase = phase;
|
|
83
|
+
}
|
|
84
|
+
return Number.NaN;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* θ0 in [0, π) whose exact relative period error is `eps`, by bisection on the
|
|
88
|
+
* strictly increasing `pendulumPeriodErrorAt`.
|
|
89
|
+
*
|
|
90
|
+
* @returns NaN for a negative or non-finite `eps`.
|
|
91
|
+
* @internal
|
|
92
|
+
*/
|
|
93
|
+
export function theta0OfPeriodError(eps) {
|
|
94
|
+
if (!Number.isFinite(eps) || eps < 0)
|
|
95
|
+
return Number.NaN;
|
|
96
|
+
if (eps === 0)
|
|
97
|
+
return 0;
|
|
98
|
+
let lo = 0;
|
|
99
|
+
let hi = Math.PI;
|
|
100
|
+
for (let i = 0; i < 200 && hi - lo > 0; i++) {
|
|
101
|
+
const mid = (lo + hi) / 2;
|
|
102
|
+
if (mid === lo || mid === hi)
|
|
103
|
+
break;
|
|
104
|
+
if (pendulumPeriodErrorAt({ theta0: mid }) < eps)
|
|
105
|
+
lo = mid;
|
|
106
|
+
else
|
|
107
|
+
hi = mid;
|
|
108
|
+
}
|
|
109
|
+
return (lo + hi) / 2;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* The nome q = exp(−π K′/K) of the modulus k = sin(θ0/2), with
|
|
113
|
+
* K′/K = AGM(1, cos(θ0/2)) / AGM(1, sin(θ0/2)).
|
|
114
|
+
* @internal
|
|
115
|
+
*/
|
|
116
|
+
export function pendulumNome(theta0) {
|
|
117
|
+
const k = Math.sin(Math.abs(theta0) / 2);
|
|
118
|
+
if (k === 0)
|
|
119
|
+
return 0;
|
|
120
|
+
return Math.exp((-Math.PI * agm(1, Math.cos(theta0 / 2))) / agm(1, k));
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=pendulum-motion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pendulum-motion.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/pendulum-motion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ab-spring-lc`'s declaration that its map carries the PHASE unchanged, so
|
|
3
|
+
* `ab-pendulum-linear`'s phase translation holds on the path
|
|
4
|
+
* pendulum → spring → LC.
|
|
5
|
+
*
|
|
6
|
+
* The bridge's composed map is q(t_LC) = (q0/x0)·x(t) with t_LC = t·ω_s/ω_LC.
|
|
7
|
+
* The charge is a fixed nonzero multiple of the displacement at the mapped
|
|
8
|
+
* time, so the two share every zero crossing and turning point, and the angle
|
|
9
|
+
* variable (0 at release from rest, 2π per period, uniform in time) of the
|
|
10
|
+
* circuit at t_LC equals the spring's at t. A phase error against the spring
|
|
11
|
+
* at t is therefore the same phase error against the circuit at t_LC: nothing
|
|
12
|
+
* is added and nothing truncated.
|
|
13
|
+
*
|
|
14
|
+
* This is a claim about the phase only. It says nothing about the position
|
|
15
|
+
* error — x and q are different quantities in different units, and a bound in
|
|
16
|
+
* rad on the angle does not become one on the charge — so `ab-spring-lc`
|
|
17
|
+
* declares no carriage for `position`.
|
|
18
|
+
*
|
|
19
|
+
* The witness W1φ integrates the two oscillators of W1a (m = 2, k = 8,
|
|
20
|
+
* x0 = 0.37 and L = 0.5, C = 0.25, q0 = −1.9: ω_s = 2, ω_LC = 2√2, and a
|
|
21
|
+
* NEGATIVE ratio q0/x0) by RK4 at the same step in physical time, and
|
|
22
|
+
* compares the circuit's phase at the mapped time with the spring's at every
|
|
23
|
+
* spring zero crossing. The angle variable of each motion is measured from its
|
|
24
|
+
* own release, so the sign of q0/x0 does not enter.
|
|
25
|
+
*
|
|
26
|
+
* @module atlas/oscillators/phase-carriage
|
|
27
|
+
* @internal
|
|
28
|
+
*/
|
|
29
|
+
import type { ObservableCarriage } from '../translation.js';
|
|
30
|
+
/**
|
|
31
|
+
* max over the spring's zero crossings c_k of |φ_LC(timeScale · c_k) − (π/2 + kπ)|,
|
|
32
|
+
* both integrated at `stepsPerSpringPeriod` steps of the spring's period.
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
export declare function measureCarriedPhaseError(stepsPerSpringPeriod: number, timeScale: number): number;
|
|
36
|
+
/** @internal */
|
|
37
|
+
export declare const SPRING_LC_PHASE_CARRIAGE: ObservableCarriage;
|
|
38
|
+
//# sourceMappingURL=phase-carriage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phase-carriage.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/phase-carriage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAwB5D;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,oBAAoB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAUhG;AAWD,gBAAgB;AAChB,eAAO,MAAM,wBAAwB,EAAE,kBAsBtC,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ab-spring-lc`'s declaration that its map carries the PHASE unchanged, so
|
|
3
|
+
* `ab-pendulum-linear`'s phase translation holds on the path
|
|
4
|
+
* pendulum → spring → LC.
|
|
5
|
+
*
|
|
6
|
+
* The bridge's composed map is q(t_LC) = (q0/x0)·x(t) with t_LC = t·ω_s/ω_LC.
|
|
7
|
+
* The charge is a fixed nonzero multiple of the displacement at the mapped
|
|
8
|
+
* time, so the two share every zero crossing and turning point, and the angle
|
|
9
|
+
* variable (0 at release from rest, 2π per period, uniform in time) of the
|
|
10
|
+
* circuit at t_LC equals the spring's at t. A phase error against the spring
|
|
11
|
+
* at t is therefore the same phase error against the circuit at t_LC: nothing
|
|
12
|
+
* is added and nothing truncated.
|
|
13
|
+
*
|
|
14
|
+
* This is a claim about the phase only. It says nothing about the position
|
|
15
|
+
* error — x and q are different quantities in different units, and a bound in
|
|
16
|
+
* rad on the angle does not become one on the charge — so `ab-spring-lc`
|
|
17
|
+
* declares no carriage for `position`.
|
|
18
|
+
*
|
|
19
|
+
* The witness W1φ integrates the two oscillators of W1a (m = 2, k = 8,
|
|
20
|
+
* x0 = 0.37 and L = 0.5, C = 0.25, q0 = −1.9: ω_s = 2, ω_LC = 2√2, and a
|
|
21
|
+
* NEGATIVE ratio q0/x0) by RK4 at the same step in physical time, and
|
|
22
|
+
* compares the circuit's phase at the mapped time with the spring's at every
|
|
23
|
+
* spring zero crossing. The angle variable of each motion is measured from its
|
|
24
|
+
* own release, so the sign of q0/x0 does not enter.
|
|
25
|
+
*
|
|
26
|
+
* @module atlas/oscillators/phase-carriage
|
|
27
|
+
* @internal
|
|
28
|
+
*/
|
|
29
|
+
import { phaseAt, rk4Step } from './pendulum-motion.js';
|
|
30
|
+
const [M, K, L, C, X0, Q0] = [2, 8, 0.5, 0.25, 0.37, -1.9];
|
|
31
|
+
const OMEGA_S = Math.sqrt(K / M);
|
|
32
|
+
const OMEGA_LC = Math.sqrt(1 / (L * C));
|
|
33
|
+
const SPRING_PERIODS = 20;
|
|
34
|
+
/** Zero crossings of u″ = −ω²u from rest at `u0`, stepping `h` in the oscillator's own time. */
|
|
35
|
+
function crossings(omega, u0, h, tEnd) {
|
|
36
|
+
const out = [];
|
|
37
|
+
let x = u0;
|
|
38
|
+
let v = 0;
|
|
39
|
+
const w2 = omega * omega;
|
|
40
|
+
for (let i = 0; i * h < tEnd; i++) {
|
|
41
|
+
const [nx, nv] = rk4Step(x, v, h, (s) => -w2 * s);
|
|
42
|
+
if (nx === 0 || x > 0 !== nx > 0)
|
|
43
|
+
out.push(i * h + (h * x) / (x - nx));
|
|
44
|
+
x = nx;
|
|
45
|
+
v = nv;
|
|
46
|
+
}
|
|
47
|
+
return out;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* max over the spring's zero crossings c_k of |φ_LC(timeScale · c_k) − (π/2 + kπ)|,
|
|
51
|
+
* both integrated at `stepsPerSpringPeriod` steps of the spring's period.
|
|
52
|
+
* @internal
|
|
53
|
+
*/
|
|
54
|
+
export function measureCarriedPhaseError(stepsPerSpringPeriod, timeScale) {
|
|
55
|
+
const tSpring = SPRING_PERIODS * ((2 * Math.PI) / OMEGA_S);
|
|
56
|
+
const h = (2 * Math.PI) / OMEGA_S / stepsPerSpringPeriod;
|
|
57
|
+
const spring = crossings(OMEGA_S, X0, h, tSpring);
|
|
58
|
+
const lc = crossings(OMEGA_LC, Q0, h, tSpring * Math.max(1, timeScale) + 1);
|
|
59
|
+
let worst = 0;
|
|
60
|
+
for (let k = 0; k < spring.length; k++) {
|
|
61
|
+
worst = Math.max(worst, Math.abs(phaseAt(lc, timeScale * spring[k]) - (Math.PI / 2 + k * Math.PI)));
|
|
62
|
+
}
|
|
63
|
+
return worst;
|
|
64
|
+
}
|
|
65
|
+
const W1PHI = {
|
|
66
|
+
id: 'W1φ',
|
|
67
|
+
evaluate: (steps) => measureCarriedPhaseError(steps, OMEGA_S / OMEGA_LC),
|
|
68
|
+
target: 0,
|
|
69
|
+
coarseResolution: 100,
|
|
70
|
+
fineResolution: 400,
|
|
71
|
+
tolerance: 1e-6,
|
|
72
|
+
};
|
|
73
|
+
/** @internal */
|
|
74
|
+
export const SPRING_LC_PHASE_CARRIAGE = {
|
|
75
|
+
bridgeId: 'ab-spring-lc',
|
|
76
|
+
observable: 'phase',
|
|
77
|
+
map: 'the circuit\'s angle variable at t_LC = t·ω_s/ω_LC is the spring\'s at t, because q(t_LC) = (q0/x0)·x(t)',
|
|
78
|
+
derivation: 'a fixed nonzero multiple of the displacement at the mapped time shares its zero crossings and turning points, so the ' +
|
|
79
|
+
'angle variable is the same function of the mapped time; a phase error against the spring at t is the same ' +
|
|
80
|
+
'error against the circuit at t_LC, exactly',
|
|
81
|
+
premises: [
|
|
82
|
+
'the circuit is released from rest: q(0) = q0, i(0) = 0 (either sign of q0/x0: each phase is measured from its own release)',
|
|
83
|
+
'lossless and unforced (the bridge\'s own side conditions)',
|
|
84
|
+
],
|
|
85
|
+
timeMap: 't is read on the spring\'s clock (the unit of T0); the circuit is read at t·ω_s/ω_LC, the same t when LC = m/k',
|
|
86
|
+
witnesses: [
|
|
87
|
+
{
|
|
88
|
+
id: 'W1φ',
|
|
89
|
+
kind: 'numeric',
|
|
90
|
+
test: 'tests/atlas/spring-lc-phase-carriage.test.ts',
|
|
91
|
+
tolerance: `RK4 circuit phase at the mapped time within 1e-6 rad of the spring's at every crossing over ${SPRING_PERIODS} spring periods (W1a's m = 2, k = 8, x0 = 0.37; L = 0.5, C = 0.25, q0 = −1.9)`,
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
checks: [W1PHI],
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=phase-carriage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phase-carriage.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/phase-carriage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ab-pendulum-linear`'s declared translation from its bound's quantity, the
|
|
3
|
+
* relative period error, into the accumulated PHASE error.
|
|
4
|
+
*
|
|
5
|
+
* Both motions start from rest at θ0 at t = 0. The phase is the angle
|
|
6
|
+
* variable: 0 at release and advancing by 2π per period, uniformly in time,
|
|
7
|
+
* so the pendulum's is 2π t/T and the linear oscillator's 2π t/T0. With the
|
|
8
|
+
* bound's `ε = T/T0 − 1` (normalised by the reduced model's period),
|
|
9
|
+
*
|
|
10
|
+
* Δφ(t) = 2π t/T0 − 2π t/T = 2π (t/T0) · ε/(1 + ε),
|
|
11
|
+
*
|
|
12
|
+
* which reaches a tolerance Δ at `t* = Δ · T0 · (1 + ε)/(2π ε)`. Nothing is
|
|
13
|
+
* truncated: the map is exact in ε, and ε itself is the bound's closed form.
|
|
14
|
+
*
|
|
15
|
+
* It is NOT a bound on the pointwise position error |θ(t) − θ_lin(t)|: the
|
|
16
|
+
* pendulum's waveform carries a third harmonic of amplitude ≈ θ0³/192, which
|
|
17
|
+
* is not a phase, and the position error at a given phase error depends on
|
|
18
|
+
* where in the cycle the observation falls.
|
|
19
|
+
*
|
|
20
|
+
* The witness W7p integrates BOTH equations of motion and reads each phase off
|
|
21
|
+
* its zero crossings — crossing k is at phase π/2 + kπ by the symmetry of a
|
|
22
|
+
* release from rest, and the angle variable is linear in time between them —
|
|
23
|
+
* so it measures the drift without using ε or the elliptic integral. It runs
|
|
24
|
+
* at the fixture θ0 = 0.2 as the regression anchor, and again at the caller's
|
|
25
|
+
* point, bounded to 512 T0 of integration (`phasePointCheck`).
|
|
26
|
+
*
|
|
27
|
+
* @module atlas/oscillators/phase-translation
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
import type { ObservableTranslation } from '../translation.js';
|
|
31
|
+
/**
|
|
32
|
+
* The time, in units of T0, at which the MEASURED phase lead of the linear
|
|
33
|
+
* oscillator over the pendulum first reaches `tolerance` rad, both integrated
|
|
34
|
+
* by RK4 at `stepsPerPeriod` steps of T0.
|
|
35
|
+
*
|
|
36
|
+
* @returns NaN if the drift does not reach `tolerance` within 2^16 periods.
|
|
37
|
+
* @internal
|
|
38
|
+
*/
|
|
39
|
+
export declare function measurePhaseHorizon(theta0: number, tolerance: number, stepsPerPeriod: number): number;
|
|
40
|
+
/** As `measurePhaseHorizon`, over exactly `periods` of T0; NaN if the drift does not reach `tolerance` in them. @internal */
|
|
41
|
+
export declare function measurePhaseHorizonWithin(theta0: number, tolerance: number, stepsPerPeriod: number, periods: number): number;
|
|
42
|
+
/** The point witness integrates at most this many periods of T0, so its cost is bounded. */
|
|
43
|
+
export declare const PHASE_POINT_MAX_PERIODS = 512;
|
|
44
|
+
/** @internal */
|
|
45
|
+
export declare const PENDULUM_PHASE_TRANSLATION: ObservableTranslation;
|
|
46
|
+
//# sourceMappingURL=phase-translation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phase-translation.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/phase-translation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAM/D;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAMrG;AAED,6HAA6H;AAC7H,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAc5H;AAWD,4FAA4F;AAC5F,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAyD3C,gBAAgB;AAChB,eAAO,MAAM,0BAA0B,EAAE,qBA+CxC,CAAC"}
|