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.
Files changed (591) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +396 -383
  3. package/bin/upt.mjs +7 -1
  4. package/dist/atlas/benchmark/hybrid-retrieval.d.ts +108 -0
  5. package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -0
  6. package/dist/atlas/benchmark/hybrid-retrieval.js +241 -0
  7. package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -0
  8. package/dist/atlas/catalog-formal-ref.d.ts +24 -0
  9. package/dist/atlas/catalog-formal-ref.d.ts.map +1 -0
  10. package/dist/atlas/catalog-formal-ref.js +36 -0
  11. package/dist/atlas/catalog-formal-ref.js.map +1 -0
  12. package/dist/atlas/composition-table.d.ts +11 -46
  13. package/dist/atlas/composition-table.d.ts.map +1 -1
  14. package/dist/atlas/composition-table.js +7 -124
  15. package/dist/atlas/composition-table.js.map +1 -1
  16. package/dist/atlas/conventions.d.ts +4 -58
  17. package/dist/atlas/conventions.d.ts.map +1 -1
  18. package/dist/atlas/conventions.js +3 -88
  19. package/dist/atlas/conventions.js.map +1 -1
  20. package/dist/atlas/derive-evidence.d.ts +50 -3
  21. package/dist/atlas/derive-evidence.d.ts.map +1 -1
  22. package/dist/atlas/derive-evidence.js +73 -4
  23. package/dist/atlas/derive-evidence.js.map +1 -1
  24. package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
  25. package/dist/atlas/diffusion/bridges-closure.js +5 -1
  26. package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
  27. package/dist/atlas/index.d.ts +9 -7
  28. package/dist/atlas/index.d.ts.map +1 -1
  29. package/dist/atlas/index.js +6 -5
  30. package/dist/atlas/index.js.map +1 -1
  31. package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
  32. package/dist/atlas/oscillators/bridges-exact.js +6 -0
  33. package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
  34. package/dist/atlas/oscillators/bridges-limits.d.ts +2 -0
  35. package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
  36. package/dist/atlas/oscillators/bridges-limits.js +11 -19
  37. package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
  38. package/dist/atlas/oscillators/limit-witnesses.d.ts +93 -0
  39. package/dist/atlas/oscillators/limit-witnesses.d.ts.map +1 -0
  40. package/dist/atlas/oscillators/limit-witnesses.js +152 -0
  41. package/dist/atlas/oscillators/limit-witnesses.js.map +1 -0
  42. package/dist/atlas/oscillators/models.d.ts +2 -1
  43. package/dist/atlas/oscillators/models.d.ts.map +1 -1
  44. package/dist/atlas/oscillators/models.js +4 -3
  45. package/dist/atlas/oscillators/models.js.map +1 -1
  46. package/dist/atlas/oscillators/norm-transport-witness.d.ts +37 -0
  47. package/dist/atlas/oscillators/norm-transport-witness.d.ts.map +1 -0
  48. package/dist/atlas/oscillators/norm-transport-witness.js +58 -0
  49. package/dist/atlas/oscillators/norm-transport-witness.js.map +1 -0
  50. package/dist/atlas/oscillators/norm-transport.d.ts +44 -0
  51. package/dist/atlas/oscillators/norm-transport.d.ts.map +1 -0
  52. package/dist/atlas/oscillators/norm-transport.js +66 -0
  53. package/dist/atlas/oscillators/norm-transport.js.map +1 -0
  54. package/dist/atlas/oscillators/norms.d.ts +11 -0
  55. package/dist/atlas/oscillators/norms.d.ts.map +1 -0
  56. package/dist/atlas/oscillators/norms.js +11 -0
  57. package/dist/atlas/oscillators/norms.js.map +1 -0
  58. package/dist/atlas/oscillators/pendulum-motion.d.ts +38 -0
  59. package/dist/atlas/oscillators/pendulum-motion.d.ts.map +1 -0
  60. package/dist/atlas/oscillators/pendulum-motion.js +122 -0
  61. package/dist/atlas/oscillators/pendulum-motion.js.map +1 -0
  62. package/dist/atlas/oscillators/phase-carriage.d.ts +38 -0
  63. package/dist/atlas/oscillators/phase-carriage.d.ts.map +1 -0
  64. package/dist/atlas/oscillators/phase-carriage.js +96 -0
  65. package/dist/atlas/oscillators/phase-carriage.js.map +1 -0
  66. package/dist/atlas/oscillators/phase-translation.d.ts +46 -0
  67. package/dist/atlas/oscillators/phase-translation.d.ts.map +1 -0
  68. package/dist/atlas/oscillators/phase-translation.js +178 -0
  69. package/dist/atlas/oscillators/phase-translation.js.map +1 -0
  70. package/dist/atlas/oscillators/position-translation.d.ts +59 -0
  71. package/dist/atlas/oscillators/position-translation.d.ts.map +1 -0
  72. package/dist/atlas/oscillators/position-translation.js +254 -0
  73. package/dist/atlas/oscillators/position-translation.js.map +1 -0
  74. package/dist/atlas/path-bound.d.ts +126 -9
  75. package/dist/atlas/path-bound.d.ts.map +1 -1
  76. package/dist/atlas/path-bound.js +372 -23
  77. package/dist/atlas/path-bound.js.map +1 -1
  78. package/dist/atlas/physjs-ref.d.ts +112 -0
  79. package/dist/atlas/physjs-ref.d.ts.map +1 -0
  80. package/dist/atlas/physjs-ref.js +842 -0
  81. package/dist/atlas/physjs-ref.js.map +1 -0
  82. package/dist/atlas/regime.d.ts +12 -136
  83. package/dist/atlas/regime.d.ts.map +1 -1
  84. package/dist/atlas/regime.js +8 -254
  85. package/dist/atlas/regime.js.map +1 -1
  86. package/dist/atlas/serialize.d.ts.map +1 -1
  87. package/dist/atlas/serialize.js +25 -0
  88. package/dist/atlas/serialize.js.map +1 -1
  89. package/dist/atlas/translation-registry.d.ts +22 -0
  90. package/dist/atlas/translation-registry.d.ts.map +1 -0
  91. package/dist/atlas/translation-registry.js +31 -0
  92. package/dist/atlas/translation-registry.js.map +1 -0
  93. package/dist/atlas/translation.d.ts +116 -0
  94. package/dist/atlas/translation.d.ts.map +1 -0
  95. package/dist/atlas/translation.js +34 -0
  96. package/dist/atlas/translation.js.map +1 -0
  97. package/dist/atlas/types.d.ts +74 -240
  98. package/dist/atlas/types.d.ts.map +1 -1
  99. package/dist/atlas/types.js +5 -37
  100. package/dist/atlas/types.js.map +1 -1
  101. package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
  102. package/dist/atlas/waves/bridges-closure.js +4 -0
  103. package/dist/atlas/waves/bridges-closure.js.map +1 -1
  104. package/dist/atlas/waves/bridges.d.ts.map +1 -1
  105. package/dist/atlas/waves/bridges.js +3 -0
  106. package/dist/atlas/waves/bridges.js.map +1 -1
  107. package/dist/atlas/waves/models.js +1 -1
  108. package/dist/atlas/waves/models.js.map +1 -1
  109. package/dist/atlas/witness-dominance.d.ts +50 -0
  110. package/dist/atlas/witness-dominance.d.ts.map +1 -0
  111. package/dist/atlas/witness-dominance.js +86 -0
  112. package/dist/atlas/witness-dominance.js.map +1 -0
  113. package/dist/atlas/witness-specs.d.ts +30 -0
  114. package/dist/atlas/witness-specs.d.ts.map +1 -1
  115. package/dist/atlas/witness-specs.js +107 -0
  116. package/dist/atlas/witness-specs.js.map +1 -1
  117. package/dist/bridges/be53-yang-mills-confrontation.d.ts +81 -0
  118. package/dist/bridges/be53-yang-mills-confrontation.d.ts.map +1 -0
  119. package/dist/bridges/be53-yang-mills-confrontation.js +110 -0
  120. package/dist/bridges/be53-yang-mills-confrontation.js.map +1 -0
  121. package/dist/bridges/confrontations.d.ts +1 -1
  122. package/dist/bridges/confrontations.d.ts.map +1 -1
  123. package/dist/bridges/confrontations.js +291 -3
  124. package/dist/bridges/confrontations.js.map +1 -1
  125. package/dist/bridges/equations/be-13-einstein-trace.d.ts +2 -3
  126. package/dist/bridges/equations/be-13-einstein-trace.d.ts.map +1 -1
  127. package/dist/bridges/equations/be-13-einstein-trace.js +2 -3
  128. package/dist/bridges/equations/be-13-einstein-trace.js.map +1 -1
  129. package/dist/bridges/equations/be-38-mond.d.ts +7 -5
  130. package/dist/bridges/equations/be-38-mond.d.ts.map +1 -1
  131. package/dist/bridges/equations/be-38-mond.js +7 -5
  132. package/dist/bridges/equations/be-38-mond.js.map +1 -1
  133. package/dist/bridges/equations/be-53-yang-mills-beta.d.ts +21 -0
  134. package/dist/bridges/equations/be-53-yang-mills-beta.d.ts.map +1 -1
  135. package/dist/bridges/equations/be-53-yang-mills-beta.js +12 -0
  136. package/dist/bridges/equations/be-53-yang-mills-beta.js.map +1 -1
  137. package/dist/bridges/evaluator-inputs.d.ts +21 -0
  138. package/dist/bridges/evaluator-inputs.d.ts.map +1 -0
  139. package/dist/bridges/evaluator-inputs.js +75 -0
  140. package/dist/bridges/evaluator-inputs.js.map +1 -0
  141. package/dist/bridges/evaluators.d.ts +38 -0
  142. package/dist/bridges/evaluators.d.ts.map +1 -1
  143. package/dist/bridges/evaluators.js +41 -15
  144. package/dist/bridges/evaluators.js.map +1 -1
  145. package/dist/bridges/gravitational-lensing.d.ts +1 -1
  146. package/dist/bridges/gravitational-lensing.js +1 -1
  147. package/dist/bridges/index.d.ts +1 -1
  148. package/dist/bridges/index.d.ts.map +1 -1
  149. package/dist/bridges/index.js +13 -13
  150. package/dist/bridges/index.js.map +1 -1
  151. package/dist/bridges/observations/types.d.ts +110 -2
  152. package/dist/bridges/observations/types.d.ts.map +1 -1
  153. package/dist/bridges/observations/types.js +29 -0
  154. package/dist/bridges/observations/types.js.map +1 -1
  155. package/dist/bridges/perihelion-precession.d.ts +1 -1
  156. package/dist/bridges/perihelion-precession.js +1 -1
  157. package/dist/canonical/canonical-equation.d.ts +1 -1
  158. package/dist/canonical/canonical-equation.d.ts.map +1 -1
  159. package/dist/canonical/entries/atomic.d.ts.map +1 -1
  160. package/dist/canonical/entries/atomic.js +32 -10
  161. package/dist/canonical/entries/atomic.js.map +1 -1
  162. package/dist/canonical/entries/dimensional-classics.js +2 -2
  163. package/dist/canonical/entries/dimensional-classics.js.map +1 -1
  164. package/dist/canonical/entries/mechanics.d.ts.map +1 -1
  165. package/dist/canonical/entries/mechanics.js +10 -6
  166. package/dist/canonical/entries/mechanics.js.map +1 -1
  167. package/dist/canonical/entries/relativity.d.ts.map +1 -1
  168. package/dist/canonical/entries/relativity.js +41 -8
  169. package/dist/canonical/entries/relativity.js.map +1 -1
  170. package/dist/canonical/entries/thermo-nuclear-cosmo.js +5 -5
  171. package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
  172. package/dist/canonical/linkage.d.ts.map +1 -1
  173. package/dist/canonical/linkage.js +14 -8
  174. package/dist/canonical/linkage.js.map +1 -1
  175. package/dist/canonical/normal-form.d.ts +17 -0
  176. package/dist/canonical/normal-form.d.ts.map +1 -1
  177. package/dist/canonical/normal-form.js +21 -4
  178. package/dist/canonical/normal-form.js.map +1 -1
  179. package/dist/cases/brownian-sphere.d.ts +68 -0
  180. package/dist/cases/brownian-sphere.d.ts.map +1 -0
  181. package/dist/cases/brownian-sphere.js +353 -0
  182. package/dist/cases/brownian-sphere.js.map +1 -0
  183. package/dist/cases/damped-resonator.d.ts +23 -0
  184. package/dist/cases/damped-resonator.d.ts.map +1 -0
  185. package/dist/cases/damped-resonator.js +224 -0
  186. package/dist/cases/damped-resonator.js.map +1 -0
  187. package/dist/cases/index.d.ts +11 -0
  188. package/dist/cases/index.d.ts.map +1 -0
  189. package/dist/cases/index.js +29 -0
  190. package/dist/cases/index.js.map +1 -0
  191. package/dist/cases/kepler-rv.d.ts +13 -0
  192. package/dist/cases/kepler-rv.d.ts.map +1 -0
  193. package/dist/cases/kepler-rv.js +168 -0
  194. package/dist/cases/kepler-rv.js.map +1 -0
  195. package/dist/cases/lumped-cooling.d.ts +46 -0
  196. package/dist/cases/lumped-cooling.d.ts.map +1 -0
  197. package/dist/cases/lumped-cooling.js +261 -0
  198. package/dist/cases/lumped-cooling.js.map +1 -0
  199. package/dist/cases/quadrature.d.ts +14 -0
  200. package/dist/cases/quadrature.d.ts.map +1 -0
  201. package/dist/cases/quadrature.js +41 -0
  202. package/dist/cases/quadrature.js.map +1 -0
  203. package/dist/cases/resistor-noise.d.ts +14 -0
  204. package/dist/cases/resistor-noise.d.ts.map +1 -0
  205. package/dist/cases/resistor-noise.js +210 -0
  206. package/dist/cases/resistor-noise.js.map +1 -0
  207. package/dist/cases/skin-depth.d.ts +21 -0
  208. package/dist/cases/skin-depth.d.ts.map +1 -0
  209. package/dist/cases/skin-depth.js +174 -0
  210. package/dist/cases/skin-depth.js.map +1 -0
  211. package/dist/cases/types.d.ts +115 -0
  212. package/dist/cases/types.d.ts.map +1 -0
  213. package/dist/cases/types.js +20 -0
  214. package/dist/cases/types.js.map +1 -0
  215. package/dist/cli/commands/_atlas-map.d.ts +409 -0
  216. package/dist/cli/commands/_atlas-map.d.ts.map +1 -0
  217. package/dist/cli/commands/_atlas-map.js +1014 -0
  218. package/dist/cli/commands/_atlas-map.js.map +1 -0
  219. package/dist/cli/commands/_atlas-route.d.ts +111 -0
  220. package/dist/cli/commands/_atlas-route.d.ts.map +1 -0
  221. package/dist/cli/commands/_atlas-route.js +140 -0
  222. package/dist/cli/commands/_atlas-route.js.map +1 -0
  223. package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
  224. package/dist/cli/commands/_discovery-opts.js +10 -1
  225. package/dist/cli/commands/_discovery-opts.js.map +1 -1
  226. package/dist/cli/commands/atlas.d.ts +20 -0
  227. package/dist/cli/commands/atlas.d.ts.map +1 -1
  228. package/dist/cli/commands/atlas.js +333 -19
  229. package/dist/cli/commands/atlas.js.map +1 -1
  230. package/dist/cli/commands/audit.d.ts.map +1 -1
  231. package/dist/cli/commands/audit.js +12 -3
  232. package/dist/cli/commands/audit.js.map +1 -1
  233. package/dist/cli/commands/axes.js +4 -4
  234. package/dist/cli/commands/candidates.d.ts.map +1 -1
  235. package/dist/cli/commands/candidates.js +3 -2
  236. package/dist/cli/commands/candidates.js.map +1 -1
  237. package/dist/cli/commands/canonical.d.ts.map +1 -1
  238. package/dist/cli/commands/canonical.js +39 -10
  239. package/dist/cli/commands/canonical.js.map +1 -1
  240. package/dist/cli/commands/confront.d.ts.map +1 -1
  241. package/dist/cli/commands/confront.js +210 -28
  242. package/dist/cli/commands/confront.js.map +1 -1
  243. package/dist/cli/commands/connectors.d.ts.map +1 -1
  244. package/dist/cli/commands/connectors.js +5 -4
  245. package/dist/cli/commands/connectors.js.map +1 -1
  246. package/dist/cli/commands/coverage.js +3 -3
  247. package/dist/cli/commands/derive.d.ts.map +1 -1
  248. package/dist/cli/commands/derive.js +21 -9
  249. package/dist/cli/commands/derive.js.map +1 -1
  250. package/dist/cli/commands/discover.d.ts.map +1 -1
  251. package/dist/cli/commands/discover.js +149 -32
  252. package/dist/cli/commands/discover.js.map +1 -1
  253. package/dist/cli/commands/eval.d.ts.map +1 -1
  254. package/dist/cli/commands/eval.js +76 -17
  255. package/dist/cli/commands/eval.js.map +1 -1
  256. package/dist/cli/commands/evaluate.d.ts +30 -0
  257. package/dist/cli/commands/evaluate.d.ts.map +1 -1
  258. package/dist/cli/commands/evaluate.js +440 -25
  259. package/dist/cli/commands/evaluate.js.map +1 -1
  260. package/dist/cli/commands/explain.d.ts.map +1 -1
  261. package/dist/cli/commands/explain.js +38 -11
  262. package/dist/cli/commands/explain.js.map +1 -1
  263. package/dist/cli/commands/frontier.d.ts +3 -0
  264. package/dist/cli/commands/frontier.d.ts.map +1 -0
  265. package/dist/cli/commands/frontier.js +28 -0
  266. package/dist/cli/commands/frontier.js.map +1 -0
  267. package/dist/cli/commands/ground.d.ts.map +1 -1
  268. package/dist/cli/commands/ground.js +37 -12
  269. package/dist/cli/commands/ground.js.map +1 -1
  270. package/dist/cli/commands/index.d.ts +5 -0
  271. package/dist/cli/commands/index.d.ts.map +1 -1
  272. package/dist/cli/commands/index.js +5 -0
  273. package/dist/cli/commands/index.js.map +1 -1
  274. package/dist/cli/commands/map.d.ts +8 -0
  275. package/dist/cli/commands/map.d.ts.map +1 -1
  276. package/dist/cli/commands/map.js +385 -57
  277. package/dist/cli/commands/map.js.map +1 -1
  278. package/dist/cli/commands/metric.d.ts +3 -0
  279. package/dist/cli/commands/metric.d.ts.map +1 -0
  280. package/dist/cli/commands/metric.js +136 -0
  281. package/dist/cli/commands/metric.js.map +1 -0
  282. package/dist/cli/commands/path.d.ts +109 -1
  283. package/dist/cli/commands/path.d.ts.map +1 -1
  284. package/dist/cli/commands/path.js +1019 -109
  285. package/dist/cli/commands/path.js.map +1 -1
  286. package/dist/cli/commands/predict.d.ts.map +1 -1
  287. package/dist/cli/commands/predict.js +3 -2
  288. package/dist/cli/commands/predict.js.map +1 -1
  289. package/dist/cli/commands/priority.d.ts.map +1 -1
  290. package/dist/cli/commands/priority.js +3 -2
  291. package/dist/cli/commands/priority.js.map +1 -1
  292. package/dist/cli/commands/probe.d.ts +7 -0
  293. package/dist/cli/commands/probe.d.ts.map +1 -1
  294. package/dist/cli/commands/probe.js +234 -52
  295. package/dist/cli/commands/probe.js.map +1 -1
  296. package/dist/cli/commands/recover.d.ts.map +1 -1
  297. package/dist/cli/commands/recover.js +17 -6
  298. package/dist/cli/commands/recover.js.map +1 -1
  299. package/dist/cli/commands/regime.d.ts +1 -1
  300. package/dist/cli/commands/regime.d.ts.map +1 -1
  301. package/dist/cli/commands/regime.js +134 -33
  302. package/dist/cli/commands/regime.js.map +1 -1
  303. package/dist/cli/commands/retrieve.d.ts +3 -0
  304. package/dist/cli/commands/retrieve.d.ts.map +1 -0
  305. package/dist/cli/commands/retrieve.js +65 -0
  306. package/dist/cli/commands/retrieve.js.map +1 -0
  307. package/dist/cli/commands/search.d.ts +3 -0
  308. package/dist/cli/commands/search.d.ts.map +1 -0
  309. package/dist/cli/commands/search.js +70 -0
  310. package/dist/cli/commands/search.js.map +1 -0
  311. package/dist/cli/commands/symbolic.d.ts.map +1 -1
  312. package/dist/cli/commands/symbolic.js +107 -16
  313. package/dist/cli/commands/symbolic.js.map +1 -1
  314. package/dist/cli/commands/testplan.d.ts +3 -0
  315. package/dist/cli/commands/testplan.d.ts.map +1 -0
  316. package/dist/cli/commands/testplan.js +131 -0
  317. package/dist/cli/commands/testplan.js.map +1 -0
  318. package/dist/cli/conventions.d.ts +22 -0
  319. package/dist/cli/conventions.d.ts.map +1 -0
  320. package/dist/cli/conventions.js +48 -0
  321. package/dist/cli/conventions.js.map +1 -0
  322. package/dist/cli/euler-guard.d.ts +9 -0
  323. package/dist/cli/euler-guard.d.ts.map +1 -0
  324. package/dist/cli/euler-guard.js +11 -0
  325. package/dist/cli/euler-guard.js.map +1 -0
  326. package/dist/cli/eval-numbers.d.ts +26 -0
  327. package/dist/cli/eval-numbers.d.ts.map +1 -0
  328. package/dist/cli/eval-numbers.js +49 -0
  329. package/dist/cli/eval-numbers.js.map +1 -0
  330. package/dist/cli/expr-print.d.ts +25 -0
  331. package/dist/cli/expr-print.d.ts.map +1 -0
  332. package/dist/cli/expr-print.js +123 -0
  333. package/dist/cli/expr-print.js.map +1 -0
  334. package/dist/cli/graphs.d.ts +26 -0
  335. package/dist/cli/graphs.d.ts.map +1 -1
  336. package/dist/cli/graphs.js +19 -0
  337. package/dist/cli/graphs.js.map +1 -1
  338. package/dist/cli/main.d.ts +4 -10
  339. package/dist/cli/main.d.ts.map +1 -1
  340. package/dist/cli/main.js +370 -167
  341. package/dist/cli/main.js.map +1 -1
  342. package/dist/cli/map-evidence.d.ts +47 -0
  343. package/dist/cli/map-evidence.d.ts.map +1 -0
  344. package/dist/cli/map-evidence.js +53 -0
  345. package/dist/cli/map-evidence.js.map +1 -0
  346. package/dist/cli/output.d.ts +21 -1
  347. package/dist/cli/output.d.ts.map +1 -1
  348. package/dist/cli/output.js +5 -1
  349. package/dist/cli/output.js.map +1 -1
  350. package/dist/{composition → cli}/poster-source.d.ts +3 -2
  351. package/dist/cli/poster-source.d.ts.map +1 -0
  352. package/dist/{composition → cli}/poster-source.js +2 -1
  353. package/dist/cli/poster-source.js.map +1 -0
  354. package/dist/cli/record-reach.d.ts +44 -0
  355. package/dist/cli/record-reach.d.ts.map +1 -0
  356. package/dist/cli/record-reach.js +228 -0
  357. package/dist/cli/record-reach.js.map +1 -0
  358. package/dist/cli/record-tables.d.ts +38 -0
  359. package/dist/cli/record-tables.d.ts.map +1 -0
  360. package/dist/cli/record-tables.js +110 -0
  361. package/dist/cli/record-tables.js.map +1 -0
  362. package/dist/cli/record.d.ts +141 -0
  363. package/dist/cli/record.d.ts.map +1 -0
  364. package/dist/cli/record.js +612 -0
  365. package/dist/cli/record.js.map +1 -0
  366. package/dist/cli/search-index.d.ts +56 -0
  367. package/dist/cli/search-index.d.ts.map +1 -0
  368. package/dist/cli/search-index.js +190 -0
  369. package/dist/cli/search-index.js.map +1 -0
  370. package/dist/cli/statuses.d.ts +25 -0
  371. package/dist/cli/statuses.d.ts.map +1 -0
  372. package/dist/cli/statuses.js +276 -0
  373. package/dist/cli/statuses.js.map +1 -0
  374. package/dist/cli/version.d.ts +8 -0
  375. package/dist/cli/version.d.ts.map +1 -1
  376. package/dist/cli/version.js +32 -1
  377. package/dist/cli/version.js.map +1 -1
  378. package/dist/cli-api.d.ts +33 -15
  379. package/dist/cli-api.d.ts.map +1 -1
  380. package/dist/cli-api.js +31 -11
  381. package/dist/cli-api.js.map +1 -1
  382. package/dist/composition/bridge-analysis.d.ts.map +1 -1
  383. package/dist/composition/bridge-analysis.js +2 -1
  384. package/dist/composition/bridge-analysis.js.map +1 -1
  385. package/dist/composition/canonical-compare.d.ts +29 -16
  386. package/dist/composition/canonical-compare.d.ts.map +1 -1
  387. package/dist/composition/canonical-compare.js +355 -59
  388. package/dist/composition/canonical-compare.js.map +1 -1
  389. package/dist/composition/canonical-graph.d.ts +2 -2
  390. package/dist/composition/canonical-graph.js +3 -3
  391. package/dist/composition/canonical-graph.js.map +1 -1
  392. package/dist/composition/canonical-prefactors.d.ts +24 -1
  393. package/dist/composition/canonical-prefactors.d.ts.map +1 -1
  394. package/dist/composition/canonical-prefactors.js +97 -1
  395. package/dist/composition/canonical-prefactors.js.map +1 -1
  396. package/dist/composition/compose-symbolic.js +1 -1
  397. package/dist/composition/compose-symbolic.js.map +1 -1
  398. package/dist/composition/compose.d.ts.map +1 -1
  399. package/dist/composition/compose.js +17 -9
  400. package/dist/composition/compose.js.map +1 -1
  401. package/dist/composition/composition-recovery.d.ts +47 -0
  402. package/dist/composition/composition-recovery.d.ts.map +1 -0
  403. package/dist/composition/composition-recovery.js +77 -0
  404. package/dist/composition/composition-recovery.js.map +1 -0
  405. package/dist/composition/consequence.d.ts +39 -0
  406. package/dist/composition/consequence.d.ts.map +1 -1
  407. package/dist/composition/consequence.js +37 -0
  408. package/dist/composition/consequence.js.map +1 -1
  409. package/dist/composition/discovery.d.ts +20 -0
  410. package/dist/composition/discovery.d.ts.map +1 -1
  411. package/dist/composition/discovery.js +27 -5
  412. package/dist/composition/discovery.js.map +1 -1
  413. package/dist/composition/edge.d.ts +1 -1
  414. package/dist/composition/edge.d.ts.map +1 -1
  415. package/dist/composition/edge.js.map +1 -1
  416. package/dist/composition/edges/_catalog-helpers.d.ts +4 -0
  417. package/dist/composition/edges/_catalog-helpers.d.ts.map +1 -1
  418. package/dist/composition/edges/_catalog-helpers.js +15 -0
  419. package/dist/composition/edges/_catalog-helpers.js.map +1 -1
  420. package/dist/composition/edges/calibration.d.ts.map +1 -1
  421. package/dist/composition/edges/calibration.js +57 -0
  422. package/dist/composition/edges/calibration.js.map +1 -1
  423. package/dist/composition/edges/catalog-fields.d.ts.map +1 -1
  424. package/dist/composition/edges/catalog-fields.js +2 -1
  425. package/dist/composition/edges/catalog-fields.js.map +1 -1
  426. package/dist/composition/edges/catalog-gravitation-cosmology.d.ts.map +1 -1
  427. package/dist/composition/edges/catalog-gravitation-cosmology.js +2 -1
  428. package/dist/composition/edges/catalog-gravitation-cosmology.js.map +1 -1
  429. package/dist/composition/edges/catalog-quantum.d.ts.map +1 -1
  430. package/dist/composition/edges/catalog-quantum.js +26 -0
  431. package/dist/composition/edges/catalog-quantum.js.map +1 -1
  432. package/dist/composition/edges/catalog-tranche.d.ts.map +1 -1
  433. package/dist/composition/edges/catalog-tranche.js +2 -1
  434. package/dist/composition/edges/catalog-tranche.js.map +1 -1
  435. package/dist/composition/expr-eval.d.ts.map +1 -1
  436. package/dist/composition/expr-eval.js +4 -1
  437. package/dist/composition/expr-eval.js.map +1 -1
  438. package/dist/composition/expr-simplify.js +1 -1
  439. package/dist/composition/expr-simplify.js.map +1 -1
  440. package/dist/composition/frontier-account.d.ts +78 -0
  441. package/dist/composition/frontier-account.d.ts.map +1 -0
  442. package/dist/composition/frontier-account.js +127 -0
  443. package/dist/composition/frontier-account.js.map +1 -0
  444. package/dist/composition/graph-viz.d.ts +7 -22
  445. package/dist/composition/graph-viz.d.ts.map +1 -1
  446. package/dist/composition/graph-viz.js +4 -27
  447. package/dist/composition/graph-viz.js.map +1 -1
  448. package/dist/composition/grounding.d.ts +49 -0
  449. package/dist/composition/grounding.d.ts.map +1 -1
  450. package/dist/composition/grounding.js +38 -0
  451. package/dist/composition/grounding.js.map +1 -1
  452. package/dist/composition/index.d.ts +0 -2
  453. package/dist/composition/index.d.ts.map +1 -1
  454. package/dist/composition/index.js +1 -1
  455. package/dist/composition/index.js.map +1 -1
  456. package/dist/composition/probe/expression-gaps.d.ts +27 -0
  457. package/dist/composition/probe/expression-gaps.d.ts.map +1 -0
  458. package/dist/composition/probe/expression-gaps.js +47 -0
  459. package/dist/composition/probe/expression-gaps.js.map +1 -0
  460. package/dist/composition/probe/frontier.d.ts +2 -1
  461. package/dist/composition/probe/frontier.d.ts.map +1 -1
  462. package/dist/composition/probe/frontier.js +3 -2
  463. package/dist/composition/probe/frontier.js.map +1 -1
  464. package/dist/composition/probe/index.d.ts +4 -1
  465. package/dist/composition/probe/index.d.ts.map +1 -1
  466. package/dist/composition/probe/index.js +3 -1
  467. package/dist/composition/probe/index.js.map +1 -1
  468. package/dist/composition/probe/pipeline.d.ts +2 -0
  469. package/dist/composition/probe/pipeline.d.ts.map +1 -1
  470. package/dist/composition/probe/pipeline.js +6 -2
  471. package/dist/composition/probe/pipeline.js.map +1 -1
  472. package/dist/composition/probe/problem.d.ts +7 -0
  473. package/dist/composition/probe/problem.d.ts.map +1 -1
  474. package/dist/composition/probe/problem.js +15 -5
  475. package/dist/composition/probe/problem.js.map +1 -1
  476. package/dist/composition/probe/search-budget.d.ts.map +1 -1
  477. package/dist/composition/probe/search-budget.js +6 -2
  478. package/dist/composition/probe/search-budget.js.map +1 -1
  479. package/dist/composition/probe/study.d.ts +340 -0
  480. package/dist/composition/probe/study.d.ts.map +1 -0
  481. package/dist/composition/probe/study.js +1519 -0
  482. package/dist/composition/probe/study.js.map +1 -0
  483. package/dist/composition/proposed-bridges.js +1 -1
  484. package/dist/composition/proposed-bridges.js.map +1 -1
  485. package/dist/composition/quantities.d.ts +4 -16
  486. package/dist/composition/quantities.d.ts.map +1 -1
  487. package/dist/composition/quantities.js +4 -16
  488. package/dist/composition/quantities.js.map +1 -1
  489. package/dist/composition/retrodiction.d.ts.map +1 -1
  490. package/dist/composition/retrodiction.js +6 -2
  491. package/dist/composition/retrodiction.js.map +1 -1
  492. package/dist/composition/uncertainty.d.ts +1 -1
  493. package/dist/composition/uncertainty.d.ts.map +1 -1
  494. package/dist/composition/user-equation.d.ts +79 -8
  495. package/dist/composition/user-equation.d.ts.map +1 -1
  496. package/dist/composition/user-equation.js +224 -32
  497. package/dist/composition/user-equation.js.map +1 -1
  498. package/dist/core/constants.d.ts +9 -4
  499. package/dist/core/constants.d.ts.map +1 -1
  500. package/dist/core/constants.js +9 -4
  501. package/dist/core/constants.js.map +1 -1
  502. package/dist/core/types.d.ts +1 -1
  503. package/dist/core/types.d.ts.map +1 -1
  504. package/dist/core/types.js +2 -1
  505. package/dist/core/types.js.map +1 -1
  506. package/dist/dimensional/curvature.d.ts +7 -56
  507. package/dist/dimensional/curvature.d.ts.map +1 -1
  508. package/dist/dimensional/curvature.js +7 -76
  509. package/dist/dimensional/curvature.js.map +1 -1
  510. package/dist/dimensional/dimension-spec.d.ts +7 -1
  511. package/dist/dimensional/dimension-spec.d.ts.map +1 -1
  512. package/dist/dimensional/dimension-spec.js +131 -3
  513. package/dist/dimensional/dimension-spec.js.map +1 -1
  514. package/dist/dimensional/formula-names.d.ts +30 -0
  515. package/dist/dimensional/formula-names.d.ts.map +1 -0
  516. package/dist/dimensional/formula-names.js +37 -0
  517. package/dist/dimensional/formula-names.js.map +1 -0
  518. package/dist/dimensional/natural-units.d.ts +33 -0
  519. package/dist/dimensional/natural-units.d.ts.map +1 -0
  520. package/dist/dimensional/natural-units.js +58 -0
  521. package/dist/dimensional/natural-units.js.map +1 -0
  522. package/dist/{composition → dimensional}/symbolic-constants.d.ts +21 -2
  523. package/dist/dimensional/symbolic-constants.d.ts.map +1 -0
  524. package/dist/dimensional/symbolic-constants.js +116 -0
  525. package/dist/dimensional/symbolic-constants.js.map +1 -0
  526. package/dist/dimensional/unit-convention.d.ts +30 -0
  527. package/dist/dimensional/unit-convention.d.ts.map +1 -0
  528. package/dist/dimensional/unit-convention.js +60 -0
  529. package/dist/dimensional/unit-convention.js.map +1 -0
  530. package/dist/dimensional/units.d.ts +43 -0
  531. package/dist/dimensional/units.d.ts.map +1 -0
  532. package/dist/dimensional/units.js +197 -0
  533. package/dist/dimensional/units.js.map +1 -0
  534. package/dist/index.d.ts +8 -4
  535. package/dist/index.d.ts.map +1 -1
  536. package/dist/index.js +7 -3
  537. package/dist/index.js.map +1 -1
  538. package/dist/numerical/bianchi-residual.d.ts +55 -0
  539. package/dist/numerical/bianchi-residual.d.ts.map +1 -0
  540. package/dist/numerical/bianchi-residual.js +79 -0
  541. package/dist/numerical/bianchi-residual.js.map +1 -0
  542. package/dist/numerical/binding-value.d.ts +67 -0
  543. package/dist/numerical/binding-value.d.ts.map +1 -0
  544. package/dist/numerical/binding-value.js +347 -0
  545. package/dist/numerical/binding-value.js.map +1 -0
  546. package/dist/numerical/connection-lowering-helpers.d.ts.map +1 -1
  547. package/dist/numerical/connection-lowering-helpers.js +13 -26
  548. package/dist/numerical/connection-lowering-helpers.js.map +1 -1
  549. package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
  550. package/dist/numerical/curvature-lowering-helpers.js +9 -0
  551. package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
  552. package/dist/numerical/float64-engine.d.ts.map +1 -1
  553. package/dist/numerical/float64-engine.js +23 -16
  554. package/dist/numerical/float64-engine.js.map +1 -1
  555. package/dist/numerical/formula-dimension.d.ts +7 -0
  556. package/dist/numerical/formula-dimension.d.ts.map +1 -1
  557. package/dist/numerical/formula-dimension.js +23 -6
  558. package/dist/numerical/formula-dimension.js.map +1 -1
  559. package/dist/numerical/formula-mathts.d.ts.map +1 -1
  560. package/dist/numerical/formula-mathts.js +68 -6
  561. package/dist/numerical/formula-mathts.js.map +1 -1
  562. package/dist/numerical/formula.d.ts +27 -0
  563. package/dist/numerical/formula.d.ts.map +1 -1
  564. package/dist/numerical/formula.js +68 -6
  565. package/dist/numerical/formula.js.map +1 -1
  566. package/dist/numerical/spacetime-metrics.d.ts +243 -0
  567. package/dist/numerical/spacetime-metrics.d.ts.map +1 -0
  568. package/dist/numerical/spacetime-metrics.js +1056 -0
  569. package/dist/numerical/spacetime-metrics.js.map +1 -0
  570. package/dist/relations/composition-table.d.ts +61 -0
  571. package/dist/relations/composition-table.d.ts.map +1 -0
  572. package/dist/relations/composition-table.js +140 -0
  573. package/dist/relations/composition-table.js.map +1 -0
  574. package/dist/relations/conventions.d.ts +63 -0
  575. package/dist/relations/conventions.d.ts.map +1 -0
  576. package/dist/relations/conventions.js +93 -0
  577. package/dist/relations/conventions.js.map +1 -0
  578. package/dist/relations/regime.d.ts +159 -0
  579. package/dist/relations/regime.d.ts.map +1 -0
  580. package/dist/relations/regime.js +304 -0
  581. package/dist/relations/regime.js.map +1 -0
  582. package/dist/relations/types.d.ts +259 -0
  583. package/dist/relations/types.d.ts.map +1 -0
  584. package/dist/relations/types.js +37 -0
  585. package/dist/relations/types.js.map +1 -0
  586. package/package.json +166 -163
  587. package/dist/composition/poster-source.d.ts.map +0 -1
  588. package/dist/composition/poster-source.js.map +0 -1
  589. package/dist/composition/symbolic-constants.d.ts.map +0 -1
  590. package/dist/composition/symbolic-constants.js +0 -65
  591. package/dist/composition/symbolic-constants.js.map +0 -1
