universal-physics-tensor 3.1.0 → 4.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 +5 -5
- package/dist/atlas/catalog-formal-ref.d.ts.map +1 -1
- package/dist/atlas/catalog-formal-ref.js +1 -0
- package/dist/atlas/catalog-formal-ref.js.map +1 -1
- package/dist/atlas/physjs-ref.d.ts +7 -4
- package/dist/atlas/physjs-ref.d.ts.map +1 -1
- package/dist/atlas/physjs-ref.js +117 -4
- package/dist/atlas/physjs-ref.js.map +1 -1
- package/dist/bridges/be70-einstein-relation.d.ts +1 -1
- package/dist/bridges/be70-einstein-relation.d.ts.map +1 -1
- package/dist/bridges/be70-einstein-relation.js +5 -1
- package/dist/bridges/be70-einstein-relation.js.map +1 -1
- package/dist/bridges/be77-hagen-poiseuille.d.ts +50 -0
- package/dist/bridges/be77-hagen-poiseuille.d.ts.map +1 -0
- package/dist/bridges/be77-hagen-poiseuille.js +39 -0
- package/dist/bridges/be77-hagen-poiseuille.js.map +1 -0
- package/dist/bridges/be78-euler-buckling.d.ts +44 -0
- package/dist/bridges/be78-euler-buckling.d.ts.map +1 -0
- package/dist/bridges/be78-euler-buckling.js +33 -0
- package/dist/bridges/be78-euler-buckling.js.map +1 -0
- package/dist/bridges/be79-pull-in.d.ts +33 -0
- package/dist/bridges/be79-pull-in.d.ts.map +1 -0
- package/dist/bridges/be79-pull-in.js +35 -0
- package/dist/bridges/be79-pull-in.js.map +1 -0
- package/dist/bridges/be80-mott-gurney.d.ts +52 -0
- package/dist/bridges/be80-mott-gurney.d.ts.map +1 -0
- package/dist/bridges/be80-mott-gurney.js +38 -0
- package/dist/bridges/be80-mott-gurney.js.map +1 -0
- package/dist/bridges/be81-child-langmuir.d.ts +33 -0
- package/dist/bridges/be81-child-langmuir.d.ts.map +1 -0
- package/dist/bridges/be81-child-langmuir.js +38 -0
- package/dist/bridges/be81-child-langmuir.js.map +1 -0
- package/dist/bridges/be82-shockley-diode.d.ts +32 -0
- package/dist/bridges/be82-shockley-diode.d.ts.map +1 -0
- package/dist/bridges/be82-shockley-diode.js +37 -0
- package/dist/bridges/be82-shockley-diode.js.map +1 -0
- package/dist/bridges/be83-thomson.d.ts +46 -0
- package/dist/bridges/be83-thomson.d.ts.map +1 -0
- package/dist/bridges/be83-thomson.js +32 -0
- package/dist/bridges/be83-thomson.js.map +1 -0
- package/dist/bridges/be84-four-point.d.ts +45 -0
- package/dist/bridges/be84-four-point.d.ts.map +1 -0
- package/dist/bridges/be84-four-point.js +34 -0
- package/dist/bridges/be84-four-point.js.map +1 -0
- package/dist/bridges/be85-shot-noise.d.ts +30 -0
- package/dist/bridges/be85-shot-noise.d.ts.map +1 -0
- package/dist/bridges/be85-shot-noise.js +32 -0
- package/dist/bridges/be85-shot-noise.js.map +1 -0
- package/dist/bridges/be86-reynolds-analogy.d.ts +45 -0
- package/dist/bridges/be86-reynolds-analogy.d.ts.map +1 -0
- package/dist/bridges/be86-reynolds-analogy.js +30 -0
- package/dist/bridges/be86-reynolds-analogy.js.map +1 -0
- package/dist/bridges/be87-capacitor-noise.d.ts +27 -0
- package/dist/bridges/be87-capacitor-noise.d.ts.map +1 -0
- package/dist/bridges/be87-capacitor-noise.js +32 -0
- package/dist/bridges/be87-capacitor-noise.js.map +1 -0
- package/dist/bridges/bridge-equations.d.ts +22 -0
- package/dist/bridges/bridge-equations.d.ts.map +1 -1
- package/dist/bridges/bridge-equations.js +22 -0
- package/dist/bridges/bridge-equations.js.map +1 -1
- package/dist/bridges/evaluators.d.ts.map +1 -1
- package/dist/bridges/evaluators.js +59 -2
- package/dist/bridges/evaluators.js.map +1 -1
- package/dist/bridges/index.d.ts +25 -3
- package/dist/bridges/index.d.ts.map +1 -1
- package/dist/bridges/index.js +245 -3
- package/dist/bridges/index.js.map +1 -1
- package/dist/cases/brownian-sphere.d.ts.map +1 -1
- package/dist/cases/brownian-sphere.js +4 -4
- package/dist/cases/brownian-sphere.js.map +1 -1
- package/dist/cases/lumped-cooling.d.ts.map +1 -1
- package/dist/cases/lumped-cooling.js +2 -2
- package/dist/cases/lumped-cooling.js.map +1 -1
- package/dist/cases/resistor-noise.d.ts.map +1 -1
- package/dist/cases/resistor-noise.js +2 -2
- package/dist/cases/resistor-noise.js.map +1 -1
- package/dist/cases/skin-depth.d.ts.map +1 -1
- package/dist/cases/skin-depth.js +2 -2
- package/dist/cases/skin-depth.js.map +1 -1
- package/dist/cases/types.d.ts +11 -1
- package/dist/cases/types.d.ts.map +1 -1
- package/dist/cases/types.js +9 -0
- package/dist/cases/types.js.map +1 -1
- package/dist/cli/closed-form-range.d.ts +1 -1
- package/dist/cli/closed-form-range.js +1 -1
- package/dist/cli/commands/audit.d.ts.map +1 -1
- package/dist/cli/commands/audit.js +6 -1
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/search.js +2 -2
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/search-index.d.ts +1 -1
- package/dist/cli/search-index.d.ts.map +1 -1
- package/dist/cli/search-index.js +25 -1
- package/dist/cli/search-index.js.map +1 -1
- package/dist/composition/bridge-analysis.d.ts +8 -0
- package/dist/composition/bridge-analysis.d.ts.map +1 -1
- package/dist/composition/bridge-analysis.js +35 -6
- package/dist/composition/bridge-analysis.js.map +1 -1
- package/dist/composition/canonical-graph.d.ts +7 -6
- package/dist/composition/canonical-graph.d.ts.map +1 -1
- package/dist/composition/canonical-graph.js +13 -9
- package/dist/composition/canonical-graph.js.map +1 -1
- package/dist/composition/canonical-prefactors.d.ts +4 -2
- package/dist/composition/canonical-prefactors.d.ts.map +1 -1
- package/dist/composition/canonical-prefactors.js +46 -2
- package/dist/composition/canonical-prefactors.js.map +1 -1
- package/dist/composition/catalog-graph.d.ts +3 -3
- package/dist/composition/catalog-graph.js +3 -3
- package/dist/composition/edge.d.ts +10 -2
- package/dist/composition/edge.d.ts.map +1 -1
- package/dist/composition/edge.js +62 -2
- package/dist/composition/edge.js.map +1 -1
- package/dist/composition/edges/applied-physicist.d.ts +73 -1
- package/dist/composition/edges/applied-physicist.d.ts.map +1 -1
- package/dist/composition/edges/applied-physicist.js +426 -25
- package/dist/composition/edges/applied-physicist.js.map +1 -1
- package/dist/composition/index.d.ts +1 -1
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +1 -1
- package/dist/composition/index.js.map +1 -1
- package/dist/composition/quantities/applied-physicist.d.ts +78 -0
- package/dist/composition/quantities/applied-physicist.d.ts.map +1 -1
- package/dist/composition/quantities/applied-physicist.js +303 -0
- package/dist/composition/quantities/applied-physicist.js.map +1 -1
- package/dist/dimensional/bridge-check.d.ts +1 -1
- package/dist/dimensional/bridge-check.d.ts.map +1 -1
- package/dist/dimensional/bridge-check.js +12 -1
- package/dist/dimensional/bridge-check.js.map +1 -1
- package/dist/dimensional/units.d.ts.map +1 -1
- package/dist/dimensional/units.js +3 -0
- package/dist/dimensional/units.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -21,9 +21,21 @@ import { evaluateKelvinPeltier } from '../../bridges/be73-kelvin-peltier.js';
|
|
|
21
21
|
import { evaluateMagneticPressure } from '../../bridges/be74-magnetic-pressure.js';
|
|
22
22
|
import { evaluateLondonPenetration } from '../../bridges/be75-london-penetration.js';
|
|
23
23
|
import { evaluatePlasmaBeta } from '../../bridges/be76-plasma-beta.js';
|
|
24
|
+
import { evaluateHagenPoiseuille } from '../../bridges/be77-hagen-poiseuille.js';
|
|
25
|
+
import { evaluateEulerBuckling } from '../../bridges/be78-euler-buckling.js';
|
|
26
|
+
import { evaluatePullIn } from '../../bridges/be79-pull-in.js';
|
|
27
|
+
import { evaluateMottGurney } from '../../bridges/be80-mott-gurney.js';
|
|
28
|
+
import { evaluateChildLangmuir } from '../../bridges/be81-child-langmuir.js';
|
|
29
|
+
import { evaluateShockleyDiode } from '../../bridges/be82-shockley-diode.js';
|
|
30
|
+
import { evaluateThomsonCoefficient } from '../../bridges/be83-thomson.js';
|
|
31
|
+
import { evaluateFourPointSheet } from '../../bridges/be84-four-point.js';
|
|
32
|
+
import { evaluateShotNoise } from '../../bridges/be85-shot-noise.js';
|
|
33
|
+
import { evaluateReynoldsAnalogy } from '../../bridges/be86-reynolds-analogy.js';
|
|
34
|
+
import { evaluateCapacitorNoise } from '../../bridges/be87-capacitor-noise.js';
|
|
24
35
|
import { DIMENSIONLESS } from '../../dimensional/types.js';
|
|
25
36
|
import { CONSTANTS } from '../../dimensional/symbolic-constants.js';
|
|
26
|
-
import {
|
|
37
|
+
import { withBoundAliases } from '../edge.js';
|
|
38
|
+
import { alfvenSpeedQ, incidenceAngleQ, magneticFluxDensityQ, metricG00Q, plasmaMassDensityQ, poyntingFluxQ, properTemperatureQ, radiationPressureQ, reflectanceQ, tolmanInvariantQ, soundSpeedQ, fastMagnetosonicSpeedQ, electricalMobilityQ, einsteinTemperatureQ, carrierChargeQ, diffusivityQ, latentHeatQ, clapeyronTemperatureQ, specificVolumeChangeQ, clapeyronSlopeQ, redshiftMetricG00OneQ, redshiftMetricG00TwoQ, gravitationalFrequencyRatioQ, seebeckCoefficientQ, peltierTemperatureQ, peltierCoefficientQ, magneticPressureQ, londonPenetrationDepthQ, plasmaBetaQ, carrierDensityQ, effectiveMassQ, temperatureQ, pipeRadiusQ, pipePressureDropQ, dynamicViscosityQ, pipeLengthQ, poiseuilleFlowQ, youngsModulusQ, areaMomentQ, columnLengthQ, bucklingLoadQ, pullInStiffnessQ, pullInGapQ, pullInAreaQ, pullInVoltageQ, mottPermittivityQ, mottMobilityQ, mottVoltageQ, mottThicknessQ, mottGurneyCurrentQ, childCarrierMassQ, childVoltageQ, childGapQ, childLangmuirCurrentQ, shockleySaturationQ, shockleyVoltageQ, shockleyTemperatureQ, shockleyCurrentQ, thomsonTemperatureQ, seebeckSlopeQ, thomsonCoefficientQ, fourPointVoltageQ, fourPointCurrentQ, sheetResistanceQ, shotCurrentQ, shotNoiseQ, skinFrictionQ, stantonNumberQ, capacitorTemperatureQ, capacitanceQ, capacitorVoltageVarianceQ, } from '../quantities.js';
|
|
27
39
|
const finite = Number.isFinite;
|
|
28
40
|
const qsym = (q) => ({ kind: 'symbol', name: q.name, dim: q.dim });
|
|
29
41
|
const csym = (name) => ({ kind: 'symbol', name, dim: CONSTANTS[name].dim });
|
|
@@ -34,6 +46,9 @@ const ratio = (num, den) => ({ kind: 'op', op: '/', args: [num, den] });
|
|
|
34
46
|
const pow = (base, exp) => ({ kind: 'op', op: '^', args: [base, exp] });
|
|
35
47
|
/** μ0 = 1/(ε0 c²). The same product the Alfvén and magnetosonic formulas use. */
|
|
36
48
|
const mu0 = ratio(lit(1), prod(csym('epsilon_0'), pow(csym('c'), lit(2))));
|
|
49
|
+
/** π as a dimensionless leaf. `piMultipleValue` resolves the name. */
|
|
50
|
+
const pi = { kind: 'symbol', name: 'pi', dim: DIMENSIONLESS };
|
|
51
|
+
const expOf = (arg) => ({ kind: 'transcendental', fn: 'exp', arg });
|
|
37
52
|
/** P_n = (I/c) (1+R) cos²θ. */
|
|
38
53
|
const BE66_SYMBOLIC = prod(ratio(qsym(poyntingFluxQ), csym('c')), plus(lit(1), qsym(reflectanceQ)), pow({ kind: 'transcendental', fn: 'cos', arg: qsym(incidenceAngleQ) }, lit(2)));
|
|
39
54
|
/** μ0 = 1/(ε0 c²). v_A = B / √(μ0 ρ). */
|
|
@@ -48,7 +63,7 @@ const BE68_SYMBOLIC = prod(qsym(properTemperatureQ), pow(prod(lit(-1), qsym(metr
|
|
|
48
63
|
*
|
|
49
64
|
* @public
|
|
50
65
|
*/
|
|
51
|
-
export const be66Edge = {
|
|
66
|
+
export const be66Edge = withBoundAliases({
|
|
52
67
|
id: 'be-66',
|
|
53
68
|
beId: 66,
|
|
54
69
|
kind: 'law',
|
|
@@ -77,7 +92,7 @@ export const be66Edge = {
|
|
|
77
92
|
}).P_Pa,
|
|
78
93
|
symbolic: BE66_SYMBOLIC,
|
|
79
94
|
citation: 'OpenStax University Physics Volume 2, https://openstax.org/books/university-physics-volume-2/pages/16-4-momentum-and-radiation-pressure (absorber I/c, reflector 2I/c). The (1+R) cos²θ factor is this catalog\'s assembly.',
|
|
80
|
-
};
|
|
95
|
+
});
|
|
81
96
|
/**
|
|
82
97
|
* BE-67 Alfvén speed: (magnetic-flux-density, plasma-mass-density) →
|
|
83
98
|
* alfven-speed, `v_A = B / √(μ0 ρ)`. `ρ` is the total mass density.
|
|
@@ -86,7 +101,7 @@ export const be66Edge = {
|
|
|
86
101
|
*
|
|
87
102
|
* @public
|
|
88
103
|
*/
|
|
89
|
-
export const be67Edge = {
|
|
104
|
+
export const be67Edge = withBoundAliases({
|
|
90
105
|
id: 'be-67',
|
|
91
106
|
beId: 67,
|
|
92
107
|
kind: 'law',
|
|
@@ -111,7 +126,7 @@ export const be67Edge = {
|
|
|
111
126
|
}).v_m_per_s,
|
|
112
127
|
symbolic: BE67_SYMBOLIC,
|
|
113
128
|
citation: 'Alfvén 1942 Nature 150:405. SI form B/√(μ0 ρ); ρ is the total mass density.',
|
|
114
|
-
};
|
|
129
|
+
});
|
|
115
130
|
/**
|
|
116
131
|
* BE-68 Tolman–Ehrenfest: (proper-temperature, metric-g00) →
|
|
117
132
|
* tolman-invariant, `T √(−g_00)`. Endpoints share the classical
|
|
@@ -120,7 +135,7 @@ export const be67Edge = {
|
|
|
120
135
|
*
|
|
121
136
|
* @public
|
|
122
137
|
*/
|
|
123
|
-
export const be68Edge = {
|
|
138
|
+
export const be68Edge = withBoundAliases({
|
|
124
139
|
id: 'be-68',
|
|
125
140
|
beId: 68,
|
|
126
141
|
kind: 'law',
|
|
@@ -145,7 +160,7 @@ export const be68Edge = {
|
|
|
145
160
|
}).invariant_K,
|
|
146
161
|
symbolic: BE68_SYMBOLIC,
|
|
147
162
|
citation: 'Tolman & Ehrenfest 1930 Phys. Rev. 36:1791 (T0 √g_44). Catalog form T √(−g_00).',
|
|
148
|
-
};
|
|
163
|
+
});
|
|
149
164
|
/** |ω/k| = √(c_s² + B²/(μ0 ρ)), with μ0 = 1/(ε0 c²). */
|
|
150
165
|
const BE69_SYMBOLIC = pow(plus(pow(qsym(soundSpeedQ), lit(2)), ratio(pow(qsym(magneticFluxDensityQ), lit(2)), prod(ratio(lit(1), prod(csym('epsilon_0'), pow(csym('c'), lit(2)))), qsym(plasmaMassDensityQ)))), lit(0.5));
|
|
151
166
|
/** D = μ k_B T / q. */
|
|
@@ -164,7 +179,7 @@ const BE73_SYMBOLIC = prod(qsym(seebeckCoefficientQ), qsym(peltierTemperatureQ))
|
|
|
164
179
|
*
|
|
165
180
|
* @public
|
|
166
181
|
*/
|
|
167
|
-
export const be69Edge = {
|
|
182
|
+
export const be69Edge = withBoundAliases({
|
|
168
183
|
id: 'be-69',
|
|
169
184
|
beId: 69,
|
|
170
185
|
kind: 'law',
|
|
@@ -192,14 +207,14 @@ export const be69Edge = {
|
|
|
192
207
|
}).v_m_per_s,
|
|
193
208
|
symbolic: BE69_SYMBOLIC,
|
|
194
209
|
citation: 'PhysJS.FastMagnetosonic.speed_eq. Perpendicular compressional phase speed. c_s = 0 is the Alfvén number of a different polarization.',
|
|
195
|
-
};
|
|
210
|
+
});
|
|
196
211
|
/**
|
|
197
212
|
* BE-70 Einstein relation: (electrical-mobility, einstein-temperature,
|
|
198
213
|
* carrier-charge) → diffusivity, `D = μ k_B T / q`.
|
|
199
214
|
*
|
|
200
215
|
* @public
|
|
201
216
|
*/
|
|
202
|
-
export const be70Edge = {
|
|
217
|
+
export const be70Edge = withBoundAliases({
|
|
203
218
|
id: 'be-70',
|
|
204
219
|
beId: 70,
|
|
205
220
|
kind: 'law',
|
|
@@ -213,12 +228,13 @@ export const be70Edge = {
|
|
|
213
228
|
target: diffusivityQ,
|
|
214
229
|
confidence: 'established',
|
|
215
230
|
domain: {
|
|
216
|
-
description: 'μ finite, T ≠ 0, q ≠ 0',
|
|
231
|
+
description: 'μ finite, T ≠ 0, q ≠ 0, and μ and q have the same sign',
|
|
217
232
|
predicate: (i) => finite(i['electrical-mobility']) &&
|
|
218
233
|
finite(i['einstein-temperature']) &&
|
|
219
234
|
i['einstein-temperature'] !== 0 &&
|
|
220
235
|
finite(i['carrier-charge']) &&
|
|
221
|
-
i['carrier-charge'] !== 0
|
|
236
|
+
i['carrier-charge'] !== 0 &&
|
|
237
|
+
i['electrical-mobility'] * i['carrier-charge'] >= 0,
|
|
222
238
|
},
|
|
223
239
|
evaluate: (i) => evaluateEinsteinRelation({
|
|
224
240
|
mu_m2_per_Vs: i['electrical-mobility'],
|
|
@@ -227,14 +243,14 @@ export const be70Edge = {
|
|
|
227
243
|
}).D_m2_per_s,
|
|
228
244
|
symbolic: BE70_SYMBOLIC,
|
|
229
245
|
citation: 'PhysJS.EinsteinRelation.diffusion_eq. Drift cancels diffusion on a Boltzmann profile.',
|
|
230
|
-
};
|
|
246
|
+
});
|
|
231
247
|
/**
|
|
232
248
|
* BE-71 Clapeyron slope: (specific-latent-heat, clapeyron-temperature,
|
|
233
249
|
* specific-volume-change) → clapeyron-slope, `dP/dT = L/(T Δv)`.
|
|
234
250
|
*
|
|
235
251
|
* @public
|
|
236
252
|
*/
|
|
237
|
-
export const be71Edge = {
|
|
253
|
+
export const be71Edge = withBoundAliases({
|
|
238
254
|
id: 'be-71',
|
|
239
255
|
beId: 71,
|
|
240
256
|
kind: 'law',
|
|
@@ -262,7 +278,7 @@ export const be71Edge = {
|
|
|
262
278
|
}).slope_Pa_per_K,
|
|
263
279
|
symbolic: BE71_SYMBOLIC,
|
|
264
280
|
citation: 'PhysJS.Clapeyron.slope_eq. L = T (s2−s1) is already substituted. The entropy slope is not a second edge.',
|
|
265
|
-
};
|
|
281
|
+
});
|
|
266
282
|
/**
|
|
267
283
|
* BE-72 gravitational redshift: (redshift-metric-g00-1,
|
|
268
284
|
* redshift-metric-g00-2) → gravitational-frequency-ratio,
|
|
@@ -271,7 +287,7 @@ export const be71Edge = {
|
|
|
271
287
|
*
|
|
272
288
|
* @public
|
|
273
289
|
*/
|
|
274
|
-
export const be72Edge = {
|
|
290
|
+
export const be72Edge = withBoundAliases({
|
|
275
291
|
id: 'be-72',
|
|
276
292
|
beId: 72,
|
|
277
293
|
kind: 'law',
|
|
@@ -296,7 +312,7 @@ export const be72Edge = {
|
|
|
296
312
|
}).frequency_ratio,
|
|
297
313
|
symbolic: BE72_SYMBOLIC,
|
|
298
314
|
citation: 'PhysJS.GravitationalRedshift.frequency_ratio. Not PhysJS.TolmanEhrenfest.hydrostatic_constant. tolman_same_ratio is nested and is not this edge.',
|
|
299
|
-
};
|
|
315
|
+
});
|
|
300
316
|
/**
|
|
301
317
|
* BE-73 Kelvin relation: (seebeck-coefficient, peltier-temperature) →
|
|
302
318
|
* peltier-coefficient, `Π = S T`. Onsager reciprocity is the structure
|
|
@@ -304,7 +320,7 @@ export const be72Edge = {
|
|
|
304
320
|
*
|
|
305
321
|
* @public
|
|
306
322
|
*/
|
|
307
|
-
export const be73Edge = {
|
|
323
|
+
export const be73Edge = withBoundAliases({
|
|
308
324
|
id: 'be-73',
|
|
309
325
|
beId: 73,
|
|
310
326
|
kind: 'law',
|
|
@@ -326,7 +342,7 @@ export const be73Edge = {
|
|
|
326
342
|
}).Pi_V,
|
|
327
343
|
symbolic: BE73_SYMBOLIC,
|
|
328
344
|
citation: 'PhysJS.KelvinRelation.peltier_eq. L12 = L21 is ThermoelectricOnsager.onsager, a structure field, not an axiom and not an input.',
|
|
329
|
-
};
|
|
345
|
+
});
|
|
330
346
|
/** p_B = B² / (2 μ0). The 2 is the inductor integral, not a Buckingham constant. */
|
|
331
347
|
const BE74_SYMBOLIC = ratio(pow(qsym(magneticFluxDensityQ), lit(2)), prod(lit(2), mu0));
|
|
332
348
|
/** λ_L = √(m / (μ0 n e²)). `e` is the elementary charge. */
|
|
@@ -340,7 +356,7 @@ const BE76_SYMBOLIC = ratio(prod(qsym(carrierDensityQ), csym('k_B'), qsym(temper
|
|
|
340
356
|
*
|
|
341
357
|
* @public
|
|
342
358
|
*/
|
|
343
|
-
export const be74Edge = {
|
|
359
|
+
export const be74Edge = withBoundAliases({
|
|
344
360
|
id: 'be-74',
|
|
345
361
|
beId: 74,
|
|
346
362
|
kind: 'law',
|
|
@@ -358,7 +374,7 @@ export const be74Edge = {
|
|
|
358
374
|
evaluate: (i) => evaluateMagneticPressure({ B_T: i['magnetic-flux-density'] }).p_Pa,
|
|
359
375
|
symbolic: BE74_SYMBOLIC,
|
|
360
376
|
citation: 'PhysJS.MagneticPressure.pressure_eq. U = (L/2) I². C = 1 is the battery work per volume, not this pressure.',
|
|
361
|
-
};
|
|
377
|
+
});
|
|
362
378
|
/**
|
|
363
379
|
* BE-75 London penetration depth: (effective-mass, carrier-density) →
|
|
364
380
|
* london-penetration-depth, `λ_L = √(m/(μ0 n e²))`. `e` and `μ0` are
|
|
@@ -366,7 +382,7 @@ export const be74Edge = {
|
|
|
366
382
|
*
|
|
367
383
|
* @public
|
|
368
384
|
*/
|
|
369
|
-
export const be75Edge = {
|
|
385
|
+
export const be75Edge = withBoundAliases({
|
|
370
386
|
id: 'be-75',
|
|
371
387
|
beId: 75,
|
|
372
388
|
kind: 'law',
|
|
@@ -388,7 +404,7 @@ export const be75Edge = {
|
|
|
388
404
|
}).lambda_m,
|
|
389
405
|
symbolic: BE75_SYMBOLIC,
|
|
390
406
|
citation: 'PhysJS.LondonPenetration.depth_eq. Units also admit μ0 e²/m. Not the classical skin depth.',
|
|
391
|
-
};
|
|
407
|
+
});
|
|
392
408
|
/**
|
|
393
409
|
* BE-76 plasma beta: (carrier-density, temperature, magnetic-pressure) →
|
|
394
410
|
* plasma-beta, `β = n k_B T / p_B`. The magnetic-pressure source is
|
|
@@ -398,7 +414,7 @@ export const be75Edge = {
|
|
|
398
414
|
*
|
|
399
415
|
* @public
|
|
400
416
|
*/
|
|
401
|
-
export const be76Edge = {
|
|
417
|
+
export const be76Edge = withBoundAliases({
|
|
402
418
|
id: 'be-76',
|
|
403
419
|
beId: 76,
|
|
404
420
|
kind: 'bridge',
|
|
@@ -425,7 +441,381 @@ export const be76Edge = {
|
|
|
425
441
|
}).beta,
|
|
426
442
|
symbolic: BE76_SYMBOLIC,
|
|
427
443
|
citation: 'PhysJS.PlasmaBeta.beta_eq. p_B is PhysJS.MagneticPressure.pressure_eq. Using B²/μ0 is half of this beta. Not a plasma-β inequality.',
|
|
428
|
-
};
|
|
444
|
+
});
|
|
445
|
+
/** Q = π R⁴ ΔP / (8 μ L). The 8 is the no-slip integral. */
|
|
446
|
+
const BE77_SYMBOLIC = ratio(prod(pi, pow(qsym(pipeRadiusQ), lit(4)), qsym(pipePressureDropQ)), prod(lit(8), qsym(dynamicViscosityQ), qsym(pipeLengthQ)));
|
|
447
|
+
/** P_cr = π² E I / L². Pinned ends. Not the cantilever load. */
|
|
448
|
+
const BE78_SYMBOLIC = ratio(prod(pow(pi, lit(2)), qsym(youngsModulusQ), qsym(areaMomentQ)), pow(qsym(columnLengthQ), lit(2)));
|
|
449
|
+
/** V_pi = √(8 k g0³ / (27 ε0 A)). The fold is g = 2 g0/3. */
|
|
450
|
+
const BE79_SYMBOLIC = pow(ratio(prod(lit(8), qsym(pullInStiffnessQ), pow(qsym(pullInGapQ), lit(3))), prod(lit(27), csym('epsilon_0'), qsym(pullInAreaQ))), lit(0.5));
|
|
451
|
+
/** J = (9/8) ε μ V² / d³. Not Child–Langmuir. */
|
|
452
|
+
const BE80_SYMBOLIC = ratio(prod(lit(9), qsym(mottPermittivityQ), qsym(mottMobilityQ), pow(qsym(mottVoltageQ), lit(2))), prod(lit(8), pow(qsym(mottThicknessQ), lit(3))));
|
|
453
|
+
/** J = (4 ε0 / 9) √(2 e / m) V^{3/2} / d². `e` is the elementary charge. */
|
|
454
|
+
const BE81_SYMBOLIC = ratio(prod(lit(4), csym('epsilon_0'), pow(ratio(prod(lit(2), csym('e')), qsym(childCarrierMassQ)), lit(0.5)), pow(qsym(childVoltageQ), lit(1.5))), prod(lit(9), pow(qsym(childGapQ), lit(2))));
|
|
455
|
+
/** I = I_s (exp(e V / (k_B T)) − 1). Ideality is 1. The minus is the literal −1. */
|
|
456
|
+
const BE82_SYMBOLIC = prod(qsym(shockleySaturationQ), plus(expOf(ratio(prod(csym('e'), qsym(shockleyVoltageQ)), prod(csym('k_B'), qsym(shockleyTemperatureQ)))), lit(-1)));
|
|
457
|
+
/** μ_T = T dS/dT. Not Π = S T. */
|
|
458
|
+
const BE83_SYMBOLIC = prod(qsym(thomsonTemperatureQ), qsym(seebeckSlopeQ));
|
|
459
|
+
/** R_s = (π / ln 2) (V / I). The radial 1/r field is a hypothesis. */
|
|
460
|
+
const BE84_SYMBOLIC = prod(ratio(pi, csym('ln2')), ratio(qsym(fourPointVoltageQ), qsym(fourPointCurrentQ)));
|
|
461
|
+
/** S_I = 2 e I. One-sided. `e` is the elementary charge. */
|
|
462
|
+
const BE85_SYMBOLIC = prod(lit(2), csym('e'), qsym(shotCurrentQ));
|
|
463
|
+
/** St = C_f / 2 at Pr = 1 with matched wall slopes. */
|
|
464
|
+
const BE86_SYMBOLIC = ratio(qsym(skinFrictionQ), lit(2));
|
|
465
|
+
/** ⟨v²⟩ = k_B T / C. One quadratic term. */
|
|
466
|
+
const BE87_SYMBOLIC = ratio(prod(csym('k_B'), qsym(capacitorTemperatureQ)), qsym(capacitanceQ));
|
|
467
|
+
/**
|
|
468
|
+
* BE-77 Hagen–Poiseuille: (radius, pressure drop, viscosity, length) →
|
|
469
|
+
* flux. The axial balance, centerline slope 0, and no-slip are hypotheses.
|
|
470
|
+
*
|
|
471
|
+
* @public
|
|
472
|
+
*/
|
|
473
|
+
export const be77Edge = withBoundAliases({
|
|
474
|
+
id: 'be-77',
|
|
475
|
+
beId: 77,
|
|
476
|
+
kind: 'law',
|
|
477
|
+
label: 'Hagen–Poiseuille flux Q = π R⁴ ΔP / (8 μ L)',
|
|
478
|
+
sources: [pipeRadiusQ, pipePressureDropQ, dynamicViscosityQ, pipeLengthQ],
|
|
479
|
+
aliases: {
|
|
480
|
+
'pipe-radius': ['R_m', 'R'],
|
|
481
|
+
'pipe-pressure-drop': ['deltaP_Pa', 'deltaP'],
|
|
482
|
+
'dynamic-viscosity': ['mu_Pa_s'],
|
|
483
|
+
'pipe-length': ['L_m', 'L'],
|
|
484
|
+
},
|
|
485
|
+
target: poiseuilleFlowQ,
|
|
486
|
+
confidence: 'established',
|
|
487
|
+
domain: {
|
|
488
|
+
description: 'R > 0, ΔP finite, μ ≠ 0, L ≠ 0; circular pipe, not a square duct',
|
|
489
|
+
predicate: (i) => finite(i['pipe-radius']) &&
|
|
490
|
+
i['pipe-radius'] > 0 &&
|
|
491
|
+
finite(i['pipe-pressure-drop']) &&
|
|
492
|
+
finite(i['dynamic-viscosity']) &&
|
|
493
|
+
i['dynamic-viscosity'] !== 0 &&
|
|
494
|
+
finite(i['pipe-length']) &&
|
|
495
|
+
i['pipe-length'] !== 0,
|
|
496
|
+
},
|
|
497
|
+
evaluate: (i) => evaluateHagenPoiseuille({
|
|
498
|
+
R_m: i['pipe-radius'],
|
|
499
|
+
deltaP_Pa: i['pipe-pressure-drop'],
|
|
500
|
+
mu_Pa_s: i['dynamic-viscosity'],
|
|
501
|
+
L_m: i['pipe-length'],
|
|
502
|
+
}).Q_m3_per_s,
|
|
503
|
+
symbolic: BE77_SYMBOLIC,
|
|
504
|
+
citation: 'PhysJS.HagenPoiseuille.flow_eq. f_D Re = 64 follows from Darcy definitions. The Fanning factor is 16. Not a square duct.',
|
|
505
|
+
});
|
|
506
|
+
/**
|
|
507
|
+
* BE-78 Euler buckling: (modulus, area moment, length) → pinned load.
|
|
508
|
+
* The cantilever load is a different factor.
|
|
509
|
+
*
|
|
510
|
+
* @public
|
|
511
|
+
*/
|
|
512
|
+
export const be78Edge = withBoundAliases({
|
|
513
|
+
id: 'be-78',
|
|
514
|
+
beId: 78,
|
|
515
|
+
kind: 'law',
|
|
516
|
+
label: 'Euler pinned load P_cr = π² E I / L²',
|
|
517
|
+
sources: [youngsModulusQ, areaMomentQ, columnLengthQ],
|
|
518
|
+
aliases: {
|
|
519
|
+
'youngs-modulus': ['E_Pa', 'E'],
|
|
520
|
+
'area-moment': ['I_m4'],
|
|
521
|
+
'column-length': ['L_m', 'L'],
|
|
522
|
+
},
|
|
523
|
+
target: bucklingLoadQ,
|
|
524
|
+
confidence: 'established',
|
|
525
|
+
domain: {
|
|
526
|
+
description: 'E > 0, I > 0, L > 0; pinned ends y(0) = y(L) = 0',
|
|
527
|
+
predicate: (i) => finite(i['youngs-modulus']) &&
|
|
528
|
+
i['youngs-modulus'] > 0 &&
|
|
529
|
+
finite(i['area-moment']) &&
|
|
530
|
+
i['area-moment'] > 0 &&
|
|
531
|
+
finite(i['column-length']) &&
|
|
532
|
+
i['column-length'] > 0,
|
|
533
|
+
},
|
|
534
|
+
evaluate: (i) => evaluateEulerBuckling({
|
|
535
|
+
E_Pa: i['youngs-modulus'],
|
|
536
|
+
I_m4: i['area-moment'],
|
|
537
|
+
L_m: i['column-length'],
|
|
538
|
+
}).P_N,
|
|
539
|
+
symbolic: BE78_SYMBOLIC,
|
|
540
|
+
citation: 'PhysJS.EulerBuckling.critical_load. The beam equation is a hypothesis. The clamped-free load is π² E I / (4 L²), not this load.',
|
|
541
|
+
});
|
|
542
|
+
/**
|
|
543
|
+
* BE-79 pull-in: (stiffness, rest gap, area) → voltage. Parallel-plate
|
|
544
|
+
* and quasi-static balance are hypotheses. Not a fringing field.
|
|
545
|
+
*
|
|
546
|
+
* @public
|
|
547
|
+
*/
|
|
548
|
+
export const be79Edge = withBoundAliases({
|
|
549
|
+
id: 'be-79',
|
|
550
|
+
beId: 79,
|
|
551
|
+
kind: 'law',
|
|
552
|
+
label: 'Pull-in voltage V_pi = √(8 k g0³ / (27 ε0 A))',
|
|
553
|
+
sources: [pullInStiffnessQ, pullInGapQ, pullInAreaQ],
|
|
554
|
+
aliases: {
|
|
555
|
+
'pull-in-stiffness': ['k_N_per_m', 'k'],
|
|
556
|
+
'pull-in-gap': ['g0_m', 'g0'],
|
|
557
|
+
'pull-in-area': ['A_m2', 'A'],
|
|
558
|
+
},
|
|
559
|
+
target: pullInVoltageQ,
|
|
560
|
+
confidence: 'established',
|
|
561
|
+
domain: {
|
|
562
|
+
description: 'k > 0, g0 > 0, A > 0; the fold is g = 2 g0/3, not g0/2',
|
|
563
|
+
predicate: (i) => finite(i['pull-in-stiffness']) &&
|
|
564
|
+
i['pull-in-stiffness'] > 0 &&
|
|
565
|
+
finite(i['pull-in-gap']) &&
|
|
566
|
+
i['pull-in-gap'] > 0 &&
|
|
567
|
+
finite(i['pull-in-area']) &&
|
|
568
|
+
i['pull-in-area'] > 0,
|
|
569
|
+
},
|
|
570
|
+
evaluate: (i) => evaluatePullIn({
|
|
571
|
+
k_N_per_m: i['pull-in-stiffness'],
|
|
572
|
+
g0_m: i['pull-in-gap'],
|
|
573
|
+
A_m2: i['pull-in-area'],
|
|
574
|
+
}).V_pi_V,
|
|
575
|
+
symbolic: BE79_SYMBOLIC,
|
|
576
|
+
citation: 'PhysJS.PullIn.pull_in_eq. C = ε0 A/g and the linear spring are hypotheses. g = g0/2 is not the fold.',
|
|
577
|
+
});
|
|
578
|
+
/**
|
|
579
|
+
* BE-80 Mott–Gurney: drift, Poisson, and an injecting contact. Not
|
|
580
|
+
* Child–Langmuir.
|
|
581
|
+
*
|
|
582
|
+
* @public
|
|
583
|
+
*/
|
|
584
|
+
export const be80Edge = withBoundAliases({
|
|
585
|
+
id: 'be-80',
|
|
586
|
+
beId: 80,
|
|
587
|
+
kind: 'law',
|
|
588
|
+
label: 'Mott–Gurney current J = (9/8) ε μ V² / d³',
|
|
589
|
+
sources: [mottPermittivityQ, mottMobilityQ, mottVoltageQ, mottThicknessQ],
|
|
590
|
+
aliases: {
|
|
591
|
+
'mott-permittivity': ['eps'],
|
|
592
|
+
'mott-mobility': ['mu_m2_per_Vs', 'mu'],
|
|
593
|
+
'mott-voltage': ['V_volts', 'V'],
|
|
594
|
+
'mott-thickness': ['d_m', 'd'],
|
|
595
|
+
},
|
|
596
|
+
target: mottGurneyCurrentQ,
|
|
597
|
+
confidence: 'established',
|
|
598
|
+
domain: {
|
|
599
|
+
description: 'ε > 0, μ > 0, V finite, d > 0; E(0) = 0',
|
|
600
|
+
predicate: (i) => finite(i['mott-permittivity']) &&
|
|
601
|
+
i['mott-permittivity'] > 0 &&
|
|
602
|
+
finite(i['mott-mobility']) &&
|
|
603
|
+
i['mott-mobility'] > 0 &&
|
|
604
|
+
finite(i['mott-voltage']) &&
|
|
605
|
+
finite(i['mott-thickness']) &&
|
|
606
|
+
i['mott-thickness'] > 0,
|
|
607
|
+
},
|
|
608
|
+
evaluate: (i) => evaluateMottGurney({
|
|
609
|
+
eps: i['mott-permittivity'],
|
|
610
|
+
mu_m2_per_Vs: i['mott-mobility'],
|
|
611
|
+
V_volts: i['mott-voltage'],
|
|
612
|
+
d_m: i['mott-thickness'],
|
|
613
|
+
}).J_A_per_m2,
|
|
614
|
+
symbolic: BE80_SYMBOLIC,
|
|
615
|
+
citation: 'PhysJS.MottGurney.current_eq. Drift, Poisson, and the injecting contact are hypotheses. Not Child–Langmuir.',
|
|
616
|
+
});
|
|
617
|
+
/**
|
|
618
|
+
* BE-81 Child–Langmuir. Collisionless energy, Poisson, and the 4/3
|
|
619
|
+
* profile. Poisson is not claimed at the cathode. `e` is elementary.
|
|
620
|
+
*
|
|
621
|
+
* @public
|
|
622
|
+
*/
|
|
623
|
+
export const be81Edge = withBoundAliases({
|
|
624
|
+
id: 'be-81',
|
|
625
|
+
beId: 81,
|
|
626
|
+
kind: 'law',
|
|
627
|
+
label: 'Child–Langmuir current J = (4 ε0/9) √(2 e/m) V^{3/2}/d²',
|
|
628
|
+
sources: [childCarrierMassQ, childVoltageQ, childGapQ],
|
|
629
|
+
aliases: {
|
|
630
|
+
'child-carrier-mass': ['m_kg', 'm'],
|
|
631
|
+
'child-voltage': ['V_volts', 'V'],
|
|
632
|
+
'child-gap': ['d_m', 'd'],
|
|
633
|
+
},
|
|
634
|
+
target: childLangmuirCurrentQ,
|
|
635
|
+
confidence: 'established',
|
|
636
|
+
domain: {
|
|
637
|
+
description: 'm > 0, V > 0, d > 0; cathode field 0; Poisson not at x = 0',
|
|
638
|
+
predicate: (i) => finite(i['child-carrier-mass']) &&
|
|
639
|
+
i['child-carrier-mass'] > 0 &&
|
|
640
|
+
finite(i['child-voltage']) &&
|
|
641
|
+
i['child-voltage'] > 0 &&
|
|
642
|
+
finite(i['child-gap']) &&
|
|
643
|
+
i['child-gap'] > 0,
|
|
644
|
+
},
|
|
645
|
+
evaluate: (i) => evaluateChildLangmuir({
|
|
646
|
+
m_kg: i['child-carrier-mass'],
|
|
647
|
+
V_volts: i['child-voltage'],
|
|
648
|
+
d_m: i['child-gap'],
|
|
649
|
+
}).J_A_per_m2,
|
|
650
|
+
symbolic: BE81_SYMBOLIC,
|
|
651
|
+
citation: 'PhysJS.ChildLangmuir.current_eq. e is the elementary charge. Not a drift-only solid.',
|
|
652
|
+
});
|
|
653
|
+
/**
|
|
654
|
+
* BE-82 Shockley diode at ideality 1. Not a diffusion-length ODE.
|
|
655
|
+
*
|
|
656
|
+
* @public
|
|
657
|
+
*/
|
|
658
|
+
export const be82Edge = withBoundAliases({
|
|
659
|
+
id: 'be-82',
|
|
660
|
+
beId: 82,
|
|
661
|
+
kind: 'law',
|
|
662
|
+
label: 'Shockley diode I = I_s (exp(e V/(k_B T)) − 1)',
|
|
663
|
+
sources: [shockleySaturationQ, shockleyVoltageQ, shockleyTemperatureQ],
|
|
664
|
+
aliases: {
|
|
665
|
+
'shockley-saturation': ['I_s_A', 'I_s'],
|
|
666
|
+
'shockley-voltage': ['V_volts', 'V'],
|
|
667
|
+
'shockley-temperature': ['T_K', 'T'],
|
|
668
|
+
},
|
|
669
|
+
target: shockleyCurrentQ,
|
|
670
|
+
confidence: 'established',
|
|
671
|
+
domain: {
|
|
672
|
+
description: 'I_s and V finite, T ≠ 0; ideality 1',
|
|
673
|
+
predicate: (i) => finite(i['shockley-saturation']) &&
|
|
674
|
+
finite(i['shockley-voltage']) &&
|
|
675
|
+
finite(i['shockley-temperature']) &&
|
|
676
|
+
i['shockley-temperature'] !== 0,
|
|
677
|
+
},
|
|
678
|
+
evaluate: (i) => evaluateShockleyDiode({
|
|
679
|
+
I_s_A: i['shockley-saturation'],
|
|
680
|
+
V_volts: i['shockley-voltage'],
|
|
681
|
+
T_K: i['shockley-temperature'],
|
|
682
|
+
}).I_A,
|
|
683
|
+
symbolic: BE82_SYMBOLIC,
|
|
684
|
+
citation: 'PhysJS.ShockleyDiode.shockley_eq. Quasi-equilibrium, detailed balance at V = 0, and low injection are hypotheses. Ideality 2 is not this current.',
|
|
685
|
+
});
|
|
686
|
+
/**
|
|
687
|
+
* BE-83 Thomson coefficient. Builds on the Kelvin relation read along
|
|
688
|
+
* temperature. The quantities do not meet be-73, so the edges do not compose.
|
|
689
|
+
*
|
|
690
|
+
* @public
|
|
691
|
+
*/
|
|
692
|
+
export const be83Edge = withBoundAliases({
|
|
693
|
+
id: 'be-83',
|
|
694
|
+
beId: 83,
|
|
695
|
+
kind: 'law',
|
|
696
|
+
label: 'Thomson coefficient μ_T = T dS/dT',
|
|
697
|
+
sources: [thomsonTemperatureQ, seebeckSlopeQ],
|
|
698
|
+
aliases: {
|
|
699
|
+
'thomson-temperature': ['T_K', 'T'],
|
|
700
|
+
'seebeck-slope': ['dS_dT_V_per_K2', 'dS_dT'],
|
|
701
|
+
},
|
|
702
|
+
target: thomsonCoefficientQ,
|
|
703
|
+
confidence: 'established',
|
|
704
|
+
domain: {
|
|
705
|
+
description: 'T and dS/dT finite; Kelvin along temperature and the Thomson split are hypotheses',
|
|
706
|
+
predicate: (i) => finite(i['thomson-temperature']) && finite(i['seebeck-slope']),
|
|
707
|
+
},
|
|
708
|
+
evaluate: (i) => evaluateThomsonCoefficient({
|
|
709
|
+
T_K: i['thomson-temperature'],
|
|
710
|
+
dS_dT_V_per_K2: i['seebeck-slope'],
|
|
711
|
+
}).mu_V_per_K,
|
|
712
|
+
symbolic: BE83_SYMBOLIC,
|
|
713
|
+
citation: 'PhysJS.Thomson.thomson_eq. Π(t) = S(t) t is PhysJS.KelvinRelation.peltier_eq read along temperature. Not a second copy of Π = S T.',
|
|
714
|
+
});
|
|
715
|
+
/**
|
|
716
|
+
* BE-84 four-point sheet resistance. The radial 1/r potential is a premise.
|
|
717
|
+
*
|
|
718
|
+
* @public
|
|
719
|
+
*/
|
|
720
|
+
export const be84Edge = withBoundAliases({
|
|
721
|
+
id: 'be-84',
|
|
722
|
+
beId: 84,
|
|
723
|
+
kind: 'law',
|
|
724
|
+
label: 'Four-point sheet resistance R_s = (π / ln 2) (V/I)',
|
|
725
|
+
sources: [fourPointVoltageQ, fourPointCurrentQ],
|
|
726
|
+
aliases: {
|
|
727
|
+
'four-point-voltage': ['V_volts', 'V'],
|
|
728
|
+
'four-point-current': ['I_A', 'I'],
|
|
729
|
+
},
|
|
730
|
+
target: sheetResistanceQ,
|
|
731
|
+
confidence: 'established',
|
|
732
|
+
domain: {
|
|
733
|
+
description: 'V finite, I ≠ 0; probes at 0, s, 2s, 3s; radial field (I R_s)/(2 π r)',
|
|
734
|
+
predicate: (i) => finite(i['four-point-voltage']) && finite(i['four-point-current']) && i['four-point-current'] !== 0,
|
|
735
|
+
},
|
|
736
|
+
evaluate: (i) => evaluateFourPointSheet({
|
|
737
|
+
V_volts: i['four-point-voltage'],
|
|
738
|
+
I_A: i['four-point-current'],
|
|
739
|
+
}).R_s_ohm,
|
|
740
|
+
symbolic: BE84_SYMBOLIC,
|
|
741
|
+
citation: 'PhysJS.FourPoint.sheet_eq. The Laplace field and linear superposition are hypotheses. A sink at 4s is 2π/ln 3. Not PhysJS.Crossing.antisymmetry.',
|
|
742
|
+
});
|
|
743
|
+
/**
|
|
744
|
+
* BE-85 one-sided shot noise. Not Johnson–Nyquist and not the two-sided e I.
|
|
745
|
+
*
|
|
746
|
+
* @public
|
|
747
|
+
*/
|
|
748
|
+
export const be85Edge = withBoundAliases({
|
|
749
|
+
id: 'be-85',
|
|
750
|
+
beId: 85,
|
|
751
|
+
kind: 'law',
|
|
752
|
+
label: 'Shot noise S_I = 2 e I',
|
|
753
|
+
sources: [shotCurrentQ],
|
|
754
|
+
aliases: {
|
|
755
|
+
'shot-current': ['I_A', 'I'],
|
|
756
|
+
},
|
|
757
|
+
target: shotNoiseQ,
|
|
758
|
+
confidence: 'established',
|
|
759
|
+
domain: {
|
|
760
|
+
description: 'I finite; Poisson Var(N) = mean(N); one-sided Δf = 1/(2 T)',
|
|
761
|
+
predicate: (i) => finite(i['shot-current']),
|
|
762
|
+
},
|
|
763
|
+
evaluate: (i) => evaluateShotNoise({ I_A: i['shot-current'] }).S_I_A2_per_Hz,
|
|
764
|
+
symbolic: BE85_SYMBOLIC,
|
|
765
|
+
citation: 'PhysJS.ShotNoise.shot_eq. e is the elementary charge. The two-sided bandwidth gives e I. Not Johnson–Nyquist.',
|
|
766
|
+
});
|
|
767
|
+
/**
|
|
768
|
+
* BE-86 Reynolds analogy. Matched wall slopes and Pr = 1 are hypotheses.
|
|
769
|
+
*
|
|
770
|
+
* @public
|
|
771
|
+
*/
|
|
772
|
+
export const be86Edge = withBoundAliases({
|
|
773
|
+
id: 'be-86',
|
|
774
|
+
beId: 86,
|
|
775
|
+
kind: 'law',
|
|
776
|
+
label: 'Reynolds analogy St = C_f / 2',
|
|
777
|
+
sources: [skinFrictionQ],
|
|
778
|
+
aliases: {
|
|
779
|
+
'skin-friction': ['C_f'],
|
|
780
|
+
},
|
|
781
|
+
target: stantonNumberQ,
|
|
782
|
+
confidence: 'established',
|
|
783
|
+
domain: {
|
|
784
|
+
description: 'C_f finite; normalized wall gradients agree and Pr = 1',
|
|
785
|
+
predicate: (i) => finite(i['skin-friction']),
|
|
786
|
+
},
|
|
787
|
+
evaluate: (i) => evaluateReynoldsAnalogy({ C_f: i['skin-friction'] }).St,
|
|
788
|
+
symbolic: BE86_SYMBOLIC,
|
|
789
|
+
citation: 'PhysJS.ReynoldsAnalogy.reynolds_eq. St Pr = C_f/2 when the slopes match. Pr = 1 is the hypothesis that drops Pr. Not a Nusselt correlation.',
|
|
790
|
+
});
|
|
791
|
+
/**
|
|
792
|
+
* BE-87 capacitor voltage variance. One quadratic term, not (3/2) k_B T/C.
|
|
793
|
+
*
|
|
794
|
+
* @public
|
|
795
|
+
*/
|
|
796
|
+
export const be87Edge = withBoundAliases({
|
|
797
|
+
id: 'be-87',
|
|
798
|
+
beId: 87,
|
|
799
|
+
kind: 'law',
|
|
800
|
+
label: 'Capacitor noise ⟨v²⟩ = k_B T / C',
|
|
801
|
+
sources: [capacitorTemperatureQ, capacitanceQ],
|
|
802
|
+
aliases: {
|
|
803
|
+
'capacitor-temperature': ['T_K', 'T'],
|
|
804
|
+
capacitance: ['C_F', 'C'],
|
|
805
|
+
},
|
|
806
|
+
target: capacitorVoltageVarianceQ,
|
|
807
|
+
confidence: 'established',
|
|
808
|
+
domain: {
|
|
809
|
+
description: 'T finite, C > 0; U = (C/2) V²',
|
|
810
|
+
predicate: (i) => finite(i['capacitor-temperature']) && finite(i['capacitance']) && i['capacitance'] > 0,
|
|
811
|
+
},
|
|
812
|
+
evaluate: (i) => evaluateCapacitorNoise({
|
|
813
|
+
T_K: i['capacitor-temperature'],
|
|
814
|
+
C_F: i['capacitance'],
|
|
815
|
+
}).v2_V2,
|
|
816
|
+
symbolic: BE87_SYMBOLIC,
|
|
817
|
+
citation: 'PhysJS.CapacitorNoise.noise_eq. (3/2) k_B T/C is not this variance. Dropping the energy half gives k_B T/(2 C).',
|
|
818
|
+
});
|
|
429
819
|
/** The applied-physicist edges, in catalog-id order. @public */
|
|
430
820
|
export const APPLIED_PHYSICIST_EDGES = [
|
|
431
821
|
be66Edge,
|
|
@@ -439,5 +829,16 @@ export const APPLIED_PHYSICIST_EDGES = [
|
|
|
439
829
|
be74Edge,
|
|
440
830
|
be75Edge,
|
|
441
831
|
be76Edge,
|
|
832
|
+
be77Edge,
|
|
833
|
+
be78Edge,
|
|
834
|
+
be79Edge,
|
|
835
|
+
be80Edge,
|
|
836
|
+
be81Edge,
|
|
837
|
+
be82Edge,
|
|
838
|
+
be83Edge,
|
|
839
|
+
be84Edge,
|
|
840
|
+
be85Edge,
|
|
841
|
+
be86Edge,
|
|
842
|
+
be87Edge,
|
|
442
843
|
];
|
|
443
844
|
//# sourceMappingURL=applied-physicist.js.map
|