ocs-calculators 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +3 -3
- package/README_EN.md +1 -1
- package/dist/anchor-length/index.cjs +11 -0
- package/dist/anchor-length/index.cjs.map +1 -0
- package/dist/anchor-length/index.d.cts +45 -0
- package/dist/anchor-length/index.d.ts +45 -0
- package/dist/anchor-length/index.js +11 -0
- package/dist/anchor-length/index.js.map +1 -0
- package/dist/bvalue/index.cjs +9 -0
- package/dist/bvalue/index.cjs.map +1 -0
- package/dist/bvalue/index.d.cts +35 -0
- package/dist/bvalue/index.d.ts +35 -0
- package/dist/bvalue/index.js +9 -0
- package/dist/bvalue/index.js.map +1 -0
- package/dist/cantilever/index.cjs +11 -0
- package/dist/cantilever/index.cjs.map +1 -0
- package/dist/cantilever/index.d.cts +31 -0
- package/dist/cantilever/index.d.ts +31 -0
- package/dist/cantilever/index.js +11 -0
- package/dist/cantilever/index.js.map +1 -0
- package/dist/chunk-3GREMF76.js +44 -0
- package/dist/chunk-3GREMF76.js.map +1 -0
- package/dist/chunk-4344WWAF.cjs +58 -0
- package/dist/chunk-4344WWAF.cjs.map +1 -0
- package/dist/chunk-57J7I6JA.cjs +116 -0
- package/dist/chunk-57J7I6JA.cjs.map +1 -0
- package/dist/chunk-75EGROQB.js +53 -0
- package/dist/chunk-75EGROQB.js.map +1 -0
- package/dist/chunk-C2XU3XKP.js +46 -0
- package/dist/chunk-C2XU3XKP.js.map +1 -0
- package/dist/chunk-CLVLOLUJ.js +45 -0
- package/dist/chunk-CLVLOLUJ.js.map +1 -0
- package/dist/chunk-CSLI5HEJ.cjs +53 -0
- package/dist/chunk-CSLI5HEJ.cjs.map +1 -0
- package/dist/chunk-D5F5ES2R.js +163 -0
- package/dist/chunk-D5F5ES2R.js.map +1 -0
- package/dist/chunk-HXALVJ4G.cjs +44 -0
- package/dist/chunk-HXALVJ4G.cjs.map +1 -0
- package/dist/chunk-HZWNKKIB.js +42 -0
- package/dist/chunk-HZWNKKIB.js.map +1 -0
- package/dist/{chunk-CVA4EH2K.js → chunk-IQR3SRCD.js} +9 -9
- package/dist/chunk-IQR3SRCD.js.map +1 -0
- package/dist/chunk-LBGUOTCJ.cjs +45 -0
- package/dist/chunk-LBGUOTCJ.cjs.map +1 -0
- package/dist/{chunk-MZBQ4546.cjs → chunk-MTAYG3U2.cjs} +9 -9
- package/dist/chunk-MTAYG3U2.cjs.map +1 -0
- package/dist/chunk-PYNVEHGR.cjs +46 -0
- package/dist/chunk-PYNVEHGR.cjs.map +1 -0
- package/dist/chunk-TO46PTS3.js +116 -0
- package/dist/chunk-TO46PTS3.js.map +1 -0
- package/dist/chunk-VXVTT6WS.js +58 -0
- package/dist/chunk-VXVTT6WS.js.map +1 -0
- package/dist/chunk-WGTOBRYV.cjs +42 -0
- package/dist/chunk-WGTOBRYV.cjs.map +1 -0
- package/dist/chunk-X25CXRVE.cjs +163 -0
- package/dist/chunk-X25CXRVE.cjs.map +1 -0
- package/dist/copper/index.cjs +2 -2
- package/dist/copper/index.d.cts +2 -2
- package/dist/copper/index.d.ts +2 -2
- package/dist/copper/index.js +1 -1
- package/dist/creepage/index.cjs +15 -0
- package/dist/creepage/index.cjs.map +1 -0
- package/dist/creepage/index.d.cts +40 -0
- package/dist/creepage/index.d.ts +40 -0
- package/dist/creepage/index.js +15 -0
- package/dist/creepage/index.js.map +1 -0
- package/dist/cross-span/index.cjs +9 -0
- package/dist/cross-span/index.cjs.map +1 -0
- package/dist/cross-span/index.d.cts +68 -0
- package/dist/cross-span/index.d.ts +68 -0
- package/dist/cross-span/index.js +9 -0
- package/dist/cross-span/index.js.map +1 -0
- package/dist/index.cjs +83 -15
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -2
- package/dist/index.d.ts +10 -2
- package/dist/index.js +92 -24
- package/dist/index.js.map +1 -1
- package/dist/pole-capacity/index.cjs +13 -0
- package/dist/pole-capacity/index.cjs.map +1 -0
- package/dist/pole-capacity/index.d.cts +47 -0
- package/dist/pole-capacity/index.d.ts +47 -0
- package/dist/pole-capacity/index.js +13 -0
- package/dist/pole-capacity/index.js.map +1 -0
- package/dist/sag/index.cjs +13 -0
- package/dist/sag/index.cjs.map +1 -0
- package/dist/sag/index.d.cts +21 -0
- package/dist/sag/index.d.ts +21 -0
- package/dist/sag/index.js +13 -0
- package/dist/sag/index.js.map +1 -0
- package/dist/steady-arm/index.cjs +11 -0
- package/dist/steady-arm/index.cjs.map +1 -0
- package/dist/steady-arm/index.d.cts +66 -0
- package/dist/steady-arm/index.d.ts +66 -0
- package/dist/steady-arm/index.js +11 -0
- package/dist/steady-arm/index.js.map +1 -0
- package/package.json +43 -3
- package/dist/chunk-CVA4EH2K.js.map +0 -1
- package/dist/chunk-MZBQ4546.cjs.map +0 -1
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/cross-span/meta.ts
|
|
2
|
+
var crossSpanMeta = {
|
|
3
|
+
name: "\u8F6F\u6A2A\u8DE8\u8D1F\u8F7D\u8BA1\u7B97",
|
|
4
|
+
nameEn: "Soft Cross-Span Load Calculation",
|
|
5
|
+
summary: "\u6309\u8D1F\u8F7D\u8BA1\u7B97\u6CD5\uFF08\u6559\u6750\u53E3\u5F84\uFF09\u8BA1\u7B97\u8F6F\u6A2A\u8DE8\u5404\u8282\u70B9\u5782\u76F4\u8D1F\u8F7D\u3001\u629B\u7269\u7EBF\u8282\u70B9\u5F1B\u5EA6\u3001\u6C34\u5E73\u5F20\u529B\u4E0E\u603B\u7D22\u957F\uFF0C\u7528\u4E8E\u63A5\u89E6\u7F51\u8F6F\u6A2A\u8DE8\u8BBE\u8BA1\u6821\u6838\u3002",
|
|
6
|
+
formula: [
|
|
7
|
+
"\u8282\u70B9\u5782\u76F4\u8D1F\u8F7D\uFF08\u5747\u5300\u95F4\u8DDD\u7B80\u5316\uFF09\uFF1AQ_i = J + n\xB7q\u2080\xB7a + P + g_c\xB7a",
|
|
8
|
+
"\u8282\u70B9\u5F1B\u5EA6\uFF08\u629B\u7269\u7EBF\u5206\u5E03\uFF0C\u6700\u4F4E\u70B9\u5728 l\u2081\uFF09\uFF1Af_i = f_max\xB7(1 \u2212 ((x_i\u2212l\u2081)/c_i)\xB2)\uFF0Cc_i = l\u2081\uFF08x_i\u2264l\u2081\uFF09\u6216 L\u2212l\u2081\uFF08x_i>l\u2081\uFF09",
|
|
9
|
+
"\u6C34\u5E73\u5F20\u529B\uFF08\u7CBE\u786E\u5F0F\uFF09\uFF1AH = M(l\u2081)/f_max\uFF0CM(l\u2081) \u4E3A\u60AC\u6302\u8D1F\u8F7D\u5BF9\u6700\u4F4E\u70B9\u622A\u9762\uFF08\u7B80\u652F\u6881\uFF09\u5F2F\u77E9",
|
|
10
|
+
"\u6C34\u5E73\u5F20\u529B\uFF08\u7B80\u5316\u5F0F\u5BF9\u7167\uFF09\uFF1AH\u2032 = \u03A3Q_i\xB7l\u2081/(2\xB7f_max)",
|
|
11
|
+
"\u5206\u6BB5\u7D22\u957F\uFF1Ab_i \u2248 a + (f_{i+1}\u2212f_i)\xB2/(2a)",
|
|
12
|
+
"\u652F\u67F1\u951A\u56FA\u6BB5\uFF1Ab_end = x\u2081 + f\u2081\xB2/(2\xB7x\u2081)\uFF0C\u652F\u67F1\u7AEF\u5F1B\u5EA6\u4E3A 0",
|
|
13
|
+
"\u603B\u7D22\u957F\uFF1A\u03A3b = b_endL + \u03A3b_i + b_endR"
|
|
14
|
+
],
|
|
15
|
+
references: [
|
|
16
|
+
"\u6559\u6750\u8D1F\u8F7D\u8BA1\u7B97\u6CD5\uFF08\u8F6F\u6A2A\u8DE8\uFF09\uFF0C\u8282\u70B9\u8D1F\u8F7D\u6309\u5927\u7AD9 65 kg / \u5C0F\u7AD9 45 kg \u53D6\u503C",
|
|
17
|
+
"\u629B\u7269\u7EBF\u8FD1\u4F3C\uFF0C\u9002\u7528\u4E8E\u5F1B\u8DE8\u6BD4 f/L \u2264 1/10 \u5DE5\u51B5",
|
|
18
|
+
"2026-09-14 \u7AD9\u957F\u63D0\u4F9B\u6587\u672C\u6838\u5BF9\uFF08\u8D1F\u8F7D\u8BA1\u7B97\u6CD5\uFF09"
|
|
19
|
+
],
|
|
20
|
+
scope: [
|
|
21
|
+
"\u8282\u70B9\u6570 N\uFF1A2 ~ 20",
|
|
22
|
+
"\u80A1\u9053\u95F4\u8DDD a\uFF1A4 ~ 8 m",
|
|
23
|
+
"\u8DE8\u8DDD L\uFF1A15 ~ 80 m",
|
|
24
|
+
"\u8282\u70B9\u8D1F\u8F7D J\uFF1A45 / 65 kg",
|
|
25
|
+
"\u63A5\u89E6\u60AC\u6302\u5355\u4F4D\u91CD q\u2080\uFF1A1.0 ~ 3.0 kg/m",
|
|
26
|
+
"\u60AC\u6302\u7EC4\u6570 n\uFF1A1 ~ 3",
|
|
27
|
+
"\u6A2A\u627F\u7D22 + \u5B9A\u4F4D\u7D22\u5355\u4F4D\u91CD g_c\uFF1A0.2 ~ 1.5 kg/m",
|
|
28
|
+
"\u6700\u5927\u5F1B\u5EA6 f_max\uFF1A1 ~ 6 m\uFF0C\u987B\u5C0F\u4E8E\u6700\u4F4E\u70B9\u4E24\u4FA7\u60AC\u6302\u9AD8\u5EA6",
|
|
29
|
+
"\u672A\u8BA1\u5165\u6E29\u5EA6\u5BF9\u7D22\u957F\u4E0E\u5F20\u529B\u7684\u5F71\u54CD\u3001\u6A2A\u627F\u7D22\u5F27\u5782\u975E\u7EBF\u6027\u4FEE\u6B63"
|
|
30
|
+
],
|
|
31
|
+
disclaimer: "\u672C\u5DE5\u5177\u7ED3\u679C\u4EC5\u4F9B\u53C2\u8003\uFF0C\u5DE5\u7A0B\u5E94\u7528\u4EE5\u8BBE\u8BA1\u6587\u4EF6\u4E3A\u51C6\u3002\u8BE6\u89C1 DISCLAIMER.md\u3002",
|
|
32
|
+
online: "https://www.itswe.com/calculator/cross-span/"
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
// src/cross-span/index.ts
|
|
36
|
+
function crossSpanAnalyze(input) {
|
|
37
|
+
const {
|
|
38
|
+
nodeCount,
|
|
39
|
+
spacingM: a,
|
|
40
|
+
spanTotalM: L,
|
|
41
|
+
lowPointFromLeftM: l1,
|
|
42
|
+
maxSagM: fMax,
|
|
43
|
+
nodeLoadKg: J,
|
|
44
|
+
suspensionWeightKgPerM: q0,
|
|
45
|
+
suspensionGroups: n,
|
|
46
|
+
cableWeightKgPerM: gc,
|
|
47
|
+
insulatorDistributedKg: P
|
|
48
|
+
} = input;
|
|
49
|
+
if (!Number.isInteger(nodeCount) || !(nodeCount >= 2)) {
|
|
50
|
+
throw new RangeError(`\u8282\u70B9\u6570\u987B\u4E3A\u4E0D\u5C0F\u4E8E 2 \u7684\u6574\u6570\uFF0C\u6536\u5230 ${nodeCount}`);
|
|
51
|
+
}
|
|
52
|
+
if (!(a > 0)) {
|
|
53
|
+
throw new RangeError(`\u80A1\u9053\u95F4\u8DDD\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${a} m`);
|
|
54
|
+
}
|
|
55
|
+
if (!(L > 0)) {
|
|
56
|
+
throw new RangeError(`\u8DE8\u8DDD\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${L} m`);
|
|
57
|
+
}
|
|
58
|
+
if (!(l1 > 0 && l1 < L)) {
|
|
59
|
+
throw new RangeError(`\u6700\u4F4E\u70B9\u8DDD\u5DE6\u652F\u67F1\u8DDD\u79BB\u987B\u5728 (0, L) \u5185\uFF0C\u6536\u5230 ${l1} m`);
|
|
60
|
+
}
|
|
61
|
+
if (!(fMax > 0)) {
|
|
62
|
+
throw new RangeError(`\u6700\u5927\u5F1B\u5EA6\u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${fMax} m`);
|
|
63
|
+
}
|
|
64
|
+
if (!(J >= 0)) {
|
|
65
|
+
throw new RangeError(`\u8282\u70B9\u8D1F\u8F7D\u4E0D\u80FD\u4E3A\u8D1F\uFF0C\u6536\u5230 ${J} kg`);
|
|
66
|
+
}
|
|
67
|
+
if (!(q0 >= 0)) {
|
|
68
|
+
throw new RangeError(`\u63A5\u89E6\u60AC\u6302\u5355\u4F4D\u91CD\u4E0D\u80FD\u4E3A\u8D1F\uFF0C\u6536\u5230 ${q0} kg/m`);
|
|
69
|
+
}
|
|
70
|
+
if (!(n > 0)) {
|
|
71
|
+
throw new RangeError(`\u6BCF\u8282\u70B9\u60AC\u6302\u7EC4\u6570\u987B\u4E3A\u6B63\u6570\uFF0C\u6536\u5230 ${n}`);
|
|
72
|
+
}
|
|
73
|
+
if (!(gc >= 0)) {
|
|
74
|
+
throw new RangeError(`\u6A2A\u627F\u7D22\u5355\u4F4D\u91CD\u4E0D\u80FD\u4E3A\u8D1F\uFF0C\u6536\u5230 ${gc} kg/m`);
|
|
75
|
+
}
|
|
76
|
+
if (!(P >= 0)) {
|
|
77
|
+
throw new RangeError(`\u7EDD\u7F18\u5B50\u4E32\u5206\u644A\u8D1F\u8F7D\u4E0D\u80FD\u4E3A\u8D1F\uFF0C\u6536\u5230 ${P} kg`);
|
|
78
|
+
}
|
|
79
|
+
const lastX = a * nodeCount;
|
|
80
|
+
if (!(lastX < L)) {
|
|
81
|
+
throw new RangeError(
|
|
82
|
+
`\u672B\u8282\u70B9\u4F4D\u7F6E ${lastX} m \u8D85\u51FA\u8DE8\u8DDD ${L} m\uFF0C\u8BF7\u51CF\u5C0F\u8282\u70B9\u6570\u6216\u80A1\u9053\u95F4\u8DDD`
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
const Q = J + n * q0 * a + P + gc * a;
|
|
86
|
+
const nodeX = [];
|
|
87
|
+
for (let i = 0; i < nodeCount; i++) {
|
|
88
|
+
nodeX.push(a * (i + 1));
|
|
89
|
+
}
|
|
90
|
+
const nodeQ = nodeX.map(() => Q);
|
|
91
|
+
const nodeSag = nodeX.map((x) => {
|
|
92
|
+
const c = x <= l1 ? l1 : L - l1;
|
|
93
|
+
return fMax * (1 - (x - l1) / c * ((x - l1) / c));
|
|
94
|
+
});
|
|
95
|
+
const segmentLength = [];
|
|
96
|
+
for (let i = 0; i < nodeCount - 1; i++) {
|
|
97
|
+
const fi = nodeSag[i];
|
|
98
|
+
const fj = nodeSag[i + 1];
|
|
99
|
+
if (fi === void 0 || fj === void 0) {
|
|
100
|
+
throw new Error(`\u7F3A\u5C11\u8282\u70B9 ${i} \u6216 ${i + 1} \u7684\u5F1B\u5EA6`);
|
|
101
|
+
}
|
|
102
|
+
const d = fj - fi;
|
|
103
|
+
segmentLength.push(a + d * d / (2 * a));
|
|
104
|
+
}
|
|
105
|
+
const x0 = nodeX[0];
|
|
106
|
+
const f0 = nodeSag[0];
|
|
107
|
+
if (x0 === void 0 || f0 === void 0) {
|
|
108
|
+
throw new Error("\u7F3A\u5C11\u9996\u8282\u70B9\u4F4D\u7F6E\u6216\u5F1B\u5EA6");
|
|
109
|
+
}
|
|
110
|
+
const endLeftM = x0 + f0 * f0 / (2 * x0);
|
|
111
|
+
const xLast = nodeX[nodeX.length - 1];
|
|
112
|
+
const fLast = nodeSag[nodeSag.length - 1];
|
|
113
|
+
if (xLast === void 0 || fLast === void 0) {
|
|
114
|
+
throw new Error("\u7F3A\u5C11\u672B\u8282\u70B9\u4F4D\u7F6E\u6216\u5F1B\u5EA6");
|
|
115
|
+
}
|
|
116
|
+
const gapRight = L - xLast;
|
|
117
|
+
const endRightM = gapRight + fLast * fLast / (2 * gapRight);
|
|
118
|
+
let segmentSum = 0;
|
|
119
|
+
for (const b of segmentLength) segmentSum += b;
|
|
120
|
+
const totalLengthM = endLeftM + segmentSum + endRightM;
|
|
121
|
+
let rLeft = 0;
|
|
122
|
+
for (let i = 0; i < nodeCount; i++) {
|
|
123
|
+
const x = nodeX[i];
|
|
124
|
+
const q = nodeQ[i];
|
|
125
|
+
if (x === void 0 || q === void 0) {
|
|
126
|
+
throw new Error(`\u7F3A\u5C11\u8282\u70B9 ${i} \u7684\u4F4D\u7F6E\u6216\u8D1F\u8F7D`);
|
|
127
|
+
}
|
|
128
|
+
rLeft += q * (L - x) / L;
|
|
129
|
+
}
|
|
130
|
+
let moment = rLeft * l1;
|
|
131
|
+
for (let i = 0; i < nodeCount; i++) {
|
|
132
|
+
const x = nodeX[i];
|
|
133
|
+
const q = nodeQ[i];
|
|
134
|
+
if (x === void 0 || q === void 0) {
|
|
135
|
+
throw new Error(`\u7F3A\u5C11\u8282\u70B9 ${i} \u7684\u4F4D\u7F6E\u6216\u8D1F\u8F7D`);
|
|
136
|
+
}
|
|
137
|
+
if (x < l1) {
|
|
138
|
+
moment -= q * (l1 - x);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
const horizontalForceKg = moment / fMax;
|
|
142
|
+
let totalLoadKg = 0;
|
|
143
|
+
for (const q of nodeQ) totalLoadKg += q;
|
|
144
|
+
const horizontalForceSimpleKg = totalLoadKg * l1 / (2 * fMax);
|
|
145
|
+
return {
|
|
146
|
+
nodeX,
|
|
147
|
+
nodeQ,
|
|
148
|
+
nodeSag,
|
|
149
|
+
segmentLength,
|
|
150
|
+
endLeftM,
|
|
151
|
+
endRightM,
|
|
152
|
+
totalLengthM,
|
|
153
|
+
horizontalForceKg,
|
|
154
|
+
horizontalForceSimpleKg,
|
|
155
|
+
totalLoadKg
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
exports.crossSpanMeta = crossSpanMeta; exports.crossSpanAnalyze = crossSpanAnalyze;
|
|
163
|
+
//# sourceMappingURL=chunk-X25CXRVE.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/ocs-calculators/ocs-calculators/dist/chunk-X25CXRVE.cjs","../src/cross-span/meta.ts","../src/cross-span/index.ts"],"names":[],"mappings":"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","file":"/home/runner/work/ocs-calculators/ocs-calculators/dist/chunk-X25CXRVE.cjs","sourcesContent":[null,"import type { CalculatorMeta } from '../types';\n\nexport const crossSpanMeta: CalculatorMeta = {\n name: '软横跨负载计算',\n nameEn: 'Soft Cross-Span Load Calculation',\n summary:\n '按负载计算法(教材口径)计算软横跨各节点垂直负载、抛物线节点弛度、水平张力与总索长,用于接触网软横跨设计校核。',\n formula: [\n '节点垂直负载(均匀间距简化):Q_i = J + n·q₀·a + P + g_c·a',\n '节点弛度(抛物线分布,最低点在 l₁):f_i = f_max·(1 − ((x_i−l₁)/c_i)²),c_i = l₁(x_i≤l₁)或 L−l₁(x_i>l₁)',\n '水平张力(精确式):H = M(l₁)/f_max,M(l₁) 为悬挂负载对最低点截面(简支梁)弯矩',\n '水平张力(简化式对照):H′ = ΣQ_i·l₁/(2·f_max)',\n '分段索长:b_i ≈ a + (f_{i+1}−f_i)²/(2a)',\n '支柱锚固段:b_end = x₁ + f₁²/(2·x₁),支柱端弛度为 0',\n '总索长:Σb = b_endL + Σb_i + b_endR',\n ],\n references: [\n '教材负载计算法(软横跨),节点负载按大站 65 kg / 小站 45 kg 取值',\n '抛物线近似,适用于弛跨比 f/L ≤ 1/10 工况',\n '2026-09-14 站长提供文本核对(负载计算法)',\n ],\n scope: [\n '节点数 N:2 ~ 20',\n '股道间距 a:4 ~ 8 m',\n '跨距 L:15 ~ 80 m',\n '节点负载 J:45 / 65 kg',\n '接触悬挂单位重 q₀:1.0 ~ 3.0 kg/m',\n '悬挂组数 n:1 ~ 3',\n '横承索 + 定位索单位重 g_c:0.2 ~ 1.5 kg/m',\n '最大弛度 f_max:1 ~ 6 m,须小于最低点两侧悬挂高度',\n '未计入温度对索长与张力的影响、横承索弧垂非线性修正',\n ],\n disclaimer: '本工具结果仅供参考,工程应用以设计文件为准。详见 DISCLAIMER.md。',\n online: 'https://www.itswe.com/calculator/cross-span/',\n};\n","export { crossSpanMeta } from './meta';\n\n/** 软横跨负载计算(负载计算法)的输入参数 */\nexport interface CrossSpanNodeInput {\n /** 股道悬挂节点数 N */\n readonly nodeCount: number;\n /** 股道间距 a,m(节点近似均匀分布,起点距支柱 a) */\n readonly spacingM: number;\n /** 横承索跨距 L,m */\n readonly spanTotalM: number;\n /** 最低点距左支柱距离 l₁,m */\n readonly lowPointFromLeftM: number;\n /** 最大弛度 f_max,m(最低点弛度) */\n readonly maxSagM: number;\n /** 节点负载 J,kg(大站 65 / 小站 45) */\n readonly nodeLoadKg: number;\n /** 接触悬挂单位重 q₀,kg/m */\n readonly suspensionWeightKgPerM: number;\n /** 每节点悬挂组数 n */\n readonly suspensionGroups: number;\n /** 横承索 + 定位索单位重 g_c,kg/m */\n readonly cableWeightKgPerM: number;\n /** 绝缘子串分摊负载 P,kg */\n readonly insulatorDistributedKg: number;\n}\n\n/** 软横跨负载计算结果 */\nexport interface CrossSpanResult {\n /** 各节点距左支柱距离 x_i,m */\n readonly nodeX: readonly number[];\n /** 各节点垂直负载 Q_i,kg */\n readonly nodeQ: readonly number[];\n /** 各节点弛度 f_i,m */\n readonly nodeSag: readonly number[];\n /** 相邻节点间分段索长 b_i,m(共 N−1 段) */\n readonly segmentLength: readonly number[];\n /** 左端支柱锚固段索长,m */\n readonly endLeftM: number;\n /** 右端支柱锚固段索长,m */\n readonly endRightM: number;\n /** 总索长 Σb,m */\n readonly totalLengthM: number;\n /** 水平张力(力矩平衡精确式)H = M(l₁)/f_max,kg */\n readonly horizontalForceKg: number;\n /** 水平张力(简化式对照)H' = ΣQ_i·l₁/(2·f_max),kg */\n readonly horizontalForceSimpleKg: number;\n /** 总垂直负载 ΣQ,kg */\n readonly totalLoadKg: number;\n}\n\n/**\n * 软横跨负载计算(负载计算法,教材口径)。\n *\n * 节点垂直负载(均匀间距简化):\n * Q_i = J + n·q₀·a + P + g_c·a\n *\n * 节点弛度(抛物线分布,最低点在 l₁):\n * f_i = f_max·(1 − ((x_i−l₁)/c_i)²),c_i = l₁(x_i≤l₁)或 L−l₁(x_i>l₁)\n *\n * 水平张力:精确式 H = M(l₁)/f_max,其中 M(l₁) 为悬挂负载对最低点截面的\n * 简支梁弯矩;简化式对照 H' = ΣQ_i·l₁/(2·f_max)。\n *\n * 分段索长:b_i ≈ a + (f_{i+1}−f_i)²/(2a);两端支柱锚固段\n * b_end = x₁ + f₁²/(2·x₁)(支柱端弛度为 0)。\n */\nexport function crossSpanAnalyze(input: CrossSpanNodeInput): CrossSpanResult {\n const {\n nodeCount,\n spacingM: a,\n spanTotalM: L,\n lowPointFromLeftM: l1,\n maxSagM: fMax,\n nodeLoadKg: J,\n suspensionWeightKgPerM: q0,\n suspensionGroups: n,\n cableWeightKgPerM: gc,\n insulatorDistributedKg: P,\n } = input;\n\n if (!Number.isInteger(nodeCount) || !(nodeCount >= 2)) {\n throw new RangeError(`节点数须为不小于 2 的整数,收到 ${nodeCount}`);\n }\n if (!(a > 0)) {\n throw new RangeError(`股道间距必须为正数,收到 ${a} m`);\n }\n if (!(L > 0)) {\n throw new RangeError(`跨距必须为正数,收到 ${L} m`);\n }\n if (!(l1 > 0 && l1 < L)) {\n throw new RangeError(`最低点距左支柱距离须在 (0, L) 内,收到 ${l1} m`);\n }\n if (!(fMax > 0)) {\n throw new RangeError(`最大弛度必须为正数,收到 ${fMax} m`);\n }\n if (!(J >= 0)) {\n throw new RangeError(`节点负载不能为负,收到 ${J} kg`);\n }\n if (!(q0 >= 0)) {\n throw new RangeError(`接触悬挂单位重不能为负,收到 ${q0} kg/m`);\n }\n if (!(n > 0)) {\n throw new RangeError(`每节点悬挂组数须为正数,收到 ${n}`);\n }\n if (!(gc >= 0)) {\n throw new RangeError(`横承索单位重不能为负,收到 ${gc} kg/m`);\n }\n if (!(P >= 0)) {\n throw new RangeError(`绝缘子串分摊负载不能为负,收到 ${P} kg`);\n }\n\n // 节点均匀分布:第 i 个节点距左支柱 x = a·(i+1),须全部落在跨内\n const lastX = a * nodeCount;\n if (!(lastX < L)) {\n throw new RangeError(\n `末节点位置 ${lastX} m 超出跨距 ${L} m,请减小节点数或股道间距`,\n );\n }\n\n const Q = J + n * q0 * a + P + gc * a;\n\n const nodeX: number[] = [];\n for (let i = 0; i < nodeCount; i++) {\n nodeX.push(a * (i + 1));\n }\n\n const nodeQ: number[] = nodeX.map(() => Q);\n const nodeSag: number[] = nodeX.map((x) => {\n const c = x <= l1 ? l1 : L - l1;\n return fMax * (1 - ((x - l1) / c) * ((x - l1) / c));\n });\n\n // 相邻节点间分段索长 b_i = a + (f_{i+1}−f_i)²/(2a)\n const segmentLength: number[] = [];\n for (let i = 0; i < nodeCount - 1; i++) {\n const fi = nodeSag[i];\n const fj = nodeSag[i + 1];\n if (fi === undefined || fj === undefined) {\n throw new Error(`缺少节点 ${i} 或 ${i + 1} 的弛度`);\n }\n const d = fj - fi;\n segmentLength.push(a + (d * d) / (2 * a));\n }\n\n // 两端支柱锚固段(支柱端弛度为 0)\n const x0 = nodeX[0];\n const f0 = nodeSag[0];\n if (x0 === undefined || f0 === undefined) {\n throw new Error('缺少首节点位置或弛度');\n }\n const endLeftM = x0 + (f0 * f0) / (2 * x0);\n\n const xLast = nodeX[nodeX.length - 1];\n const fLast = nodeSag[nodeSag.length - 1];\n if (xLast === undefined || fLast === undefined) {\n throw new Error('缺少末节点位置或弛度');\n }\n const gapRight = L - xLast;\n const endRightM = gapRight + (fLast * fLast) / (2 * gapRight);\n\n let segmentSum = 0;\n for (const b of segmentLength) segmentSum += b;\n const totalLengthM = endLeftM + segmentSum + endRightM;\n\n // 水平张力(力矩平衡精确式):以左右支柱为简支梁,求最低点截面弯矩\n let rLeft = 0;\n for (let i = 0; i < nodeCount; i++) {\n const x = nodeX[i];\n const q = nodeQ[i];\n if (x === undefined || q === undefined) {\n throw new Error(`缺少节点 ${i} 的位置或负载`);\n }\n rLeft += (q * (L - x)) / L;\n }\n let moment = rLeft * l1;\n for (let i = 0; i < nodeCount; i++) {\n const x = nodeX[i];\n const q = nodeQ[i];\n if (x === undefined || q === undefined) {\n throw new Error(`缺少节点 ${i} 的位置或负载`);\n }\n if (x < l1) {\n moment -= q * (l1 - x);\n }\n }\n const horizontalForceKg = moment / fMax;\n\n let totalLoadKg = 0;\n for (const q of nodeQ) totalLoadKg += q;\n\n const horizontalForceSimpleKg = (totalLoadKg * l1) / (2 * fMax);\n\n return {\n nodeX,\n nodeQ,\n nodeSag,\n segmentLength,\n endLeftM,\n endRightM,\n totalLengthM,\n horizontalForceKg,\n horizontalForceSimpleKg,\n totalLoadKg,\n };\n}\n"]}
|
package/dist/copper/index.cjs
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _chunkMTAYG3U2cjs = require('../chunk-MTAYG3U2.cjs');
|
|
6
6
|
require('../chunk-DGO2DCO5.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
exports.TB2809_WIRE_PARAMS =
|
|
11
|
+
exports.TB2809_WIRE_PARAMS = _chunkMTAYG3U2cjs.TB2809_WIRE_PARAMS; exports.copperMeta = _chunkMTAYG3U2cjs.copperMeta; exports.wireLookup = _chunkMTAYG3U2cjs.wireLookup;
|
|
12
12
|
//# sourceMappingURL=index.cjs.map
|
package/dist/copper/index.d.cts
CHANGED
|
@@ -3,7 +3,7 @@ import { C as CalculatorMeta } from '../types-C2OanO8N.cjs';
|
|
|
3
3
|
declare const copperMeta: CalculatorMeta;
|
|
4
4
|
|
|
5
5
|
/** 站点计算器内置的 6 个型号 */
|
|
6
|
-
type CopperWireModel = '
|
|
6
|
+
type CopperWireModel = 'CTMH-120' | 'CTMH-150' | 'CTAH-120' | 'CTAH-150' | 'CTS-120' | 'CTS-150';
|
|
7
7
|
interface WireParamEntry {
|
|
8
8
|
/** 单位重量,kg/km(标称值) */
|
|
9
9
|
readonly unitWeightKgPerKm: number;
|
|
@@ -28,7 +28,7 @@ interface WireParamEntry {
|
|
|
28
28
|
* 已于 R38 之后修复。若再遇渲染值与本表不符,先确认是否为显示层问题:
|
|
29
29
|
* 本表与服务端数据源始终一致。
|
|
30
30
|
*
|
|
31
|
-
* ⚠️ 注意型号口径:
|
|
31
|
+
* ⚠️ 注意型号口径:CTMH / CTAH / CTS 是站点计算器的型号代码,与标准中的
|
|
32
32
|
* CTMH / CTA / CTS 并非同名对应。`note` 字段说明各行实际取自标准的哪一行,
|
|
33
33
|
* 交叉引用 TB/T 2809-2017 时请以 note 为准。
|
|
34
34
|
*/
|
package/dist/copper/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { C as CalculatorMeta } from '../types-C2OanO8N.js';
|
|
|
3
3
|
declare const copperMeta: CalculatorMeta;
|
|
4
4
|
|
|
5
5
|
/** 站点计算器内置的 6 个型号 */
|
|
6
|
-
type CopperWireModel = '
|
|
6
|
+
type CopperWireModel = 'CTMH-120' | 'CTMH-150' | 'CTAH-120' | 'CTAH-150' | 'CTS-120' | 'CTS-150';
|
|
7
7
|
interface WireParamEntry {
|
|
8
8
|
/** 单位重量,kg/km(标称值) */
|
|
9
9
|
readonly unitWeightKgPerKm: number;
|
|
@@ -28,7 +28,7 @@ interface WireParamEntry {
|
|
|
28
28
|
* 已于 R38 之后修复。若再遇渲染值与本表不符,先确认是否为显示层问题:
|
|
29
29
|
* 本表与服务端数据源始终一致。
|
|
30
30
|
*
|
|
31
|
-
* ⚠️ 注意型号口径:
|
|
31
|
+
* ⚠️ 注意型号口径:CTMH / CTAH / CTS 是站点计算器的型号代码,与标准中的
|
|
32
32
|
* CTMH / CTA / CTS 并非同名对应。`note` 字段说明各行实际取自标准的哪一行,
|
|
33
33
|
* 交叉引用 TB/T 2809-2017 时请以 note 为准。
|
|
34
34
|
*/
|
package/dist/copper/index.js
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkLBGUOTCJcjs = require('../chunk-LBGUOTCJ.cjs');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
exports.CREEPAGE_FLOOR_GENERAL = _chunkLBGUOTCJcjs.CREEPAGE_FLOOR_GENERAL; exports.CREEPAGE_FLOOR_VCUT = _chunkLBGUOTCJcjs.CREEPAGE_FLOOR_VCUT; exports.USCD_BANDS = _chunkLBGUOTCJcjs.USCD_BANDS; exports.creepageCheck = _chunkLBGUOTCJcjs.creepageCheck; exports.creepageMeta = _chunkLBGUOTCJcjs.creepageMeta;
|
|
15
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/ocs-calculators/ocs-calculators/dist/creepage/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACF,kTAAC","file":"/home/runner/work/ocs-calculators/ocs-calculators/dist/creepage/index.cjs"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { C as CalculatorMeta } from '../types-C2OanO8N.cjs';
|
|
2
|
+
|
|
3
|
+
declare const creepageMeta: CalculatorMeta;
|
|
4
|
+
|
|
5
|
+
/** 接触网绝缘爬电距离底线(TB 10009-2016 第 5.3.2 条第 1 款),mm */
|
|
6
|
+
declare const CREEPAGE_FLOOR_GENERAL = 1400;
|
|
7
|
+
/** V 形天窗区段上、下行正线间分段绝缘子串底线,mm */
|
|
8
|
+
declare const CREEPAGE_FLOOR_VCUT = 1600;
|
|
9
|
+
/** GB/T 32586 统一爬电比距三档(第 4.4 条,按系统最高持续电压折算) */
|
|
10
|
+
declare const USCD_BANDS: readonly [{
|
|
11
|
+
readonly label: "正常";
|
|
12
|
+
readonly min: 24;
|
|
13
|
+
readonly max: 33;
|
|
14
|
+
}, {
|
|
15
|
+
readonly label: "非正常";
|
|
16
|
+
readonly min: 36;
|
|
17
|
+
readonly max: 40;
|
|
18
|
+
}, {
|
|
19
|
+
readonly label: "苛刻";
|
|
20
|
+
readonly min: 48;
|
|
21
|
+
readonly max: number;
|
|
22
|
+
}];
|
|
23
|
+
/** 爬电距离校核 */
|
|
24
|
+
declare function creepageCheck(input: {
|
|
25
|
+
/** 绝缘子实际爬电距离,mm */
|
|
26
|
+
readonly creepageMM: number;
|
|
27
|
+
/** 使用场景:'general' 一般 | 'vcut' V 形天窗分段串 */
|
|
28
|
+
readonly scenario?: 'general' | 'vcut';
|
|
29
|
+
/** 系统最高电压,kV(GB/T 32586 折算用,默认 29) */
|
|
30
|
+
readonly maxVoltageKV?: number;
|
|
31
|
+
}): {
|
|
32
|
+
floorMM: number;
|
|
33
|
+
passes: boolean;
|
|
34
|
+
uscdBands: {
|
|
35
|
+
label: string;
|
|
36
|
+
mm: number;
|
|
37
|
+
}[];
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export { CREEPAGE_FLOOR_GENERAL, CREEPAGE_FLOOR_VCUT, USCD_BANDS, creepageCheck, creepageMeta };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { C as CalculatorMeta } from '../types-C2OanO8N.js';
|
|
2
|
+
|
|
3
|
+
declare const creepageMeta: CalculatorMeta;
|
|
4
|
+
|
|
5
|
+
/** 接触网绝缘爬电距离底线(TB 10009-2016 第 5.3.2 条第 1 款),mm */
|
|
6
|
+
declare const CREEPAGE_FLOOR_GENERAL = 1400;
|
|
7
|
+
/** V 形天窗区段上、下行正线间分段绝缘子串底线,mm */
|
|
8
|
+
declare const CREEPAGE_FLOOR_VCUT = 1600;
|
|
9
|
+
/** GB/T 32586 统一爬电比距三档(第 4.4 条,按系统最高持续电压折算) */
|
|
10
|
+
declare const USCD_BANDS: readonly [{
|
|
11
|
+
readonly label: "正常";
|
|
12
|
+
readonly min: 24;
|
|
13
|
+
readonly max: 33;
|
|
14
|
+
}, {
|
|
15
|
+
readonly label: "非正常";
|
|
16
|
+
readonly min: 36;
|
|
17
|
+
readonly max: 40;
|
|
18
|
+
}, {
|
|
19
|
+
readonly label: "苛刻";
|
|
20
|
+
readonly min: 48;
|
|
21
|
+
readonly max: number;
|
|
22
|
+
}];
|
|
23
|
+
/** 爬电距离校核 */
|
|
24
|
+
declare function creepageCheck(input: {
|
|
25
|
+
/** 绝缘子实际爬电距离,mm */
|
|
26
|
+
readonly creepageMM: number;
|
|
27
|
+
/** 使用场景:'general' 一般 | 'vcut' V 形天窗分段串 */
|
|
28
|
+
readonly scenario?: 'general' | 'vcut';
|
|
29
|
+
/** 系统最高电压,kV(GB/T 32586 折算用,默认 29) */
|
|
30
|
+
readonly maxVoltageKV?: number;
|
|
31
|
+
}): {
|
|
32
|
+
floorMM: number;
|
|
33
|
+
passes: boolean;
|
|
34
|
+
uscdBands: {
|
|
35
|
+
label: string;
|
|
36
|
+
mm: number;
|
|
37
|
+
}[];
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export { CREEPAGE_FLOOR_GENERAL, CREEPAGE_FLOOR_VCUT, USCD_BANDS, creepageCheck, creepageMeta };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CREEPAGE_FLOOR_GENERAL,
|
|
3
|
+
CREEPAGE_FLOOR_VCUT,
|
|
4
|
+
USCD_BANDS,
|
|
5
|
+
creepageCheck,
|
|
6
|
+
creepageMeta
|
|
7
|
+
} from "../chunk-CLVLOLUJ.js";
|
|
8
|
+
export {
|
|
9
|
+
CREEPAGE_FLOOR_GENERAL,
|
|
10
|
+
CREEPAGE_FLOOR_VCUT,
|
|
11
|
+
USCD_BANDS,
|
|
12
|
+
creepageCheck,
|
|
13
|
+
creepageMeta
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunkX25CXRVEcjs = require('../chunk-X25CXRVE.cjs');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
exports.crossSpanAnalyze = _chunkX25CXRVEcjs.crossSpanAnalyze; exports.crossSpanMeta = _chunkX25CXRVEcjs.crossSpanMeta;
|
|
9
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/ocs-calculators/ocs-calculators/dist/cross-span/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACF,uHAAC","file":"/home/runner/work/ocs-calculators/ocs-calculators/dist/cross-span/index.cjs"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { C as CalculatorMeta } from '../types-C2OanO8N.cjs';
|
|
2
|
+
|
|
3
|
+
declare const crossSpanMeta: CalculatorMeta;
|
|
4
|
+
|
|
5
|
+
/** 软横跨负载计算(负载计算法)的输入参数 */
|
|
6
|
+
interface CrossSpanNodeInput {
|
|
7
|
+
/** 股道悬挂节点数 N */
|
|
8
|
+
readonly nodeCount: number;
|
|
9
|
+
/** 股道间距 a,m(节点近似均匀分布,起点距支柱 a) */
|
|
10
|
+
readonly spacingM: number;
|
|
11
|
+
/** 横承索跨距 L,m */
|
|
12
|
+
readonly spanTotalM: number;
|
|
13
|
+
/** 最低点距左支柱距离 l₁,m */
|
|
14
|
+
readonly lowPointFromLeftM: number;
|
|
15
|
+
/** 最大弛度 f_max,m(最低点弛度) */
|
|
16
|
+
readonly maxSagM: number;
|
|
17
|
+
/** 节点负载 J,kg(大站 65 / 小站 45) */
|
|
18
|
+
readonly nodeLoadKg: number;
|
|
19
|
+
/** 接触悬挂单位重 q₀,kg/m */
|
|
20
|
+
readonly suspensionWeightKgPerM: number;
|
|
21
|
+
/** 每节点悬挂组数 n */
|
|
22
|
+
readonly suspensionGroups: number;
|
|
23
|
+
/** 横承索 + 定位索单位重 g_c,kg/m */
|
|
24
|
+
readonly cableWeightKgPerM: number;
|
|
25
|
+
/** 绝缘子串分摊负载 P,kg */
|
|
26
|
+
readonly insulatorDistributedKg: number;
|
|
27
|
+
}
|
|
28
|
+
/** 软横跨负载计算结果 */
|
|
29
|
+
interface CrossSpanResult {
|
|
30
|
+
/** 各节点距左支柱距离 x_i,m */
|
|
31
|
+
readonly nodeX: readonly number[];
|
|
32
|
+
/** 各节点垂直负载 Q_i,kg */
|
|
33
|
+
readonly nodeQ: readonly number[];
|
|
34
|
+
/** 各节点弛度 f_i,m */
|
|
35
|
+
readonly nodeSag: readonly number[];
|
|
36
|
+
/** 相邻节点间分段索长 b_i,m(共 N−1 段) */
|
|
37
|
+
readonly segmentLength: readonly number[];
|
|
38
|
+
/** 左端支柱锚固段索长,m */
|
|
39
|
+
readonly endLeftM: number;
|
|
40
|
+
/** 右端支柱锚固段索长,m */
|
|
41
|
+
readonly endRightM: number;
|
|
42
|
+
/** 总索长 Σb,m */
|
|
43
|
+
readonly totalLengthM: number;
|
|
44
|
+
/** 水平张力(力矩平衡精确式)H = M(l₁)/f_max,kg */
|
|
45
|
+
readonly horizontalForceKg: number;
|
|
46
|
+
/** 水平张力(简化式对照)H' = ΣQ_i·l₁/(2·f_max),kg */
|
|
47
|
+
readonly horizontalForceSimpleKg: number;
|
|
48
|
+
/** 总垂直负载 ΣQ,kg */
|
|
49
|
+
readonly totalLoadKg: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* 软横跨负载计算(负载计算法,教材口径)。
|
|
53
|
+
*
|
|
54
|
+
* 节点垂直负载(均匀间距简化):
|
|
55
|
+
* Q_i = J + n·q₀·a + P + g_c·a
|
|
56
|
+
*
|
|
57
|
+
* 节点弛度(抛物线分布,最低点在 l₁):
|
|
58
|
+
* f_i = f_max·(1 − ((x_i−l₁)/c_i)²),c_i = l₁(x_i≤l₁)或 L−l₁(x_i>l₁)
|
|
59
|
+
*
|
|
60
|
+
* 水平张力:精确式 H = M(l₁)/f_max,其中 M(l₁) 为悬挂负载对最低点截面的
|
|
61
|
+
* 简支梁弯矩;简化式对照 H' = ΣQ_i·l₁/(2·f_max)。
|
|
62
|
+
*
|
|
63
|
+
* 分段索长:b_i ≈ a + (f_{i+1}−f_i)²/(2a);两端支柱锚固段
|
|
64
|
+
* b_end = x₁ + f₁²/(2·x₁)(支柱端弛度为 0)。
|
|
65
|
+
*/
|
|
66
|
+
declare function crossSpanAnalyze(input: CrossSpanNodeInput): CrossSpanResult;
|
|
67
|
+
|
|
68
|
+
export { type CrossSpanNodeInput, type CrossSpanResult, crossSpanAnalyze, crossSpanMeta };
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { C as CalculatorMeta } from '../types-C2OanO8N.js';
|
|
2
|
+
|
|
3
|
+
declare const crossSpanMeta: CalculatorMeta;
|
|
4
|
+
|
|
5
|
+
/** 软横跨负载计算(负载计算法)的输入参数 */
|
|
6
|
+
interface CrossSpanNodeInput {
|
|
7
|
+
/** 股道悬挂节点数 N */
|
|
8
|
+
readonly nodeCount: number;
|
|
9
|
+
/** 股道间距 a,m(节点近似均匀分布,起点距支柱 a) */
|
|
10
|
+
readonly spacingM: number;
|
|
11
|
+
/** 横承索跨距 L,m */
|
|
12
|
+
readonly spanTotalM: number;
|
|
13
|
+
/** 最低点距左支柱距离 l₁,m */
|
|
14
|
+
readonly lowPointFromLeftM: number;
|
|
15
|
+
/** 最大弛度 f_max,m(最低点弛度) */
|
|
16
|
+
readonly maxSagM: number;
|
|
17
|
+
/** 节点负载 J,kg(大站 65 / 小站 45) */
|
|
18
|
+
readonly nodeLoadKg: number;
|
|
19
|
+
/** 接触悬挂单位重 q₀,kg/m */
|
|
20
|
+
readonly suspensionWeightKgPerM: number;
|
|
21
|
+
/** 每节点悬挂组数 n */
|
|
22
|
+
readonly suspensionGroups: number;
|
|
23
|
+
/** 横承索 + 定位索单位重 g_c,kg/m */
|
|
24
|
+
readonly cableWeightKgPerM: number;
|
|
25
|
+
/** 绝缘子串分摊负载 P,kg */
|
|
26
|
+
readonly insulatorDistributedKg: number;
|
|
27
|
+
}
|
|
28
|
+
/** 软横跨负载计算结果 */
|
|
29
|
+
interface CrossSpanResult {
|
|
30
|
+
/** 各节点距左支柱距离 x_i,m */
|
|
31
|
+
readonly nodeX: readonly number[];
|
|
32
|
+
/** 各节点垂直负载 Q_i,kg */
|
|
33
|
+
readonly nodeQ: readonly number[];
|
|
34
|
+
/** 各节点弛度 f_i,m */
|
|
35
|
+
readonly nodeSag: readonly number[];
|
|
36
|
+
/** 相邻节点间分段索长 b_i,m(共 N−1 段) */
|
|
37
|
+
readonly segmentLength: readonly number[];
|
|
38
|
+
/** 左端支柱锚固段索长,m */
|
|
39
|
+
readonly endLeftM: number;
|
|
40
|
+
/** 右端支柱锚固段索长,m */
|
|
41
|
+
readonly endRightM: number;
|
|
42
|
+
/** 总索长 Σb,m */
|
|
43
|
+
readonly totalLengthM: number;
|
|
44
|
+
/** 水平张力(力矩平衡精确式)H = M(l₁)/f_max,kg */
|
|
45
|
+
readonly horizontalForceKg: number;
|
|
46
|
+
/** 水平张力(简化式对照)H' = ΣQ_i·l₁/(2·f_max),kg */
|
|
47
|
+
readonly horizontalForceSimpleKg: number;
|
|
48
|
+
/** 总垂直负载 ΣQ,kg */
|
|
49
|
+
readonly totalLoadKg: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* 软横跨负载计算(负载计算法,教材口径)。
|
|
53
|
+
*
|
|
54
|
+
* 节点垂直负载(均匀间距简化):
|
|
55
|
+
* Q_i = J + n·q₀·a + P + g_c·a
|
|
56
|
+
*
|
|
57
|
+
* 节点弛度(抛物线分布,最低点在 l₁):
|
|
58
|
+
* f_i = f_max·(1 − ((x_i−l₁)/c_i)²),c_i = l₁(x_i≤l₁)或 L−l₁(x_i>l₁)
|
|
59
|
+
*
|
|
60
|
+
* 水平张力:精确式 H = M(l₁)/f_max,其中 M(l₁) 为悬挂负载对最低点截面的
|
|
61
|
+
* 简支梁弯矩;简化式对照 H' = ΣQ_i·l₁/(2·f_max)。
|
|
62
|
+
*
|
|
63
|
+
* 分段索长:b_i ≈ a + (f_{i+1}−f_i)²/(2a);两端支柱锚固段
|
|
64
|
+
* b_end = x₁ + f₁²/(2·x₁)(支柱端弛度为 0)。
|
|
65
|
+
*/
|
|
66
|
+
declare function crossSpanAnalyze(input: CrossSpanNodeInput): CrossSpanResult;
|
|
67
|
+
|
|
68
|
+
export { type CrossSpanNodeInput, type CrossSpanResult, crossSpanAnalyze, crossSpanMeta };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|