@@ -0,0 +1,261 @@
1
+ /**
2
+ * Applied case: a solid sphere cooling (or warming) in a fluid — its
3
+ * temperature after a time t by Newton's law of cooling, with the Biot-number
4
+ * check that makes one uniform temperature a fair stand-in for the field
5
+ * inside it.
6
+ *
7
+ * The parent is the heat equation in the sphere (`model-heat` in radial
8
+ * form, diffusivity `CE-thermal-diffusivity`) with a convective boundary. The
9
+ * lumped-capacitance simplification T(t) = T∞ + (T0 − T∞) e^{−t/τ},
10
+ * τ = ρcV/(hA), holds for Bi = h L_c/k ≤ 0.1 with L_c = V/A (Incropera,
11
+ * DeWitt, Bergman & Lavine, Fundamentals of Heat and Mass Transfer, 6th ed.,
12
+ * §5.1–5.2). The parent's exact series (Carslaw & Jaeger, Conduction of Heat
13
+ * in Solids, 2nd ed., §9.4; Incropera §5.6.2) is summed here for the volume
14
+ * mean, the centre and the surface. A second check keeps radiation, which is
15
+ * not linear in T − T∞, small beside convection. Where it is not small, the
16
+ * lumped equation is also integrated with the T⁴ loss kept (Incropera §5.3,
17
+ * general lumped capacitance analysis), provided the Biot number with the
18
+ * radiative conductance added still allows one temperature.
19
+ *
20
+ * @module cases/lumped-cooling
21
+ */
22
+ import { C_SI, H_SI, K_B_SI } from '../core/constants.js';
23
+ import { check, requirePositive } from './types.js';
24
+ const ID = 'case-lumped-cooling';
25
+ /** Stefan–Boltzmann constant 2π⁵k_B⁴/(15h³c²), from the exact SI constants (W m⁻² K⁻⁴). @internal */
26
+ export const SIGMA_SB_SI = (2 * Math.PI ** 5 * K_B_SI ** 4) / (15 * H_SI ** 3 * C_SI ** 2);
27
+ /** Bi = h L_c/k ceiling, L_c = V/A (Incropera §5.2, eq. 5.10). @internal */
28
+ export const MAX_BIOT = 0.1;
29
+ /** h_rad,max/h ceiling for a loss linear in T − T∞. @internal */
30
+ export const MAX_RADIATION_RATIO = 0.1;
31
+ /**
32
+ * T(t) of ρcV dT/dt = −A[h(T − T∞) + εσ_SB(T⁴ − T∞⁴)] for a sphere (V/A =
33
+ * a/3), by RK4 with each step 1/100 of the local relaxation time
34
+ * ρca/(3(h + 4εσ_SB T³)). Stops early once |T − T∞| is below 1e-15 |T0 − T∞|.
35
+ * @internal
36
+ */
37
+ export function lumpedRadiatingTemperature(p) {
38
+ const k = 3 / (p.rho * p.c * p.a);
39
+ const f = (T) => -k * (p.h * (T - p.Tinf) + p.eps * SIGMA_SB_SI * (T ** 4 - p.Tinf ** 4));
40
+ const floor = 1e-15 * Math.abs(p.T0 - p.Tinf);
41
+ let T = p.T0;
42
+ let s = 0;
43
+ while (s < p.t && Math.abs(T - p.Tinf) > floor) {
44
+ const rate = k * (p.h + 4 * p.eps * SIGMA_SB_SI * Math.max(T, p.Tinf) ** 3);
45
+ const dt = Math.min(p.t - s, 0.01 / rate);
46
+ const k1 = f(T);
47
+ const k2 = f(T + (dt / 2) * k1);
48
+ const k3 = f(T + (dt / 2) * k2);
49
+ const k4 = f(T + dt * k3);
50
+ T += (dt / 6) * (k1 + 2 * k2 + 2 * k3 + k4);
51
+ s += dt;
52
+ }
53
+ return T;
54
+ }
55
+ /**
56
+ * The first n roots of 1 − ζ cot ζ = Bi (Bi = h a/k, radius-based): the n-th
57
+ * lies in ((n−1)π, nπ), where the left side runs from −∞ (0 for n = 1) to +∞.
58
+ * @internal
59
+ */
60
+ export function sphereEigenvalues(biRadius, n) {
61
+ const f = (z) => 1 - z / Math.tan(z) - biRadius;
62
+ const roots = [];
63
+ for (let k = 1; k <= n; k++) {
64
+ let lo = (k - 1) * Math.PI;
65
+ let hi = k * Math.PI;
66
+ for (let it = 0; it < 200 && hi - lo > 4 * Number.EPSILON * hi; it++) {
67
+ const mid = (lo + hi) / 2;
68
+ if (mid === lo || mid === hi)
69
+ break;
70
+ if (f(mid) < 0)
71
+ lo = mid;
72
+ else
73
+ hi = mid;
74
+ }
75
+ roots.push((lo + hi) / 2);
76
+ }
77
+ return roots;
78
+ }
79
+ /**
80
+ * θ/θ0 = (T − T∞)/(T0 − T∞) from the series solution of the sphere with a
81
+ * convective surface, at Fourier number Fo = αt/a², for the volume mean, the
82
+ * centre and the surface. Terms are summed until e^{−ζ²Fo} < 1e-18.
83
+ * @throws Error when Fo is so small that the series would need over 1e5 terms.
84
+ * @internal
85
+ */
86
+ export function sphereSeries(biRadius, fo) {
87
+ if (fo === 0)
88
+ return { mean: 1, centre: 1, surface: 1 };
89
+ const terms = Math.ceil(Math.sqrt(42 / fo) / Math.PI) + 2;
90
+ if (terms > 1e5)
91
+ throw new Error(`${ID}: Fo = ${fo} is too small for the series (needs ${terms} terms)`);
92
+ let mean = 0;
93
+ let centre = 0;
94
+ let surface = 0;
95
+ for (const z of sphereEigenvalues(biRadius, terms)) {
96
+ const s = Math.sin(z);
97
+ const c = Math.cos(z);
98
+ const cn = (4 * (s - z * c)) / (2 * z - Math.sin(2 * z));
99
+ const decay = Math.exp(-z * z * fo);
100
+ centre += cn * decay;
101
+ surface += (cn * decay * s) / z;
102
+ mean += (cn * decay * 3 * (s - z * c)) / z ** 3;
103
+ }
104
+ return { mean, centre, surface };
105
+ }
106
+ export const LUMPED_COOLING_CASE = {
107
+ id: ID,
108
+ title: 'Lumped-capacitance cooling of a sphere (Biot number, radiation linearity)',
109
+ parameters: [
110
+ {
111
+ key: 'a_m',
112
+ quantity: 'sphere radius',
113
+ symbol: 'a',
114
+ unit: 'm',
115
+ meaning: 'radius of the solid sphere, > 0',
116
+ geometry: 'radius',
117
+ alternates: [{ key: 'diameter_m', meaning: 'the diameter 2a of the sphere', toKey: 0.5 }],
118
+ },
119
+ { key: 'rho_kg_per_m3', quantity: 'density', symbol: 'ρ', unit: 'kg/m^3', meaning: 'mass density of the solid (copper ≈ 8933), > 0' },
120
+ { key: 'c_J_per_kg_K', quantity: 'specific heat', symbol: 'c', unit: 'J/(kg*K)', meaning: 'specific heat capacity of the solid (copper ≈ 385), > 0' },
121
+ { key: 'k_W_per_m_K', quantity: 'thermal conductivity', symbol: 'k', unit: 'W/(m*K)', meaning: 'thermal conductivity of the solid (copper ≈ 401), > 0' },
122
+ { key: 'h_W_per_m2_K', quantity: 'heat-transfer coefficient', symbol: 'h', unit: 'W/(m^2*K)', meaning: 'convective coefficient at the surface, uniform and constant (still air ≈ 5–25, stirred water ≈ 500–10000), > 0' },
123
+ { key: 'emissivity', quantity: 'surface emissivity', symbol: 'ε', unit: '', meaning: 'total hemispherical emissivity of the surface, 0 ≤ ε ≤ 1 (polished copper ≈ 0.03–0.05)' },
124
+ { key: 'T0_K', quantity: 'initial temperature', symbol: 'T0', unit: 'K', meaning: 'uniform temperature of the sphere at t = 0, > 0 K', temperature: 'absolute' },
125
+ { key: 'T_inf_K', quantity: 'fluid temperature', symbol: 'T∞', unit: 'K', meaning: 'temperature of the fluid far from the sphere, and of the radiating surroundings, > 0 K', temperature: 'absolute' },
126
+ { key: 't_s', quantity: 'elapsed time', symbol: 't', unit: 's', meaning: 'time since immersion, ≥ 0' },
127
+ ],
128
+ governing: {
129
+ parent: [
130
+ 'ρc ∂T/∂t = k (1/r²) ∂/∂r (r² ∂T/∂r), 0 ≤ r < a (the heat equation of model-heat, radially symmetric)',
131
+ '−k ∂T/∂r = h (T − T∞) + εσ_SB (T⁴ − T∞⁴) at r = a; T(r, 0) = T0',
132
+ 'without the radiation term: θ/θ0 = Σ C_n e^{−ζ_n² Fo} sin(ζ_n r/a)/(ζ_n r/a), 1 − ζ_n cot ζ_n = h a/k, C_n = 4(sin ζ_n − ζ_n cos ζ_n)/(2ζ_n − sin 2ζ_n), Fo = αt/a²',
133
+ ],
134
+ scalar: [
135
+ 'ρcV dT/dt = −hA (T − T∞) (lumped capacitance: one temperature for the whole sphere)',
136
+ 'T(t) = T∞ + (T0 − T∞) e^{−t/τ}, τ = ρcV/(hA) = ρca/(3h) (Newton\'s law of cooling)',
137
+ 'Bi = h L_c/k, L_c = V/A = a/3',
138
+ ],
139
+ distinction: 'The parent is a temperature field T(r, t) with a boundary condition that is nonlinear once radiation is kept; the ' +
140
+ 'scalar replaces the field by one number and the surface loss by a linear conductance hA. Dropped: the internal ' +
141
+ 'gradient (of relative size ~Bi), every eigenmode but the slowest (and that one\'s rate shifted by O(Bi)), and the ' +
142
+ 'T⁴ dependence of radiation.',
143
+ },
144
+ observable: 'T_K',
145
+ outputs: [
146
+ { key: 'tau_s', symbol: 'τ', unit: 's', meaning: 'lumped time constant ρcV/(hA) = ρca/(3h)' },
147
+ { key: 'Bi', symbol: 'Bi', unit: '', meaning: 'Biot number h L_c/k with L_c = V/A = a/3 (the lumped criterion\'s form)' },
148
+ { key: 'Bi_radius', symbol: 'Bi_a', unit: '', meaning: 'h a/k: the radius-based Biot number of the series solution (3 Bi)' },
149
+ { key: 'alpha_m2_per_s', symbol: 'α', unit: 'm^2/s', meaning: 'thermal diffusivity k/(ρc)' },
150
+ { key: 'Fo', symbol: 'Fo', unit: '', meaning: 'Fourier number αt/a²' },
151
+ { key: 'theta', symbol: 'θ/θ0', unit: '', meaning: 'lumped excess-temperature ratio e^{−t/τ}' },
152
+ { key: 'T_K', symbol: 'T(t)', unit: 'K', meaning: 'the lumped temperature at t: what a thermometer in or on the sphere reads' },
153
+ { key: 'Q_J', symbol: 'Q', unit: 'J', meaning: 'heat released to the fluid by t, ρcV(T0 − T(t)) (negative when the sphere warms)' },
154
+ { key: 'theta_parent_mean', symbol: 'θ̄/θ0', unit: '', meaning: 'volume-mean excess-temperature ratio of the series solution (convection only)' },
155
+ { key: 'parent_deviation', symbol: 'θ/θ̄ − 1', unit: '', meaning: 'relative excess of the lumped ratio over the parent\'s volume mean' },
156
+ { key: 'T_centre_K', symbol: 'T(0, t)', unit: 'K', meaning: 'temperature at the centre from the series solution' },
157
+ { key: 'T_surface_K', symbol: 'T(a, t)', unit: 'K', meaning: 'temperature at the surface from the series solution' },
158
+ { key: 'h_rad_max_W_per_m2_K', symbol: 'h_rad', unit: 'W/(m^2*K)', meaning: 'εσ_SB(T_s + T∞)(T_s² + T∞²) at the hotter of T0 and T∞: the largest linearized radiative coefficient over the run' },
159
+ { key: 'Bi_radiating', symbol: 'Bi_r', unit: '', meaning: '(h + h_rad)(a/3)/k: the Biot number with the largest radiative conductance added' },
160
+ { key: 'T_radiating_K', symbol: 'T_r(t)', unit: 'K', meaning: 'the lumped temperature with the T⁴ loss kept (RK4). The linear-loss check does not apply to it; its premise is Bi_radiating ≤ 0.1, and it is null otherwise' },
161
+ ],
162
+ conditions: [
163
+ 'initial condition: the sphere is at the uniform temperature T0 when it is immersed at t = 0',
164
+ 'boundary: a uniform, constant coefficient h over the whole surface into fluid at T∞; the surroundings it radiates to are also at T∞',
165
+ 'constant ρ, c and k over the temperature range; no internal heat source; the sphere is solid and homogeneous',
166
+ ],
167
+ comparison: {
168
+ reference: 'the parent: the series solution of the sphere\'s heat equation with the convective boundary, volume mean',
169
+ valueKey: 'theta',
170
+ referenceKey: 'theta_parent_mean',
171
+ deviationKey: 'parent_deviation',
172
+ method: 'eigenfunction series, roots of 1 − ζ cot ζ = Bi_a by bisection, summed until e^{−ζ²Fo} < 1e-18',
173
+ },
174
+ notIncluded: [
175
+ 'radiation in T_K and in the series: the linear-loss check bounds it; T_radiating_K keeps it, in the lumped model only',
176
+ 'the temperature dependence of h (natural convection has h ∝ ΔT^{1/4}) and of ρ, c, k',
177
+ 'the thermometer\'s own heat capacity and contact resistance, and conduction along its leads',
178
+ 'phase change at the surface (boiling in a quench), which makes h neither uniform nor constant',
179
+ ],
180
+ measurement: [
181
+ 'record T(t) with a thermocouple embedded at the centre; plot ln((T − T∞)/(T0 − T∞)) against t — a straight line of slope ' +
182
+ '−1/τ tests the lumped premise directly, and T_centre_K is the parent\'s prediction for that sensor',
183
+ 'compare the measured τ with tau_s; the difference between T_centre_K and T_surface_K is the internal gradient the lumped model drops',
184
+ 'to use this as a calorimetric measurement of h, invert τ = ρca/(3h), valid only where both checks hold',
185
+ ],
186
+ links: [
187
+ { id: 'model-heat', role: 'ρc_p ∂T/∂t = κ ∂²T/∂x², the heat equation; here in its radial form for a sphere' },
188
+ { id: 'CE-thermal-diffusivity', role: 'α = k/(ρc_p), the diffusivity in the Fourier number' },
189
+ { id: 'CE-heat-capacity', role: 'Q = mcΔT, the heat released as the sphere cools' },
190
+ { id: 'CE-stefan-boltzmann', role: 'j = σT⁴, the radiative loss the linear-loss check bounds' },
191
+ ],
192
+ examples: {
193
+ valid: {
194
+ args: ['a_m=5mm', 'rho_kg_per_m3=8933', 'c_J_per_kg_K=385', 'k_W_per_m_K=401', 'h_W_per_m2_K=20', 'emissivity=0.05', 'T0_K=100degC', 'T_inf_K=20degC', 't_s=300'],
195
+ note: 'a 1 cm polished copper ball cooling from 100 °C in still air at 20 °C, read after 5 minutes',
196
+ fails: [],
197
+ },
198
+ failures: [
199
+ {
200
+ args: ['a_m=5cm', 'rho_kg_per_m3=7854', 'c_J_per_kg_K=434', 'k_W_per_m_K=60.5', 'h_W_per_m2_K=1000', 'emissivity=0', 'T0_K=90degC', 'T_inf_K=20degC', 't_s=600'],
201
+ note: 'a 10 cm steel ball from 90 °C into stirred water: Bi ≈ 0.28, the centre lags the surface and one temperature does not describe it',
202
+ fails: ['lumped'],
203
+ },
204
+ {
205
+ args: ['a_m=5mm', 'rho_kg_per_m3=7854', 'c_J_per_kg_K=434', 'k_W_per_m_K=60.5', 'h_W_per_m2_K=10', 'emissivity=0.8', 'T0_K=1000', 'T_inf_K=300', 't_s=60'],
206
+ note: 'a 1 cm oxidized steel ball at 1000 K in still air: radiation (h_rad ≈ 64 W/m²K) outweighs convection and the loss is not linear',
207
+ fails: ['linear-loss'],
208
+ },
209
+ ],
210
+ },
211
+ /** Evaluate the lumped sphere temperature, parent-series comparison and heat-transfer checks for the supplied inputs. */
212
+ run(i) {
213
+ requirePositive(ID, i, ['a_m', 'rho_kg_per_m3', 'c_J_per_kg_K', 'k_W_per_m_K', 'h_W_per_m2_K', 'T0_K', 'T_inf_K']);
214
+ const { a_m: a, rho_kg_per_m3: rho, c_J_per_kg_K: c, k_W_per_m_K: k, h_W_per_m2_K: h, emissivity: eps, T0_K: T0, T_inf_K: Tinf, t_s: t, } = i;
215
+ if (!Number.isFinite(eps) || eps < 0 || eps > 1)
216
+ throw new Error(`${ID}: emissivity must be in [0, 1] (got ${eps})`);
217
+ if (!Number.isFinite(t) || t < 0)
218
+ throw new Error(`${ID}: t_s must be a finite number ≥ 0 (got ${t})`);
219
+ const tau = (rho * c * a) / (3 * h);
220
+ const bi = (h * (a / 3)) / k;
221
+ const biRadius = (h * a) / k;
222
+ const alpha = k / (rho * c);
223
+ const fo = (alpha * t) / (a * a);
224
+ const theta = Math.exp(-t / tau);
225
+ const series = sphereSeries(biRadius, fo);
226
+ const dT0 = T0 - Tinf;
227
+ const Tmax = Math.max(T0, Tinf);
228
+ const hRad = eps * SIGMA_SB_SI * (Tmax + Tinf) * (Tmax * Tmax + Tinf * Tinf);
229
+ const volume = (4 / 3) * Math.PI * a ** 3;
230
+ const biRadiating = ((h + hRad) * (a / 3)) / k;
231
+ const tRadiating = biRadiating <= MAX_BIOT ? lumpedRadiatingTemperature({ a, rho, c, h, eps, T0, Tinf, t }) : null;
232
+ return {
233
+ outputs: {
234
+ tau_s: tau,
235
+ Bi: bi,
236
+ Bi_radius: biRadius,
237
+ alpha_m2_per_s: alpha,
238
+ Fo: fo,
239
+ theta,
240
+ T_K: Tinf + dT0 * theta,
241
+ Q_J: rho * c * volume * dT0 * -Math.expm1(-t / tau),
242
+ theta_parent_mean: series.mean,
243
+ parent_deviation: theta / series.mean - 1,
244
+ T_centre_K: Tinf + dT0 * series.centre,
245
+ T_surface_K: Tinf + dT0 * series.surface,
246
+ h_rad_max_W_per_m2_K: hRad,
247
+ Bi_radiating: biRadiating,
248
+ T_radiating_K: tRadiating,
249
+ },
250
+ checks: [
251
+ check('lumped', 'one temperature for the sphere: internal conduction fast beside surface loss, Bi ≪ 1', 'h (a/3)/k', bi, '<=', MAX_BIOT, 'the conventional criterion Bi ≤ 0.1 with L_c = V/A (Incropera §5.2); parent_deviation shows the error it leaves at t'),
252
+ check('linear-loss', 'the loss is linear in T − T∞: radiation small beside convection', 'εσ_SB(T_max + T∞)(T_max² + T∞²)/h', hRad / h, '<=', MAX_RADIATION_RATIO, 'chosen threshold: the neglected radiative conductance is ≤ 10% of h at the hottest point of the run (Incropera eq. 1.9 linearization)'),
253
+ ],
254
+ unchecked: [
255
+ 'h is uniform over the sphere and constant in time; for natural convection it falls as the sphere approaches T∞',
256
+ 'ρ, c and k are constant over [min(T0, T∞), max(T0, T∞)]',
257
+ ],
258
+ };
259
+ },
260
+ };
261
+ //# sourceMappingURL=lumped-cooling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lumped-cooling.js","sourceRoot":"","sources":["../../src/cases/lumped-cooling.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Adaptive Simpson quadrature for the parent-model comparisons of the applied
3
+ * cases. The integrands there are smooth and monotone over bands that can span
4
+ * many decades, which a fixed grid resolves badly at the low end.
5
+ *
6
+ * @module cases/quadrature
7
+ */
8
+ /**
9
+ * ∫ₐᵇ f by adaptive Simpson with Richardson correction.
10
+ * @throws Error if the recursion hits `maxDepth` without meeting `relTol`.
11
+ * @internal
12
+ */
13
+ export declare function adaptiveSimpson(f: (x: number) => number, a: number, b: number, relTol?: number, maxDepth?: number): number;
14
+ //# sourceMappingURL=quadrature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quadrature.d.ts","sourceRoot":"","sources":["../../src/cases/quadrature.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,SAAQ,EAAE,QAAQ,SAAK,GAAG,MAAM,CAwBrH"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Adaptive Simpson quadrature for the parent-model comparisons of the applied
3
+ * cases. The integrands there are smooth and monotone over bands that can span
4
+ * many decades, which a fixed grid resolves badly at the low end.
5
+ *
6
+ * @module cases/quadrature
7
+ */
8
+ /**
9
+ * ∫ₐᵇ f by adaptive Simpson with Richardson correction.
10
+ * @throws Error if the recursion hits `maxDepth` without meeting `relTol`.
11
+ * @internal
12
+ */
13
+ export function adaptiveSimpson(f, a, b, relTol = 1e-10, maxDepth = 60) {
14
+ const fa = f(a);
15
+ const fb = f(b);
16
+ const m = (a + b) / 2;
17
+ const fm = f(m);
18
+ const whole = ((b - a) / 6) * (fa + 4 * fm + fb);
19
+ // The tolerance is relative to the whole integral, estimated from a coarse pass.
20
+ let scale = Math.abs(whole);
21
+ for (let i = 1; i < 64; i++)
22
+ scale = Math.max(scale, Math.abs(f(a + ((b - a) * i) / 64)) * (b - a));
23
+ const eps = relTol * (scale > 0 ? scale : 1);
24
+ const step = (lo, hi, flo, fmid, fhi, s, tol, depth) => {
25
+ const mid = (lo + hi) / 2;
26
+ const lm = (lo + mid) / 2;
27
+ const rm = (mid + hi) / 2;
28
+ const flm = f(lm);
29
+ const frm = f(rm);
30
+ const left = ((mid - lo) / 6) * (flo + 4 * flm + fmid);
31
+ const right = ((hi - mid) / 6) * (fmid + 4 * frm + fhi);
32
+ const diff = left + right - s;
33
+ if (Math.abs(diff) <= 15 * tol)
34
+ return left + right + diff / 15;
35
+ if (depth >= maxDepth)
36
+ throw new Error(`adaptiveSimpson: no convergence on [${lo}, ${hi}] at depth ${depth}`);
37
+ return step(lo, mid, flo, flm, fmid, left, tol / 2, depth + 1) + step(mid, hi, fmid, frm, fhi, right, tol / 2, depth + 1);
38
+ };
39
+ return step(a, b, fa, fm, fb, whole, eps, 0);
40
+ }
41
+ //# sourceMappingURL=quadrature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quadrature.js","sourceRoot":"","sources":["../../src/cases/quadrature.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type AppliedCase } from './types.js';
2
+ /** h f_hi/(k_B T) ceiling: the Planck factor x/(eˣ−1) is then within x/2 ≤ 0.5% of 1. @internal */
3
+ export declare const CLASSICAL_MAX_X = 0.01;
4
+ /** 2π f_hi R_eff C_in ceiling: the input RC pole then passes 1/(1+w²) ≥ 99% at f_hi. @internal */
5
+ export declare const FLAT_BAND_MAX_WRC = 0.1;
6
+ /**
7
+ * Ceiling on σ(S_R)/S_R = 1/(φ√(B t_avg)): the resistor's noise power, left after
8
+ * subtracting an exactly known amplifier power, scatters by ≤ 1%. The total
9
+ * power scatters by 1/√(B t_avg) (Dicke 1946); φ is the resistor's share of it.
10
+ * @internal
11
+ */
12
+ export declare const AMPLIFIER_MAX_REL_SIGMA = 0.01;
13
+ export declare const RESISTOR_NOISE_CASE: AppliedCase;
14
+ //# sourceMappingURL=resistor-noise.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resistor-noise.d.ts","sourceRoot":"","sources":["../../src/cases/resistor-noise.ts"],"names":[],"mappings":"AAkBA,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAItE,mGAAmG;AACnG,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC,kGAAkG;AAClG,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAU5C,eAAO,MAAM,mBAAmB,EAAE,WAgLjC,CAAC"}
@@ -0,0 +1,210 @@
1
+ /**
2
+ * Applied case: the thermal (Johnson–Nyquist) noise voltage of a resistor as an
3
+ * instrument reads it — over a finite band, loaded by the instrument's input
4
+ * resistance and capacitance.
5
+ *
6
+ * The catalog's BE-58 gives the flat spectral density S_V = 4 k_B T R. A
7
+ * measurement reads an RMS voltage over a band, through an input network, so
8
+ * this case adds the band, the loading, and the two premises that make the
9
+ * spectrum flat (hf ≪ k_BT, and the input RC pole above the band), and checks
10
+ * both. The parent spectrum is integrated numerically for comparison. Given
11
+ * the amplifier's e_n and i_n, it adds them to the reading and checks that the
12
+ * resistor's share can still be resolved in the averaging time.
13
+ *
14
+ * @module cases/resistor-noise
15
+ */
16
+ import { H_SI, K_B_SI } from '../core/constants.js';
17
+ import { evaluateJohnsonNyquist } from '../bridges/be58-johnson-nyquist.js';
18
+ import { adaptiveSimpson } from './quadrature.js';
19
+ import { check, requirePositive } from './types.js';
20
+ const ID = 'case-resistor-noise';
21
+ /** h f_hi/(k_B T) ceiling: the Planck factor x/(eˣ−1) is then within x/2 ≤ 0.5% of 1. @internal */
22
+ export const CLASSICAL_MAX_X = 0.01;
23
+ /** 2π f_hi R_eff C_in ceiling: the input RC pole then passes 1/(1+w²) ≥ 99% at f_hi. @internal */
24
+ export const FLAT_BAND_MAX_WRC = 0.1;
25
+ /**
26
+ * Ceiling on σ(S_R)/S_R = 1/(φ√(B t_avg)): the resistor's noise power, left after
27
+ * subtracting an exactly known amplifier power, scatters by ≤ 1%. The total
28
+ * power scatters by 1/√(B t_avg) (Dicke 1946); φ is the resistor's share of it.
29
+ * @internal
30
+ */
31
+ export const AMPLIFIER_MAX_REL_SIGMA = 0.01;
32
+ /** Nyquist's thermal spectral density at f, shaped by the input RC; `x/expm1(x)` → 1 as x → 0. */
33
+ function parentDensity(f, T, rEff, c) {
34
+ const x = (H_SI * f) / (K_B_SI * T);
35
+ const planck = x === 0 ? 1 : x / Math.expm1(x);
36
+ const w = 2 * Math.PI * f * rEff * c;
37
+ return (4 * K_B_SI * T * rEff * planck) / (1 + w * w);
38
+ }
39
+ export const RESISTOR_NOISE_CASE = {
40
+ id: ID,
41
+ title: 'Resistor thermal-noise measurement (bandwidth, instrument loading)',
42
+ parameters: [
43
+ { key: 'T_K', quantity: 'temperature', symbol: 'T', unit: 'K', meaning: 'absolute temperature of the resistor and of the instrument input, > 0 K', temperature: 'absolute' },
44
+ { key: 'R_ohm', quantity: 'resistance under test', symbol: 'R', unit: 'ohm', meaning: 'the resistor whose noise is measured, > 0' },
45
+ { key: 'R_in_ohm', quantity: 'instrument input resistance', symbol: 'R_in', unit: 'ohm', meaning: 'the input resistance in parallel with R, > 0 (a physical resistor at T)' },
46
+ { key: 'C_in_F', quantity: 'input capacitance', symbol: 'C_in', unit: 'F', meaning: 'instrument input plus cable capacitance in parallel with R, ≥ 0' },
47
+ { key: 'f_lo_Hz', quantity: 'lower band edge', symbol: 'f_lo', unit: 'Hz', meaning: 'lower edge of the ideal (brick-wall) measurement band, ≥ 0' },
48
+ { key: 'f_hi_Hz', quantity: 'upper band edge', symbol: 'f_hi', unit: 'Hz', meaning: 'upper edge of the band, > f_lo; B = f_hi − f_lo is the noise-equivalent bandwidth' },
49
+ { key: 't_avg_s', quantity: 'averaging time', symbol: 't_avg', unit: 's', meaning: 'how long the RMS is averaged, > 0' },
50
+ {
51
+ key: 'e_n2_V2_per_Hz',
52
+ quantity: 'amplifier voltage-noise power density',
53
+ symbol: 'e_n²',
54
+ unit: 'V^2/Hz',
55
+ meaning: "the square of the amplifier's input voltage noise e_n, white over the band (4 nV/√Hz → 1.6e-17), ≥ 0",
56
+ optional: true,
57
+ },
58
+ {
59
+ key: 'i_n2_A2_per_Hz',
60
+ quantity: 'amplifier current-noise power density',
61
+ symbol: 'i_n²',
62
+ unit: 'A^2/Hz',
63
+ meaning: "the square of the amplifier's input current noise i_n, white over the band (1 pA/√Hz → 1e-24), ≥ 0",
64
+ optional: true,
65
+ },
66
+ ],
67
+ governing: {
68
+ parent: [
69
+ 'S_V(f) = 4 R_eff · hf/(e^{hf/k_BT} − 1) · 1/(1 + (2πf R_eff C_in)²) (Nyquist 1928, thermal part; seen through the input RC)',
70
+ 'V_rms² = ∫_{f_lo}^{f_hi} S_V(f) df',
71
+ ],
72
+ scalar: [
73
+ 'S_V = 4 k_B T R_eff, R_eff = R R_in/(R + R_in) (BE-58 with the loaded resistance)',
74
+ 'V_rms = √(4 k_B T R_eff B), B = f_hi − f_lo',
75
+ 'through an amplifier: V_rms,total² = (4 k_B T R_eff + e_n² + i_n² R_eff²) B, e_n and i_n uncorrelated (the e_n–i_n model; Motchenbacher & Connelly 1993)',
76
+ ],
77
+ distinction: 'S_V(f) is a spectral density — a function of frequency fixed by the fluctuation–dissipation theorem and shaped by ' +
78
+ 'the input network; 4k_BTR_eff is its flat, classical value, and √(4k_BT R_eff B) integrates that constant over an ' +
79
+ 'ideal band. Nyquist derived it from the thermal modes of a transmission line (a 1-D field); the lumped circuit keeps ' +
80
+ 'only the port voltage.',
81
+ },
82
+ observable: 'V_rms_V',
83
+ outputs: [
84
+ { key: 'B_Hz', symbol: 'B', unit: 'Hz', meaning: 'noise-equivalent bandwidth f_hi − f_lo' },
85
+ { key: 'R_eff_ohm', symbol: 'R_eff', unit: 'ohm', meaning: 'R in parallel with R_in: the resistance the instrument sees' },
86
+ { key: 'S_V_V2_per_Hz', symbol: 'S_V', unit: 'V^2/Hz', meaning: 'flat one-sided spectral density 4k_BT R_eff' },
87
+ { key: 'V_rms_unloaded_V', symbol: 'V_rms,0', unit: 'V', meaning: 'open-circuit value √(4k_BTRB), with no instrument attached' },
88
+ { key: 'V_rms_V', symbol: 'V_rms', unit: 'V', meaning: 'the RMS noise voltage the instrument reads (scalar model)' },
89
+ { key: 'loading_ratio', symbol: 'V_rms/V_rms,0', unit: '', meaning: '√(R_in/(R + R_in)): what the input resistance removes' },
90
+ { key: 'V_rms_parent_V', symbol: 'V_rms,parent', unit: 'V', meaning: 'the parent spectrum integrated over the band (adaptive Simpson)' },
91
+ { key: 'parent_deviation', symbol: 'V_rms/V_rms,parent − 1', unit: '', meaning: 'relative excess of the scalar result over the parent' },
92
+ { key: 'V_rms_rel_sigma', symbol: 'σ(V_rms)/V_rms', unit: '', meaning: 'statistical scatter of an RMS averaged over t_avg: 1/(2√(B t_avg)) (Dicke radiometer relation)' },
93
+ { key: 'V_rms_total_V', symbol: 'V_rms,total', unit: 'V', meaning: 'what the instrument reads with its amplifier noise added in quadrature; null without e_n2/i_n2' },
94
+ { key: 'resistor_fraction', symbol: 'φ', unit: '', meaning: "the thermal share of the read noise power, 4k_BTR_eff/(4k_BTR_eff + e_n² + i_n²R_eff²); null without e_n2/i_n2" },
95
+ { key: 'T_n_K', symbol: 'T_n', unit: 'K', meaning: "the amplifier's noise temperature for the source R_eff, (e_n² + i_n²R_eff²)/(4k_B R_eff); null without e_n2/i_n2" },
96
+ ],
97
+ conditions: [
98
+ 'thermal equilibrium: R and the instrument input at one temperature T, no DC current through R',
99
+ 'the instrument reads the voltage across R ∥ R_in ∥ C_in (open-circuit source, no other load)',
100
+ 'stationary Gaussian noise; the band is an ideal brick wall of width B (the real filter enters only through its noise-equivalent bandwidth)',
101
+ ],
102
+ comparison: {
103
+ reference: "the parent: Nyquist's thermal spectrum through the input RC, integrated over [f_lo, f_hi]",
104
+ valueKey: 'V_rms_V',
105
+ referenceKey: 'V_rms_parent_V',
106
+ deviationKey: 'parent_deviation',
107
+ method: 'adaptive Simpson quadrature, relative tolerance 1e-10',
108
+ },
109
+ notIncluded: [
110
+ "the amplifier's noise when e_n2 and i_n2 are left out; when given, their 1/f corners and their correlation (taken white and uncorrelated)",
111
+ '1/f (excess) noise, which needs a current through R',
112
+ 'the zero-point term hf/2 of the quantum fluctuation–dissipation theorem (the parent here is the thermal part)',
113
+ 'frequency dependence of R and R_in over the band',
114
+ ],
115
+ measurement: [
116
+ 'digitize the voltage across R through a band-pass of noise-equivalent bandwidth B and average the RMS over t_avg; ' +
117
+ 'compare with V_rms_V ± V_rms_rel_sigma·V_rms_V (statistical scatter only)',
118
+ "measure the amplifier's own noise with its input shorted and subtract it in quadrature before comparing",
119
+ '`upt confront --bridge=be-58`: the NIST Johnson-noise-thermometry k_B, which tests S_V = 4k_BTR with R traceable to the quantum Hall effect',
120
+ ],
121
+ links: [
122
+ { id: 'be-58', role: 'the flat spectral density S_V = 4k_BTR (catalog evaluator: `upt evaluate be-58`)' },
123
+ { id: 'be-55', role: 'quantum Hall resistance standard to which R is traceable in the JNT comparison' },
124
+ ],
125
+ examples: {
126
+ valid: {
127
+ args: ['T_K=300', 'R_ohm=1kohm', 'R_in_ohm=1Mohm', 'C_in_F=20pF', 'f_lo_Hz=0', 'f_hi_Hz=10kHz', 't_avg_s=10', 'e_n2_V2_per_Hz=1e-18', 'i_n2_A2_per_Hz=1e-24'],
128
+ note: 'a 1 kΩ resistor at 300 K, a 1 MΩ ∥ 20 pF input with 1 nV/√Hz and 1 pA/√Hz of amplifier noise, a 10 kHz band, 10 s of averaging',
129
+ fails: [],
130
+ },
131
+ failures: [
132
+ {
133
+ args: ['T_K=20mK', 'R_ohm=50', 'R_in_ohm=1Mohm', 'C_in_F=0', 'f_lo_Hz=1GHz', 'f_hi_Hz=2GHz', 't_avg_s=1'],
134
+ note: 'a 50 Ω load at 20 mK read at 1–2 GHz: hf/k_BT ≈ 4.8, the spectrum is not flat and 4k_BTR overstates it',
135
+ fails: ['classical'],
136
+ },
137
+ {
138
+ args: ['T_K=300', 'R_ohm=1Mohm', 'R_in_ohm=10Mohm', 'C_in_F=100pF', 'f_lo_Hz=0', 'f_hi_Hz=100kHz', 't_avg_s=1'],
139
+ note: 'a 1 MΩ resistor through 100 pF: the RC pole sits near 1.7 Hz, far below the 100 kHz band edge',
140
+ fails: ['flat-band'],
141
+ },
142
+ {
143
+ args: ['T_K=300', 'R_ohm=10', 'R_in_ohm=1Mohm', 'C_in_F=20pF', 'f_lo_Hz=0', 'f_hi_Hz=10kHz', 't_avg_s=10', 'e_n2_V2_per_Hz=1.6e-17', 'i_n2_A2_per_Hz=1e-24'],
144
+ note: 'a 10 Ω resistor through a 4 nV/√Hz amplifier: the amplifier adds ~100× the resistor\'s noise power, which 10 s cannot resolve to 1%',
145
+ fails: ['amplifier'],
146
+ },
147
+ ],
148
+ },
149
+ /** Evaluate the measured Johnson-Nyquist RMS voltage and instrument-regime checks for the supplied inputs. */
150
+ run(i) {
151
+ requirePositive(ID, i, ['T_K', 'R_ohm', 'R_in_ohm', 'f_hi_Hz', 't_avg_s']);
152
+ const { T_K: T, R_ohm: R, R_in_ohm: Rin, C_in_F: C, f_lo_Hz: fLo, f_hi_Hz: fHi, t_avg_s: tAvg } = i;
153
+ if (!Number.isFinite(C) || C < 0)
154
+ throw new Error(`${ID}: C_in_F must be a finite number ≥ 0 (got ${C})`);
155
+ if (!Number.isFinite(fLo) || fLo < 0 || fLo >= fHi)
156
+ throw new Error(`${ID}: need 0 ≤ f_lo_Hz < f_hi_Hz (got ${fLo}, ${fHi})`);
157
+ const B = fHi - fLo;
158
+ const rEff = (R * Rin) / (R + Rin);
159
+ const S = evaluateJohnsonNyquist({ T_K: T, R_ohm: rEff }).S_V_V2_per_Hz;
160
+ const S0 = evaluateJohnsonNyquist({ T_K: T, R_ohm: R }).S_V_V2_per_Hz;
161
+ const vRms = Math.sqrt(S * B);
162
+ const vParent = Math.sqrt(adaptiveSimpson((f) => parentDensity(f, T, rEff, C), fLo, fHi));
163
+ const x = (H_SI * fHi) / (K_B_SI * T);
164
+ const wrc = 2 * Math.PI * fHi * rEff * C;
165
+ const checks = [
166
+ check('classical', 'flat, classical spectrum: hf ≪ k_BT across the band', 'h f_hi/(k_B T)', x, '<=', CLASSICAL_MAX_X, 'chosen threshold for ≪ 1: the Planck factor at f_hi is then within x/2 ≤ 0.5% of 1'),
167
+ check('flat-band', 'the input RC pole lies above the band', '2π f_hi R_eff C_in', wrc, '<=', FLAT_BAND_MAX_WRC, 'chosen threshold for ≪ 1: the RC low-pass then passes ≥ 99% of the density at f_hi'),
168
+ ];
169
+ const unchecked = [
170
+ 'R_in is a physical resistance at T; an actively synthesized or cold input adds less noise than its resistance would, ' +
171
+ 'down to the resistor alone divided by the input: V_rms,0 · R_in/(R + R_in)',
172
+ 'no DC current through R, so no 1/f excess noise',
173
+ ];
174
+ const withAmplifier = i.e_n2_V2_per_Hz !== undefined || i.i_n2_A2_per_Hz !== undefined;
175
+ let amp = null;
176
+ if (withAmplifier) {
177
+ const en2 = i.e_n2_V2_per_Hz ?? 0;
178
+ const in2 = i.i_n2_A2_per_Hz ?? 0;
179
+ for (const [k, v] of [['e_n2_V2_per_Hz', en2], ['i_n2_A2_per_Hz', in2]]) {
180
+ if (!Number.isFinite(v) || v < 0)
181
+ throw new Error(`${ID}: ${k} must be a finite number ≥ 0 (got ${v})`);
182
+ }
183
+ const excess = en2 + in2 * rEff * rEff;
184
+ const fraction = S / (S + excess);
185
+ amp = { total: Math.sqrt((S + excess) * B), fraction, tN: excess / (4 * K_B_SI * rEff) };
186
+ checks.push(check('amplifier', "the resistor's noise is resolved above the amplifier's in t_avg", '1/(φ √(B t_avg))', 1 / (fraction * Math.sqrt(B * tAvg)), '<=', AMPLIFIER_MAX_REL_SIGMA, "chosen threshold: after subtracting the amplifier's power (known exactly, e.g. from a long shorted-input run) the resistor's power scatters by ≤ 1%"));
187
+ unchecked.push(`e_n and i_n are white over the band and uncorrelated${i.e_n2_V2_per_Hz === undefined ? '; e_n was not given and is taken as 0' : ''}` +
188
+ `${i.i_n2_A2_per_Hz === undefined ? '; i_n was not given and is taken as 0' : ''}`);
189
+ }
190
+ return {
191
+ outputs: {
192
+ B_Hz: B,
193
+ R_eff_ohm: rEff,
194
+ S_V_V2_per_Hz: S,
195
+ V_rms_unloaded_V: Math.sqrt(S0 * B),
196
+ V_rms_V: vRms,
197
+ loading_ratio: Math.sqrt(S / S0),
198
+ V_rms_parent_V: vParent,
199
+ parent_deviation: vRms / vParent - 1,
200
+ V_rms_rel_sigma: 1 / (2 * Math.sqrt(B * tAvg)),
201
+ V_rms_total_V: amp?.total ?? null,
202
+ resistor_fraction: amp?.fraction ?? null,
203
+ T_n_K: amp?.tN ?? null,
204
+ },
205
+ checks,
206
+ unchecked,
207
+ };
208
+ },
209
+ };
210
+ //# sourceMappingURL=resistor-noise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resistor-noise.js","sourceRoot":"","sources":["../../src/cases/resistor-noise.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type AppliedCase } from './types.js';
2
+ /** Vacuum permeability μ0, CODATA 2018 (N/A²). @internal */
3
+ export declare const MU_0_SI = 0.00000125663706212;
4
+ /** Vacuum permittivity ε0 = 1/(μ0 c²) (F/m). @internal */
5
+ export declare const EPS_0_SI: number;
6
+ /** ωε/σ ceiling: the displacement current then moves the penetration depth by ≈ ωε/(2σ) ≤ 0.5%. @internal */
7
+ export declare const MAX_DISPLACEMENT_RATIO = 0.01;
8
+ /** l/δ ceiling for a local (classical) conductivity. @internal */
9
+ export declare const MAX_MFP_RATIO = 0.1;
10
+ /** ωτ ceiling: the Drude σ(ω) = σ0/(1 − iωτ) is then within 0.5% of σ0 in modulus. @internal */
11
+ export declare const MAX_OMEGA_TAU = 0.1;
12
+ /** d/δ floor: the field reaching the back face is then ≤ e^{−5} ≈ 0.7% of the surface field. @internal */
13
+ export declare const MIN_THICKNESS_RATIO = 5;
14
+ /**
15
+ * δ_Maxwell/δ for the plane wave k² = ω²με + iωμσ, as a function of r = ωε/σ:
16
+ * 1/Im k = δ √(√(1 + r²) + r), written without the cancellation of |z| − Re z.
17
+ * @internal
18
+ */
19
+ export declare function maxwellDepthFactor(r: number): number;
20
+ export declare const SKIN_DEPTH_CASE: AppliedCase;
21
+ //# sourceMappingURL=skin-depth.d.ts.map