ocs-calculators 0.1.0 → 0.1.2

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 (136) hide show
  1. package/CHANGELOG.md +45 -4
  2. package/README.md +47 -5
  3. package/README_EN.md +11 -5
  4. package/dist/ampacity/index.cjs +17 -0
  5. package/dist/ampacity/index.cjs.map +1 -0
  6. package/dist/ampacity/index.d.cts +68 -0
  7. package/dist/ampacity/index.d.ts +68 -0
  8. package/dist/ampacity/index.js +17 -0
  9. package/dist/ampacity/index.js.map +1 -0
  10. package/dist/chunk-3ERFRRHZ.cjs +119 -0
  11. package/dist/chunk-3ERFRRHZ.cjs.map +1 -0
  12. package/dist/chunk-4UU7WA7N.cjs +107 -0
  13. package/dist/chunk-4UU7WA7N.cjs.map +1 -0
  14. package/dist/chunk-5INEDXRY.cjs +69 -0
  15. package/dist/chunk-5INEDXRY.cjs.map +1 -0
  16. package/dist/chunk-5Q6IASB2.cjs +101 -0
  17. package/dist/chunk-5Q6IASB2.cjs.map +1 -0
  18. package/dist/chunk-746H65EQ.js +91 -0
  19. package/dist/chunk-746H65EQ.js.map +1 -0
  20. package/dist/chunk-CVA4EH2K.js +102 -0
  21. package/dist/chunk-CVA4EH2K.js.map +1 -0
  22. package/dist/chunk-DGO2DCO5.cjs +19 -0
  23. package/dist/chunk-DGO2DCO5.cjs.map +1 -0
  24. package/dist/chunk-FVESJBUD.cjs +95 -0
  25. package/dist/chunk-FVESJBUD.cjs.map +1 -0
  26. package/dist/chunk-GN6QNOUL.js +91 -0
  27. package/dist/chunk-GN6QNOUL.js.map +1 -0
  28. package/dist/chunk-IFVYGNT3.js +107 -0
  29. package/dist/chunk-IFVYGNT3.js.map +1 -0
  30. package/dist/chunk-IUENDAAJ.js +67 -0
  31. package/dist/chunk-IUENDAAJ.js.map +1 -0
  32. package/dist/chunk-J2UXRMTU.cjs +126 -0
  33. package/dist/chunk-J2UXRMTU.cjs.map +1 -0
  34. package/dist/chunk-KOSC6EA3.js +101 -0
  35. package/dist/chunk-KOSC6EA3.js.map +1 -0
  36. package/dist/chunk-LDSV3U4M.js +69 -0
  37. package/dist/chunk-LDSV3U4M.js.map +1 -0
  38. package/dist/chunk-MZBQ4546.cjs +102 -0
  39. package/dist/chunk-MZBQ4546.cjs.map +1 -0
  40. package/dist/chunk-NBFOB2PI.cjs +91 -0
  41. package/dist/chunk-NBFOB2PI.cjs.map +1 -0
  42. package/dist/chunk-NBHEOJ5A.cjs +88 -0
  43. package/dist/chunk-NBHEOJ5A.cjs.map +1 -0
  44. package/dist/chunk-P6KUGPHD.cjs +91 -0
  45. package/dist/chunk-P6KUGPHD.cjs.map +1 -0
  46. package/dist/chunk-QTPXTDGY.js +119 -0
  47. package/dist/chunk-QTPXTDGY.js.map +1 -0
  48. package/dist/chunk-RPKDEFSJ.cjs +78 -0
  49. package/dist/chunk-RPKDEFSJ.cjs.map +1 -0
  50. package/dist/chunk-RVG3LEZQ.js +95 -0
  51. package/dist/chunk-RVG3LEZQ.js.map +1 -0
  52. package/dist/chunk-RVP3IU2L.cjs +67 -0
  53. package/dist/chunk-RVP3IU2L.cjs.map +1 -0
  54. package/dist/chunk-UO2PHBC3.js +126 -0
  55. package/dist/chunk-UO2PHBC3.js.map +1 -0
  56. package/dist/chunk-VAHQDIMW.js +88 -0
  57. package/dist/chunk-VAHQDIMW.js.map +1 -0
  58. package/dist/chunk-WPMKM6NL.js +78 -0
  59. package/dist/chunk-WPMKM6NL.js.map +1 -0
  60. package/dist/chunk-YHDO6XVM.js +19 -0
  61. package/dist/chunk-YHDO6XVM.js.map +1 -0
  62. package/dist/copper/index.cjs +12 -0
  63. package/dist/copper/index.cjs.map +1 -0
  64. package/dist/copper/index.d.cts +57 -0
  65. package/dist/copper/index.d.ts +57 -0
  66. package/dist/copper/index.js +12 -0
  67. package/dist/copper/index.js.map +1 -0
  68. package/dist/curve-stagger/index.cjs +17 -0
  69. package/dist/curve-stagger/index.cjs.map +1 -0
  70. package/dist/curve-stagger/index.d.cts +77 -0
  71. package/dist/curve-stagger/index.d.ts +77 -0
  72. package/dist/curve-stagger/index.js +17 -0
  73. package/dist/curve-stagger/index.js.map +1 -0
  74. package/dist/dropper/index.cjs +15 -0
  75. package/dist/dropper/index.cjs.map +1 -0
  76. package/dist/dropper/index.d.cts +84 -0
  77. package/dist/dropper/index.d.ts +84 -0
  78. package/dist/dropper/index.js +15 -0
  79. package/dist/dropper/index.js.map +1 -0
  80. package/dist/force/index.cjs +17 -0
  81. package/dist/force/index.cjs.map +1 -0
  82. package/dist/force/index.d.cts +69 -0
  83. package/dist/force/index.d.ts +69 -0
  84. package/dist/force/index.js +17 -0
  85. package/dist/force/index.js.map +1 -0
  86. package/dist/icing/index.cjs +9 -0
  87. package/dist/icing/index.cjs.map +1 -0
  88. package/dist/icing/index.d.cts +43 -0
  89. package/dist/icing/index.d.ts +43 -0
  90. package/dist/icing/index.js +9 -0
  91. package/dist/icing/index.js.map +1 -0
  92. package/dist/index.cjs +162 -1220
  93. package/dist/index.cjs.map +1 -1
  94. package/dist/index.d.cts +47 -775
  95. package/dist/index.d.ts +47 -775
  96. package/dist/index.js +108 -1063
  97. package/dist/index.js.map +1 -1
  98. package/dist/stroke/index.cjs +19 -0
  99. package/dist/stroke/index.cjs.map +1 -0
  100. package/dist/stroke/index.d.cts +63 -0
  101. package/dist/stroke/index.d.ts +63 -0
  102. package/dist/stroke/index.js +19 -0
  103. package/dist/stroke/index.js.map +1 -0
  104. package/dist/tension/index.cjs +19 -0
  105. package/dist/tension/index.cjs.map +1 -0
  106. package/dist/tension/index.d.cts +85 -0
  107. package/dist/tension/index.d.ts +85 -0
  108. package/dist/tension/index.js +19 -0
  109. package/dist/tension/index.js.map +1 -0
  110. package/dist/types-C2OanO8N.d.cts +33 -0
  111. package/dist/types-C2OanO8N.d.ts +33 -0
  112. package/dist/voltage-drop/index.cjs +12 -0
  113. package/dist/voltage-drop/index.cjs.map +1 -0
  114. package/dist/voltage-drop/index.d.cts +40 -0
  115. package/dist/voltage-drop/index.d.ts +40 -0
  116. package/dist/voltage-drop/index.js +12 -0
  117. package/dist/voltage-drop/index.js.map +1 -0
  118. package/dist/wavespeed/index.cjs +17 -0
  119. package/dist/wavespeed/index.cjs.map +1 -0
  120. package/dist/wavespeed/index.d.cts +58 -0
  121. package/dist/wavespeed/index.d.ts +58 -0
  122. package/dist/wavespeed/index.js +17 -0
  123. package/dist/wavespeed/index.js.map +1 -0
  124. package/dist/wear/index.cjs +13 -0
  125. package/dist/wear/index.cjs.map +1 -0
  126. package/dist/wear/index.d.cts +55 -0
  127. package/dist/wear/index.d.ts +55 -0
  128. package/dist/wear/index.js +13 -0
  129. package/dist/wear/index.js.map +1 -0
  130. package/dist/wind/index.cjs +15 -0
  131. package/dist/wind/index.cjs.map +1 -0
  132. package/dist/wind/index.d.cts +66 -0
  133. package/dist/wind/index.d.ts +66 -0
  134. package/dist/wind/index.js +15 -0
  135. package/dist/wind/index.js.map +1 -0
  136. package/package.json +64 -3
package/dist/index.cjs CHANGED
@@ -1,141 +1,106 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/index.ts
21
- var index_exports = {};
22
- __export(index_exports, {
23
- AIR_DENSITY_KG_PER_M3: () => AIR_DENSITY_KG_PER_M3,
24
- CONVENTIONAL_MARGIN_MM: () => CONVENTIONAL_MARGIN_MM,
25
- COPPER_ALLOY_ALPHA_PER_DEG_C: () => COPPER_ALLOY_ALPHA_PER_DEG_C,
26
- COPPER_ALPHA_PER_DEG_C: () => COPPER_ALPHA_PER_DEG_C,
27
- DEFAULT_BASE_AMBIENT_TEMP_DEG_C: () => DEFAULT_BASE_AMBIENT_TEMP_DEG_C,
28
- DEFAULT_ICE_DENSITY_KG_PER_M3: () => DEFAULT_ICE_DENSITY_KG_PER_M3,
29
- DEFAULT_MIN_END_VOLTAGE_V: () => DEFAULT_MIN_END_VOLTAGE_V,
30
- DEFAULT_PANTOGRAPH_HEIGHT_M: () => DEFAULT_PANTOGRAPH_HEIGHT_M,
31
- DEFAULT_REPLACEMENT_THRESHOLD_PERCENT: () => DEFAULT_REPLACEMENT_THRESHOLD_PERCENT,
32
- DEFAULT_WARN_THRESHOLD: () => DEFAULT_WARN_THRESHOLD,
33
- G0: () => G0,
34
- IACS_RESISTIVITY_OHM_MM2_PER_M: () => IACS_RESISTIVITY_OHM_MM2_PER_M,
35
- MIN_MARGIN_MM: () => MIN_MARGIN_MM,
36
- NOMINAL_SECTION_MM2: () => NOMINAL_SECTION_MM2,
37
- REFERENCE_DENSITY_G_PER_CM3: () => REFERENCE_DENSITY_G_PER_CM3,
38
- REF_TARGET_COEFF: () => REF_TARGET_COEFF,
39
- REF_TARGET_OFFSET_N: () => REF_TARGET_OFFSET_N,
40
- STANDARD_GAUGE_M: () => STANDARD_GAUGE_M,
41
- TB2809_AMPACITY_A: () => TB2809_AMPACITY_A,
42
- TB2809_WIRE_PARAMS: () => TB2809_WIRE_PARAMS,
43
- TRANSMISSION_RATIOS: () => TRANSMISSION_RATIOS,
44
- WIRE_PRESETS: () => WIRE_PRESETS,
45
- ampacityDeratingFactor: () => ampacityDeratingFactor,
46
- ampacityMeta: () => ampacityMeta,
47
- assessContactForce: () => assessContactForce,
48
- cantShiftM: () => cantShiftM,
49
- copperMeta: () => copperMeta,
50
- curveStaggerCheck: () => curveStaggerCheck,
51
- curveStaggerMeta: () => curveStaggerMeta,
52
- deratedAmpacityA: () => deratedAmpacityA,
53
- deriveLinearMassKgPerM: () => deriveLinearMassKgPerM,
54
- dropperLengths: () => dropperLengths,
55
- dropperMeta: () => dropperMeta,
56
- dropperPositionsM: () => dropperPositionsM,
57
- elongationMM: () => elongationMM,
58
- equivalentSpanM: () => equivalentSpanM,
59
- findAmpacityA: () => findAmpacityA,
60
- findWirePreset: () => findWirePreset,
61
- forceMeta: () => forceMeta,
62
- iceLoadNPerM: () => iceLoadNPerM,
63
- icingCheck: () => icingCheck,
64
- icingMeta: () => icingMeta,
65
- kmHToMPerS: () => kmHToMPerS,
66
- maxParabolaSagM: () => maxParabolaSagM,
67
- naturalFrequencyHz: () => naturalFrequencyHz,
68
- nominalSectionMM2: () => nominalSectionMM2,
69
- parabolaSagM: () => parabolaSagM,
70
- referenceTargetForceN: () => referenceTargetForceN,
71
- requiredStrokeMM: () => requiredStrokeMM,
72
- resistanceAtTempOhmPerKm: () => resistanceAtTempOhmPerKm,
73
- sagM: () => sagM,
74
- sectionFromDiameterMM2: () => sectionFromDiameterMM2,
75
- shortCircuitCheck: () => shortCircuitCheck,
76
- shortCircuitMinSectionMM2: () => shortCircuitMinSectionMM2,
77
- solveTensionN: () => solveTensionN,
78
- stateCoefficientK: () => stateCoefficientK,
79
- statisticalForcesN: () => statisticalForcesN,
80
- strokeCheck: () => strokeCheck,
81
- strokeMeta: () => strokeMeta,
82
- tensionAt: () => tensionAt,
83
- tensionCurve: () => tensionCurve,
84
- tensionMeta: () => tensionMeta,
85
- versineM: () => versineM,
86
- voltageDropCheck: () => voltageDropCheck,
87
- voltageDropMeta: () => voltageDropMeta,
88
- wavePropagationSpeedMPerS: () => wavePropagationSpeedMPerS,
89
- waveSpeedCheck: () => waveSpeedCheck,
90
- wavespeedMeta: () => wavespeedMeta,
91
- wearMeta: () => wearMeta,
92
- wearRatio: () => wearRatio,
93
- weightOfPresetNPerM: () => weightOfPresetNPerM,
94
- weightPerLengthNPerM: () => weightPerLengthNPerM,
95
- windClearanceCheck: () => windClearanceCheck,
96
- windDeflectionM: () => windDeflectionM,
97
- windLoadNPerM: () => windLoadNPerM,
98
- windMeta: () => windMeta,
99
- wireLookup: () => wireLookup
100
- });
101
- module.exports = __toCommonJS(index_exports);
102
-
103
- // src/types.ts
104
- var G0 = 9.81;
105
-
106
- // src/common/resistance.ts
107
- var COPPER_ALPHA_PER_DEG_C = 393e-5;
108
- var IACS_RESISTIVITY_OHM_MM2_PER_M = 0.017241;
109
- function resistanceAtTempOhmPerKm(r20OhmPerKm, tempDegC, alphaPerDegC = COPPER_ALPHA_PER_DEG_C) {
110
- if (!(r20OhmPerKm > 0)) {
111
- throw new RangeError(`20\u2103 \u5355\u4F4D\u7535\u963B\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${r20OhmPerKm} \u03A9/km`);
112
- }
113
- if (!(alphaPerDegC > 0)) {
114
- throw new RangeError(`\u7535\u963B\u6E29\u5EA6\u7CFB\u6570\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${alphaPerDegC} /\u2103`);
115
- }
116
- return r20OhmPerKm * (1 + alphaPerDegC * (tempDegC - 20));
117
- }
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+ var _chunk3ERFRRHZcjs = require('./chunk-3ERFRRHZ.cjs');
10
+
11
+
12
+
13
+
14
+ var _chunkRVP3IU2Lcjs = require('./chunk-RVP3IU2L.cjs');
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+ var _chunkNBHEOJ5Acjs = require('./chunk-NBHEOJ5A.cjs');
23
+
24
+
25
+
26
+
27
+
28
+ var _chunk5INEDXRYcjs = require('./chunk-5INEDXRY.cjs');
29
+
30
+
31
+
32
+
33
+
34
+
35
+ var _chunkFVESJBUDcjs = require('./chunk-FVESJBUD.cjs');
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+ var _chunkNBFOB2PIcjs = require('./chunk-NBFOB2PI.cjs');
44
+
45
+
46
+
47
+
48
+ var _chunkMZBQ4546cjs = require('./chunk-MZBQ4546.cjs');
49
+
50
+
51
+
52
+
53
+ var _chunkDGO2DCO5cjs = require('./chunk-DGO2DCO5.cjs');
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+ var _chunk4UU7WA7Ncjs = require('./chunk-4UU7WA7N.cjs');
62
+
63
+
64
+
65
+
66
+
67
+
68
+ var _chunkJ2UXRMTUcjs = require('./chunk-J2UXRMTU.cjs');
69
+
70
+
71
+
72
+
73
+
118
74
 
