bstart-trb 0.1.0__py3-none-any.whl → 0.2.0__py3-none-any.whl

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.
@@ -60,4 +60,4 @@ __all__ = [
60
60
  "is_fortran_available",
61
61
  ]
62
62
 
63
- __version__ = "0.1.0"
63
+ __version__ = "0.2.0"
@@ -0,0 +1,949 @@
1
+ Metadata-Version: 2.4
2
+ Name: bstart-trb
3
+ Version: 0.2.0
4
+ Summary: Add your description here
5
+ License-File: LICENSE
6
+ Requires-Python: >=3.11
7
+ Requires-Dist: numpy>=2.4.2
8
+ Requires-Dist: openpyxl>=3.1.5
9
+ Requires-Dist: pandas>=3.0.0
10
+ Requires-Dist: plotly>=6.5.2
11
+ Description-Content-Type: text/markdown
12
+
13
+ # 圆柱滚子轴承切片计算详解
14
+
15
+ 本文档详细介绍 BSTART 系统中圆柱滚子轴承(CRB - Cylindrical Roller Bearing)的切片计算原理和实现逻辑。
16
+
17
+ ---
18
+
19
+ ## 目录
20
+
21
+ - [1. 切片计算概述](#1-切片计算概述)
22
+ - [2. 载荷分布计算](#2-载荷分布计算)
23
+ - [3. 滚子切片应力计算](#3-滚子切片应力计算)
24
+ - [4. 输入输出格式](#4-输入输出格式)
25
+ - [5. 使用示例](#5-使用示例)
26
+ - [6. 与寿命计算的关系](#6-与寿命计算的关系)
27
+ - [7. 边缘效应与凸度修形](#7-边缘效应与凸度修形)
28
+ - [8. 滚子倾斜角 tilt 详解](#8-滚子倾斜角-tilt-详解)
29
+ - [9. f2py 封装(Python 直接调用)](#9-f2py-封装python-直接调用)
30
+ - [10. 完整计算流程](#10-完整计算流程)
31
+ - [参考文献](#参考文献)
32
+
33
+ ---
34
+
35
+ ## 1. 切片计算概述
36
+
37
+ ### 1.1 什么是切片计算
38
+
39
+ 圆柱滚子轴承的接触区域是线接触,滚子与滚道的接触应力沿滚子长度方向分布不均匀。为了精确计算应力分布,将滚子沿轴向分成多个**切片(条带)**,分别计算每个切片的接触应力。
40
+
41
+ ```
42
+ 滚子切片示意图:
43
+ ┌─────────────────────────────────────────────┐
44
+ │ 1 │ 2 │ 3 │ ... │ n-1 │ n │ │ ← 滚子
45
+ └─────────────────────────────────────────────┘
46
+ ↑ ↑ ↑ ↑ ↑
47
+ σ₁ σ₂ σ₃ σₙ₋₁ σₙ ← 各切片应力
48
+ ```
49
+
50
+ ### 1.2 切片计算的必要性
51
+
52
+ | 传统方法 | 切片方法 |
53
+ |---------|---------|
54
+ | 假设应力均匀分布 | 计算真实应力分布 |
55
+ | 忽略边缘效应 | 捕捉边缘应力集中 |
56
+ | 保守估计寿命 | 更精确的寿命预测 |
57
+
58
+ ### 1.3 相关文件
59
+
60
+ | 文件 | 功能 |
61
+ |------|------|
62
+ | `CRB_main.py` | 圆柱滚子轴承计算主程序 |
63
+ | `CRB_C.py` | C 语言 DLL 接口,计算载荷分布 |
64
+ | `TAPER_FORTRAN.py` | Fortran 程序接口,计算切片应力 |
65
+ | `CRB_load.dll` | C 语言编译的载荷分布计算库 |
66
+ | `TAPER.exe` | Fortran 编译的应力计算程序 |
67
+
68
+ ---
69
+
70
+ ## 2. 载荷分布计算
71
+
72
+ ### 2.1 计算原理
73
+
74
+ 在径向载荷作用下,各滚子承受的载荷不同。最大载荷出现在载荷方向(通常为 0° 位置),随角度增加载荷逐渐减小。
75
+
76
+ 载荷分布公式:
77
+ $$Q_j = Q_{max} \cdot \left(1 - \frac{1}{2\varepsilon}\left(1 - \cos\psi_j\right)\right)^n$$
78
+
79
+ 其中:
80
+ - $Q_j$:第 j 个滚子的载荷(N)
81
+ - $Q_{max}$:最大滚子载荷(N)
82
+ - $\varepsilon$:载荷分布参数
83
+ - $\psi_j$:第 j 个滚子的方位角(rad)
84
+ - $n$:载荷-变形指数(线接触 $n = 10/9$)
85
+
86
+ ### 2.2 代码实现
87
+
88
+ 载荷分布通过 C 语言 DLL 计算(`CRB_C.py`):
89
+
90
+ ```python
91
+ def c_wfk(z: int, pd: float, l: float, fr: float, r1: float, r2: float):
92
+ """
93
+ 计算圆柱滚子轴承的载荷分布
94
+
95
+ 参数:
96
+ z: 滚子个数
97
+ pd: 径向游隙 (mm)
98
+ l: 滚子长度 (mm)
99
+ fr: 径向载荷 (N)
100
+ r1: 滚子半径 (mm)
101
+ r2: 滚道半径 (mm)
102
+
103
+ 返回:
104
+ dict: {角度: [接触变形, 接触载荷]}
105
+ """
106
+ clib = ctypes.CDLL('./CRB_load.dll')
107
+ clib.CRB.restype = TestStruct
108
+
109
+ value = clib.CRB(
110
+ ctypes.c_double(z),
111
+ ctypes.c_double(pd),
112
+ ctypes.c_double(l),
113
+ ctypes.c_double(fr),
114
+ ctypes.c_double(r1),
115
+ ctypes.c_double(r2)
116
+ )
117
+
118
+ # 解析结果
119
+ c_dict = {}
120
+ for i in range(z):
121
+ angle = value.array[i*3] * 180 / math.pi # 方位角(度)
122
+ deformation = value.array[i*3 + 1] # 接触变形
123
+ load = value.array[i*3 + 2] # 接触载荷
124
+ c_dict[angle] = [deformation, load]
125
+
126
+ return c_dict
127
+ ```
128
+
129
+ ### 2.3 输出示例
130
+
131
+ ```python
132
+ # 14 个滚子,径向载荷 4450N
133
+ c_dict = {
134
+ 0.0: [0.0023, 1928.5], # 0° 滚子:最大载荷
135
+ 25.7: [0.0019, 1456.2], # 25.7° 滚子
136
+ 51.4: [0.0012, 892.1], # 51.4° 滚子
137
+ 77.1: [0.0005, 324.8], # 77.1° 滚子
138
+ 102.9: [0.0, 0.0], # 102.9° 滚子:无接触
139
+ # ... 其他滚子
140
+ }
141
+ ```
142
+
143
+ ---
144
+
145
+ ## 3. 滚子切片应力计算
146
+
147
+ ### 3.1 切片参数
148
+
149
+ | 参数 | 说明 | 默认值 | 限制 |
150
+ |------|------|--------|------|
151
+ | `n` | 切片数(条带数) | 30 | **最大 50**(f90)/ 30(原版 FOR) |
152
+ | `m1` | 凸度类型:0-直线, 1-圆弧, 2-对数 | 2 (对数) | - |
153
+ | `m2` | 滚道类型:0-平面, 1-内圈, 2-外圈 | 1 或 2 | - |
154
+
155
+ **⚠️ 切片数限制说明**:
156
+ - 原版 `TAPER_A.FOR` 使用固定数组 `dimension p(30),a(30),d(30,30)`,最大 30 片
157
+ - 新版 `taper_slice.f90` 使用 `MAX_SLICES = 50`,最大 50 片
158
+ - 如需更多切片,需修改源码中的数组大小限制并重新编译
159
+
160
+ ### 3.2 TAPER 类参数说明
161
+
162
+ ```python
163
+ class TAPER:
164
+ def __init__(self, d1, d2, l, alfa, q, tilt, m1, n, m2, dr1, fai, curveQ):
165
+ """
166
+ Fortran 程序接口
167
+
168
+ 参数:
169
+ d1: 滚子小端直径 (mm)
170
+ d2: 滚子大端直径 (mm)(圆柱滚子 d1=d2)
171
+ l: 滚子有效长度 (mm)
172
+ alfa: 滚子半圆锥角 (°)(圆柱滚子 alfa=0)
173
+ q: 滚子载荷 (N)
174
+ tilt: 滚子倾斜角度 (°)
175
+ m1: 凸度类型 - 0:直线, 1:圆弧, 2:对数
176
+ n: 切片数(条带数) ← 关键参数
177
+ m2: 滚道类型 - 0:平面, 1:内圈, 2:外圈
178
+ dr1: 滚道直径 (mm)
179
+ fai: 滚道半圆锥角 (°)
180
+ curveQ: 设计载荷 (N)(用于计算对数凸度)
181
+ """
182
+ ```
183
+
184
+ ### 3.3 应力计算原理
185
+
186
+ #### 3.3.1 简化的 Hertz 公式(参考)
187
+
188
+ 传统的 Hertz 椭圆接触应力公式为:
189
+
190
+ $$\sigma_i = \frac{2 \cdot q_i}{\pi \cdot a_i \cdot b_i}$$
191
+
192
+ 其中:
193
+ - $\sigma_i$:第 i 个切片的最大接触应力(MPa)
194
+ - $q_i$:第 i 个切片的线载荷(N/mm)
195
+ - $a_i, b_i$:接触椭圆半轴(mm)
196
+
197
+ 但此公式假设各切片独立,不考虑切片间的弹性耦合。
198
+
199
+ #### 3.3.2 Fortran 实际实现:影响系数法
200
+
201
+ TAPER.exe(源码 `fortran/TAPER_A.FOR`)使用更精确的**弹性半空间影响系数法**:
202
+
203
+ **核心算法步骤:**
204
+
205
+ 1. **建立影响系数矩阵 [d]**
206
+ - `infmat` 子程序(第324-347行)
207
+ - 计算各切片间的弹性耦合关系
208
+ - 使用高斯积分计算影响系数(`calf`, `f` 子程序)
209
+
210
+ 2. **求解线性方程组 [d]{p}={s}**
211
+ - `gauss` 子程序(第387-440行)
212
+ - 使用高斯消元法
213
+ - 其中 {s} 为间隙数组,{p} 为接触应力数组
214
+
215
+ 3. **迭代收敛**
216
+ - `contac` 子程序中的双重迭代
217
+ - 外层:载荷平衡迭代(调整变形 dc)
218
+ - 内层:接触区域收敛迭代
219
+
220
+ **关键代码片段:**
221
+
222
+ ```fortran
223
+ c 计算影响系数矩阵并求解应力 p()
224
+ call infmat(n,h,a,d) ! 建立影响系数矩阵
225
+ call gauss(t0,n,ierror,d,p,s) ! 求解方程组,得到应力
226
+
227
+ c 根据应力计算新的接触半宽度
228
+ do 24 i=1,n
229
+ 24 a(i)=1.767e-5*r(i)*p(i) ! Hertz 关系
230
+ ```
231
+
232
+ 其中 `t0 = 4*(1-v²)/(π*E)` 为材料常数(v=0.3 泊松比,E=206GPa 弹性模量)。
233
+
234
+ **与简化公式的区别:**
235
+
236
+ | 特性 | 简化 Hertz 公式 | 影响系数法 |
237
+ |------|----------------|-----------|
238
+ | 切片耦合 | 不考虑 | 通过影响系数矩阵耦合 |
239
+ | 接触区判断 | 固定 | 迭代确定接触/非接触区 |
240
+ | 精度 | 近似 | 精确(弹性半空间理论) |
241
+ | 计算复杂度 | O(n) | O(n³) |
242
+
243
+ 对数凸度修形可以优化应力分布,减少边缘应力集中。
244
+
245
+ #### 3.3.3 重要澄清:载荷不是均分到各切片
246
+
247
+ **常见误解**:如果总载荷 q=3000N,切成 n=100 片,是否每片分 30N?
248
+
249
+ **答案:不是!**
250
+
251
+ Fortran 程序的输入是**总载荷 q**,而不是每片的载荷。实际计算流程如下:
252
+
253
+ ```
254
+ 输入: 总载荷 q=3000N, 切片数 n=100
255
+
256
+ 步骤1: 估算整体变形
257
+ dc = 3.84e-5 × q^0.9 / rl^0.8
258
+
259
+ 步骤2: 计算各切片间隙
260
+ s(i) = dc - z(i) (z 取决于凸度修形和倾斜)
261
+
262
+ 步骤3: 建立 n×n 影响系数矩阵 [d]
263
+ d(i,j) 表示切片 j 对切片 i 的弹性影响
264
+
265
+ 步骤4: 求解方程组 [d]{p} = {s}
266
+ 得到各切片应力 p(i)
267
+
268
+ 步骤5: 计算平衡载荷
269
+ q1 = π × Σ(p(i) × a(i)) × h
270
+
271
+ 步骤6: 如果 |q1 - q| / q > 0.5%
272
+ 调整 dc,返回步骤2
273
+
274
+ 输出: 各切片应力 p(i) (MPa) —— 非均匀分布!
275
+ ```
276
+
277
+ **为什么各切片应力不均匀?**
278
+
279
+ 1. **影响系数矩阵的耦合效应**:每个切片的变形受其他切片载荷的影响
280
+ 2. **边缘效应**:边缘切片只有单侧邻居"帮忙承载",应力更高
281
+ 3. **凸度修形**:故意让边缘间隙变小来补偿边缘效应
282
+ 4. **倾斜**:tilt≠0 时一侧接触紧密、另一侧可能脱离
283
+
284
+ ### 3.4 代码实现(旧版 - 文件传参)
285
+
286
+ ```python
287
+ # CRB_main.py (旧版实现,通过 INPUT_TAPER.dat 文件传参)
288
+
289
+ class CRB:
290
+ def __init__(self, z, Pd, l, l_total, fr, r1, r2, r3, curveQ):
291
+ """
292
+ 圆柱滚子轴承计算类
293
+
294
+ 参数:
295
+ z: 滚子数量
296
+ Pd: 径向游隙 (mm)
297
+ l: 滚子有效长度 (mm)
298
+ l_total: 滚子总长度 (mm)
299
+ fr: 径向载荷 (N)
300
+ r1: 滚子半径 (mm)
301
+ r2: 内滚道半径 (mm)
302
+ r3: 外滚道半径 (mm)
303
+ curveQ: 设计载荷 (N)
304
+ """
305
+ self.n_slice = 30 # 切片数
306
+
307
+ def CRB_Main(self):
308
+ """主计算流程"""
309
+ # 1. 计算载荷分布
310
+ c_dict, a_list = c_wfk(self.z, self.Pd, self.l, self.fr, self.r1, self.r2)
311
+
312
+ # 2. 内滚道切片应力计算
313
+ roller_inner = TAPER(
314
+ d1=2*self.r1, d2=2*self.r1, # 滚子直径
315
+ l=self.l, # 滚子有效长度
316
+ alfa=0, # 半圆锥角(圆柱=0)
317
+ q=0, # 载荷(后续赋值)
318
+ tilt=0, # 倾斜角
319
+ m1=2, # 对数凸度
320
+ n=30, # 切片数 ← 关键参数
321
+ m2=1, # 内圈
322
+ dr1=2*self.r2, # 内滚道直径
323
+ fai=0, # 滚道半圆锥角
324
+ curveQ=self.curveQ # 设计载荷
325
+ )
326
+
327
+ # 对每个滚子计算切片应力
328
+ line_dict_inner = {}
329
+ for angle, values in c_dict.items():
330
+ load = values[1] # 该滚子的载荷
331
+ roller_inner.q = load
332
+ roller_inner.write_dat()
333
+ roller_inner.run_exe()
334
+
335
+ # 读取 30 个切片的应力值
336
+ with open('TAPER.txt', 'r') as f:
337
+ stresses = []
338
+ for line in f.readlines()[1::2]:
339
+ stresses += line.strip().split()
340
+ line_dict_inner[angle] = stresses
341
+
342
+ # 3. 外滚道切片应力计算(类似)
343
+ roller_outer = TAPER(..., m2=2, dr1=2*(-self.r3), ...)
344
+ # ...
345
+
346
+ return c_dict, line_dict_inner, line_dict_outer
347
+ ```
348
+
349
+ ---
350
+
351
+ ## 4. 输入输出格式
352
+
353
+ ### 4.1 输入文件(INPUT_TAPER.dat)
354
+
355
+ ```
356
+ 10.0 10.0 9.6 0.0 1340.859878
357
+ 0.0 2 30 2 -150.0 0.0 14100.0
358
+ ```
359
+
360
+ | 行 | 参数 | 说明 |
361
+ |----|------|------|
362
+ | 1 | d1, d2, l, alfa, q | 滚子小端直径, 大端直径, 有效长度, 半圆锥角, 载荷 |
363
+ | 2 | tilt, m1, **n**, m2, dr1, fai, curveQ | 倾斜角, 凸度类型, **切片数**, 滚道类型, 滚道直径, 滚道半圆锥角, 设计载荷 |
364
+
365
+ #### 为什么有两个半圆锥角(alfa 和 fai)?
366
+
367
+ **1. 滚子半圆锥角 `alfa`**
368
+ - 描述**滚子自身**的圆锥形状
369
+ - 圆柱滚子:`alfa = 0`
370
+ - 圆锥滚子:`alfa > 0`(典型 10°-15°)
371
+
372
+ **2. 滚道半圆锥角 `fai`**
373
+ - 描述**滚道**的圆锥形状
374
+ - 圆柱滚子轴承:`fai = 0`(滚道是圆柱面)
375
+ - 圆锥滚子轴承:`fai > 0`(滚道是圆锥面)
376
+
377
+ **为什么需要分开?**
378
+
379
+ 理论上,在圆锥滚子轴承中,滚子和滚道的半圆锥角应该相同(`alfa = fai`),这样才能实现完美的线接触。
380
+
381
+ 但在实际设计和计算中,分开它们可以:
382
+
383
+ 1. **处理制造误差** - 滚子和滚道的实际半圆锥角可能略有不同
384
+ 2. **更通用的计算模型** - 同一套代码可以处理圆柱滚子轴承和圆锥滚子轴承
385
+ 3. **处理特殊接触** - 还可以处理滚子与平面的接触(`fai = 0`, `m2 = 0`)
386
+
387
+ **对于圆柱滚子轴承(CRB):**
388
+ - `alfa = 0`(滚子是圆柱形)
389
+ - `fai = 0`(滚道是圆柱面)
390
+
391
+ ### 4.2 输出文件(TAPER.txt)
392
+
393
+ ```
394
+ 1269. 1092. 1061. 1041. 1028. 1018. 1011. 1005. 1001. 998.
395
+ 995. 993. 991. 990. 990. 990. 990. 991. 993. 995.
396
+ 998. 1001. 1005. 1011. 1018. 1028. 1041. 1061. 1092. 1269.
397
+ ```
398
+
399
+ 30 个数值,对应 30 个切片的接触应力(MPa)。
400
+
401
+ 可以看到:
402
+ - 两端应力高(边缘效应):1269 MPa
403
+ - 中间应力低且均匀:约 990 MPa
404
+ - 对数凸度修形有效减缓了边缘应力集中
405
+
406
+ ### 4.3 应力分布可视化
407
+
408
+ 计算完成后生成应力分布图:
409
+ - `inner.png`:内滚道接触应力分布
410
+ - `outer.png`:外滚道接触应力分布
411
+
412
+ ```python
413
+ def make_report(self):
414
+ """生成报告和图表"""
415
+ # ... 计算 ...
416
+
417
+ # 绘制内滚道应力分布
418
+ plt.figure(figsize=(6, 4), dpi=200)
419
+ for angle in df_inner.index:
420
+ plt.plot(
421
+ df_inner.loc[angle, :].keys(), # X: 切片位置
422
+ df_inner.loc[angle, :].values, # Y: 应力值
423
+ label=f'{angle}°'
424
+ )
425
+ plt.xlabel("沿滚子的距离(mm)")
426
+ plt.ylabel("接触应力(MPa)")
427
+ plt.title("内滚道接触应力")
428
+ plt.savefig('inner.png')
429
+ ```
430
+
431
+ ---
432
+
433
+ ## 5. 使用示例
434
+
435
+ ### 5.1 完整计算流程
436
+
437
+ ```python
438
+ from CRB_main import CRB
439
+
440
+ # 创建圆柱滚子轴承对象
441
+ crb = CRB(
442
+ z=14, # 14 个滚子
443
+ Pd=0.041, # 径向游隙 0.041mm
444
+ l=9.6, # 滚子有效长度 9.6mm
445
+ l_total=10, # 滚子总长度 10mm
446
+ fr=4450, # 径向载荷 4450N
447
+ r1=5, # 滚子半径 5mm
448
+ r2=55, # 内滚道半径 55mm
449
+ r3=75, # 外滚道半径 75mm
450
+ curveQ=14100 # 设计载荷 14100N
451
+ )
452
+
453
+ # 执行计算并生成报告
454
+ crb.make_report()
455
+ ```
456
+
457
+ ### 5.2 参数调整
458
+
459
+ 如需修改切片数,编辑 `CRB_main.py` 中的 `n` 参数:
460
+
461
+ ```python
462
+ # 默认 30 切片
463
+ roller_inner = TAPER(..., n=30, ...)
464
+
465
+ # 更精细的计算(如 50 切片)
466
+ roller_inner = TAPER(..., n=50, ...)
467
+ ```
468
+
469
+ ---
470
+
471
+ ## 6. 与寿命计算的关系
472
+
473
+ 切片计算得到的应力分布可用于更精确的寿命预测:
474
+
475
+ 1. **传统方法**:使用平均应力计算 L10 寿命
476
+ 2. **切片方法**:考虑应力分布,基于最大应力或累积损伤计算寿命
477
+
478
+ $$L_{10} = \left(\frac{Q_c}{Q_{eq}}\right)^{10/3}$$
479
+
480
+ 其中 $Q_{eq}$ 可以基于切片应力分布计算等效载荷。
481
+
482
+ ---
483
+
484
+ ## 7. 边缘效应与凸度修形
485
+
486
+ ### 7.1 边缘效应 (Edge Loading)
487
+
488
+ 对于理想的圆柱滚子(无凸度修形),如果滚子和滚道都是完美的直线贝母面,理论上应力应该是均匀分布的。但实际上会出现**边缘应力集中**(边缘应力趋于无穷大):
489
+
490
+ ```
491
+ 无凸度修形的应力分布:
492
+
493
+ 应力
494
+ ↑ ∞ ∞
495
+ | /| |\
496
+ | / | | \
497
+ | / |___________| \
498
+ | / \
499
+ +-----------------------------→ 滚子长度
500
+ 边缘 中间均匀 边缘
501
+ ```
502
+
503
+ 这是因为在滚子端部,接触区域突然终止,导致应力急剧上升。
504
+
505
+ ### 7.2 凸度修形的作用
506
+
507
+ 为了减少边缘应力集中,采用**凸度修形**(Crowning):
508
+
509
+ | 凸度类型 | m1 | 特点 |
510
+ |---------|-----|------|
511
+ | 直线 | 0 | 无修形,边缘应力高 |
512
+ | 圆弧 | 1 | 简单修形,需要指定圆弧半径 |
513
+ | 对数 | 2 | 最优修形,理论上可实现均匀应力分布 |
514
+
515
+ **对数凸度的设计原理:**
516
+
517
+ $$z = t_1 \cdot \ln\left(\frac{1}{1-(2y/l)^2}\right)$$
518
+
519
+ 其中:
520
+ - $z$:滚子端部的倒角量(凸度修形量),单位 mm
521
+ - $y$:沿滚子轴向的位置(以滚子中心为原点),单位 mm
522
+ - $l$:滚子有效长度(即 rl),单位 mm
523
+ - $t_1$:对数凸度幅度参数,单位 mm
524
+
525
+ #### t₁ 与 curveQ 的计算公式
526
+
527
+ **核心公式**(源自 TAPER_A.FOR 第 58 行):
528
+
529
+ $$t_1 = \frac{1}{2} \cdot t_0 \cdot \frac{curveQ}{rl}$$
530
+
531
+ 其中 $t_0$ 是**材料弹性常数**:
532
+
533
+ $$t_0 = \frac{4(1-\nu^2)}{\pi \cdot E}$$
534
+
535
+ | 参数 | 含义 | 典型值 | 单位 |
536
+ |------|------|--------|------|
537
+ | $t_1$ | 对数凸度幅度参数 | 计算结果 | mm |
538
+ | $t_0$ | 材料弹性常数 | 5.626×10⁻⁶ | mm²/N |
539
+ | $\nu$ | 泊松比 | 0.3 (钢) | 无 |
540
+ | $E$ | 弹性模量 | 2.06×10⁵ | MPa |
541
+ | $curveQ$ | 设计载荷 | 用户输入 | N |
542
+ | $rl$ | 滚子有效长度 | 用户输入 | mm |
543
+
544
+ **数值计算示例**:
545
+
546
+ 对于钢材(ν=0.3, E=206000 MPa):
547
+
548
+ $$t_0 = \frac{4 \times (1-0.3^2)}{3.14159 \times 206000} = \frac{4 \times 0.91}{647118} \approx 5.626 \times 10^{-6} \text{ mm}^2/\text{N}$$
549
+
550
+ 简化形式:
551
+
552
+ $$t_1 = 2.813 \times 10^{-6} \cdot \frac{curveQ}{rl} \quad \text{(mm)}$$
553
+
554
+ **验证示例**:
555
+
556
+ 假设 curveQ = 14100 N, rl = 9.6 mm:
557
+
558
+ $$t_1 = 2.813 \times 10^{-6} \times \frac{14100}{9.6} = 4.13 \times 10^{-3} \text{ mm} = 4.13 \text{ μm}$$
559
+
560
+ #### 对数凸度曲线的特性
561
+
562
+ | 位置 | y 值 | z(y) 值 | 说明 |
563
+ |------|------|---------|------|
564
+ | 中心 | 0 | 0 | 无修形 |
565
+ | 1/4 处 | ±rl/4 | 0.134×t₁ | 微小修形 |
566
+ | 端部附近 | ±0.4995rl | 6.2×t₁ | 快速增大 |
567
+ | 极端端部 | ±0.49995rl | 8.5×t₁ | 趋于无穷 |
568
+
569
+ 当实际载荷 q = curveQ 时,应力分布均匀。
570
+
571
+ ### 7.3 设计载荷 curveQ 的作用
572
+
573
+ #### 7.3.1 curveQ 的物理含义
574
+
575
+ curveQ 是「用于设计对数凸度修形的基准载荷」。它决定了滚子端部倒角(凸度修形量)的大小。
576
+
577
+ **设计目标**:对数凸度的目的是在特定载荷下,让接触应力沿滚子长度均匀分布。
578
+
579
+ ```
580
+ 无凸度修形(理想情况): 无凸度修形(实际情况):
581
+ 应力 应力 ∞ ∞
582
+ ↑ ________________ ↑ /| |\
583
+ | | | | / | | \
584
+ | | | | / |___________| \
585
+ +------------------→ +--------------------→
586
+ 滚子长度 滚子长度
587
+ (理论均匀) (边缘应力集中)
588
+ ```
589
+
590
+ 对数凸度修形的作用就是补偿这个边缘应力集中现象。
591
+
592
+ #### 7.3.2 curveQ 与实际载荷 q 的关系
593
+
594
+ | 关系 | 应力分布特征 | 说明 |
595
+ |------|-------------|------|
596
+ | q = curveQ | 均匀分布 | **最优状态** - 凸度完美补偿边缘效应 |
597
+ | q < curveQ | 中间高、边缘低 | 凸度过大,边缘可能脱离接触 |
598
+ | q > curveQ | 边缘高、中间低 | 凸度不足,边缘应力集中未完全消除 |
599
+
600
+ #### 7.3.3 工程应用建议
601
+
602
+ 在实际设计中:
603
+
604
+ 1. **如果已知工作载荷范围**:curveQ 通常选择为预期最常用载荷
605
+ 2. **保守设计**:curveQ 可选择较大值,确保在高载荷时边缘不会应力过高
606
+ 3. **轴承样本**:例如示例中 curveQ=14100N,意味着该滚子的对数凸度是按 14100N 载荷设计的
607
+
608
+ #### 7.3.4 一句话总结
609
+
610
+ **curveQ 决定了「在哪个载荷下应力分布最均匀」**。
611
+
612
+ ### 7.4 滚道直径 dr1 的符号约定
613
+
614
+ 在 Hertz 接触理论中,采用符号约定区分凸面和凹面:
615
+
616
+ - **正曲率半径** → 凸面(如滚子)
617
+ - **负曲率半径** → 凹面(如外圈滚道)
618
+
619
+ 因此,INPUT_TAPER.dat 中 `dr1=-150.0` 表示:
620
+ - 这是一个凹面滚道(外圈)
621
+ - 直径的绝对值是 150mm
622
+ - 曲率半径 aa = 0.5 × (-150) = -75mm
623
+
624
+ 等效曲率半径计算(外圈接触 m2=2):
625
+
626
+ $$r = \frac{a \cdot aa}{aa - a} = \frac{5 \times (-75)}{(-75) - 5} = \frac{-375}{-80} = 4.6875 \text{ mm}$$
627
+
628
+ ---
629
+
630
+ ## 8. 滚子倾斜角 tilt 详解
631
+
632
+ ### 8.1 tilt 的物理含义
633
+
634
+ 滚子倾斜角 `tilt` 表示滚子轴线与滚道轴线之间的夹角(单位:度)。
635
+
636
+ ```
637
+ 滚子倾斜示意图:
638
+
639
+ 正常状态 (tilt=0) 倾斜状态 (tilt>0)
640
+ ┌─────────────────┐ ┌─────────────────┐
641
+ │ roller │ │ roller ╱ │
642
+ │ ═══════════ │ │ ═══════════╱ │
643
+ │ │ │ ╱ │
644
+ └─────────────────┘ └───────────╱─────┘
645
+ tilt角
646
+ ```
647
+
648
+ ### 8.2 tilt 对应力分布的影响
649
+
650
+ #### 8.2.1 无倾斜 (tilt=0) 且无凸度修形
651
+
652
+ 即使没有倾斜,由于**边缘效应**,应力分布仍然不均匀:
653
+
654
+ ```
655
+ 应力分布(tilt=0, m1=0):
656
+
657
+ 应力
658
+ ↑ ∞ ∞ ← 边缘应力理论上趋于无穷大
659
+ | /| |\
660
+ | / | | \
661
+ | / |___________| \
662
+ | / \
663
+ +-----------------------------→ 滚子长度
664
+ 边缘 中间均匀 边缘
665
+ ```
666
+
667
+ **原因**:影响系数矩阵的边界特性导致边缘切片应力集中。
668
+
669
+ #### 8.2.2 有倾斜 (tilt>0)
670
+
671
+ 倾斜会导致**不对称**的应力分布:
672
+
673
+ ```
674
+ 应力分布(tilt>0, m1=0):
675
+
676
+ 应力
677
+
678
+ | ∞
679
+ | /|
680
+ | / |
681
+ | / |
682
+ |/ |_______________ ← 大端可能不接触(应力=0)
683
+ +----------------------------→ 滚子长度
684
+ 小端 大端
685
+ (载荷集中) (载荷很小/无)
686
+ ```
687
+
688
+ #### 8.2.3 数学分析
689
+
690
+ 在 `gaps` 子程序中,各切片的间隙计算为:
691
+
692
+ ```fortran
693
+ ! 对于直线滚子 (m1=0):
694
+ z = (y + rl/2.) * tilt
695
+ s(i) = dc - z
696
+ ```
697
+
698
+ | 位置 | y | z | s(i) = dc - z |
699
+ |------|---|---|---------------|
700
+ | 小端 | -rl/2 | 0 | dc(正常接触) |
701
+ | 中间 | 0 | rl/2 × tilt | dc - rl/2 × tilt |
702
+ | 大端 | +rl/2 | rl × tilt | dc - rl × tilt(可能不接触) |
703
+
704
+ 当 `rl × tilt > dc` 时,大端将脱离接触。
705
+
706
+ ### 8.3 tilt 的来源
707
+
708
+ 滚子倾斜的主要原因:
709
+
710
+ | 来源 | 说明 |
711
+ |------|------|
712
+ | 轴挠曲 | 轴在载荷下弯曲,导致内圈相对外圈倾斜 |
713
+ | 安装误差 | 内外圈安装不同心或不平行 |
714
+ | 壳体变形 | 载荷导致的壳体变形 |
715
+ | 轴承游隙 | 大游隙可能导致运行中产生倾斜 |
716
+
717
+ ### 8.4 如何获取 tilt
718
+
719
+ #### 8.4.1 方法一:简化轴挠曲计算(推荐)
720
+
721
+ 基于材料力学的简化模型,计算轴在载荷下的挠曲角:
722
+
723
+ ```
724
+ F1 F2 F3
725
+ ↓ ↓ ↓
726
+ ────○──────────○───────────○────
727
+ ▲ ▲
728
+ 轴承1 轴承2
729
+ (θ₁) (θ₂)
730
+ ```
731
+
732
+ 挠曲角 θ 即为该处的 tilt 值。
733
+
734
+ 输入参数:
735
+ - 轴的几何:各段直径、长度
736
+ - 轴承位置
737
+ - 载荷位置和大小
738
+ - 材料:弹性模量 E
739
+
740
+ #### 8.4.2 方法二:经验估计
741
+
742
+ 根据 ISO/TS 16281 和 Harris 的建议:
743
+
744
+ | 工况 | tilt 典型范围 |
745
+ |------|---------------|
746
+ | 高精度安装 | 0.5' ~ 2' (0.008° ~ 0.033°) |
747
+ | 普通安装 | 2' ~ 5' (0.033° ~ 0.083°) |
748
+ | 载荷导致倾斜 | 取决于轴刚度 |
749
+
750
+ **注**:1' = 1/60°
751
+
752
+ #### 8.4.3 方法三:有限元分析
753
+
754
+ 使用 ANSYS/Abaqus 等软件进行完整的轴-轴承系统分析,可获得最精确的 tilt 值。
755
+
756
+ ### 8.5 tilt 在当前代码中的使用
757
+
758
+ | 模块 | 是否使用 tilt |
759
+ |------|--------------|
760
+ | C 模块 (gl_crb_ext) | ❌ 假设 tilt=0 |
761
+ | Fortran 模块 (taper_slice) | ✅ 作为输入参数 |
762
+ | CRB_main.py (新版) | ❌ 未调用切片计算 |
763
+ | TAPER_FORTRAN.py (旧版) | ✅ 需手动输入 |
764
+
765
+ ### 8.6 INPUT_TAPER.dat 中的 tilt 位置
766
+
767
+ ```
768
+ 10.0 10.0 9.6 0.0 1340.859878
769
+ 0.0 2 30 2 -150.0 0.0 14100.0
770
+
771
+ tilt=0.0 (第二行第一个参数,单位:度)
772
+ ```
773
+
774
+ ---
775
+
776
+ ## 9. f2py 封装(Python 直接调用)
777
+
778
+ ### 9.1 概述
779
+
780
+ 为了避免通过文件传递参数,使用 **f2py** 将 Fortran 代码封装为 Python 可直接调用的模块。
781
+
782
+ ### 9.2 文件位置
783
+
784
+ | 文件 | 说明 |
785
+ |------|------|
786
+ | `fortran_wrapper/taper_slice.f90` | Fortran 90 源代码 |
787
+ | `fortran_wrapper/_taper_slice.cpython-312-darwin.so` | 编译后的 Python 扩展 |
788
+
789
+ ### 9.3 编译方法
790
+
791
+ ```bash
792
+ cd fortran_wrapper
793
+ uv run python -m numpy.f2py -c taper_slice.f90 -m _taper_slice
794
+ ```
795
+
796
+ ### 9.4 Python 调用示例
797
+
798
+ ```python
799
+ import sys
800
+ sys.path.insert(0, 'fortran_wrapper')
801
+ import _taper_slice
802
+
803
+ # 计算切片应力
804
+ result = _taper_slice.taper_calculate(
805
+ d1=10.0, # 滚子小端直径 (mm)
806
+ d2=10.0, # 滚子大端直径 (mm)
807
+ rl=9.6, # 滚子有效长度 (mm)
808
+ alfa=0.0, # 滚子半圆锥角 (deg)
809
+ q=1340.86, # 滚子载荷 (N) - 来自载荷分布计算
810
+ tilt=0.0, # 滚子倾斜角 (deg)
811
+ m1=2, # 凸度类型: 0=直线, 1=圆弧, 2=对数
812
+ n_slice=30, # 切片数
813
+ m2=2, # 滚道类型: 0=平面, 1=内圈, 2=外圈
814
+ dr1=-150.0, # 滚道直径 (mm), 负值表示凹面
815
+ fai=0.0, # 滚道半圆锥角 (deg)
816
+ curveq=14100.0 # 设计载荷 (N)
817
+ )
818
+
819
+ # 解析结果
820
+ p, a, q_slice, dc, q1, qm, ierr = result
821
+
822
+ print(f"错误码: {ierr}")
823
+ print(f"滚子变形: {dc:.6f} mm")
824
+ print(f"各切片接触力 (N): {[f'{x:.2f}' for x in q_slice]}")
825
+ print(f"平衡载荷: {q1:.2f} N")
826
+ print(f"各切片应力 (MPa): {[f'{x:.0f}' for x in p]}")
827
+ ```
828
+
829
+ ### 9.5 返回值说明
830
+
831
+ | 返回值 | 类型 | 说明 |
832
+ |--------|------|------|
833
+ | p | array(n) | 各切片接触中心应力 (MPa) |
834
+ | a | array(n) | 各切片接触半宽度 (mm) |
835
+ | q_slice | array(n) | 各切片接触力 (N) |
836
+ | dc | float | 滚子变形 (mm) |
837
+ | q1 | float | 平衡载荷 (N) |
838
+ | qm | float | 平衡力矩 (N·mm) |
839
+ | ierr | int | 错误码: 0=成功, 1=方程求解失败 |
840
+
841
+ ---
842
+
843
+ ## 10. 完整计算流程
844
+
845
+ ### 10.1 两阶段计算
846
+
847
+ ```
848
+ 第一阶段: C 模块 (gl_crb_ext) - 载荷分布计算
849
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
850
+
851
+ 输入:
852
+ - z=14 (滚子数)
853
+ - Fr=4450N (径向载荷)
854
+ - Pd, l, r1, r2 (几何参数)
855
+
856
+ ↓ Newton 迭代
857
+
858
+ 输出:
859
+ {0°: 1340.86N, 25.7°: 1128.3N, 51.4°: 689.2N, ...}
860
+ └─ 每个滚子的接触载荷
861
+
862
+
863
+ 第二阶段: Fortran 模块 (taper_slice) - 切片应力计算
864
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
865
+
866
+ 对每个承载滚子:
867
+
868
+ 输入:
869
+ - q = 1340.86N (该滚子的载荷)
870
+ - 滚子几何参数
871
+ - n=30 (切片数)
872
+
873
+ ↓ 影响系数法迭代
874
+
875
+ 输出:
876
+ 30 个切片的接触应力 (MPa)
877
+ ```
878
+
879
+ ### 10.2 代码示例
880
+
881
+ ```python
882
+ import sys
883
+ sys.path.insert(0, 'fortran_wrapper')
884
+ import gl_crb_ext
885
+ import _taper_slice
886
+
887
+ # 第一阶段: 载荷分布计算
888
+ load_dist = gl_crb_ext.calculate_load_distribution(
889
+ z=14, pd=0.041, l=9.6, fr=4450, r1=5, r2=55
890
+ )
891
+
892
+ # 第二阶段: 对每个承载滚子计算切片应力
893
+ for angle, (deformation, load) in load_dist.items():
894
+ if load > 0: # 只计算承载滚子
895
+ result = _taper_slice.taper_calculate(
896
+ d1=10.0, d2=10.0, rl=9.6, alfa=0.0,
897
+ q=load, # 使用该滚子的实际载荷
898
+ tilt=0.0, m1=2, n_slice=30, m2=2,
899
+ dr1=-150.0, fai=0.0, curveq=14100.0
900
+ )
901
+ p, a, q_slice, dc, q1, qm, ierr = result
902
+ print(f"{angle}° 滚子: 载荷={load:.1f}N, 最大应力={max(p):.0f}MPa, 切片力总和={sum(q_slice):.1f}N")
903
+ ```
904
+
905
+ ---
906
+
907
+ ## 参考文献
908
+
909
+ ### 标准与规范
910
+
911
+ 1. ISO 281:2007 - Rolling bearings — Dynamic load ratings and rating life
912
+ 2. ISO/TS 16281:2008 - Rolling bearings — Methods for calculating the modified reference rating life
913
+
914
+ ### 核心理论著作
915
+
916
+ 3. **Harris, T.A., Kotzalas, M.N.** - *Rolling Bearing Analysis*, 5th Edition, CRC Press, 2006
917
+ - 第6章:Contact Stress and Deformation(接触应力与变形)
918
+ - 第8章:Roller Bearing Loads(滚子轴承载荷)
919
+ - **影响系数法**的核心参考,详细介绍了弹性接触分析方法
920
+
921
+ 4. **Johnson, K.L.** - *Contact Mechanics*, Cambridge University Press, 1985
922
+ - 第4章:Normal Contact of Elastic Solids - Line Loading(弹性固体法向接触 - 线载荷)
923
+ - 第9章:Rolling Contact(滚动接触)
924
+ - **弹性半空间理论**的经典著作,TAPER_A.FOR 影响系数矩阵算法的理论基础
925
+
926
+ 5. **Lundberg, G. & Palmgren, A.** - *Dynamic Capacity of Rolling Bearings*, 1947
927
+ - 滚动接触疲劳寿命理论的奠基之作
928
+ - 载荷-寿命指数 p=10/3(线接触滚子轴承)的理论来源
929
+
930
+ ### 中文参考
931
+
932
+ 6. 《滚动轴承分析计算与应用》- 邓四二,机械工业出版社
933
+
934
+ ### TAPER_A.FOR 代码来源
935
+
936
+ TAPER_A.FOR 源代码(Version 8.0, Jun. 4, 2007)由 **F.K. Wu(吴飞科)** 编写。
937
+
938
+ 该程序采用的**影响系数法**(Influence Coefficient Method)基于 Johnson 弹性接触力学理论,通过以下步骤求解:
939
+
940
+ 1. 将滚子离散为 n 个条带(切片)
941
+ 2. 基于弹性半空间假设,建立条带间的弹性耦合关系(影响系数矩阵)
942
+ 3. 使用高斯消元法求解线性方程组
943
+ 4. 迭代收敛得到各条带的接触应力分布
944
+
945
+ 这种方法比简化的 Hertz 公式更精确,能够处理:
946
+ - 边缘效应(edge loading)
947
+ - 非均匀应力分布
948
+ - 不同凸度修形(直线、圆弧、对数)
949
+ - 接触区域的动态判断
@@ -0,0 +1,11 @@
1
+ bstart_trb/__init__.py,sha256=gQXZa7qHHpq6dQ84Iv3XB4qq3QKTE-lqhXGTC6ST-qc,1561
2
+ bstart_trb/_taper_slice.pyi,sha256=X5xMWlbdGl46RQmunOaFbh9BFjeqTMP0Hp7b_waJuaA,4896
3
+ bstart_trb/libtaper_sl.J4R3HUMRYTOGZPKAVTEOISVEHZMIJTJT.gfortran-win_amd64.dll,sha256=9fWV89mKt1_6Q8f_votoG1vlvxsy4qgDVWXQAZ0vmUA,108562
4
+ bstart_trb/models.py,sha256=pbdcbYXjcL3TwSEGulStj0Zj6-lJ4w1_DSRzcpslPcM,10599
5
+ bstart_trb/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ bstart_trb/wrapper.py,sha256=sDJ97Ptx1YCnwUiKRD1g79YQp7ZSKeI0P_XF3HPcXWc,6354
7
+ bstart_trb/_taper_slice.cp311-win_amd64.pyd,sha256=WDAXF_NTj7DRIEA6--kX1W3TMPGQD5u8JVRt-hR_9L4,64000
8
+ bstart_trb-0.2.0.dist-info/METADATA,sha256=6X39NNie11Oj0XO_iHsvKR2ECx9mjv5i4X2mOxuTPcQ,30238
9
+ bstart_trb-0.2.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
10
+ bstart_trb-0.2.0.dist-info/licenses/LICENSE,sha256=YCXLtJfjUPyklZ7pN5gxOeMOr5QCAvip4Sdnl_xcCu8,1084
11
+ bstart_trb-0.2.0.dist-info/RECORD,,
@@ -1,165 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: bstart-trb
3
- Version: 0.1.0
4
- Summary: Cylindrical/Tapered Roller Bearing Slice Stress Calculation Module
5
- Project-URL: Homepage, https://github.com/yourusername/bstart-trb
6
- Project-URL: Repository, https://github.com/yourusername/bstart-trb
7
- Project-URL: Documentation, https://github.com/yourusername/bstart-trb#readme
8
- Author-email: Gu Lei <gulei@example.com>
9
- License: MIT
10
- License-File: LICENSE
11
- Keywords: bearing,contact,f2py,fortran,hertz,roller,stress
12
- Classifier: Development Status :: 4 - Beta
13
- Classifier: Intended Audience :: Manufacturing
14
- Classifier: Intended Audience :: Science/Research
15
- Classifier: License :: OSI Approved :: MIT License
16
- Classifier: Operating System :: Microsoft :: Windows
17
- Classifier: Programming Language :: Fortran
18
- Classifier: Programming Language :: Python :: 3
19
- Classifier: Programming Language :: Python :: 3.12
20
- Classifier: Topic :: Scientific/Engineering
21
- Classifier: Topic :: Scientific/Engineering :: Physics
22
- Requires-Python: >=3.12
23
- Requires-Dist: numpy>=2.0.0
24
- Description-Content-Type: text/markdown
25
-
26
- # BSTART-TRB
27
-
28
- **Cylindrical/Tapered Roller Bearing Slice Stress Calculation Module**
29
-
30
- A high-performance Python package for calculating contact stress distribution in roller bearings using the slice method with Fortran computational core.
31
-
32
- ## Features
33
-
34
- - 🚀 **Fast Fortran Core**: Compiled Fortran code via f2py for optimal performance
35
- - 📦 **Pre-compiled Binary**: No Fortran compiler required for installation
36
- - 🎯 **Type-Safe**: Complete type hints and IDE support
37
- - 🔬 **Accurate**: Uses influence coefficient method based on elastic contact theory
38
- - 📊 **Flexible**: Supports various crown types (linear, circular, logarithmic)
39
-
40
- ## Installation
41
-
42
- ```bash
43
- pip install bstart-trb
44
- ```
45
-
46
- **Note**: This package includes pre-compiled binaries for Windows (x64). Support for other platforms coming soon.
47
-
48
- ## Quick Start
49
-
50
- ```python
51
- from slice_wrapper import (
52
- slice_stress,
53
- RollerParams,
54
- RacewayParams,
55
- CrownType,
56
- RacewayType,
57
- )
58
-
59
- # Define cylindrical roller parameters
60
- roller = RollerParams(
61
- d1=10.0, # Small end diameter (mm)
62
- d2=10.0, # Large end diameter (mm)
63
- length=9.6, # Effective length (mm)
64
- alfa=0.0, # Half cone angle (degrees)
65
- tilt=0.0, # Tilt angle (degrees)
66
- crown_type=CrownType.LOGARITHMIC,
67
- curve_q=14100.0, # Design load (N)
68
- )
69
-
70
- # Define outer ring raceway parameters
71
- raceway = RacewayParams(
72
- diameter=-150.0, # Negative for concave surface (mm)
73
- raceway_type=RacewayType.OUTER,
74
- fai=0.0, # Half cone angle (degrees)
75
- )
76
-
77
- # Calculate slice stress distribution
78
- result = slice_stress(roller, raceway, load=1340.86, n_slice=30)
79
-
80
- # Access results
81
- print(f"Max stress: {result.max_stress:.0f} MPa")
82
- print(f"Contact deflection: {result.deflection:.6f} mm")
83
- print(f"Stress uniformity: {result.stress_uniformity:.2%}")
84
- print(f"Contact slices: {result.contact_slices}/{result.n_slice}")
85
- ```
86
-
87
- ## What is Slice Calculation?
88
-
89
- The slice method divides the roller-raceway contact into multiple slices along the roller length to accurately calculate stress distribution. This is essential for:
90
-
91
- - Capturing edge stress concentration effects
92
- - Analyzing the impact of crown modifications
93
- - Predicting bearing life more accurately
94
- - Understanding load distribution along roller length
95
-
96
- ## Key Parameters
97
-
98
- ### Roller Parameters
99
-
100
- - `d1`, `d2`: Roller diameters (mm) - equal for cylindrical rollers
101
- - `length`: Effective roller length (mm)
102
- - `alfa`: Half cone angle (degrees) - 0 for cylindrical rollers
103
- - `tilt`: Roller tilt angle (degrees)
104
- - `crown_type`: Crown modification type
105
- - `STRAIGHT`: No crown modification
106
- - `CIRCULAR`: Circular crown
107
- - `LOGARITHMIC`: Logarithmic crown (recommended)
108
- - `curve_q`: Design load (N) for optimal stress distribution
109
-
110
- ### Raceway Parameters
111
-
112
- - `diameter`: Raceway diameter (mm) - negative for outer ring (concave)
113
- - `raceway_type`: `INNER` or `OUTER`
114
- - `fai`: Raceway cone angle (degrees)
115
-
116
- ### Calculation Parameters
117
-
118
- - `load`: Applied load on roller (N)
119
- - `n_slice`: Number of slices (default 30, max 50)
120
-
121
- ## Theory
122
-
123
- This package implements the **influence coefficient method** based on elastic half-space contact theory:
124
-
125
- 1. Discretizes roller into slices
126
- 2. Calculates elastic coupling between slices (influence coefficient matrix)
127
- 3. Solves linear system using Gaussian elimination
128
- 4. Iterates to convergence for contact area and load balance
129
-
130
- The method is more accurate than simplified Hertz formulas as it accounts for:
131
- - Elastic coupling between slices
132
- - Dynamic contact area determination
133
- - Edge loading effects
134
- - Crown modification influence
135
-
136
- ## Requirements
137
-
138
- - Python >= 3.12
139
- - NumPy >= 2.0.0
140
-
141
- ## Platform Support
142
-
143
- | Platform | Status |
144
- |----------|--------|
145
- | Windows (x64) | ✅ Supported |
146
- | Linux | 🚧 Coming soon |
147
- | macOS | 🚧 Coming soon |
148
-
149
- ## License
150
-
151
- MIT License - See LICENSE file for details.
152
-
153
- ## Author
154
-
155
- Gu Lei
156
-
157
- ## References
158
-
159
- - Harris, T.A., Kotzalas, M.N. - *Rolling Bearing Analysis*, 5th Edition
160
- - Johnson, K.L. - *Contact Mechanics*
161
- - ISO/TS 16281:2008 - Rolling bearings calculation methods
162
-
163
- ## Contributing
164
-
165
- Contributions are welcome! Please feel free to submit issues or pull requests.
@@ -1,10 +0,0 @@
1
- slice_wrapper/__init__.py,sha256=BEFo_zE2odqmoH29x4bdnNOdpA5bJEdqQMVOMZ3BDxo,1561
2
- slice_wrapper/_taper_slice.cp312-win_amd64.pyd,sha256=AoQWdwQNFXKeIEWuvhfklYJ0gE5gAU-g-hUsJtEt2wQ,139034
3
- slice_wrapper/_taper_slice.pyi,sha256=X5xMWlbdGl46RQmunOaFbh9BFjeqTMP0Hp7b_waJuaA,4896
4
- slice_wrapper/models.py,sha256=pbdcbYXjcL3TwSEGulStj0Zj6-lJ4w1_DSRzcpslPcM,10599
5
- slice_wrapper/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- slice_wrapper/wrapper.py,sha256=sDJ97Ptx1YCnwUiKRD1g79YQp7ZSKeI0P_XF3HPcXWc,6354
7
- bstart_trb-0.1.0.dist-info/METADATA,sha256=_KoGXfgfDaOf1OOdsvDLpvdtz-xivr4z-egoy6CQu3A,5259
8
- bstart_trb-0.1.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
9
- bstart_trb-0.1.0.dist-info/licenses/LICENSE,sha256=YCXLtJfjUPyklZ7pN5gxOeMOr5QCAvip4Sdnl_xcCu8,1084
10
- bstart_trb-0.1.0.dist-info/RECORD,,
File without changes
File without changes
File without changes
File without changes