ocs-calculators 0.1.2 → 0.2.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 +12 -0
- package/README.md +3 -3
- package/README_EN.md +1 -1
- package/dist/anchor-length/index.cjs +11 -0
- package/dist/anchor-length/index.cjs.map +1 -0
- package/dist/anchor-length/index.d.cts +45 -0
- package/dist/anchor-length/index.d.ts +45 -0
- package/dist/anchor-length/index.js +11 -0
- package/dist/anchor-length/index.js.map +1 -0
- package/dist/bvalue/index.cjs +9 -0
- package/dist/bvalue/index.cjs.map +1 -0
- package/dist/bvalue/index.d.cts +35 -0
- package/dist/bvalue/index.d.ts +35 -0
- package/dist/bvalue/index.js +9 -0
- package/dist/bvalue/index.js.map +1 -0
- package/dist/cantilever/index.cjs +11 -0
- package/dist/cantilever/index.cjs.map +1 -0
- package/dist/cantilever/index.d.cts +31 -0
- package/dist/cantilever/index.d.ts +31 -0
- package/dist/cantilever/index.js +11 -0
- package/dist/cantilever/index.js.map +1 -0
- package/dist/chunk-3GREMF76.js +44 -0
- package/dist/chunk-3GREMF76.js.map +1 -0
- package/dist/chunk-4344WWAF.cjs +58 -0
- package/dist/chunk-4344WWAF.cjs.map +1 -0
- package/dist/chunk-57J7I6JA.cjs +116 -0
- package/dist/chunk-57J7I6JA.cjs.map +1 -0
- package/dist/chunk-75EGROQB.js +53 -0
- package/dist/chunk-75EGROQB.js.map +1 -0
- package/dist/chunk-C2XU3XKP.js +46 -0
- package/dist/chunk-C2XU3XKP.js.map +1 -0
- package/dist/chunk-CLVLOLUJ.js +45 -0
- package/dist/chunk-CLVLOLUJ.js.map +1 -0
- package/dist/chunk-CSLI5HEJ.cjs +53 -0
- package/dist/chunk-CSLI5HEJ.cjs.map +1 -0
- package/dist/chunk-D5F5ES2R.js +163 -0
- package/dist/chunk-D5F5ES2R.js.map +1 -0
- package/dist/chunk-HXALVJ4G.cjs +44 -0
- package/dist/chunk-HXALVJ4G.cjs.map +1 -0
- package/dist/chunk-HZWNKKIB.js +42 -0
- package/dist/chunk-HZWNKKIB.js.map +1 -0
- package/dist/{chunk-CVA4EH2K.js → chunk-IQR3SRCD.js} +9 -9
- package/dist/chunk-IQR3SRCD.js.map +1 -0
- package/dist/chunk-LBGUOTCJ.cjs +45 -0
- package/dist/chunk-LBGUOTCJ.cjs.map +1 -0
- package/dist/{chunk-MZBQ4546.cjs → chunk-MTAYG3U2.cjs} +9 -9
- package/dist/chunk-MTAYG3U2.cjs.map +1 -0
- package/dist/chunk-PYNVEHGR.cjs +46 -0
- package/dist/chunk-PYNVEHGR.cjs.map +1 -0
- package/dist/chunk-TO46PTS3.js +116 -0
- package/dist/chunk-TO46PTS3.js.map +1 -0
- package/dist/chunk-VXVTT6WS.js +58 -0
- package/dist/chunk-VXVTT6WS.js.map +1 -0
- package/dist/chunk-WGTOBRYV.cjs +42 -0
- package/dist/chunk-WGTOBRYV.cjs.map +1 -0
- package/dist/chunk-X25CXRVE.cjs +163 -0
- package/dist/chunk-X25CXRVE.cjs.map +1 -0
- package/dist/copper/index.cjs +2 -2
- package/dist/copper/index.d.cts +2 -2
- package/dist/copper/index.d.ts +2 -2
- package/dist/copper/index.js +1 -1
- package/dist/creepage/index.cjs +15 -0
- package/dist/creepage/index.cjs.map +1 -0
- package/dist/creepage/index.d.cts +40 -0
- package/dist/creepage/index.d.ts +40 -0
- package/dist/creepage/index.js +15 -0
- package/dist/creepage/index.js.map +1 -0
- package/dist/cross-span/index.cjs +9 -0
- package/dist/cross-span/index.cjs.map +1 -0
- package/dist/cross-span/index.d.cts +68 -0
- package/dist/cross-span/index.d.ts +68 -0
- package/dist/cross-span/index.js +9 -0
- package/dist/cross-span/index.js.map +1 -0
- package/dist/index.cjs +83 -15
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -2
- package/dist/index.d.ts +10 -2
- package/dist/index.js +92 -24
- package/dist/index.js.map +1 -1
- package/dist/pole-capacity/index.cjs +13 -0
- package/dist/pole-capacity/index.cjs.map +1 -0
- package/dist/pole-capacity/index.d.cts +47 -0
- package/dist/pole-capacity/index.d.ts +47 -0
- package/dist/pole-capacity/index.js +13 -0
- package/dist/pole-capacity/index.js.map +1 -0
- package/dist/sag/index.cjs +13 -0
- package/dist/sag/index.cjs.map +1 -0
- package/dist/sag/index.d.cts +21 -0
- package/dist/sag/index.d.ts +21 -0
- package/dist/sag/index.js +13 -0
- package/dist/sag/index.js.map +1 -0
- package/dist/steady-arm/index.cjs +11 -0
- package/dist/steady-arm/index.cjs.map +1 -0
- package/dist/steady-arm/index.d.cts +66 -0
- package/dist/steady-arm/index.d.ts +66 -0
- package/dist/steady-arm/index.js +11 -0
- package/dist/steady-arm/index.js.map +1 -0
- package/package.json +43 -3
- package/dist/chunk-CVA4EH2K.js.map +0 -1
- package/dist/chunk-MZBQ4546.cjs.map +0 -1
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { C as CalculatorMeta } from '../types-C2OanO8N.js';
|
|
2
|
+
|
|
3
|
+
declare const poleCapacityMeta: CalculatorMeta;
|
|
4
|
+
|
|
5
|
+
/** GB/T 25020.1-2025 格构式钢支柱标称容量系列(表 A.2),kN·m */
|
|
6
|
+
declare const STEEL_POLE_SERIES_KNM: readonly [150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 750, 900, 1050, 1200, 1500];
|
|
7
|
+
/** 承载力检验弯矩 = 1.5 × 标称容量(25020.1 表 A.2 表值规律) */
|
|
8
|
+
declare const TEST_MOMENT_FACTOR = 1.5;
|
|
9
|
+
/** 支柱容量校核输入。单位:kN、m、mm、Pa。 */
|
|
10
|
+
interface PoleCapacityInput {
|
|
11
|
+
/** 区段类型 */
|
|
12
|
+
readonly section: 'line' | 'curve';
|
|
13
|
+
/** 接触线张力 T_j,kN */
|
|
14
|
+
readonly contactWireTensionKN: number;
|
|
15
|
+
/** 承力索张力 T_c,kN */
|
|
16
|
+
readonly messengerTensionKN: number;
|
|
17
|
+
/** 拉出值 a,mm */
|
|
18
|
+
readonly staggerMM: number;
|
|
19
|
+
/** 跨距 l,m */
|
|
20
|
+
readonly spanM: number;
|
|
21
|
+
/** 曲线半径 R,m(曲线区段) */
|
|
22
|
+
readonly curveRadiusM?: number;
|
|
23
|
+
/** 水平力合力作用高度 h_e,m */
|
|
24
|
+
readonly resultantHeightM: number;
|
|
25
|
+
/** 设计最大风压 P,Pa */
|
|
26
|
+
readonly windPressurePa: number;
|
|
27
|
+
/** 支柱迎风宽度 b,m */
|
|
28
|
+
readonly poleWidthM: number;
|
|
29
|
+
/** 支柱高度 h,m */
|
|
30
|
+
readonly poleHeightM: number;
|
|
31
|
+
/** 线索风载 F_wl,N */
|
|
32
|
+
readonly wireWindLoadN?: number;
|
|
33
|
+
}
|
|
34
|
+
interface PoleCapacityResult {
|
|
35
|
+
/** 悬挂水平力 F_h,N */
|
|
36
|
+
readonly horizontalForceN: number;
|
|
37
|
+
/** 工作弯矩 M,kN·m */
|
|
38
|
+
readonly workMomentKNM: number;
|
|
39
|
+
/** 折合标称容量(÷1.5),kN·m */
|
|
40
|
+
readonly nominalNeedKNM: number;
|
|
41
|
+
/** 选型结果 */
|
|
42
|
+
readonly selection: string | null;
|
|
43
|
+
}
|
|
44
|
+
/** 支柱容量选型(容量比较法,TB/T 2286 5.9.2 检验弯矩口径;钢柱 25020.1 5.1.1+附录A) */
|
|
45
|
+
declare function poleCapacityCheck(input: PoleCapacityInput): PoleCapacityResult;
|
|
46
|
+
|
|
47
|
+
export { type PoleCapacityInput, type PoleCapacityResult, STEEL_POLE_SERIES_KNM, TEST_MOMENT_FACTOR, poleCapacityCheck, poleCapacityMeta };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import {
|
|
2
|
+
STEEL_POLE_SERIES_KNM,
|
|
3
|
+
TEST_MOMENT_FACTOR,
|
|
4
|
+
poleCapacityCheck,
|
|
5
|
+
poleCapacityMeta
|
|
6
|
+
} from "../chunk-VXVTT6WS.js";
|
|
7
|
+
export {
|
|
8
|
+
STEEL_POLE_SERIES_KNM,
|
|
9
|
+
TEST_MOMENT_FACTOR,
|
|
10
|
+
poleCapacityCheck,
|
|
11
|
+
poleCapacityMeta
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkPYNVEHGRcjs = require('../chunk-PYNVEHGR.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
exports.maxSpanFromSagM = _chunkPYNVEHGRcjs.maxSpanFromSagM; exports.sagMM = _chunkPYNVEHGRcjs.sagMM; exports.sagMeta = _chunkPYNVEHGRcjs.sagMeta; exports.tensionFromSagKN = _chunkPYNVEHGRcjs.tensionFromSagKN;
|
|
13
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/ocs-calculators/ocs-calculators/dist/sag/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACF,iNAAC","file":"/home/runner/work/ocs-calculators/ocs-calculators/dist/sag/index.cjs"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { C as CalculatorMeta } from '../types-C2OanO8N.cjs';
|
|
2
|
+
|
|
3
|
+
declare const sagMeta: CalculatorMeta;
|
|
4
|
+
|
|
5
|
+
/** 弛度计算参数。单位:张力 kN、跨距 m、单位重 N/m。 */
|
|
6
|
+
interface SagInput {
|
|
7
|
+
/** 接触线/承力索张力 T,kN */
|
|
8
|
+
readonly tensionKN: number;
|
|
9
|
+
/** 跨距 l,m */
|
|
10
|
+
readonly spanM: number;
|
|
11
|
+
/** 单位长度重量 g,N/m */
|
|
12
|
+
readonly weightNPerM: number;
|
|
13
|
+
}
|
|
14
|
+
/** 弛度 f = g·l²/(8T),mm */
|
|
15
|
+
declare function sagMM(input: SagInput): number;
|
|
16
|
+
/** 反算张力:给定弛度求张力 T = g·l²/(8·f),kN */
|
|
17
|
+
declare function tensionFromSagKN(weightNPerM: number, spanM: number, sagMM: number): number;
|
|
18
|
+
/** 反算最大跨距:给定张力与限值弛度 l_max = √(8·T·f_max/g),m */
|
|
19
|
+
declare function maxSpanFromSagM(weightNPerM: number, tensionKN: number, sagLimitMM: number): number;
|
|
20
|
+
|
|
21
|
+
export { type SagInput, maxSpanFromSagM, sagMM, sagMeta, tensionFromSagKN };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { C as CalculatorMeta } from '../types-C2OanO8N.js';
|
|
2
|
+
|
|
3
|
+
declare const sagMeta: CalculatorMeta;
|
|
4
|
+
|
|
5
|
+
/** 弛度计算参数。单位:张力 kN、跨距 m、单位重 N/m。 */
|
|
6
|
+
interface SagInput {
|
|
7
|
+
/** 接触线/承力索张力 T,kN */
|
|
8
|
+
readonly tensionKN: number;
|
|
9
|
+
/** 跨距 l,m */
|
|
10
|
+
readonly spanM: number;
|
|
11
|
+
/** 单位长度重量 g,N/m */
|
|
12
|
+
readonly weightNPerM: number;
|
|
13
|
+
}
|
|
14
|
+
/** 弛度 f = g·l²/(8T),mm */
|
|
15
|
+
declare function sagMM(input: SagInput): number;
|
|
16
|
+
/** 反算张力:给定弛度求张力 T = g·l²/(8·f),kN */
|
|
17
|
+
declare function tensionFromSagKN(weightNPerM: number, spanM: number, sagMM: number): number;
|
|
18
|
+
/** 反算最大跨距:给定张力与限值弛度 l_max = √(8·T·f_max/g),m */
|
|
19
|
+
declare function maxSpanFromSagM(weightNPerM: number, tensionKN: number, sagLimitMM: number): number;
|
|
20
|
+
|
|
21
|
+
export { type SagInput, maxSpanFromSagM, sagMM, sagMeta, tensionFromSagKN };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
var _chunk57J7I6JAcjs = require('../chunk-57J7I6JA.cjs');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
exports.steadyArmAngleDeg = _chunk57J7I6JAcjs.steadyArmAngleDeg; exports.steadyArmCheck = _chunk57J7I6JAcjs.steadyArmCheck; exports.steadyArmMeta = _chunk57J7I6JAcjs.steadyArmMeta;
|
|
11
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/ocs-calculators/ocs-calculators/dist/steady-arm/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACF,oLAAC","file":"/home/runner/work/ocs-calculators/ocs-calculators/dist/steady-arm/index.cjs"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { C as CalculatorMeta } from '../types-C2OanO8N.cjs';
|
|
2
|
+
|
|
3
|
+
declare const steadyArmMeta: CalculatorMeta;
|
|
4
|
+
|
|
5
|
+
/** 定位器坡度校核的输入参数 */
|
|
6
|
+
interface SteadyArmInput {
|
|
7
|
+
/** 接触线张力 T,kN */
|
|
8
|
+
readonly contactWireTensionKN: number;
|
|
9
|
+
/** 拉出值 a,mm(内部换算 m) */
|
|
10
|
+
readonly staggerMM: number;
|
|
11
|
+
/** 跨距 l,m */
|
|
12
|
+
readonly spanM: number;
|
|
13
|
+
/** 曲线半径 R,m。undefined 表示直线区段 */
|
|
14
|
+
readonly curveRadiusM?: number;
|
|
15
|
+
/** 第一吊弦距定位点距离 l₁,m */
|
|
16
|
+
readonly firstDropperOffsetM: number;
|
|
17
|
+
/** 接触线单位重 g_j,kN/m */
|
|
18
|
+
readonly wireWeightKNPerM: number;
|
|
19
|
+
/** 定位器自重 G_d,kN */
|
|
20
|
+
readonly regulatorSelfWeightKN: number;
|
|
21
|
+
}
|
|
22
|
+
/** 定位器受力与坡度角计算结果 */
|
|
23
|
+
interface SteadyArmAngleResult {
|
|
24
|
+
/** 直线之字力 Fz,kN */
|
|
25
|
+
readonly staggerForceKN: number;
|
|
26
|
+
/** 曲线力 Fq,kN(直线区段为 0) */
|
|
27
|
+
readonly curveForceKN: number;
|
|
28
|
+
/** 水平合成力 Fs,kN(直线为 Fz;曲线为 |Fq − Fz|) */
|
|
29
|
+
readonly horizontalForceKN: number;
|
|
30
|
+
/** 垂直力 Fc,kN */
|
|
31
|
+
readonly verticalForceKN: number;
|
|
32
|
+
/** 坡度角 θ = atan(Fc/Fs),度 */
|
|
33
|
+
readonly angleDeg: number;
|
|
34
|
+
/** 坡度比(垂直∶水平)= 1∶n,n = Fs/Fc */
|
|
35
|
+
readonly slopeRatio: number;
|
|
36
|
+
/** 是否为直线区段 */
|
|
37
|
+
readonly isStraight: boolean;
|
|
38
|
+
}
|
|
39
|
+
/** 定位器坡度校核结果 */
|
|
40
|
+
interface SteadyArmCheckResult extends SteadyArmAngleResult {
|
|
41
|
+
/** 是否满足限值要求 */
|
|
42
|
+
readonly passes: boolean;
|
|
43
|
+
/** 判定理由 */
|
|
44
|
+
readonly reason: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 定位器坡度计算(纯函数):
|
|
48
|
+
* Fz = 4·T·a/l (直线之字力,a 由 mm 换算 m)
|
|
49
|
+
* Fq = T·l/R (曲线力)
|
|
50
|
+
* Fs = |Fq − Fz| (曲线合成,直线时 Fs = Fz)
|
|
51
|
+
* Fc = g_j·l₁ + G_d (垂直力)
|
|
52
|
+
* θ = atan(Fc/Fs) (坡度角,弧度转度)
|
|
53
|
+
* n = Fs/Fc (坡度比 1∶n)
|
|
54
|
+
*/
|
|
55
|
+
declare function steadyArmAngleDeg(input: SteadyArmInput): SteadyArmAngleResult;
|
|
56
|
+
/**
|
|
57
|
+
* 定位器坡度限值校核。
|
|
58
|
+
*
|
|
59
|
+
* 限值(300 km/h 及以上高铁期刊口径,罗健等《高速铁路接触网定位器坡度问题的深化研究》,
|
|
60
|
+
* 铁道工程学报 2013,30(1):76-80):
|
|
61
|
+
* - 直线区段:θ ≥ 8°
|
|
62
|
+
* - 曲线区段:6° ≤ θ ≤ 16°
|
|
63
|
+
*/
|
|
64
|
+
declare function steadyArmCheck(input: SteadyArmInput): SteadyArmCheckResult;
|
|
65
|
+
|
|
66
|
+
export { type SteadyArmAngleResult, type SteadyArmCheckResult, type SteadyArmInput, steadyArmAngleDeg, steadyArmCheck, steadyArmMeta };
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { C as CalculatorMeta } from '../types-C2OanO8N.js';
|
|
2
|
+
|
|
3
|
+
declare const steadyArmMeta: CalculatorMeta;
|
|
4
|
+
|
|
5
|
+
/** 定位器坡度校核的输入参数 */
|
|
6
|
+
interface SteadyArmInput {
|
|
7
|
+
/** 接触线张力 T,kN */
|
|
8
|
+
readonly contactWireTensionKN: number;
|
|
9
|
+
/** 拉出值 a,mm(内部换算 m) */
|
|
10
|
+
readonly staggerMM: number;
|
|
11
|
+
/** 跨距 l,m */
|
|
12
|
+
readonly spanM: number;
|
|
13
|
+
/** 曲线半径 R,m。undefined 表示直线区段 */
|
|
14
|
+
readonly curveRadiusM?: number;
|
|
15
|
+
/** 第一吊弦距定位点距离 l₁,m */
|
|
16
|
+
readonly firstDropperOffsetM: number;
|
|
17
|
+
/** 接触线单位重 g_j,kN/m */
|
|
18
|
+
readonly wireWeightKNPerM: number;
|
|
19
|
+
/** 定位器自重 G_d,kN */
|
|
20
|
+
readonly regulatorSelfWeightKN: number;
|
|
21
|
+
}
|
|
22
|
+
/** 定位器受力与坡度角计算结果 */
|
|
23
|
+
interface SteadyArmAngleResult {
|
|
24
|
+
/** 直线之字力 Fz,kN */
|
|
25
|
+
readonly staggerForceKN: number;
|
|
26
|
+
/** 曲线力 Fq,kN(直线区段为 0) */
|
|
27
|
+
readonly curveForceKN: number;
|
|
28
|
+
/** 水平合成力 Fs,kN(直线为 Fz;曲线为 |Fq − Fz|) */
|
|
29
|
+
readonly horizontalForceKN: number;
|
|
30
|
+
/** 垂直力 Fc,kN */
|
|
31
|
+
readonly verticalForceKN: number;
|
|
32
|
+
/** 坡度角 θ = atan(Fc/Fs),度 */
|
|
33
|
+
readonly angleDeg: number;
|
|
34
|
+
/** 坡度比(垂直∶水平)= 1∶n,n = Fs/Fc */
|
|
35
|
+
readonly slopeRatio: number;
|
|
36
|
+
/** 是否为直线区段 */
|
|
37
|
+
readonly isStraight: boolean;
|
|
38
|
+
}
|
|
39
|
+
/** 定位器坡度校核结果 */
|
|
40
|
+
interface SteadyArmCheckResult extends SteadyArmAngleResult {
|
|
41
|
+
/** 是否满足限值要求 */
|
|
42
|
+
readonly passes: boolean;
|
|
43
|
+
/** 判定理由 */
|
|
44
|
+
readonly reason: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 定位器坡度计算(纯函数):
|
|
48
|
+
* Fz = 4·T·a/l (直线之字力,a 由 mm 换算 m)
|
|
49
|
+
* Fq = T·l/R (曲线力)
|
|
50
|
+
* Fs = |Fq − Fz| (曲线合成,直线时 Fs = Fz)
|
|
51
|
+
* Fc = g_j·l₁ + G_d (垂直力)
|
|
52
|
+
* θ = atan(Fc/Fs) (坡度角,弧度转度)
|
|
53
|
+
* n = Fs/Fc (坡度比 1∶n)
|
|
54
|
+
*/
|
|
55
|
+
declare function steadyArmAngleDeg(input: SteadyArmInput): SteadyArmAngleResult;
|
|
56
|
+
/**
|
|
57
|
+
* 定位器坡度限值校核。
|
|
58
|
+
*
|
|
59
|
+
* 限值(300 km/h 及以上高铁期刊口径,罗健等《高速铁路接触网定位器坡度问题的深化研究》,
|
|
60
|
+
* 铁道工程学报 2013,30(1):76-80):
|
|
61
|
+
* - 直线区段:θ ≥ 8°
|
|
62
|
+
* - 曲线区段:6° ≤ θ ≤ 16°
|
|
63
|
+
*/
|
|
64
|
+
declare function steadyArmCheck(input: SteadyArmInput): SteadyArmCheckResult;
|
|
65
|
+
|
|
66
|
+
export { type SteadyArmAngleResult, type SteadyArmCheckResult, type SteadyArmInput, steadyArmAngleDeg, steadyArmCheck, steadyArmMeta };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ocs-calculators",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "铁路接触网(OCS)工程计算工具集 —— 张力、弛度、吊弦、风偏移等计算,零依赖纯函数实现 / Railway overhead contact system (OCS) engineering calculators as zero-dependency pure functions",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"catenary",
|
|
@@ -87,7 +87,47 @@
|
|
|
87
87
|
"import": "./dist/wear/index.js",
|
|
88
88
|
"require": "./dist/wear/index.cjs"
|
|
89
89
|
},
|
|
90
|
-
"./package.json": "./package.json"
|
|
90
|
+
"./package.json": "./package.json",
|
|
91
|
+
"steady-arm": {
|
|
92
|
+
"types": "./dist/steady-arm/index.d.ts",
|
|
93
|
+
"import": "./dist/steady-arm/index.js",
|
|
94
|
+
"require": "./dist/steady-arm/index.cjs"
|
|
95
|
+
},
|
|
96
|
+
"cross-span": {
|
|
97
|
+
"types": "./dist/cross-span/index.d.ts",
|
|
98
|
+
"import": "./dist/cross-span/index.js",
|
|
99
|
+
"require": "./dist/cross-span/index.cjs"
|
|
100
|
+
},
|
|
101
|
+
"bvalue": {
|
|
102
|
+
"types": "./dist/bvalue/index.d.ts",
|
|
103
|
+
"import": "./dist/bvalue/index.js",
|
|
104
|
+
"require": "./dist/bvalue/index.cjs"
|
|
105
|
+
},
|
|
106
|
+
"sag": {
|
|
107
|
+
"types": "./dist/sag/index.d.ts",
|
|
108
|
+
"import": "./dist/sag/index.js",
|
|
109
|
+
"require": "./dist/sag/index.cjs"
|
|
110
|
+
},
|
|
111
|
+
"anchor-length": {
|
|
112
|
+
"types": "./dist/anchor-length/index.d.ts",
|
|
113
|
+
"import": "./dist/anchor-length/index.js",
|
|
114
|
+
"require": "./dist/anchor-length/index.cjs"
|
|
115
|
+
},
|
|
116
|
+
"creepage": {
|
|
117
|
+
"types": "./dist/creepage/index.d.ts",
|
|
118
|
+
"import": "./dist/creepage/index.js",
|
|
119
|
+
"require": "./dist/creepage/index.cjs"
|
|
120
|
+
},
|
|
121
|
+
"pole-capacity": {
|
|
122
|
+
"types": "./dist/pole-capacity/index.d.ts",
|
|
123
|
+
"import": "./dist/pole-capacity/index.js",
|
|
124
|
+
"require": "./dist/pole-capacity/index.cjs"
|
|
125
|
+
},
|
|
126
|
+
"cantilever": {
|
|
127
|
+
"types": "./dist/cantilever/index.d.ts",
|
|
128
|
+
"import": "./dist/cantilever/index.js",
|
|
129
|
+
"require": "./dist/cantilever/index.cjs"
|
|
130
|
+
}
|
|
91
131
|
},
|
|
92
132
|
"files": [
|
|
93
133
|
"dist",
|
|
@@ -121,4 +161,4 @@
|
|
|
121
161
|
"url": "https://github.com/showhoo/ocs-calculators/issues"
|
|
122
162
|
},
|
|
123
163
|
"author": "思维接触网百科"
|
|
124
|
-
}
|
|
164
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/copper/meta.ts","../src/copper/index.ts"],"sourcesContent":["import type { CalculatorMeta } from '../types';\n\nexport const copperMeta: CalculatorMeta = {\n name: '接触线参数速查',\n nameEn: 'Contact Wire Parameter Lookup',\n summary:\n '内置 CTHM / CTHA / CTHS 系列 120/150 mm² 接触线参数表,按长度与环境温度给出总重量与温度修正电阻。',\n formula: [\n '电阻温度修正(α = 0.00393 /℃):r_T = r₂₀·[1 + α·(T − 20)]',\n '总重量:W = w₀ × l(w₀ 单位重量 kg/km,l 长度 km)',\n ],\n references: [\n '内置参数表来源 TB/T 2809-2017《电气化铁路用铜及铜合金接触线》(2018-05-01 实施)',\n '单位重量为标称值',\n '载流量为 150℃ 持续值,室内/室外双口径按标准表5',\n 'r₂₀ 除 CTHM-120 取给定值外,均按导电率反算估算(IACS 标准电阻率 0.017241 Ω·mm²/m ÷ 导电率 ÷ 截面积;0.017241 = 1/58)',\n '正式工程以产品标准与出厂检验单为准',\n ],\n scope: [\n '温度修正仅覆盖电阻,未修正单位重量与载流量',\n '适用温度 −40 ~ 90 ℃',\n '载流量为 150℃ 允许温度下的持续值,未做环境温度修正',\n ],\n disclaimer: '本工具结果仅供参考,工程应用以设计文件为准。详见 DISCLAIMER.md。',\n online: 'https://www.itswe.com/calculator/copper/',\n};\n","export { copperMeta } from './meta';\n\n// 电阻温度修正与铜常数统一放在 src/common/resistance.ts(copper 与 voltage-drop 共用),\n// 由根 index 统一导出,此处仅内部引用,避免重复导出同名符号。\nimport { resistanceAtTempOhmPerKm } from '../common/resistance';\n\n/** 站点计算器内置的 6 个型号 */\nexport type CopperWireModel =\n | 'CTHM-120'\n | 'CTHM-150'\n | 'CTHA-120'\n | 'CTHA-150'\n | 'CTHS-120'\n | 'CTHS-150';\n\nexport interface WireParamEntry {\n /** 单位重量,kg/km(标称值) */\n readonly unitWeightKgPerKm: number;\n /** 20℃ 直流电阻,Ω/km */\n readonly r20OhmPerKm: number;\n /** 150℃ 持续载流量,室内口径,A */\n readonly ampacityIndoor150A: number;\n /** 150℃ 持续载流量,室外口径,A */\n readonly ampacityOutdoor150A: number;\n /** 口径说明:本行实际对应标准中的哪一行 */\n readonly note: string;\n}\n\n/**\n * 接触线参数表,来源 TB/T 2809-2017。\n *\n * 载流量为 150℃ 持续值(室内/室外双口径,标准表5)。\n *\n * 已与站点 `/calculator/assets/calc-core.js` 中的 COPPER_TABLE 逐项比对,\n * 6 个型号 × 4 项参数完全一致。\n *\n * 注:站点曾因显示层 `fmt()` 的尾零剥离正则把载流量渲染成 43/56(应为 430/560),\n * 已于 R38 之后修复。若再遇渲染值与本表不符,先确认是否为显示层问题:\n * 本表与服务端数据源始终一致。\n *\n * ⚠️ 注意型号口径:CTHM / CTHA / CTHS 是站点计算器的型号代码,与标准中的\n * CTMH / CTA / CTS 并非同名对应。`note` 字段说明各行实际取自标准的哪一行,\n * 交叉引用 TB/T 2809-2017 时请以 note 为准。\n */\nexport const TB2809_WIRE_PARAMS: Record<CopperWireModel, WireParamEntry> = {\n 'CTHM-120': {\n unitWeightKgPerKm: 1082,\n r20OhmPerKm: 0.2113,\n ampacityIndoor150A: 430,\n ampacityOutdoor150A: 560,\n note: '取标准 CTMH 行(高强度铜镁合金),ρ 按标准上限 0.02535 计算',\n },\n 'CTHM-150': {\n unitWeightKgPerKm: 1350,\n r20OhmPerKm: 0.169,\n ampacityIndoor150A: 500,\n ampacityOutdoor150A: 650,\n note: '取标准 CTMH 行(高强度铜镁合金)',\n },\n 'CTHA-120': {\n unitWeightKgPerKm: 1070,\n r20OhmPerKm: 0.1481,\n ampacityIndoor150A: 515,\n ampacityOutdoor150A: 680,\n note: '取标准 CTA 行(铜银合金),ρ ≤ 0.01777',\n },\n 'CTHA-150': {\n unitWeightKgPerKm: 1330,\n r20OhmPerKm: 0.1185,\n ampacityIndoor150A: 620,\n ampacityOutdoor150A: 785,\n note: '取标准 CTA 行(铜银合金)',\n },\n 'CTHS-120': {\n unitWeightKgPerKm: 1080,\n r20OhmPerKm: 0.1916,\n ampacityIndoor150A: 515,\n ampacityOutdoor150A: 680,\n note: '取标准 CTS 行(铜锡合金),载流量按 CTS 行取值',\n },\n 'CTHS-150': {\n unitWeightKgPerKm: 1345,\n r20OhmPerKm: 0.1533,\n ampacityIndoor150A: 620,\n ampacityOutdoor150A: 790,\n note: '取标准 CTS 行(铜锡合金),载流量按 CTS 行取值',\n },\n};\n\nexport interface CopperLookupInput {\n readonly model: CopperWireModel;\n /** 长度 l,km */\n readonly lengthKm: number;\n /** 环境温度 T,℃ */\n readonly ambientTempDegC: number;\n}\n\nexport interface CopperLookupResult extends WireParamEntry {\n readonly model: CopperWireModel;\n /** 总重量 W = w₀ × l,kg */\n readonly totalWeightKg: number;\n /** 温度修正电阻 r_T,Ω/km */\n readonly rTOhmPerKm: number;\n /** 全长温度修正电阻,Ω */\n readonly totalResistanceOhm: number;\n}\n\n/**\n * 按型号、长度与环境温度给出接触线参数速查结果。\n */\nexport function wireLookup(input: CopperLookupInput): CopperLookupResult {\n const { model, lengthKm, ambientTempDegC } = input;\n\n const params = TB2809_WIRE_PARAMS[model];\n if (params === undefined) {\n throw new RangeError(`未知型号:${model}`);\n }\n if (!(lengthKm > 0)) {\n throw new RangeError(`长度必须为正数,收到 ${lengthKm} km`);\n }\n if (ambientTempDegC < -40 || ambientTempDegC > 90) {\n throw new RangeError(`适用温度为 −40 ~ 90 ℃,收到 ${ambientTempDegC} ℃`);\n }\n\n const rT = resistanceAtTempOhmPerKm(params.r20OhmPerKm, ambientTempDegC);\n\n return {\n model,\n ...params,\n totalWeightKg: params.unitWeightKgPerKm * lengthKm,\n rTOhmPerKm: rT,\n totalResistanceOhm: rT * lengthKm,\n };\n}\n"],"mappings":";;;;;AAEO,IAAM,aAA6B;AAAA,EACxC,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SACE;AAAA,EACF,SAAS;AAAA,IACP;AAAA,IACA;AAAA,EACF;AAAA,EACA,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,YAAY;AAAA,EACZ,QAAQ;AACV;;;ACmBO,IAAM,qBAA8D;AAAA,EACzE,YAAY;AAAA,IACV,mBAAmB;AAAA,IACnB,aAAa;AAAA,IACb,oBAAoB;AAAA,IACpB,qBAAqB;AAAA,IACrB,MAAM;AAAA,EACR;AAAA,EACA,YAAY;AAAA,IACV,mBAAmB;AAAA,IACnB,aAAa;AAAA,IACb,oBAAoB;AAAA,IACpB,qBAAqB;AAAA,IACrB,MAAM;AAAA,EACR;AAAA,EACA,YAAY;AAAA,IACV,mBAAmB;AAAA,IACnB,aAAa;AAAA,IACb,oBAAoB;AAAA,IACpB,qBAAqB;AAAA,IACrB,MAAM;AAAA,EACR;AAAA,EACA,YAAY;AAAA,IACV,mBAAmB;AAAA,IACnB,aAAa;AAAA,IACb,oBAAoB;AAAA,IACpB,qBAAqB;AAAA,IACrB,MAAM;AAAA,EACR;AAAA,EACA,YAAY;AAAA,IACV,mBAAmB;AAAA,IACnB,aAAa;AAAA,IACb,oBAAoB;AAAA,IACpB,qBAAqB;AAAA,IACrB,MAAM;AAAA,EACR;AAAA,EACA,YAAY;AAAA,IACV,mBAAmB;AAAA,IACnB,aAAa;AAAA,IACb,oBAAoB;AAAA,IACpB,qBAAqB;AAAA,IACrB,MAAM;AAAA,EACR;AACF;AAuBO,SAAS,WAAW,OAA8C;AACvE,QAAM,EAAE,OAAO,UAAU,gBAAgB,IAAI;AAE7C,QAAM,SAAS,mBAAmB,KAAK;AACvC,MAAI,WAAW,QAAW;AACxB,UAAM,IAAI,WAAW,iCAAQ,KAAK,EAAE;AAAA,EACtC;AACA,MAAI,EAAE,WAAW,IAAI;AACnB,UAAM,IAAI,WAAW,gEAAc,QAAQ,KAAK;AAAA,EAClD;AACA,MAAI,kBAAkB,OAAO,kBAAkB,IAAI;AACjD,UAAM,IAAI,WAAW,yEAAuB,eAAe,SAAI;AAAA,EACjE;AAEA,QAAM,KAAK,yBAAyB,OAAO,aAAa,eAAe;AAEvE,SAAO;AAAA,IACL;AAAA,IACA,GAAG;AAAA,IACH,eAAe,OAAO,oBAAoB;AAAA,IAC1C,YAAY;AAAA,IACZ,oBAAoB,KAAK;AAAA,EAC3B;AACF;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/ocs-calculators/ocs-calculators/dist/chunk-MZBQ4546.cjs","../src/copper/meta.ts","../src/copper/index.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACA;ACFO,IAAM,WAAA,EAA6B;AAAA,EACxC,IAAA,EAAM,4CAAA;AAAA,EACN,MAAA,EAAQ,+BAAA;AAAA,EACR,OAAA,EACE,sOAAA;AAAA,EACF,OAAA,EAAS;AAAA,IACP,oIAAA;AAAA,IACA;AAAA,EACF,CAAA;AAAA,EACA,UAAA,EAAY;AAAA,IACV,8LAAA;AAAA,IACA,kDAAA;AAAA,IACA,iIAAA;AAAA,IACA,0QAAA;AAAA,IACA;AAAA,EACF,CAAA;AAAA,EACA,KAAA,EAAO;AAAA,IACL,gIAAA;AAAA,IACA,+CAAA;AAAA,IACA;AAAA,EACF,CAAA;AAAA,EACA,UAAA,EAAY,sKAAA;AAAA,EACZ,MAAA,EAAQ;AACV,CAAA;ADGA;AACA;AEeO,IAAM,mBAAA,EAA8D;AAAA,EACzE,UAAA,EAAY;AAAA,IACV,iBAAA,EAAmB,IAAA;AAAA,IACnB,WAAA,EAAa,MAAA;AAAA,IACb,kBAAA,EAAoB,GAAA;AAAA,IACpB,mBAAA,EAAqB,GAAA;AAAA,IACrB,IAAA,EAAM;AAAA,EACR,CAAA;AAAA,EACA,UAAA,EAAY;AAAA,IACV,iBAAA,EAAmB,IAAA;AAAA,IACnB,WAAA,EAAa,KAAA;AAAA,IACb,kBAAA,EAAoB,GAAA;AAAA,IACpB,mBAAA,EAAqB,GAAA;AAAA,IACrB,IAAA,EAAM;AAAA,EACR,CAAA;AAAA,EACA,UAAA,EAAY;AAAA,IACV,iBAAA,EAAmB,IAAA;AAAA,IACnB,WAAA,EAAa,MAAA;AAAA,IACb,kBAAA,EAAoB,GAAA;AAAA,IACpB,mBAAA,EAAqB,GAAA;AAAA,IACrB,IAAA,EAAM;AAAA,EACR,CAAA;AAAA,EACA,UAAA,EAAY;AAAA,IACV,iBAAA,EAAmB,IAAA;AAAA,IACnB,WAAA,EAAa,MAAA;AAAA,IACb,kBAAA,EAAoB,GAAA;AAAA,IACpB,mBAAA,EAAqB,GAAA;AAAA,IACrB,IAAA,EAAM;AAAA,EACR,CAAA;AAAA,EACA,UAAA,EAAY;AAAA,IACV,iBAAA,EAAmB,IAAA;AAAA,IACnB,WAAA,EAAa,MAAA;AAAA,IACb,kBAAA,EAAoB,GAAA;AAAA,IACpB,mBAAA,EAAqB,GAAA;AAAA,IACrB,IAAA,EAAM;AAAA,EACR,CAAA;AAAA,EACA,UAAA,EAAY;AAAA,IACV,iBAAA,EAAmB,IAAA;AAAA,IACnB,WAAA,EAAa,MAAA;AAAA,IACb,kBAAA,EAAoB,GAAA;AAAA,IACpB,mBAAA,EAAqB,GAAA;AAAA,IACrB,IAAA,EAAM;AAAA,EACR;AACF,CAAA;AAuBO,SAAS,UAAA,CAAW,KAAA,EAA8C;AACvE,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAU,gBAAgB,EAAA,EAAI,KAAA;AAE7C,EAAA,MAAM,OAAA,EAAS,kBAAA,CAAmB,KAAK,CAAA;AACvC,EAAA,GAAA,CAAI,OAAA,IAAW,KAAA,CAAA,EAAW;AACxB,IAAA,MAAM,IAAI,UAAA,CAAW,CAAA,8BAAA,EAAQ,KAAK,CAAA,CAAA;AACpC,EAAA;AACqB,EAAA;AACE,IAAA;AACvB,EAAA;AACmD,EAAA;AAC5B,IAAA;AACvB,EAAA;AAEwD,EAAA;AAEjD,EAAA;AACL,IAAA;AACG,IAAA;AACuC,IAAA;AAC9B,IAAA;AACa,IAAA;AAC3B,EAAA;AACF;AFtCgE;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/ocs-calculators/ocs-calculators/dist/chunk-MZBQ4546.cjs","sourcesContent":[null,"import type { CalculatorMeta } from '../types';\n\nexport const copperMeta: CalculatorMeta = {\n name: '接触线参数速查',\n nameEn: 'Contact Wire Parameter Lookup',\n summary:\n '内置 CTHM / CTHA / CTHS 系列 120/150 mm² 接触线参数表,按长度与环境温度给出总重量与温度修正电阻。',\n formula: [\n '电阻温度修正(α = 0.00393 /℃):r_T = r₂₀·[1 + α·(T − 20)]',\n '总重量:W = w₀ × l(w₀ 单位重量 kg/km,l 长度 km)',\n ],\n references: [\n '内置参数表来源 TB/T 2809-2017《电气化铁路用铜及铜合金接触线》(2018-05-01 实施)',\n '单位重量为标称值',\n '载流量为 150℃ 持续值,室内/室外双口径按标准表5',\n 'r₂₀ 除 CTHM-120 取给定值外,均按导电率反算估算(IACS 标准电阻率 0.017241 Ω·mm²/m ÷ 导电率 ÷ 截面积;0.017241 = 1/58)',\n '正式工程以产品标准与出厂检验单为准',\n ],\n scope: [\n '温度修正仅覆盖电阻,未修正单位重量与载流量',\n '适用温度 −40 ~ 90 ℃',\n '载流量为 150℃ 允许温度下的持续值,未做环境温度修正',\n ],\n disclaimer: '本工具结果仅供参考,工程应用以设计文件为准。详见 DISCLAIMER.md。',\n online: 'https://www.itswe.com/calculator/copper/',\n};\n","export { copperMeta } from './meta';\n\n// 电阻温度修正与铜常数统一放在 src/common/resistance.ts(copper 与 voltage-drop 共用),\n// 由根 index 统一导出,此处仅内部引用,避免重复导出同名符号。\nimport { resistanceAtTempOhmPerKm } from '../common/resistance';\n\n/** 站点计算器内置的 6 个型号 */\nexport type CopperWireModel =\n | 'CTHM-120'\n | 'CTHM-150'\n | 'CTHA-120'\n | 'CTHA-150'\n | 'CTHS-120'\n | 'CTHS-150';\n\nexport interface WireParamEntry {\n /** 单位重量,kg/km(标称值) */\n readonly unitWeightKgPerKm: number;\n /** 20℃ 直流电阻,Ω/km */\n readonly r20OhmPerKm: number;\n /** 150℃ 持续载流量,室内口径,A */\n readonly ampacityIndoor150A: number;\n /** 150℃ 持续载流量,室外口径,A */\n readonly ampacityOutdoor150A: number;\n /** 口径说明:本行实际对应标准中的哪一行 */\n readonly note: string;\n}\n\n/**\n * 接触线参数表,来源 TB/T 2809-2017。\n *\n * 载流量为 150℃ 持续值(室内/室外双口径,标准表5)。\n *\n * 已与站点 `/calculator/assets/calc-core.js` 中的 COPPER_TABLE 逐项比对,\n * 6 个型号 × 4 项参数完全一致。\n *\n * 注:站点曾因显示层 `fmt()` 的尾零剥离正则把载流量渲染成 43/56(应为 430/560),\n * 已于 R38 之后修复。若再遇渲染值与本表不符,先确认是否为显示层问题:\n * 本表与服务端数据源始终一致。\n *\n * ⚠️ 注意型号口径:CTHM / CTHA / CTHS 是站点计算器的型号代码,与标准中的\n * CTMH / CTA / CTS 并非同名对应。`note` 字段说明各行实际取自标准的哪一行,\n * 交叉引用 TB/T 2809-2017 时请以 note 为准。\n */\nexport const TB2809_WIRE_PARAMS: Record<CopperWireModel, WireParamEntry> = {\n 'CTHM-120': {\n unitWeightKgPerKm: 1082,\n r20OhmPerKm: 0.2113,\n ampacityIndoor150A: 430,\n ampacityOutdoor150A: 560,\n note: '取标准 CTMH 行(高强度铜镁合金),ρ 按标准上限 0.02535 计算',\n },\n 'CTHM-150': {\n unitWeightKgPerKm: 1350,\n r20OhmPerKm: 0.169,\n ampacityIndoor150A: 500,\n ampacityOutdoor150A: 650,\n note: '取标准 CTMH 行(高强度铜镁合金)',\n },\n 'CTHA-120': {\n unitWeightKgPerKm: 1070,\n r20OhmPerKm: 0.1481,\n ampacityIndoor150A: 515,\n ampacityOutdoor150A: 680,\n note: '取标准 CTA 行(铜银合金),ρ ≤ 0.01777',\n },\n 'CTHA-150': {\n unitWeightKgPerKm: 1330,\n r20OhmPerKm: 0.1185,\n ampacityIndoor150A: 620,\n ampacityOutdoor150A: 785,\n note: '取标准 CTA 行(铜银合金)',\n },\n 'CTHS-120': {\n unitWeightKgPerKm: 1080,\n r20OhmPerKm: 0.1916,\n ampacityIndoor150A: 515,\n ampacityOutdoor150A: 680,\n note: '取标准 CTS 行(铜锡合金),载流量按 CTS 行取值',\n },\n 'CTHS-150': {\n unitWeightKgPerKm: 1345,\n r20OhmPerKm: 0.1533,\n ampacityIndoor150A: 620,\n ampacityOutdoor150A: 790,\n note: '取标准 CTS 行(铜锡合金),载流量按 CTS 行取值',\n },\n};\n\nexport interface CopperLookupInput {\n readonly model: CopperWireModel;\n /** 长度 l,km */\n readonly lengthKm: number;\n /** 环境温度 T,℃ */\n readonly ambientTempDegC: number;\n}\n\nexport interface CopperLookupResult extends WireParamEntry {\n readonly model: CopperWireModel;\n /** 总重量 W = w₀ × l,kg */\n readonly totalWeightKg: number;\n /** 温度修正电阻 r_T,Ω/km */\n readonly rTOhmPerKm: number;\n /** 全长温度修正电阻,Ω */\n readonly totalResistanceOhm: number;\n}\n\n/**\n * 按型号、长度与环境温度给出接触线参数速查结果。\n */\nexport function wireLookup(input: CopperLookupInput): CopperLookupResult {\n const { model, lengthKm, ambientTempDegC } = input;\n\n const params = TB2809_WIRE_PARAMS[model];\n if (params === undefined) {\n throw new RangeError(`未知型号:${model}`);\n }\n if (!(lengthKm > 0)) {\n throw new RangeError(`长度必须为正数,收到 ${lengthKm} km`);\n }\n if (ambientTempDegC < -40 || ambientTempDegC > 90) {\n throw new RangeError(`适用温度为 −40 ~ 90 ℃,收到 ${ambientTempDegC} ℃`);\n }\n\n const rT = resistanceAtTempOhmPerKm(params.r20OhmPerKm, ambientTempDegC);\n\n return {\n model,\n ...params,\n totalWeightKg: params.unitWeightKgPerKm * lengthKm,\n rTOhmPerKm: rT,\n totalResistanceOhm: rT * lengthKm,\n };\n}\n"]}
|