119
- // src/common/ice.ts
120
- var DEFAULT_ICE_DENSITY_KG_PER_M3 = 900;
121
- function iceLoadNPerM(params) {
122
- const { wireDiameterM, iceThicknessM } = params;
123
- const rho = params.iceDensityKgPerM3 ?? DEFAULT_ICE_DENSITY_KG_PER_M3;
124
- if (!(wireDiameterM > 0)) {
125
- throw new RangeError(`\u7EBF\u7D22\u76F4\u5F84\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${wireDiameterM} m`);
126
- }
127
- if (!(iceThicknessM >= 0)) {
128
- throw new RangeError(`\u8986\u51B0\u539A\u5EA6\u4E0D\u80FD\u4E3A\u8D1F\uFF0C\u6536\u5230 ${iceThicknessM} m`);
129
- }
130
- if (!(rho > 0)) {
131
- throw new RangeError(`\u51B0\u5BC6\u5EA6\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${rho} kg/m\xB3`);
132
- }
133
- if (iceThicknessM === 0) return 0;
134
- return rho * G0 * Math.PI * iceThicknessM * (wireDiameterM + iceThicknessM);
135
- }
75
+
76
+ var _chunkRPKDEFSJcjs = require('./chunk-RPKDEFSJ.cjs');
77
+
78
+
79
+
80
+
81
+
82
+
83
+ var _chunkP6KUGPHDcjs = require('./chunk-P6KUGPHD.cjs');
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+ var _chunk5Q6IASB2cjs = require('./chunk-5Q6IASB2.cjs');
136
93
 
137
94
  // src/data/wire-specs.ts
138
95
  var REFERENCE_DENSITY_G_PER_CM3 = 8.94;
96
+ var STANDARD_UNIT_WEIGHT_KG_PER_KM = {
97
+ cthm120: 1082,
98
+ cthm150: 1350,
99
+ ctha120: 1070
100
+ };
101
+ function unitWeightToKgPerM(kgPerKm) {
102
+ return kgPerKm / 1e3;
103
+ }
139
104
  function deriveLinearMassKgPerM(crossSectionMM2, densityGPerCm3 = REFERENCE_DENSITY_G_PER_CM3) {
140
105
  return crossSectionMM2 * 1e-6 * densityGPerCm3 * 1e3;
141
106
  }
@@ -146,34 +111,37 @@ var WIRE_PRESETS = [
146
111
  name: "CTHM-120\uFF08\u94DC\u9541 120\uFF09",
147
112
  nameEn: "CTHM-120 (CuMg 120 mm\xB2)",
148
113
  crossSectionMM2: 120,
114
+ calculatedSectionMM2: 121,
149
115
  elasticModulusGPa: 120,
150
116
  expansionPerDegC: COPPER_ALLOY_ALPHA_PER_DEG_C,
151
- linearMassKgPerM: deriveLinearMassKgPerM(120)
117
+ linearMassKgPerM: unitWeightToKgPerM(STANDARD_UNIT_WEIGHT_KG_PER_KM.cthm120)
152
118
  },
153
119
  {
154
120
  id: "cthm150",
155
121
  name: "CTHM-150\uFF08\u94DC\u9541 150\uFF09",
156
122
  nameEn: "CTHM-150 (CuMg 150 mm\xB2)",
157
123
  crossSectionMM2: 150,
124
+ calculatedSectionMM2: 151,
158
125
  elasticModulusGPa: 120,
159
126
  expansionPerDegC: COPPER_ALLOY_ALPHA_PER_DEG_C,
160
- linearMassKgPerM: deriveLinearMassKgPerM(150)
127
+ linearMassKgPerM: unitWeightToKgPerM(STANDARD_UNIT_WEIGHT_KG_PER_KM.cthm150)
161
128
  },
162
129
  {
163
130
  id: "ctha120",
164
131
  name: "CTHA-120\uFF08\u94DC\u94F6 120\uFF09",
165
132
  nameEn: "CTHA-120 (CuAg 120 mm\xB2)",
166
133
  crossSectionMM2: 120,
134
+ calculatedSectionMM2: 121,
167
135
  elasticModulusGPa: 120,
168
136
  expansionPerDegC: COPPER_ALLOY_ALPHA_PER_DEG_C,
169
- linearMassKgPerM: deriveLinearMassKgPerM(120)
137
+ linearMassKgPerM: unitWeightToKgPerM(STANDARD_UNIT_WEIGHT_KG_PER_KM.ctha120)
170
138
  }
171
139
  ];
172
140
  function findWirePreset(id) {
173
141
  return WIRE_PRESETS.find((w) => w.id === id);
174
142
  }
175
143
  function weightPerLengthNPerM(linearMassKgPerM) {
176
- return linearMassKgPerM * G0;
144
+ return linearMassKgPerM * _chunkP6KUGPHDcjs.G0;
177
145
  }
178
146
  function weightOfPresetNPerM(spec) {
179
147
  return weightPerLengthNPerM(spec.linearMassKgPerM);
@@ -196,7 +164,7 @@ var M = (type, materialZh, sections, indoor95, outdoor95, indoor150, outdoor150)
196
164
  materialZh,
197
165
  crossSectionMM2: section,
198
166
  condition,
199
- ampacityA: value ?? null
167
+ ampacityA: _nullishCoalesce(value, () => ( null))
200
168
  });
201
169
  }
202
170
  }
@@ -220,1108 +188,82 @@ function findAmpacityA(params) {
220
188
  return row === void 0 ? void 0 : row.ampacityA;
221
189
  }
222
190
 
223
- // src/tension/meta.ts
224
- var tensionMeta = {
225
- name: "\u5F20\u529B-\u6E29\u5EA6\u5B89\u88C5\u66F2\u7EBF",
226
- nameEn: "Tension-Temperature Installation Curve",
227
- summary: "\u6309\u5F20\u529B-\u6E29\u5EA6\u72B6\u6001\u65B9\u7A0B\u6C42\u89E3\u5404\u6E29\u5EA6\u6863\u7684\u65BD\u5DE5\u5F20\u529B\u4E0E\u5F1B\u5EA6\uFF0C\u751F\u6210\u5B89\u88C5\u66F2\u7EBF\u8868\uFF1B\u652F\u6301\u5F53\u91CF\u8DE8\u8DDD\uFF08\u591A\u8DE8\u951A\u6BB5\uFF09\u4E0E\u8986\u51B0\u5DE5\u51B5\u6821\u6838\u3002",
228
- formula: [
229
- "\u72B6\u6001\u65B9\u7A0B\uFF1AT\u2082 \u2212 g\u2082\xB2l\xB2EA/(24T\u2082\xB2) = T\u2081 \u2212 g\u2081\xB2l\xB2EA/(24T\u2081\xB2) \u2212 \u03B1EA(t\u2082 \u2212 t\u2081)",
230
- "\u8DE8\u4E2D\u5F1B\u5EA6\uFF08\u629B\u7269\u7EBF\u8FD1\u4F3C\uFF09\uFF1Af = gl\xB2/(8T)",
231
- "\u5F53\u91CF\u8DE8\u8DDD\uFF1Al_D = \u221A(\u03A3l\u1D62\xB3 / \u03A3l\u1D62)",
232
- "\u8986\u51B0\u8377\u8F7D\uFF08\u51B0\u7B52\u6A21\u578B\uFF09\uFF1Ag_ice = \u03C1_ice \xB7 g\u2080 \xB7 \u03C0 \xB7 b \xB7 (d + b)"
233
- ],
234
- references: [
235
- "TB 10009-2016\u300A\u94C1\u8DEF\u7535\u529B\u7275\u5F15\u4F9B\u7535\u8BBE\u8BA1\u89C4\u8303\u300B\u2014\u2014 \u4EC5\u89C4\u5B9A\u63A5\u89E6\u7EBF\u6700\u5C0F\u5F20\u529B\u3001\u5F20\u529B\u786E\u5B9A\u539F\u5219\u4E0E\u5F20\u529B\u5DEE\u9650\u503C\uFF0C\u4E0D\u542B\u5F20\u529B-\u6E29\u5EA6\u72B6\u6001\u65B9\u7A0B\u672C\u8EAB",
236
- "\u5F20\u529B-\u6E29\u5EA6\u72B6\u6001\u65B9\u7A0B\u4E3A\u901A\u7528\u67D4\u7D22\u72B6\u6001\u65B9\u7A0B\uFF0C\u5177\u4F53\u5F62\u5F0F\u4EE5\u8BBE\u8BA1\u6587\u4EF6\u53CA\u63A5\u89E6\u7F51\u8BBE\u8BA1\u6559\u6750/\u624B\u518C\u4E3A\u51C6",
237
- "\u7EBF\u6750 E / \u03B1 / \u7EBF\u5BC6\u5EA6\u4E3A\u6807\u79F0\u53C2\u8003\u503C\uFF0C\u5B9E\u9645\u4EE5\u4EA7\u54C1\u6280\u672F\u6761\u4EF6\u4E3A\u51C6"
238
- ],
239
- scope: [
240
- "\u5F39\u6027\u6A21\u91CF E\uFF1A50 ~ 200 GPa",
241
- "\u622A\u9762\u79EF A\uFF1A50 ~ 250 mm\xB2",
242
- "\u8DE8\u8DDD l\uFF1A20 ~ 90 m",
243
- "\u5F1B\u5EA6\u91C7\u7528\u629B\u7269\u7EBF\u8FD1\u4F3C\uFF0C\u4E0D\u9002\u7528\u4E8E\u5927\u5F1B\u5EA6\uFF08f/l > 1/10\uFF09\u5DE5\u51B5",
244
- "\u8986\u51B0\u6A21\u578B\u4E3A\u5747\u5300\u51B0\u7B52\u5047\u8BBE\uFF0C\u4E0D\u8003\u8651\u4E0D\u5747\u5300\u8986\u51B0\u4E0E\u8131\u51B0\u8DF3\u8DC3"
245
- ],
246
- disclaimer: "\u672C\u5DE5\u5177\u7ED3\u679C\u4EC5\u4F9B\u53C2\u8003\uFF0C\u5DE5\u7A0B\u5E94\u7528\u4EE5\u8BBE\u8BA1\u6587\u4EF6\u4E3A\u51C6\u3002\u8BE6\u89C1 DISCLAIMER.md\u3002",
247
- online: "https://www.itswe.com/calculator/tension/"
248
- };
249
191
 
250
- // src/tension/index.ts
251
- function sagM(weightPerLengthNPerM2, spanM, tensionN) {
252
- if (!(tensionN > 0)) {
253
- throw new RangeError(`\u5F20\u529B\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${tensionN} N`);
254
- }
255
- return weightPerLengthNPerM2 * spanM * spanM / (8 * tensionN);
256
- }
257
- function equivalentSpanM(spansM) {
258
- if (spansM.length === 0) {
259
- throw new RangeError("\u8DE8\u8DDD\u6570\u7EC4\u4E0D\u80FD\u4E3A\u7A7A");
260
- }
261
- let sumCubed = 0;
262
- let sum = 0;
263
- for (const s of spansM) {
264
- if (!(s > 0)) {
265
- throw new RangeError(`\u8DE8\u8DDD\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${s}`);
266
- }
267
- sumCubed += s * s * s;
268
- sum += s;
269
- }
270
- return Math.sqrt(sumCubed / sum);
271
- }
272
- function stateCoefficientK(weightPerLengthNPerM2, spanM, elasticModulusGPa, crossSectionMM2) {
273
- const ePa = elasticModulusGPa * 1e9;
274
- const aM2 = crossSectionMM2 * 1e-6;
275
- return weightPerLengthNPerM2 * weightPerLengthNPerM2 * spanM * spanM * ePa * aM2 / 24;
276
- }
277
- function solveTensionN(K, targetN) {
278
- const hOf = (t) => t - K / (t * t) - targetN;
279
- let lo = Math.max(targetN, 1e-9);
280
- let hi = lo + 1;
281
- let guard = 0;
282
- while (hOf(hi) < 0 && guard++ < 200) {
283
- hi = lo + (hi - lo) * 2;
284
- if (!Number.isFinite(hi)) break;
285
- }
286
- let iterations = 0;
287
- for (let i = 0; i < 200; i++) {
288
- iterations = i + 1;
289
- const mid = 0.5 * (lo + hi);
290
- if (hOf(mid) < 0) {
291
- lo = mid;
292
- } else {
293
- hi = mid;
294
- }
295
- if (hi - lo <= 1e-12 * Math.max(1, hi)) break;
296
- }
297
- const tensionN = 0.5 * (lo + hi);
298
- return { tensionN, iterations, residualN: hOf(tensionN) };
299
- }
300
- function tensionAt(input) {
301
- const T1N = input.baseTensionKN * 1e3;
302
- if (!(T1N > 0)) {
303
- throw new RangeError(`\u57FA\u51C6\u5F20\u529B\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${input.baseTensionKN} kN`);
304
- }
305
- if (!(input.spanM > 0)) {
306
- throw new RangeError(`\u8DE8\u8DDD\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${input.spanM} m`);
307
- }
308
- const K = stateCoefficientK(
309
- input.weightPerLengthNPerM,
310
- input.spanM,
311
- input.elasticModulusGPa,
312
- input.crossSectionMM2
313
- );
314
- const ePa = input.elasticModulusGPa * 1e9;
315
- const aM2 = input.crossSectionMM2 * 1e-6;
316
- const alphaEA = input.expansionPerDegC * ePa * aM2;
317
- const fBase = T1N - K / (T1N * T1N);
318
- const target = fBase - alphaEA * (input.targetTempDegC - input.baseTempDegC);
319
- const { tensionN, iterations, residualN } = solveTensionN(K, target);
320
- return {
321
- targetTempDegC: input.targetTempDegC,
322
- tensionKN: tensionN / 1e3,
323
- sagM: sagM(input.weightPerLengthNPerM, input.spanM, tensionN),
324
- iterations,
325
- residualN
326
- };
327
- }
328
- function tensionCurve(base, tempsDegC) {
329
- return tempsDegC.map((t) => tensionAt({ ...base, targetTempDegC: t }));
330
- }
331
192
 
