ocs-calculators 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/README.md +36 -28
  3. package/README_EN.md +131 -23
  4. package/dist/bvalue/index.cjs +2 -2
  5. package/dist/bvalue/index.d.cts +1 -1
  6. package/dist/bvalue/index.d.ts +1 -1
  7. package/dist/bvalue/index.js +1 -1
  8. package/dist/{chunk-D5F5ES2R.js → chunk-2HYOBL6M.js} +8 -6
  9. package/dist/chunk-2HYOBL6M.js.map +1 -0
  10. package/dist/{chunk-IUENDAAJ.js → chunk-53ONNIVL.js} +9 -3
  11. package/dist/chunk-53ONNIVL.js.map +1 -0
  12. package/dist/{chunk-X25CXRVE.cjs → chunk-DHJGNVCI.cjs} +8 -6
  13. package/dist/chunk-DHJGNVCI.cjs.map +1 -0
  14. package/dist/{chunk-3GREMF76.js → chunk-DN6BVPCQ.js} +3 -4
  15. package/dist/chunk-DN6BVPCQ.js.map +1 -0
  16. package/dist/{chunk-IQR3SRCD.js → chunk-ES3AQ52A.js} +43 -26
  17. package/dist/chunk-ES3AQ52A.js.map +1 -0
  18. package/dist/{chunk-J2UXRMTU.cjs → chunk-FHPRIOTM.cjs} +24 -25
  19. package/dist/chunk-FHPRIOTM.cjs.map +1 -0
  20. package/dist/{chunk-MTAYG3U2.cjs → chunk-FRYBXJCM.cjs} +43 -26
  21. package/dist/chunk-FRYBXJCM.cjs.map +1 -0
  22. package/dist/{chunk-KOSC6EA3.js → chunk-G5ZI24PW.js} +3 -2
  23. package/dist/chunk-G5ZI24PW.js.map +1 -0
  24. package/dist/{chunk-RVP3IU2L.cjs → chunk-NSVETJYA.cjs} +9 -3
  25. package/dist/chunk-NSVETJYA.cjs.map +1 -0
  26. package/dist/{chunk-5Q6IASB2.cjs → chunk-TXFBPGHR.cjs} +3 -2
  27. package/dist/{chunk-5Q6IASB2.cjs.map → chunk-TXFBPGHR.cjs.map} +1 -1
  28. package/dist/{chunk-4UU7WA7N.cjs → chunk-VPW4T6YN.cjs} +7 -6
  29. package/dist/chunk-VPW4T6YN.cjs.map +1 -0
  30. package/dist/{chunk-UO2PHBC3.js → chunk-XQBTMD7W.js} +24 -25
  31. package/dist/chunk-XQBTMD7W.js.map +1 -0
  32. package/dist/{chunk-IFVYGNT3.js → chunk-XRSWKYS6.js} +7 -6
  33. package/dist/chunk-XRSWKYS6.js.map +1 -0
  34. package/dist/{chunk-HXALVJ4G.cjs → chunk-YGTESFOQ.cjs} +3 -4
  35. package/dist/chunk-YGTESFOQ.cjs.map +1 -0
  36. package/dist/copper/index.cjs +2 -2
  37. package/dist/copper/index.d.cts +24 -4
  38. package/dist/copper/index.d.ts +24 -4
  39. package/dist/copper/index.js +1 -1
  40. package/dist/cross-span/index.cjs +2 -2
  41. package/dist/cross-span/index.d.cts +4 -1
  42. package/dist/cross-span/index.d.ts +4 -1
  43. package/dist/cross-span/index.js +1 -1
  44. package/dist/curve-stagger/index.cjs +2 -2
  45. package/dist/curve-stagger/index.d.cts +6 -5
  46. package/dist/curve-stagger/index.d.ts +6 -5
  47. package/dist/curve-stagger/index.js +1 -1
  48. package/dist/dropper/index.cjs +2 -2
  49. package/dist/dropper/index.d.cts +21 -13
  50. package/dist/dropper/index.d.ts +21 -13
  51. package/dist/dropper/index.js +1 -1
  52. package/dist/index.cjs +11 -9
  53. package/dist/index.cjs.map +1 -1
  54. package/dist/index.d.cts +3 -0
  55. package/dist/index.d.ts +3 -0
  56. package/dist/index.js +10 -8
  57. package/dist/index.js.map +1 -1
  58. package/dist/stroke/index.cjs +2 -2
  59. package/dist/stroke/index.js +1 -1
  60. package/dist/voltage-drop/index.cjs +2 -2
  61. package/dist/voltage-drop/index.d.cts +6 -0
  62. package/dist/voltage-drop/index.d.ts +6 -0
  63. package/dist/voltage-drop/index.js +1 -1
  64. package/package.json +1 -1
  65. package/dist/chunk-3GREMF76.js.map +0 -1
  66. package/dist/chunk-4UU7WA7N.cjs.map +0 -1
  67. package/dist/chunk-D5F5ES2R.js.map +0 -1
  68. package/dist/chunk-HXALVJ4G.cjs.map +0 -1
  69. package/dist/chunk-IFVYGNT3.js.map +0 -1
  70. package/dist/chunk-IQR3SRCD.js.map +0 -1
  71. package/dist/chunk-IUENDAAJ.js.map +0 -1
  72. package/dist/chunk-J2UXRMTU.cjs.map +0 -1
  73. package/dist/chunk-KOSC6EA3.js.map +0 -1
  74. package/dist/chunk-MTAYG3U2.cjs.map +0 -1
  75. package/dist/chunk-RVP3IU2L.cjs.map +0 -1
  76. package/dist/chunk-UO2PHBC3.js.map +0 -1
  77. package/dist/chunk-X25CXRVE.cjs.map +0 -1
