universal-physics-tensor 6.0.0 → 6.1.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.
Files changed (68) hide show
  1. package/README.md +4 -4
  2. package/dist/atlas/physjs-entries.generated.d.ts +65 -1
  3. package/dist/atlas/physjs-entries.generated.d.ts.map +1 -1
  4. package/dist/atlas/physjs-entries.generated.js +73 -1
  5. package/dist/atlas/physjs-entries.generated.js.map +1 -1
  6. package/dist/atlas/physjs-ref.d.ts +4 -1
  7. package/dist/atlas/physjs-ref.d.ts.map +1 -1
  8. package/dist/atlas/physjs-ref.js +12 -1
  9. package/dist/atlas/physjs-ref.js.map +1 -1
  10. package/dist/bridges/be80-mott-gurney.d.ts +2 -2
  11. package/dist/bridges/engineering-r7-catalog.d.ts +28 -0
  12. package/dist/bridges/engineering-r7-catalog.d.ts.map +1 -0
  13. package/dist/bridges/engineering-r7-catalog.js +172 -0
  14. package/dist/bridges/engineering-r7-catalog.js.map +1 -0
  15. package/dist/bridges/engineering-r7.d.ts +152 -0
  16. package/dist/bridges/engineering-r7.d.ts.map +1 -0
  17. package/dist/bridges/engineering-r7.js +208 -0
  18. package/dist/bridges/engineering-r7.js.map +1 -0
  19. package/dist/bridges/evaluators.d.ts.map +1 -1
  20. package/dist/bridges/evaluators.js +51 -6
  21. package/dist/bridges/evaluators.js.map +1 -1
  22. package/dist/bridges/index.d.ts +2 -0
  23. package/dist/bridges/index.d.ts.map +1 -1
  24. package/dist/bridges/index.js +6 -0
  25. package/dist/bridges/index.js.map +1 -1
  26. package/dist/cli/commands/explain.d.ts.map +1 -1
  27. package/dist/cli/commands/explain.js +6 -3
  28. package/dist/cli/commands/explain.js.map +1 -1
  29. package/dist/composition/aliases.d.ts +11 -2
  30. package/dist/composition/aliases.d.ts.map +1 -1
  31. package/dist/composition/aliases.js +18 -4
  32. package/dist/composition/aliases.js.map +1 -1
  33. package/dist/composition/canonical-graph.d.ts.map +1 -1
  34. package/dist/composition/canonical-graph.js +2 -0
  35. package/dist/composition/canonical-graph.js.map +1 -1
  36. package/dist/composition/catalog-graph.d.ts.map +1 -1
  37. package/dist/composition/catalog-graph.js +2 -0
  38. package/dist/composition/catalog-graph.js.map +1 -1
  39. package/dist/composition/edge.d.ts +7 -0
  40. package/dist/composition/edge.d.ts.map +1 -1
  41. package/dist/composition/edge.js.map +1 -1
  42. package/dist/composition/edges/engineering-r7.d.ts +20 -0
  43. package/dist/composition/edges/engineering-r7.d.ts.map +1 -0
  44. package/dist/composition/edges/engineering-r7.js +262 -0
  45. package/dist/composition/edges/engineering-r7.js.map +1 -0
  46. package/dist/composition/explain.d.ts.map +1 -1
  47. package/dist/composition/explain.js +40 -6
  48. package/dist/composition/explain.js.map +1 -1
  49. package/dist/composition/index.d.ts +2 -0
  50. package/dist/composition/index.d.ts.map +1 -1
  51. package/dist/composition/index.js +2 -0
  52. package/dist/composition/index.js.map +1 -1
  53. package/dist/composition/quantities/engineering-r7.d.ts +82 -0
  54. package/dist/composition/quantities/engineering-r7.d.ts.map +1 -0
  55. package/dist/composition/quantities/engineering-r7.js +92 -0
  56. package/dist/composition/quantities/engineering-r7.js.map +1 -0
  57. package/dist/composition/quantities.d.ts +1 -0
  58. package/dist/composition/quantities.d.ts.map +1 -1
  59. package/dist/composition/quantities.js +1 -0
  60. package/dist/composition/quantities.js.map +1 -1
  61. package/dist/dimensional/bridge-check.d.ts.map +1 -1
  62. package/dist/dimensional/bridge-check.js +8 -0
  63. package/dist/dimensional/bridge-check.js.map +1 -1
  64. package/dist/index.d.ts +4 -0
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +4 -0
  67. package/dist/index.js.map +1 -1
  68. package/package.json +1 -1
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Catalog rows for BE-126 through BE-133.
3
+ *
4
+ * Registered through `registerBridge`. No right-hand-side AST: each row's
5
+ * numeric body is the evaluator.
6
+ *
7
+ * @module bridges/engineering-r7-catalog
8
+ */
9
+ /** Engineering catalog rows, in id order. */
10
+ export const ENGINEERING_R7_CATALOG_ROWS = [
11
+ {
12
+ id: 126,
13
+ name: 'Comb-drive lateral force',
14
+ category: 'D',
15
+ category_name: 'Field Unification Bridges',
16
+ bridges: ['electromagnetic', 'mechanical'],
17
+ status: 'established',
18
+ context: 'For n fingers, overlap along x, gap g, and thickness h, both sidewalls give C = 2 n ε h x / g. Voltage-controlled coenergy (1/2) C V² has lateral force (1/2) V² dC/dx, so the sidewall 2 and the coenergy 1/2 cancel and F = n ε h V² / g. One sidewall leaves the 1/2. Fringe is neglected and the gap is fixed. Not the normal pull-in of be-79. A comb drive',
19
+ formula_latex: 'F = n \\varepsilon h V^2 / g',
20
+ source_part: 'III',
21
+ source_section: 'Engineering catalog (be-126) — established textbook relation, PhysJS.CombDrive.force_eq',
22
+ known_issues: [],
23
+ references: [
24
+ 'Both sidewalls give C = 2 n ε h x / g. The coenergy derivative at fixed voltage is (1/2) V² dC/dx. Not be-79.',
25
+ ],
26
+ dependencies: [],
27
+ dimensional_signature: '[force]',
28
+ tractability_class: 'closed-form',
29
+ notes: 'Closed-form evaluator evaluateCombDrive in src/bridges/engineering-r7.ts. The overlay formalRef is PhysJS.CombDrive.force_eq, kind bridge. The catalog path passes it, so catalog evidence and edge evidence are formally-proved. The edge confidence stays established. No confrontation.',
30
+ },
31
+ {
32
+ id: 127,
33
+ name: 'Subthreshold swing',
34
+ category: 'D',
35
+ category_name: 'Field Unification Bridges',
36
+ bridges: ['electromagnetic', 'condensed'],
37
+ status: 'established',
38
+ context: 'Weak-inversion current is exponential in the surface potential, and the gate and depletion capacitances divide that potential. One decade of drain current gives S = ln(10) (k_B T / e) (1 + C_d / C_ox), in volts per decade. e is the elementary charge. The ln is the natural logarithm. Dropping C_d is not the swing when C_d ≠ 0. Not the ideal diode of be-82. A MOSFET subthreshold swing',
39
+ formula_latex: 'S = \\ln(10)\\,(k_B T / e)\\,(1 + C_d / C_{ox})',
40
+ source_part: 'III',
41
+ source_section: 'Engineering catalog (be-127) — established textbook relation, PhysJS.SubthresholdSwing.swing_eq',
42
+ known_issues: [],
43
+ references: [
44
+ 'Boltzmann electrons, the capacitive divider, and one decade of current are the hypotheses of PhysJS.SubthresholdSwing.swing_eq. e is the elementary charge.',
45
+ ],
46
+ dependencies: [],
47
+ dimensional_signature: '[L^2 M T^-3 I^-1]',
48
+ tractability_class: 'closed-form',
49
+ notes: 'Closed-form evaluator evaluateSubthresholdSwing in src/bridges/engineering-r7.ts. The overlay formalRef is PhysJS.SubthresholdSwing.swing_eq, kind bridge. The catalog path passes it, so catalog evidence and edge evidence are formally-proved. The edge confidence stays established. No confrontation.',
50
+ },
51
+ {
52
+ id: 128,
53
+ name: 'Ideal boost ratio',
54
+ category: 'D',
55
+ category_name: 'Field Unification Bridges',
56
+ bridges: ['electromagnetic', 'electrical'],
57
+ status: 'established',
58
+ context: 'An ideal boost converter in periodic steady state with continuous inductor current has V_out / V_in = 1 / (1 − D) for D ≠ 1. On, the inductor sees V_in. Off, it sees V_in − V_out. Volt-second balance sets the period average to zero. No real duty equals both this ratio and the buck ratio D. A boost converter',
59
+ formula_latex: 'V_{out} / V_{in} = 1 / (1 - D)',
60
+ source_part: 'III',
61
+ source_section: 'Engineering catalog (be-128) — established textbook relation, PhysJS.BoostConverter.boost_ratio',
62
+ known_issues: [],
63
+ references: [
64
+ 'Ideal switches, constant voltages over a period, and current that does not reach zero are the hypotheses of PhysJS.BoostConverter.boost_ratio.',
65
+ ],
66
+ dependencies: [],
67
+ dimensional_signature: '[1]',
68
+ tractability_class: 'closed-form',
69
+ notes: 'Closed-form evaluator evaluateBoostConverter in src/bridges/engineering-r7.ts. The overlay formalRef is PhysJS.BoostConverter.boost_ratio, kind bridge. The catalog path passes it, so catalog evidence and edge evidence are formally-proved. The edge confidence stays established. No confrontation.',
70
+ },
71
+ {
72
+ id: 129,
73
+ name: 'Straight-fin efficiency',
74
+ category: 'D',
75
+ category_name: 'Field Unification Bridges',
76
+ bridges: ['thermal', 'mechanical'],
77
+ status: 'established',
78
+ context: 'The steady fin equation is θ\'\' = m² θ with m² = h P / (k A). A rectangle with w ≫ t has P/A = 2/t, so m = √(2 h / (k t)). An adiabatic tip and an imposed base temperature give η = tanh(m L) / (m L). One face is not that m. tanh is not 1, so this is not an infinite fin. Fin efficiency',
79
+ formula_latex: 'm = \\sqrt{2 h / (k t)},\\quad \\eta = \\tanh(m L) / (m L)',
80
+ source_part: 'III',
81
+ source_section: 'Engineering catalog (be-129) — established textbook relation, PhysJS.FinEfficiency.efficiency_eq',
82
+ known_issues: [],
83
+ references: [
84
+ 'The fin equation, the adiabatic tip, and P/A = 2/t are the hypotheses of PhysJS.FinEfficiency.efficiency_eq.',
85
+ ],
86
+ dependencies: [],
87
+ dimensional_signature: '[1]',
88
+ tractability_class: 'closed-form',
89
+ notes: 'Closed-form evaluator evaluateFinEfficiency in src/bridges/engineering-r7.ts. The edge value is η. m is on the same result and is not a second edge. The overlay formalRef is PhysJS.FinEfficiency.efficiency_eq, kind bridge. The catalog path passes it, so catalog evidence and edge evidence are formally-proved. The edge confidence stays established. No confrontation.',
90
+ },
91
+ {
92
+ id: 130,
93
+ name: 'Thermoelectric generator efficiency',
94
+ category: 'D',
95
+ category_name: 'Field Unification Bridges',
96
+ bridges: ['thermal', 'electromagnetic'],
97
+ status: 'established',
98
+ context: 'At the current that maximizes efficiency, η = (1 − T_c/T_h) (√(1 + Z T_m) − 1) / (√(1 + Z T_m) + T_c/T_h), with Z = S² / (R K) and T_m = (T_h + T_c) / 2. The hot-junction heat splits Joule heating in half. Matched load m = 1 is not stationary when Z T_m ≠ 0. The Carnot factor alone is not this efficiency. Thermoelectric generator efficiency. Figure of merit',
99
+ formula_latex: '\\eta = (1 - T_c/T_h) (\\sqrt{1 + Z T_m} - 1) / (\\sqrt{1 + Z T_m} + T_c/T_h)',
100
+ source_part: 'III',
101
+ source_section: 'Engineering catalog (be-130) — established textbook relation, PhysJS.ThermoelectricGenerator.efficiency_eq',
102
+ known_issues: [],
103
+ references: [
104
+ 'Constant properties, the split of Joule heat, and dη/dI = 0 are the hypotheses of PhysJS.ThermoelectricGenerator.efficiency_eq.',
105
+ ],
106
+ dependencies: [],
107
+ dimensional_signature: '[1]',
108
+ tractability_class: 'closed-form',
109
+ notes: 'Closed-form evaluator evaluateThermoelectricGenerator in src/bridges/engineering-r7.ts. The overlay formalRef is PhysJS.ThermoelectricGenerator.efficiency_eq, kind bridge. The catalog path passes it, so catalog evidence and edge evidence are formally-proved. The edge confidence stays established. Not Carnot alone. No confrontation.',
110
+ },
111
+ {
112
+ id: 131,
113
+ name: 'Joukowsky pressure',
114
+ category: 'D',
115
+ category_name: 'Field Unification Bridges',
116
+ bridges: ['fluid', 'mechanical'],
117
+ status: 'established',
118
+ context: 'A sudden closure gives Δp = ρ c Δv. For a thin elastic pipe the wave speed is c = √(K/ρ) / √(1 + (K/E)(D/e_wall)), with K the fluid bulk modulus, E the wall modulus, D the diameter, and e_wall the wall thickness. ρ (Δv)² is not ρ c Δv when c ≠ Δv. Dropping the wall term is the rigid-pipe speed. Joukowsky. Water hammer',
119
+ formula_latex: '\\Delta p = \\rho c \\Delta v,\\quad c = \\sqrt{K/\\rho} / \\sqrt{1 + (K/E)(D/e_{wall})}',
120
+ source_part: 'III',
121
+ source_section: 'Engineering catalog (be-131) — established textbook relation, PhysJS.Joukowsky.joukowsky_eq',
122
+ known_issues: [],
123
+ references: [
124
+ 'The momentum jump and the thin-wall closure are the hypotheses of PhysJS.Joukowsky.joukowsky_eq. Mass on the front is not required for the pressure.',
125
+ ],
126
+ dependencies: [],
127
+ dimensional_signature: '[L^-1 M T^-2]',
128
+ tractability_class: 'closed-form',
129
+ notes: 'Closed-form evaluator evaluateJoukowsky in src/bridges/engineering-r7.ts. The edge value is Δp. The thin-wall speed is on the same result and is not a second edge. The overlay formalRef is PhysJS.Joukowsky.joukowsky_eq, kind bridge. The catalog path passes it, so catalog evidence and edge evidence are formally-proved. The edge confidence stays established. No confrontation.',
130
+ },
131
+ {
132
+ id: 132,
133
+ name: 'Coaxial capacitance per length',
134
+ category: 'D',
135
+ category_name: 'Field Unification Bridges',
136
+ bridges: ['electromagnetic', 'electrical'],
137
+ status: 'established',
138
+ context: 'A long coaxial pair, inner radius a, outer radius b, and insulator permittivity ε, has C\' = 2 π ε / ln(b/a). Gauss\'s law gives the radial field, and the potential is the integral of 1/r. End fringe is neglected. Dropping 2 π is not this capacitance. Not a parallel-plate ε A/d. Coaxial. Coax',
139
+ formula_latex: 'C\' = 2 \\pi \\varepsilon / \\ln(b/a)',
140
+ source_part: 'III',
141
+ source_section: 'Engineering catalog (be-132) — established textbook relation, PhysJS.CoaxialCapacitance.capacitance_per_length',
142
+ known_issues: [],
143
+ references: [
144
+ 'The cylindrical field and C\' = λ/ΔV are the hypotheses of PhysJS.CoaxialCapacitance.capacitance_per_length.',
145
+ ],
146
+ dependencies: [],
147
+ dimensional_signature: '[L^-3 M^-1 T^4 I^2]',
148
+ tractability_class: 'closed-form',
149
+ notes: 'Closed-form evaluator evaluateCoaxialCapacitance in src/bridges/engineering-r7.ts. The overlay formalRef is PhysJS.CoaxialCapacitance.capacitance_per_length, kind bridge. The catalog path passes it, so catalog evidence and edge evidence are formally-proved. The edge confidence stays established. No confrontation.',
150
+ },
151
+ {
152
+ id: 133,
153
+ name: 'Damping ratio',
154
+ category: 'D',
155
+ category_name: 'Field Unification Bridges',
156
+ bridges: ['mechanical', 'dynamical'],
157
+ status: 'established',
158
+ context: 'For m ẍ + c ẋ + k x = 0, ζ = c / (2 √(k m)). The characteristic polynomial is s² + (c/m) s + k/m. The 2 is the binomial coefficient in 2 ζ ω with ω = √(k/m). For c ≥ 0 a zero discriminant is ζ = 1, so c_crit = 2 √(k m). Dropping the 2 is not this ratio. √(k/m) is not ζ. Damping ratio',
159
+ formula_latex: '\\zeta = c / (2 \\sqrt{k m})',
160
+ source_part: 'III',
161
+ source_section: 'Engineering catalog (be-133) — established textbook relation, PhysJS.DampingRatio.damping_ratio',
162
+ known_issues: [],
163
+ references: [
164
+ 'Constant coefficients and c/m = 2 ζ ω are the hypotheses of PhysJS.DampingRatio.damping_ratio.',
165
+ ],
166
+ dependencies: [],
167
+ dimensional_signature: '[1]',
168
+ tractability_class: 'closed-form',
169
+ notes: 'Closed-form evaluator evaluateDampingRatio in src/bridges/engineering-r7.ts. The overlay formalRef is PhysJS.DampingRatio.damping_ratio, kind bridge. The catalog path passes it, so catalog evidence and edge evidence are formally-proved. The edge confidence stays established. No confrontation.',
170
+ },
171
+ ];
172
+ //# sourceMappingURL=engineering-r7-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engineering-r7-catalog.js","sourceRoot":"","sources":["../../src/bridges/engineering-r7-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,152 @@
1
+ /** Comb-drive inputs. Both sidewalls, gap fixed. @public */
2
+ export interface CombDriveInputs {
3
+ readonly n: number;
4
+ readonly eps_F_per_m: number;
5
+ readonly h_m: number;
6
+ readonly V_volts: number;
7
+ readonly g_m: number;
8
+ }
9
+ /** Comb-drive force. @public */
10
+ export interface CombDriveResult {
11
+ readonly F_N: number;
12
+ }
13
+ /**
14
+ * Lateral force `F = n ε h V² / g`. The sidewall 2 and the coenergy 1/2 cancel.
15
+ * @public
16
+ */
17
+ export declare function evaluateCombDrive({ n, eps_F_per_m, h_m, V_volts, g_m }: CombDriveInputs): CombDriveResult;
18
+ /**
19
+ * One sidewall keeps the coenergy 1/2. Not the catalog force.
20
+ * @internal
21
+ */
22
+ export declare function combDriveOneSidewall(input: CombDriveInputs): number;
23
+ /** Subthreshold-swing inputs. `e` is not an input. @public */
24
+ export interface SubthresholdSwingInputs {
25
+ readonly T_K: number;
26
+ readonly Cd_F: number;
27
+ readonly Cox_F: number;
28
+ }
29
+ /** Subthreshold swing, volts per decade. @public */
30
+ export interface SubthresholdSwingResult {
31
+ readonly S_V_per_decade: number;
32
+ }
33
+ /**
34
+ * `S = ln(10) (k_B T / e) (1 + C_d / C_ox)`.
35
+ * @public
36
+ */
37
+ export declare function evaluateSubthresholdSwing({ T_K, Cd_F, Cox_F, }: SubthresholdSwingInputs): SubthresholdSwingResult;
38
+ /**
39
+ * The ideal swing drops `C_d`. Not the catalog swing when `C_d ≠ 0`.
40
+ * @internal
41
+ */
42
+ export declare function subthresholdIdealSwing(T_K: number): number;
43
+ /** Boost-converter inputs. @public */
44
+ export interface BoostConverterInputs {
45
+ readonly D: number;
46
+ }
47
+ /** Boost voltage ratio. @public */
48
+ export interface BoostConverterResult {
49
+ readonly ratio: number;
50
+ }
51
+ /**
52
+ * `V_out / V_in = 1 / (1 − D)` for `D ≠ 1`.
53
+ * @public
54
+ */
55
+ export declare function evaluateBoostConverter({ D }: BoostConverterInputs): BoostConverterResult;
56
+ /** Fin inputs. Rectangular cross-section, adiabatic tip. @public */
57
+ export interface FinEfficiencyInputs {
58
+ readonly h_W_per_m2_K: number;
59
+ readonly k_W_per_m_K: number;
60
+ readonly t_m: number;
61
+ readonly L_fin_m: number;
62
+ }
63
+ /** Fin parameter and adiabatic-tip efficiency. @public */
64
+ export interface FinEfficiencyResult {
65
+ readonly m_per_m: number;
66
+ readonly eta: number;
67
+ }
68
+ /**
69
+ * `m = √(2 h / (k t))` and `η = tanh(m L) / (m L)`.
70
+ * @public
71
+ */
72
+ export declare function evaluateFinEfficiency({ h_W_per_m2_K, k_W_per_m_K, t_m, L_fin_m, }: FinEfficiencyInputs): FinEfficiencyResult;
73
+ /** One face, `P/A = 1/t`. Not the catalog `m`. @internal */
74
+ export declare function finOneFaceParameter(h: number, k: number, t: number): number;
75
+ /** Infinite-fin `1/(m L)`. Not the adiabatic efficiency. @internal */
76
+ export declare function finInfiniteEfficiency(input: FinEfficiencyInputs): number;
77
+ /** Thermoelectric-generator inputs. `Z` is `S²/(R K)`, per kelvin. @public */
78
+ export interface ThermoelectricGeneratorInputs {
79
+ readonly Th_K: number;
80
+ readonly Tc_K: number;
81
+ readonly Z_per_K: number;
82
+ }
83
+ /** Optimum generator efficiency. @public */
84
+ export interface ThermoelectricGeneratorResult {
85
+ readonly eta: number;
86
+ }
87
+ /**
88
+ * `η = (1 − T_c/T_h) (√(1 + Z T_m) − 1) / (√(1 + Z T_m) + T_c/T_h)`,
89
+ * with `T_m = (T_h + T_c) / 2`.
90
+ * @public
91
+ */
92
+ export declare function evaluateThermoelectricGenerator({ Th_K, Tc_K, Z_per_K, }: ThermoelectricGeneratorInputs): ThermoelectricGeneratorResult;
93
+ /** Carnot factor alone. Not the generator efficiency. @internal */
94
+ export declare function carnotFactor(Th_K: number, Tc_K: number): number;
95
+ /** Joukowsky inputs. `e_wall` is the wall thickness. @public */
96
+ export interface JoukowskyInputs {
97
+ readonly rho_kg_per_m3: number;
98
+ readonly dv_m_per_s: number;
99
+ readonly K_Pa: number;
100
+ readonly E_Pa: number;
101
+ readonly pipe_D_m: number;
102
+ readonly wall_m: number;
103
+ }
104
+ /** Joukowsky pressure and the thin-wall speed. @public */
105
+ export interface JoukowskyResult {
106
+ readonly c_m_per_s: number;
107
+ readonly delta_p_Pa: number;
108
+ }
109
+ /**
110
+ * `c = √(K/ρ) / √(1 + (K/E)(D/e_wall))` and `Δp = ρ c Δv`.
111
+ * @public
112
+ */
113
+ export declare function evaluateJoukowsky({ rho_kg_per_m3, dv_m_per_s, K_Pa, E_Pa, pipe_D_m, wall_m, }: JoukowskyInputs): JoukowskyResult;
114
+ /** `ρ (Δv)²`. Not the Joukowsky pressure when `c ≠ Δv`. @internal */
115
+ export declare function joukowskyDynamicPressure(rho_kg_per_m3: number, dv_m_per_s: number): number;
116
+ /** Rigid-wall `√(K/ρ)`. Not the thin-wall speed. @internal */
117
+ export declare function joukowskyRigidSpeed(K_Pa: number, rho_kg_per_m3: number): number;
118
+ /** Coaxial-capacitance inputs. @public */
119
+ export interface CoaxialCapacitanceInputs {
120
+ readonly eps_F_per_m: number;
121
+ readonly a_m: number;
122
+ readonly b_m: number;
123
+ }
124
+ /** Capacitance per length. @public */
125
+ export interface CoaxialCapacitanceResult {
126
+ readonly C_F_per_m: number;
127
+ }
128
+ /**
129
+ * `C' = 2 π ε / ln(b/a)`.
130
+ * @public
131
+ */
132
+ export declare function evaluateCoaxialCapacitance({ eps_F_per_m, a_m, b_m, }: CoaxialCapacitanceInputs): CoaxialCapacitanceResult;
133
+ /** `ε / ln(b/a)`. Drops `2 π`. @internal */
134
+ export declare function coaxialWithoutTwoPi(input: CoaxialCapacitanceInputs): number;
135
+ /** Damping-ratio inputs. @public */
136
+ export interface DampingRatioInputs {
137
+ readonly c_kg_per_s: number;
138
+ readonly k_N_per_m: number;
139
+ readonly m_kg: number;
140
+ }
141
+ /** Damping ratio of `m ẍ + c ẋ + k x = 0`. @public */
142
+ export interface DampingRatioResult {
143
+ readonly zeta: number;
144
+ }
145
+ /**
146
+ * `ζ = c / (2 √(k m))`.
147
+ * @public
148
+ */
149
+ export declare function evaluateDampingRatio({ c_kg_per_s, k_N_per_m, m_kg }: DampingRatioInputs): DampingRatioResult;
150
+ /** Drops the binomial 2. Not the catalog ratio when `c ≠ 0`. @internal */
151
+ export declare function dampingWithoutTwo(input: DampingRatioInputs): number;
152
+ //# sourceMappingURL=engineering-r7.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engineering-r7.d.ts","sourceRoot":"","sources":["../../src/bridges/engineering-r7.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,208 @@
1
+ /**
2
+ * BE-126 through BE-133 — engineering closed forms.
3
+ *
4
+ * Each function is the numeric body for that catalog id. `e` is the
5
+ * elementary charge. Euler's number is not used. A dropped factor is a
6
+ * separate function and is not the catalog value.
7
+ *
8
+ * @module bridges/engineering-r7
9
+ */
10
+ import { E_SI, K_B_SI } from '../core/constants.js';
11
+ function finite(name, value) {
12
+ if (!Number.isFinite(value))
13
+ throw new Error(`${name} must be finite`);
14
+ }
15
+ /**
16
+ * Lateral force `F = n ε h V² / g`. The sidewall 2 and the coenergy 1/2 cancel.
17
+ * @public
18
+ */
19
+ export function evaluateCombDrive({ n, eps_F_per_m, h_m, V_volts, g_m }) {
20
+ finite('n', n);
21
+ finite('eps_F_per_m', eps_F_per_m);
22
+ finite('h_m', h_m);
23
+ finite('V_volts', V_volts);
24
+ finite('g_m', g_m);
25
+ if (g_m === 0)
26
+ throw new Error('evaluateCombDrive: g_m must be nonzero');
27
+ return { F_N: (n * eps_F_per_m * h_m * V_volts * V_volts) / g_m };
28
+ }
29
+ /**
30
+ * One sidewall keeps the coenergy 1/2. Not the catalog force.
31
+ * @internal
32
+ */
33
+ export function combDriveOneSidewall(input) {
34
+ return evaluateCombDrive(input).F_N / 2;
35
+ }
36
+ /**
37
+ * `S = ln(10) (k_B T / e) (1 + C_d / C_ox)`.
38
+ * @public
39
+ */
40
+ export function evaluateSubthresholdSwing({ T_K, Cd_F, Cox_F, }) {
41
+ finite('T_K', T_K);
42
+ finite('Cd_F', Cd_F);
43
+ finite('Cox_F', Cox_F);
44
+ if (T_K === 0)
45
+ throw new Error('evaluateSubthresholdSwing: T_K must be nonzero');
46
+ if (Cox_F === 0)
47
+ throw new Error('evaluateSubthresholdSwing: Cox_F must be nonzero');
48
+ if (Cox_F + Cd_F === 0)
49
+ throw new Error('evaluateSubthresholdSwing: Cox_F + Cd_F must be nonzero');
50
+ const ideal = Math.log(10) * ((K_B_SI * T_K) / E_SI);
51
+ return { S_V_per_decade: ideal * (1 + Cd_F / Cox_F) };
52
+ }
53
+ /**
54
+ * The ideal swing drops `C_d`. Not the catalog swing when `C_d ≠ 0`.
55
+ * @internal
56
+ */
57
+ export function subthresholdIdealSwing(T_K) {
58
+ finite('T_K', T_K);
59
+ if (T_K === 0)
60
+ throw new Error('subthresholdIdealSwing: T_K must be nonzero');
61
+ return Math.log(10) * ((K_B_SI * T_K) / E_SI);
62
+ }
63
+ /**
64
+ * `V_out / V_in = 1 / (1 − D)` for `D ≠ 1`.
65
+ * @public
66
+ */
67
+ export function evaluateBoostConverter({ D }) {
68
+ finite('D', D);
69
+ if (D === 1)
70
+ throw new Error('evaluateBoostConverter: D must not be 1');
71
+ return { ratio: 1 / (1 - D) };
72
+ }
73
+ /**
74
+ * `m = √(2 h / (k t))` and `η = tanh(m L) / (m L)`.
75
+ * @public
76
+ */
77
+ export function evaluateFinEfficiency({ h_W_per_m2_K, k_W_per_m_K, t_m, L_fin_m, }) {
78
+ finite('h_W_per_m2_K', h_W_per_m2_K);
79
+ finite('k_W_per_m_K', k_W_per_m_K);
80
+ finite('t_m', t_m);
81
+ finite('L_fin_m', L_fin_m);
82
+ if (k_W_per_m_K <= 0)
83
+ throw new Error('evaluateFinEfficiency: k_W_per_m_K must be positive');
84
+ if (t_m <= 0)
85
+ throw new Error('evaluateFinEfficiency: t_m must be positive');
86
+ if (h_W_per_m2_K < 0)
87
+ throw new Error('evaluateFinEfficiency: h_W_per_m2_K must be ≥ 0');
88
+ if (L_fin_m === 0)
89
+ throw new Error('evaluateFinEfficiency: L_fin_m must be nonzero');
90
+ const m = Math.sqrt((2 * h_W_per_m2_K) / (k_W_per_m_K * t_m));
91
+ if (m === 0)
92
+ throw new Error('evaluateFinEfficiency: m must be nonzero');
93
+ const mL = m * L_fin_m;
94
+ return { m_per_m: m, eta: Math.tanh(mL) / mL };
95
+ }
96
+ /** One face, `P/A = 1/t`. Not the catalog `m`. @internal */
97
+ export function finOneFaceParameter(h, k, t) {
98
+ return Math.sqrt(h / (k * t));
99
+ }
100
+ /** Infinite-fin `1/(m L)`. Not the adiabatic efficiency. @internal */
101
+ export function finInfiniteEfficiency(input) {
102
+ const { m_per_m, eta } = evaluateFinEfficiency(input);
103
+ const mL = m_per_m * input.L_fin_m;
104
+ if (eta === 1 / mL)
105
+ throw new Error('finInfiniteEfficiency: tanh was 1');
106
+ return 1 / mL;
107
+ }
108
+ /**
109
+ * `η = (1 − T_c/T_h) (√(1 + Z T_m) − 1) / (√(1 + Z T_m) + T_c/T_h)`,
110
+ * with `T_m = (T_h + T_c) / 2`.
111
+ * @public
112
+ */
113
+ export function evaluateThermoelectricGenerator({ Th_K, Tc_K, Z_per_K, }) {
114
+ finite('Th_K', Th_K);
115
+ finite('Tc_K', Tc_K);
116
+ finite('Z_per_K', Z_per_K);
117
+ if (Th_K === 0)
118
+ throw new Error('evaluateThermoelectricGenerator: Th_K must be nonzero');
119
+ const mean = (Th_K + Tc_K) / 2;
120
+ const inside = 1 + Z_per_K * mean;
121
+ if (inside < 0)
122
+ throw new Error('evaluateThermoelectricGenerator: 1 + Z T_m must be ≥ 0');
123
+ const m = Math.sqrt(inside);
124
+ const denom = m + Tc_K / Th_K;
125
+ if (denom === 0)
126
+ throw new Error('evaluateThermoelectricGenerator: m + T_c/T_h must be nonzero');
127
+ return { eta: (1 - Tc_K / Th_K) * (m - 1) / denom };
128
+ }
129
+ /** Carnot factor alone. Not the generator efficiency. @internal */
130
+ export function carnotFactor(Th_K, Tc_K) {
131
+ if (Th_K === 0)
132
+ throw new Error('carnotFactor: Th_K must be nonzero');
133
+ return 1 - Tc_K / Th_K;
134
+ }
135
+ /**
136
+ * `c = √(K/ρ) / √(1 + (K/E)(D/e_wall))` and `Δp = ρ c Δv`.
137
+ * @public
138
+ */
139
+ export function evaluateJoukowsky({ rho_kg_per_m3, dv_m_per_s, K_Pa, E_Pa, pipe_D_m, wall_m, }) {
140
+ finite('rho_kg_per_m3', rho_kg_per_m3);
141
+ finite('dv_m_per_s', dv_m_per_s);
142
+ finite('K_Pa', K_Pa);
143
+ finite('E_Pa', E_Pa);
144
+ finite('pipe_D_m', pipe_D_m);
145
+ finite('wall_m', wall_m);
146
+ if (rho_kg_per_m3 <= 0)
147
+ throw new Error('evaluateJoukowsky: rho_kg_per_m3 must be positive');
148
+ if (K_Pa <= 0)
149
+ throw new Error('evaluateJoukowsky: K_Pa must be positive');
150
+ if (E_Pa <= 0)
151
+ throw new Error('evaluateJoukowsky: E_Pa must be positive');
152
+ if (wall_m <= 0)
153
+ throw new Error('evaluateJoukowsky: wall_m must be positive');
154
+ const wallTerm = (K_Pa / E_Pa) * (pipe_D_m / wall_m);
155
+ if (!(1 + wallTerm > 0))
156
+ throw new Error('evaluateJoukowsky: 1 + (K/E)(D/e_wall) must be positive');
157
+ const c = Math.sqrt(K_Pa / rho_kg_per_m3) / Math.sqrt(1 + wallTerm);
158
+ return { c_m_per_s: c, delta_p_Pa: rho_kg_per_m3 * c * dv_m_per_s };
159
+ }
160
+ /** `ρ (Δv)²`. Not the Joukowsky pressure when `c ≠ Δv`. @internal */
161
+ export function joukowskyDynamicPressure(rho_kg_per_m3, dv_m_per_s) {
162
+ return rho_kg_per_m3 * dv_m_per_s * dv_m_per_s;
163
+ }
164
+ /** Rigid-wall `√(K/ρ)`. Not the thin-wall speed. @internal */
165
+ export function joukowskyRigidSpeed(K_Pa, rho_kg_per_m3) {
166
+ return Math.sqrt(K_Pa / rho_kg_per_m3);
167
+ }
168
+ /**
169
+ * `C' = 2 π ε / ln(b/a)`.
170
+ * @public
171
+ */
172
+ export function evaluateCoaxialCapacitance({ eps_F_per_m, a_m, b_m, }) {
173
+ finite('eps_F_per_m', eps_F_per_m);
174
+ finite('a_m', a_m);
175
+ finite('b_m', b_m);
176
+ if (a_m <= 0)
177
+ throw new Error('evaluateCoaxialCapacitance: a_m must be positive');
178
+ if (b_m <= 0)
179
+ throw new Error('evaluateCoaxialCapacitance: b_m must be positive');
180
+ if (a_m === b_m)
181
+ throw new Error('evaluateCoaxialCapacitance: a_m and b_m must differ');
182
+ if (eps_F_per_m === 0)
183
+ throw new Error('evaluateCoaxialCapacitance: eps_F_per_m must be nonzero');
184
+ return { C_F_per_m: (2 * Math.PI * eps_F_per_m) / Math.log(b_m / a_m) };
185
+ }
186
+ /** `ε / ln(b/a)`. Drops `2 π`. @internal */
187
+ export function coaxialWithoutTwoPi(input) {
188
+ return evaluateCoaxialCapacitance(input).C_F_per_m / (2 * Math.PI);
189
+ }
190
+ /**
191
+ * `ζ = c / (2 √(k m))`.
192
+ * @public
193
+ */
194
+ export function evaluateDampingRatio({ c_kg_per_s, k_N_per_m, m_kg }) {
195
+ finite('c_kg_per_s', c_kg_per_s);
196
+ finite('k_N_per_m', k_N_per_m);
197
+ finite('m_kg', m_kg);
198
+ if (m_kg <= 0)
199
+ throw new Error('evaluateDampingRatio: m_kg must be positive');
200
+ if (k_N_per_m <= 0)
201
+ throw new Error('evaluateDampingRatio: k_N_per_m must be positive');
202
+ return { zeta: c_kg_per_s / (2 * Math.sqrt(k_N_per_m * m_kg)) };
203
+ }
204
+ /** Drops the binomial 2. Not the catalog ratio when `c ≠ 0`. @internal */
205
+ export function dampingWithoutTwo(input) {
206
+ return evaluateDampingRatio(input).zeta * 2;
207
+ }
208
+ //# sourceMappingURL=engineering-r7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engineering-r7.js","sourceRoot":"","sources":["../../src/bridges/engineering-r7.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"evaluators.d.ts","sourceRoot":"","sources":["../../src/bridges/evaluators.ts"],"names":[],"mappings":"AA0FA;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;AAEzG;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACjC,gFAAgF;IAChF,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpD,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;CAC1B;AAED,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,wDAAwD;IACxD,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,qFAAqF;IACrF,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC;CACxD;AAqhBD,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CACE,CAAC;AAEpE;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACvC,OAAO,CAYT"}
1
+ {"version":3,"file":"evaluators.d.ts","sourceRoot":"","sources":["../../src/bridges/evaluators.ts"],"names":[],"mappings":"AAoGA;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;AAEzG;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACjC,gFAAgF;IAChF,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpD,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;CAC1B;AAED,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,wDAAwD;IACxD,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,qFAAqF;IACrF,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC;CACxD;AAikBD,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CACE,CAAC;AAEpE;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACvC,OAAO,CAYT"}