332
- // src/dropper/meta.ts
333
- var dropperMeta = {
334
- name: "\u540A\u5F26\u957F\u5EA6\u8BA1\u7B97",
335
- nameEn: "Dropper Length Calculator",
336
- summary: "\u6309\u629B\u7269\u7EBF\u5F1B\u5EA6\u516C\u5F0F\u8BA1\u7B97\u94FE\u5F62\u60AC\u6302\u5404\u540A\u5F26\u957F\u5EA6\uFF0C\u652F\u6301\u7B80\u5355\u94FE\u5F62\u4E0E\u5F39\u6027\u94FE\u5F62\u4E24\u79CD\u60AC\u6302\u7C7B\u578B\u3002",
337
- formula: [
338
- "\u63A5\u89E6\u7EBF\u5F1B\u5EA6\uFF08\u629B\u7269\u7EBF\u8FD1\u4F3C\uFF09\uFF1Af_c(x) = q_c\xB7x\xB7(L\u2212x) / (2\xB7T_c)",
339
- "\u627F\u529B\u7D22\u5F1B\u5EA6\uFF1Af_m(x) = q_m\xB7x\xB7(L\u2212x) / (2\xB7T_m)",
340
- "\u7B80\u5355\u94FE\u5F62\uFF1Al_i = H \u2212 f_c(x_i)",
341
- "\u5F39\u6027\u94FE\u5F62\uFF08\u8BA1\u5165\u627F\u529B\u7D22\u5F1B\u5EA6\uFF09\uFF1Al_i = H \u2212 f_c(x_i) + f_m(x_i)",
342
- "\u8DE8\u4E2D\u6700\u5927\u5F1B\u5EA6\uFF1Af_max = q_c\xB7L\xB2 / (8\xB7T_c)"
343
- ],
344
- references: [
345
- "\u629B\u7269\u7EBF\u8FD1\u4F3C\uFF0C\u9002\u7528\u4E8E f/L \u2264 1/10 \u7684\u5C0F\u5F1B\u5EA6\u5DE5\u51B5",
346
- "\u540A\u5F26\u95F4\u8DDD\u987B\u80FD\u6574\u9664\u8DE8\u8DDD\uFF1B\u5B9E\u9645\u540A\u5F26\u5E03\u7F6E\u4EE5\u8BBE\u8BA1\u6587\u4EF6\u4E3A\u51C6",
347
- "\u5F39\u6027\u94FE\u5F62\u60AC\u6302\u987B\u540C\u65F6\u63D0\u4F9B\u627F\u529B\u7D22\u5F20\u529B\u4E0E\u5355\u4F4D\u8377\u8F7D"
348
- ],
349
- scope: [
350
- "\u8DE8\u8DDD L\uFF1A5 ~ 80 m",
351
- "\u63A5\u89E6\u7EBF\u5F20\u529B T_c\uFF1A1 ~ 40 kN",
352
- "\u7ED3\u6784\u9AD8\u5EA6 H\uFF1A0.3 ~ 3 m",
353
- "\u63A5\u89E6\u7EBF\u5355\u4F4D\u8377\u8F7D q_c\uFF1A0.001 ~ 0.1 kN/m",
354
- "\u540A\u5F26\u95F4\u8DDD d\uFF1A1 ~ 15 m\uFF0C\u987B\u80FD\u6574\u9664\u8DE8\u8DDD",
355
- "\u629B\u7269\u7EBF\u8FD1\u4F3C\uFF0C\u5927\u5F1B\u5EA6\u5DE5\u51B5\u8BEF\u5DEE\u589E\u5927",
356
- "\u672A\u8BA1\u5165\u540A\u5F26\u81EA\u8EAB\u4F38\u957F\u3001\u6E29\u5EA6\u53D8\u5316\u4E0E\u96F6\u90E8\u4EF6\u5236\u9020\u516C\u5DEE"
357
- ],
358
- disclaimer: "\u672C\u5DE5\u5177\u7ED3\u679C\u4EC5\u4F9B\u53C2\u8003\uFF0C\u5DE5\u7A0B\u5E94\u7528\u4EE5\u8BBE\u8BA1\u6587\u4EF6\u4E3A\u51C6\u3002\u8BE6\u89C1 DISCLAIMER.md\u3002",
359
- online: "https://www.itswe.com/calculator/dropper/"
360
- };
361
193
 
362
- // src/dropper/index.ts
363
- function parabolaSagM(xM, spanM, loadKNPerM, tensionKN) {
364
- if (!(tensionKN > 0)) {
365
- throw new RangeError(`\u5F20\u529B\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${tensionKN} kN`);
366
- }
367
- if (xM < 0 || xM > spanM) {
368
- throw new RangeError(`\u4F4D\u7F6E x = ${xM} m \u8D85\u51FA\u8DE8\u8DDD 0 ~ ${spanM} m`);
369
- }
370
- return loadKNPerM * xM * (spanM - xM) / (2 * tensionKN);
371
- }
372
- function maxParabolaSagM(spanM, loadKNPerM, tensionKN) {
373
- return loadKNPerM * spanM * spanM / (8 * tensionKN);
374
- }
375
- function dropperPositionsM(spanM, spacingM) {
376
- if (!(spanM > 0)) {
377
- throw new RangeError(`\u8DE8\u8DDD\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${spanM} m`);
378
- }
379
- if (!(spacingM > 0)) {
380
- throw new RangeError(`\u540A\u5F26\u95F4\u8DDD\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${spacingM} m`);
381
- }
382
- const intervals = spanM / spacingM;
383
- const rounded = Math.round(intervals);
384
- if (Math.abs(intervals - rounded) > 1e-9 || rounded < 1) {
385
- throw new RangeError(
386
- `\u540A\u5F26\u95F4\u8DDD ${spacingM} m \u4E0D\u80FD\u6574\u9664\u8DE8\u8DDD ${spanM} m\uFF08\u5F97\u5230 ${intervals} \u6BB5\uFF09`
387
- );
388
- }
389
- return Array.from({ length: rounded + 1 }, (_, i) => i * spacingM);
390
- }
391
- function dropperLengths(input) {
392
- const {
393
- suspension,
394
- spanM,
395
- contactTensionKN,
396
- structureHeightM,
397
- contactLoadKNPerM,
398
- dropperSpacingM: spacingM
399
- } = input;
400
- if (!(contactTensionKN > 0)) {
401
- throw new RangeError(`\u63A5\u89E6\u7EBF\u5F20\u529B\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${contactTensionKN} kN`);
402
- }
403
- if (!(contactLoadKNPerM > 0)) {
404
- throw new RangeError(`\u63A5\u89E6\u7EBF\u5355\u4F4D\u8377\u8F7D\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${contactLoadKNPerM} kN/m`);
405
- }
406
- if (!(structureHeightM > 0)) {
407
- throw new RangeError(`\u7ED3\u6784\u9AD8\u5EA6\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${structureHeightM} m`);
408
- }
409
- if (suspension === "elastic") {
410
- const m = input.messenger;
411
- if (!m) {
412
- throw new RangeError("\u5F39\u6027\u94FE\u5F62\u60AC\u6302\u5FC5\u987B\u63D0\u4F9B\u627F\u529B\u7D22\u53C2\u6570\uFF08messenger\uFF09");
413
- }
414
- if (!(m.tensionKN > 0) || !(m.loadKNPerM > 0)) {
415
- throw new RangeError("\u627F\u529B\u7D22\u5F20\u529B\u4E0E\u5355\u4F4D\u8377\u8F7D\u5FC5\u987B\u4E3A\u6B63\u6570");
416
- }
417
- }
418
- const positions = dropperPositionsM(spanM, spacingM);
419
- const messenger = suspension === "elastic" ? input.messenger : null;
420
- const points = positions.map((xM, index) => {
421
- const contactSag = parabolaSagM(
422
- xM,
423
- spanM,
424
- contactLoadKNPerM,
425
- contactTensionKN
426
- );
427
- const messengerSag = messenger && messenger !== null ? parabolaSagM(xM, spanM, messenger.loadKNPerM, messenger.tensionKN) : 0;
428
- const dropperLengthM = structureHeightM - contactSag + messengerSag;
429
- if (dropperLengthM <= 0) {
430
- throw new RangeError(
431
- `x = ${xM} m \u5904\u540A\u5F26\u957F\u5EA6\u975E\u6B63\uFF08${dropperLengthM.toFixed(4)} m\uFF09\uFF1A\u7ED3\u6784\u9AD8\u5EA6 ${structureHeightM} m \u4E0D\u8DB3\uFF0C\u8BF7\u590D\u6838\u8F93\u5165`
432
- );
433
- }
434
- return { index, positionM: xM, contactSagM: contactSag, messengerSagM: messengerSag, dropperLengthM };
435
- });
436
- let maxSagM = 0;
437
- let shortestDropperM = Number.POSITIVE_INFINITY;
438
- for (const p of points) {
439
- if (p.contactSagM > maxSagM) maxSagM = p.contactSagM;
440
- if (p.dropperLengthM < shortestDropperM) shortestDropperM = p.dropperLengthM;
441
- }
442
- return {
443
- points,
444
- maxSagM,
445
- shortestDropperM,
446
- count: points.length
447
- };
448
- }
449
194
 
450
- // src/wind/meta.ts
451
- var windMeta = {
452
- name: "\u98CE\u504F\u9650\u754C\u6821\u9A8C",
453
- nameEn: "Wind Deflection Clearance Check",
454
- summary: "\u8BA1\u7B97\u7EBF\u7D22\u5728\u98CE\u8377\u8F7D\u4F5C\u7528\u4E0B\u7684\u8DE8\u4E2D\u504F\u79FB b\uFF0C\u53E0\u52A0\u62C9\u51FA\u503C\u540E\u4E0E\u9650\u754C\u5141\u8BB8\u503C\u6BD4\u8F83\uFF0C\u7ED9\u51FA\u5408\u683C/\u8D85\u9650\u7ED3\u8BBA\u3002",
455
- formula: [
456
- "\u5355\u4F4D\u98CE\u8377\u8F7D\uFF1Ap = \xBD\xB7\u03C1\xB7v\xB2\xB7d\xB7\u03B1\xB7sin\xB2\u03B8\uFF08\u03C1 = 1.225 kg/m\xB3\uFF09",
457
- "\u8DE8\u4E2D\u98CE\u504F\uFF08\u7B80\u652F\u7D22\u629B\u7269\u7EBF\u8FD1\u4F3C\uFF09\uFF1Ab = p\xB7L\xB2 / (8\xB7T)",
458
- "\u9650\u754C\u6821\u9A8C\uFF1Ab + a \u2264 \u9650\u754C\u5141\u8BB8\u503C\uFF0C\u6EE1\u8DB3\u5224\u4E3A\u5408\u683C"
459
- ],
460
- references: [
461
- "\u7B80\u652F\u7D22\u629B\u7269\u7EBF\u8FD1\u4F3C\uFF0C\u9002\u7528\u4E8E f/L \u2264 1/10 \u5DE5\u51B5",
462
- "\u98CE\u8F7D\u4F53\u578B\u7CFB\u6570 \u03B1\uFF1A\u5706\u67F1\u5F62\u7EBF\u7D22\u5E38\u53D6 1.2",
463
- "\u9650\u754C\u5141\u8BB8\u503C\u6309\u53D7\u7535\u5F13\u52A8\u6001\u5305\u7EDC\u7EBF\u53D6\u503C"
464
- ],
465
- scope: [
466
- "\u98CE\u901F v\uFF1A0 ~ 60 m/s",
467
- "\u98CE\u5411\u4E0E\u7EBF\u8DEF\u5939\u89D2 \u03B8\uFF1A0 ~ 180\xB0\uFF0C90\xB0 \u4E3A\u5782\u76F4\u4E8E\u7EBF\u8DEF",
468
- "\u7EBF\u7D22\u76F4\u5F84 d\uFF1A1 ~ 30 mm",
469
- "\u7EBF\u7D22\u5F20\u529B T\uFF1A1 ~ 40 kN",
470
- "\u8DE8\u8DDD L\uFF1A5 ~ 80 m",
471
- "\u98CE\u8F7D\u4F53\u578B\u7CFB\u6570 \u03B1\uFF1A0.5 ~ 2.0",
472
- "\u62C9\u51FA\u503C a\uFF1A0 ~ 0.6 m",
473
- "\u9650\u754C\u5141\u8BB8\u503C\uFF1A0.1 ~ 2 m",
474
- "\u672A\u8BA1\u5165\u7EBF\u7D22\u98CE\u81F4\u632F\u52A8\u3001\u9A70\u632F\u4E0E\u8986\u51B0\u9644\u52A0\u98CE\u8F7D"
475
- ],
476
- disclaimer: "\u672C\u5DE5\u5177\u7ED3\u679C\u4EC5\u4F9B\u53C2\u8003\uFF0C\u5DE5\u7A0B\u5E94\u7528\u4EE5\u8BBE\u8BA1\u6587\u4EF6\u4E3A\u51C6\u3002\u8BE6\u89C1 DISCLAIMER.md\u3002",
477
- online: "https://www.itswe.com/calculator/wind/"
478
- };
479
195
 
480
- // src/wind/index.ts
481
- var AIR_DENSITY_KG_PER_M3 = 1.225;
482
- function windLoadNPerM(params) {
483
- const {
484
- windSpeedMPerS,
485
- windAngleDeg,
486
- wireDiameterMM,
487
- dragCoefficient,
488
- airDensityKgPerM3
489
- } = params;
490
- if (!(windSpeedMPerS >= 0)) {
491
- throw new RangeError(`\u98CE\u901F\u4E0D\u80FD\u4E3A\u8D1F\uFF0C\u6536\u5230 ${windSpeedMPerS} m/s`);
492
- }
493
- if (!(wireDiameterMM > 0)) {
494
- throw new RangeError(`\u7EBF\u7D22\u76F4\u5F84\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${wireDiameterMM} mm`);
495
- }
496
- if (!(dragCoefficient > 0)) {
497
- throw new RangeError(`\u98CE\u8F7D\u4F53\u578B\u7CFB\u6570\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${dragCoefficient}`);
498
- }
499
- if (!(windAngleDeg >= 0 && windAngleDeg <= 180)) {
500
- throw new RangeError(
501
- `\u98CE\u5411\u4E0E\u7EBF\u8DEF\u5939\u89D2\u5E94\u4E3A 0 ~ 180\xB0\uFF0C\u6536\u5230 ${windAngleDeg}\xB0`
502
- );
503
- }
504
- const rho = airDensityKgPerM3 ?? AIR_DENSITY_KG_PER_M3;
505
- if (!(rho > 0)) {
506
- throw new RangeError(`\u7A7A\u6C14\u5BC6\u5EA6\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${rho} kg/m\xB3`);
507
- }
508
- const dM = wireDiameterMM * 1e-3;
509
- const sinTheta = Math.sin(windAngleDeg * Math.PI / 180);
510
- return 0.5 * rho * windSpeedMPerS * windSpeedMPerS * dM * dragCoefficient * sinTheta * sinTheta;
511
- }
512
- function windDeflectionM(windLoadNPerM2, spanM, tensionKN) {
513
- if (!(windLoadNPerM2 >= 0)) {
514
- throw new RangeError(`\u5355\u4F4D\u98CE\u8377\u8F7D\u4E0D\u80FD\u4E3A\u8D1F\uFF0C\u6536\u5230 ${windLoadNPerM2} N/m`);
515
- }
516
- if (!(spanM > 0)) {
517
- throw new RangeError(`\u8DE8\u8DDD\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${spanM} m`);
518
- }
519
- if (!(tensionKN > 0)) {
520
- throw new RangeError(`\u7EBF\u7D22\u5F20\u529B\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${tensionKN} kN`);
521
- }
522
- return windLoadNPerM2 * spanM * spanM / (8 * tensionKN * 1e3);
523
- }
524
- function windClearanceCheck(input) {
525
- const { staggerM, clearanceLimitM } = input;
526
- if (!(staggerM >= 0)) {
527
- throw new RangeError(`\u62C9\u51FA\u503C\u4E0D\u80FD\u4E3A\u8D1F\uFF0C\u6536\u5230 ${staggerM} m`);
528
- }
529
- if (!(clearanceLimitM > 0)) {
530
- throw new RangeError(`\u9650\u754C\u5141\u8BB8\u503C\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${clearanceLimitM} m`);
531
- }
532
- const p = windLoadNPerM(input);
533
- const b = windDeflectionM(p, input.spanM, input.tensionKN);
534
- const totalOffsetM = b + staggerM;
535
- return {
536
- windLoadNPerM: p,
537
- deflectionM: b,
538
- totalOffsetM,
539
- clearanceLimitM,
540
- marginM: clearanceLimitM - totalOffsetM,
541
- passes: totalOffsetM <= clearanceLimitM
542
- };
543
- }
544
196
 
