ocs-calculators 0.2.2 → 0.3.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 +9 -0
- package/dist/anchor-length/index.cjs +2 -2
- package/dist/anchor-length/index.js +1 -1
- package/dist/{chunk-CSLI5HEJ.cjs → chunk-JJR7ROMG.cjs} +6 -1
- package/dist/chunk-JJR7ROMG.cjs.map +1 -0
- package/dist/{chunk-75EGROQB.js → chunk-L7JKLVQW.js} +6 -1
- package/dist/{chunk-75EGROQB.js.map → chunk-L7JKLVQW.js.map} +1 -1
- package/dist/index.cjs +9 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +18 -18
- package/package.json +1 -1
- package/dist/chunk-CSLI5HEJ.cjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,15 @@
|
|
|
3
3
|
本文件格式遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/),
|
|
4
4
|
版本号遵循[语义化版本](https://semver.org/lang/zh-CN/)。
|
|
5
5
|
|
|
6
|
+
## [0.3.0] - 2026-09-15
|
|
7
|
+
|
|
8
|
+
### 修复
|
|
9
|
+
|
|
10
|
+
- **输入域守卫补齐(anchor-length)**:`anchorLengthCheck` 直线支当跨距 ≥ 半锚段长度 L 时
|
|
11
|
+
抛 `RangeError`——此前 (L−l) 为负产生负张力增量并静默判「合格」;g_j/α/Δt 非正、
|
|
12
|
+
曲线支定位器数量 <1 一并抛错。守卫口径=镜像站点页面 data-min/max 有效输入域
|
|
13
|
+
(站点页面自身受输入域约束,不受影响)。测试 215→218。
|
|
14
|
+
|
|
6
15
|
## [0.2.2] - 2026-09-15
|
|
7
16
|
|
|
8
17
|
### 修复
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _chunkJJR7ROMGcjs = require('../chunk-JJR7ROMG.cjs');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
exports.TENSION_DIFF_RATIO =
|
|
10
|
+
exports.TENSION_DIFF_RATIO = _chunkJJR7ROMGcjs.TENSION_DIFF_RATIO; exports.anchorLengthCheck = _chunkJJR7ROMGcjs.anchorLengthCheck; exports.anchorLengthMeta = _chunkJJR7ROMGcjs.anchorLengthMeta;
|
|
11
11
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -29,6 +29,7 @@ function anchorLengthCheck(input) {
|
|
|
29
29
|
if (!(curveRadiusM && curveRadiusM > 0)) throw new RangeError("\u66F2\u7EBF\u534A\u5F84\u5FC5\u987B\u4E3A\u6B63");
|
|
30
30
|
if (!(regulatorLengthM && regulatorLengthM > 0)) throw new RangeError("\u5B9A\u4F4D\u5668\u957F\u5EA6\u5FC5\u987B\u4E3A\u6B63");
|
|
31
31
|
const n = _nullishCoalesce(regulatorCount, () => ( 1));
|
|
32
|
+
if (!(n >= 1)) throw new RangeError("\u5B9A\u4F4D\u5668\u6570\u91CF\u5FC5\u987B\u4E0D\u5C0F\u4E8E 1\uFF0C\u6536\u5230 " + n);
|
|
32
33
|
const one = regulatorLengthM * ratedTensionKN * 1e3 / curveRadiusM;
|
|
33
34
|
deltaN = one * n;
|
|
34
35
|
} else {
|
|
@@ -39,6 +40,10 @@ function anchorLengthCheck(input) {
|
|
|
39
40
|
if (wireWeightKNPerM === void 0 || expansionCoeff === void 0 || tempDeltaC === void 0) {
|
|
40
41
|
throw new RangeError("\u76F4\u7EBF\u533A\u6BB5\u9700\u63D0\u4F9B g_j\u3001\u03B1\u3001\u0394t");
|
|
41
42
|
}
|
|
43
|
+
if (!(wireWeightKNPerM > 0)) throw new RangeError("\u63A5\u89E6\u7EBF\u5355\u4F4D\u91CD\u5FC5\u987B\u4E3A\u6B63\uFF0C\u6536\u5230 " + wireWeightKNPerM + " kN/m");
|
|
44
|
+
if (!(expansionCoeff > 0)) throw new RangeError("\u7EBF\u80C0\u7CFB\u6570\u5FC5\u987B\u4E3A\u6B63\uFF0C\u6536\u5230 " + expansionCoeff + " 1/\u2103");
|
|
45
|
+
if (!(tempDeltaC > 0)) throw new RangeError("\u8BA1\u7B97\u6E29\u5DEE\u5FC5\u987B\u4E3A\u6B63\uFF0C\u6536\u5230 " + tempDeltaC + " \u2103");
|
|
46
|
+
if (spanM >= halfSpanM) throw new RangeError("\u8DE8\u8DDD\u5FC5\u987B\u5C0F\u4E8E\u534A\u951A\u6BB5\u957F\u5EA6\uFF0C\u6536\u5230 l=" + spanM + " m\u3001L=" + halfSpanM + " m");
|
|
42
47
|
deltaN = halfSpanM * (halfSpanM - spanM) * wireWeightKNPerM * expansionCoeff * tempDeltaC / (2 * dropperLengthM) * 1e3;
|
|
43
48
|
}
|
|
44
49
|
const limitN = TENSION_DIFF_RATIO * ratedTensionKN * 1e3;
|
|
@@ -50,4 +55,4 @@ function anchorLengthCheck(input) {
|
|
|
50
55
|
|
|
51
56
|
|
|
52
57
|
exports.anchorLengthMeta = anchorLengthMeta; exports.TENSION_DIFF_RATIO = TENSION_DIFF_RATIO; exports.anchorLengthCheck = anchorLengthCheck;
|
|
53
|
-
//# sourceMappingURL=chunk-
|
|
58
|
+
//# sourceMappingURL=chunk-JJR7ROMG.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/ocs-calculators/ocs-calculators/dist/chunk-JJR7ROMG.cjs","../src/anchor-length/meta.ts","../src/anchor-length/index.ts"],"names":[],"mappings":"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","file":"/home/runner/work/ocs-calculators/ocs-calculators/dist/chunk-JJR7ROMG.cjs","sourcesContent":[null,"import type { CalculatorMeta } from '../types';\n\nexport const anchorLengthMeta: CalculatorMeta = {\n name: '锚段长度张力差校核',\n nameEn: 'Anchor Span Tension Difference Check',\n summary: '计算接触线张力增量(曲线定位器项、直线吊弦项,教材口径)并按张力差判据校核。',\n formula: [\n '曲线定位器项:T_jw = d·T_jm/R',\n '直线吊弦项:T_jd = L(L−l)·g_j·α·Δt/(2c)',\n '判据:ΔT ≤ 10%·T_N(TB 10009-2016 第 5.4.7 条)',\n ],\n references: [\n '判据:接触线、承力索张力差均不得大于额定张力 10%(TB 10009-2016 5.4.7)',\n '教材口径(于万聚《电气化铁道接触网设计》体系)',\n '直线吊弦项量纲:m²·kN/m·(1/℃)·℃/m = kN,2026-09-13 复核自洽',\n ],\n scope: ['曲线半径 R:100~4000 m', '定位器长 d:0.5~2.5 m', '半锚段 L:100~2000 m', '跨距 l:30~90 m'],\n disclaimer: '本工具结果仅供参考,工程应用以设计文件为准。详见 DISCLAIMER.md。',\n online: 'https://www.itswe.com/calculator/anchor-length/',\n};\n","export { anchorLengthMeta } from './meta';\n\n/** 张力增量判据(TB 10009-2016 第 5.4.7 条) */\nexport const TENSION_DIFF_RATIO = 0.10;\n\n/** 锚段张力增量计算参数(教材口径,直线吊弦项量纲已复核)。单位:m、kN、1/℃、℃。 */\nexport interface AnchorLengthInput {\n /** 区段类型:'line' 直线 | 'curve' 曲线 */\n readonly section: 'line' | 'curve';\n /** 接触线额定张力 T_N,kN(判据基准) */\n readonly ratedTensionKN: number;\n /** 半锚段长度 L(中心锚结至补偿器),m */\n readonly halfSpanM?: number;\n /** 曲线半径 R,m(曲线区段) */\n readonly curveRadiusM?: number;\n /** 定位器长度 d,m(曲线区段) */\n readonly regulatorLengthM?: number;\n /** 定位器数量 n(曲线区段) */\n readonly regulatorCount?: number;\n /** 跨距 l,m(直线吊弦项) */\n readonly spanM?: number;\n /** 吊弦平均长度 c,m(直线吊弦项) */\n readonly dropperLengthM?: number;\n /** 接触线单位重 g_j,kN/m(直线吊弦项) */\n readonly wireWeightKNPerM?: number;\n /** 线胀系数 α,1/℃(直线吊弦项) */\n readonly expansionCoeff?: number;\n /** 计算温差 Δt,℃(直线吊弦项) */\n readonly tempDeltaC?: number;\n}\n\nexport interface AnchorLengthResult {\n /** 张力增量,N */\n readonly deltaN: number;\n /** 判据限值 10%·T_N,N */\n readonly limitN: number;\n /** 张力差占额定张力比例 */\n readonly ratio: number;\n /** 是否合格(ΔT ≤ 10%·T_N) */\n readonly passes: boolean;\n}\n\n/** 锚段张力增量(教材口径)与 10% 判据校核 */\nexport function anchorLengthCheck(input: AnchorLengthInput): AnchorLengthResult {\n const { section, ratedTensionKN } = input;\n if (!(ratedTensionKN > 0)) throw new RangeError('额定张力必须为正,收到 ' + ratedTensionKN + ' kN');\n let deltaN: number;\n if (section === 'curve') {\n const { curveRadiusM, regulatorLengthM, regulatorCount } = input;\n if (!(curveRadiusM && curveRadiusM > 0)) throw new RangeError('曲线半径必须为正');\n if (!(regulatorLengthM && regulatorLengthM > 0)) throw new RangeError('定位器长度必须为正');\n const n = regulatorCount ?? 1;\n if (!(n >= 1)) throw new RangeError('定位器数量必须不小于 1,收到 ' + n);\n const one = (regulatorLengthM * ratedTensionKN * 1e3) / curveRadiusM; // T_jw = d·T_jm/R\n deltaN = one * n;\n } else {\n const { halfSpanM, spanM, dropperLengthM, wireWeightKNPerM, expansionCoeff, tempDeltaC } = input;\n if (!(halfSpanM && halfSpanM > 0)) throw new RangeError('半锚段长度必须为正');\n if (!(spanM && spanM > 0)) throw new RangeError('跨距必须为正');\n if (!(dropperLengthM && dropperLengthM > 0)) throw new RangeError('吊弦长度必须为正');\n if (wireWeightKNPerM === undefined || expansionCoeff === undefined || tempDeltaC === undefined) {\n throw new RangeError('直线区段需提供 g_j、α、Δt');\n }\n if (!(wireWeightKNPerM > 0)) throw new RangeError('接触线单位重必须为正,收到 ' + wireWeightKNPerM + ' kN/m');\n if (!(expansionCoeff > 0)) throw new RangeError('线胀系数必须为正,收到 ' + expansionCoeff + ' 1/℃');\n if (!(tempDeltaC > 0)) throw new RangeError('计算温差必须为正,收到 ' + tempDeltaC + ' ℃');\n if (spanM >= halfSpanM) throw new RangeError('跨距必须小于半锚段长度,收到 l=' + spanM + ' m、L=' + halfSpanM + ' m');\n // T_jd = L(L−l)·g_j·α·Δt/(2c),kN → N\n deltaN = (halfSpanM * (halfSpanM - spanM) * wireWeightKNPerM * expansionCoeff * tempDeltaC) / (2 * dropperLengthM) * 1e3;\n }\n const limitN = TENSION_DIFF_RATIO * ratedTensionKN * 1e3;\n return { deltaN, limitN, ratio: deltaN / limitN, passes: deltaN <= limitN };\n}\n"]}
|
|
@@ -29,6 +29,7 @@ function anchorLengthCheck(input) {
|
|
|
29
29
|
if (!(curveRadiusM && curveRadiusM > 0)) throw new RangeError("\u66F2\u7EBF\u534A\u5F84\u5FC5\u987B\u4E3A\u6B63");
|
|
30
30
|
if (!(regulatorLengthM && regulatorLengthM > 0)) throw new RangeError("\u5B9A\u4F4D\u5668\u957F\u5EA6\u5FC5\u987B\u4E3A\u6B63");
|
|
31
31
|
const n = regulatorCount ?? 1;
|
|
32
|
+
if (!(n >= 1)) throw new RangeError("\u5B9A\u4F4D\u5668\u6570\u91CF\u5FC5\u987B\u4E0D\u5C0F\u4E8E 1\uFF0C\u6536\u5230 " + n);
|
|
32
33
|
const one = regulatorLengthM * ratedTensionKN * 1e3 / curveRadiusM;
|
|
33
34
|
deltaN = one * n;
|
|
34
35
|
} else {
|
|
@@ -39,6 +40,10 @@ function anchorLengthCheck(input) {
|
|
|
39
40
|
if (wireWeightKNPerM === void 0 || expansionCoeff === void 0 || tempDeltaC === void 0) {
|
|
40
41
|
throw new RangeError("\u76F4\u7EBF\u533A\u6BB5\u9700\u63D0\u4F9B g_j\u3001\u03B1\u3001\u0394t");
|
|
41
42
|
}
|
|
43
|
+
if (!(wireWeightKNPerM > 0)) throw new RangeError("\u63A5\u89E6\u7EBF\u5355\u4F4D\u91CD\u5FC5\u987B\u4E3A\u6B63\uFF0C\u6536\u5230 " + wireWeightKNPerM + " kN/m");
|
|
44
|
+
if (!(expansionCoeff > 0)) throw new RangeError("\u7EBF\u80C0\u7CFB\u6570\u5FC5\u987B\u4E3A\u6B63\uFF0C\u6536\u5230 " + expansionCoeff + " 1/\u2103");
|
|
45
|
+
if (!(tempDeltaC > 0)) throw new RangeError("\u8BA1\u7B97\u6E29\u5DEE\u5FC5\u987B\u4E3A\u6B63\uFF0C\u6536\u5230 " + tempDeltaC + " \u2103");
|
|
46
|
+
if (spanM >= halfSpanM) throw new RangeError("\u8DE8\u8DDD\u5FC5\u987B\u5C0F\u4E8E\u534A\u951A\u6BB5\u957F\u5EA6\uFF0C\u6536\u5230 l=" + spanM + " m\u3001L=" + halfSpanM + " m");
|
|
42
47
|
deltaN = halfSpanM * (halfSpanM - spanM) * wireWeightKNPerM * expansionCoeff * tempDeltaC / (2 * dropperLengthM) * 1e3;
|
|
43
48
|
}
|
|
44
49
|
const limitN = TENSION_DIFF_RATIO * ratedTensionKN * 1e3;
|
|
@@ -50,4 +55,4 @@ export {
|
|
|
50
55
|
TENSION_DIFF_RATIO,
|
|
51
56
|
anchorLengthCheck
|
|
52
57
|
};
|
|
53
|
-
//# sourceMappingURL=chunk-
|
|
58
|
+
//# sourceMappingURL=chunk-L7JKLVQW.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/anchor-length/meta.ts","../src/anchor-length/index.ts"],"sourcesContent":["import type { CalculatorMeta } from '../types';\n\nexport const anchorLengthMeta: CalculatorMeta = {\n name: '锚段长度张力差校核',\n nameEn: 'Anchor Span Tension Difference Check',\n summary: '计算接触线张力增量(曲线定位器项、直线吊弦项,教材口径)并按张力差判据校核。',\n formula: [\n '曲线定位器项:T_jw = d·T_jm/R',\n '直线吊弦项:T_jd = L(L−l)·g_j·α·Δt/(2c)',\n '判据:ΔT ≤ 10%·T_N(TB 10009-2016 第 5.4.7 条)',\n ],\n references: [\n '判据:接触线、承力索张力差均不得大于额定张力 10%(TB 10009-2016 5.4.7)',\n '教材口径(于万聚《电气化铁道接触网设计》体系)',\n '直线吊弦项量纲:m²·kN/m·(1/℃)·℃/m = kN,2026-09-13 复核自洽',\n ],\n scope: ['曲线半径 R:100~4000 m', '定位器长 d:0.5~2.5 m', '半锚段 L:100~2000 m', '跨距 l:30~90 m'],\n disclaimer: '本工具结果仅供参考,工程应用以设计文件为准。详见 DISCLAIMER.md。',\n online: 'https://www.itswe.com/calculator/anchor-length/',\n};\n","export { anchorLengthMeta } from './meta';\n\n/** 张力增量判据(TB 10009-2016 第 5.4.7 条) */\nexport const TENSION_DIFF_RATIO = 0.10;\n\n/** 锚段张力增量计算参数(教材口径,直线吊弦项量纲已复核)。单位:m、kN、1/℃、℃。 */\nexport interface AnchorLengthInput {\n /** 区段类型:'line' 直线 | 'curve' 曲线 */\n readonly section: 'line' | 'curve';\n /** 接触线额定张力 T_N,kN(判据基准) */\n readonly ratedTensionKN: number;\n /** 半锚段长度 L(中心锚结至补偿器),m */\n readonly halfSpanM?: number;\n /** 曲线半径 R,m(曲线区段) */\n readonly curveRadiusM?: number;\n /** 定位器长度 d,m(曲线区段) */\n readonly regulatorLengthM?: number;\n /** 定位器数量 n(曲线区段) */\n readonly regulatorCount?: number;\n /** 跨距 l,m(直线吊弦项) */\n readonly spanM?: number;\n /** 吊弦平均长度 c,m(直线吊弦项) */\n readonly dropperLengthM?: number;\n /** 接触线单位重 g_j,kN/m(直线吊弦项) */\n readonly wireWeightKNPerM?: number;\n /** 线胀系数 α,1/℃(直线吊弦项) */\n readonly expansionCoeff?: number;\n /** 计算温差 Δt,℃(直线吊弦项) */\n readonly tempDeltaC?: number;\n}\n\nexport interface AnchorLengthResult {\n /** 张力增量,N */\n readonly deltaN: number;\n /** 判据限值 10%·T_N,N */\n readonly limitN: number;\n /** 张力差占额定张力比例 */\n readonly ratio: number;\n /** 是否合格(ΔT ≤ 10%·T_N) */\n readonly passes: boolean;\n}\n\n/** 锚段张力增量(教材口径)与 10% 判据校核 */\nexport function anchorLengthCheck(input: AnchorLengthInput): AnchorLengthResult {\n const { section, ratedTensionKN } = input;\n if (!(ratedTensionKN > 0)) throw new RangeError('额定张力必须为正,收到 ' + ratedTensionKN + ' kN');\n let deltaN: number;\n if (section === 'curve') {\n const { curveRadiusM, regulatorLengthM, regulatorCount } = input;\n if (!(curveRadiusM && curveRadiusM > 0)) throw new RangeError('曲线半径必须为正');\n if (!(regulatorLengthM && regulatorLengthM > 0)) throw new RangeError('定位器长度必须为正');\n const n = regulatorCount ?? 1;\n const one = (regulatorLengthM * ratedTensionKN * 1e3) / curveRadiusM; // T_jw = d·T_jm/R\n deltaN = one * n;\n } else {\n const { halfSpanM, spanM, dropperLengthM, wireWeightKNPerM, expansionCoeff, tempDeltaC } = input;\n if (!(halfSpanM && halfSpanM > 0)) throw new RangeError('半锚段长度必须为正');\n if (!(spanM && spanM > 0)) throw new RangeError('跨距必须为正');\n if (!(dropperLengthM && dropperLengthM > 0)) throw new RangeError('吊弦长度必须为正');\n if (wireWeightKNPerM === undefined || expansionCoeff === undefined || tempDeltaC === undefined) {\n throw new RangeError('直线区段需提供 g_j、α、Δt');\n }\n // T_jd = L(L−l)·g_j·α·Δt/(2c),kN → N\n deltaN = (halfSpanM * (halfSpanM - spanM) * wireWeightKNPerM * expansionCoeff * tempDeltaC) / (2 * dropperLengthM) * 1e3;\n }\n const limitN = TENSION_DIFF_RATIO * ratedTensionKN * 1e3;\n return { deltaN, limitN, ratio: deltaN / limitN, passes: deltaN <= limitN };\n}\n"],"mappings":";AAEO,IAAM,mBAAmC;AAAA,EAC9C,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,OAAO,CAAC,8CAAqB,6CAAoB,wCAAoB,6BAAc;AAAA,EACnF,YAAY;AAAA,EACZ,QAAQ;AACV;;;AChBO,IAAM,qBAAqB;AAwC3B,SAAS,kBAAkB,OAA8C;AAC9E,QAAM,EAAE,SAAS,eAAe,IAAI;AACpC,MAAI,EAAE,iBAAiB,GAAI,OAAM,IAAI,WAAW,wEAAiB,iBAAiB,KAAK;AACvF,MAAI;AACJ,MAAI,YAAY,SAAS;AACvB,UAAM,EAAE,cAAc,kBAAkB,eAAe,IAAI;AAC3D,QAAI,EAAE,gBAAgB,eAAe,GAAI,OAAM,IAAI,WAAW,kDAAU;AACxE,QAAI,EAAE,oBAAoB,mBAAmB,GAAI,OAAM,IAAI,WAAW,wDAAW;AACjF,UAAM,IAAI,kBAAkB;AAC5B,UAAM,MAAO,mBAAmB,iBAAiB,MAAO;AACxD,aAAS,MAAM;AAAA,EACjB,OAAO;AACL,UAAM,EAAE,WAAW,OAAO,gBAAgB,kBAAkB,gBAAgB,WAAW,IAAI;AAC3F,QAAI,EAAE,aAAa,YAAY,GAAI,OAAM,IAAI,WAAW,wDAAW;AACnE,QAAI,EAAE,SAAS,QAAQ,GAAI,OAAM,IAAI,WAAW,sCAAQ;AACxD,QAAI,EAAE,kBAAkB,iBAAiB,GAAI,OAAM,IAAI,WAAW,kDAAU;AAC5E,QAAI,qBAAqB,UAAa,mBAAmB,UAAa,eAAe,QAAW;AAC9F,YAAM,IAAI,WAAW,yEAAkB;AAAA,IACzC;
|
|
1
|
+
{"version":3,"sources":["../src/anchor-length/meta.ts","../src/anchor-length/index.ts"],"sourcesContent":["import type { CalculatorMeta } from '../types';\n\nexport const anchorLengthMeta: CalculatorMeta = {\n name: '锚段长度张力差校核',\n nameEn: 'Anchor Span Tension Difference Check',\n summary: '计算接触线张力增量(曲线定位器项、直线吊弦项,教材口径)并按张力差判据校核。',\n formula: [\n '曲线定位器项:T_jw = d·T_jm/R',\n '直线吊弦项:T_jd = L(L−l)·g_j·α·Δt/(2c)',\n '判据:ΔT ≤ 10%·T_N(TB 10009-2016 第 5.4.7 条)',\n ],\n references: [\n '判据:接触线、承力索张力差均不得大于额定张力 10%(TB 10009-2016 5.4.7)',\n '教材口径(于万聚《电气化铁道接触网设计》体系)',\n '直线吊弦项量纲:m²·kN/m·(1/℃)·℃/m = kN,2026-09-13 复核自洽',\n ],\n scope: ['曲线半径 R:100~4000 m', '定位器长 d:0.5~2.5 m', '半锚段 L:100~2000 m', '跨距 l:30~90 m'],\n disclaimer: '本工具结果仅供参考,工程应用以设计文件为准。详见 DISCLAIMER.md。',\n online: 'https://www.itswe.com/calculator/anchor-length/',\n};\n","export { anchorLengthMeta } from './meta';\n\n/** 张力增量判据(TB 10009-2016 第 5.4.7 条) */\nexport const TENSION_DIFF_RATIO = 0.10;\n\n/** 锚段张力增量计算参数(教材口径,直线吊弦项量纲已复核)。单位:m、kN、1/℃、℃。 */\nexport interface AnchorLengthInput {\n /** 区段类型:'line' 直线 | 'curve' 曲线 */\n readonly section: 'line' | 'curve';\n /** 接触线额定张力 T_N,kN(判据基准) */\n readonly ratedTensionKN: number;\n /** 半锚段长度 L(中心锚结至补偿器),m */\n readonly halfSpanM?: number;\n /** 曲线半径 R,m(曲线区段) */\n readonly curveRadiusM?: number;\n /** 定位器长度 d,m(曲线区段) */\n readonly regulatorLengthM?: number;\n /** 定位器数量 n(曲线区段) */\n readonly regulatorCount?: number;\n /** 跨距 l,m(直线吊弦项) */\n readonly spanM?: number;\n /** 吊弦平均长度 c,m(直线吊弦项) */\n readonly dropperLengthM?: number;\n /** 接触线单位重 g_j,kN/m(直线吊弦项) */\n readonly wireWeightKNPerM?: number;\n /** 线胀系数 α,1/℃(直线吊弦项) */\n readonly expansionCoeff?: number;\n /** 计算温差 Δt,℃(直线吊弦项) */\n readonly tempDeltaC?: number;\n}\n\nexport interface AnchorLengthResult {\n /** 张力增量,N */\n readonly deltaN: number;\n /** 判据限值 10%·T_N,N */\n readonly limitN: number;\n /** 张力差占额定张力比例 */\n readonly ratio: number;\n /** 是否合格(ΔT ≤ 10%·T_N) */\n readonly passes: boolean;\n}\n\n/** 锚段张力增量(教材口径)与 10% 判据校核 */\nexport function anchorLengthCheck(input: AnchorLengthInput): AnchorLengthResult {\n const { section, ratedTensionKN } = input;\n if (!(ratedTensionKN > 0)) throw new RangeError('额定张力必须为正,收到 ' + ratedTensionKN + ' kN');\n let deltaN: number;\n if (section === 'curve') {\n const { curveRadiusM, regulatorLengthM, regulatorCount } = input;\n if (!(curveRadiusM && curveRadiusM > 0)) throw new RangeError('曲线半径必须为正');\n if (!(regulatorLengthM && regulatorLengthM > 0)) throw new RangeError('定位器长度必须为正');\n const n = regulatorCount ?? 1;\n if (!(n >= 1)) throw new RangeError('定位器数量必须不小于 1,收到 ' + n);\n const one = (regulatorLengthM * ratedTensionKN * 1e3) / curveRadiusM; // T_jw = d·T_jm/R\n deltaN = one * n;\n } else {\n const { halfSpanM, spanM, dropperLengthM, wireWeightKNPerM, expansionCoeff, tempDeltaC } = input;\n if (!(halfSpanM && halfSpanM > 0)) throw new RangeError('半锚段长度必须为正');\n if (!(spanM && spanM > 0)) throw new RangeError('跨距必须为正');\n if (!(dropperLengthM && dropperLengthM > 0)) throw new RangeError('吊弦长度必须为正');\n if (wireWeightKNPerM === undefined || expansionCoeff === undefined || tempDeltaC === undefined) {\n throw new RangeError('直线区段需提供 g_j、α、Δt');\n }\n if (!(wireWeightKNPerM > 0)) throw new RangeError('接触线单位重必须为正,收到 ' + wireWeightKNPerM + ' kN/m');\n if (!(expansionCoeff > 0)) throw new RangeError('线胀系数必须为正,收到 ' + expansionCoeff + ' 1/℃');\n if (!(tempDeltaC > 0)) throw new RangeError('计算温差必须为正,收到 ' + tempDeltaC + ' ℃');\n if (spanM >= halfSpanM) throw new RangeError('跨距必须小于半锚段长度,收到 l=' + spanM + ' m、L=' + halfSpanM + ' m');\n // T_jd = L(L−l)·g_j·α·Δt/(2c),kN → N\n deltaN = (halfSpanM * (halfSpanM - spanM) * wireWeightKNPerM * expansionCoeff * tempDeltaC) / (2 * dropperLengthM) * 1e3;\n }\n const limitN = TENSION_DIFF_RATIO * ratedTensionKN * 1e3;\n return { deltaN, limitN, ratio: deltaN / limitN, passes: deltaN <= limitN };\n}\n"],"mappings":";AAEO,IAAM,mBAAmC;AAAA,EAC9C,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,OAAO,CAAC,8CAAqB,6CAAoB,wCAAoB,6BAAc;AAAA,EACnF,YAAY;AAAA,EACZ,QAAQ;AACV;;;AChBO,IAAM,qBAAqB;AAwC3B,SAAS,kBAAkB,OAA8C;AAC9E,QAAM,EAAE,SAAS,eAAe,IAAI;AACpC,MAAI,EAAE,iBAAiB,GAAI,OAAM,IAAI,WAAW,wEAAiB,iBAAiB,KAAK;AACvF,MAAI;AACJ,MAAI,YAAY,SAAS;AACvB,UAAM,EAAE,cAAc,kBAAkB,eAAe,IAAI;AAC3D,QAAI,EAAE,gBAAgB,eAAe,GAAI,OAAM,IAAI,WAAW,kDAAU;AACxE,QAAI,EAAE,oBAAoB,mBAAmB,GAAI,OAAM,IAAI,WAAW,wDAAW;AACjF,UAAM,IAAI,kBAAkB;AAC5B,QAAI,EAAE,KAAK,GAAI,OAAM,IAAI,WAAW,sFAAqB,CAAC;AAC1D,UAAM,MAAO,mBAAmB,iBAAiB,MAAO;AACxD,aAAS,MAAM;AAAA,EACjB,OAAO;AACL,UAAM,EAAE,WAAW,OAAO,gBAAgB,kBAAkB,gBAAgB,WAAW,IAAI;AAC3F,QAAI,EAAE,aAAa,YAAY,GAAI,OAAM,IAAI,WAAW,wDAAW;AACnE,QAAI,EAAE,SAAS,QAAQ,GAAI,OAAM,IAAI,WAAW,sCAAQ;AACxD,QAAI,EAAE,kBAAkB,iBAAiB,GAAI,OAAM,IAAI,WAAW,kDAAU;AAC5E,QAAI,qBAAqB,UAAa,mBAAmB,UAAa,eAAe,QAAW;AAC9F,YAAM,IAAI,WAAW,yEAAkB;AAAA,IACzC;AACA,QAAI,EAAE,mBAAmB,GAAI,OAAM,IAAI,WAAW,oFAAmB,mBAAmB,OAAO;AAC/F,QAAI,EAAE,iBAAiB,GAAI,OAAM,IAAI,WAAW,wEAAiB,iBAAiB,WAAM;AACxF,QAAI,EAAE,aAAa,GAAI,OAAM,IAAI,WAAW,wEAAiB,aAAa,SAAI;AAC9E,QAAI,SAAS,UAAW,OAAM,IAAI,WAAW,4FAAsB,QAAQ,eAAU,YAAY,IAAI;AAErG,aAAU,aAAa,YAAY,SAAS,mBAAmB,iBAAiB,cAAe,IAAI,kBAAkB;AAAA,EACvH;AACA,QAAM,SAAS,qBAAqB,iBAAiB;AACrD,SAAO,EAAE,QAAQ,QAAQ,OAAO,SAAS,QAAQ,QAAQ,UAAU,OAAO;AAC5E;","names":[]}
|
package/dist/index.cjs
CHANGED
|
@@ -25,14 +25,14 @@ var _chunkNBHEOJ5Acjs = require('./chunk-NBHEOJ5A.cjs');
|
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
|
|
28
|
+
var _chunk5INEDXRYcjs = require('./chunk-5INEDXRY.cjs');
|
|
28
29
|
|
|
29
|
-
var _chunkFVESJBUDcjs = require('./chunk-FVESJBUD.cjs');
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
var
|
|
35
|
+
var _chunkFVESJBUDcjs = require('./chunk-FVESJBUD.cjs');
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
|
|
@@ -47,22 +47,22 @@ var _chunk4UU7WA7Ncjs = require('./chunk-4UU7WA7N.cjs');
|
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
|
|
50
|
+
var _chunkJ2UXRMTUcjs = require('./chunk-J2UXRMTU.cjs');
|
|
50
51
|
|
|
51
|
-
var _chunkRPKDEFSJcjs = require('./chunk-RPKDEFSJ.cjs');
|
|
52
52
|
|
|
53
53
|
|
|
54
54
|
|
|
55
55
|
|
|
56
56
|
|
|
57
57
|
|
|
58
|
-
var
|
|
58
|
+
var _chunkRPKDEFSJcjs = require('./chunk-RPKDEFSJ.cjs');
|
|
59
59
|
|
|
60
60
|
|
|
61
61
|
|
|
62
62
|
|
|
63
63
|
|
|
64
64
|
|
|
65
|
-
var
|
|
65
|
+
var _chunkP6KUGPHDcjs = require('./chunk-P6KUGPHD.cjs');
|
|
66
66
|
|
|
67
67
|
|
|
68
68
|
|
|
@@ -101,16 +101,16 @@ var _chunkNBFOB2PIcjs = require('./chunk-NBFOB2PI.cjs');
|
|
|
101
101
|
|
|
102
102
|
|
|
103
103
|
|
|
104
|
-
var
|
|
104
|
+
var _chunkJJR7ROMGcjs = require('./chunk-JJR7ROMG.cjs');
|
|
105
105
|
|
|
106
106
|
|
|
107
107
|
|
|
108
|
+
var _chunkHXALVJ4Gcjs = require('./chunk-HXALVJ4G.cjs');
|
|
108
109
|
|
|
109
|
-
var _chunkWGTOBRYVcjs = require('./chunk-WGTOBRYV.cjs');
|
|
110
110
|
|
|
111
111
|
|
|
112
112
|
|
|
113
|
-
var
|
|
113
|
+
var _chunkWGTOBRYVcjs = require('./chunk-WGTOBRYV.cjs');
|
|
114
114
|
|
|
115
115
|
|
|
116
116
|
|
|
@@ -333,5 +333,5 @@ function findAmpacityA(params) {
|
|
|
333
333
|
|
|
334
334
|
|
|
335
335
|
|
|
336
|
-
exports.AIR_DENSITY_KG_PER_M3 = _chunkFVESJBUDcjs.AIR_DENSITY_KG_PER_M3; exports.ASSEMBLY_TOLERANCE_MM = _chunkWGTOBRYVcjs.ASSEMBLY_TOLERANCE_MM; 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.CREEPAGE_FLOOR_GENERAL = _chunkAVQ4F6DFcjs.CREEPAGE_FLOOR_GENERAL; exports.CREEPAGE_FLOOR_VCUT = _chunkAVQ4F6DFcjs.CREEPAGE_FLOOR_VCUT; 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.STEEL_POLE_SERIES_KNM = _chunkR4IVRYJAcjs.STEEL_POLE_SERIES_KNM; exports.TB2809_AMPACITY_A = TB2809_AMPACITY_A; exports.TB2809_WIRE_PARAMS = _chunkMTAYG3U2cjs.TB2809_WIRE_PARAMS; exports.TENSION_DIFF_RATIO =
|
|
336
|
+
exports.AIR_DENSITY_KG_PER_M3 = _chunkFVESJBUDcjs.AIR_DENSITY_KG_PER_M3; exports.ASSEMBLY_TOLERANCE_MM = _chunkWGTOBRYVcjs.ASSEMBLY_TOLERANCE_MM; 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.CREEPAGE_FLOOR_GENERAL = _chunkAVQ4F6DFcjs.CREEPAGE_FLOOR_GENERAL; exports.CREEPAGE_FLOOR_VCUT = _chunkAVQ4F6DFcjs.CREEPAGE_FLOOR_VCUT; 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.STEEL_POLE_SERIES_KNM = _chunkR4IVRYJAcjs.STEEL_POLE_SERIES_KNM; exports.TB2809_AMPACITY_A = TB2809_AMPACITY_A; exports.TB2809_WIRE_PARAMS = _chunkMTAYG3U2cjs.TB2809_WIRE_PARAMS; exports.TENSION_DIFF_RATIO = _chunkJJR7ROMGcjs.TENSION_DIFF_RATIO; exports.TEST_MOMENT_FACTOR = _chunkR4IVRYJAcjs.TEST_MOMENT_FACTOR; exports.TRANSMISSION_RATIOS = _chunk5Q6IASB2cjs.TRANSMISSION_RATIOS; exports.USCD_BANDS = _chunkAVQ4F6DFcjs.USCD_BANDS; exports.WIRE_PRESETS = WIRE_PRESETS; exports.ampacityDeratingFactor = _chunkNBFOB2PIcjs.ampacityDeratingFactor; exports.ampacityMeta = _chunkNBFOB2PIcjs.ampacityMeta; exports.anchorLengthCheck = _chunkJJR7ROMGcjs.anchorLengthCheck; exports.anchorLengthMeta = _chunkJJR7ROMGcjs.anchorLengthMeta; exports.assessContactForce = _chunkRPKDEFSJcjs.assessContactForce; exports.bValue = _chunkHXALVJ4Gcjs.bValue; exports.bvalueMeta = _chunkHXALVJ4Gcjs.bvalueMeta; exports.cantShiftM = _chunk4UU7WA7Ncjs.cantShiftM; exports.cantileverCut = _chunkWGTOBRYVcjs.cantileverCut; exports.cantileverMeta = _chunkWGTOBRYVcjs.cantileverMeta; exports.copperMeta = _chunkMTAYG3U2cjs.copperMeta; exports.creepageCheck = _chunkAVQ4F6DFcjs.creepageCheck; exports.creepageMeta = _chunkAVQ4F6DFcjs.creepageMeta; exports.crossSpanAnalyze = _chunkX25CXRVEcjs.crossSpanAnalyze; exports.crossSpanMeta = _chunkX25CXRVEcjs.crossSpanMeta; 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.maxSpanFromSagM = _chunkCF663UNGcjs.maxSpanFromSagM; exports.naturalFrequencyHz = _chunkNBHEOJ5Acjs.naturalFrequencyHz; exports.parabolaSagM = _chunkJ2UXRMTUcjs.parabolaSagM; exports.poleCapacityCheck = _chunkR4IVRYJAcjs.poleCapacityCheck; exports.poleCapacityMeta = _chunkR4IVRYJAcjs.poleCapacityMeta; exports.referenceTargetForceN = _chunkRPKDEFSJcjs.referenceTargetForceN; exports.requiredStrokeMM = _chunk5Q6IASB2cjs.requiredStrokeMM; exports.resistanceAtTempOhmPerKm = _chunkDGO2DCO5cjs.resistanceAtTempOhmPerKm; exports.sagM = _chunk3ERFRRHZcjs.sagM; exports.sagMM = _chunkCF663UNGcjs.sagMM; exports.sagMeta = _chunkCF663UNGcjs.sagMeta; 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.steadyArmAngleDeg = _chunk57J7I6JAcjs.steadyArmAngleDeg; exports.steadyArmCheck = _chunk57J7I6JAcjs.steadyArmCheck; exports.steadyArmMeta = _chunk57J7I6JAcjs.steadyArmMeta; exports.strokeCheck = _chunk5Q6IASB2cjs.strokeCheck; exports.strokeMeta = _chunk5Q6IASB2cjs.strokeMeta; exports.tensionAt = _chunk3ERFRRHZcjs.tensionAt; exports.tensionCurve = _chunk3ERFRRHZcjs.tensionCurve; exports.tensionFromSagKN = _chunkCF663UNGcjs.tensionFromSagKN; 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 = _chunkMTAYG3U2cjs.wireLookup;
|
|
337
337
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/ocs-calculators/ocs-calculators/dist/index.cjs","../src/data/wire-specs.ts","../src/data/tb2809-ampacity.ts"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACA;AC5FO,IAAM,4BAAA,EAA8B,IAAA;AAUpC,IAAM,+BAAA,EAAyE;AAAA,EACpF,OAAA,EAAS,IAAA;AAAA,EACT,OAAA,EAAS,IAAA;AAAA,EACT,OAAA,EAAS;AACX,CAAA;AAGO,SAAS,kBAAA,CAAmB,OAAA,EAAyB;AAC1D,EAAA,OAAO,QAAA,EAAU,GAAA;AACnB;AAYO,SAAS,sBAAA,CACd,eAAA,EACA,eAAA,EAAyB,2BAAA,EACjB;AAER,EAAA,OAAO,gBAAA,EAAkB,KAAA,EAAO,eAAA,EAAiB,GAAA;AACnD;AAGO,IAAM,6BAAA,EAA+B,KAAA;AAErC,IAAM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AM,GAAG,CAAC;AAC/E,CAAA;AAMO,SAAS,aAAA,CAAc,MAAA,EAIA;AAC5B,EAAA,MAAM,IAAA,EAAM,iBAAA,CAAkB,IAAA;AAAA,IAC5B,CAAC,CAAA,EAAA,GACC,CAAA,CAAE,KAAA,IAAS,MAAA,CAAO,KAAA,GAClB,CAAA,CAAE,gBAAA,IAAoB,MAAA,CAAO,gBAAA,GAC7B,CAAA,CAAE,UAAA,IAAc,MAAA,CAAO;AAAA,EAC3B,CAAA;AACA,EAAA,OAAO,IAAA,IAAQ,KAAA,EAAA,EAAY,KAAA,EAAA,EAAY,GAAA,CAAI,SAAA;AAC7C;AFgIA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,gqMAAC","file":"/home/runner/work/ocs-calculators/ocs-calculators/dist/index.cjs","sourcesContent":[null,"import { G0 } from '../types';\n\n/**\n * 接触线线材参数预设。\n *\n * ⚠️ 全部为标称参考值,实际取值以产品技术条件与设计文件为准。\n * ⚠️ 本站计算器的参数界面支持手工覆盖这些值 —— 那才是工程上正确的用法。\n *\n * 自重口径(2026-08-31 已确定):\n * 线密度取标准「参考单位质量」表值,而非由标称截面推算。标准表分两列:\n * 型号|标称截面|计算截面|参考单位质量\n * CT 120|120|121|1082 kg/km\n * 注:参考单位质量按密度 8.94 g/cm³ 计算\n * 即标准的 8.94 g/cm³ 是配「计算截面」(把尺寸公差计入后的截面)用的,\n * 不是配「标称截面」用的:121 × 8.94 × 1e-3 = 1.0817 ≈ 1.082 kg/m。\n * 因此 CTMH-120 自重 g = 1.082 × 9.81 = 10.61442 N/m,\n * 与站点 /calculator/tension/ 预设 rho=1.082、COPPER_TABLE.unitWeight=1082 一致。\n * 早期版本用标称截面 120 直接推算得 1.0728 kg/m,偏低约 0.85%,已废弃。\n *\n * 依据:TB/T 2810-2017(纯铜)、TB/T 2821-2017(铜银)规格尺寸表;\n * CTMH/CTAH 型号口径与 TB/T 2809-2017 的对应关系见 copper 模块 note 字段。\n */\n\nexport interface WireSpec {\n /** 唯一标识 */\n readonly id: WirePresetId;\n /** 中文名 */\n readonly name: string;\n /** 英文名 */\n readonly nameEn: string;\n /** 标称截面积 A,mm² */\n readonly crossSectionMM2: number;\n /** 计算截面积,mm²(标准表列,自重按此值 × 8.94 g/cm³ 计) */\n readonly calculatedSectionMM2: number;\n /** 弹性模量 E,GPa(标称参考值) */\n readonly elasticModulusGPa: number;\n /** 线膨胀系数 α,1/℃(标称参考值) */\n readonly expansionPerDegC: number;\n /** 线密度,kg/m(标准参考单位质量) */\n readonly linearMassKgPerM: number;\n}\n\n/** 参考密度,g/cm³(标准注:参考单位质量按此密度计) */\nexport const REFERENCE_DENSITY_G_PER_CM3 = 8.94;\n\n/** 线材预设 id */\nexport type WirePresetId = 'cthm120' | 'cthm150' | 'ctha120';\n\n/**\n * 标准「参考单位质量」表,kg/km。\n * 与 `src/copper/index.ts` 的 TB2809_WIRE_PARAMS.unitWeightKgPerKm 同源\n * (站点 /calculator/assets/calc-core.js 的 COPPER_TABLE)。\n */\nexport const STANDARD_UNIT_WEIGHT_KG_PER_KM: Readonly<Record<WirePresetId, number>> = {\n cthm120: 1082,\n cthm150: 1350,\n ctha120: 1070,\n};\n\n/** 由标准参考单位质量换算线密度,kg/m */\nexport function unitWeightToKgPerM(kgPerKm: number): number {\n return kgPerKm / 1000;\n}\n\n/**\n * 由截面积与密度反算线密度。\n *\n * ⚠️ 传入的必须是「计算截面」而非「标称截面」,否则结果偏低约 0.85%。\n * 120 mm² 标称对应计算截面 121 mm²;150 mm² 标称对应 151 mm²。\n *\n * @param crossSectionMM2 计算截面积,mm²\n * @param densityGPerCm3 密度,g/cm³\n * @returns 线密度,kg/m\n */\nexport function deriveLinearMassKgPerM(\n crossSectionMM2: number,\n densityGPerCm3: number = REFERENCE_DENSITY_G_PER_CM3,\n): number {\n // A[mm²] × 1e-6 [m²/mm²] × ρ[g/cm³] × 1000 [kg/m³ per g/cm³]\n return crossSectionMM2 * 1e-6 * densityGPerCm3 * 1000;\n}\n\n/** 铜及铜合金接触线的常用线膨胀系数,1/℃ */\nexport const COPPER_ALLOY_ALPHA_PER_DEG_C = 1.7e-5;\n\nexport const WIRE_PRESETS: readonly WireSpec[] = [\n {\n id: 'cthm120',\n name: 'CTMH-120(铜镁 120)',\n nameEn: 'CTMH-120 (CuMg 120 mm²)',\n crossSectionMM2: 120,\n calculatedSectionMM2: 121,\n elasticModulusGPa: 120,\n expansionPerDegC: COPPER_ALLOY_ALPHA_PER_DEG_C,\n linearMassKgPerM: unitWeightToKgPerM(STANDARD_UNIT_WEIGHT_KG_PER_KM.cthm120),\n },\n {\n id: 'cthm150',\n name: 'CTMH-150(铜镁 150)',\n nameEn: 'CTMH-150 (CuMg 150 mm²)',\n crossSectionMM2: 150,\n calculatedSectionMM2: 151,\n elasticModulusGPa: 120,\n expansionPerDegC: COPPER_ALLOY_ALPHA_PER_DEG_C,\n linearMassKgPerM: unitWeightToKgPerM(STANDARD_UNIT_WEIGHT_KG_PER_KM.cthm150),\n },\n {\n id: 'ctha120',\n name: 'CTAH-120(铜银 120)',\n nameEn: 'CTAH-120 (CuAg 120 mm²)',\n crossSectionMM2: 120,\n calculatedSectionMM2: 121,\n elasticModulusGPa: 120,\n expansionPerDegC: COPPER_ALLOY_ALPHA_PER_DEG_C,\n linearMassKgPerM: unitWeightToKgPerM(STANDARD_UNIT_WEIGHT_KG_PER_KM.ctha120),\n },\n];\n\n/** 按 id 取线材预设,找不到返回 undefined */\nexport function findWirePreset(id: string): WireSpec | undefined {\n return WIRE_PRESETS.find((w) => w.id === id);\n}\n\n/**\n * 由线密度求单位自重荷载 g,N/m。\n * @param linearMassKgPerM 线密度,kg/m\n */\nexport function weightPerLengthNPerM(linearMassKgPerM: number): number {\n return linearMassKgPerM * G0;\n}\n\n/**\n * 由线材预设直接取单位自重荷载 g,N/m。\n */\nexport function weightOfPresetNPerM(spec: WireSpec): number {\n return weightPerLengthNPerM(spec.linearMassKgPerM);\n}\n","/**\n * TB/T 2809-2017 表5 持续载流量参考值(A)。\n *\n * 来源:itswe.com 标准规范库,据 TB/T 2809-2017 无水印全文扫描件逐格复核。\n *\n * 查表语义:\n * - 返回数值:该项载流量\n * - 返回 null:该 (材质, 截面) 规格存在,但该工况按标准原文注\"不需要考核\"\n * (如纯铜接触线不考核 150℃ 工况)\n * - 返回 undefined:该材质无此截面规格(如铜铬锆无 120 mm²)\n *\n * ⚠️ 表中为室内(无风无日照试验条件)值与室外值;工程取值请以标准原文与\n * 产品技术条件为准。高海拔、隧道内等场景须另行叠加散热修正。\n */\n\nexport type ContactWireTypeCode =\n | 'CT'\n | 'CTA'\n | 'CTS'\n | 'CTSM'\n | 'CTSH'\n | 'CTM'\n | 'CTMM'\n | 'CTMH'\n | 'CTCZ';\n\n/** 载流量考核工况 */\nexport type AmpacityCondition = 'indoor-95' | 'outdoor-95' | 'indoor-150' | 'outdoor-150';\n\nexport type CrossSectionMM2 = 120 | 150;\n\n/** 按截面索引的载流量对,[120 mm², 150 mm²] */\ntype SectionPair = readonly [number | null, number | null];\n\nexport interface AmpacityEntry {\n readonly type: ContactWireTypeCode;\n readonly materialZh: string;\n /** 标称截面,mm² */\n readonly crossSectionMM2: CrossSectionMM2;\n readonly condition: AmpacityCondition;\n /** 持续载流量,A。null 表示该项不需要考核 */\n readonly ampacityA: number | null;\n}\n\nconst M = (\n type: ContactWireTypeCode,\n materialZh: string,\n sections: readonly CrossSectionMM2[],\n indoor95: SectionPair,\n outdoor95: SectionPair,\n indoor150: SectionPair,\n outdoor150: SectionPair,\n): AmpacityEntry[] => {\n const conditions: ReadonlyArray<readonly [AmpacityCondition, SectionPair]> = [\n ['indoor-95', indoor95],\n ['outdoor-95', outdoor95],\n ['indoor-150', indoor150],\n ['outdoor-150', outdoor150],\n ];\n const out: AmpacityEntry[] = [];\n for (const section of sections) {\n for (const [condition, pair] of conditions) {\n const value = section === 120 ? pair[0] : pair[1];\n out.push({\n type,\n materialZh,\n crossSectionMM2: section,\n condition,\n ampacityA: value ?? null,\n });\n }\n }\n return out;\n};\n\nexport const TB2809_AMPACITY_A: readonly AmpacityEntry[] = [\n ...M('CT', '铜', [120, 150], [360, 425], [495, 570], [null, null], [null, null]),\n ...M('CTA', '铜银', [120, 150], [360, 425], [495, 570], [515, 620], [680, 785]),\n ...M('CTS', '铜锡', [120, 150], [360, 425], [490, 565], [515, 620], [680, 790]),\n ...M('CTSM', '铜锡', [120, 150], [330, 400], [455, 525], [490, 560], [630, 730]),\n ...M('CTSH', '铜锡', [120, 150], [310, 360], [420, 480], [450, 520], [580, 670]),\n ...M('CTM', '铜镁', [120, 150], [330, 400], [455, 525], [490, 560], [630, 730]),\n ...M('CTMM', '铜镁', [120, 150], [310, 360], [420, 480], [450, 520], [580, 670]),\n ...M('CTMH', '铜镁', [120, 150], [300, 340], [410, 460], [430, 500], [560, 650]),\n ...M('CTCZ', '铜铬锆', [150], [null, 395], [null, 505], [null, 580], [null, 710]),\n];\n\n/**\n * 查表。\n * @returns 载流量 A;该规格存在但不考核时为 null;该材质无此截面时为 undefined\n */\nexport function findAmpacityA(params: {\n type: ContactWireTypeCode;\n crossSectionMM2: CrossSectionMM2;\n condition: AmpacityCondition;\n}): number | null | undefined {\n const row = TB2809_AMPACITY_A.find(\n (e) =>\n e.type === params.type &&\n e.crossSectionMM2 === params.crossSectionMM2 &&\n e.condition === params.condition,\n );\n return row === undefined ? undefined : row.ampacityA;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/ocs-calculators/ocs-calculators/dist/index.cjs","../src/data/wire-specs.ts","../src/data/tb2809-ampacity.ts"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACA;AC5FO,IAAM,4BAAA,EAA8B,IAAA;AAUpC,IAAM,+BAAA,EAAyE;AAAA,EACpF,OAAA,EAAS,IAAA;AAAA,EACT,OAAA,EAAS,IAAA;AAAA,EACT,OAAA,EAAS;AACX,CAAA;AAGO,SAAS,kBAAA,CAAmB,OAAA,EAAyB;AAC1D,EAAA,OAAO,QAAA,EAAU,GAAA;AACnB;AAYO,SAAS,sBAAA,CACd,eAAA,EACA,eAAA,EAAyB,2BAAA,EACjB;AAER,EAAA,OAAO,gBAAA,EAAkB,KAAA,EAAO,eAAA,EAAiB,GAAA;AACnD;AAGO,IAAM,6BAAA,EAA+B,KAAA;AAErC,IAAM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AM,GAAG,CAAC;AAC/E,CAAA;AAMO,SAAS,aAAA,CAAc,MAAA,EAIA;AAC5B,EAAA,MAAM,IAAA,EAAM,iBAAA,CAAkB,IAAA;AAAA,IAC5B,CAAC,CAAA,EAAA,GACC,CAAA,CAAE,KAAA,IAAS,MAAA,CAAO,KAAA,GAClB,CAAA,CAAE,gBAAA,IAAoB,MAAA,CAAO,gBAAA,GAC7B,CAAA,CAAE,UAAA,IAAc,MAAA,CAAO;AAAA,EAC3B,CAAA;AACA,EAAA,OAAO,IAAA,IAAQ,KAAA,EAAA,EAAY,KAAA,EAAA,EAAY,GAAA,CAAI,SAAA;AAC7C;AFgIA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,gqMAAC","file":"/home/runner/work/ocs-calculators/ocs-calculators/dist/index.cjs","sourcesContent":[null,"import { G0 } from '../types';\n\n/**\n * 接触线线材参数预设。\n *\n * ⚠️ 全部为标称参考值,实际取值以产品技术条件与设计文件为准。\n * ⚠️ 本站计算器的参数界面支持手工覆盖这些值 —— 那才是工程上正确的用法。\n *\n * 自重口径(2026-08-31 已确定):\n * 线密度取标准「参考单位质量」表值,而非由标称截面推算。标准表分两列:\n * 型号|标称截面|计算截面|参考单位质量\n * CT 120|120|121|1082 kg/km\n * 注:参考单位质量按密度 8.94 g/cm³ 计算\n * 即标准的 8.94 g/cm³ 是配「计算截面」(把尺寸公差计入后的截面)用的,\n * 不是配「标称截面」用的:121 × 8.94 × 1e-3 = 1.0817 ≈ 1.082 kg/m。\n * 因此 CTMH-120 自重 g = 1.082 × 9.81 = 10.61442 N/m,\n * 与站点 /calculator/tension/ 预设 rho=1.082、COPPER_TABLE.unitWeight=1082 一致。\n * 早期版本用标称截面 120 直接推算得 1.0728 kg/m,偏低约 0.85%,已废弃。\n *\n * 依据:TB/T 2810-2017(纯铜)、TB/T 2821-2017(铜银)规格尺寸表;\n * CTMH/CTAH 型号口径与 TB/T 2809-2017 的对应关系见 copper 模块 note 字段。\n */\n\nexport interface WireSpec {\n /** 唯一标识 */\n readonly id: WirePresetId;\n /** 中文名 */\n readonly name: string;\n /** 英文名 */\n readonly nameEn: string;\n /** 标称截面积 A,mm² */\n readonly crossSectionMM2: number;\n /** 计算截面积,mm²(标准表列,自重按此值 × 8.94 g/cm³ 计) */\n readonly calculatedSectionMM2: number;\n /** 弹性模量 E,GPa(标称参考值) */\n readonly elasticModulusGPa: number;\n /** 线膨胀系数 α,1/℃(标称参考值) */\n readonly expansionPerDegC: number;\n /** 线密度,kg/m(标准参考单位质量) */\n readonly linearMassKgPerM: number;\n}\n\n/** 参考密度,g/cm³(标准注:参考单位质量按此密度计) */\nexport const REFERENCE_DENSITY_G_PER_CM3 = 8.94;\n\n/** 线材预设 id */\nexport type WirePresetId = 'cthm120' | 'cthm150' | 'ctha120';\n\n/**\n * 标准「参考单位质量」表,kg/km。\n * 与 `src/copper/index.ts` 的 TB2809_WIRE_PARAMS.unitWeightKgPerKm 同源\n * (站点 /calculator/assets/calc-core.js 的 COPPER_TABLE)。\n */\nexport const STANDARD_UNIT_WEIGHT_KG_PER_KM: Readonly<Record<WirePresetId, number>> = {\n cthm120: 1082,\n cthm150: 1350,\n ctha120: 1070,\n};\n\n/** 由标准参考单位质量换算线密度,kg/m */\nexport function unitWeightToKgPerM(kgPerKm: number): number {\n return kgPerKm / 1000;\n}\n\n/**\n * 由截面积与密度反算线密度。\n *\n * ⚠️ 传入的必须是「计算截面」而非「标称截面」,否则结果偏低约 0.85%。\n * 120 mm² 标称对应计算截面 121 mm²;150 mm² 标称对应 151 mm²。\n *\n * @param crossSectionMM2 计算截面积,mm²\n * @param densityGPerCm3 密度,g/cm³\n * @returns 线密度,kg/m\n */\nexport function deriveLinearMassKgPerM(\n crossSectionMM2: number,\n densityGPerCm3: number = REFERENCE_DENSITY_G_PER_CM3,\n): number {\n // A[mm²] × 1e-6 [m²/mm²] × ρ[g/cm³] × 1000 [kg/m³ per g/cm³]\n return crossSectionMM2 * 1e-6 * densityGPerCm3 * 1000;\n}\n\n/** 铜及铜合金接触线的常用线膨胀系数,1/℃ */\nexport const COPPER_ALLOY_ALPHA_PER_DEG_C = 1.7e-5;\n\nexport const WIRE_PRESETS: readonly WireSpec[] = [\n {\n id: 'cthm120',\n name: 'CTMH-120(铜镁 120)',\n nameEn: 'CTMH-120 (CuMg 120 mm²)',\n crossSectionMM2: 120,\n calculatedSectionMM2: 121,\n elasticModulusGPa: 120,\n expansionPerDegC: COPPER_ALLOY_ALPHA_PER_DEG_C,\n linearMassKgPerM: unitWeightToKgPerM(STANDARD_UNIT_WEIGHT_KG_PER_KM.cthm120),\n },\n {\n id: 'cthm150',\n name: 'CTMH-150(铜镁 150)',\n nameEn: 'CTMH-150 (CuMg 150 mm²)',\n crossSectionMM2: 150,\n calculatedSectionMM2: 151,\n elasticModulusGPa: 120,\n expansionPerDegC: COPPER_ALLOY_ALPHA_PER_DEG_C,\n linearMassKgPerM: unitWeightToKgPerM(STANDARD_UNIT_WEIGHT_KG_PER_KM.cthm150),\n },\n {\n id: 'ctha120',\n name: 'CTAH-120(铜银 120)',\n nameEn: 'CTAH-120 (CuAg 120 mm²)',\n crossSectionMM2: 120,\n calculatedSectionMM2: 121,\n elasticModulusGPa: 120,\n expansionPerDegC: COPPER_ALLOY_ALPHA_PER_DEG_C,\n linearMassKgPerM: unitWeightToKgPerM(STANDARD_UNIT_WEIGHT_KG_PER_KM.ctha120),\n },\n];\n\n/** 按 id 取线材预设,找不到返回 undefined */\nexport function findWirePreset(id: string): WireSpec | undefined {\n return WIRE_PRESETS.find((w) => w.id === id);\n}\n\n/**\n * 由线密度求单位自重荷载 g,N/m。\n * @param linearMassKgPerM 线密度,kg/m\n */\nexport function weightPerLengthNPerM(linearMassKgPerM: number): number {\n return linearMassKgPerM * G0;\n}\n\n/**\n * 由线材预设直接取单位自重荷载 g,N/m。\n */\nexport function weightOfPresetNPerM(spec: WireSpec): number {\n return weightPerLengthNPerM(spec.linearMassKgPerM);\n}\n","/**\n * TB/T 2809-2017 表5 持续载流量参考值(A)。\n *\n * 来源:itswe.com 标准规范库,据 TB/T 2809-2017 无水印全文扫描件逐格复核。\n *\n * 查表语义:\n * - 返回数值:该项载流量\n * - 返回 null:该 (材质, 截面) 规格存在,但该工况按标准原文注\"不需要考核\"\n * (如纯铜接触线不考核 150℃ 工况)\n * - 返回 undefined:该材质无此截面规格(如铜铬锆无 120 mm²)\n *\n * ⚠️ 表中为室内(无风无日照试验条件)值与室外值;工程取值请以标准原文与\n * 产品技术条件为准。高海拔、隧道内等场景须另行叠加散热修正。\n */\n\nexport type ContactWireTypeCode =\n | 'CT'\n | 'CTA'\n | 'CTS'\n | 'CTSM'\n | 'CTSH'\n | 'CTM'\n | 'CTMM'\n | 'CTMH'\n | 'CTCZ';\n\n/** 载流量考核工况 */\nexport type AmpacityCondition = 'indoor-95' | 'outdoor-95' | 'indoor-150' | 'outdoor-150';\n\nexport type CrossSectionMM2 = 120 | 150;\n\n/** 按截面索引的载流量对,[120 mm², 150 mm²] */\ntype SectionPair = readonly [number | null, number | null];\n\nexport interface AmpacityEntry {\n readonly type: ContactWireTypeCode;\n readonly materialZh: string;\n /** 标称截面,mm² */\n readonly crossSectionMM2: CrossSectionMM2;\n readonly condition: AmpacityCondition;\n /** 持续载流量,A。null 表示该项不需要考核 */\n readonly ampacityA: number | null;\n}\n\nconst M = (\n type: ContactWireTypeCode,\n materialZh: string,\n sections: readonly CrossSectionMM2[],\n indoor95: SectionPair,\n outdoor95: SectionPair,\n indoor150: SectionPair,\n outdoor150: SectionPair,\n): AmpacityEntry[] => {\n const conditions: ReadonlyArray<readonly [AmpacityCondition, SectionPair]> = [\n ['indoor-95', indoor95],\n ['outdoor-95', outdoor95],\n ['indoor-150', indoor150],\n ['outdoor-150', outdoor150],\n ];\n const out: AmpacityEntry[] = [];\n for (const section of sections) {\n for (const [condition, pair] of conditions) {\n const value = section === 120 ? pair[0] : pair[1];\n out.push({\n type,\n materialZh,\n crossSectionMM2: section,\n condition,\n ampacityA: value ?? null,\n });\n }\n }\n return out;\n};\n\nexport const TB2809_AMPACITY_A: readonly AmpacityEntry[] = [\n ...M('CT', '铜', [120, 150], [360, 425], [495, 570], [null, null], [null, null]),\n ...M('CTA', '铜银', [120, 150], [360, 425], [495, 570], [515, 620], [680, 785]),\n ...M('CTS', '铜锡', [120, 150], [360, 425], [490, 565], [515, 620], [680, 790]),\n ...M('CTSM', '铜锡', [120, 150], [330, 400], [455, 525], [490, 560], [630, 730]),\n ...M('CTSH', '铜锡', [120, 150], [310, 360], [420, 480], [450, 520], [580, 670]),\n ...M('CTM', '铜镁', [120, 150], [330, 400], [455, 525], [490, 560], [630, 730]),\n ...M('CTMM', '铜镁', [120, 150], [310, 360], [420, 480], [450, 520], [580, 670]),\n ...M('CTMH', '铜镁', [120, 150], [300, 340], [410, 460], [430, 500], [560, 650]),\n ...M('CTCZ', '铜铬锆', [150], [null, 395], [null, 505], [null, 580], [null, 710]),\n];\n\n/**\n * 查表。\n * @returns 载流量 A;该规格存在但不考核时为 null;该材质无此截面时为 undefined\n */\nexport function findAmpacityA(params: {\n type: ContactWireTypeCode;\n crossSectionMM2: CrossSectionMM2;\n condition: AmpacityCondition;\n}): number | null | undefined {\n const row = TB2809_AMPACITY_A.find(\n (e) =>\n e.type === params.type &&\n e.crossSectionMM2 === params.crossSectionMM2 &&\n e.condition === params.condition,\n );\n return row === undefined ? undefined : row.ampacityA;\n}\n"]}
|
package/dist/index.js
CHANGED
|
@@ -20,6 +20,12 @@ import {
|
|
|
20
20
|
waveSpeedCheck,
|
|
21
21
|
wavespeedMeta
|
|
22
22
|
} from "./chunk-VAHQDIMW.js";
|
|
23
|
+
import {
|
|
24
|
+
DEFAULT_REPLACEMENT_THRESHOLD_PERCENT,
|
|
25
|
+
sectionFromDiameterMM2,
|
|
26
|
+
wearMeta,
|
|
27
|
+
wearRatio
|
|
28
|
+
} from "./chunk-LDSV3U4M.js";
|
|
23
29
|
import {
|
|
24
30
|
AIR_DENSITY_KG_PER_M3,
|
|
25
31
|
windClearanceCheck,
|
|
@@ -27,12 +33,6 @@ import {
|
|
|
27
33
|
windLoadNPerM,
|
|
28
34
|
windMeta
|
|
29
35
|
} from "./chunk-RVG3LEZQ.js";
|
|
30
|
-
import {
|
|
31
|
-
DEFAULT_REPLACEMENT_THRESHOLD_PERCENT,
|
|
32
|
-
sectionFromDiameterMM2,
|
|
33
|
-
wearMeta,
|
|
34
|
-
wearRatio
|
|
35
|
-
} from "./chunk-LDSV3U4M.js";
|
|
36
36
|
import {
|
|
37
37
|
DEFAULT_PANTOGRAPH_HEIGHT_M,
|
|
38
38
|
STANDARD_GAUGE_M,
|
|
@@ -41,6 +41,13 @@ import {
|
|
|
41
41
|
curveStaggerMeta,
|
|
42
42
|
versineM
|
|
43
43
|
} from "./chunk-IFVYGNT3.js";
|
|
44
|
+
import {
|
|
45
|
+
dropperLengths,
|
|
46
|
+
dropperMeta,
|
|
47
|
+
dropperPositionsM,
|
|
48
|
+
maxParabolaSagM,
|
|
49
|
+
parabolaSagM
|
|
50
|
+
} from "./chunk-UO2PHBC3.js";
|
|
44
51
|
import {
|
|
45
52
|
REF_TARGET_COEFF,
|
|
46
53
|
REF_TARGET_OFFSET_N,
|
|
@@ -56,13 +63,6 @@ import {
|
|
|
56
63
|
icingCheck,
|
|
57
64
|
icingMeta
|
|
58
65
|
} from "./chunk-GN6QNOUL.js";
|
|
59
|
-
import {
|
|
60
|
-
dropperLengths,
|
|
61
|
-
dropperMeta,
|
|
62
|
-
dropperPositionsM,
|
|
63
|
-
maxParabolaSagM,
|
|
64
|
-
parabolaSagM
|
|
65
|
-
} from "./chunk-UO2PHBC3.js";
|
|
66
66
|
import {
|
|
67
67
|
STEEL_POLE_SERIES_KNM,
|
|
68
68
|
TEST_MOMENT_FACTOR,
|
|
@@ -101,16 +101,16 @@ import {
|
|
|
101
101
|
TENSION_DIFF_RATIO,
|
|
102
102
|
anchorLengthCheck,
|
|
103
103
|
anchorLengthMeta
|
|
104
|
-
} from "./chunk-
|
|
104
|
+
} from "./chunk-L7JKLVQW.js";
|
|
105
|
+
import {
|
|
106
|
+
bValue,
|
|
107
|
+
bvalueMeta
|
|
108
|
+
} from "./chunk-3GREMF76.js";
|
|
105
109
|
import {
|
|
106
110
|
ASSEMBLY_TOLERANCE_MM,
|
|
107
111
|
cantileverCut,
|
|
108
112
|
cantileverMeta
|
|
109
113
|
} from "./chunk-HZWNKKIB.js";
|
|
110
|
-
import {
|
|
111
|
-
bValue,
|
|
112
|
-
bvalueMeta
|
|
113
|
-
} from "./chunk-3GREMF76.js";
|
|
114
114
|
import {
|
|
115
115
|
TB2809_WIRE_PARAMS,
|
|
116
116
|
copperMeta,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ocs-calculators",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "铁路接触网(OCS)工程计算工具集 —— 张力、弛度、吊弦、风偏移等计算,零依赖纯函数实现 / Railway overhead contact system (OCS) engineering calculators as zero-dependency pure functions",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"catenary",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/ocs-calculators/ocs-calculators/dist/chunk-CSLI5HEJ.cjs","../src/anchor-length/meta.ts","../src/anchor-length/index.ts"],"names":[],"mappings":"AAAA;ACEO,IAAM,iBAAA,EAAmC;AAAA,EAC9C,IAAA,EAAM,wDAAA;AAAA,EACN,MAAA,EAAQ,sCAAA;AAAA,EACR,OAAA,EAAS,sOAAA;AAAA,EACT,OAAA,EAAS;AAAA,IACP,8DAAA;AAAA,IACA,yFAAA;AAAA,IACA;AAAA,EACF,CAAA;AAAA,EACA,UAAA,EAAY;AAAA,IACV,yKAAA;AAAA,IACA,4IAAA;AAAA,IACA;AAAA,EACF,CAAA;AAAA,EACA,KAAA,EAAO,CAAC,4CAAA,EAAqB,2CAAA,EAAoB,sCAAA,EAAoB,6BAAc,CAAA;AAAA,EACnF,UAAA,EAAY,sKAAA;AAAA,EACZ,MAAA,EAAQ;AACV,CAAA;ADAA;AACA;AEjBO,IAAM,mBAAA,EAAqB,GAAA;AAwC3B,SAAS,iBAAA,CAAkB,KAAA,EAA8C;AAC9E,EAAA,MAAM,EAAE,OAAA,EAAS,eAAe,EAAA,EAAI,KAAA;AACpC,EAAA,GAAA,CAAI,CAAA,CAAE,eAAA,EAAiB,CAAA,CAAA,EAAI,MAAM,IAAI,UAAA,CAAW,sEAAA,EAAiB,eAAA,EAAiB,KAAK,CAAA;AACvF,EAAA,IAAI,MAAA;AACJ,EAAA,GAAA,CAAI,QAAA,IAAY,OAAA,EAAS;AACvB,IAAA,MAAM,EAAE,YAAA,EAAc,gBAAA,EAAkB,eAAe,EAAA,EAAI,KAAA;AAC3D,IAAA,GAAA,CAAI,CAAA,CAAE,aAAA,GAAgB,aAAA,EAAe,CAAA,CAAA,EAAI,MAAM,IAAI,UAAA,CAAW,kDAAU,CAAA;AACxE,IAAA,GAAA,CAAI,CAAA,CAAE,iBAAA,GAAoB,iBAAA,EAAmB,CAAA,CAAA,EAAI,MAAM,IAAI,UAAA,CAAW,wDAAW,CAAA;AACjF,IAAA,MAAM,EAAA,mBAAI,cAAA,UAAkB,GAAA;AAC5B,IAAA,MAAM,IAAA,EAAO,iBAAA,EAAmB,eAAA,EAAiB,IAAA,EAAO,YAAA;AACxD,IAAA,OAAA,EAAS,IAAA,EAAM,CAAA;AAAA,EACjB,EAAA,KAAO;AACL,IAAA,MAAM,EAAE,SAAA,EAAW,KAAA,EAAO,cAAA,EAAgB,gBAAA,EAAkB,cAAA,EAAgB,WAAW,EAAA,EAAI,KAAA;AAC3F,IAAA,GAAA,CAAI,CAAA,CAAE,UAAA,GAAa,UAAA,EAAY,CAAA,CAAA,EAAI,MAAM,IAAI,UAAA,CAAW,wDAAW,CAAA;AACnE,IAAA,GAAA,CAAI,CAAA,CAAE,MAAA,GAAS,MAAA,EAAQ,CAAA,CAAA,EAAI,MAAM,IAAI,UAAA,CAAW,sCAAQ,CAAA;AACxD,IAAA,GAAA,CAAI,CAAA,CAAE,eAAA,GAAkB,eAAA,EAAiB,CAAA,CAAA,EAAI,MAAM,IAAI,UAAA,CAAW,kDAAU,CAAA;AAC5E,IAAA,GAAA,CAAI,iBAAA,IAAqB,KAAA,EAAA,GAAa,eAAA,IAAmB,KAAA,EAAA,GAAa,WAAA,IAAe,KAAA,CAAA,EAAW;AAC9F,MAAA,MAAM,IAAI,UAAA,CAAW,yEAAkB,CAAA;AAAA,IACzC;AAEA,IAAA,OAAA,EAAU,UAAA,EAAA,CAAa,UAAA,EAAY,KAAA,EAAA,EAAS,iBAAA,EAAmB,eAAA,EAAiB,WAAA,EAAA,CAAe,EAAA,EAAI,cAAA,EAAA,EAAkB,GAAA;AAAA,EACvH;AACA,EAAA,MAAM,OAAA,EAAS,mBAAA,EAAqB,eAAA,EAAiB,GAAA;AACrD,EAAA,OAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,OAAA,EAAS,MAAA,EAAQ,MAAA,EAAQ,OAAA,GAAU,OAAO,CAAA;AAC5E;AFrBA;AACA;AACE;AACA;AACA;AACF,4IAAC","file":"/home/runner/work/ocs-calculators/ocs-calculators/dist/chunk-CSLI5HEJ.cjs","sourcesContent":[null,"import type { CalculatorMeta } from '../types';\n\nexport const anchorLengthMeta: CalculatorMeta = {\n name: '锚段长度张力差校核',\n nameEn: 'Anchor Span Tension Difference Check',\n summary: '计算接触线张力增量(曲线定位器项、直线吊弦项,教材口径)并按张力差判据校核。',\n formula: [\n '曲线定位器项:T_jw = d·T_jm/R',\n '直线吊弦项:T_jd = L(L−l)·g_j·α·Δt/(2c)',\n '判据:ΔT ≤ 10%·T_N(TB 10009-2016 第 5.4.7 条)',\n ],\n references: [\n '判据:接触线、承力索张力差均不得大于额定张力 10%(TB 10009-2016 5.4.7)',\n '教材口径(于万聚《电气化铁道接触网设计》体系)',\n '直线吊弦项量纲:m²·kN/m·(1/℃)·℃/m = kN,2026-09-13 复核自洽',\n ],\n scope: ['曲线半径 R:100~4000 m', '定位器长 d:0.5~2.5 m', '半锚段 L:100~2000 m', '跨距 l:30~90 m'],\n disclaimer: '本工具结果仅供参考,工程应用以设计文件为准。详见 DISCLAIMER.md。',\n online: 'https://www.itswe.com/calculator/anchor-length/',\n};\n","export { anchorLengthMeta } from './meta';\n\n/** 张力增量判据(TB 10009-2016 第 5.4.7 条) */\nexport const TENSION_DIFF_RATIO = 0.10;\n\n/** 锚段张力增量计算参数(教材口径,直线吊弦项量纲已复核)。单位:m、kN、1/℃、℃。 */\nexport interface AnchorLengthInput {\n /** 区段类型:'line' 直线 | 'curve' 曲线 */\n readonly section: 'line' | 'curve';\n /** 接触线额定张力 T_N,kN(判据基准) */\n readonly ratedTensionKN: number;\n /** 半锚段长度 L(中心锚结至补偿器),m */\n readonly halfSpanM?: number;\n /** 曲线半径 R,m(曲线区段) */\n readonly curveRadiusM?: number;\n /** 定位器长度 d,m(曲线区段) */\n readonly regulatorLengthM?: number;\n /** 定位器数量 n(曲线区段) */\n readonly regulatorCount?: number;\n /** 跨距 l,m(直线吊弦项) */\n readonly spanM?: number;\n /** 吊弦平均长度 c,m(直线吊弦项) */\n readonly dropperLengthM?: number;\n /** 接触线单位重 g_j,kN/m(直线吊弦项) */\n readonly wireWeightKNPerM?: number;\n /** 线胀系数 α,1/℃(直线吊弦项) */\n readonly expansionCoeff?: number;\n /** 计算温差 Δt,℃(直线吊弦项) */\n readonly tempDeltaC?: number;\n}\n\nexport interface AnchorLengthResult {\n /** 张力增量,N */\n readonly deltaN: number;\n /** 判据限值 10%·T_N,N */\n readonly limitN: number;\n /** 张力差占额定张力比例 */\n readonly ratio: number;\n /** 是否合格(ΔT ≤ 10%·T_N) */\n readonly passes: boolean;\n}\n\n/** 锚段张力增量(教材口径)与 10% 判据校核 */\nexport function anchorLengthCheck(input: AnchorLengthInput): AnchorLengthResult {\n const { section, ratedTensionKN } = input;\n if (!(ratedTensionKN > 0)) throw new RangeError('额定张力必须为正,收到 ' + ratedTensionKN + ' kN');\n let deltaN: number;\n if (section === 'curve') {\n const { curveRadiusM, regulatorLengthM, regulatorCount } = input;\n if (!(curveRadiusM && curveRadiusM > 0)) throw new RangeError('曲线半径必须为正');\n if (!(regulatorLengthM && regulatorLengthM > 0)) throw new RangeError('定位器长度必须为正');\n const n = regulatorCount ?? 1;\n const one = (regulatorLengthM * ratedTensionKN * 1e3) / curveRadiusM; // T_jw = d·T_jm/R\n deltaN = one * n;\n } else {\n const { halfSpanM, spanM, dropperLengthM, wireWeightKNPerM, expansionCoeff, tempDeltaC } = input;\n if (!(halfSpanM && halfSpanM > 0)) throw new RangeError('半锚段长度必须为正');\n if (!(spanM && spanM > 0)) throw new RangeError('跨距必须为正');\n if (!(dropperLengthM && dropperLengthM > 0)) throw new RangeError('吊弦长度必须为正');\n if (wireWeightKNPerM === undefined || expansionCoeff === undefined || tempDeltaC === undefined) {\n throw new RangeError('直线区段需提供 g_j、α、Δt');\n }\n // T_jd = L(L−l)·g_j·α·Δt/(2c),kN → N\n deltaN = (halfSpanM * (halfSpanM - spanM) * wireWeightKNPerM * expansionCoeff * tempDeltaC) / (2 * dropperLengthM) * 1e3;\n }\n const limitN = TENSION_DIFF_RATIO * ratedTensionKN * 1e3;\n return { deltaN, limitN, ratio: deltaN / limitN, passes: deltaN <= limitN };\n}\n"]}
|