@@ -41,9 +41,9 @@ interface CurveStaggerResult {
41
41
  readonly cantShiftM: number;
42
42
  /** 跨中风偏 p_w,m */
43
43
  readonly windOffsetM: number;
44
- /** 矢度与拉出值同向时的偏移,m */
44
+ /** 矢度与拉出值同向、超高横移反向的偏移 |ā + c − δ| + p_w,m */
45
45
  readonly offsetPlusM: number;
46
- /** 矢度与拉出值反向时的偏移,m */
46
+ /** 矢度与拉出值反向、超高横移同向的偏移 |ā − c + δ| + p_w,m */
47
47
  readonly offsetMinusM: number;
48
48
  /** 取两者较大值,m */
49
49
  readonly maxOffsetM: number;
@@ -68,9 +68,10 @@ declare function cantShiftM(cantM: number, pantographHeightM?: number, gaugeM?:
68
68
  *
69
69
  * 风偏取风向垂直线路的最不利工况(sin²θ = 1)。
70
70
  *
71
- * ⚠️ 与站点源码一致:超高横移 δ 会计算并返回,但**不参与** e 的合成。
72
- * 站点 JSDoc 描述的公式为 `e = |ā ± c ∓ δ| + p_w`,与其实现不符;
73
- * 若站点后续修正,本库的 offsetPlusM / offsetMinusM 需同步调整。
71
+ * 2026-09-19 更正(修复批 D):超高横移 δ 纳入综合偏移合成——
72
+ * e₊ = |ā + c − δ| + p_w(矢度与拉出值同向、超高横移反向)
73
+ * e₋ = |ā − c + δ| + p_w
74
+ * 与站点 calc-core.js curveStaggerCheck 同批修正(旧注释「δ 不参与合成」已删除)。
74
75
  */
75
76
  declare function curveStaggerCheck(input: CurveStaggerInput): CurveStaggerResult;
76
77
 
@@ -41,9 +41,9 @@ interface CurveStaggerResult {
41
41
  readonly cantShiftM: number;
42
42
  /** 跨中风偏 p_w,m */
43
43
  readonly windOffsetM: number;
44
- /** 矢度与拉出值同向时的偏移,m */
44
+ /** 矢度与拉出值同向、超高横移反向的偏移 |ā + c − δ| + p_w,m */
45
45
  readonly offsetPlusM: number;
46
- /** 矢度与拉出值反向时的偏移,m */
46
+ /** 矢度与拉出值反向、超高横移同向的偏移 |ā − c + δ| + p_w,m */
47
47
  readonly offsetMinusM: number;
48
48
  /** 取两者较大值,m */
49
49
  readonly maxOffsetM: number;
@@ -68,9 +68,10 @@ declare function cantShiftM(cantM: number, pantographHeightM?: number, gaugeM?:
68
68
  *
69
69
  * 风偏取风向垂直线路的最不利工况(sin²θ = 1)。
70
70
  *
71
- * ⚠️ 与站点源码一致:超高横移 δ 会计算并返回,但**不参与** e 的合成。
72
- * 站点 JSDoc 描述的公式为 `e = |ā ± c ∓ δ| + p_w`,与其实现不符;
73
- * 若站点后续修正,本库的 offsetPlusM / offsetMinusM 需同步调整。
71
+ * 2026-09-19 更正(修复批 D):超高横移 δ 纳入综合偏移合成——
72
+ * e₊ = |ā + c − δ| + p_w(矢度与拉出值同向、超高横移反向)
73
+ * e₋ = |ā − c + δ| + p_w
74
+ * 与站点 calc-core.js curveStaggerCheck 同批修正(旧注释「δ 不参与合成」已删除)。
74
75
  */
75
76
  declare function curveStaggerCheck(input: CurveStaggerInput): CurveStaggerResult;
76
77
 
@@ -5,7 +5,7 @@ import {
5
5
  curveStaggerCheck,
6
6
  curveStaggerMeta,
7
7
  versineM
8
- } from "../chunk-IFVYGNT3.js";
8
+ } from "../chunk-XRSWKYS6.js";
9
9
  export {
10
10
  DEFAULT_PANTOGRAPH_HEIGHT_M,
11
11
  STANDARD_GAUGE_M,
@@ -4,12 +4,12 @@
4
4
 
5
5
 
6
6
 
7
- var _chunkJ2UXRMTUcjs = require('../chunk-J2UXRMTU.cjs');
7
+ var _chunkFHPRIOTMcjs = require('../chunk-FHPRIOTM.cjs');
8
8
 
9
9
 
10
10
 
11
11
 
12
12
 
13
13
 
14
- exports.dropperLengths = _chunkJ2UXRMTUcjs.dropperLengths; exports.dropperMeta = _chunkJ2UXRMTUcjs.dropperMeta; exports.dropperPositionsM = _chunkJ2UXRMTUcjs.dropperPositionsM; exports.maxParabolaSagM = _chunkJ2UXRMTUcjs.maxParabolaSagM; exports.parabolaSagM = _chunkJ2UXRMTUcjs.parabolaSagM;
14
+ exports.dropperLengths = _chunkFHPRIOTMcjs.dropperLengths; exports.dropperMeta = _chunkFHPRIOTMcjs.dropperMeta; exports.dropperPositionsM = _chunkFHPRIOTMcjs.dropperPositionsM; exports.maxParabolaSagM = _chunkFHPRIOTMcjs.maxParabolaSagM; exports.parabolaSagM = _chunkFHPRIOTMcjs.parabolaSagM;
15
15
  //# sourceMappingURL=index.cjs.map
@@ -5,11 +5,11 @@ declare const dropperMeta: CalculatorMeta;
5
5
  /** 悬挂类型 */
6
6
  type SuspensionType = 'simple' | 'elastic';
7
7
  interface DropperInput {
8
- /** 悬挂类型。弹性链形须同时提供 messenger 参数 */
8
+ /** 悬挂类型 */
9
9
  readonly suspension: SuspensionType;
10
10
  /** 跨距 L,m */
11
11
  readonly spanM: number;
12
- /** 接触线张力 T_c,kN */
12
+ /** 接触线张力 T_c,kN(弹性链形计算接触线弛度 f_c 用;简单链形不参与计算但保留正值校验) */
13
13
  readonly contactTensionKN: number;
14
14
  /** 结构高度 H,m */
15
15
  readonly structureHeightM: number;
@@ -18,15 +18,16 @@ interface DropperInput {
18
18
  /** 吊弦间距 d,m,须能整除跨距 */
19
19
  readonly dropperSpacingM: number;
20
20
  /**
21
- * 承力索参数。弹性链形悬挂('elastic')必填,
22
- * 简单链形悬挂传 null 或不传。
21
+ * 承力索参数,两种悬挂类型均必填(2026-09-19 口径更正):
22
+ * 承力索弛度按总单位荷载 w = q_c + q_m(含经吊弦传递的接触线荷载)
23
+ * 与承力索张力 T_m 计算,简单链形同样需要。
23
24
  */
24
- readonly messenger?: {
25
+ readonly messenger: {
25
26
  /** 承力索张力 T_m,kN */
26
27
  readonly tensionKN: number;
27
28
  /** 承力索单位荷载 q_m,kN/m */
28
29
  readonly loadKNPerM: number;
29
- } | null;
30
+ };
30
31
  }
31
32
  /** 单个吊弦点的计算结果 */
32
33
  interface DropperPoint {
@@ -34,16 +35,16 @@ interface DropperPoint {
34
35
  readonly index: number;
35
36
  /** 距起始端的距离 x,m */
36
37
  readonly positionM: number;
37
- /** 接触线弛度 f_c(x),m */
38
+ /** 接触线弛度 f_c(x),m(简单链形恒为 0;使吊弦变长) */
38
39
  readonly contactSagM: number;
39
- /** 承力索弛度 f_m(x),m(简单链形恒为 0) */
40
+ /** 承力索弛度 f_m(x),m(按总荷载 w = q_c + q_m 口径;使吊弦变短) */
40
41
  readonly messengerSagM: number;
41
42
  /** 吊弦长度 l,m */
42
43
  readonly dropperLengthM: number;
43
44
  }
44
45
  interface DropperResult {
45
46
  readonly points: readonly DropperPoint[];
46
- /** 跨中最大弛度 f_max,m */
47
+ /** 跨中最大有效弛度 f_m − f_c,m */
47
48
  readonly maxSagM: number;
48
49
  /** 最短吊弦长度,m(位于跨中) */
49
50
  readonly shortestDropperM: number;
@@ -51,7 +52,7 @@ interface DropperResult {
51
52
  readonly count: number;
52
53
  }
53
54
  /**
54
- * 抛物线弛度:f(x) = q·x·(L−x) / (2·T)
55
+ * 抛物线弛度:f(x) = q·x·(L−x) / (2·T) = 4·f_max·x·(L−x) / L²。
55
56
  *
56
57
  * 对接触线和承力索通用,区别只在传哪一组 q / T。
57
58
  *
@@ -74,10 +75,17 @@ declare function maxParabolaSagM(spanM: number, loadKNPerM: number, tensionKN: n
74
75
  */
75
76
  declare function dropperPositionsM(spanM: number, spacingM: number): number[];
76
77
  /**
77
- * 计算整跨各吊弦长度。
78
+ * 计算整跨各吊弦长度(2026-09-19 口径更正)。
78
79
  *
79
- * 简单链形:l_i = H − f_c(x_i)
80
- * 弹性链形:l_i = H − f_c(x_i) + f_m(x_i)
80
+ * 承力索下垂使吊弦变短、接触线(相对水平)下垂使吊弦变长:
81
+ *
82
+ * - 承力索弛度(总荷载口径):f_m(x) = 4·f_m_max·x(L−x)/L²,
83
+ * f_m_max = w·L²/(8·T_m),w = q_c + q_m(承力索承担的总单位荷载)
84
+ * - 接触线弛度(弹性链形):f_c(x) = 4·f_c_max·x(L−x)/L²,
85
+ * f_c_max = q_c·L²/(8·T_c)
86
+ *
87
+ * 简单链形:l_i = H − f_m(x_i)
88
+ * 弹性链形:l_i = H − f_m(x_i) + f_c(x_i)
81
89
  */
82
90
  declare function dropperLengths(input: DropperInput): DropperResult;
83
91
 
@@ -5,11 +5,11 @@ declare const dropperMeta: CalculatorMeta;
5
5
  /** 悬挂类型 */
6
6
  type SuspensionType = 'simple' | 'elastic';
7
7
  interface DropperInput {
8
- /** 悬挂类型。弹性链形须同时提供 messenger 参数 */
8
+ /** 悬挂类型 */
9
9
  readonly suspension: SuspensionType;
10
10
  /** 跨距 L,m */
11
11
  readonly spanM: number;
12
- /** 接触线张力 T_c,kN */
12
+ /** 接触线张力 T_c,kN(弹性链形计算接触线弛度 f_c 用;简单链形不参与计算但保留正值校验) */
13
13
  readonly contactTensionKN: number;
14
14
  /** 结构高度 H,m */
15
15
  readonly structureHeightM: number;
@@ -18,15 +18,16 @@ interface DropperInput {
18
18
  /** 吊弦间距 d,m,须能整除跨距 */
19
19
  readonly dropperSpacingM: number;
20
20
  /**
21
- * 承力索参数。弹性链形悬挂('elastic')必填,
22
- * 简单链形悬挂传 null 或不传。
21
+ * 承力索参数,两种悬挂类型均必填(2026-09-19 口径更正):
22
+ * 承力索弛度按总单位荷载 w = q_c + q_m(含经吊弦传递的接触线荷载)
23
+ * 与承力索张力 T_m 计算,简单链形同样需要。
23
24
  */
24
- readonly messenger?: {
25
+ readonly messenger: {
25
26
  /** 承力索张力 T_m,kN */
26
27
  readonly tensionKN: number;
27
28
  /** 承力索单位荷载 q_m,kN/m */
28
29
  readonly loadKNPerM: number;
29
- } | null;
30
+ };
30
31
  }
31
32
  /** 单个吊弦点的计算结果 */
32
33
  interface DropperPoint {
@@ -34,16 +35,16 @@ interface DropperPoint {
34
35
  readonly index: number;
35
36
  /** 距起始端的距离 x,m */
36
37
  readonly positionM: number;
37
- /** 接触线弛度 f_c(x),m */
38
+ /** 接触线弛度 f_c(x),m(简单链形恒为 0;使吊弦变长) */
38
39
  readonly contactSagM: number;
39
- /** 承力索弛度 f_m(x),m(简单链形恒为 0) */
40
+ /** 承力索弛度 f_m(x),m(按总荷载 w = q_c + q_m 口径;使吊弦变短) */
40
41
  readonly messengerSagM: number;
41
42
  /** 吊弦长度 l,m */
42
43
  readonly dropperLengthM: number;
43
44
  }
44
45
  interface DropperResult {
45
46
  readonly points: readonly DropperPoint[];
46
- /** 跨中最大弛度 f_max,m */
47
+ /** 跨中最大有效弛度 f_m − f_c,m */
47
48
  readonly maxSagM: number;
48
49
  /** 最短吊弦长度,m(位于跨中) */
49
50
  readonly shortestDropperM: number;
@@ -51,7 +52,7 @@ interface DropperResult {
51
52
  readonly count: number;
52
53
  }
53
54
  /**
54
- * 抛物线弛度:f(x) = q·x·(L−x) / (2·T)
55
+ * 抛物线弛度:f(x) = q·x·(L−x) / (2·T) = 4·f_max·x·(L−x) / L²。
55
56
  *
56
57
  * 对接触线和承力索通用,区别只在传哪一组 q / T。
57
58
  *
@@ -74,10 +75,17 @@ declare function maxParabolaSagM(spanM: number, loadKNPerM: number, tensionKN: n
74
75
  */
75
76
  declare function dropperPositionsM(spanM: number, spacingM: number): number[];
76
77
  /**
77
- * 计算整跨各吊弦长度。
78
+ * 计算整跨各吊弦长度(2026-09-19 口径更正)。
78
79
  *
79
- * 简单链形:l_i = H − f_c(x_i)
80
- * 弹性链形:l_i = H − f_c(x_i) + f_m(x_i)
80
+ * 承力索下垂使吊弦变短、接触线(相对水平)下垂使吊弦变长:
81
+ *
82
+ * - 承力索弛度(总荷载口径):f_m(x) = 4·f_m_max·x(L−x)/L²,
83
+ * f_m_max = w·L²/(8·T_m),w = q_c + q_m(承力索承担的总单位荷载)
84
+ * - 接触线弛度(弹性链形):f_c(x) = 4·f_c_max·x(L−x)/L²,
85
+ * f_c_max = q_c·L²/(8·T_c)
86
+ *
87
+ * 简单链形:l_i = H − f_m(x_i)
88
+ * 弹性链形:l_i = H − f_m(x_i) + f_c(x_i)
81
89
  */
82
90
  declare function dropperLengths(input: DropperInput): DropperResult;
83
91
 
@@ -4,7 +4,7 @@ import {
4
4
  dropperPositionsM,
5
5
  maxParabolaSagM,
6
6
  parabolaSagM
7
- } from "../chunk-UO2PHBC3.js";
7
+ } from "../chunk-XQBTMD7W.js";
8
8
  export {
9
9
  dropperLengths,
10
10
  dropperMeta,
package/dist/index.cjs CHANGED
@@ -11,7 +11,7 @@ var _chunk3ERFRRHZcjs = require('./chunk-3ERFRRHZ.cjs');
11
11
 
12
12
 
13
13
 
14
- var _chunkRVP3IU2Lcjs = require('./chunk-RVP3IU2L.cjs');
14
+ var _chunkNSVETJYAcjs = require('./chunk-NSVETJYA.cjs');
15
15
 
16
16
 
17
17
 
@@ -40,14 +40,14 @@ var _chunkFVESJBUDcjs = require('./chunk-FVESJBUD.cjs');
40
40
 
41
41
 
42
42
 
43
- var _chunk4UU7WA7Ncjs = require('./chunk-4UU7WA7N.cjs');
43
+ var _chunkVPW4T6YNcjs = require('./chunk-VPW4T6YN.cjs');
44
44
 
45
45
 
46
46
 
47
47
 
48
48
 
49
49
 
50
- var _chunkJ2UXRMTUcjs = require('./chunk-J2UXRMTU.cjs');
50
+ var _chunkFHPRIOTMcjs = require('./chunk-FHPRIOTM.cjs');
51
51
 
52
52
 
53
53
 
@@ -88,7 +88,7 @@ var _chunk57J7I6JAcjs = require('./chunk-57J7I6JA.cjs');
88
88
 
89
89
 
90
90
 
91
- var _chunk5Q6IASB2cjs = require('./chunk-5Q6IASB2.cjs');
91
+ var _chunkTXFBPGHRcjs = require('./chunk-TXFBPGHR.cjs');
92
92
 
93
93
 
94
94
 
@@ -105,7 +105,7 @@ var _chunkJJR7ROMGcjs = require('./chunk-JJR7ROMG.cjs');
105
105
 
106
106
 
107
107
 
108
- var _chunkHXALVJ4Gcjs = require('./chunk-HXALVJ4G.cjs');
108
+ var _chunkYGTESFOQcjs = require('./chunk-YGTESFOQ.cjs');
109
109
 
110
110
 
111
111
 
@@ -115,7 +115,7 @@ var _chunkWGTOBRYVcjs = require('./chunk-WGTOBRYV.cjs');
115
115
 
116
116
 
117
117
 
118
- var _chunkMTAYG3U2cjs = require('./chunk-MTAYG3U2.cjs');
118
+ var _chunkFRYBXJCMcjs = require('./chunk-FRYBXJCM.cjs');
119
119
 
120
120
 
121
121
 
@@ -131,7 +131,7 @@ var _chunkAVQ4F6DFcjs = require('./chunk-AVQ4F6DF.cjs');
131
131
 
132
132
 
133
133
 
134
- var _chunkX25CXRVEcjs = require('./chunk-X25CXRVE.cjs');
134
+ var _chunkDHJGNVCIcjs = require('./chunk-DHJGNVCI.cjs');
135
135
 
136
136
  // src/data/wire-specs.ts
137
137
  var REFERENCE_DENSITY_G_PER_CM3 = 8.94;
@@ -174,7 +174,9 @@ var WIRE_PRESETS = [
174
174
  nameEn: "CTAH-120 (CuAg 120 mm\xB2)",
175
175
  crossSectionMM2: 120,
176
176
  calculatedSectionMM2: 121,
177
- elasticModulusGPa: 120,
177
+ // 铜银合金 E=117 GPa,对齐站点 /calculator/tension/ 预设(2026-09-19 审计更正,
178
+ // 旧值 120 误沿用铜镁档)
179
+ elasticModulusGPa: 117,
178
180
  expansionPerDegC: COPPER_ALLOY_ALPHA_PER_DEG_C,
179
181
  linearMassKgPerM: unitWeightToKgPerM(STANDARD_UNIT_WEIGHT_KG_PER_KM.ctha120)
180
182
  }
@@ -333,5 +335,5 @@ function findAmpacityA(params) {
333
335
 
334
336
 
335
337
 
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;
338
+ exports.AIR_DENSITY_KG_PER_M3 = _chunkFVESJBUDcjs.AIR_DENSITY_KG_PER_M3; exports.ASSEMBLY_TOLERANCE_MM = _chunkWGTOBRYVcjs.ASSEMBLY_TOLERANCE_MM; exports.CONVENTIONAL_MARGIN_MM = _chunkTXFBPGHRcjs.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 = _chunkNSVETJYAcjs.DEFAULT_MIN_END_VOLTAGE_V; exports.DEFAULT_PANTOGRAPH_HEIGHT_M = _chunkVPW4T6YNcjs.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 = _chunkTXFBPGHRcjs.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 = _chunkVPW4T6YNcjs.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 = _chunkFRYBXJCMcjs.TB2809_WIRE_PARAMS; exports.TENSION_DIFF_RATIO = _chunkJJR7ROMGcjs.TENSION_DIFF_RATIO; exports.TEST_MOMENT_FACTOR = _chunkR4IVRYJAcjs.TEST_MOMENT_FACTOR; exports.TRANSMISSION_RATIOS = _chunkTXFBPGHRcjs.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 = _chunkYGTESFOQcjs.bValue; exports.bvalueMeta = _chunkYGTESFOQcjs.bvalueMeta; exports.cantShiftM = _chunkVPW4T6YNcjs.cantShiftM; exports.cantileverCut = _chunkWGTOBRYVcjs.cantileverCut; exports.cantileverMeta = _chunkWGTOBRYVcjs.cantileverMeta; exports.copperMeta = _chunkFRYBXJCMcjs.copperMeta; exports.creepageCheck = _chunkAVQ4F6DFcjs.creepageCheck; exports.creepageMeta = _chunkAVQ4F6DFcjs.creepageMeta; exports.crossSpanAnalyze = _chunkDHJGNVCIcjs.crossSpanAnalyze; exports.crossSpanMeta = _chunkDHJGNVCIcjs.crossSpanMeta; exports.curveStaggerCheck = _chunkVPW4T6YNcjs.curveStaggerCheck; exports.curveStaggerMeta = _chunkVPW4T6YNcjs.curveStaggerMeta; exports.deratedAmpacityA = _chunkNBFOB2PIcjs.deratedAmpacityA; exports.deriveLinearMassKgPerM = deriveLinearMassKgPerM; exports.dropperLengths = _chunkFHPRIOTMcjs.dropperLengths; exports.dropperMeta = _chunkFHPRIOTMcjs.dropperMeta; exports.dropperPositionsM = _chunkFHPRIOTMcjs.dropperPositionsM; exports.elongationMM = _chunkTXFBPGHRcjs.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 = _chunkFHPRIOTMcjs.maxParabolaSagM; exports.maxSpanFromSagM = _chunkCF663UNGcjs.maxSpanFromSagM; exports.naturalFrequencyHz = _chunkNBHEOJ5Acjs.naturalFrequencyHz; exports.parabolaSagM = _chunkFHPRIOTMcjs.parabolaSagM; exports.poleCapacityCheck = _chunkR4IVRYJAcjs.poleCapacityCheck; exports.poleCapacityMeta = _chunkR4IVRYJAcjs.poleCapacityMeta; exports.referenceTargetForceN = _chunkRPKDEFSJcjs.referenceTargetForceN; exports.requiredStrokeMM = _chunkTXFBPGHRcjs.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 = _chunkTXFBPGHRcjs.strokeCheck; exports.strokeMeta = _chunkTXFBPGHRcjs.strokeMeta; exports.tensionAt = _chunk3ERFRRHZcjs.tensionAt; exports.tensionCurve = _chunk3ERFRRHZcjs.tensionCurve; exports.tensionFromSagKN = _chunkCF663UNGcjs.tensionFromSagKN; exports.tensionMeta = _chunk3ERFRRHZcjs.tensionMeta; exports.unitWeightToKgPerM = unitWeightToKgPerM; exports.versineM = _chunkVPW4T6YNcjs.versineM; exports.voltageDropCheck = _chunkNSVETJYAcjs.voltageDropCheck; exports.voltageDropMeta = _chunkNSVETJYAcjs.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 = _chunkFRYBXJCMcjs.wireLookup;
337
339
  //# sourceMappingURL=index.cjs.map
@@ -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;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"]}
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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AC,IAAA,EAAM,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;AF+HA;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 // 铜银合金 E=117 GPa,对齐站点 /calculator/tension/ 预设(2026-09-19 审计更正,\n // 旧值 120 误沿用铜镁档)\n elasticModulusGPa: 117,\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 * ⚠️ 2017 版表5 历史参考(全 9 材质);2026 版现行口径见 TB2809_WIRE_PARAMS\n * 双字段(src/copper/index.ts:ampacityIndoor150A 主值 / ampacityIndoor150A2017 对照)。\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.d.cts CHANGED
@@ -144,6 +144,9 @@ declare function weightOfPresetNPerM(spec: WireSpec): number;
144
144
  /**
145
145
  * TB/T 2809-2017 表5 持续载流量参考值(A)。
146
146
  *
147
+ * ⚠️ 2017 版表5 历史参考(全 9 材质);2026 版现行口径见 TB2809_WIRE_PARAMS
148
+ * 双字段(src/copper/index.ts:ampacityIndoor150A 主值 / ampacityIndoor150A2017 对照)。
149
+ *
147
150
  * 来源:itswe.com 标准规范库,据 TB/T 2809-2017 无水印全文扫描件逐格复核。
148
151
  *
149
152
  * 查表语义:
package/dist/index.d.ts CHANGED
@@ -144,6 +144,9 @@ declare function weightOfPresetNPerM(spec: WireSpec): number;
144
144
  /**
145
145
  * TB/T 2809-2017 表5 持续载流量参考值(A)。
146
146
  *
147
+ * ⚠️ 2017 版表5 历史参考(全 9 材质);2026 版现行口径见 TB2809_WIRE_PARAMS
148
+ * 双字段(src/copper/index.ts:ampacityIndoor150A 主值 / ampacityIndoor150A2017 对照)。
149
+ *
147
150
  * 来源:itswe.com 标准规范库,据 TB/T 2809-2017 无水印全文扫描件逐格复核。
148
151
  *
149
152
  * 查表语义:
package/dist/index.js CHANGED
@@ -11,7 +11,7 @@ import {
11
11
  DEFAULT_MIN_END_VOLTAGE_V,
12
12
  voltageDropCheck,
13
13
  voltageDropMeta
14
- } from "./chunk-IUENDAAJ.js";
14
+ } from "./chunk-53ONNIVL.js";
15
15
  import {
16
16
  DEFAULT_WARN_THRESHOLD,
17
17
  kmHToMPerS,
@@ -40,14 +40,14 @@ import {
40
40
  curveStaggerCheck,
41
41
  curveStaggerMeta,
42
42
  versineM
43
- } from "./chunk-IFVYGNT3.js";
43
+ } from "./chunk-XRSWKYS6.js";
44
44
  import {
45
45
  dropperLengths,
46
46
  dropperMeta,
47
47
  dropperPositionsM,
48
48
  maxParabolaSagM,
49
49
  parabolaSagM
50
- } from "./chunk-UO2PHBC3.js";
50
+ } from "./chunk-XQBTMD7W.js";
51
51
  import {
52
52
  REF_TARGET_COEFF,
53
53
  REF_TARGET_OFFSET_N,
@@ -88,7 +88,7 @@ import {
88
88
  requiredStrokeMM,
89
89
  strokeCheck,
90
90
  strokeMeta
91
- } from "./chunk-KOSC6EA3.js";
91
+ } from "./chunk-G5ZI24PW.js";
92
92
  import {
93
93
  DEFAULT_BASE_AMBIENT_TEMP_DEG_C,
94
94
  ampacityDeratingFactor,
@@ -105,7 +105,7 @@ import {
105
105
  import {
106
106
  bValue,
107
107
  bvalueMeta
108
- } from "./chunk-3GREMF76.js";
108
+ } from "./chunk-DN6BVPCQ.js";
109
109
  import {
110
110
  ASSEMBLY_TOLERANCE_MM,
111
111
  cantileverCut,
@@ -115,7 +115,7 @@ import {
115
115
  TB2809_WIRE_PARAMS,
116
116
  copperMeta,
117
117
  wireLookup
118
- } from "./chunk-IQR3SRCD.js";
118
+ } from "./chunk-ES3AQ52A.js";
119
119
  import {
120
120
  COPPER_ALPHA_PER_DEG_C,
121
121
  IACS_RESISTIVITY_OHM_MM2_PER_M,
@@ -131,7 +131,7 @@ import {
131
131
  import {
132
132
  crossSpanAnalyze,
133
133
  crossSpanMeta
134
- } from "./chunk-D5F5ES2R.js";
134
+ } from "./chunk-2HYOBL6M.js";
135
135
 
136
136
  // src/data/wire-specs.ts
137
137
  var REFERENCE_DENSITY_G_PER_CM3 = 8.94;
@@ -174,7 +174,9 @@ var WIRE_PRESETS = [
174
174
  nameEn: "CTAH-120 (CuAg 120 mm\xB2)",
175
175
  crossSectionMM2: 120,
176
176
  calculatedSectionMM2: 121,
177
- elasticModulusGPa: 120,
177
+ // 铜银合金 E=117 GPa,对齐站点 /calculator/tension/ 预设(2026-09-19 审计更正,
178
+ // 旧值 120 误沿用铜镁档)
179
+ elasticModulusGPa: 117,
178
180
  expansionPerDegC: COPPER_ALLOY_ALPHA_PER_DEG_C,
179
181
  linearMassKgPerM: unitWeightToKgPerM(STANDARD_UNIT_WEIGHT_KG_PER_KM.ctha120)
180
182
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/data/wire-specs.ts","../src/data/tb2809-ampacity.ts"],"sourcesContent":["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"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/data/wire-specs.ts","../src/data/tb2809-ampacity.ts"],"sourcesContent":["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 // 铜银合金 E=117 GPa,对齐站点 /calculator/tension/ 预设(2026-09-19 审计更正,\n // 旧值 120 误沿用铜镁档)\n elasticModulusGPa: 117,\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 * ⚠️ 2017 版表5 历史参考(全 9 材质);2026 版现行口径见 TB2809_WIRE_PARAMS\n * 双字段(src/copper/index.ts:ampacityIndoor150A 主值 / ampacityIndoor150A2017 对照)。\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"],"mappings":"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","names":[]}
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- var _chunk5Q6IASB2cjs = require('../chunk-5Q6IASB2.cjs');
9
+ var _chunkTXFBPGHRcjs = require('../chunk-TXFBPGHR.cjs');
10
10
 
11
11
 
12
12
 
@@ -15,5 +15,5 @@ var _chunk5Q6IASB2cjs = require('../chunk-5Q6IASB2.cjs');
15
15
 
16
16
 
17
17
 
18
- exports.CONVENTIONAL_MARGIN_MM = _chunk5Q6IASB2cjs.CONVENTIONAL_MARGIN_MM; exports.MIN_MARGIN_MM = _chunk5Q6IASB2cjs.MIN_MARGIN_MM; exports.TRANSMISSION_RATIOS = _chunk5Q6IASB2cjs.TRANSMISSION_RATIOS; exports.elongationMM = _chunk5Q6IASB2cjs.elongationMM; exports.requiredStrokeMM = _chunk5Q6IASB2cjs.requiredStrokeMM; exports.strokeCheck = _chunk5Q6IASB2cjs.strokeCheck; exports.strokeMeta = _chunk5Q6IASB2cjs.strokeMeta;
18
+ exports.CONVENTIONAL_MARGIN_MM = _chunkTXFBPGHRcjs.CONVENTIONAL_MARGIN_MM; exports.MIN_MARGIN_MM = _chunkTXFBPGHRcjs.MIN_MARGIN_MM; exports.TRANSMISSION_RATIOS = _chunkTXFBPGHRcjs.TRANSMISSION_RATIOS; exports.elongationMM = _chunkTXFBPGHRcjs.elongationMM; exports.requiredStrokeMM = _chunkTXFBPGHRcjs.requiredStrokeMM; exports.strokeCheck = _chunkTXFBPGHRcjs.strokeCheck; exports.strokeMeta = _chunkTXFBPGHRcjs.strokeMeta;
19
19
  //# sourceMappingURL=index.cjs.map
@@ -6,7 +6,7 @@ import {
6
6
  requiredStrokeMM,
7
7
  strokeCheck,
8
8
  strokeMeta
9
- } from "../chunk-KOSC6EA3.js";
9
+ } from "../chunk-G5ZI24PW.js";
10
10
  export {
11
11
  CONVENTIONAL_MARGIN_MM,
12
12
  MIN_MARGIN_MM,
@@ -2,11 +2,11 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkRVP3IU2Lcjs = require('../chunk-RVP3IU2L.cjs');
5
+ var _chunkNSVETJYAcjs = require('../chunk-NSVETJYA.cjs');
6
6
  require('../chunk-DGO2DCO5.cjs');
7
7
 
8
8
 
9
9
 
10
10
 
11
- exports.DEFAULT_MIN_END_VOLTAGE_V = _chunkRVP3IU2Lcjs.DEFAULT_MIN_END_VOLTAGE_V; exports.voltageDropCheck = _chunkRVP3IU2Lcjs.voltageDropCheck; exports.voltageDropMeta = _chunkRVP3IU2Lcjs.voltageDropMeta;
11
+ exports.DEFAULT_MIN_END_VOLTAGE_V = _chunkNSVETJYAcjs.DEFAULT_MIN_END_VOLTAGE_V; exports.voltageDropCheck = _chunkNSVETJYAcjs.voltageDropCheck; exports.voltageDropMeta = _chunkNSVETJYAcjs.voltageDropMeta;
12
12
  //# sourceMappingURL=index.cjs.map