545
- // src/force/meta.ts
546
- var forceMeta = {
547
- name: "\u5F13\u7F51\u63A5\u89E6\u529B\u7EDF\u8BA1\u8BC4\u4EF7",
548
- nameEn: "Pantograph-Catenary Contact Force Statistical Assessment",
549
- summary: "\u6309 EN 50367 \u7EDF\u8BA1\u8BC4\u4EF7\u4F53\u7CFB\uFF0C\u7531\u5E73\u5747\u63A5\u89E6\u529B Fm \u4E0E\u6807\u51C6\u5DEE \u03C3 \u8BA1\u7B97 Fmax=Fm+3\u03C3\u3001Fmin=Fm\u22123\u03C3\uFF0C\u5BF9\u7167\u9A8C\u6536\u9650\u503C\u7ED9\u51FA\u5224\u5B9A\uFF0C\u9002\u7528\u4E8E C1 \u68C0\u6D4B\u6570\u636E\u8BC4\u4EF7\u3002",
550
- formula: [
551
- "\u7EDF\u8BA1\u8BC4\u4EF7\uFF1AFmax = Fm + 3\u03C3\uFF0CFmin = Fm \u2212 3\u03C3",
552
- "\u53C2\u8003\u76EE\u6807\u529B\uFF08AC \u4F53\u7CFB\uFF09\uFF1AFref = 0.00097\xB7v\xB2 + 70\uFF08v \u5355\u4F4D km/h\uFF09",
553
- "DC 3kV \u4F53\u7CFB\uFF1AFref = 0.00097\xB7v\xB2 + 110",
554
- "DC 1.5kV \u4F53\u7CFB\uFF1AFref = 0.00097\xB7v\xB2 + 140"
555
- ],
556
- references: [
557
- "\u7EDF\u8BA1\u8BC4\u4EF7\u6846\u67B6\u4F9D\u636E EN 50367\uFF1B\u6D4B\u91CF\u65B9\u6CD5\u89C1 EN 50317",
558
- "AC \u4F53\u7CFB\u5E38\u6570\u5F15\u81EA EN 50367 \u88686\uFF1BDC \u4F53\u7CFB\u5E38\u6570\u5F15\u81EA TSI ENE 2011/274/EU",
559
- "\u9A8C\u6536\u4E0A\u4E0B\u9650\u987B\u6309\u73B0\u884C\u9A8C\u6536\u5927\u7EB2/\u5408\u540C\u586B\u5199\uFF0C\u672C\u6A21\u5757\u4E0D\u5185\u7F6E\u9650\u503C",
560
- "v = 200 km/h \u65F6 AC \u4F53\u7CFB Fref = 108.8 N"
561
- ],
562
- scope: [
563
- "Fm \u4E0E \u03C3 \u5E94\u53D6\u81EA\u540C\u4E00\u68C0\u6D4B\u533A\u6BB5\u7684\u7EDF\u8BA1\u503C\uFF08C1 \u68C0\u6D4B\u6570\u636E\uFF09",
564
- "3\u03C3 \u51C6\u5219\u662F\u7EDF\u8BA1\u6781\u503C\u8FD1\u4F3C\uFF0C\u4E0D\u66FF\u4EE3\u9010\u70B9\u8D85\u9650\u7EDF\u8BA1",
565
- "\u672A\u8003\u8651\u79BB\u7EBF\u7387\u3001\u71C3\u5F27\u7387\u7B49\u5176\u4ED6\u63A5\u89E6\u8D28\u91CF\u6307\u6807",
566
- "\u5206\u6863\u8868\u503C\u4E0E\u5141\u5DEE\u5E26\u4EE5\u6807\u51C6\u539F\u6587\u4E3A\u51C6"
567
- ],
568
- disclaimer: "\u672C\u5DE5\u5177\u7ED3\u679C\u4EC5\u4F9B\u53C2\u8003\uFF0C\u5DE5\u7A0B\u5E94\u7528\u4EE5\u8BBE\u8BA1\u6587\u4EF6\u4E3A\u51C6\u3002\u8BE6\u89C1 DISCLAIMER.md\u3002",
569
- online: "https://www.itswe.com/calculator/force/"
570
- };
571
197
 
572
- // src/force/index.ts
573
- var REF_TARGET_COEFF = 97e-5;
574
- var REF_TARGET_OFFSET_N = {
575
- ac: 70,
576
- dc3kv: 110,
577
- dc15kv: 140
578
- };
579
- function referenceTargetForceN(speedKmH, system = "ac") {
580
- if (!(speedKmH >= 0)) {
581
- throw new RangeError(`\u901F\u5EA6\u4E0D\u80FD\u4E3A\u8D1F\uFF0C\u6536\u5230 ${speedKmH} km/h`);
582
- }
583
- return REF_TARGET_COEFF * speedKmH * speedKmH + REF_TARGET_OFFSET_N[system];
584
- }
585
- function statisticalForcesN(meanForceN, stdDevN) {
586
- if (!(meanForceN > 0)) {
587
- throw new RangeError(`\u5E73\u5747\u63A5\u89E6\u529B\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${meanForceN} N`);
588
- }
589
- if (!(stdDevN >= 0)) {
590
- throw new RangeError(`\u6807\u51C6\u5DEE\u4E0D\u80FD\u4E3A\u8D1F\uFF0C\u6536\u5230 ${stdDevN} N`);
591
- }
592
- const threeSigma = 3 * stdDevN;
593
- return { maxN: meanForceN + threeSigma, minN: meanForceN - threeSigma };
594
- }
595
- function assessContactForce(input) {
596
- const { meanForceN, stdDevN, speedKmH, maxLimitN, minLimitN } = input;
597
- const { maxN, minN } = statisticalForcesN(meanForceN, stdDevN);
598
- const referenceTargetN = speedKmH === null ? null : referenceTargetForceN(speedKmH, input.system ?? "ac");
599
- const meanDeviationN = referenceTargetN === null ? null : meanForceN - referenceTargetN;
600
- const maxVerdict = maxLimitN === null ? "not-assessed" : maxN <= maxLimitN ? "pass" : "fail";
601
- const minVerdict = minLimitN === null ? "not-assessed" : minN >= minLimitN ? "pass" : "fail";
602
- return {
603
- meanForceN,
604
- stdDevN,
605
- maxForceN: maxN,
606
- minForceN: minN,
607
- referenceTargetN,
608
- meanDeviationN,
609
- maxVerdict,
610
- minVerdict
611
- };
612
- }
613
198
 
614
- // src/ampacity/meta.ts
615
- var ampacityMeta = {
616
- name: "\u8F7D\u6D41\u91CF\u4FEE\u6B63\u4E0E\u77ED\u8DEF\u70ED\u7A33\u5B9A",
617
- nameEn: "Ampacity Derating and Short-Circuit Thermal Stability",
618
- summary: "\u6309\u73AF\u5883\u6E29\u5EA6\u4FEE\u6B63\u6301\u7EED\u8F7D\u6D41\u91CF\uFF0C\u5E76\u6309\u77ED\u8DEF\u70ED\u7A33\u5B9A\u6821\u6838\u6700\u5C0F\u622A\u9762\uFF0C\u7528\u4E8E\u63A5\u89E6\u7EBF/\u9644\u52A0\u5BFC\u7EBF\u622A\u9762\u9009\u578B\u4E0E\u6821\u6838\u3002",
619
- formula: [
620
- "\u8F7D\u6D41\u91CF\u73AF\u5883\u6E29\u5EA6\u4FEE\u6B63\uFF1AI(Ta) = I\u2080\xB7\u221A((Tmax \u2212 Ta) / (Tmax \u2212 T\u2080))",
621
- "\u77ED\u8DEF\u70ED\u7A33\u5B9A\u6700\u5C0F\u622A\u9762\uFF1AS \u2265 I_k\xB7\u221At_k / C"
622
- ],
623
- references: [
624
- "\u5141\u8BB8\u5DE5\u4F5C\u6E29\u5EA6\uFF1A\u94DC 95\u2103\u3001\u94DC\u5408\u91D1 150\u2103\uFF08TB/T 2809-2017 \u88685\uFF09",
625
- "\u57FA\u51C6\u8F7D\u6D41\u91CF I\u2080 \u53EF\u6309 TB/T 2809-2017 \u88685 \u53D6\u503C\uFF08\u5BA4\u5185\u4E3A\u65E0\u98CE\u65E0\u65E5\u7167\u8BD5\u9A8C\u6761\u4EF6\u4E0B\u987B\u7B26\u5408\u503C\uFF0C\u5BA4\u5916\u503C\u5B9C\u53C2\u7167\uFF09",
626
- "\u70ED\u7A33\u5B9A\u7CFB\u6570 C \u5C5E\u8BBE\u8BA1\u8F93\u5165\uFF0C\u987B\u6309\u8BBE\u8BA1\u624B\u518C\u4E0E\u4EA7\u54C1\u6280\u672F\u6761\u4EF6\u53D6\u503C"
627
- ],
628
- scope: [
629
- "\u4FEE\u6B63\u5F0F\u4EC5\u8986\u76D6\u73AF\u5883\u6E29\u5EA6\u9879",
630
- "\u9AD8\u6D77\u62D4\u3001\u96A7\u9053\u3001\u65E5\u7167\u53E0\u52A0\u573A\u666F\u987B\u53E6\u884C\u53E0\u52A0\u6563\u70ED\u4FEE\u6B63",
631
- "\u77ED\u8DEF\u7535\u6D41 I_k \u5E94\u4E3A\u4F9B\u7535\u8BA1\u7B97\u7ED9\u51FA\u7684\u70ED\u7A33\u5B9A\u7B49\u6548\u503C",
632
- "\u5207\u9664\u65F6\u95F4 t_k \u4E3A\u4FDD\u62A4\u52A8\u4F5C\u5168\u5207\u9664\u65F6\u95F4",
633
- "\u672A\u8003\u8651\u90BB\u8FD1\u91D1\u5C5E\u56DE\u6D41\u3001\u96C6\u80A4\u6548\u5E94\u4E0E\u77ED\u65F6\u8FC7\u8F7D\u5DE5\u51B5"
634
- ],
635
- disclaimer: "\u672C\u5DE5\u5177\u7ED3\u679C\u4EC5\u4F9B\u53C2\u8003\uFF0C\u5DE5\u7A0B\u5E94\u7528\u4EE5\u8BBE\u8BA1\u6587\u4EF6\u4E3A\u51C6\u3002\u8BE6\u89C1 DISCLAIMER.md\u3002",
636
- online: "https://www.itswe.com/calculator/ampacity/"
637
- };
638
199
 
639
- // src/ampacity/index.ts
640
- var DEFAULT_BASE_AMBIENT_TEMP_DEG_C = 25;
641
- function ampacityDeratingFactor(input) {
642
- const {
643
- maxAllowedTempDegC: tMax,
644
- ambientTempDegC: tAmbient,
645
- baseAmbientTempDegC: tBaseOpt
646
- } = input;
647
- const tBase = tBaseOpt ?? DEFAULT_BASE_AMBIENT_TEMP_DEG_C;
648
- if (!(input.baseAmpacityA > 0)) {
649
- throw new RangeError(`\u57FA\u51C6\u8F7D\u6D41\u91CF\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${input.baseAmpacityA} A`);
650
- }
651
- if (!(tMax > tBase)) {
652
- throw new RangeError(
653
- `\u5141\u8BB8\u6E29\u5EA6 ${tMax} \u2103 \u5FC5\u987B\u9AD8\u4E8E\u57FA\u51C6\u73AF\u5883\u6E29\u5EA6 ${tBase} \u2103`
654
- );
655
- }
656
- if (!(tAmbient < tMax)) {
657
- throw new RangeError(
658
- `\u5B9E\u9645\u73AF\u5883\u6E29\u5EA6 ${tAmbient} \u2103 \u5DF2\u8FBE\u5230\u6216\u8D85\u8FC7\u5141\u8BB8\u6E29\u5EA6 ${tMax} \u2103\uFF0C\u65E0\u6CD5\u6301\u7EED\u8FD0\u884C`
659
- );
660
- }
661
- if (!(tAmbient >= -273.15)) {
662
- throw new RangeError(`\u73AF\u5883\u6E29\u5EA6\u4E0D\u80FD\u4F4E\u4E8E\u7EDD\u5BF9\u96F6\u5EA6\uFF0C\u6536\u5230 ${tAmbient} \u2103`);
663
- }
664
- return Math.sqrt((tMax - tAmbient) / (tMax - tBase));
665
- }
666
- function deratedAmpacityA(input) {
667
- return input.baseAmpacityA * ampacityDeratingFactor(input);
668
- }
669
- function shortCircuitMinSectionMM2(shortCircuitCurrentKA, clearingTimeS, thermalCoefficientC) {
670
- if (!(shortCircuitCurrentKA > 0)) {
671
- throw new RangeError(
672
- `\u77ED\u8DEF\u7535\u6D41\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${shortCircuitCurrentKA} kA`
673
- );
674
- }
675
- if (!(clearingTimeS > 0)) {
676
- throw new RangeError(`\u5207\u9664\u65F6\u95F4\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${clearingTimeS} s`);
677
- }
678
- if (!(thermalCoefficientC > 0)) {
679
- throw new RangeError(
680
- `\u70ED\u7A33\u5B9A\u7CFB\u6570\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${thermalCoefficientC} A\xB7\u221As/mm\xB2`
681
- );
682
- }
683
- const iA = shortCircuitCurrentKA * 1e3;
684
- return iA * Math.sqrt(clearingTimeS) / thermalCoefficientC;
685
- }
686
- function shortCircuitCheck(input) {
687
- const minSectionMM2 = shortCircuitMinSectionMM2(
688
- input.shortCircuitCurrentKA,
689
- input.clearingTimeS,
690
- input.thermalCoefficientC
691
- );
692
- const verdict = input.selectedSectionMM2 === null ? "not-assessed" : input.selectedSectionMM2 >= minSectionMM2 ? "pass" : "fail";
693
- return { minSectionMM2, selectedSectionMM2: input.selectedSectionMM2, verdict };
694
- }
695
200
 
