universal-physics-tensor 3.0.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 +6 -6
- package/dist/atlas/catalog-formal-ref.d.ts.map +1 -1
- package/dist/atlas/catalog-formal-ref.js +2 -1
- package/dist/atlas/catalog-formal-ref.js.map +1 -1
- package/dist/atlas/physjs-ref.d.ts +28 -2
- package/dist/atlas/physjs-ref.d.ts.map +1 -1
- package/dist/atlas/physjs-ref.js +176 -7
- 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/be74-magnetic-pressure.d.ts +27 -0
- package/dist/bridges/be74-magnetic-pressure.d.ts.map +1 -0
- package/dist/bridges/be74-magnetic-pressure.js +29 -0
- package/dist/bridges/be74-magnetic-pressure.js.map +1 -0
- package/dist/bridges/be75-london-penetration.d.ts +27 -0
- package/dist/bridges/be75-london-penetration.d.ts.map +1 -0
- package/dist/bridges/be75-london-penetration.js +31 -0
- package/dist/bridges/be75-london-penetration.js.map +1 -0
- package/dist/bridges/be76-plasma-beta.d.ts +32 -0
- package/dist/bridges/be76-plasma-beta.d.ts.map +1 -0
- package/dist/bridges/be76-plasma-beta.js +34 -0
- package/dist/bridges/be76-plasma-beta.js.map +1 -0
- 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 +28 -0
- package/dist/bridges/bridge-equations.d.ts.map +1 -1
- package/dist/bridges/bridge-equations.js +28 -0
- package/dist/bridges/bridge-equations.js.map +1 -1
- package/dist/bridges/evaluators.d.ts.map +1 -1
- package/dist/bridges/evaluators.js +72 -2
- package/dist/bridges/evaluators.js.map +1 -1
- package/dist/bridges/index.d.ts +31 -3
- package/dist/bridges/index.d.ts.map +1 -1
- package/dist/bridges/index.js +311 -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 +22 -4
- 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 +4 -2
- package/dist/cli/search-index.d.ts.map +1 -1
- package/dist/cli/search-index.js +38 -3
- package/dist/cli/search-index.js.map +1 -1
- package/dist/cli/statuses.d.ts.map +1 -1
- package/dist/cli/statuses.js +7 -0
- package/dist/cli/statuses.js.map +1 -1
- package/dist/composition/bridge-analysis.d.ts +14 -2
- package/dist/composition/bridge-analysis.d.ts.map +1 -1
- package/dist/composition/bridge-analysis.js +43 -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 +100 -2
- package/dist/composition/edges/applied-physicist.d.ts.map +1 -1
- package/dist/composition/edges/applied-physicist.js +528 -20
- package/dist/composition/edges/applied-physicist.js.map +1 -1
- package/dist/composition/explain.d.ts.map +1 -1
- package/dist/composition/explain.js +70 -5
- package/dist/composition/explain.js.map +1 -1
- package/dist/composition/formula-shape.d.ts +22 -0
- package/dist/composition/formula-shape.d.ts.map +1 -0
- package/dist/composition/formula-shape.js +124 -0
- package/dist/composition/formula-shape.js.map +1 -0
- package/dist/composition/index.d.ts +2 -2
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +2 -2
- package/dist/composition/index.js.map +1 -1
- package/dist/composition/quantities/applied-physicist.d.ts +91 -1
- package/dist/composition/quantities/applied-physicist.d.ts.map +1 -1
- package/dist/composition/quantities/applied-physicist.js +331 -1
- 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 +15 -1
- package/dist/dimensional/bridge-check.js.map +1 -1
- package/dist/dimensional/buckingham.d.ts +7 -0
- package/dist/dimensional/buckingham.d.ts.map +1 -1
- package/dist/dimensional/buckingham.js +4 -0
- package/dist/dimensional/buckingham.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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Composition edges for BE-66 through BE-
|
|
2
|
+
* Composition edges for BE-66 through BE-76.
|
|
3
3
|
*
|
|
4
4
|
* Each edge's endpoints state the same scale and force, so `kind` is
|
|
5
5
|
* `law`. The overlay `formalRef` is kind `bridge`, so each id is a
|
|
@@ -18,9 +18,24 @@ import { evaluateEinsteinRelation } from '../../bridges/be70-einstein-relation.j
|
|
|
18
18
|
import { evaluateClapeyron } from '../../bridges/be71-clapeyron.js';
|
|
19
19
|
import { evaluateGravitationalRedshift } from '../../bridges/be72-gravitational-redshift.js';
|
|
20
20
|
import { evaluateKelvinPeltier } from '../../bridges/be73-kelvin-peltier.js';
|
|
21
|
+
import { evaluateMagneticPressure } from '../../bridges/be74-magnetic-pressure.js';
|
|
22
|
+
import { evaluateLondonPenetration } from '../../bridges/be75-london-penetration.js';
|
|
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';
|
|
21
35
|
import { DIMENSIONLESS } from '../../dimensional/types.js';
|
|
22
36
|
import { CONSTANTS } from '../../dimensional/symbolic-constants.js';
|
|
23
|
-
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';
|
|
24
39
|
const finite = Number.isFinite;
|
|
25
40
|
const qsym = (q) => ({ kind: 'symbol', name: q.name, dim: q.dim });
|
|
26
41
|
const csym = (name) => ({ kind: 'symbol', name, dim: CONSTANTS[name].dim });
|
|
@@ -29,6 +44,11 @@ const prod = (...args) => ({ kind: 'op', op: '*', args });
|
|
|
29
44
|
const plus = (a, b) => ({ kind: 'op', op: '+', args: [a, b] });
|
|
30
45
|
const ratio = (num, den) => ({ kind: 'op', op: '/', args: [num, den] });
|
|
31
46
|
const pow = (base, exp) => ({ kind: 'op', op: '^', args: [base, exp] });
|
|
47
|
+
/** μ0 = 1/(ε0 c²). The same product the Alfvén and magnetosonic formulas use. */
|
|
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 });
|
|
32
52
|
/** P_n = (I/c) (1+R) cos²θ. */
|
|
33
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)));
|
|
34
54
|
/** μ0 = 1/(ε0 c²). v_A = B / √(μ0 ρ). */
|
|
@@ -43,7 +63,7 @@ const BE68_SYMBOLIC = prod(qsym(properTemperatureQ), pow(prod(lit(-1), qsym(metr
|
|
|
43
63
|
*
|
|
44
64
|
* @public
|
|
45
65
|
*/
|
|
46
|
-
export const be66Edge = {
|
|
66
|
+
export const be66Edge = withBoundAliases({
|
|
47
67
|
id: 'be-66',
|
|
48
68
|
beId: 66,
|
|
49
69
|
kind: 'law',
|
|
@@ -72,7 +92,7 @@ export const be66Edge = {
|
|
|
72
92
|
}).P_Pa,
|
|
73
93
|
symbolic: BE66_SYMBOLIC,
|
|
74
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.',
|
|
75
|
-
};
|
|
95
|
+
});
|
|
76
96
|
/**
|
|
77
97
|
* BE-67 Alfvén speed: (magnetic-flux-density, plasma-mass-density) →
|
|
78
98
|
* alfven-speed, `v_A = B / √(μ0 ρ)`. `ρ` is the total mass density.
|
|
@@ -81,7 +101,7 @@ export const be66Edge = {
|
|
|
81
101
|
*
|
|
82
102
|
* @public
|
|
83
103
|
*/
|
|
84
|
-
export const be67Edge = {
|
|
104
|
+
export const be67Edge = withBoundAliases({
|
|
85
105
|
id: 'be-67',
|
|
86
106
|
beId: 67,
|
|
87
107
|
kind: 'law',
|
|
@@ -106,7 +126,7 @@ export const be67Edge = {
|
|
|
106
126
|
}).v_m_per_s,
|
|
107
127
|
symbolic: BE67_SYMBOLIC,
|
|
108
128
|
citation: 'Alfvén 1942 Nature 150:405. SI form B/√(μ0 ρ); ρ is the total mass density.',
|
|
109
|
-
};
|
|
129
|
+
});
|
|
110
130
|
/**
|
|
111
131
|
* BE-68 Tolman–Ehrenfest: (proper-temperature, metric-g00) →
|
|
112
132
|
* tolman-invariant, `T √(−g_00)`. Endpoints share the classical
|
|
@@ -115,7 +135,7 @@ export const be67Edge = {
|
|
|
115
135
|
*
|
|
116
136
|
* @public
|
|
117
137
|
*/
|
|
118
|
-
export const be68Edge = {
|
|
138
|
+
export const be68Edge = withBoundAliases({
|
|
119
139
|
id: 'be-68',
|
|
120
140
|
beId: 68,
|
|
121
141
|
kind: 'law',
|
|
@@ -140,7 +160,7 @@ export const be68Edge = {
|
|
|
140
160
|
}).invariant_K,
|
|
141
161
|
symbolic: BE68_SYMBOLIC,
|
|
142
162
|
citation: 'Tolman & Ehrenfest 1930 Phys. Rev. 36:1791 (T0 √g_44). Catalog form T √(−g_00).',
|
|
143
|
-
};
|
|
163
|
+
});
|
|
144
164
|
/** |ω/k| = √(c_s² + B²/(μ0 ρ)), with μ0 = 1/(ε0 c²). */
|
|
145
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));
|
|
146
166
|
/** D = μ k_B T / q. */
|
|
@@ -159,7 +179,7 @@ const BE73_SYMBOLIC = prod(qsym(seebeckCoefficientQ), qsym(peltierTemperatureQ))
|
|
|
159
179
|
*
|
|
160
180
|
* @public
|
|
161
181
|
*/
|
|
162
|
-
export const be69Edge = {
|
|
182
|
+
export const be69Edge = withBoundAliases({
|
|
163
183
|
id: 'be-69',
|
|
164
184
|
beId: 69,
|
|
165
185
|
kind: 'law',
|
|
@@ -187,14 +207,14 @@ export const be69Edge = {
|
|
|
187
207
|
}).v_m_per_s,
|
|
188
208
|
symbolic: BE69_SYMBOLIC,
|
|
189
209
|
citation: 'PhysJS.FastMagnetosonic.speed_eq. Perpendicular compressional phase speed. c_s = 0 is the Alfvén number of a different polarization.',
|
|
190
|
-
};
|
|
210
|
+
});
|
|
191
211
|
/**
|
|
192
212
|
* BE-70 Einstein relation: (electrical-mobility, einstein-temperature,
|
|
193
213
|
* carrier-charge) → diffusivity, `D = μ k_B T / q`.
|
|
194
214
|
*
|
|
195
215
|
* @public
|
|
196
216
|
*/
|
|
197
|
-
export const be70Edge = {
|
|
217
|
+
export const be70Edge = withBoundAliases({
|
|
198
218
|
id: 'be-70',
|
|
199
219
|
beId: 70,
|
|
200
220
|
kind: 'law',
|
|
@@ -208,12 +228,13 @@ export const be70Edge = {
|
|
|
208
228
|
target: diffusivityQ,
|
|
209
229
|
confidence: 'established',
|
|
210
230
|
domain: {
|
|
211
|
-
description: 'μ finite, T ≠ 0, q ≠ 0',
|
|
231
|
+
description: 'μ finite, T ≠ 0, q ≠ 0, and μ and q have the same sign',
|
|
212
232
|
predicate: (i) => finite(i['electrical-mobility']) &&
|
|
213
233
|
finite(i['einstein-temperature']) &&
|
|
214
234
|
i['einstein-temperature'] !== 0 &&
|
|
215
235
|
finite(i['carrier-charge']) &&
|
|
216
|
-
i['carrier-charge'] !== 0
|
|
236
|
+
i['carrier-charge'] !== 0 &&
|
|
237
|
+
i['electrical-mobility'] * i['carrier-charge'] >= 0,
|
|
217
238
|
},
|
|
218
239
|
evaluate: (i) => evaluateEinsteinRelation({
|
|
219
240
|
mu_m2_per_Vs: i['electrical-mobility'],
|
|
@@ -222,14 +243,14 @@ export const be70Edge = {
|
|
|
222
243
|
}).D_m2_per_s,
|
|
223
244
|
symbolic: BE70_SYMBOLIC,
|
|
224
245
|
citation: 'PhysJS.EinsteinRelation.diffusion_eq. Drift cancels diffusion on a Boltzmann profile.',
|
|
225
|
-
};
|
|
246
|
+
});
|
|
226
247
|
/**
|
|
227
248
|
* BE-71 Clapeyron slope: (specific-latent-heat, clapeyron-temperature,
|
|
228
249
|
* specific-volume-change) → clapeyron-slope, `dP/dT = L/(T Δv)`.
|
|
229
250
|
*
|
|
230
251
|
* @public
|
|
231
252
|
*/
|
|
232
|
-
export const be71Edge = {
|
|
253
|
+
export const be71Edge = withBoundAliases({
|
|
233
254
|
id: 'be-71',
|
|
234
255
|
beId: 71,
|
|
235
256
|
kind: 'law',
|
|
@@ -257,7 +278,7 @@ export const be71Edge = {
|
|
|
257
278
|
}).slope_Pa_per_K,
|
|
258
279
|
symbolic: BE71_SYMBOLIC,
|
|
259
280
|
citation: 'PhysJS.Clapeyron.slope_eq. L = T (s2−s1) is already substituted. The entropy slope is not a second edge.',
|
|
260
|
-
};
|
|
281
|
+
});
|
|
261
282
|
/**
|
|
262
283
|
* BE-72 gravitational redshift: (redshift-metric-g00-1,
|
|
263
284
|
* redshift-metric-g00-2) → gravitational-frequency-ratio,
|
|
@@ -266,7 +287,7 @@ export const be71Edge = {
|
|
|
266
287
|
*
|
|
267
288
|
* @public
|
|
268
289
|
*/
|
|
269
|
-
export const be72Edge = {
|
|
290
|
+
export const be72Edge = withBoundAliases({
|
|
270
291
|
id: 'be-72',
|
|
271
292
|
beId: 72,
|
|
272
293
|
kind: 'law',
|
|
@@ -291,7 +312,7 @@ export const be72Edge = {
|
|
|
291
312
|
}).frequency_ratio,
|
|
292
313
|
symbolic: BE72_SYMBOLIC,
|
|
293
314
|
citation: 'PhysJS.GravitationalRedshift.frequency_ratio. Not PhysJS.TolmanEhrenfest.hydrostatic_constant. tolman_same_ratio is nested and is not this edge.',
|
|
294
|
-
};
|
|
315
|
+
});
|
|
295
316
|
/**
|
|
296
317
|
* BE-73 Kelvin relation: (seebeck-coefficient, peltier-temperature) →
|
|
297
318
|
* peltier-coefficient, `Π = S T`. Onsager reciprocity is the structure
|
|
@@ -299,7 +320,7 @@ export const be72Edge = {
|
|
|
299
320
|
*
|
|
300
321
|
* @public
|
|
301
322
|
*/
|
|
302
|
-
export const be73Edge = {
|
|
323
|
+
export const be73Edge = withBoundAliases({
|
|
303
324
|
id: 'be-73',
|
|
304
325
|
beId: 73,
|
|
305
326
|
kind: 'law',
|
|
@@ -321,7 +342,480 @@ export const be73Edge = {
|
|
|
321
342
|
}).Pi_V,
|
|
322
343
|
symbolic: BE73_SYMBOLIC,
|
|
323
344
|
citation: 'PhysJS.KelvinRelation.peltier_eq. L12 = L21 is ThermoelectricOnsager.onsager, a structure field, not an axiom and not an input.',
|
|
324
|
-
};
|
|
345
|
+
});
|
|
346
|
+
/** p_B = B² / (2 μ0). The 2 is the inductor integral, not a Buckingham constant. */
|
|
347
|
+
const BE74_SYMBOLIC = ratio(pow(qsym(magneticFluxDensityQ), lit(2)), prod(lit(2), mu0));
|
|
348
|
+
/** λ_L = √(m / (μ0 n e²)). `e` is the elementary charge. */
|
|
349
|
+
const BE75_SYMBOLIC = pow(ratio(qsym(effectiveMassQ), prod(mu0, qsym(carrierDensityQ), pow(csym('e'), lit(2)))), lit(0.5));
|
|
350
|
+
/** β = n k_B T / p_B. Substituting BE-74 yields 2 μ0 n k_B T / B². */
|
|
351
|
+
const BE76_SYMBOLIC = ratio(prod(qsym(carrierDensityQ), csym('k_B'), qsym(temperatureQ)), qsym(magneticPressureQ));
|
|
352
|
+
/**
|
|
353
|
+
* BE-74 magnetic pressure: magnetic-flux-density → magnetic-pressure,
|
|
354
|
+
* `p_B = B²/(2 μ0)`. `μ0` is a constant. The endpoints share the
|
|
355
|
+
* classical electromagnetic attributes: a law.
|
|
356
|
+
*
|
|
357
|
+
* @public
|
|
358
|
+
*/
|
|
359
|
+
export const be74Edge = withBoundAliases({
|
|
360
|
+
id: 'be-74',
|
|
361
|
+
beId: 74,
|
|
362
|
+
kind: 'law',
|
|
363
|
+
label: 'Magnetic pressure p_B = B²/(2 μ0)',
|
|
364
|
+
sources: [magneticFluxDensityQ],
|
|
365
|
+
aliases: {
|
|
366
|
+
'magnetic-flux-density': ['B_T', 'B'],
|
|
367
|
+
},
|
|
368
|
+
target: magneticPressureQ,
|
|
369
|
+
confidence: 'established',
|
|
370
|
+
domain: {
|
|
371
|
+
description: 'B finite; the factor 2 is the stored-energy half, not C = 1',
|
|
372
|
+
predicate: (i) => finite(i['magnetic-flux-density']),
|
|
373
|
+
},
|
|
374
|
+
evaluate: (i) => evaluateMagneticPressure({ B_T: i['magnetic-flux-density'] }).p_Pa,
|
|
375
|
+
symbolic: BE74_SYMBOLIC,
|
|
376
|
+
citation: 'PhysJS.MagneticPressure.pressure_eq. U = (L/2) I². C = 1 is the battery work per volume, not this pressure.',
|
|
377
|
+
});
|
|
378
|
+
/**
|
|
379
|
+
* BE-75 London penetration depth: (effective-mass, carrier-density) →
|
|
380
|
+
* london-penetration-depth, `λ_L = √(m/(μ0 n e²))`. `e` and `μ0` are
|
|
381
|
+
* constants. The endpoints share the carrier attributes: a law.
|
|
382
|
+
*
|
|
383
|
+
* @public
|
|
384
|
+
*/
|
|
385
|
+
export const be75Edge = withBoundAliases({
|
|
386
|
+
id: 'be-75',
|
|
387
|
+
beId: 75,
|
|
388
|
+
kind: 'law',
|
|
389
|
+
label: 'London penetration depth λ_L = √(m/(μ0 n e²))',
|
|
390
|
+
sources: [effectiveMassQ, carrierDensityQ],
|
|
391
|
+
aliases: {
|
|
392
|
+
'effective-mass': ['m_kg', 'm'],
|
|
393
|
+
'carrier-density': ['n_per_m3', 'n'],
|
|
394
|
+
},
|
|
395
|
+
target: londonPenetrationDepthQ,
|
|
396
|
+
confidence: 'established',
|
|
397
|
+
domain: {
|
|
398
|
+
description: 'm > 0 and n > 0; e is the elementary charge',
|
|
399
|
+
predicate: (i) => finite(i['effective-mass']) && i['effective-mass'] > 0 && finite(i['carrier-density']) && i['carrier-density'] > 0,
|
|
400
|
+
},
|
|
401
|
+
evaluate: (i) => evaluateLondonPenetration({
|
|
402
|
+
m_kg: i['effective-mass'],
|
|
403
|
+
n_per_m3: i['carrier-density'],
|
|
404
|
+
}).lambda_m,
|
|
405
|
+
symbolic: BE75_SYMBOLIC,
|
|
406
|
+
citation: 'PhysJS.LondonPenetration.depth_eq. Units also admit μ0 e²/m. Not the classical skin depth.',
|
|
407
|
+
});
|
|
408
|
+
/**
|
|
409
|
+
* BE-76 plasma beta: (carrier-density, temperature, magnetic-pressure) →
|
|
410
|
+
* plasma-beta, `β = n k_B T / p_B`. The magnetic-pressure source is
|
|
411
|
+
* BE-74, so the edges compose. `carrier-density` is quantum and
|
|
412
|
+
* `magnetic-pressure` is classical, so the endpoints differ: a bridge.
|
|
413
|
+
* Not a plasma-β inequality.
|
|
414
|
+
*
|
|
415
|
+
* @public
|
|
416
|
+
*/
|
|
417
|
+
export const be76Edge = withBoundAliases({
|
|
418
|
+
id: 'be-76',
|
|
419
|
+
beId: 76,
|
|
420
|
+
kind: 'bridge',
|
|
421
|
+
label: 'Plasma beta β = n k_B T / p_B',
|
|
422
|
+
sources: [carrierDensityQ, temperatureQ, magneticPressureQ],
|
|
423
|
+
aliases: {
|
|
424
|
+
'carrier-density': ['n_per_m3', 'n'],
|
|
425
|
+
temperature: ['T_K', 'T'],
|
|
426
|
+
'magnetic-pressure': ['p_B_Pa', 'p_B'],
|
|
427
|
+
},
|
|
428
|
+
target: plasmaBetaQ,
|
|
429
|
+
confidence: 'established',
|
|
430
|
+
domain: {
|
|
431
|
+
description: 'n and T finite, p_B ≠ 0; p_B is B²/(2 μ0)',
|
|
432
|
+
predicate: (i) => finite(i['carrier-density']) &&
|
|
433
|
+
finite(i['temperature']) &&
|
|
434
|
+
finite(i['magnetic-pressure']) &&
|
|
435
|
+
i['magnetic-pressure'] !== 0,
|
|
436
|
+
},
|
|
437
|
+
evaluate: (i) => evaluatePlasmaBeta({
|
|
438
|
+
n_per_m3: i['carrier-density'],
|
|
439
|
+
T_K: i['temperature'],
|
|
440
|
+
p_B_Pa: i['magnetic-pressure'],
|
|
441
|
+
}).beta,
|
|
442
|
+
symbolic: BE76_SYMBOLIC,
|
|
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.',
|
|
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
|
+
});
|
|
325
819
|
/** The applied-physicist edges, in catalog-id order. @public */
|
|
326
820
|
export const APPLIED_PHYSICIST_EDGES = [
|
|
327
821
|
be66Edge,
|
|
@@ -332,5 +826,19 @@ export const APPLIED_PHYSICIST_EDGES = [
|
|
|
332
826
|
be71Edge,
|
|
333
827
|
be72Edge,
|
|
334
828
|
be73Edge,
|
|
829
|
+
be74Edge,
|
|
830
|
+
be75Edge,
|
|
831
|
+
be76Edge,
|
|
832
|
+
be77Edge,
|
|
833
|
+
be78Edge,
|
|
834
|
+
be79Edge,
|
|
835
|
+
be80Edge,
|
|
836
|
+
be81Edge,
|
|
837
|
+
be82Edge,
|
|
838
|
+
be83Edge,
|
|
839
|
+
be84Edge,
|
|
840
|
+
be85Edge,
|
|
841
|
+
be86Edge,
|
|
842
|
+
be87Edge,
|
|
335
843
|
];
|
|
336
844
|
//# sourceMappingURL=applied-physicist.js.map
|