ocs-calculators 0.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.
- package/CHANGELOG.md +100 -0
- package/DISCLAIMER.md +26 -0
- package/LICENSE +21 -0
- package/README.md +157 -0
- package/README_EN.md +142 -0
- package/dist/index.cjs +1327 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +902 -0
- package/dist/index.d.ts +902 -0
- package/dist/index.js +1224 -0
- package/dist/index.js.map +1 -0
- package/package.json +63 -0
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,902 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 全库公共类型定义。
|
|
3
|
+
*
|
|
4
|
+
* 命名约定(重要):
|
|
5
|
+
* 所有数值字段的单位都写在变量名末尾,例如 tensionKN / spanM / crossSectionMM2。
|
|
6
|
+
* 工程计算里单位混淆是头号 bug 来源,宁可名字长,也不要靠注释记单位。
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* 每个计算器模块必须导出的元信息。
|
|
10
|
+
* 这是本库区别于"玩具代码"的核心 —— 公式、依据、适用范围、免责声明全部可机读。
|
|
11
|
+
*/
|
|
12
|
+
interface CalculatorMeta {
|
|
13
|
+
/** 计算器中文名 */
|
|
14
|
+
readonly name: string;
|
|
15
|
+
/** 计算器英文名,用于国际检索 */
|
|
16
|
+
readonly nameEn: string;
|
|
17
|
+
/** 一句话用途说明 */
|
|
18
|
+
readonly summary: string;
|
|
19
|
+
/** 核心公式,LaTeX 或纯文本,可多条 */
|
|
20
|
+
readonly formula: readonly string[];
|
|
21
|
+
/** 参考依据:标准号、设计手册、教材。注意标注该标准是否真正包含此公式 */
|
|
22
|
+
readonly references: readonly string[];
|
|
23
|
+
/** 适用范围与已知限制 */
|
|
24
|
+
readonly scope: readonly string[];
|
|
25
|
+
/** 免责声明 */
|
|
26
|
+
readonly disclaimer: string;
|
|
27
|
+
/** 在线版本地址 */
|
|
28
|
+
readonly online: string;
|
|
29
|
+
}
|
|
30
|
+
/** 重力加速度,N/kg(m/s²) */
|
|
31
|
+
declare const G0 = 9.81;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* 电阻温度修正 —— copper 与 voltage-drop 共用。
|
|
35
|
+
*
|
|
36
|
+
* ⚠️ 注意别与线膨胀系数混淆:
|
|
37
|
+
* - 本文件的 α = 0.00393 /℃ 是**电阻**温度系数
|
|
38
|
+
* - wire-specs 的 COPPER_ALLOY_ALPHA_PER_DEG_C = 1.7e-5 /℃ 是**热膨胀**系数
|
|
39
|
+
* 两者相差两个数量级,混用会导致结果严重偏离。
|
|
40
|
+
*/
|
|
41
|
+
/** 铜的电阻温度系数,1/℃ */
|
|
42
|
+
declare const COPPER_ALPHA_PER_DEG_C = 0.00393;
|
|
43
|
+
/** IACS 退火铜 20℃ 标准电阻率,Ω·mm²/m(= 1/58) */
|
|
44
|
+
declare const IACS_RESISTIVITY_OHM_MM2_PER_M = 0.017241;
|
|
45
|
+
/**
|
|
46
|
+
* 单位电阻温度修正:r_T = r₂₀·[1 + α·(T − 20)]。
|
|
47
|
+
*
|
|
48
|
+
* @param r20OhmPerKm 20℃ 单位电阻,Ω/km
|
|
49
|
+
* @param tempDegC 环境温度,℃
|
|
50
|
+
* @param alphaPerDegC 电阻温度系数,1/℃。缺省铜 0.00393
|
|
51
|
+
* @returns 该温度下的单位电阻,Ω/km
|
|
52
|
+
*/
|
|
53
|
+
declare function resistanceAtTempOhmPerKm(r20OhmPerKm: number, tempDegC: number, alphaPerDegC?: number): number;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* 覆冰冰筒模型 —— tension 与 icing 共用。
|
|
57
|
+
*
|
|
58
|
+
* 统一使用 SI 单位(米),与站点 calc-core.js 的 icingCheck 内部口径一致。
|
|
59
|
+
* 页面侧若以 mm 采集,调用前需自行 /1000。
|
|
60
|
+
*/
|
|
61
|
+
/** 冰密度常用值,kg/m³ */
|
|
62
|
+
declare const DEFAULT_ICE_DENSITY_KG_PER_M3 = 900;
|
|
63
|
+
interface IceLoadParams {
|
|
64
|
+
/** 线索直径 d,m */
|
|
65
|
+
readonly wireDiameterM: number;
|
|
66
|
+
/** 覆冰厚度 b,m。传 0 表示无冰 */
|
|
67
|
+
readonly iceThicknessM: number;
|
|
68
|
+
/** 冰密度 ρ_ice,kg/m³。缺省 900 */
|
|
69
|
+
readonly iceDensityKgPerM3?: number;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* 冰筒模型单位长度冰重:g_ice = ρ_ice·g₀·π·b·(d + b),N/m。
|
|
73
|
+
*
|
|
74
|
+
* 传 iceThicknessM = 0 时返回 0。
|
|
75
|
+
*/
|
|
76
|
+
declare function iceLoadNPerM(params: IceLoadParams): number;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* 接触线线材参数预设。
|
|
80
|
+
*
|
|
81
|
+
* ⚠️ 全部为标称参考值,实际取值以产品技术条件与设计文件为准。
|
|
82
|
+
* ⚠️ 本站计算器的参数界面支持手工覆盖这些值 —— 那才是工程上正确的用法。
|
|
83
|
+
*
|
|
84
|
+
* 待核对项(见 README「开放问题」):
|
|
85
|
+
* 站点页面注明"参考单位质量按密度 8.94 g/cm³ 计",据此 CTHM-120 应为 1.0728 kg/m。
|
|
86
|
+
* 但由站点已发布的输出表反算,实际使用的 g ≈ 10.62 N/m,对应线密度 ≈ 1.083 kg/m,
|
|
87
|
+
* 比标称值高约 0.9%,疑似计入了吊弦、线夹、接头的等效附加荷载。
|
|
88
|
+
* 两者差异约 1%,在多数工程场景可接受,但请确认后统一。
|
|
89
|
+
*/
|
|
90
|
+
interface WireSpec {
|
|
91
|
+
/** 唯一标识 */
|
|
92
|
+
readonly id: string;
|
|
93
|
+
/** 中文名 */
|
|
94
|
+
readonly name: string;
|
|
95
|
+
/** 英文名 */
|
|
96
|
+
readonly nameEn: string;
|
|
97
|
+
/** 标称截面积 A,mm² */
|
|
98
|
+
readonly crossSectionMM2: number;
|
|
99
|
+
/** 弹性模量 E,GPa(标称参考值) */
|
|
100
|
+
readonly elasticModulusGPa: number;
|
|
101
|
+
/** 线膨胀系数 α,1/℃(标称参考值) */
|
|
102
|
+
readonly expansionPerDegC: number;
|
|
103
|
+
/** 线密度,kg/m(标称参考值) */
|
|
104
|
+
readonly linearMassKgPerM: number;
|
|
105
|
+
}
|
|
106
|
+
/** 参考密度,g/cm³(站点页面注明值) */
|
|
107
|
+
declare const REFERENCE_DENSITY_G_PER_CM3 = 8.94;
|
|
108
|
+
/**
|
|
109
|
+
* 由截面积与密度反算线密度。
|
|
110
|
+
* @param crossSectionMM2 截面积 A,mm²
|
|
111
|
+
* @param densityGPerCm3 密度,g/cm³
|
|
112
|
+
* @returns 线密度,kg/m
|
|
113
|
+
*/
|
|
114
|
+
declare function deriveLinearMassKgPerM(crossSectionMM2: number, densityGPerCm3?: number): number;
|
|
115
|
+
/** 铜及铜合金接触线的常用线膨胀系数,1/℃ */
|
|
116
|
+
declare const COPPER_ALLOY_ALPHA_PER_DEG_C = 0.000017;
|
|
117
|
+
declare const WIRE_PRESETS: readonly WireSpec[];
|
|
118
|
+
/** 按 id 取线材预设,找不到返回 undefined */
|
|
119
|
+
declare function findWirePreset(id: string): WireSpec | undefined;
|
|
120
|
+
/**
|
|
121
|
+
* 由线密度求单位自重荷载 g,N/m。
|
|
122
|
+
* @param linearMassKgPerM 线密度,kg/m
|
|
123
|
+
*/
|
|
124
|
+
declare function weightPerLengthNPerM(linearMassKgPerM: number): number;
|
|
125
|
+
/**
|
|
126
|
+
* 由线材预设直接取单位自重荷载 g,N/m。
|
|
127
|
+
*/
|
|
128
|
+
declare function weightOfPresetNPerM(spec: WireSpec): number;
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* TB/T 2809-2017 表5 持续载流量参考值(A)。
|
|
132
|
+
*
|
|
133
|
+
* 来源:itswe.com 标准规范库,据 TB/T 2809-2017 无水印全文扫描件逐格复核。
|
|
134
|
+
*
|
|
135
|
+
* 查表语义:
|
|
136
|
+
* - 返回数值:该项载流量
|
|
137
|
+
* - 返回 null:该 (材质, 截面) 规格存在,但该工况按标准原文注"不需要考核"
|
|
138
|
+
* (如纯铜接触线不考核 150℃ 工况)
|
|
139
|
+
* - 返回 undefined:该材质无此截面规格(如铜铬锆无 120 mm²)
|
|
140
|
+
*
|
|
141
|
+
* ⚠️ 表中为室内(无风无日照试验条件)值与室外值;工程取值请以标准原文与
|
|
142
|
+
* 产品技术条件为准。高海拔、隧道内等场景须另行叠加散热修正。
|
|
143
|
+
*/
|
|
144
|
+
type ContactWireTypeCode = 'CT' | 'CTA' | 'CTS' | 'CTSM' | 'CTSH' | 'CTM' | 'CTMM' | 'CTMH' | 'CTCZ';
|
|
145
|
+
/** 载流量考核工况 */
|
|
146
|
+
type AmpacityCondition = 'indoor-95' | 'outdoor-95' | 'indoor-150' | 'outdoor-150';
|
|
147
|
+
type CrossSectionMM2 = 120 | 150;
|
|
148
|
+
interface AmpacityEntry {
|
|
149
|
+
readonly type: ContactWireTypeCode;
|
|
150
|
+
readonly materialZh: string;
|
|
151
|
+
/** 标称截面,mm² */
|
|
152
|
+
readonly crossSectionMM2: CrossSectionMM2;
|
|
153
|
+
readonly condition: AmpacityCondition;
|
|
154
|
+
/** 持续载流量,A。null 表示该项不需要考核 */
|
|
155
|
+
readonly ampacityA: number | null;
|
|
156
|
+
}
|
|
157
|
+
declare const TB2809_AMPACITY_A: readonly AmpacityEntry[];
|
|
158
|
+
/**
|
|
159
|
+
* 查表。
|
|
160
|
+
* @returns 载流量 A;该规格存在但不考核时为 null;该材质无此截面时为 undefined
|
|
161
|
+
*/
|
|
162
|
+
declare function findAmpacityA(params: {
|
|
163
|
+
type: ContactWireTypeCode;
|
|
164
|
+
crossSectionMM2: CrossSectionMM2;
|
|
165
|
+
condition: AmpacityCondition;
|
|
166
|
+
}): number | null | undefined;
|
|
167
|
+
|
|
168
|
+
declare const tensionMeta: CalculatorMeta;
|
|
169
|
+
|
|
170
|
+
/** 单个温度档的输入参数 */
|
|
171
|
+
interface TensionPointInput {
|
|
172
|
+
/** 基准工况张力 T₁,kN */
|
|
173
|
+
readonly baseTensionKN: number;
|
|
174
|
+
/** 基准温度 t₁,℃ */
|
|
175
|
+
readonly baseTempDegC: number;
|
|
176
|
+
/** 目标温度 t₂,℃ */
|
|
177
|
+
readonly targetTempDegC: number;
|
|
178
|
+
/** 单位自重荷载 g,N/m(覆冰工况传自重与冰重的组合值) */
|
|
179
|
+
readonly weightPerLengthNPerM: number;
|
|
180
|
+
/** 计算跨距 l,m(多跨锚段传当量跨距 l_D) */
|
|
181
|
+
readonly spanM: number;
|
|
182
|
+
/** 弹性模量 E,GPa */
|
|
183
|
+
readonly elasticModulusGPa: number;
|
|
184
|
+
/** 截面积 A,mm² */
|
|
185
|
+
readonly crossSectionMM2: number;
|
|
186
|
+
/** 线膨胀系数 α,1/℃ */
|
|
187
|
+
readonly expansionPerDegC: number;
|
|
188
|
+
}
|
|
189
|
+
/** 安装曲线公共参数(不含目标温度) */
|
|
190
|
+
type TensionCurveInput = Omit<TensionPointInput, 'targetTempDegC'>;
|
|
191
|
+
/** 单个温度档的计算结果 */
|
|
192
|
+
interface TensionResult {
|
|
193
|
+
/** 目标温度 t₂,℃ */
|
|
194
|
+
readonly targetTempDegC: number;
|
|
195
|
+
/** 该温度下的张力 T₂,kN */
|
|
196
|
+
readonly tensionKN: number;
|
|
197
|
+
/** 跨中弛度 f,m(抛物线近似) */
|
|
198
|
+
readonly sagM: number;
|
|
199
|
+
/** 求解迭代次数 */
|
|
200
|
+
readonly iterations: number;
|
|
201
|
+
/** 状态方程残差,N(用于校验收敛,应接近 0) */
|
|
202
|
+
readonly residualN: number;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* 跨中弛度,抛物线近似:f = gl²/(8T)
|
|
206
|
+
* @param weightPerLengthNPerM 单位自重荷载 g,N/m
|
|
207
|
+
* @param spanM 跨距 l,m
|
|
208
|
+
* @param tensionN 张力 T,N
|
|
209
|
+
* @returns 弛度 f,m
|
|
210
|
+
*/
|
|
211
|
+
declare function sagM(weightPerLengthNPerM: number, spanM: number, tensionN: number): number;
|
|
212
|
+
/**
|
|
213
|
+
* 当量跨距(多跨锚段归算):l_D = √(Σlᵢ³ / Σlᵢ)
|
|
214
|
+
* @param spansM 各跨跨距,m
|
|
215
|
+
* @returns 当量跨距 l_D,m
|
|
216
|
+
*/
|
|
217
|
+
declare function equivalentSpanM(spansM: readonly number[]): number;
|
|
218
|
+
/**
|
|
219
|
+
* 覆冰荷载(均匀冰筒模型)与 icing 模块共用 `src/common/ice.ts`,
|
|
220
|
+
* 由根 index 统一导出,此处不再重复定义。
|
|
221
|
+
*/
|
|
222
|
+
/**
|
|
223
|
+
* 状态方程系数 K = g²l²EA/24,单位 N³。
|
|
224
|
+
* 使状态方程可写成 F(T) = T − K/T² 的紧凑形式。
|
|
225
|
+
*/
|
|
226
|
+
declare function stateCoefficientK(weightPerLengthNPerM: number, spanM: number, elasticModulusGPa: number, crossSectionMM2: number): number;
|
|
227
|
+
/**
|
|
228
|
+
* 求解状态方程 T − K/T² = target 的正根。
|
|
229
|
+
*
|
|
230
|
+
* h(T) = T − K/T² − target 在 T > 0 上严格单调递增(h′ = 1 + 2K/T³ > 0),
|
|
231
|
+
* 因此用二分法必定收敛。又由 T = target + K/T² 可知 T > target,
|
|
232
|
+
* 可直接取 target 作为下界,bracket 很紧。
|
|
233
|
+
*/
|
|
234
|
+
declare function solveTensionN(K: number, targetN: number): {
|
|
235
|
+
tensionN: number;
|
|
236
|
+
iterations: number;
|
|
237
|
+
residualN: number;
|
|
238
|
+
};
|
|
239
|
+
/**
|
|
240
|
+
* 求某一温度档的张力与弛度。
|
|
241
|
+
*
|
|
242
|
+
* 状态方程:T₂ − g²l²EA/(24T₂²) = T₁ − g²l²EA/(24T₁²) − αEA(t₂ − t₁)
|
|
243
|
+
*/
|
|
244
|
+
declare function tensionAt(input: TensionPointInput): TensionResult;
|
|
245
|
+
/**
|
|
246
|
+
* 批量求解多个温度档,生成安装曲线表。
|
|
247
|
+
*/
|
|
248
|
+
declare function tensionCurve(base: TensionCurveInput, tempsDegC: readonly number[]): TensionResult[];
|
|
249
|
+
|
|
250
|
+
declare const dropperMeta: CalculatorMeta;
|
|
251
|
+
|
|
252
|
+
/** 悬挂类型 */
|
|
253
|
+
type SuspensionType = 'simple' | 'elastic';
|
|
254
|
+
interface DropperInput {
|
|
255
|
+
/** 悬挂类型。弹性链形须同时提供 messenger 参数 */
|
|
256
|
+
readonly suspension: SuspensionType;
|
|
257
|
+
/** 跨距 L,m */
|
|
258
|
+
readonly spanM: number;
|
|
259
|
+
/** 接触线张力 T_c,kN */
|
|
260
|
+
readonly contactTensionKN: number;
|
|
261
|
+
/** 结构高度 H,m */
|
|
262
|
+
readonly structureHeightM: number;
|
|
263
|
+
/** 接触线单位荷载 q_c,kN/m */
|
|
264
|
+
readonly contactLoadKNPerM: number;
|
|
265
|
+
/** 吊弦间距 d,m,须能整除跨距 */
|
|
266
|
+
readonly dropperSpacingM: number;
|
|
267
|
+
/**
|
|
268
|
+
* 承力索参数。弹性链形悬挂('elastic')必填,
|
|
269
|
+
* 简单链形悬挂传 null 或不传。
|
|
270
|
+
*/
|
|
271
|
+
readonly messenger?: {
|
|
272
|
+
/** 承力索张力 T_m,kN */
|
|
273
|
+
readonly tensionKN: number;
|
|
274
|
+
/** 承力索单位荷载 q_m,kN/m */
|
|
275
|
+
readonly loadKNPerM: number;
|
|
276
|
+
} | null;
|
|
277
|
+
}
|
|
278
|
+
/** 单个吊弦点的计算结果 */
|
|
279
|
+
interface DropperPoint {
|
|
280
|
+
/** 序号 i(0 为起始端) */
|
|
281
|
+
readonly index: number;
|
|
282
|
+
/** 距起始端的距离 x,m */
|
|
283
|
+
readonly positionM: number;
|
|
284
|
+
/** 接触线弛度 f_c(x),m */
|
|
285
|
+
readonly contactSagM: number;
|
|
286
|
+
/** 承力索弛度 f_m(x),m(简单链形恒为 0) */
|
|
287
|
+
readonly messengerSagM: number;
|
|
288
|
+
/** 吊弦长度 l,m */
|
|
289
|
+
readonly dropperLengthM: number;
|
|
290
|
+
}
|
|
291
|
+
interface DropperResult {
|
|
292
|
+
readonly points: readonly DropperPoint[];
|
|
293
|
+
/** 跨中最大弛度 f_max,m */
|
|
294
|
+
readonly maxSagM: number;
|
|
295
|
+
/** 最短吊弦长度,m(位于跨中) */
|
|
296
|
+
readonly shortestDropperM: number;
|
|
297
|
+
/** 吊弦数量(含两端) */
|
|
298
|
+
readonly count: number;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* 抛物线弛度:f(x) = q·x·(L−x) / (2·T)
|
|
302
|
+
*
|
|
303
|
+
* 对接触线和承力索通用,区别只在传哪一组 q / T。
|
|
304
|
+
*
|
|
305
|
+
* @param xM 距起始端距离,m
|
|
306
|
+
* @param spanM 跨距 L,m
|
|
307
|
+
* @param loadKNPerM 单位荷载 q,kN/m
|
|
308
|
+
* @param tensionKN 张力 T,kN
|
|
309
|
+
* @returns 该点弛度,m
|
|
310
|
+
*/
|
|
311
|
+
declare function parabolaSagM(xM: number, spanM: number, loadKNPerM: number, tensionKN: number): number;
|
|
312
|
+
/**
|
|
313
|
+
* 跨中最大弛度:f_max = q·L² / (8·T)
|
|
314
|
+
*/
|
|
315
|
+
declare function maxParabolaSagM(spanM: number, loadKNPerM: number, tensionKN: number): number;
|
|
316
|
+
/**
|
|
317
|
+
* 生成吊弦点位(含两端)。
|
|
318
|
+
* @param spanM 跨距 L,m
|
|
319
|
+
* @param spacingM 吊弦间距 d,m,须能整除跨距
|
|
320
|
+
* @returns 各点位距起始端的距离,m
|
|
321
|
+
*/
|
|
322
|
+
declare function dropperPositionsM(spanM: number, spacingM: number): number[];
|
|
323
|
+
/**
|
|
324
|
+
* 计算整跨各吊弦长度。
|
|
325
|
+
*
|
|
326
|
+
* 简单链形:l_i = H − f_c(x_i)
|
|
327
|
+
* 弹性链形:l_i = H − f_c(x_i) + f_m(x_i)
|
|
328
|
+
*/
|
|
329
|
+
declare function dropperLengths(input: DropperInput): DropperResult;
|
|
330
|
+
|
|
331
|
+
declare const windMeta: CalculatorMeta;
|
|
332
|
+
|
|
333
|
+
/** 标准大气条件下的空气密度,kg/m³ */
|
|
334
|
+
declare const AIR_DENSITY_KG_PER_M3 = 1.225;
|
|
335
|
+
interface WindLoadInput {
|
|
336
|
+
/** 风速 v,m/s */
|
|
337
|
+
readonly windSpeedMPerS: number;
|
|
338
|
+
/** 风向与线路夹角 θ,度。90° 表示风垂直于线路 */
|
|
339
|
+
readonly windAngleDeg: number;
|
|
340
|
+
/** 线索直径 d,mm */
|
|
341
|
+
readonly wireDiameterMM: number;
|
|
342
|
+
/** 风载体型系数 α(阻力系数),圆柱形线索常取 1.2 */
|
|
343
|
+
readonly dragCoefficient: number;
|
|
344
|
+
/** 空气密度 ρ,kg/m³。缺省为标准大气 1.225 */
|
|
345
|
+
readonly airDensityKgPerM3?: number;
|
|
346
|
+
}
|
|
347
|
+
interface WindClearanceInput extends WindLoadInput {
|
|
348
|
+
/** 线索张力 T,kN */
|
|
349
|
+
readonly tensionKN: number;
|
|
350
|
+
/** 跨距 L,m */
|
|
351
|
+
readonly spanM: number;
|
|
352
|
+
/** 拉出值 a,m */
|
|
353
|
+
readonly staggerM: number;
|
|
354
|
+
/** 限界允许值,m */
|
|
355
|
+
readonly clearanceLimitM: number;
|
|
356
|
+
}
|
|
357
|
+
interface WindClearanceResult {
|
|
358
|
+
/** 单位风荷载 p,N/m */
|
|
359
|
+
readonly windLoadNPerM: number;
|
|
360
|
+
/** 跨中风偏 b,m */
|
|
361
|
+
readonly deflectionM: number;
|
|
362
|
+
/** 风偏 + 拉出值 b + a,m */
|
|
363
|
+
readonly totalOffsetM: number;
|
|
364
|
+
/** 限界允许值,m */
|
|
365
|
+
readonly clearanceLimitM: number;
|
|
366
|
+
/** 富余量 = 限界允许值 − (b + a),m。负值表示超限 */
|
|
367
|
+
readonly marginM: number;
|
|
368
|
+
/** 是否合格 */
|
|
369
|
+
readonly passes: boolean;
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* 单位风荷载:p = ½·ρ·v²·d·α·sin²θ,N/m。
|
|
373
|
+
*
|
|
374
|
+
* 注意公式使用 sin²θ 而非 sinθ —— 风向与线路平行时(θ = 0° / 180°)不产生横向偏移。
|
|
375
|
+
*
|
|
376
|
+
* @returns 单位长度风荷载,N/m
|
|
377
|
+
*/
|
|
378
|
+
declare function windLoadNPerM(params: WindLoadInput): number;
|
|
379
|
+
/**
|
|
380
|
+
* 跨中风偏(简支索抛物线近似):b = p·L² / (8·T),m。
|
|
381
|
+
*
|
|
382
|
+
* @param windLoadNPerM 单位风荷载 p,N/m
|
|
383
|
+
* @param spanM 跨距 L,m
|
|
384
|
+
* @param tensionKN 线索张力 T,kN
|
|
385
|
+
* @returns 跨中风偏,m
|
|
386
|
+
*/
|
|
387
|
+
declare function windDeflectionM(windLoadNPerM: number, spanM: number, tensionKN: number): number;
|
|
388
|
+
/**
|
|
389
|
+
* 风偏限界校验:计算跨中风偏 b,叠加拉出值 a,与限界允许值比较。
|
|
390
|
+
*
|
|
391
|
+
* 判据:b + a ≤ 限界允许值 → 合格
|
|
392
|
+
*/
|
|
393
|
+
declare function windClearanceCheck(input: WindClearanceInput): WindClearanceResult;
|
|
394
|
+
|
|
395
|
+
declare const forceMeta: CalculatorMeta;
|
|
396
|
+
|
|
397
|
+
/** 供电制式,决定参考目标力 Fref 的常数项 */
|
|
398
|
+
type PowerSystem = 'ac' | 'dc3kv' | 'dc15kv';
|
|
399
|
+
/** 限值判定结果 */
|
|
400
|
+
type LimitVerdict = 'pass' | 'fail' | 'not-assessed';
|
|
401
|
+
/** Fref = 0.00097·v² + offset,offset 按供电制式取值 */
|
|
402
|
+
declare const REF_TARGET_COEFF = 0.00097;
|
|
403
|
+
/** 参考目标力常数项,N。AC 引自 EN 50367 表6,DC 引自 TSI ENE 2011/274/EU */
|
|
404
|
+
declare const REF_TARGET_OFFSET_N: Record<PowerSystem, number>;
|
|
405
|
+
interface ContactForceInput {
|
|
406
|
+
/** 平均接触力 Fm,N(同一 C1 检测区段统计均值) */
|
|
407
|
+
readonly meanForceN: number;
|
|
408
|
+
/** 标准差 σ,N(同一区段统计标准差) */
|
|
409
|
+
readonly stdDevN: number;
|
|
410
|
+
/** 速度 v,km/h。传 null 则不输出参考目标力 */
|
|
411
|
+
readonly speedKmH: number | null;
|
|
412
|
+
/** 验收上限 Fmax,lim,N。传 null 则不判定 */
|
|
413
|
+
readonly maxLimitN: number | null;
|
|
414
|
+
/** 验收下限 Fmin,lim,N。传 null 则不判定 */
|
|
415
|
+
readonly minLimitN: number | null;
|
|
416
|
+
/** 供电制式。缺省为交流 */
|
|
417
|
+
readonly system?: PowerSystem;
|
|
418
|
+
}
|
|
419
|
+
interface ContactForceResult {
|
|
420
|
+
readonly meanForceN: number;
|
|
421
|
+
readonly stdDevN: number;
|
|
422
|
+
/** 统计最大力 Fmax = Fm + 3σ,N */
|
|
423
|
+
readonly maxForceN: number;
|
|
424
|
+
/** 统计最小力 Fmin = Fm − 3σ,N */
|
|
425
|
+
readonly minForceN: number;
|
|
426
|
+
/** 参考目标力 Fref,N。未提供速度时为 null */
|
|
427
|
+
readonly referenceTargetN: number | null;
|
|
428
|
+
/** 均值对参考目标的偏差 Fm − Fref,N。未提供速度时为 null */
|
|
429
|
+
readonly meanDeviationN: number | null;
|
|
430
|
+
/** 上限判定 */
|
|
431
|
+
readonly maxVerdict: LimitVerdict;
|
|
432
|
+
/** 下限判定 */
|
|
433
|
+
readonly minVerdict: LimitVerdict;
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* 参考目标力 Fref,N。
|
|
437
|
+
*
|
|
438
|
+
* Fref = 0.00097·v² + offset
|
|
439
|
+
*
|
|
440
|
+
* @param speedKmH 速度 v,km/h
|
|
441
|
+
* @param system 供电制式,缺省 'ac'
|
|
442
|
+
* @returns 参考目标力,N
|
|
443
|
+
*/
|
|
444
|
+
declare function referenceTargetForceN(speedKmH: number, system?: PowerSystem): number;
|
|
445
|
+
/**
|
|
446
|
+
* 统计极值:Fmax = Fm + 3σ,Fmin = Fm − 3σ。
|
|
447
|
+
*
|
|
448
|
+
* @returns 统计最大力与最小力,N
|
|
449
|
+
*/
|
|
450
|
+
declare function statisticalForcesN(meanForceN: number, stdDevN: number): {
|
|
451
|
+
readonly maxN: number;
|
|
452
|
+
readonly minN: number;
|
|
453
|
+
};
|
|
454
|
+
/**
|
|
455
|
+
* 弓网接触力统计评价(EN 50367 框架)。
|
|
456
|
+
*
|
|
457
|
+
* 上下限传 null 表示该侧不参与判定,对应判定结果为 'not-assessed'。
|
|
458
|
+
*/
|
|
459
|
+
declare function assessContactForce(input: ContactForceInput): ContactForceResult;
|
|
460
|
+
|
|
461
|
+
declare const ampacityMeta: CalculatorMeta;
|
|
462
|
+
|
|
463
|
+
/** 基准环境温度 T₀,℃(TB/T 2809-2017 标准环境) */
|
|
464
|
+
declare const DEFAULT_BASE_AMBIENT_TEMP_DEG_C = 25;
|
|
465
|
+
/** 载流量环境温度修正输入 */
|
|
466
|
+
interface AmpacityDeratingInput {
|
|
467
|
+
/** 基准载流量 I₀,A(标准环境 T₀ 下的持续载流量) */
|
|
468
|
+
readonly baseAmpacityA: number;
|
|
469
|
+
/** 最高允许工作温度 Tmax,℃(铜 95、铜合金 150) */
|
|
470
|
+
readonly maxAllowedTempDegC: number;
|
|
471
|
+
/** 最不利实际环境温度 Ta,℃ */
|
|
472
|
+
readonly ambientTempDegC: number;
|
|
473
|
+
/** 基准环境温度 T₀,℃。缺省 25 ℃ */
|
|
474
|
+
readonly baseAmbientTempDegC?: number;
|
|
475
|
+
}
|
|
476
|
+
interface AmpacityDeratingResult {
|
|
477
|
+
/** 修正系数,无量纲 */
|
|
478
|
+
readonly deratingFactor: number;
|
|
479
|
+
/** 修正后载流量 I(Ta),A */
|
|
480
|
+
readonly deratedAmpacityA: number;
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* 环境温度修正系数:√((Tmax − Ta) / (Tmax − T₀))。
|
|
484
|
+
*
|
|
485
|
+
* Ta 越接近允许温度,系数越小;Ta = T₀ 时为 1;Ta > Tmax 无解,直接抛错。
|
|
486
|
+
*/
|
|
487
|
+
declare function ampacityDeratingFactor(input: AmpacityDeratingInput): number;
|
|
488
|
+
/**
|
|
489
|
+
* 修正后载流量:I(Ta) = I₀·√((Tmax − Ta)/(Tmax − T₀)),A。
|
|
490
|
+
*
|
|
491
|
+
* ⚠️ 修正式仅覆盖环境温度项;高海拔、隧道、日照叠加场景须另行叠加修正。
|
|
492
|
+
*/
|
|
493
|
+
declare function deratedAmpacityA(input: AmpacityDeratingInput): number;
|
|
494
|
+
/** 热稳定校核判定结果 */
|
|
495
|
+
type ThermalStabilityVerdict = 'pass' | 'fail' | 'not-assessed';
|
|
496
|
+
interface ShortCircuitCheckInput {
|
|
497
|
+
/** 短路电流 I_k,kA(热稳定等效值,由供电计算给出) */
|
|
498
|
+
readonly shortCircuitCurrentKA: number;
|
|
499
|
+
/** 全切除时间 t_k,s */
|
|
500
|
+
readonly clearingTimeS: number;
|
|
501
|
+
/** 热稳定系数 C,A·√s/mm²(设计输入) */
|
|
502
|
+
readonly thermalCoefficientC: number;
|
|
503
|
+
/** 拟选截面,mm²。传 null 则仅输出最小截面,不判定 */
|
|
504
|
+
readonly selectedSectionMM2: number | null;
|
|
505
|
+
}
|
|
506
|
+
interface ShortCircuitCheckResult {
|
|
507
|
+
/** 最小热稳截面 S_min = I_k·√t_k / C,mm² */
|
|
508
|
+
readonly minSectionMM2: number;
|
|
509
|
+
readonly selectedSectionMM2: number | null;
|
|
510
|
+
/** 拟选截面判定 */
|
|
511
|
+
readonly verdict: ThermalStabilityVerdict;
|
|
512
|
+
}
|
|
513
|
+
/**
|
|
514
|
+
* 短路热稳定最小截面:S_min = I_k·√t_k / C,mm²。
|
|
515
|
+
*
|
|
516
|
+
* @param shortCircuitCurrentKA 短路电流,kA
|
|
517
|
+
* @param clearingTimeS 切除时间,s
|
|
518
|
+
* @param thermalCoefficientC 热稳定系数,A·√s/mm²
|
|
519
|
+
*/
|
|
520
|
+
declare function shortCircuitMinSectionMM2(shortCircuitCurrentKA: number, clearingTimeS: number, thermalCoefficientC: number): number;
|
|
521
|
+
/**
|
|
522
|
+
* 短路热稳定校核:给出最小截面,并在提供拟选截面时判定是否满足 S ≥ S_min。
|
|
523
|
+
*/
|
|
524
|
+
declare function shortCircuitCheck(input: ShortCircuitCheckInput): ShortCircuitCheckResult;
|
|
525
|
+
|
|
526
|
+
declare const wearMeta: CalculatorMeta;
|
|
527
|
+
|
|
528
|
+
/** 默认更换阈值,% */
|
|
529
|
+
declare const DEFAULT_REPLACEMENT_THRESHOLD_PERCENT = 20;
|
|
530
|
+
/** 站点计算器内置的 6 个型号及其标称截面,mm² */
|
|
531
|
+
type ContactWireModel = 'CTHM-120' | 'CTHM-150' | 'CTHA-120' | 'CTHA-150' | 'CTHS-120' | 'CTHS-150';
|
|
532
|
+
declare const NOMINAL_SECTION_MM2: Record<ContactWireModel, number>;
|
|
533
|
+
/** 更换判定结果 */
|
|
534
|
+
type WearVerdict = 'keep' | 'replace';
|
|
535
|
+
interface WearBaseInput {
|
|
536
|
+
/** 原截面积 A₀,mm² */
|
|
537
|
+
readonly originalSectionMM2: number;
|
|
538
|
+
/** 更换阈值 η,%。缺省 20 */
|
|
539
|
+
readonly replacementThresholdPercent?: number;
|
|
540
|
+
}
|
|
541
|
+
/** 按实测残截面积计算 */
|
|
542
|
+
interface WearByAreaInput extends WearBaseInput {
|
|
543
|
+
readonly mode: 'area';
|
|
544
|
+
/** 实测残截面积 A,mm²,不得大于 A₀ */
|
|
545
|
+
readonly residualSectionMM2: number;
|
|
546
|
+
}
|
|
547
|
+
/** 按实测残径计算(圆截面近似 A = πd²/4) */
|
|
548
|
+
interface WearByDiameterInput extends WearBaseInput {
|
|
549
|
+
readonly mode: 'residual-diameter';
|
|
550
|
+
/** 实测残径 d,mm */
|
|
551
|
+
readonly residualDiameterMM: number;
|
|
552
|
+
}
|
|
553
|
+
type WearInput = WearByAreaInput | WearByDiameterInput;
|
|
554
|
+
interface WearResult {
|
|
555
|
+
/** 原截面积 A₀,mm² */
|
|
556
|
+
readonly originalSectionMM2: number;
|
|
557
|
+
/** 参与计算的残截面积 A,mm²(残径模式为换算值) */
|
|
558
|
+
readonly residualSectionMM2: number;
|
|
559
|
+
/** 截面损失 A₀ − A,mm² */
|
|
560
|
+
readonly sectionLossMM2: number;
|
|
561
|
+
/** 磨耗率 η,% */
|
|
562
|
+
readonly wearPercent: number;
|
|
563
|
+
/** 使用的更换阈值,% */
|
|
564
|
+
readonly thresholdPercent: number;
|
|
565
|
+
readonly verdict: WearVerdict;
|
|
566
|
+
}
|
|
567
|
+
/**
|
|
568
|
+
* 残径换算为截面积(圆截面近似):A = π·d²/4,mm²。
|
|
569
|
+
*
|
|
570
|
+
* ⚠️ 接触线实际为梯形截面,此换算存在系统性偏差,站点同此口径。
|
|
571
|
+
*/
|
|
572
|
+
declare function sectionFromDiameterMM2(diameterMM: number): number;
|
|
573
|
+
/**
|
|
574
|
+
* 计算磨耗率并给出更换建议。
|
|
575
|
+
*
|
|
576
|
+
* η = (A₀ − A) / A₀ × 100%,η > 阈值时建议更换。
|
|
577
|
+
*/
|
|
578
|
+
declare function wearRatio(input: WearInput): WearResult;
|
|
579
|
+
/** 按型号取标称截面积 A₀,mm² */
|
|
580
|
+
declare function nominalSectionMM2(model: ContactWireModel): number;
|
|
581
|
+
|
|
582
|
+
declare const copperMeta: CalculatorMeta;
|
|
583
|
+
|
|
584
|
+
/** 站点计算器内置的 6 个型号 */
|
|
585
|
+
type CopperWireModel = 'CTHM-120' | 'CTHM-150' | 'CTHA-120' | 'CTHA-150' | 'CTHS-120' | 'CTHS-150';
|
|
586
|
+
interface WireParamEntry {
|
|
587
|
+
/** 单位重量,kg/km(标称值) */
|
|
588
|
+
readonly unitWeightKgPerKm: number;
|
|
589
|
+
/** 20℃ 直流电阻,Ω/km */
|
|
590
|
+
readonly r20OhmPerKm: number;
|
|
591
|
+
/** 150℃ 持续载流量,室内口径,A */
|
|
592
|
+
readonly ampacityIndoor150A: number;
|
|
593
|
+
/** 150℃ 持续载流量,室外口径,A */
|
|
594
|
+
readonly ampacityOutdoor150A: number;
|
|
595
|
+
/** 口径说明:本行实际对应标准中的哪一行 */
|
|
596
|
+
readonly note: string;
|
|
597
|
+
}
|
|
598
|
+
/**
|
|
599
|
+
* 接触线参数表,来源 TB/T 2809-2017。
|
|
600
|
+
*
|
|
601
|
+
* 载流量为 150℃ 持续值(室内/室外双口径,标准表5)。
|
|
602
|
+
*
|
|
603
|
+
* 已与站点 `/calculator/assets/calc-core.js` 中的 COPPER_TABLE 逐项比对,
|
|
604
|
+
* 6 个型号 × 4 项参数完全一致。
|
|
605
|
+
*
|
|
606
|
+
* 注:站点曾因显示层 `fmt()` 的尾零剥离正则把载流量渲染成 43/56(应为 430/560),
|
|
607
|
+
* 已于 R38 之后修复。若再遇渲染值与本表不符,先确认是否为显示层问题:
|
|
608
|
+
* 本表与服务端数据源始终一致。
|
|
609
|
+
*
|
|
610
|
+
* ⚠️ 注意型号口径:CTHM / CTHA / CTHS 是站点计算器的型号代码,与标准中的
|
|
611
|
+
* CTMH / CTA / CTS 并非同名对应。`note` 字段说明各行实际取自标准的哪一行,
|
|
612
|
+
* 交叉引用 TB/T 2809-2017 时请以 note 为准。
|
|
613
|
+
*/
|
|
614
|
+
declare const TB2809_WIRE_PARAMS: Record<CopperWireModel, WireParamEntry>;
|
|
615
|
+
interface CopperLookupInput {
|
|
616
|
+
readonly model: CopperWireModel;
|
|
617
|
+
/** 长度 l,km */
|
|
618
|
+
readonly lengthKm: number;
|
|
619
|
+
/** 环境温度 T,℃ */
|
|
620
|
+
readonly ambientTempDegC: number;
|
|
621
|
+
}
|
|
622
|
+
interface CopperLookupResult extends WireParamEntry {
|
|
623
|
+
readonly model: CopperWireModel;
|
|
624
|
+
/** 总重量 W = w₀ × l,kg */
|
|
625
|
+
readonly totalWeightKg: number;
|
|
626
|
+
/** 温度修正电阻 r_T,Ω/km */
|
|
627
|
+
readonly rTOhmPerKm: number;
|
|
628
|
+
/** 全长温度修正电阻,Ω */
|
|
629
|
+
readonly totalResistanceOhm: number;
|
|
630
|
+
}
|
|
631
|
+
/**
|
|
632
|
+
* 按型号、长度与环境温度给出接触线参数速查结果。
|
|
633
|
+
*/
|
|
634
|
+
declare function wireLookup(input: CopperLookupInput): CopperLookupResult;
|
|
635
|
+
|
|
636
|
+
declare const strokeMeta: CalculatorMeta;
|
|
637
|
+
|
|
638
|
+
/** 补偿装置传动比(滑轮组/棘轮),n:1 中的 n */
|
|
639
|
+
type TransmissionRatio = 2 | 3 | 4;
|
|
640
|
+
/** 常见传动比档位 */
|
|
641
|
+
declare const TRANSMISSION_RATIOS: readonly TransmissionRatio[];
|
|
642
|
+
/** 安装裕度规程下限,mm(原铁运〔2007〕69号第87条) */
|
|
643
|
+
declare const MIN_MARGIN_MM = 200;
|
|
644
|
+
/** 安装裕度设计惯例值,mm(教材/设计惯例,非规程条款) */
|
|
645
|
+
declare const CONVENTIONAL_MARGIN_MM = 300;
|
|
646
|
+
interface StrokeInput {
|
|
647
|
+
/** 锚段长度 L,m(两端锚固点之间) */
|
|
648
|
+
readonly anchorLengthM: number;
|
|
649
|
+
/** 设计温差 Δt,℃(最高与最低设计温度之差) */
|
|
650
|
+
readonly tempRangeDegC: number;
|
|
651
|
+
/** 线膨胀系数 α,1/℃(铜合金约 1.7e-5) */
|
|
652
|
+
readonly expansionPerDegC: number;
|
|
653
|
+
/** 补偿传动比 n(1:2 / 1:3 / 1:4) */
|
|
654
|
+
readonly transmissionRatio: TransmissionRatio;
|
|
655
|
+
/** 安装裕度 S₀,mm */
|
|
656
|
+
readonly marginMM: number;
|
|
657
|
+
/** 装置许用行程,mm。传 null 则不判定 */
|
|
658
|
+
readonly allowableStrokeMM: number | null;
|
|
659
|
+
}
|
|
660
|
+
interface StrokeResult {
|
|
661
|
+
/** 每℃伸缩量 α·L,mm/℃ */
|
|
662
|
+
readonly perDegreeMM: number;
|
|
663
|
+
/** 总伸缩量 ΔL = α·L·Δt,mm */
|
|
664
|
+
readonly elongationMM: number;
|
|
665
|
+
/** 所需行程 S = n·ΔL + S₀,mm */
|
|
666
|
+
readonly requiredStrokeMM: number;
|
|
667
|
+
readonly allowableStrokeMM: number | null;
|
|
668
|
+
/** 富余量 = 许用行程 − 所需行程,mm。未提供许用行程时为 null */
|
|
669
|
+
readonly marginMM: number | null;
|
|
670
|
+
readonly verdict: 'pass' | 'fail' | 'not-assessed';
|
|
671
|
+
}
|
|
672
|
+
/**
|
|
673
|
+
* 温度伸缩量:ΔL = α·L·Δt,mm。
|
|
674
|
+
*
|
|
675
|
+
* @param expansionPerDegC 线膨胀系数 α,1/℃
|
|
676
|
+
* @param anchorLengthM 锚段长度 L,m
|
|
677
|
+
* @param tempRangeDegC 设计温差 Δt,℃
|
|
678
|
+
* @returns 伸缩量,mm
|
|
679
|
+
*/
|
|
680
|
+
declare function elongationMM(expansionPerDegC: number, anchorLengthM: number, tempRangeDegC: number): number;
|
|
681
|
+
/**
|
|
682
|
+
* 补偿行程设计值(含裕度):S = n·ΔL + S₀,mm。
|
|
683
|
+
*
|
|
684
|
+
* @param elongation 总伸缩量 ΔL,mm
|
|
685
|
+
* @param ratio 传动比 n
|
|
686
|
+
* @param marginMM 安装裕度 S₀,mm
|
|
687
|
+
*/
|
|
688
|
+
declare function requiredStrokeMM(elongation: number, ratio: TransmissionRatio, marginMM: number): number;
|
|
689
|
+
/**
|
|
690
|
+
* 计算锚段伸缩量与补偿装置所需行程,并可选对照许用行程校核。
|
|
691
|
+
*
|
|
692
|
+
* ⚠️ 全补偿锚段接触线与承力索须分别计算;本函数单次只算一根线索。
|
|
693
|
+
*/
|
|
694
|
+
declare function strokeCheck(input: StrokeInput): StrokeResult;
|
|
695
|
+
|
|
696
|
+
declare const wavespeedMeta: CalculatorMeta;
|
|
697
|
+
|
|
698
|
+
/** 波速利用率告警阈值(工程经验值) */
|
|
699
|
+
declare const DEFAULT_WARN_THRESHOLD = 0.7;
|
|
700
|
+
interface WaveSpeedInput {
|
|
701
|
+
/** 接触线张力 T,kN */
|
|
702
|
+
readonly tensionKN: number;
|
|
703
|
+
/** 线密度 ρ,kg/m */
|
|
704
|
+
readonly linearMassKgPerM: number;
|
|
705
|
+
/** 列车速度 v,km/h */
|
|
706
|
+
readonly speedKmH: number;
|
|
707
|
+
/** 跨距 l,m */
|
|
708
|
+
readonly spanM: number;
|
|
709
|
+
/** 告警阈值 β。缺省 0.7 */
|
|
710
|
+
readonly warnThreshold?: number;
|
|
711
|
+
}
|
|
712
|
+
interface WaveSpeedResult {
|
|
713
|
+
/** 波传播速度 c = √(T/ρ),m/s */
|
|
714
|
+
readonly waveSpeedMPerS: number;
|
|
715
|
+
/** 波速利用率 β = v/c,无量纲 */
|
|
716
|
+
readonly beta: number;
|
|
717
|
+
/** 波速利用率,% */
|
|
718
|
+
readonly betaPercent: number;
|
|
719
|
+
/** 前三阶固有频率 f₁ ~ f₃,Hz */
|
|
720
|
+
readonly naturalFrequenciesHz: readonly number[];
|
|
721
|
+
/** 一阶共振车速 v_res = f₁·l,km/h */
|
|
722
|
+
readonly resonanceSpeedKmH: number;
|
|
723
|
+
/** β 是否达到告警阈值 */
|
|
724
|
+
readonly warn: boolean;
|
|
725
|
+
}
|
|
726
|
+
/**
|
|
727
|
+
* 波传播速度:c = √(T/ρ),m/s。
|
|
728
|
+
*
|
|
729
|
+
* @param tensionKN 接触线张力 T,kN
|
|
730
|
+
* @param linearMassKgPerM 线密度 ρ,kg/m
|
|
731
|
+
*/
|
|
732
|
+
declare function wavePropagationSpeedMPerS(tensionKN: number, linearMassKgPerM: number): number;
|
|
733
|
+
/**
|
|
734
|
+
* 两端固定弦第 n 阶固有频率:f_n = n/(2L)·√(T/ρ) = n·c/(2L),Hz。
|
|
735
|
+
*
|
|
736
|
+
* @param n 阶次,正整数
|
|
737
|
+
* @param spanM 跨距 L,m
|
|
738
|
+
* @param waveSpeedMPerS 波速 c,m/s
|
|
739
|
+
*/
|
|
740
|
+
declare function naturalFrequencyHz(n: number, spanM: number, waveSpeedMPerS: number): number;
|
|
741
|
+
/** km/h → m/s */
|
|
742
|
+
declare function kmHToMPerS(speedKmH: number): number;
|
|
743
|
+
/**
|
|
744
|
+
* 波速利用率校核。
|
|
745
|
+
*
|
|
746
|
+
* β = v/c;β 越接近 1 越接近共振区,达到阈值(默认 0.7)时告警。
|
|
747
|
+
* 一阶共振车速 v_res 为跨距通过频率与一阶固有频率相遇时的车速。
|
|
748
|
+
*/
|
|
749
|
+
declare function waveSpeedCheck(input: WaveSpeedInput): WaveSpeedResult;
|
|
750
|
+
|
|
751
|
+
declare const voltageDropMeta: CalculatorMeta;
|
|
752
|
+
|
|
753
|
+
/** 25kV 体系常用的末端电压下限,V */
|
|
754
|
+
declare const DEFAULT_MIN_END_VOLTAGE_V = 20000;
|
|
755
|
+
interface VoltageDropInput {
|
|
756
|
+
/** 变电所母线电压 U₀,V */
|
|
757
|
+
readonly busVoltageV: number;
|
|
758
|
+
/** 持续电流 I,A */
|
|
759
|
+
readonly currentA: number;
|
|
760
|
+
/** 20℃ 单位电阻 r₂₀,Ω/km */
|
|
761
|
+
readonly r20OhmPerKm: number;
|
|
762
|
+
/** 供电臂等效长度 L,km */
|
|
763
|
+
readonly feederLengthKm: number;
|
|
764
|
+
/** 环境温度 T,℃。缺省 25 */
|
|
765
|
+
readonly tempDegC?: number;
|
|
766
|
+
/** 并联导线数。缺省 1 */
|
|
767
|
+
readonly parallelCount?: number;
|
|
768
|
+
/** 末端最低允许电压,V。缺省 20000 */
|
|
769
|
+
readonly minEndVoltageV?: number;
|
|
770
|
+
}
|
|
771
|
+
interface VoltageDropResult {
|
|
772
|
+
/** 温度修正(并含并联折减)后的单位电阻 r_T,Ω/km */
|
|
773
|
+
readonly rTOhmPerKm: number;
|
|
774
|
+
/** 电压损失 ΔU,V */
|
|
775
|
+
readonly voltageDropV: number;
|
|
776
|
+
/** 末端电压 U_end,V */
|
|
777
|
+
readonly endVoltageV: number;
|
|
778
|
+
/** 压降率,% */
|
|
779
|
+
readonly dropPercent: number;
|
|
780
|
+
/** 末端电压是否满足要求 */
|
|
781
|
+
readonly passes: boolean;
|
|
782
|
+
}
|
|
783
|
+
/**
|
|
784
|
+
* 电压降校核:ΔU = I·r_T·L(并联 n 路时 r_T/n),U_end = U₀ − ΔU。
|
|
785
|
+
*/
|
|
786
|
+
declare function voltageDropCheck(input: VoltageDropInput): VoltageDropResult;
|
|
787
|
+
|
|
788
|
+
declare const curveStaggerMeta: CalculatorMeta;
|
|
789
|
+
|
|
790
|
+
/** 标准轨距,m */
|
|
791
|
+
declare const STANDARD_GAUGE_M = 1.435;
|
|
792
|
+
/** 滑板面距轨面的常用值,m */
|
|
793
|
+
declare const DEFAULT_PANTOGRAPH_HEIGHT_M = 6;
|
|
794
|
+
interface CurveStaggerInput {
|
|
795
|
+
/** 曲线半径 R,m。直线段传 0 或 Infinity */
|
|
796
|
+
readonly curveRadiusM: number;
|
|
797
|
+
/** 跨距 l,m */
|
|
798
|
+
readonly spanM: number;
|
|
799
|
+
/** 定位点 1 拉出值 a₁,m(曲线内侧为正) */
|
|
800
|
+
readonly stagger1M: number;
|
|
801
|
+
/** 定位点 2 拉出值 a₂,m(曲线内侧为正) */
|
|
802
|
+
readonly stagger2M: number;
|
|
803
|
+
/** 风速 v,m/s */
|
|
804
|
+
readonly windSpeedMPerS: number;
|
|
805
|
+
/** 线索直径 d,m */
|
|
806
|
+
readonly wireDiameterM: number;
|
|
807
|
+
/** 风载体型系数 α */
|
|
808
|
+
readonly dragCoefficient: number;
|
|
809
|
+
/** 线索张力 T,N */
|
|
810
|
+
readonly tensionN: number;
|
|
811
|
+
/** 容许偏移 [e],m */
|
|
812
|
+
readonly allowableOffsetM: number;
|
|
813
|
+
/** 滑板面距轨面 H,m。缺省 6.0 */
|
|
814
|
+
readonly pantographHeightM?: number;
|
|
815
|
+
/** 外轨超高 h,m。缺省 0 */
|
|
816
|
+
readonly cantM?: number;
|
|
817
|
+
/** 轨距 l₀,m。缺省 1.435 */
|
|
818
|
+
readonly gaugeM?: number;
|
|
819
|
+
}
|
|
820
|
+
interface CurveStaggerResult {
|
|
821
|
+
/** 平均拉出值 ā,m */
|
|
822
|
+
readonly meanStaggerM: number;
|
|
823
|
+
/** 曲线矢度 c = l²/(8R),m。直线段为 0 */
|
|
824
|
+
readonly versineM: number;
|
|
825
|
+
/** 超高横移 δ = H·h/l₀,m */
|
|
826
|
+
readonly cantShiftM: number;
|
|
827
|
+
/** 跨中风偏 p_w,m */
|
|
828
|
+
readonly windOffsetM: number;
|
|
829
|
+
/** 矢度与拉出值同向时的偏移,m */
|
|
830
|
+
readonly offsetPlusM: number;
|
|
831
|
+
/** 矢度与拉出值反向时的偏移,m */
|
|
832
|
+
readonly offsetMinusM: number;
|
|
833
|
+
/** 取两者较大值,m */
|
|
834
|
+
readonly maxOffsetM: number;
|
|
835
|
+
/** 是否满足容许偏移 */
|
|
836
|
+
readonly passes: boolean;
|
|
837
|
+
}
|
|
838
|
+
/**
|
|
839
|
+
* 曲线矢度:c = l² / (8R),m。
|
|
840
|
+
* 直线段(R = 0 或 Infinity)返回 0。
|
|
841
|
+
*/
|
|
842
|
+
declare function versineM(spanM: number, curveRadiusM: number): number;
|
|
843
|
+
/**
|
|
844
|
+
* 超高横移:δ = H·h / l₀,m。
|
|
845
|
+
*
|
|
846
|
+
* @param cantM 外轨超高 h,m
|
|
847
|
+
* @param pantographHeightM 滑板面距轨面 H,m
|
|
848
|
+
* @param gaugeM 轨距 l₀,m
|
|
849
|
+
*/
|
|
850
|
+
declare function cantShiftM(cantM: number, pantographHeightM?: number, gaugeM?: number): number;
|
|
851
|
+
/**
|
|
852
|
+
* 曲线区段跨中综合偏移校核。
|
|
853
|
+
*
|
|
854
|
+
* 风偏取风向垂直线路的最不利工况(sin²θ = 1)。
|
|
855
|
+
*
|
|
856
|
+
* ⚠️ 与站点源码一致:超高横移 δ 会计算并返回,但**不参与** e 的合成。
|
|
857
|
+
* 站点 JSDoc 描述的公式为 `e = |ā ± c ∓ δ| + p_w`,与其实现不符;
|
|
858
|
+
* 若站点后续修正,本库的 offsetPlusM / offsetMinusM 需同步调整。
|
|
859
|
+
*/
|
|
860
|
+
declare function curveStaggerCheck(input: CurveStaggerInput): CurveStaggerResult;
|
|
861
|
+
|
|
862
|
+
declare const icingMeta: CalculatorMeta;
|
|
863
|
+
|
|
864
|
+
interface IcingCheckInput {
|
|
865
|
+
/** 线索直径 d,m */
|
|
866
|
+
readonly wireDiameterM: number;
|
|
867
|
+
/** 覆冰厚度 b,m。传 0 表示无冰 */
|
|
868
|
+
readonly iceThicknessM: number;
|
|
869
|
+
/** 线索张力 T,N */
|
|
870
|
+
readonly tensionN: number;
|
|
871
|
+
/** 跨距 l,m */
|
|
872
|
+
readonly spanM: number;
|
|
873
|
+
/** 线索自重 g_self,N/m */
|
|
874
|
+
readonly selfWeightNPerM: number;
|
|
875
|
+
/** 冰密度 ρ_ice,kg/m³。缺省 900 */
|
|
876
|
+
readonly iceDensityKgPerM3?: number;
|
|
877
|
+
}
|
|
878
|
+
interface IcingCheckResult {
|
|
879
|
+
/** 单位长度冰重 g_ice,N/m */
|
|
880
|
+
readonly iceLoadNPerM: number;
|
|
881
|
+
/** 覆冰后总垂直荷载 g_total,N/m */
|
|
882
|
+
readonly totalLoadNPerM: number;
|
|
883
|
+
/** 无冰弛度 f₀,m */
|
|
884
|
+
readonly sagNoIceM: number;
|
|
885
|
+
/** 覆冰弛度 f_ice,m */
|
|
886
|
+
readonly sagWithIceM: number;
|
|
887
|
+
/** 弛度增幅,% */
|
|
888
|
+
readonly growthPercent: number;
|
|
889
|
+
/** 冰重是否超过线索自重(重覆冰判据) */
|
|
890
|
+
readonly heavy: boolean;
|
|
891
|
+
}
|
|
892
|
+
/**
|
|
893
|
+
* 覆冰综合校核。
|
|
894
|
+
*
|
|
895
|
+
* 给出覆冰后的总垂直荷载、弛度及增幅;冰重超过线索自重时 `heavy` 为真。
|
|
896
|
+
*
|
|
897
|
+
* ⚠️ 弛度按抛物线近似,且**未与张力-温度状态方程耦合** —— 覆冰引起的
|
|
898
|
+
* 张力变化未计入,大覆冰工况偏于乐观。
|
|
899
|
+
*/
|
|
900
|
+
declare function icingCheck(input: IcingCheckInput): IcingCheckResult;
|
|
901
|
+
|
|
902
|
+
export { AIR_DENSITY_KG_PER_M3, type AmpacityCondition, type AmpacityDeratingInput, type AmpacityDeratingResult, type AmpacityEntry, CONVENTIONAL_MARGIN_MM, COPPER_ALLOY_ALPHA_PER_DEG_C, COPPER_ALPHA_PER_DEG_C, type CalculatorMeta, type ContactForceInput, type ContactForceResult, type ContactWireModel, type ContactWireTypeCode, type CopperLookupInput, type CopperLookupResult, type CopperWireModel, type CrossSectionMM2, type CurveStaggerInput, type CurveStaggerResult, DEFAULT_BASE_AMBIENT_TEMP_DEG_C, DEFAULT_ICE_DENSITY_KG_PER_M3, DEFAULT_MIN_END_VOLTAGE_V, DEFAULT_PANTOGRAPH_HEIGHT_M, DEFAULT_REPLACEMENT_THRESHOLD_PERCENT, DEFAULT_WARN_THRESHOLD, type DropperInput, type DropperPoint, type DropperResult, G0, IACS_RESISTIVITY_OHM_MM2_PER_M, type IceLoadParams, type IcingCheckInput, type IcingCheckResult, type LimitVerdict, MIN_MARGIN_MM, NOMINAL_SECTION_MM2, type PowerSystem, REFERENCE_DENSITY_G_PER_CM3, REF_TARGET_COEFF, REF_TARGET_OFFSET_N, STANDARD_GAUGE_M, type ShortCircuitCheckInput, type ShortCircuitCheckResult, type StrokeInput, type StrokeResult, type SuspensionType, TB2809_AMPACITY_A, TB2809_WIRE_PARAMS, TRANSMISSION_RATIOS, type TensionCurveInput, type TensionPointInput, type TensionResult, type ThermalStabilityVerdict, type TransmissionRatio, type VoltageDropInput, type VoltageDropResult, WIRE_PRESETS, type WaveSpeedInput, type WaveSpeedResult, type WearByAreaInput, type WearByDiameterInput, type WearInput, type WearResult, type WearVerdict, type WindClearanceInput, type WindClearanceResult, type WindLoadInput, type WireParamEntry, type WireSpec, ampacityDeratingFactor, ampacityMeta, assessContactForce, cantShiftM, copperMeta, curveStaggerCheck, curveStaggerMeta, deratedAmpacityA, deriveLinearMassKgPerM, dropperLengths, dropperMeta, dropperPositionsM, elongationMM, equivalentSpanM, findAmpacityA, findWirePreset, forceMeta, iceLoadNPerM, icingCheck, icingMeta, kmHToMPerS, maxParabolaSagM, naturalFrequencyHz, nominalSectionMM2, parabolaSagM, referenceTargetForceN, requiredStrokeMM, resistanceAtTempOhmPerKm, sagM, sectionFromDiameterMM2, shortCircuitCheck, shortCircuitMinSectionMM2, solveTensionN, stateCoefficientK, statisticalForcesN, strokeCheck, strokeMeta, tensionAt, tensionCurve, tensionMeta, versineM, voltageDropCheck, voltageDropMeta, wavePropagationSpeedMPerS, waveSpeedCheck, wavespeedMeta, wearMeta, wearRatio, weightOfPresetNPerM, weightPerLengthNPerM, windClearanceCheck, windDeflectionM, windLoadNPerM, windMeta, wireLookup };
|