696
- // src/wear/meta.ts
697
- var wearMeta = {
698
- name: "\u63A5\u89E6\u7EBF\u78E8\u8017\u7387",
699
- nameEn: "Contact Wire Wear Ratio",
700
- summary: "\u6839\u636E\u539F\u622A\u9762\u79EF\u4E0E\u5B9E\u6D4B\u6B8B\u5B58\u622A\u9762\u8BA1\u7B97\u78E8\u8017\u7387 \u03B7\uFF0C\u03B7 > 20% \u65F6\u5EFA\u8BAE\u66F4\u6362\u63A5\u89E6\u7EBF\u3002",
701
- formula: [
702
- "\u78E8\u8017\u7387\uFF1A\u03B7 = (A\u2080 \u2212 A) / A\u2080 \xD7 100%",
703
- "\u5224\u5B9A\u51C6\u5219\uFF1A\u03B7 > 20% \u5EFA\u8BAE\u66F4\u6362\u63A5\u89E6\u7EBF",
704
- "\u6B8B\u5F84\u6362\u7B97\uFF08\u8FD1\u4F3C\uFF09\uFF1AA = \u03C0\xB7d\xB2 / 4"
705
- ],
706
- references: [
707
- "\u539F\u622A\u9762\u79EF\u6765\u6E90 TB/T 2809-2017\u300A\u7535\u6C14\u5316\u94C1\u8DEF\u7528\u94DC\u53CA\u94DC\u5408\u91D1\u63A5\u89E6\u7EBF\u300B",
708
- "\u6807\u79F0\u622A\u9762 120/150 mm\xB2 \u4E3A\u540D\u4E49\u503C\uFF0C\u6807\u51C6\u53E6\u5217\u8BA1\u7B97\u622A\u9762 121/151 mm\xB2\uFF0C\u5B9E\u9645\u622A\u9762\u7531 TB/T 2809-2017 \u88682 \u5916\u5F62\u5C3A\u5BF8\u516C\u5DEE\u5E26\u63A7\u5236",
709
- "\u78E8\u8017\u66F4\u6362\u9608\u503C\u8BF7\u4EE5\u6700\u65B0\u7248\u8FD0\u7EF4\u89C4\u7A0B\u4E3A\u51C6"
710
- ],
711
- scope: [
712
- "\u6B8B\u5F84\u6362\u7B97\u6309\u5706\u622A\u9762\u8FD1\u4F3C\uFF0C\u63A5\u89E6\u7EBF\u5B9E\u9645\u4E3A\u68AF\u5F62\u622A\u9762\uFF0C\u6362\u7B97\u503C\u5B58\u5728\u7CFB\u7EDF\u6027\u504F\u5DEE",
713
- "\u672A\u8003\u8651\u78E8\u8017\u6CBF\u8DE8\u8DDD\u65B9\u5411\u7684\u4E0D\u5747\u5300\u5206\u5E03",
714
- "\u5B9E\u9645\u4EA7\u54C1\u622A\u9762\u4EE5\u51FA\u5382\u68C0\u9A8C\u5355\u4E3A\u51C6"
715
- ],
716
- disclaimer: "\u672C\u5DE5\u5177\u7ED3\u679C\u4EC5\u4F9B\u53C2\u8003\uFF0C\u5DE5\u7A0B\u5E94\u7528\u4EE5\u8BBE\u8BA1\u6587\u4EF6\u4E3A\u51C6\u3002\u8BE6\u89C1 DISCLAIMER.md\u3002",
717
- online: "https://www.itswe.com/calculator/wear/"
718
- };
719
201
 
720
- // src/wear/index.ts
721
- var DEFAULT_REPLACEMENT_THRESHOLD_PERCENT = 20;
722
- var NOMINAL_SECTION_MM2 = {
723
- "CTHM-120": 120,
724
- "CTHM-150": 150,
725
- "CTHA-120": 120,
726
- "CTHA-150": 150,
727
- "CTHS-120": 120,
728
- "CTHS-150": 150
729
- };
730
- function sectionFromDiameterMM2(diameterMM) {
731
- if (!(diameterMM > 0)) {
732
- throw new RangeError(`\u6B8B\u5F84\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${diameterMM} mm`);
733
- }
734
- return Math.PI * diameterMM * diameterMM / 4;
735
- }
736
- function wearRatio(input) {
737
- const { originalSectionMM2: a0 } = input;
738
- if (!(a0 > 0)) {
739
- throw new RangeError(`\u539F\u622A\u9762\u79EF\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${a0} mm\xB2`);
740
- }
741
- const residualSectionMM2 = input.mode === "area" ? input.residualSectionMM2 : sectionFromDiameterMM2(input.residualDiameterMM);
742
- if (!(residualSectionMM2 > 0)) {
743
- throw new RangeError(`\u6B8B\u622A\u9762\u79EF\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${residualSectionMM2} mm\xB2`);
744
- }
745
- if (residualSectionMM2 > a0) {
746
- throw new RangeError(
747
- `\u6B8B\u622A\u9762\u79EF ${residualSectionMM2.toFixed(2)} mm\xB2 \u4E0D\u80FD\u5927\u4E8E\u539F\u622A\u9762\u79EF ${a0} mm\xB2`
748
- );
749
- }
750
- const thresholdPercent = input.replacementThresholdPercent ?? DEFAULT_REPLACEMENT_THRESHOLD_PERCENT;
751
- if (!(thresholdPercent > 0)) {
752
- throw new RangeError(`\u66F4\u6362\u9608\u503C\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${thresholdPercent}%`);
753
- }
754
- const sectionLossMM2 = a0 - residualSectionMM2;
755
- const wearPercent = sectionLossMM2 / a0 * 100;
756
- return {
757
- originalSectionMM2: a0,
758
- residualSectionMM2,
759
- sectionLossMM2,
760
- wearPercent,
761
- thresholdPercent,
762
- verdict: wearPercent > thresholdPercent ? "replace" : "keep"
763
- };
764
- }
765
- function nominalSectionMM2(model) {
766
- return NOMINAL_SECTION_MM2[model];
767
- }
768
202
 
769
- // src/copper/meta.ts
770
- var copperMeta = {
771
- name: "\u63A5\u89E6\u7EBF\u53C2\u6570\u901F\u67E5",
772
- nameEn: "Contact Wire Parameter Lookup",
773
- summary: "\u5185\u7F6E CTHM / CTHA / CTHS \u7CFB\u5217 120/150 mm\xB2 \u63A5\u89E6\u7EBF\u53C2\u6570\u8868\uFF0C\u6309\u957F\u5EA6\u4E0E\u73AF\u5883\u6E29\u5EA6\u7ED9\u51FA\u603B\u91CD\u91CF\u4E0E\u6E29\u5EA6\u4FEE\u6B63\u7535\u963B\u3002",
774
- formula: [
775
- "\u7535\u963B\u6E29\u5EA6\u4FEE\u6B63\uFF08\u03B1 = 0.00393 /\u2103\uFF09\uFF1Ar_T = r\u2082\u2080\xB7[1 + \u03B1\xB7(T \u2212 20)]",
776
- "\u603B\u91CD\u91CF\uFF1AW = w\u2080 \xD7 l\uFF08w\u2080 \u5355\u4F4D\u91CD\u91CF kg/km\uFF0Cl \u957F\u5EA6 km\uFF09"
777
- ],
778
- references: [
779
- "\u5185\u7F6E\u53C2\u6570\u8868\u6765\u6E90 TB/T 2809-2017\u300A\u7535\u6C14\u5316\u94C1\u8DEF\u7528\u94DC\u53CA\u94DC\u5408\u91D1\u63A5\u89E6\u7EBF\u300B\uFF082018-05-01 \u5B9E\u65BD\uFF09",
780
- "\u5355\u4F4D\u91CD\u91CF\u4E3A\u6807\u79F0\u503C",
781
- "\u8F7D\u6D41\u91CF\u4E3A 150\u2103 \u6301\u7EED\u503C\uFF0C\u5BA4\u5185/\u5BA4\u5916\u53CC\u53E3\u5F84\u6309\u6807\u51C6\u88685",
782
- "r\u2082\u2080 \u9664 CTHM-120 \u53D6\u7ED9\u5B9A\u503C\u5916\uFF0C\u5747\u6309\u5BFC\u7535\u7387\u53CD\u7B97\u4F30\u7B97\uFF08IACS \u6807\u51C6\u7535\u963B\u7387 0.017241 \u03A9\xB7mm\xB2/m \xF7 \u5BFC\u7535\u7387 \xF7 \u622A\u9762\u79EF\uFF1B0.017241 = 1/58\uFF09",
783
- "\u6B63\u5F0F\u5DE5\u7A0B\u4EE5\u4EA7\u54C1\u6807\u51C6\u4E0E\u51FA\u5382\u68C0\u9A8C\u5355\u4E3A\u51C6"
784
- ],
785
- scope: [
786
- "\u6E29\u5EA6\u4FEE\u6B63\u4EC5\u8986\u76D6\u7535\u963B\uFF0C\u672A\u4FEE\u6B63\u5355\u4F4D\u91CD\u91CF\u4E0E\u8F7D\u6D41\u91CF",
787
- "\u9002\u7528\u6E29\u5EA6 \u221240 ~ 90 \u2103",
788
- "\u8F7D\u6D41\u91CF\u4E3A 150\u2103 \u5141\u8BB8\u6E29\u5EA6\u4E0B\u7684\u6301\u7EED\u503C\uFF0C\u672A\u505A\u73AF\u5883\u6E29\u5EA6\u4FEE\u6B63"
789
- ],
790
- disclaimer: "\u672C\u5DE5\u5177\u7ED3\u679C\u4EC5\u4F9B\u53C2\u8003\uFF0C\u5DE5\u7A0B\u5E94\u7528\u4EE5\u8BBE\u8BA1\u6587\u4EF6\u4E3A\u51C6\u3002\u8BE6\u89C1 DISCLAIMER.md\u3002",
791
- online: "https://www.itswe.com/calculator/copper/"
792
- };
793
203
 
794
- // src/copper/index.ts
795
- var TB2809_WIRE_PARAMS = {
796
- "CTHM-120": {
797
- unitWeightKgPerKm: 1082,
798
- r20OhmPerKm: 0.2113,
799
- ampacityIndoor150A: 430,
800
- ampacityOutdoor150A: 560,
801
- note: "\u53D6\u6807\u51C6 CTMH \u884C\uFF08\u9AD8\u5F3A\u5EA6\u94DC\u9541\u5408\u91D1\uFF09\uFF0C\u03C1 \u6309\u6807\u51C6\u4E0A\u9650 0.02535 \u8BA1\u7B97"
802
- },
803
- "CTHM-150": {
804
- unitWeightKgPerKm: 1350,
805
- r20OhmPerKm: 0.169,
806
- ampacityIndoor150A: 500,
807
- ampacityOutdoor150A: 650,
808
- note: "\u53D6\u6807\u51C6 CTMH \u884C\uFF08\u9AD8\u5F3A\u5EA6\u94DC\u9541\u5408\u91D1\uFF09"
809
- },
810
- "CTHA-120": {
811
- unitWeightKgPerKm: 1070,
812
- r20OhmPerKm: 0.1481,
813
- ampacityIndoor150A: 515,
814
- ampacityOutdoor150A: 680,
815
- note: "\u53D6\u6807\u51C6 CTA \u884C\uFF08\u94DC\u94F6\u5408\u91D1\uFF09\uFF0C\u03C1 \u2264 0.01777"
816
- },
817
- "CTHA-150": {
818
- unitWeightKgPerKm: 1330,
819
- r20OhmPerKm: 0.1185,
820
- ampacityIndoor150A: 620,
821
- ampacityOutdoor150A: 785,
822
- note: "\u53D6\u6807\u51C6 CTA \u884C\uFF08\u94DC\u94F6\u5408\u91D1\uFF09"
823
- },
824
- "CTHS-120": {
825
- unitWeightKgPerKm: 1080,
826
- r20OhmPerKm: 0.1916,
827
- ampacityIndoor150A: 515,
828
- ampacityOutdoor150A: 680,
829
- note: "\u53D6\u6807\u51C6 CTS \u884C\uFF08\u94DC\u9521\u5408\u91D1\uFF09\uFF0C\u8F7D\u6D41\u91CF\u6309 CTS \u884C\u53D6\u503C"
830
- },
831
- "CTHS-150": {
832
- unitWeightKgPerKm: 1345,
833
- r20OhmPerKm: 0.1533,
834
- ampacityIndoor150A: 620,
835
- ampacityOutdoor150A: 790,
836
- note: "\u53D6\u6807\u51C6 CTS \u884C\uFF08\u94DC\u9521\u5408\u91D1\uFF09\uFF0C\u8F7D\u6D41\u91CF\u6309 CTS \u884C\u53D6\u503C"
837
- }
838
- };
839
- function wireLookup(input) {
840
- const { model, lengthKm, ambientTempDegC } = input;
841
- const params = TB2809_WIRE_PARAMS[model];
842
- if (params === void 0) {
843
- throw new RangeError(`\u672A\u77E5\u578B\u53F7\uFF1A${model}`);
844
- }
845
- if (!(lengthKm > 0)) {
846
- throw new RangeError(`\u957F\u5EA6\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${lengthKm} km`);
847
- }
848
- if (ambientTempDegC < -40 || ambientTempDegC > 90) {
849
- throw new RangeError(`\u9002\u7528\u6E29\u5EA6\u4E3A \u221240 ~ 90 \u2103\uFF0C\u6536\u5230 ${ambientTempDegC} \u2103`);
850
- }
851
- const rT = resistanceAtTempOhmPerKm(params.r20OhmPerKm, ambientTempDegC);
852
- return {
853
- model,
854
- ...params,
855
- totalWeightKg: params.unitWeightKgPerKm * lengthKm,
856
- rTOhmPerKm: rT,
857
- totalResistanceOhm: rT * lengthKm
858
- };
859
- }
860
204
 
