universal-physics-tensor 10.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 +4 -3
- package/bin/upt.mjs +13 -1
- package/data/atlas/atlas.json +25 -25
- package/data/atlas/atlas.jsonld +1 -1
- package/data/atlas/diffusion.json +6 -6
- package/data/atlas/oscillators.json +7 -7
- package/data/atlas/waves.json +14 -14
- package/data/atlas/witness-results.json +11 -11
- package/data/bridge-catalog.json +371 -228
- package/data/bridge-catalog.schema.json +45 -7
- package/dist/atlas/applicability.d.ts.map +1 -1
- package/dist/atlas/applicability.js +21 -15
- package/dist/atlas/applicability.js.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts +9 -1
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.js +15 -13
- package/dist/atlas/benchmark/hybrid-retrieval.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/stats.d.ts +2 -2
- package/dist/atlas/benchmark/stats.d.ts.map +1 -1
- package/dist/atlas/benchmark/stats.js +15 -7
- package/dist/atlas/benchmark/stats.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.map +1 -1
- package/dist/atlas/chain-pipeline.js +7 -8
- package/dist/atlas/chain-pipeline.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 -12
- 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 -39
- 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/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/link-prediction.d.ts +106 -3
- 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/oscillators/bridges-coarse.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-coarse.js +7 -11
- 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 -7
- 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 -34
- 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/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/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-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/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 +34 -31
- package/dist/atlas/physjs-ref.d.ts.map +1 -1
- package/dist/atlas/physjs-ref.js +55 -53
- package/dist/atlas/physjs-ref.js.map +1 -1
- package/dist/atlas/physjs-reviewed.d.ts +1 -1
- package/dist/atlas/physjs-reviewed.js +15 -15
- package/dist/atlas/physjs-reviewed.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/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/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/waves/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/waves/bridges-closure.js +2 -6
- 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 -48
- package/dist/atlas/waves/bridges.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-numeric.d.ts +30 -0
- package/dist/atlas/witness-numeric.d.ts.map +1 -1
- package/dist/atlas/witness-numeric.js +53 -0
- package/dist/atlas/witness-numeric.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/bridges/catalog-load.d.ts.map +1 -1
- package/dist/bridges/catalog-load.js +13 -8
- package/dist/bridges/catalog-load.js.map +1 -1
- package/dist/bridges/catalog-types.d.ts +26 -2
- 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/evaluation-errors.d.ts +31 -1
- package/dist/bridges/evaluation-errors.d.ts.map +1 -1
- package/dist/bridges/evaluation-errors.js +20 -2
- package/dist/bridges/evaluation-errors.js.map +1 -1
- package/dist/bridges/evaluator-inputs.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.map +1 -1
- package/dist/bridges/evaluators.js +27 -12
- package/dist/bridges/evaluators.js.map +1 -1
- package/dist/bridges/expr-parse.d.ts +11 -0
- package/dist/bridges/expr-parse.d.ts.map +1 -1
- package/dist/bridges/expr-parse.js +14 -5
- package/dist/bridges/expr-parse.js.map +1 -1
- package/dist/bridges/holds.d.ts +35 -3
- package/dist/bridges/holds.d.ts.map +1 -1
- package/dist/bridges/holds.js +117 -23
- package/dist/bridges/holds.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/relation-eval.d.ts +4 -4
- package/dist/bridges/relation-eval.d.ts.map +1 -1
- package/dist/bridges/relation-eval.js +15 -16
- package/dist/bridges/relation-eval.js.map +1 -1
- package/dist/bridges/sensitivity.d.ts.map +1 -1
- package/dist/bridges/sensitivity.js +3 -3
- package/dist/bridges/sensitivity.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/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 +4 -5
- 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 +3 -4
- 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 +4 -10
- 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 +9 -17
- 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/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.map +1 -1
- package/dist/canonical/linkage.js +25 -44
- package/dist/canonical/linkage.js.map +1 -1
- package/dist/canonical/normal-form.d.ts.map +1 -1
- package/dist/canonical/normal-form.js +5 -11
- package/dist/canonical/normal-form.js.map +1 -1
- package/dist/canonical/structural.d.ts +21 -21
- package/dist/canonical/structural.d.ts.map +1 -1
- package/dist/canonical/structural.js +40 -19
- 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 +6 -5
- 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 +6 -9
- package/dist/cases/damped-resonator.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 +21 -23
- 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 +4 -4
- 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/cli/args.d.ts +23 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +30 -8
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/bindings.d.ts.map +1 -1
- package/dist/cli/bindings.js +5 -4
- package/dist/cli/bindings.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 +0 -9
- package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
- package/dist/cli/commands/_atlas-map.js +8 -18
- 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 +8 -9
- 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 +8 -5
- 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 +8 -1
- 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/confront.d.ts.map +1 -1
- package/dist/cli/commands/confront.js +8 -14
- package/dist/cli/commands/confront.js.map +1 -1
- package/dist/cli/commands/derive.d.ts.map +1 -1
- package/dist/cli/commands/derive.js +22 -22
- 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 +6 -2
- 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 +1 -0
- 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 +65 -37
- 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 +2 -1
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/ground.d.ts.map +1 -1
- package/dist/cli/commands/ground.js +1 -0
- package/dist/cli/commands/ground.js.map +1 -1
- package/dist/cli/commands/map.d.ts.map +1 -1
- package/dist/cli/commands/map.js +75 -5
- 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 +12 -9
- 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 +25 -3
- package/dist/cli/commands/path.js.map +1 -1
- package/dist/cli/commands/probe.d.ts.map +1 -1
- package/dist/cli/commands/probe.js +59 -16
- package/dist/cli/commands/probe.js.map +1 -1
- package/dist/cli/commands/regime.d.ts.map +1 -1
- package/dist/cli/commands/regime.js +1 -0
- 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 +1 -0
- 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 +1 -0
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/symbolic.d.ts.map +1 -1
- package/dist/cli/commands/symbolic.js +19 -28
- 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 +4 -2
- package/dist/cli/commands/testplan.js.map +1 -1
- package/dist/cli/expr-print.d.ts +0 -2
- package/dist/cli/expr-print.d.ts.map +1 -1
- package/dist/cli/expr-print.js +7 -31
- package/dist/cli/expr-print.js.map +1 -1
- package/dist/cli/main.d.ts +7 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +18 -3
- package/dist/cli/main.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 +20 -0
- 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/record-reach.js +2 -2
- 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 +6 -5
- 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 +9 -8
- package/dist/cli/record.js.map +1 -1
- package/dist/cli/search-index.d.ts.map +1 -1
- package/dist/cli/search-index.js +7 -6
- 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/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 +34 -5
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +28 -4
- package/dist/cli-api.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/axes.d.ts +0 -6
- package/dist/composition/axes.d.ts.map +1 -1
- package/dist/composition/axes.js +6 -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 +17 -0
- package/dist/composition/bridge-analysis.d.ts.map +1 -1
- package/dist/composition/bridge-analysis.js +102 -55
- package/dist/composition/bridge-analysis.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 +122 -24
- package/dist/composition/canonical-compare.js.map +1 -1
- package/dist/composition/canonical-graph.d.ts +1 -1
- package/dist/composition/canonical-graph.d.ts.map +1 -1
- package/dist/composition/canonical-graph.js +9 -36
- 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/catalog-graph.d.ts.map +1 -1
- package/dist/composition/catalog-graph.js +2 -5
- package/dist/composition/catalog-graph.js.map +1 -1
- package/dist/composition/chain-candidate.d.ts +8 -0
- package/dist/composition/chain-candidate.d.ts.map +1 -1
- package/dist/composition/chain-candidate.js +9 -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-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-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 +13 -5
- 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/discovery.d.ts +56 -0
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +114 -60
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/edge.d.ts +21 -2
- package/dist/composition/edge.d.ts.map +1 -1
- package/dist/composition/edge.js +23 -1
- package/dist/composition/edge.js.map +1 -1
- 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 +3 -12
- package/dist/composition/explain.d.ts.map +1 -1
- package/dist/composition/explain.js +7 -20
- 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 +15 -20
- package/dist/composition/expr-simplify.js.map +1 -1
- package/dist/composition/formula-shape.d.ts +23 -4
- package/dist/composition/formula-shape.d.ts.map +1 -1
- package/dist/composition/formula-shape.js +57 -17
- package/dist/composition/formula-shape.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/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 +8 -4
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +3 -2
- package/dist/composition/index.js.map +1 -1
- package/dist/composition/mathts-quiet.d.ts +4 -3
- package/dist/composition/mathts-quiet.d.ts.map +1 -1
- package/dist/composition/mathts-quiet.js +4 -3
- package/dist/composition/mathts-quiet.js.map +1 -1
- package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -1
- package/dist/composition/mathts-scalar-symbols.js +2 -1
- package/dist/composition/mathts-scalar-symbols.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/falsify.d.ts.map +1 -1
- package/dist/composition/probe/falsify.js +2 -0
- package/dist/composition/probe/falsify.js.map +1 -1
- package/dist/composition/probe/fit.d.ts +6 -0
- package/dist/composition/probe/fit.d.ts.map +1 -1
- package/dist/composition/probe/fit.js +46 -22
- 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 +14 -0
- package/dist/composition/probe/index.d.ts.map +1 -1
- package/dist/composition/probe/index.js +6 -0
- 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/pipeline.d.ts.map +1 -1
- package/dist/composition/probe/pipeline.js +10 -4
- 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 +7 -4
- package/dist/composition/probe/problem.d.ts.map +1 -1
- package/dist/composition/probe/problem.js +177 -49
- 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/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 +31 -9
- package/dist/composition/probe/study.d.ts.map +1 -1
- package/dist/composition/probe/study.js +236 -181
- 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 +3 -0
- package/dist/composition/probe/types.d.ts.map +1 -1
- package/dist/composition/probe/types.js.map +1 -1
- package/dist/composition/proposed-bridges.d.ts +41 -10
- package/dist/composition/proposed-bridges.d.ts.map +1 -1
- package/dist/composition/proposed-bridges.js +100 -55
- package/dist/composition/proposed-bridges.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/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.map +1 -1
- package/dist/composition/retrodiction.js +2 -1
- package/dist/composition/retrodiction.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/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 +30 -30
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +47 -30
- 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/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 +2 -0
- package/dist/core/json-schema.d.ts.map +1 -1
- package/dist/core/json-schema.js +14 -13
- package/dist/core/json-schema.js.map +1 -1
- package/dist/core/labeled-tensor.d.ts.map +1 -1
- package/dist/core/labeled-tensor.js +0 -8
- 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/tensor.d.ts.map +1 -1
- package/dist/core/tensor.js +24 -0
- package/dist/core/tensor.js.map +1 -1
- package/dist/core/types.d.ts +5 -5
- package/dist/diff/bridge-gradient.d.ts +19 -6
- package/dist/diff/bridge-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-gradient.js +19 -11
- package/dist/diff/bridge-gradient.js.map +1 -1
- package/dist/diff/bridge-specs.d.ts.map +1 -1
- package/dist/diff/bridge-specs.js +3 -0
- 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 +7 -0
- package/dist/dimensional/ast-builders.d.ts.map +1 -1
- package/dist/dimensional/ast-builders.js +11 -0
- 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/buckingham.d.ts.map +1 -1
- package/dist/dimensional/buckingham.js +15 -27
- package/dist/dimensional/buckingham.js.map +1 -1
- package/dist/dimensional/constant-rows.js +9 -9
- package/dist/dimensional/constant-rows.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/errors.d.ts +1 -1
- package/dist/dimensional/errors.d.ts.map +1 -1
- package/dist/dimensional/errors.js +1 -15
- 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/gauge-field.d.ts.map +1 -1
- package/dist/dimensional/gauge-field.js +2 -2
- 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 +44 -19
- package/dist/dimensional/hyphen-names.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/symbolic-constants.d.ts +9 -0
- package/dist/dimensional/symbolic-constants.d.ts.map +1 -1
- package/dist/dimensional/symbolic-constants.js +13 -1
- package/dist/dimensional/symbolic-constants.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-data.js +2 -2
- package/dist/dimensional/unit-data.js.map +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -4
- package/dist/index.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/covariant-eikonal.d.ts.map +1 -1
- package/dist/numerical/covariant-eikonal.js +34 -11
- package/dist/numerical/covariant-eikonal.js.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.js +3 -2
- package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
- package/dist/numerical/errors.d.ts.map +1 -1
- package/dist/numerical/errors.js +0 -3
- package/dist/numerical/errors.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/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/mathts-engine.d.ts.map +1 -1
- package/dist/numerical/mathts-engine.js +10 -24
- 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-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/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.map +1 -1
- package/dist/numerical/quadrature.js +8 -10
- 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 +12 -0
- package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
- package/dist/numerical/spacetime-metrics.js +72 -56
- 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/tensor-engine.d.ts +21 -0
- 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/relations/regime.d.ts +10 -0
- package/dist/relations/regime.d.ts.map +1 -1
- package/dist/relations/regime.js +18 -1
- package/dist/relations/regime.js.map +1 -1
- package/package.json +7 -7
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
* @module atlas/diffusion/bridges
|
|
24
24
|
*/
|
|
25
25
|
import { LENGTH, MASS, ACTION, TIME } from '../../dimensional/types.js';
|
|
26
|
-
import {
|
|
26
|
+
import { makeRegime } from '../regime.js';
|
|
27
27
|
import { DENSITY, DIFFUSIVITY, SPECIFIC_HEAT, THERMAL_CONDUCTIVITY } from './dimensions.js';
|
|
28
28
|
import { DIFFUSION_FAMILY_NAME } from './models.js';
|
|
29
29
|
const TEST = 'tests/atlas/diffusion.test.ts';
|
|
@@ -52,23 +52,19 @@ export const BRIDGE_WALK_DIFFUSION = {
|
|
|
52
52
|
'many steps: Δt/t ≪ 1',
|
|
53
53
|
'symmetric, unbiased steps',
|
|
54
54
|
],
|
|
55
|
-
regime:
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
{ name: 'D', dim: DIFFUSIVITY },
|
|
69
|
-
{ name: 't', dim: TIME },
|
|
70
|
-
], []),
|
|
71
|
-
},
|
|
55
|
+
regime: makeRegime(DIFFUSION_FAMILY_NAME, [
|
|
56
|
+
{ name: 'dx', dim: LENGTH },
|
|
57
|
+
{ name: 'dt', dim: TIME },
|
|
58
|
+
{ name: 'D', dim: DIFFUSIVITY },
|
|
59
|
+
{ name: 't', dim: TIME },
|
|
60
|
+
], [], [
|
|
61
|
+
{
|
|
62
|
+
group: 'dt · t^-1',
|
|
63
|
+
op: '<=',
|
|
64
|
+
bound: WALK_MAX_STEP_FRACTION,
|
|
65
|
+
alias: 'Δt/t ≪ 1 (machine form ≤ 0.01, the coarse resolution WD1 measures)',
|
|
66
|
+
},
|
|
67
|
+
]),
|
|
72
68
|
counterexamples: [
|
|
73
69
|
{
|
|
74
70
|
description: 'After 100 steps the walker cannot be more than 100 sites from the origin, so its ' +
|
|
@@ -119,18 +115,14 @@ export const BRIDGE_HEAT_DIFFUSION = {
|
|
|
119
115
|
'homogeneous isotropic medium: κ, ρ, c_p constant',
|
|
120
116
|
'no sources and no advection (the Péclet number is not applicable to either model)',
|
|
121
117
|
],
|
|
122
|
-
regime:
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
{ name: 'ell', dim: LENGTH },
|
|
131
|
-
{ name: 't', dim: TIME },
|
|
132
|
-
], []),
|
|
133
|
-
},
|
|
118
|
+
regime: makeRegime(DIFFUSION_FAMILY_NAME, [
|
|
119
|
+
{ name: 'kappa', dim: THERMAL_CONDUCTIVITY },
|
|
120
|
+
{ name: 'rho', dim: DENSITY },
|
|
121
|
+
{ name: 'cp', dim: SPECIFIC_HEAT },
|
|
122
|
+
{ name: 'D', dim: DIFFUSIVITY },
|
|
123
|
+
{ name: 'ell', dim: LENGTH },
|
|
124
|
+
{ name: 't', dim: TIME },
|
|
125
|
+
], [], []),
|
|
134
126
|
counterexamples: [],
|
|
135
127
|
witnesses: [
|
|
136
128
|
{
|
|
@@ -172,15 +164,11 @@ export const BRIDGE_SCHRODINGER_DIFFUSION = {
|
|
|
172
164
|
'V = 0 (free particle)',
|
|
173
165
|
'the continuation is formal: real Schrödinger time maps to imaginary diffusion time',
|
|
174
166
|
],
|
|
175
|
-
regime:
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
{ name: 'm', dim: MASS },
|
|
181
|
-
{ name: 'D', dim: DIFFUSIVITY },
|
|
182
|
-
], []),
|
|
183
|
-
},
|
|
167
|
+
regime: makeRegime(DIFFUSION_FAMILY_NAME, [
|
|
168
|
+
{ name: 'hbar', dim: ACTION },
|
|
169
|
+
{ name: 'm', dim: MASS },
|
|
170
|
+
{ name: 'D', dim: DIFFUSIVITY },
|
|
171
|
+
], [], []),
|
|
184
172
|
counterexamples: [
|
|
185
173
|
{
|
|
186
174
|
description: 'The squared norm of the Wick-rotated kernel falls from 1.755 at τ = 0 to 0.580 at ' +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridges.js","sourceRoot":"","sources":["../../../src/atlas/diffusion/bridges.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Atlas Phase 4, S4.4 — the three bridges of the diffusion family.\n *\n * Design note: `docs/planning/Atlas-Phase-4-Design.md` §4.\n *\n * | Bridge | Relation | Witnesses |\n * |---|---|---|\n * | random walk → Fick | `coarse-graining` | WD1 (convergence), WD1b (light cone) |\n * | heat ↔ Fick | `exact-equivalence` | WD2 (convergence), WD2s (CAS) |\n * | free Schrödinger → Fick | `analytic-continuation` | W5, WD3 (convergence), WD3b (norm) |\n *\n * Regime groups are DERIVED through `deriveRegimeGroups` and keyed by\n * `PiGroup.formula`; every inequality names one of those keys. The Fourier\n * number `D·t/ℓ²` appears as `kappa · rho^-1 · cp^-1 · ell^-2 · t` on the heat\n * side. **The Péclet number is not applicable to any model here**: it needs an\n * advection velocity, and none of the four models has one. It is stated as a\n * side condition (`no advection`) rather than invented as a group.\n *\n * Tolerances were set AFTER measuring each witness at several resolutions and\n * are stated in the witness records; `tests/atlas/diffusion.test.ts` asserts\n * the measured numbers.\n *\n * @module atlas/diffusion/bridges\n */\n\nimport { LENGTH, MASS, ACTION, TIME } from '../../dimensional/types.js';\nimport { deriveRegimeGroups } from '../regime.js';\nimport type { AtlasBridge } from '../types.js';\nimport { DENSITY, DIFFUSIVITY, SPECIFIC_HEAT, THERMAL_CONDUCTIVITY } from './dimensions.js';\nimport { DIFFUSION_FAMILY_NAME } from './models.js';\n\nconst TEST = 'tests/atlas/diffusion.test.ts';\nconst WITNESS_RESULTS_TEST = 'tests/atlas/witness-results.test.ts';\n\n/** The Δt/t ceiling of the walk → diffusion regime: WD1's coarse resolution, 100 steps. @internal */\nexport const WALK_MAX_STEP_FRACTION = 0.01;\n\n/** Bridge: lattice random walk → Fick diffusion, by coarse-graining. @internal */\nexport const BRIDGE_WALK_DIFFUSION: AtlasBridge = {\n id: 'ab-walk-diffusion',\n relation: 'coarse-graining',\n premises: ['model-random-walk'],\n conclusion: 'model-fick',\n transformation: 'P(n, k)/(2Δx) ↦ c(x = nΔx, t = kΔt), with the closure D = Δx²/(2Δt)',\n preserves: [\n 'mean-square displacement ⟨x²⟩ = 2Dt, exactly at every step',\n 'total probability',\n 'the Gaussian long-time profile',\n ],\n doesNotPreserve: [\n 'the lattice spacing Δx and the step Δt as independent scales — only Δx²/Δt survives',\n 'parity: after an even number of steps only even sites are occupied',\n 'the finite propagation speed Δx/Δt: diffusion is positive everywhere at once',\n ],\n sideConditions: [\n 'the closure D = Δx²/(2Δt) is held fixed as Δx, Δt → 0',\n 'many steps: Δt/t ≪ 1',\n 'symmetric, unbiased steps',\n ],\n regime: {\n family: DIFFUSION_FAMILY_NAME,\n inequalities: [\n {\n group: 'dt · t^-1',\n op: '<=',\n bound: WALK_MAX_STEP_FRACTION,\n alias: 'Δt/t ≪ 1 (machine form ≤ 0.01, the coarse resolution WD1 measures)',\n },\n ],\n groupDefinitions: deriveRegimeGroups(\n DIFFUSION_FAMILY_NAME,\n [\n { name: 'dx', dim: LENGTH },\n { name: 'dt', dim: TIME },\n { name: 'D', dim: DIFFUSIVITY },\n { name: 't', dim: TIME },\n ],\n [],\n ),\n },\n counterexamples: [\n {\n description:\n 'After 100 steps the walker cannot be more than 100 sites from the origin, so its ' +\n 'density at site 101 is exactly 0, while the diffusion kernel there is positive: the ' +\n 'coarse-grained model has no light cone.',\n witness: 'WD1b',\n },\n ],\n witnesses: [\n {\n id: 'WD1',\n kind: 'numeric',\n test: TEST,\n tolerance:\n 'density at the origin within 1e-4 of (4πDt)^-1/2 at 1000 steps; error shrinks with refinement',\n },\n {\n id: 'WD1b',\n kind: 'numeric',\n test: TEST,\n tolerance: 'walk density exactly 0 beyond the light cone while the kernel is > 0',\n },\n ],\n citations: [\n 'Einstein, Ann. Phys. 17 (1905) 549 - Brownian motion; the mean-square displacement grows as 2Dt',\n 'Feller, An Introduction to Probability Theory and Its Applications, Vol. I - the symmetric random walk and the de Moivre-Laplace limit',\n ],\n reviewStatus: 'proposed',\n};\n\n/** Bridge: heat conduction ↔ Fick diffusion, an exact equivalence. @internal */\nexport const BRIDGE_HEAT_DIFFUSION: AtlasBridge = {\n id: 'ab-heat-diffusion',\n relation: 'exact-equivalence',\n premises: ['model-heat'],\n conclusion: 'model-fick',\n transformation: 'T ↦ c, κ/(ρ c_p) ↦ D',\n inverse: 'c ↦ T, D ↦ κ/(ρ c_p) (any κ, ρ, c_p with that ratio)',\n preserves: [\n 'the solution operator: equal initial data give equal solutions at every t',\n 'Fourier-mode decay rates D q²',\n 'the Fourier number D t/ℓ²',\n ],\n doesNotPreserve: [\n 'physical interpretation: temperature versus concentration',\n 'units',\n 'the separate values of κ, ρ and c_p — only their ratio survives',\n ],\n sideConditions: [\n 'homogeneous isotropic medium: κ, ρ, c_p constant',\n 'no sources and no advection (the Péclet number is not applicable to either model)',\n ],\n regime: {\n family: DIFFUSION_FAMILY_NAME,\n inequalities: [],\n groupDefinitions: deriveRegimeGroups(\n DIFFUSION_FAMILY_NAME,\n [\n { name: 'kappa', dim: THERMAL_CONDUCTIVITY },\n { name: 'rho', dim: DENSITY },\n { name: 'cp', dim: SPECIFIC_HEAT },\n { name: 'D', dim: DIFFUSIVITY },\n { name: 'ell', dim: LENGTH },\n { name: 't', dim: TIME },\n ],\n [],\n ),\n },\n counterexamples: [],\n witnesses: [\n {\n id: 'WD2',\n kind: 'numeric',\n test: TEST,\n tolerance:\n 'FTCS heat solution at x = 0 within 5e-4 of the Fick solution with D = κ/(ρ c_p) at 160 cells',\n },\n {\n id: 'WD2s',\n kind: 'symbolic',\n test: WITNESS_RESULTS_TEST,\n tolerance: 'CAS: κq²/(ρ c_p) under κ ↦ D ρ c_p minus D q² simplifies to literal 0',\n },\n ],\n citations: [\n 'Carslaw & Jaeger, Conduction of Heat in Solids - the heat equation and the thermal diffusivity κ/(ρ c_p)',\n 'Crank, The Mathematics of Diffusion - Fick’s second law and its identity with the heat-conduction equation',\n ],\n reviewStatus: 'proposed',\n};\n\n/** Bridge: free Schrödinger → Fick diffusion, by Wick rotation. @internal */\nexport const BRIDGE_SCHRODINGER_DIFFUSION: AtlasBridge = {\n id: 'ab-schrodinger-diffusion',\n relation: 'analytic-continuation',\n premises: ['model-schrodinger-free'],\n conclusion: 'model-fick',\n transformation: 't = −iτ: ψ(x, −iτ) ↦ c(x, τ), with D = ħ/(2m)',\n preserves: [\n 'linearity',\n 'the Gaussian kernel structure, with a spread growing linearly in time',\n ],\n doesNotPreserve: [\n 'unitarity: ∫|ψ|² dx is conserved, ∫φ² dx decays',\n 'oscillation and phase: the oscillating propagator becomes a decaying Gaussian',\n 'time-reversal symmetry: diffusion is irreversible',\n ],\n sideConditions: [\n 'V = 0 (free particle)',\n 'the continuation is formal: real Schrödinger time maps to imaginary diffusion time',\n ],\n regime: {\n family: DIFFUSION_FAMILY_NAME,\n inequalities: [],\n groupDefinitions: deriveRegimeGroups(\n DIFFUSION_FAMILY_NAME,\n [\n { name: 'hbar', dim: ACTION },\n { name: 'm', dim: MASS },\n { name: 'D', dim: DIFFUSIVITY },\n ],\n [],\n ),\n },\n counterexamples: [\n {\n description:\n 'The squared norm of the Wick-rotated kernel falls from 1.755 at τ = 0 to 0.580 at ' +\n 'τ = 4 (ħ = 1, m = 0.5, s = 0.7), where the Schrödinger norm would be conserved.',\n witness: 'WD3b',\n },\n ],\n witnesses: [\n {\n id: 'W5',\n kind: 'numeric',\n test: 'tests/atlas/quantum-support.test.ts',\n tolerance:\n 'coefficients ħ/2m, −1, 1/ħ; free-kernel sup-norm residual ratio of ∂τφ = (ħ/2m)∂²φ below 1e-4',\n },\n {\n id: 'WD3',\n kind: 'numeric',\n test: TEST,\n tolerance: 'finite-difference residual of ∂τφ = (ħ/2m)∂²φ below 1e-3 at h = 0.025',\n },\n {\n id: 'WD3b',\n kind: 'numeric',\n test: TEST,\n tolerance: '∫φ² dx matches s²√(2π/σ(τ)) within 1e-9 and decreases in τ',\n },\n ],\n citations: [\n 'Feynman & Hibbs, Quantum Mechanics and Path Integrals - the free-particle kernel and its imaginary-time form',\n 'Nelson, J. Math. Phys. 5 (1964) 332 - Feynman integrals and the Schrödinger equation (the analytic continuation to the heat kernel)',\n ],\n reviewStatus: 'proposed',\n};\n\n/** The diffusion family's bridges, in design-note order. @internal */\nexport const DIFFUSION_BRIDGES: readonly AtlasBridge[] = [\n BRIDGE_WALK_DIFFUSION,\n BRIDGE_HEAT_DIFFUSION,\n BRIDGE_SCHRODINGER_DIFFUSION,\n];\n"]}
|
|
1
|
+
{"version":3,"file":"bridges.js","sourceRoot":"","sources":["../../../src/atlas/diffusion/bridges.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Atlas Phase 4, S4.4 — the three bridges of the diffusion family.\n *\n * Design note: `docs/planning/Atlas-Phase-4-Design.md` §4.\n *\n * | Bridge | Relation | Witnesses |\n * |---|---|---|\n * | random walk → Fick | `coarse-graining` | WD1 (convergence), WD1b (light cone) |\n * | heat ↔ Fick | `exact-equivalence` | WD2 (convergence), WD2s (CAS) |\n * | free Schrödinger → Fick | `analytic-continuation` | W5, WD3 (convergence), WD3b (norm) |\n *\n * Regime groups are DERIVED through `deriveRegimeGroups` and keyed by\n * `PiGroup.formula`; every inequality names one of those keys. The Fourier\n * number `D·t/ℓ²` appears as `kappa · rho^-1 · cp^-1 · ell^-2 · t` on the heat\n * side. **The Péclet number is not applicable to any model here**: it needs an\n * advection velocity, and none of the four models has one. It is stated as a\n * side condition (`no advection`) rather than invented as a group.\n *\n * Tolerances were set AFTER measuring each witness at several resolutions and\n * are stated in the witness records; `tests/atlas/diffusion.test.ts` asserts\n * the measured numbers.\n *\n * @module atlas/diffusion/bridges\n */\n\nimport { LENGTH, MASS, ACTION, TIME } from '../../dimensional/types.js';\nimport { makeRegime } from '../regime.js';\nimport type { AtlasBridge } from '../types.js';\nimport { DENSITY, DIFFUSIVITY, SPECIFIC_HEAT, THERMAL_CONDUCTIVITY } from './dimensions.js';\nimport { DIFFUSION_FAMILY_NAME } from './models.js';\n\nconst TEST = 'tests/atlas/diffusion.test.ts';\nconst WITNESS_RESULTS_TEST = 'tests/atlas/witness-results.test.ts';\n\n/** The Δt/t ceiling of the walk → diffusion regime: WD1's coarse resolution, 100 steps. @internal */\nexport const WALK_MAX_STEP_FRACTION = 0.01;\n\n/** Bridge: lattice random walk → Fick diffusion, by coarse-graining. @internal */\nexport const BRIDGE_WALK_DIFFUSION: AtlasBridge = {\n id: 'ab-walk-diffusion',\n relation: 'coarse-graining',\n premises: ['model-random-walk'],\n conclusion: 'model-fick',\n transformation: 'P(n, k)/(2Δx) ↦ c(x = nΔx, t = kΔt), with the closure D = Δx²/(2Δt)',\n preserves: [\n 'mean-square displacement ⟨x²⟩ = 2Dt, exactly at every step',\n 'total probability',\n 'the Gaussian long-time profile',\n ],\n doesNotPreserve: [\n 'the lattice spacing Δx and the step Δt as independent scales — only Δx²/Δt survives',\n 'parity: after an even number of steps only even sites are occupied',\n 'the finite propagation speed Δx/Δt: diffusion is positive everywhere at once',\n ],\n sideConditions: [\n 'the closure D = Δx²/(2Δt) is held fixed as Δx, Δt → 0',\n 'many steps: Δt/t ≪ 1',\n 'symmetric, unbiased steps',\n ],\n regime: makeRegime(\n DIFFUSION_FAMILY_NAME,\n [\n { name: 'dx', dim: LENGTH },\n { name: 'dt', dim: TIME },\n { name: 'D', dim: DIFFUSIVITY },\n { name: 't', dim: TIME },\n ],\n [],\n [\n {\n group: 'dt · t^-1',\n op: '<=',\n bound: WALK_MAX_STEP_FRACTION,\n alias: 'Δt/t ≪ 1 (machine form ≤ 0.01, the coarse resolution WD1 measures)',\n },\n ],\n ),\n counterexamples: [\n {\n description:\n 'After 100 steps the walker cannot be more than 100 sites from the origin, so its ' +\n 'density at site 101 is exactly 0, while the diffusion kernel there is positive: the ' +\n 'coarse-grained model has no light cone.',\n witness: 'WD1b',\n },\n ],\n witnesses: [\n {\n id: 'WD1',\n kind: 'numeric',\n test: TEST,\n tolerance:\n 'density at the origin within 1e-4 of (4πDt)^-1/2 at 1000 steps; error shrinks with refinement',\n },\n {\n id: 'WD1b',\n kind: 'numeric',\n test: TEST,\n tolerance: 'walk density exactly 0 beyond the light cone while the kernel is > 0',\n },\n ],\n citations: [\n 'Einstein, Ann. Phys. 17 (1905) 549 - Brownian motion; the mean-square displacement grows as 2Dt',\n 'Feller, An Introduction to Probability Theory and Its Applications, Vol. I - the symmetric random walk and the de Moivre-Laplace limit',\n ],\n reviewStatus: 'proposed',\n};\n\n/** Bridge: heat conduction ↔ Fick diffusion, an exact equivalence. @internal */\nexport const BRIDGE_HEAT_DIFFUSION: AtlasBridge = {\n id: 'ab-heat-diffusion',\n relation: 'exact-equivalence',\n premises: ['model-heat'],\n conclusion: 'model-fick',\n transformation: 'T ↦ c, κ/(ρ c_p) ↦ D',\n inverse: 'c ↦ T, D ↦ κ/(ρ c_p) (any κ, ρ, c_p with that ratio)',\n preserves: [\n 'the solution operator: equal initial data give equal solutions at every t',\n 'Fourier-mode decay rates D q²',\n 'the Fourier number D t/ℓ²',\n ],\n doesNotPreserve: [\n 'physical interpretation: temperature versus concentration',\n 'units',\n 'the separate values of κ, ρ and c_p — only their ratio survives',\n ],\n sideConditions: [\n 'homogeneous isotropic medium: κ, ρ, c_p constant',\n 'no sources and no advection (the Péclet number is not applicable to either model)',\n ],\n regime: makeRegime(\n DIFFUSION_FAMILY_NAME,\n [\n { name: 'kappa', dim: THERMAL_CONDUCTIVITY },\n { name: 'rho', dim: DENSITY },\n { name: 'cp', dim: SPECIFIC_HEAT },\n { name: 'D', dim: DIFFUSIVITY },\n { name: 'ell', dim: LENGTH },\n { name: 't', dim: TIME },\n ],\n [],\n [],\n ),\n counterexamples: [],\n witnesses: [\n {\n id: 'WD2',\n kind: 'numeric',\n test: TEST,\n tolerance:\n 'FTCS heat solution at x = 0 within 5e-4 of the Fick solution with D = κ/(ρ c_p) at 160 cells',\n },\n {\n id: 'WD2s',\n kind: 'symbolic',\n test: WITNESS_RESULTS_TEST,\n tolerance: 'CAS: κq²/(ρ c_p) under κ ↦ D ρ c_p minus D q² simplifies to literal 0',\n },\n ],\n citations: [\n 'Carslaw & Jaeger, Conduction of Heat in Solids - the heat equation and the thermal diffusivity κ/(ρ c_p)',\n 'Crank, The Mathematics of Diffusion - Fick’s second law and its identity with the heat-conduction equation',\n ],\n reviewStatus: 'proposed',\n};\n\n/** Bridge: free Schrödinger → Fick diffusion, by Wick rotation. @internal */\nexport const BRIDGE_SCHRODINGER_DIFFUSION: AtlasBridge = {\n id: 'ab-schrodinger-diffusion',\n relation: 'analytic-continuation',\n premises: ['model-schrodinger-free'],\n conclusion: 'model-fick',\n transformation: 't = −iτ: ψ(x, −iτ) ↦ c(x, τ), with D = ħ/(2m)',\n preserves: [\n 'linearity',\n 'the Gaussian kernel structure, with a spread growing linearly in time',\n ],\n doesNotPreserve: [\n 'unitarity: ∫|ψ|² dx is conserved, ∫φ² dx decays',\n 'oscillation and phase: the oscillating propagator becomes a decaying Gaussian',\n 'time-reversal symmetry: diffusion is irreversible',\n ],\n sideConditions: [\n 'V = 0 (free particle)',\n 'the continuation is formal: real Schrödinger time maps to imaginary diffusion time',\n ],\n regime: makeRegime(\n DIFFUSION_FAMILY_NAME,\n [\n { name: 'hbar', dim: ACTION },\n { name: 'm', dim: MASS },\n { name: 'D', dim: DIFFUSIVITY },\n ],\n [],\n [],\n ),\n counterexamples: [\n {\n description:\n 'The squared norm of the Wick-rotated kernel falls from 1.755 at τ = 0 to 0.580 at ' +\n 'τ = 4 (ħ = 1, m = 0.5, s = 0.7), where the Schrödinger norm would be conserved.',\n witness: 'WD3b',\n },\n ],\n witnesses: [\n {\n id: 'W5',\n kind: 'numeric',\n test: 'tests/atlas/quantum-support.test.ts',\n tolerance:\n 'coefficients ħ/2m, −1, 1/ħ; free-kernel sup-norm residual ratio of ∂τφ = (ħ/2m)∂²φ below 1e-4',\n },\n {\n id: 'WD3',\n kind: 'numeric',\n test: TEST,\n tolerance: 'finite-difference residual of ∂τφ = (ħ/2m)∂²φ below 1e-3 at h = 0.025',\n },\n {\n id: 'WD3b',\n kind: 'numeric',\n test: TEST,\n tolerance: '∫φ² dx matches s²√(2π/σ(τ)) within 1e-9 and decreases in τ',\n },\n ],\n citations: [\n 'Feynman & Hibbs, Quantum Mechanics and Path Integrals - the free-particle kernel and its imaginary-time form',\n 'Nelson, J. Math. Phys. 5 (1964) 332 - Feynman integrals and the Schrödinger equation (the analytic continuation to the heat kernel)',\n ],\n reviewStatus: 'proposed',\n};\n\n/** The diffusion family's bridges, in design-note order. @internal */\nexport const DIFFUSION_BRIDGES: readonly AtlasBridge[] = [\n BRIDGE_WALK_DIFFUSION,\n BRIDGE_HEAT_DIFFUSION,\n BRIDGE_SCHRODINGER_DIFFUSION,\n];\n"]}
|
|
@@ -1,21 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Dimension constants the diffusion family needs
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* Redefined here with the same `dim(...)` arguments as their sources, the same
|
|
6
|
-
* discipline as `oscillators/dimensions.ts`. `tests/atlas/diffusion.test.ts`
|
|
7
|
-
* asserts the values against the canonical registry, so a future divergence
|
|
8
|
-
* fails a test rather than silently forking the physics.
|
|
2
|
+
* Dimension constants the diffusion family needs: the named shapes of
|
|
3
|
+
* `src/dimensional/types.ts`, under the names this family's modules use.
|
|
4
|
+
* `tests/atlas/models.test.ts` asserts they are those objects, not copies.
|
|
9
5
|
*
|
|
10
6
|
* @module atlas/diffusion/dimensions
|
|
11
7
|
*/
|
|
12
8
|
import type { Dimension } from '../../dimensional/types.js';
|
|
13
|
-
/** m²/s,
|
|
14
|
-
export
|
|
15
|
-
/**
|
|
16
|
-
export declare const THERMAL_CONDUCTIVITY: Dimension;
|
|
17
|
-
/** kg/m³, `L^-3 M` — `src/canonical/entries/thermo-nuclear-cosmo.ts:43`. @internal */
|
|
9
|
+
/** m²/s, thermal conductivity W·m⁻¹·K⁻¹, and specific heat J·kg⁻¹·K⁻¹: the named shapes of `dimensional/types.ts`. @internal */
|
|
10
|
+
export { DIFFUSIVITY, SPECIFIC_HEAT, THERMAL_CONDUCTIVITY } from '../../dimensional/types.js';
|
|
11
|
+
/** kg/m³, `L^-3 M`: `MASS_DENSITY`. @internal */
|
|
18
12
|
export declare const DENSITY: Dimension;
|
|
19
|
-
/** J·kg⁻¹·K⁻¹, `L^2 T^-2 Θ^-1` — `src/canonical/entries/thermo-nuclear-cosmo.ts:35`. @internal */
|
|
20
|
-
export declare const SPECIFIC_HEAT: Dimension;
|
|
21
13
|
//# sourceMappingURL=dimensions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dimensions.d.ts","sourceRoot":"","sources":["../../../src/atlas/diffusion/dimensions.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dimensions.d.ts","sourceRoot":"","sources":["../../../src/atlas/diffusion/dimensions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAG5D,gIAAgI;AAChI,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAE9F,iDAAiD;AACjD,eAAO,MAAM,OAAO,EAAE,SAAwB,CAAC"}
|
|
@@ -1,21 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Dimension constants the diffusion family needs
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* Redefined here with the same `dim(...)` arguments as their sources, the same
|
|
6
|
-
* discipline as `oscillators/dimensions.ts`. `tests/atlas/diffusion.test.ts`
|
|
7
|
-
* asserts the values against the canonical registry, so a future divergence
|
|
8
|
-
* fails a test rather than silently forking the physics.
|
|
2
|
+
* Dimension constants the diffusion family needs: the named shapes of
|
|
3
|
+
* `src/dimensional/types.ts`, under the names this family's modules use.
|
|
4
|
+
* `tests/atlas/models.test.ts` asserts they are those objects, not copies.
|
|
9
5
|
*
|
|
10
6
|
* @module atlas/diffusion/dimensions
|
|
11
7
|
*/
|
|
12
|
-
import {
|
|
13
|
-
/** m²/s,
|
|
14
|
-
export
|
|
15
|
-
/**
|
|
16
|
-
export const
|
|
17
|
-
/** kg/m³, `L^-3 M` — `src/canonical/entries/thermo-nuclear-cosmo.ts:43`. @internal */
|
|
18
|
-
export const DENSITY = dim(-3, 1);
|
|
19
|
-
/** J·kg⁻¹·K⁻¹, `L^2 T^-2 Θ^-1` — `src/canonical/entries/thermo-nuclear-cosmo.ts:35`. @internal */
|
|
20
|
-
export const SPECIFIC_HEAT = dim(2, 0, -2, 0, -1);
|
|
8
|
+
import { MASS_DENSITY } from '../../dimensional/types.js';
|
|
9
|
+
/** m²/s, thermal conductivity W·m⁻¹·K⁻¹, and specific heat J·kg⁻¹·K⁻¹: the named shapes of `dimensional/types.ts`. @internal */
|
|
10
|
+
export { DIFFUSIVITY, SPECIFIC_HEAT, THERMAL_CONDUCTIVITY } from '../../dimensional/types.js';
|
|
11
|
+
/** kg/m³, `L^-3 M`: `MASS_DENSITY`. @internal */
|
|
12
|
+
export const DENSITY = MASS_DENSITY;
|
|
21
13
|
//# sourceMappingURL=dimensions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dimensions.js","sourceRoot":"","sources":["../../../src/atlas/diffusion/dimensions.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dimensions.js","sourceRoot":"","sources":["../../../src/atlas/diffusion/dimensions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,gIAAgI;AAChI,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAE9F,iDAAiD;AACjD,MAAM,CAAC,MAAM,OAAO,GAAc,YAAY,CAAC","sourcesContent":["/**\n * Dimension constants the diffusion family needs: the named shapes of\n * `src/dimensional/types.ts`, under the names this family's modules use.\n * `tests/atlas/models.test.ts` asserts they are those objects, not copies.\n *\n * @module atlas/diffusion/dimensions\n */\n\nimport type { Dimension } from '../../dimensional/types.js';\nimport { MASS_DENSITY } from '../../dimensional/types.js';\n\n/** m²/s, thermal conductivity W·m⁻¹·K⁻¹, and specific heat J·kg⁻¹·K⁻¹: the named shapes of `dimensional/types.ts`. @internal */\nexport { DIFFUSIVITY, SPECIFIC_HEAT, THERMAL_CONDUCTIVITY } from '../../dimensional/types.js';\n\n/** kg/m³, `L^-3 M`: `MASS_DENSITY`. @internal */\nexport const DENSITY: Dimension = MASS_DENSITY;\n"]}
|
|
@@ -11,12 +11,12 @@
|
|
|
11
11
|
*
|
|
12
12
|
* @module atlas/diffusion/models
|
|
13
13
|
*/
|
|
14
|
-
import
|
|
14
|
+
import { VISCOSITY } from '../../dimensional/types.js';
|
|
15
15
|
import type { AtlasModel } from '../model.js';
|
|
16
16
|
/** The family name every diffusion record carries. @internal */
|
|
17
17
|
export declare const DIFFUSION_FAMILY_NAME = "diffusion";
|
|
18
|
-
/** Pa·s, `L^-1 M T^-1
|
|
19
|
-
export
|
|
18
|
+
/** Pa·s, `L^-1 M T^-1`: the named shape of `dimensional/types.ts`. @internal */
|
|
19
|
+
export { VISCOSITY };
|
|
20
20
|
/** The diffusion models, in design-note order; the last four were added to close Sprint 4. @internal */
|
|
21
21
|
export declare const DIFFUSION_MODELS: readonly AtlasModel[];
|
|
22
22
|
/** Look up a diffusion model by id, throwing on an unknown one. @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/atlas/diffusion/models.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/atlas/diffusion/models.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAsC,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE3F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,gEAAgE;AAChE,eAAO,MAAM,qBAAqB,cAAc,CAAC;AA2BjD,gFAAgF;AAChF,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB,wGAAwG;AACxG,eAAO,MAAM,gBAAgB,EAAE,SAAS,UAAU,EAyFjD,CAAC;AAEF,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAIxD"}
|
|
@@ -11,10 +11,9 @@
|
|
|
11
11
|
*
|
|
12
12
|
* @module atlas/diffusion/models
|
|
13
13
|
*/
|
|
14
|
-
import { ACTION, ENERGY, LENGTH, MASS, TIME } from '../../dimensional/types.js';
|
|
15
|
-
import { dim } from '../../dimensional/ast-builders.js';
|
|
14
|
+
import { ACTION, ENERGY, LENGTH, MASS, TIME, VISCOSITY } from '../../dimensional/types.js';
|
|
16
15
|
import { DAMPING } from '../oscillators/dimensions.js';
|
|
17
|
-
import {
|
|
16
|
+
import { makeRegime } from '../regime.js';
|
|
18
17
|
import { DENSITY, DIFFUSIVITY, SPECIFIC_HEAT, THERMAL_CONDUCTIVITY } from './dimensions.js';
|
|
19
18
|
/** The family name every diffusion record carries. @internal */
|
|
20
19
|
export const DIFFUSION_FAMILY_NAME = 'diffusion';
|
|
@@ -28,16 +27,12 @@ function model(spec) {
|
|
|
28
27
|
parameters: spec.parameters,
|
|
29
28
|
dimensionlessInputs: [],
|
|
30
29
|
canonicalRefs: spec.canonicalRefs,
|
|
31
|
-
regime:
|
|
32
|
-
family: DIFFUSION_FAMILY_NAME,
|
|
33
|
-
inequalities: [],
|
|
34
|
-
groupDefinitions: deriveRegimeGroups(DIFFUSION_FAMILY_NAME, spec.parameters, []),
|
|
35
|
-
},
|
|
30
|
+
regime: makeRegime(DIFFUSION_FAMILY_NAME, spec.parameters, [], []),
|
|
36
31
|
...(spec.symmetryGroup === undefined ? {} : { symmetryGroup: spec.symmetryGroup }),
|
|
37
32
|
};
|
|
38
33
|
}
|
|
39
|
-
/** Pa·s, `L^-1 M T^-1
|
|
40
|
-
export
|
|
34
|
+
/** Pa·s, `L^-1 M T^-1`: the named shape of `dimensional/types.ts`. @internal */
|
|
35
|
+
export { VISCOSITY };
|
|
41
36
|
/** The diffusion models, in design-note order; the last four were added to close Sprint 4. @internal */
|
|
42
37
|
export const DIFFUSION_MODELS = [
|
|
43
38
|
model({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/atlas/diffusion/models.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/atlas/diffusion/models.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Atlas Phase 4, S4.4 — the four models of the diffusion family.\n *\n * Design note: `docs/planning/Atlas-Phase-4-Design.md` §4.\n *\n * `canonicalRefs` lists an entry only where the canonical registry genuinely\n * holds one. It has `CE-thermal-diffusivity` (α = κ/(ρ c_p)) and nothing for\n * Fick's law, the heat equation as a PDE, the lattice random walk, or the free\n * Schrödinger equation — so those models carry `[]` rather than a nearby entry\n * that states something else.\n *\n * @module atlas/diffusion/models\n */\n\nimport type { DimensionalVariable } from '../../dimensional/buckingham.js';\nimport { ACTION, ENERGY, LENGTH, MASS, TIME, VISCOSITY } from '../../dimensional/types.js';\nimport { DAMPING } from '../oscillators/dimensions.js';\nimport type { AtlasModel } from '../model.js';\nimport { makeRegime } from '../regime.js';\nimport { DENSITY, DIFFUSIVITY, SPECIFIC_HEAT, THERMAL_CONDUCTIVITY } from './dimensions.js';\n\n/** The family name every diffusion record carries. @internal */\nexport const DIFFUSION_FAMILY_NAME = 'diffusion';\n\ninterface ModelSpec {\n readonly id: string;\n readonly stateSpace: string;\n readonly dynamics: string;\n readonly observables: readonly string[];\n readonly parameters: readonly DimensionalVariable[];\n readonly canonicalRefs: readonly string[];\n readonly symmetryGroup?: string;\n}\n\nfunction model(spec: ModelSpec): AtlasModel {\n return {\n id: spec.id,\n family: DIFFUSION_FAMILY_NAME,\n stateSpace: spec.stateSpace,\n dynamics: spec.dynamics,\n observables: spec.observables,\n parameters: spec.parameters,\n dimensionlessInputs: [],\n canonicalRefs: spec.canonicalRefs,\n regime: makeRegime(DIFFUSION_FAMILY_NAME, spec.parameters, [], []),\n ...(spec.symmetryGroup === undefined ? {} : { symmetryGroup: spec.symmetryGroup }),\n };\n}\n\n/** Pa·s, `L^-1 M T^-1`: the named shape of `dimensional/types.ts`. @internal */\nexport { VISCOSITY };\n\n/** The diffusion models, in design-note order; the last four were added to close Sprint 4. @internal */\nexport const DIFFUSION_MODELS: readonly AtlasModel[] = [\n model({\n id: 'model-random-walk',\n stateSpace: 'P(n, k): probability at lattice site n ∈ ℤ after k ∈ ℕ steps',\n dynamics: 'P(n, k+1) = ½ P(n−1, k) + ½ P(n+1, k), sites Δx apart, steps Δt apart',\n observables: ['P(n, k)', 'mean-square displacement ⟨x²⟩'],\n parameters: [\n { name: 'dx', dim: LENGTH },\n { name: 'dt', dim: TIME },\n ],\n canonicalRefs: [],\n }),\n model({\n id: 'model-fick',\n stateSpace: 'c(x, t), x ∈ ℝ',\n dynamics: '∂c/∂t = D ∂²c/∂x² (Fick’s second law)',\n observables: ['c(x, t)', 'total amount ∫c dx', 'variance of c'],\n parameters: [\n { name: 'D', dim: DIFFUSIVITY },\n { name: 'ell', dim: LENGTH },\n ],\n canonicalRefs: [],\n }),\n model({\n id: 'model-heat',\n stateSpace: 'T(x, t), x ∈ ℝ',\n dynamics: 'ρ c_p ∂T/∂t = κ ∂²T/∂x²',\n observables: ['T(x, t)', 'heat content ∫ρ c_p T dx'],\n parameters: [\n { name: 'kappa', dim: THERMAL_CONDUCTIVITY },\n { name: 'rho', dim: DENSITY },\n { name: 'cp', dim: SPECIFIC_HEAT },\n { name: 'ell', dim: LENGTH },\n ],\n canonicalRefs: ['CE-thermal-diffusivity'],\n }),\n model({\n id: 'model-schrodinger-free',\n stateSpace: 'ψ(x, t) ∈ ℂ, x ∈ ℝ',\n dynamics: 'i ħ ∂ψ/∂t = −(ħ²/2m) ∂²ψ/∂x²',\n observables: ['|ψ|²', 'position spread σx'],\n parameters: [\n { name: 'hbar', dim: ACTION },\n { name: 'm', dim: MASS },\n ],\n canonicalRefs: [],\n }),\n model({\n id: 'model-langevin',\n stateSpace: '(x, v)(t), a Brownian particle',\n dynamics: 'm v̇ = −γ v + ξ(t), ⟨ξ(t)ξ(t′)⟩ = 2γ k_B T δ(t − t′), ẋ = v',\n observables: ['⟨x²⟩(t)', '⟨v²⟩ = k_B T/m'],\n parameters: [\n { name: 'm', dim: MASS },\n { name: 'gamma', dim: DAMPING },\n { name: 'kT', dim: ENERGY },\n ],\n canonicalRefs: [],\n }),\n model({\n id: 'model-stokes-drag',\n stateSpace: 'a sphere of radius a moving at speed v through a viscous fluid',\n dynamics: 'F = −6π η a v (creeping flow, Re ≪ 1)',\n observables: ['drag force F', 'friction coefficient γ = 6πηa'],\n parameters: [\n { name: 'eta', dim: VISCOSITY },\n { name: 'a', dim: LENGTH },\n ],\n canonicalRefs: ['CE-stokes-drag'],\n }),\n model({\n id: 'model-telegraph',\n stateSpace: 'u(x, t), x ∈ ℝ',\n dynamics: 'τ u_tt + u_t = D u_xx (Cattaneo: diffusion with a relaxation time)',\n observables: ['u(x, t)', 'mode decay rates', 'signal speed √(D/τ)'],\n parameters: [\n { name: 'tau', dim: TIME },\n { name: 'D', dim: DIFFUSIVITY },\n ],\n canonicalRefs: [],\n }),\n model({\n id: 'model-laplace-1d',\n stateSpace: 'T(x) on [0, ℓ] with fixed end values',\n dynamics: 'T_xx = 0, so T is linear between T(0) and T(ℓ)',\n observables: ['T(x)', 'steady heat flux'],\n parameters: [{ name: 'ell', dim: LENGTH }],\n canonicalRefs: [],\n }),\n];\n\n/** Look up a diffusion model by id, throwing on an unknown one. @internal */\nexport function getDiffusionModel(id: string): AtlasModel {\n const found = DIFFUSION_MODELS.find((m) => m.id === id);\n if (found === undefined) throw new Error(`unknown diffusion model id: ${id}`);\n return found;\n}\n"]}
|
|
@@ -108,9 +108,10 @@ export interface WickFixture {
|
|
|
108
108
|
export declare function wickHeatResidual(resolution: number, f: WickFixture, kernel: (x: number, tau: number, s: number, hbar: number, m: number) => number): number;
|
|
109
109
|
/**
|
|
110
110
|
* WD3b — `∫ φ(x, τ)² dx` of the Wick-rotated free kernel, by the trapezoid
|
|
111
|
-
* rule
|
|
112
|
-
*
|
|
113
|
-
* does not
|
|
111
|
+
* rule (MathTS `trapz` on the uniform grid, times its spacing) over
|
|
112
|
+
* `[−halfWidth, halfWidth]`. The Schrödinger norm `∫|ψ|² dx` is conserved;
|
|
113
|
+
* this one DECAYS with τ, which is the unitarity the continuation does not
|
|
114
|
+
* preserve.
|
|
114
115
|
*
|
|
115
116
|
* @internal
|
|
116
117
|
*/
|
|
@@ -131,7 +132,7 @@ export interface LangevinFixture {
|
|
|
131
132
|
*
|
|
132
133
|
* The second moments are integrated from the LANGEVIN model's own moment
|
|
133
134
|
* equations, `d⟨x²⟩/dt = 2⟨xv⟩`, `d⟨xv⟩/dt = ⟨v²⟩ − (γ/m)⟨xv⟩`, with
|
|
134
|
-
* `⟨v²⟩ = k_B T/m` held at equipartition, by `solveODESystem` with `dt` on a fine fixed grid. The
|
|
135
|
+
* `⟨v²⟩ = k_B T/m` held at equipartition, by `integrateRK4` (MathTS `solveODESystem` with `dt`) on a fine fixed grid. The
|
|
135
136
|
* diffusion coefficient `D = k_B T/γ` (Einstein) enters only the DENOMINATOR:
|
|
136
137
|
* the ratio tends to 1 in the diffusive regime `t ≫ τ_p`.
|
|
137
138
|
*
|
|
@@ -147,6 +148,17 @@ export declare function langevinMsdRatio(resolution: number, f: LangevinFixture)
|
|
|
147
148
|
* @internal
|
|
148
149
|
*/
|
|
149
150
|
export declare function telegraphSlowRateRatio(tau: number, D: number, q: number): number;
|
|
151
|
+
/**
|
|
152
|
+
* The slow-mode decay-rate EXCESS over diffusion, `telegraphSlowRateRatio − 1`,
|
|
153
|
+
* as the cancellation-free `4ε / (1 + √(1 − 4ε))²` with `ε = τ D q²`: the
|
|
154
|
+
* relative error `ab-telegraph-diffusion` states its bound in. Subtracting 1
|
|
155
|
+
* from the ratio loses the leading digits as ε → 0 (at ε = 1e-9 the naive
|
|
156
|
+
* difference was 8e-8 relative off), so the bridge reads this function.
|
|
157
|
+
* NaN for ε > 1/4, as the ratio is.
|
|
158
|
+
*
|
|
159
|
+
* @internal
|
|
160
|
+
*/
|
|
161
|
+
export declare function telegraphSlowRateExcess(tau: number, D: number, q: number): number;
|
|
150
162
|
/**
|
|
151
163
|
* The oscillation frequency of a telegraph mode in its underdamped range,
|
|
152
164
|
* divided by the undamped wave frequency `c q` with `c² = D/τ`:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numerics.d.ts","sourceRoot":"","sources":["../../../src/atlas/diffusion/numerics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"numerics.d.ts","sourceRoot":"","sources":["../../../src/atlas/diffusion/numerics.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,10 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @module atlas/diffusion/numerics
|
|
10
10
|
*/
|
|
11
|
-
import {
|
|
11
|
+
import { trapz } from '@danielsimonjr/mathts-functions';
|
|
12
|
+
import { integrateRK4 } from '../../numerical/null-ray-integrator.js';
|
|
13
|
+
// `logChoose` is `ln C(n, k)` through MathTS `lgamma`, the one owner of the log binomial coefficient.
|
|
14
|
+
import { logChoose } from '../../numerical/statistics.js';
|
|
12
15
|
/**
|
|
13
16
|
* The Gaussian solution of `∂c/∂t = D ∂²c/∂x²` from a point source of unit
|
|
14
17
|
* mass, evaluated at `x`: `(4πDt)^{-1/2} exp(−x²/(4Dt))`.
|
|
@@ -18,13 +21,6 @@ import { solveODESystem } from '@danielsimonjr/mathts-functions';
|
|
|
18
21
|
export function diffusionKernel(x, t, D) {
|
|
19
22
|
return Math.exp(-(x * x) / (4 * D * t)) / Math.sqrt(4 * Math.PI * D * t);
|
|
20
23
|
}
|
|
21
|
-
/** `ln C(n, k)` by summing logs — exact enough for the n ≤ 10⁵ used here. */
|
|
22
|
-
function logBinomial(n, k) {
|
|
23
|
-
let s = 0;
|
|
24
|
-
for (let i = 1; i <= k; i++)
|
|
25
|
-
s += Math.log(n - k + i) - Math.log(i);
|
|
26
|
-
return s;
|
|
27
|
-
}
|
|
28
24
|
/**
|
|
29
25
|
* WD1 — the probability DENSITY at the origin of a symmetric lattice random
|
|
30
26
|
* walk after `steps` steps, under the closure `D = Δx²/(2Δt)` at fixed `D`
|
|
@@ -43,7 +39,7 @@ export function randomWalkCentralDensity(steps, D, t) {
|
|
|
43
39
|
const n = 2 * Math.ceil(steps / 2);
|
|
44
40
|
const dt = t / n;
|
|
45
41
|
const dx = Math.sqrt(2 * D * dt);
|
|
46
|
-
const logP =
|
|
42
|
+
const logP = logChoose(n, n / 2) - n * Math.LN2;
|
|
47
43
|
return Math.exp(logP) / (2 * dx);
|
|
48
44
|
}
|
|
49
45
|
/**
|
|
@@ -59,7 +55,7 @@ export function randomWalkDensity(site, steps, D, t) {
|
|
|
59
55
|
return 0;
|
|
60
56
|
const dx = Math.sqrt((2 * D * t) / n);
|
|
61
57
|
const k = (n + site) / 2;
|
|
62
|
-
return Math.exp(
|
|
58
|
+
return Math.exp(logChoose(n, k) - n * Math.LN2) / (2 * dx);
|
|
63
59
|
}
|
|
64
60
|
/**
|
|
65
61
|
* The exact solution of the DIFFUSION equation with coefficient `D` from the
|
|
@@ -133,20 +129,17 @@ export function wickHeatResidual(resolution, f, kernel) {
|
|
|
133
129
|
}
|
|
134
130
|
/**
|
|
135
131
|
* WD3b — `∫ φ(x, τ)² dx` of the Wick-rotated free kernel, by the trapezoid
|
|
136
|
-
* rule
|
|
137
|
-
*
|
|
138
|
-
* does not
|
|
132
|
+
* rule (MathTS `trapz` on the uniform grid, times its spacing) over
|
|
133
|
+
* `[−halfWidth, halfWidth]`. The Schrödinger norm `∫|ψ|² dx` is conserved;
|
|
134
|
+
* this one DECAYS with τ, which is the unitarity the continuation does not
|
|
135
|
+
* preserve.
|
|
139
136
|
*
|
|
140
137
|
* @internal
|
|
141
138
|
*/
|
|
142
139
|
export function wickKernelSquaredNorm(tau, f, kernel, halfWidth = 20, cells = 4000) {
|
|
143
140
|
const dx = (2 * halfWidth) / cells;
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
const v = kernel(-halfWidth + i * dx, tau, f.s, f.hbar, f.m);
|
|
147
|
-
sum += (i === 0 || i === cells ? 0.5 : 1) * v * v;
|
|
148
|
-
}
|
|
149
|
-
return sum * dx;
|
|
141
|
+
const squares = Array.from({ length: cells + 1 }, (_, i) => kernel(-halfWidth + i * dx, tau, f.s, f.hbar, f.m) ** 2);
|
|
142
|
+
return trapz(squares) * dx;
|
|
150
143
|
}
|
|
151
144
|
/**
|
|
152
145
|
* WD4 — `⟨x²⟩(t) / (2Dt)` for the Langevin model `m v̇ = −γv + ξ`,
|
|
@@ -155,7 +148,7 @@ export function wickKernelSquaredNorm(tau, f, kernel, halfWidth = 20, cells = 40
|
|
|
155
148
|
*
|
|
156
149
|
* The second moments are integrated from the LANGEVIN model's own moment
|
|
157
150
|
* equations, `d⟨x²⟩/dt = 2⟨xv⟩`, `d⟨xv⟩/dt = ⟨v²⟩ − (γ/m)⟨xv⟩`, with
|
|
158
|
-
* `⟨v²⟩ = k_B T/m` held at equipartition, by `solveODESystem` with `dt` on a fine fixed grid. The
|
|
151
|
+
* `⟨v²⟩ = k_B T/m` held at equipartition, by `integrateRK4` (MathTS `solveODESystem` with `dt`) on a fine fixed grid. The
|
|
159
152
|
* diffusion coefficient `D = k_B T/γ` (Einstein) enters only the DENOMINATOR:
|
|
160
153
|
* the ratio tends to 1 in the diffusive regime `t ≫ τ_p`.
|
|
161
154
|
*
|
|
@@ -167,9 +160,8 @@ export function langevinMsdRatio(resolution, f) {
|
|
|
167
160
|
const v2 = f.kT / f.m;
|
|
168
161
|
const steps = Math.max(2000, Math.ceil(200 * resolution));
|
|
169
162
|
const h = tEnd / steps;
|
|
170
|
-
const
|
|
171
|
-
const
|
|
172
|
-
const x2 = end?.[0] ?? Number.NaN;
|
|
163
|
+
const end = integrateRK4((_t, y) => [2 * y[1], v2 - y[1] / tauP], [0, 0], 0, steps * h, steps);
|
|
164
|
+
const x2 = end[0] ?? Number.NaN;
|
|
173
165
|
const D = f.kT / f.gamma;
|
|
174
166
|
return x2 / (2 * D * tEnd);
|
|
175
167
|
}
|
|
@@ -188,7 +180,29 @@ export function telegraphSlowRateRatio(tau, D, q) {
|
|
|
188
180
|
const disc = 1 - 4 * eps;
|
|
189
181
|
if (disc < 0)
|
|
190
182
|
return Number.NaN;
|
|
191
|
-
|
|
183
|
+
// `(1 − √(1 − 4ε))/(2ε)` is algebraically `2/(1 + √(1 − 4ε))`, which does not cancel as
|
|
184
|
+
// ε → 0 (the naive form was 26× the true `ratio − 1` at ε = 1e-9).
|
|
185
|
+
return 2 / (1 + Math.sqrt(disc));
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* The slow-mode decay-rate EXCESS over diffusion, `telegraphSlowRateRatio − 1`,
|
|
189
|
+
* as the cancellation-free `4ε / (1 + √(1 − 4ε))²` with `ε = τ D q²`: the
|
|
190
|
+
* relative error `ab-telegraph-diffusion` states its bound in. Subtracting 1
|
|
191
|
+
* from the ratio loses the leading digits as ε → 0 (at ε = 1e-9 the naive
|
|
192
|
+
* difference was 8e-8 relative off), so the bridge reads this function.
|
|
193
|
+
* NaN for ε > 1/4, as the ratio is.
|
|
194
|
+
*
|
|
195
|
+
* @internal
|
|
196
|
+
*/
|
|
197
|
+
export function telegraphSlowRateExcess(tau, D, q) {
|
|
198
|
+
const eps = tau * D * q * q;
|
|
199
|
+
if (eps === 0)
|
|
200
|
+
return 0;
|
|
201
|
+
const disc = 1 - 4 * eps;
|
|
202
|
+
if (disc < 0)
|
|
203
|
+
return Number.NaN;
|
|
204
|
+
const s = 1 + Math.sqrt(disc);
|
|
205
|
+
return (4 * eps) / (s * s);
|
|
192
206
|
}
|
|
193
207
|
/**
|
|
194
208
|
* The oscillation frequency of a telegraph mode in its underdamped range,
|