861
- // src/stroke/meta.ts
862
- var strokeMeta = {
863
- name: "\u8865\u507F\u884C\u7A0B",
864
- nameEn: "Compensation Stroke",
865
- summary: "\u6309\u6E29\u5EA6\u4F38\u7F29\u91CF\u516C\u5F0F\u8BA1\u7B97\u951A\u6BB5\u7EBF\u7D22\u4F38\u7F29\u91CF\u4E0E\u8865\u507F\u88C5\u7F6E\u6240\u9700\u884C\u7A0B\uFF0C\u53EF\u5BF9\u7167\u88C5\u7F6E\u8BB8\u7528\u884C\u7A0B\u6821\u6838\u3002",
866
- formula: [
867
- "\u6E29\u5EA6\u4F38\u7F29\u91CF\uFF1A\u0394L = \u03B1\xB7L\xB7\u0394t",
868
- "\u8865\u507F\u884C\u7A0B\u8BBE\u8BA1\u503C\uFF08\u542B\u88D5\u5EA6\uFF09\uFF1AS = n\xB7\u0394L + S\u2080"
869
- ],
870
- references: [
871
- "\u5168\u8865\u507F\u951A\u6BB5\u63A5\u89E6\u7EBF\u4E0E\u627F\u529B\u7D22\u987B\u5206\u522B\u8BA1\u7B97\uFF08\u5404\u81EA \u03B1/L \u4E0D\u540C\uFF09\uFF1B\u534A\u8865\u507F\u4EC5\u8BA1\u7B97\u63A5\u89E6\u7EBF\u4FA7",
872
- "\u4F20\u52A8\u6BD4\u5E38\u89C1\u89C4\u683C\uFF1A\u6ED1\u8F6E\u7EC4 1:2/1:3\uFF08\u4E3B\u6D41\uFF09\u30011:4 \u89C1\u4E8E\u6559\u6750\u6848\u4F8B\uFF0C\u65E0\u6807\u51C6\u7EDF\u4E00\u6863\u4F4D\u8868",
873
- "\u5B89\u88C5\u88D5\u5EA6\u53EF\u53C2\u7167\u8865\u507F\u5668 a/b \u503C\uFF1A\u4EFB\u4F55\u60C5\u51B5\u4E0B\u4E0D\u5C0F\u4E8E 200mm\uFF08\u539F\u94C1\u8FD0\u30142007\u301569\u53F7\u7B2C87\u6761\uFF0C\u5DF2\u7531\u94C1\u603B\u8FD0\u30142017\u30159\u53F7\u627F\u63A5\uFF09\uFF1B\u8BBE\u8BA1\u53D6\u503C\u60EF\u4F8B\u4E0D\u5C0F\u4E8E 300mm\uFF0C\u5C5E\u6559\u6750/\u8BBE\u8BA1\u60EF\u4F8B\u800C\u975E\u89C4\u7A0B\u6761\u6B3E",
874
- "\u8865\u507F\u88C5\u7F6E\u4EA7\u54C1\u8981\u6C42\u89C1 TB/T 2075.12-2024\uFF08\u6ED1\u8F6E\u8865\u507F\u88C5\u7F6E\uFF09\u3001TB/T 2075.13-2024\uFF08\u68D8\u8F6E\u8865\u507F\u88C5\u7F6E\uFF09\u4E0E TB/T 2073-2020\uFF08\u96F6\u90E8\u4EF6\u6280\u672F\u6761\u4EF6\uFF09"
875
- ],
876
- scope: [
877
- "\u951A\u6BB5\u957F\u5EA6 L \u4E3A\u4E24\u7AEF\u951A\u56FA\u70B9\u4E4B\u95F4\u957F\u5EA6",
878
- "\u8BBE\u8BA1\u6E29\u5DEE \u0394t \u4E3A\u6700\u9AD8\u4E0E\u6700\u4F4E\u8BBE\u8BA1\u6E29\u5EA6\u4E4B\u5DEE",
879
- "\u94DC\u5408\u91D1\u7EBF\u81A8\u80C0\u7CFB\u6570\u7EA6 1.7\xD710\u207B\u2075/\u2103\uFF08EN 50149 \u94DC\u9521\u63A5\u89E6\u7EBF\u6570\u636E\u8868\uFF09",
880
- "\u5168\u8865\u507F\u951A\u6BB5\u627F\u529B\u7D22\u4FA7\u987B\u53E6\u884C\u8BA1\u7B97",
881
- "\u53C2\u6570\u53D6\u503C\u4EE5\u8BBE\u8BA1\u89C4\u7A0B\u4E3A\u51C6"
882
- ],
883
- disclaimer: "\u672C\u5DE5\u5177\u7ED3\u679C\u4EC5\u4F9B\u53C2\u8003\uFF0C\u5DE5\u7A0B\u5E94\u7528\u4EE5\u8BBE\u8BA1\u6587\u4EF6\u4E3A\u51C6\u3002\u8BE6\u89C1 DISCLAIMER.md\u3002",
884
- online: "https://www.itswe.com/calculator/stroke/"
885
- };
886
205
 
887
- // src/stroke/index.ts
888
- var TRANSMISSION_RATIOS = [2, 3, 4];
889
- var MIN_MARGIN_MM = 200;
890
- var CONVENTIONAL_MARGIN_MM = 300;
891
- function elongationMM(expansionPerDegC, anchorLengthM, tempRangeDegC) {
892
- if (!(expansionPerDegC > 0)) {
893
- throw new RangeError(`\u7EBF\u81A8\u80C0\u7CFB\u6570\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${expansionPerDegC} 1/\u2103`);
894
- }
895
- if (!(anchorLengthM > 0)) {
896
- throw new RangeError(`\u951A\u6BB5\u957F\u5EA6\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${anchorLengthM} m`);
897
- }
898
- if (!(tempRangeDegC > 0)) {
899
- throw new RangeError(`\u8BBE\u8BA1\u6E29\u5DEE\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${tempRangeDegC} \u2103`);
900
- }
901
- return expansionPerDegC * anchorLengthM * tempRangeDegC * 1e3;
902
- }
903
- function requiredStrokeMM(elongation, ratio, marginMM) {
904
- if (!(elongation >= 0)) {
905
- throw new RangeError(`\u4F38\u7F29\u91CF\u4E0D\u80FD\u4E3A\u8D1F\uFF0C\u6536\u5230 ${elongation} mm`);
906
- }
907
- if (!(marginMM >= 0)) {
908
- throw new RangeError(`\u5B89\u88C5\u88D5\u5EA6\u4E0D\u80FD\u4E3A\u8D1F\uFF0C\u6536\u5230 ${marginMM} mm`);
909
- }
910
- return ratio * elongation + marginMM;
911
- }
912
- function strokeCheck(input) {
913
- const { transmissionRatio, allowableStrokeMM } = input;
914
- if (!TRANSMISSION_RATIOS.includes(transmissionRatio)) {
915
- throw new RangeError(
916
- `\u4F20\u52A8\u6BD4\u5E94\u4E3A ${TRANSMISSION_RATIOS.map((r) => `1:${r}`).join(" / ")}\uFF0C\u6536\u5230 1:${transmissionRatio}`
917
- );
918
- }
919
- if (!(input.marginMM >= 0)) {
920
- throw new RangeError(`\u5B89\u88C5\u88D5\u5EA6\u4E0D\u80FD\u4E3A\u8D1F\uFF0C\u6536\u5230 ${input.marginMM} mm`);
921
- }
922
- const elongation = elongationMM(
923
- input.expansionPerDegC,
924
- input.anchorLengthM,
925
- input.tempRangeDegC
926
- );
927
- const perDegreeMM = elongation / input.tempRangeDegC;
928
- const required = requiredStrokeMM(elongation, transmissionRatio, input.marginMM);
929
- if (allowableStrokeMM === null) {
930
- return {
931
- perDegreeMM,
932
- elongationMM: elongation,
933
- requiredStrokeMM: required,
934
- allowableStrokeMM: null,
935
- marginMM: null,
936
- verdict: "not-assessed"
937
- };
938
- }
939
- if (!(allowableStrokeMM > 0)) {
940
- throw new RangeError(`\u88C5\u7F6E\u8BB8\u7528\u884C\u7A0B\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${allowableStrokeMM} mm`);
941
- }
942
- return {
943
- perDegreeMM,
944
- elongationMM: elongation,
945
- requiredStrokeMM: required,
946
- allowableStrokeMM,
947
- marginMM: allowableStrokeMM - required,
948
- verdict: required <= allowableStrokeMM ? "pass" : "fail"
949
- };
950
- }
951
206
 
952
- // src/wavespeed/meta.ts
953
- var wavespeedMeta = {
954
- name: "\u6CE2\u901F\u5229\u7528\u7387",
955
- nameEn: "Wave Propagation Speed Utilisation",
956
- summary: "\u7531\u63A5\u89E6\u7EBF\u5F20\u529B\u4E0E\u7EBF\u5BC6\u5EA6\u6C42\u6CE2\u4F20\u64AD\u901F\u5EA6 c \u4E0E\u6CE2\u901F\u5229\u7528\u7387 \u03B2 = v/c\uFF0C\u7ED9\u51FA\u8DE8\u8DDD\u524D\u4E09\u9636\u56FA\u6709\u9891\u7387\u4E0E\u4E00\u9636\u5171\u632F\u8F66\u901F\u3002",
957
- formula: [
958
- "\u6CE2\u4F20\u64AD\u901F\u5EA6\uFF1Ac = \u221A(T/\u03C1)\uFF08T \u53D6 N\uFF0C\u03C1 \u53D6 kg/m\uFF09",
959
- "\u6CE2\u901F\u5229\u7528\u7387\uFF1A\u03B2 = v / c\uFF08v \u6362\u7B97\u4E3A m/s\uFF09",
960
- "\u4E24\u7AEF\u56FA\u5B9A\u5F26\u56FA\u6709\u9891\u7387\uFF1Af_n = n/(2L)\xB7\u221A(T/\u03C1)",
961
- "\u4E00\u9636\u5171\u632F\u8F66\u901F\uFF1Av_res = f\u2081\xB7L = c/2\uFF08\u8DE8\u8DDD\u901A\u8FC7\u9891\u7387 v/L \u4E0E f\u2081 \u76F8\u9047\uFF09"
962
- ],
963
- references: [
964
- "\u4F9D\u636E\u672C\u7AD9 \u5F13\u7F51\u5173\u7CFB / \u6CE2\u4F20\u64AD \u6761\u76EE",
965
- "\u03B2 \u8FBE 0.7 \u65F6\u63D0\u793A\u63A5\u8FD1\u5171\u632F\u533A\uFF0C\u8BE5\u9608\u503C\u5C5E\u5DE5\u7A0B\u7ECF\u9A8C\u503C\uFF0C\u8BF7\u4EE5\u8BBE\u8BA1\u6587\u4EF6\u4E3A\u51C6"
966
- ],
967
- scope: [
968
- "\u5F20\u529B T\uFF1A5 ~ 40 kN",
969
- "\u7EBF\u5BC6\u5EA6 \u03C1\uFF1A0.5 ~ 3 kg/m",
970
- "\u901F\u5EA6 v\uFF1A20 ~ 500 km/h",
971
- "\u8DE8\u8DDD l\uFF1A30 ~ 90 m",
972
- "\u4E24\u7AEF\u56FA\u5B9A\u5F26\u6A21\u578B\uFF0C\u672A\u8003\u8651\u5F39\u6027\u652F\u627F\u4E0E\u963B\u5C3C",
973
- "\u672A\u8003\u8651\u627F\u529B\u7D22\u4E0E\u540A\u5F26\u5BF9\u6CE2\u4F20\u64AD\u7684\u5F71\u54CD"
974
- ],
975
- disclaimer: "\u672C\u5DE5\u5177\u7ED3\u679C\u4EC5\u4F9B\u53C2\u8003\uFF0C\u5DE5\u7A0B\u5E94\u7528\u4EE5\u8BBE\u8BA1\u6587\u4EF6\u4E3A\u51C6\u3002\u8BE6\u89C1 DISCLAIMER.md\u3002",
976
- online: "https://www.itswe.com/calculator/wavespeed/"
977
- };
978
207
 
979
- // src/wavespeed/index.ts
980
- var DEFAULT_WARN_THRESHOLD = 0.7;
981
- function wavePropagationSpeedMPerS(tensionKN, linearMassKgPerM) {
982
- if (!(tensionKN > 0)) {
983
- throw new RangeError(`\u5F20\u529B\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${tensionKN} kN`);
984
- }
985
- if (!(linearMassKgPerM > 0)) {
986
- throw new RangeError(`\u7EBF\u5BC6\u5EA6\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${linearMassKgPerM} kg/m`);
987
- }
988
- return Math.sqrt(tensionKN * 1e3 / linearMassKgPerM);
989
- }
990
- function naturalFrequencyHz(n, spanM, waveSpeedMPerS) {
991
- if (!Number.isInteger(n) || n < 1) {
992
- throw new RangeError(`\u9636\u6B21\u5FC5\u987B\u4E3A\u6B63\u6574\u6570\uFF0C\u6536\u5230 ${n}`);
993
- }
994
- if (!(spanM > 0)) {
995
- throw new RangeError(`\u8DE8\u8DDD\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${spanM} m`);
996
- }
997
- if (!(waveSpeedMPerS > 0)) {
998
- throw new RangeError(`\u6CE2\u901F\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${waveSpeedMPerS} m/s`);
999
- }
1000
- return n / (2 * spanM) * waveSpeedMPerS;
1001
- }
1002
- function kmHToMPerS(speedKmH) {
1003
- return speedKmH / 3.6;
1004
- }
1005
- function waveSpeedCheck(input) {
1006
- const { tensionKN, linearMassKgPerM, speedKmH, spanM } = input;
1007
- if (!(speedKmH >= 0)) {
1008
- throw new RangeError(`\u901F\u5EA6\u4E0D\u80FD\u4E3A\u8D1F\uFF0C\u6536\u5230 ${speedKmH} km/h`);
1009
- }
1010
- if (!(spanM > 0)) {
1011
- throw new RangeError(`\u8DE8\u8DDD\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${spanM} m`);
1012
- }
1013
- const c = wavePropagationSpeedMPerS(tensionKN, linearMassKgPerM);
1014
- const beta = kmHToMPerS(speedKmH) / c;
1015
- const fns = [1, 2, 3].map((n) => naturalFrequencyHz(n, spanM, c));
1016
- const f1 = fns[0];
1017
- if (f1 === void 0) {
1018
- throw new Error("\u56FA\u6709\u9891\u7387\u8BA1\u7B97\u5931\u8D25");
1019
- }
1020
- const threshold = input.warnThreshold ?? DEFAULT_WARN_THRESHOLD;
1021
- return {
1022
- waveSpeedMPerS: c,
1023
- beta,
1024
- betaPercent: beta * 100,
1025
- naturalFrequenciesHz: fns,
1026
- resonanceSpeedKmH: f1 * spanM * 3.6,
1027
- warn: beta >= threshold
1028
- };
1029
- }
1030
208
 
1031
- // src/voltage-drop/meta.ts
1032
- var voltageDropMeta = {
1033
- name: "\u7535\u538B\u964D\u6821\u6838",
1034
- nameEn: "Voltage Drop Check",
1035
- summary: "\u6309\u6E29\u5EA6\u4FEE\u6B63\u540E\u7684\u5355\u4F4D\u7535\u963B\u8BA1\u7B97\u4F9B\u7535\u81C2\u7535\u538B\u635F\u5931 \u0394U \u4E0E\u672B\u7AEF\u7535\u538B\uFF0C\u7528\u4E8E\u4F9B\u7535\u81C2\u957F\u5EA6\u4E0E\u5BFC\u7EBF\u622A\u9762\u6821\u6838\u3002",
1036
- formula: [
1037
- "\u5355\u4F4D\u7535\u963B\u6E29\u5EA6\u4FEE\u6B63\uFF1Ar_T = r\u2082\u2080\xB7[1 + \u03B1\xB7(T \u2212 20)]\uFF08\u03B1 = 0.00393 /\u2103\uFF09",
1038
- "\u5E76\u8054 n \u8DEF\u65F6\uFF1Ar_T / n",
1039
- "\u7535\u538B\u635F\u5931\uFF1A\u0394U = I \xB7 r_T \xB7 L\uFF08r_T \u5355\u4F4D \u03A9/km\uFF0CL \u5355\u4F4D km\uFF09",
1040
- "\u672B\u7AEF\u7535\u538B\uFF1AU_end = U\u2080 \u2212 \u0394U\uFF1B\u538B\u964D\u7387 = \u0394U / U\u2080"
1041
- ],
1042
- references: [
1043
- "\u4F9D\u636E\u672C\u7AD9 \u4F9B\u7535\u8BA1\u7B97 / \u7535\u6C14\u8BBE\u8BA1 \u6761\u76EE",
1044
- "\u672B\u7AEF\u7535\u538B\u9650\u503C\uFF1A25kV \u4F53\u7CFB\u5E38\u6309 20kV \u638C\u63E1\uFF1B\u5B9E\u9645\u9650\u503C\u4EE5\u8BBE\u8BA1\u6587\u4EF6\u4E0E\u4F9B\u7535\u8BA1\u7B97\u4E66\u4E3A\u51C6"
1045
- ],
1046
- scope: [
1047
- "\u6BCD\u7EBF\u7535\u538B U\u2080\uFF1A20000 ~ 30000 V",
1048
- "\u6301\u7EED\u7535\u6D41 I\uFF1A10 ~ 3000 A",
1049
- "\u5355\u4F4D\u7535\u963B r\u2082\u2080\uFF1A0.05 ~ 1 \u03A9/km",
1050
- "\u4F9B\u7535\u81C2\u7B49\u6548\u957F\u5EA6 L\uFF1A1 ~ 60 km",
1051
- "\u73AF\u5883\u6E29\u5EA6\uFF1A\u221240 ~ 80 \u2103",
1052
- "\u5355\u56DE\u8DEF\u96C6\u4E2D\u8D1F\u8377\u6A21\u578B\uFF0C\u672A\u8003\u8651\u8D1F\u8377\u6CBF\u4F9B\u7535\u81C2\u5206\u5E03\u4E0E\u518D\u751F\u5236\u52A8"
1053
- ],
1054
- disclaimer: "\u672C\u5DE5\u5177\u7ED3\u679C\u4EC5\u4F9B\u53C2\u8003\uFF0C\u5DE5\u7A0B\u5E94\u7528\u4EE5\u8BBE\u8BA1\u6587\u4EF6\u4E3A\u51C6\u3002\u8BE6\u89C1 DISCLAIMER.md\u3002",
1055
- online: "https://www.itswe.com/calculator/voltage-drop/"
1056
- };
1057
209
 
1058
- // src/voltage-drop/index.ts
1059
- var DEFAULT_MIN_END_VOLTAGE_V = 2e4;
1060
- function voltageDropCheck(input) {
1061
- const { busVoltageV, currentA, r20OhmPerKm, feederLengthKm } = input;
1062
- if (!(busVoltageV > 0)) {
1063
- throw new RangeError(`\u6BCD\u7EBF\u7535\u538B\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${busVoltageV} V`);
1064
- }
1065
- if (!(currentA > 0)) {
1066
- throw new RangeError(`\u6301\u7EED\u7535\u6D41\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${currentA} A`);
1067
- }
1068
- if (!(feederLengthKm > 0)) {
1069
- throw new RangeError(`\u4F9B\u7535\u81C2\u957F\u5EA6\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${feederLengthKm} km`);
1070
- }
1071
- const parallelCount = input.parallelCount ?? 1;
1072
- if (!(parallelCount > 0) || !Number.isInteger(parallelCount)) {
1073
- throw new RangeError(`\u5E76\u8054\u5BFC\u7EBF\u6570\u5FC5\u987B\u4E3A\u6B63\u6574\u6570\uFF0C\u6536\u5230 ${parallelCount}`);
1074
- }
1075
- const minEndVoltageV = input.minEndVoltageV ?? DEFAULT_MIN_END_VOLTAGE_V;
1076
- const rT = resistanceAtTempOhmPerKm(r20OhmPerKm, input.tempDegC ?? 25) / parallelCount;
1077
- const voltageDropV = currentA * rT * feederLengthKm;
1078
- const endVoltageV = busVoltageV - voltageDropV;
1079
- return {
1080
- rTOhmPerKm: rT,
1081
- voltageDropV,
1082
- endVoltageV,
1083
- dropPercent: voltageDropV / busVoltageV * 100,
1084
- passes: endVoltageV >= minEndVoltageV
1085
- };
1086
- }
1087
210
 
1088
- // src/curve-stagger/meta.ts
1089
- var curveStaggerMeta = {
1090
- name: "\u66F2\u7EBF\u62C9\u51FA\u503C\u6821\u6838",
1091
- nameEn: "Curve Stagger Clearance Check",
1092
- summary: "\u8BA1\u7B97\u66F2\u7EBF\u533A\u6BB5\u8DE8\u4E2D\u7EFC\u5408\u504F\u79FB\uFF08\u62C9\u51FA\u503C\u5747\u503C\u3001\u66F2\u7EBF\u77E2\u5EA6\u3001\u98CE\u504F\u7684\u7EC4\u5408\uFF09\uFF0C\u4E0E\u53D7\u7535\u5F13\u5BB9\u8BB8\u504F\u79FB\u6BD4\u8F83\u7ED9\u51FA\u5224\u5B9A\u3002",
1093
- formula: [
1094
- "\u5E73\u5747\u62C9\u51FA\u503C\uFF1A\u0101 = (a\u2081 + a\u2082) / 2",
1095
- "\u66F2\u7EBF\u77E2\u5EA6\uFF1Ac = l\xB2 / (8R)\uFF08\u76F4\u7EBF\u6BB5 R = \u221E \u65F6 c = 0\uFF09",
1096
- "\u8D85\u9AD8\u6A2A\u79FB\uFF1A\u03B4 = H\xB7h / l\u2080",
1097
- "\u8DE8\u4E2D\u98CE\u504F\uFF1Ap_w = (\xBD\xB7\u03C1\xB7v\xB2\xB7d\xB7\u03B1) \xB7 l\xB2 / (8T)\uFF08\u53D6\u98CE\u5411\u5782\u76F4\u7EBF\u8DEF\u7684\u6700\u4E0D\u5229\u5DE5\u51B5\uFF09",
1098
- "\u7EFC\u5408\u504F\u79FB\uFF1Ae = max(|\u0101 + c|, |\u0101 \u2212 c|) + p_w \u2264 [e]"
1099
- ],
1100
- references: [
1101
- "\u4F9D\u636E\u672C\u7AD9 \u62C9\u51FA\u503C\u8BBE\u8BA1 \u6761\u76EE",
1102
- "\u98CE\u504F\u53D6\u98CE\u5411\u5782\u76F4\u7EBF\u8DEF\u7684\u6700\u4E0D\u5229\u5DE5\u51B5\uFF08sin\xB2\u03B8 = 1\uFF09",
1103
- "\u5BB9\u8BB8\u504F\u79FB [e] \u6309\u53D7\u7535\u5F13\u52A8\u6001\u5305\u7EDC\u7EBF\u53D6\u503C\uFF0C\u4EE5\u8BBE\u8BA1\u6587\u4EF6\u4E3A\u51C6"
1104
- ],
1105
- scope: [
1106
- "\u66F2\u7EBF\u534A\u5F84 R\uFF1A0 ~ 20000 m\uFF08\u76F4\u7EBF\u4F20 0 \u6216 Infinity\uFF09",
1107
- "\u8DE8\u8DDD l\uFF1A20 ~ 80 m",
1108
- "\u62C9\u51FA\u503C a\u2081/a\u2082\uFF1A\u22120.6 ~ 0.6 m\uFF08\u66F2\u7EBF\u5185\u4FA7\u4E3A\u6B63\uFF09",
1109
- "\u98CE\u901F v\uFF1A0 ~ 60 m/s",
1110
- "\u7EBF\u7D22\u76F4\u5F84 d\uFF1A1 ~ 30 mm",
1111
- "\u98CE\u8F7D\u4F53\u578B\u7CFB\u6570 \u03B1\uFF1A0.5 ~ 2",
1112
- "\u5F20\u529B T\uFF1A5 ~ 40 kN",
1113
- "\u6ED1\u677F\u9762\u8DDD\u8F68\u9762 H\uFF1A4 ~ 8 m\uFF1B\u5916\u8F68\u8D85\u9AD8 h\uFF1A0 ~ 0.25 m\uFF1B\u8F68\u8DDD l\u2080 \u9ED8\u8BA4 1.435 m",
1114
- "\u26A0\uFE0F \u7AD9\u70B9\u6E90\u7801\u7684 JSDoc \u5199\u660E\u7EFC\u5408\u504F\u79FB\u542B\u8D85\u9AD8\u6A2A\u79FB\u9879 \u2213\u03B4\uFF0C\u4F46\u5B9E\u73B0\u4E2D \u03B4 \u4EC5\u8BA1\u7B97\u8FD4\u56DE\u3001\u672A\u53C2\u4E0E e \u7684\u5408\u6210\u3002\u672C\u5E93\u6309\u5B9E\u73B0\u884C\u4E3A\u5BF9\u9F50\uFF0C\u8BE6\u89C1\u6D4B\u8BD5\u4E2D\u7684\u8BF4\u660E"
1115
- ],
1116
- disclaimer: "\u672C\u5DE5\u5177\u7ED3\u679C\u4EC5\u4F9B\u53C2\u8003\uFF0C\u5DE5\u7A0B\u5E94\u7528\u4EE5\u8BBE\u8BA1\u6587\u4EF6\u4E3A\u51C6\u3002\u8BE6\u89C1 DISCLAIMER.md\u3002",
1117
- online: "https://www.itswe.com/calculator/curve-stagger/"
1118
- };
1119
211
 
1120
- // src/curve-stagger/index.ts
1121
- var STANDARD_GAUGE_M = 1.435;
1122
- var DEFAULT_PANTOGRAPH_HEIGHT_M = 6;
1123
- function versineM(spanM, curveRadiusM) {
1124
- if (!(spanM > 0)) {
1125
- throw new RangeError(`\u8DE8\u8DDD\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${spanM} m`);
1126
- }
1127
- if (!(curveRadiusM > 0) || !Number.isFinite(curveRadiusM)) {
1128
- return 0;
1129
- }
1130
- return spanM * spanM / (8 * curveRadiusM);
1131
- }
1132
- function cantShiftM(cantM, pantographHeightM = DEFAULT_PANTOGRAPH_HEIGHT_M, gaugeM = STANDARD_GAUGE_M) {
1133
- if (!(cantM >= 0)) {
1134
- throw new RangeError(`\u5916\u8F68\u8D85\u9AD8\u4E0D\u80FD\u4E3A\u8D1F\uFF0C\u6536\u5230 ${cantM} m`);
1135
- }
1136
- if (!(pantographHeightM > 0)) {
1137
- throw new RangeError(`\u6ED1\u677F\u9762\u8DDD\u8F68\u9762\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${pantographHeightM} m`);
1138
- }
1139
- if (!(gaugeM > 0)) {
1140
- throw new RangeError(`\u8F68\u8DDD\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${gaugeM} m`);
1141
- }
1142
- return pantographHeightM * cantM / gaugeM;
1143
- }
1144
- function curveStaggerCheck(input) {
1145
- const { spanM, stagger1M, stagger2M, wireDiameterM, dragCoefficient, tensionN } = input;
1146
- if (!(tensionN > 0)) {
1147
- throw new RangeError(`\u5F20\u529B\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${tensionN} N`);
1148
- }
1149
- if (!(wireDiameterM > 0)) {
1150
- throw new RangeError(`\u7EBF\u7D22\u76F4\u5F84\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${wireDiameterM} m`);
1151
- }
1152
- if (!(dragCoefficient > 0)) {
1153
- throw new RangeError(`\u98CE\u8F7D\u4F53\u578B\u7CFB\u6570\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${dragCoefficient}`);
1154
- }
1155
- if (!(input.windSpeedMPerS >= 0)) {
1156
- throw new RangeError(`\u98CE\u901F\u4E0D\u80FD\u4E3A\u8D1F\uFF0C\u6536\u5230 ${input.windSpeedMPerS} m/s`);
1157
- }
1158
- if (!(input.allowableOffsetM > 0)) {
1159
- throw new RangeError(`\u5BB9\u8BB8\u504F\u79FB\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${input.allowableOffsetM} m`);
1160
- }
1161
- const meanStaggerM = (stagger1M + stagger2M) / 2;
1162
- const c = versineM(spanM, input.curveRadiusM);
1163
- const delta = cantShiftM(
1164
- input.cantM ?? 0,
1165
- input.pantographHeightM ?? DEFAULT_PANTOGRAPH_HEIGHT_M,
1166
- input.gaugeM ?? STANDARD_GAUGE_M
1167
- );
1168
- const rhoAir = 1.225;
1169
- const windLoadNPerM2 = 0.5 * rhoAir * input.windSpeedMPerS * input.windSpeedMPerS * wireDiameterM * dragCoefficient;
1170
- const pw = windLoadNPerM2 * spanM * spanM / (8 * tensionN);
1171
- const offsetPlusM = Math.abs(meanStaggerM + c) + pw;
1172
- const offsetMinusM = Math.abs(meanStaggerM - c) + pw;
1173
- const maxOffsetM = Math.max(offsetPlusM, offsetMinusM);
1174
- return {
1175
- meanStaggerM,
1176
- versineM: c,
1177
- cantShiftM: delta,
1178
- windOffsetM: pw,
1179
- offsetPlusM,
1180
- offsetMinusM,
1181
- maxOffsetM,
1182
- passes: maxOffsetM <= input.allowableOffsetM
1183
- };
1184
- }
1185
212
 
1186
- // src/icing/meta.ts
1187
- var icingMeta = {
1188
- name: "\u8986\u51B0\u8377\u8F7D\u6821\u6838",
1189
- nameEn: "Ice Load Check",
1190
- summary: "\u6309\u51B0\u7B52\u6A21\u578B\u8BA1\u7B97\u8986\u51B0\u8377\u8F7D\uFF0C\u7ED9\u51FA\u8986\u51B0\u540E\u7684\u603B\u5782\u76F4\u8377\u8F7D\u3001\u5F1B\u5EA6\u53CA\u76F8\u5BF9\u65E0\u51B0\u5DE5\u51B5\u7684\u589E\u5E45\u3002",
1191
- formula: [
1192
- "\u51B0\u7B52\u6A21\u578B\u51B0\u91CD\uFF1Ag_ice = \u03C1_ice \xB7 g\u2080 \xB7 \u03C0 \xB7 b \xB7 (d + b)",
1193
- "\u8986\u51B0\u540E\u603B\u5782\u76F4\u8377\u8F7D\uFF1Ag_total = g_self + g_ice",
1194
- "\u65E0\u51B0\u5F1B\u5EA6\uFF1Af\u2080 = g_self\xB7l\xB2 / (8T)",
1195
- "\u8986\u51B0\u5F1B\u5EA6\uFF1Af_ice = g_total\xB7l\xB2 / (8T)",
1196
- "\u5F1B\u5EA6\u589E\u5E45\uFF1A(f_ice / f\u2080 \u2212 1) \xD7 100%"
1197
- ],
1198
- references: [
1199
- "\u4F9D\u636E\u672C\u7AD9 \u8986\u51B0\u8377\u8F7D / \u8377\u8F7D\u8BA1\u7B97 \u6761\u76EE",
1200
- "\u51B0\u5BC6\u5EA6\u9ED8\u8BA4 900 kg/m\xB3\uFF0C\u8F7B\u8986\u51B0\u5730\u533A\u53EF\u53D6\u66F4\u5C0F\u503C\uFF0C\u4EE5\u5F53\u5730\u6C14\u8C61\u8D44\u6599\u4E3A\u51C6",
1201
- "\u5747\u5300\u51B0\u7B52\u5047\u8BBE\uFF0C\u672A\u8003\u8651\u4E0D\u89C4\u5219\u8986\u51B0\u5F62\u6001"
1202
- ],
1203
- scope: [
1204
- "\u7EBF\u7D22\u76F4\u5F84 d\uFF1A1 ~ 40 mm",
1205
- "\u8986\u51B0\u539A\u5EA6 b\uFF1A0 ~ 50 mm\uFF080 \u8868\u793A\u65E0\u51B0\uFF09",
1206
- "\u5F20\u529B T\uFF1A1 ~ 40 kN",
1207
- "\u8DE8\u8DDD l\uFF1A10 ~ 90 m",
1208
- "\u7EBF\u7D22\u81EA\u91CD g_self\uFF1A1 ~ 60 N/m",
1209
- "\u51B0\u5BC6\u5EA6 \u03C1_ice\uFF1A500 ~ 950 kg/m\xB3",
1210
- "\u5747\u5300\u51B0\u7B52\u6A21\u578B\uFF0C\u672A\u8003\u8651\u4E0D\u5747\u5300\u8986\u51B0\u3001\u8131\u51B0\u8DF3\u8DC3\u4E0E\u98CE\u51B0\u7EC4\u5408",
1211
- "\u5F1B\u5EA6\u6309\u629B\u7269\u7EBF\u8FD1\u4F3C\uFF0C\u672A\u8003\u8651\u8986\u51B0\u540E\u5F20\u529B\u53D8\u5316\uFF08\u672A\u4E0E\u72B6\u6001\u65B9\u7A0B\u8026\u5408\uFF09"
1212
- ],
1213
- disclaimer: "\u672C\u5DE5\u5177\u7ED3\u679C\u4EC5\u4F9B\u53C2\u8003\uFF0C\u5DE5\u7A0B\u5E94\u7528\u4EE5\u8BBE\u8BA1\u6587\u4EF6\u4E3A\u51C6\u3002\u8BE6\u89C1 DISCLAIMER.md\u3002",
1214
- online: "https://www.itswe.com/calculator/icing/"
1215
- };
1216
213
 
1217
- // src/icing/index.ts
1218
- function icingCheck(input) {
1219
- const { wireDiameterM, iceThicknessM, tensionN, spanM, selfWeightNPerM } = input;
1220
- if (!(tensionN > 0)) {
1221
- throw new RangeError(`\u5F20\u529B\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${tensionN} N`);
1222
- }
1223
- if (!(spanM > 0)) {
1224
- throw new RangeError(`\u8DE8\u8DDD\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${spanM} m`);
1225
- }
1226
- if (!(selfWeightNPerM > 0)) {
1227
- throw new RangeError(`\u7EBF\u7D22\u81EA\u91CD\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${selfWeightNPerM} N/m`);
1228
- }
1229
- const iceParams = {
1230
- wireDiameterM,
1231
- iceThicknessM,
1232
- ...input.iceDensityKgPerM3 === void 0 ? {} : { iceDensityKgPerM3: input.iceDensityKgPerM3 }
1233
- };
1234
- const gIce = iceLoadNPerM(iceParams);
1235
- const gTotal = selfWeightNPerM + gIce;
1236
- const fNoIce = selfWeightNPerM * spanM * spanM / (8 * tensionN);
1237
- const fIce = gTotal * spanM * spanM / (8 * tensionN);
1238
- return {
1239
- iceLoadNPerM: gIce,
1240
- totalLoadNPerM: gTotal,
1241
- sagNoIceM: fNoIce,
1242
- sagWithIceM: fIce,
1243
- growthPercent: (fIce / fNoIce - 1) * 100,
1244
- heavy: gIce > selfWeightNPerM
1245
- };
1246
- }
1247
- // Annotate the CommonJS export names for ESM import in node:
1248
- 0 && (module.exports = {
1249
- AIR_DENSITY_KG_PER_M3,
1250
- CONVENTIONAL_MARGIN_MM,
1251
- COPPER_ALLOY_ALPHA_PER_DEG_C,
1252
- COPPER_ALPHA_PER_DEG_C,
1253
- DEFAULT_BASE_AMBIENT_TEMP_DEG_C,
1254
- DEFAULT_ICE_DENSITY_KG_PER_M3,
1255
- DEFAULT_MIN_END_VOLTAGE_V,
1256
- DEFAULT_PANTOGRAPH_HEIGHT_M,
1257
- DEFAULT_REPLACEMENT_THRESHOLD_PERCENT,
1258
- DEFAULT_WARN_THRESHOLD,
1259
- G0,
1260
- IACS_RESISTIVITY_OHM_MM2_PER_M,
1261
- MIN_MARGIN_MM,
1262
- NOMINAL_SECTION_MM2,
1263
- REFERENCE_DENSITY_G_PER_CM3,
1264
- REF_TARGET_COEFF,
1265
- REF_TARGET_OFFSET_N,
1266
- STANDARD_GAUGE_M,
1267
- TB2809_AMPACITY_A,
1268
- TB2809_WIRE_PARAMS,
1269
- TRANSMISSION_RATIOS,
1270
- WIRE_PRESETS,
1271
- ampacityDeratingFactor,
1272
- ampacityMeta,
1273
- assessContactForce,
1274
- cantShiftM,
1275
- copperMeta,
1276
- curveStaggerCheck,
1277
- curveStaggerMeta,
1278
- deratedAmpacityA,
1279
- deriveLinearMassKgPerM,
1280
- dropperLengths,
1281
- dropperMeta,
1282
- dropperPositionsM,
1283
- elongationMM,
1284
- equivalentSpanM,
1285
- findAmpacityA,
1286
- findWirePreset,
1287
- forceMeta,
1288
- iceLoadNPerM,
1289
- icingCheck,
1290
- icingMeta,
1291
- kmHToMPerS,
1292
- maxParabolaSagM,
1293
- naturalFrequencyHz,
1294
- nominalSectionMM2,
1295
- parabolaSagM,
1296
- referenceTargetForceN,
1297
- requiredStrokeMM,
1298
- resistanceAtTempOhmPerKm,
1299
- sagM,
1300
- sectionFromDiameterMM2,
1301
- shortCircuitCheck,
1302
- shortCircuitMinSectionMM2,
1303
- solveTensionN,
1304
- stateCoefficientK,
1305
- statisticalForcesN,
1306
- strokeCheck,
1307
- strokeMeta,
1308
- tensionAt,
1309
- tensionCurve,
1310
- tensionMeta,
1311
- versineM,
1312
- voltageDropCheck,
1313
- voltageDropMeta,
1314
- wavePropagationSpeedMPerS,
1315
- waveSpeedCheck,
1316
- wavespeedMeta,
1317
- wearMeta,
1318
- wearRatio,
1319
- weightOfPresetNPerM,
1320
- weightPerLengthNPerM,
1321
- windClearanceCheck,
1322
- windDeflectionM,
1323
- windLoadNPerM,
1324
- windMeta,
1325
- wireLookup
1326
- });
214
+
215
+
216
+
217
+
218
+
219
+
220
+
221
+
222
+
223
+
224
+
225
+
226
+
227
+
228
+
229
+
230
+
231
+
232
+
233
+
234
+
235
+
236
+
237
+
238
+
239
+
240
+
241
+
242
+
243
+
244
+
245
+
246
+
247
+
248
+
249
+
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+
262
+
263
+
264
+
265
+
266
+
267
+
268
+ exports.AIR_DENSITY_KG_PER_M3 = _chunkFVESJBUDcjs.AIR_DENSITY_KG_PER_M3; exports.CONVENTIONAL_MARGIN_MM = _chunk5Q6IASB2cjs.CONVENTIONAL_MARGIN_MM; exports.COPPER_ALLOY_ALPHA_PER_DEG_C = COPPER_ALLOY_ALPHA_PER_DEG_C; exports.COPPER_ALPHA_PER_DEG_C = _chunkDGO2DCO5cjs.COPPER_ALPHA_PER_DEG_C; exports.DEFAULT_BASE_AMBIENT_TEMP_DEG_C = _chunkNBFOB2PIcjs.DEFAULT_BASE_AMBIENT_TEMP_DEG_C; exports.DEFAULT_ICE_DENSITY_KG_PER_M3 = _chunkP6KUGPHDcjs.DEFAULT_ICE_DENSITY_KG_PER_M3; exports.DEFAULT_MIN_END_VOLTAGE_V = _chunkRVP3IU2Lcjs.DEFAULT_MIN_END_VOLTAGE_V; exports.DEFAULT_PANTOGRAPH_HEIGHT_M = _chunk4UU7WA7Ncjs.DEFAULT_PANTOGRAPH_HEIGHT_M; exports.DEFAULT_REPLACEMENT_THRESHOLD_PERCENT = _chunk5INEDXRYcjs.DEFAULT_REPLACEMENT_THRESHOLD_PERCENT; exports.DEFAULT_WARN_THRESHOLD = _chunkNBHEOJ5Acjs.DEFAULT_WARN_THRESHOLD; exports.G0 = _chunkP6KUGPHDcjs.G0; exports.IACS_RESISTIVITY_OHM_MM2_PER_M = _chunkDGO2DCO5cjs.IACS_RESISTIVITY_OHM_MM2_PER_M; exports.MIN_MARGIN_MM = _chunk5Q6IASB2cjs.MIN_MARGIN_MM; exports.REFERENCE_DENSITY_G_PER_CM3 = REFERENCE_DENSITY_G_PER_CM3; exports.REF_TARGET_COEFF = _chunkRPKDEFSJcjs.REF_TARGET_COEFF; exports.REF_TARGET_OFFSET_N = _chunkRPKDEFSJcjs.REF_TARGET_OFFSET_N; exports.STANDARD_GAUGE_M = _chunk4UU7WA7Ncjs.STANDARD_GAUGE_M; exports.STANDARD_UNIT_WEIGHT_KG_PER_KM = STANDARD_UNIT_WEIGHT_KG_PER_KM; exports.TB2809_AMPACITY_A = TB2809_AMPACITY_A; exports.TB2809_WIRE_PARAMS = _chunkMZBQ4546cjs.TB2809_WIRE_PARAMS; exports.TRANSMISSION_RATIOS = _chunk5Q6IASB2cjs.TRANSMISSION_RATIOS; exports.WIRE_PRESETS = WIRE_PRESETS; exports.ampacityDeratingFactor = _chunkNBFOB2PIcjs.ampacityDeratingFactor; exports.ampacityMeta = _chunkNBFOB2PIcjs.ampacityMeta; exports.assessContactForce = _chunkRPKDEFSJcjs.assessContactForce; exports.cantShiftM = _chunk4UU7WA7Ncjs.cantShiftM; exports.copperMeta = _chunkMZBQ4546cjs.copperMeta; exports.curveStaggerCheck = _chunk4UU7WA7Ncjs.curveStaggerCheck; exports.curveStaggerMeta = _chunk4UU7WA7Ncjs.curveStaggerMeta; exports.deratedAmpacityA = _chunkNBFOB2PIcjs.deratedAmpacityA; exports.deriveLinearMassKgPerM = deriveLinearMassKgPerM; exports.dropperLengths = _chunkJ2UXRMTUcjs.dropperLengths; exports.dropperMeta = _chunkJ2UXRMTUcjs.dropperMeta; exports.dropperPositionsM = _chunkJ2UXRMTUcjs.dropperPositionsM; exports.elongationMM = _chunk5Q6IASB2cjs.elongationMM; exports.equivalentSpanM = _chunk3ERFRRHZcjs.equivalentSpanM; exports.findAmpacityA = findAmpacityA; exports.findWirePreset = findWirePreset; exports.forceMeta = _chunkRPKDEFSJcjs.forceMeta; exports.iceLoadNPerM = _chunkP6KUGPHDcjs.iceLoadNPerM; exports.icingCheck = _chunkP6KUGPHDcjs.icingCheck; exports.icingMeta = _chunkP6KUGPHDcjs.icingMeta; exports.kmHToMPerS = _chunkNBHEOJ5Acjs.kmHToMPerS; exports.maxParabolaSagM = _chunkJ2UXRMTUcjs.maxParabolaSagM; exports.naturalFrequencyHz = _chunkNBHEOJ5Acjs.naturalFrequencyHz; exports.parabolaSagM = _chunkJ2UXRMTUcjs.parabolaSagM; exports.referenceTargetForceN = _chunkRPKDEFSJcjs.referenceTargetForceN; exports.requiredStrokeMM = _chunk5Q6IASB2cjs.requiredStrokeMM; exports.resistanceAtTempOhmPerKm = _chunkDGO2DCO5cjs.resistanceAtTempOhmPerKm; exports.sagM = _chunk3ERFRRHZcjs.sagM; exports.sectionFromDiameterMM2 = _chunk5INEDXRYcjs.sectionFromDiameterMM2; exports.shortCircuitCheck = _chunkNBFOB2PIcjs.shortCircuitCheck; exports.shortCircuitMinSectionMM2 = _chunkNBFOB2PIcjs.shortCircuitMinSectionMM2; exports.solveTensionN = _chunk3ERFRRHZcjs.solveTensionN; exports.stateCoefficientK = _chunk3ERFRRHZcjs.stateCoefficientK; exports.statisticalForcesN = _chunkRPKDEFSJcjs.statisticalForcesN; exports.strokeCheck = _chunk5Q6IASB2cjs.strokeCheck; exports.strokeMeta = _chunk5Q6IASB2cjs.strokeMeta; exports.tensionAt = _chunk3ERFRRHZcjs.tensionAt; exports.tensionCurve = _chunk3ERFRRHZcjs.tensionCurve; exports.tensionMeta = _chunk3ERFRRHZcjs.tensionMeta; exports.unitWeightToKgPerM = unitWeightToKgPerM; exports.versineM = _chunk4UU7WA7Ncjs.versineM; exports.voltageDropCheck = _chunkRVP3IU2Lcjs.voltageDropCheck; exports.voltageDropMeta = _chunkRVP3IU2Lcjs.voltageDropMeta; exports.wavePropagationSpeedMPerS = _chunkNBHEOJ5Acjs.wavePropagationSpeedMPerS; exports.waveSpeedCheck = _chunkNBHEOJ5Acjs.waveSpeedCheck; exports.wavespeedMeta = _chunkNBHEOJ5Acjs.wavespeedMeta; exports.wearMeta = _chunk5INEDXRYcjs.wearMeta; exports.wearRatio = _chunk5INEDXRYcjs.wearRatio; exports.weightOfPresetNPerM = weightOfPresetNPerM; exports.weightPerLengthNPerM = weightPerLengthNPerM; exports.windClearanceCheck = _chunkFVESJBUDcjs.windClearanceCheck; exports.windDeflectionM = _chunkFVESJBUDcjs.windDeflectionM; exports.windLoadNPerM = _chunkFVESJBUDcjs.windLoadNPerM; exports.windMeta = _chunkFVESJBUDcjs.windMeta; exports.wireLookup = _chunkMZBQ4546cjs.wireLookup;
1327
269
  //# sourceMappingURL=index.cjs.map