基于MATLAB的雷诺方程求解:滑动轴承与箔片轴承静动特性分析
发布时间:2026/9/9 15:10:51 锦皓数字建站

做轴承设计这些年我越来越觉得会用软件和真懂轴承是两回事。去年接了个箔片轴承的评估项目要在不同转速、不同偏心率下快速扫出一堆静特性、动特性曲线拿商业软件一个个点参数简直要命最后我干脆回到底层用MATLAB把雷诺润滑方程老老实实自己解了一遍。这一趟走下来不仅把压力分布图、刚度阻尼图画得明明白白还把以前模棱两可的物理概念彻底理清了。这篇就把我整个实现过程、踩过的坑、还有关键代码逻辑都摊开讲希望对同样要跟轴承静动特性打交道的朋友有点用。1. 为什么绕开商业软件回到底层手写求解器这得从工程实际说起。滑动轴承和箔片轴承的设计说到底就是在算一件事给定工况下油膜或者气膜能不能撑住转子撑得稳不稳。前者是静特性后者是动特性。压力分布图告诉你膜压怎么撑的刚度阻尼图告诉你外力扰动下转子会不会失稳。这些数据看起来简单真算起来坑不少。1.1 现成工具的痛点市面上做轴承计算的软件其实分两类。一类是大型通用CFD软件网格画半天、边界条件设半天、算一个工况跑一晚上出来的结果还未必稳定因为气膜或者油膜的厚度是微米级的网格长宽比动不动就上千数值耗散能把结果吃掉一大半。另一类是厂家自带的专用小程序算得快但普遍存在两个问题一是黑盒你不知道它内部假设了什么箔片刚度怎么处理的、空化边界用的哪种条件都不知道二是扩展性差想算个非圆轴承、椭圆瓦、可倾瓦或者想把箔片波箔的局部变形耦合进去小软件根本改不了。所以当我需要在一个项目里同时对比圆轴承、椭圆轴承和箔片轴承还要扫描几十个转速点的时候果断选择了用MATLAB手写求解器。MATLAB做这事有几个天然优势矩阵运算和迭代循环写起来顺手surf、contour、plot这类画图函数一套就能输出漂亮的压力分布图和刚度阻尼曲线而且脚本化的参数扫描逻辑特别适合批量计算。最关键的是所有公式、所有假设、所有边界条件全在自己手里算出什么结果都知道为什么透明。1.2 两种轴承的共性和差异滑动轴承和箔片轴承表面上看一个用油一个用气一个刚性表面一个柔性表面但底层都受同一个方程支配——雷诺润滑方程。区别在于介质特性液体默认不可压缩等温条件下密度恒定方程是线性的本质上关于p的二阶偏微分是线性的但系数h³非线性气体必须考虑可压缩性压力场和密度场强耦合方程变成关于ph的非线性方程。再加上箔片轴承的气膜厚度h随压力变化会引入气弹耦合这是它比刚性表面轴承麻烦的根源。后面所有讨论我都围绕这两个主线展开先是不可压缩液体的刚性表面滑动轴承把基本方法打通再扩展气体可压缩项引入箔片变形。2. 雷诺润滑方程的来龙去脉与无量纲化处理我在不少论文里看到雷诺方程直接被写出来读者根本不知道它从哪来的更不知道各项的物理含义。我建议所有自己写求解器的人至少花半天时间把推导过程走一遍否则边界条件都容易设错。2.1 从N-S方程到薄膜方程三个决定性假设雷诺方程是N-S方程在薄膜润滑条件下的简化结果。所谓的薄膜润滑就是膜厚方向尺寸远小于其他两个方向尺寸这个几何特征带来了三个关键简化假设。第一膜厚方向的速度梯度远大于其他方向所以N-S方程里的惯性项可以忽略只剩下压力梯度和粘性剪切力的平衡。这就是为什么雷诺方程描述的是一种蠕动流它天然不适合高雷诺数的湍流工况但在轴承里绝大多数情况下成立。第二膜厚方向上压力近似恒定也就是∂p/∂y≈0这意味着压力在膜厚方向不变化膜压只是平面坐标的函数。第三流体是牛顿流体、层流、壁面无滑移这几个假设在常规工况下都成立。从连续性方程出发对速度剖面做积分再把压力梯度和速度的关系代进去就得到了经典的雷诺方程。推导过程不在这里展开了但有一点希望大家记住雷诺方程本质上是流量连续的数学表达它说的是任何微元体里压力流和剪切流的净流量等于零。理解了这一点后面所有离散格式的构造都顺理成章。2.2 不可压缩与可压缩两种标准形式对于不可压缩液体滑动轴承经典二维稳态雷诺方程写成∂/∂x (h³/μ · ∂p/∂x) ∂/∂z (h³/μ · ∂p/∂z) 6U · ∂h/∂x左边两项是压力流Poiseuille流右边一项是剪切流Couette流的楔形效应来源。这个方程里没有密度项求解相对直接。对于气体轴承密度随压力变化引入理想气体等温假设ρp/(RT)方程变为∂/∂x (ph³/μ · ∂p/∂x) ∂/∂z (ph³/μ · ∂p/∂z) 6U · ∂(ph)/∂x这就是可压缩雷诺方程也叫可压缩润滑方程。注意右边从∂h/∂x变成了∂(ph)/∂x这一个变化直接让方程从线性变成了非线性也让气体轴承的数值求解比液体轴承难了一个量级。2.3 无量纲化为什么非做不可数值计算里我强烈建议做无量纲化。原因有三个一是避免量级悬殊带来的数值病态间隙c是微米级、压力是大气压级、粘度是厘泊级直接带量纲算矩阵条件数会非常差二是无量纲方程里的特征参数本身就有明确的物理意义能直接用来判断工况三是方便统一代码结构算液体轴承和气体轴承用同一套无量纲框架只改一个特征参数就行。对于径向滑动轴承引入无量纲量周向坐标θ x/R轴向坐标z̄ z/(L/2) 或者 z̄ z/L看用的半宽还是全宽无量纲膜厚 H h/cc为半径间隙无量纲压力对于液体P p/psps为特征压力通常取6μωR²/c²的量级或者直接用pa对于气体P p/papa是环境压力无量纲化之后的液体轴承方程∂/∂θ (H³ ∂P/∂θ) (R/L)² ∂/∂z̄ (H³ ∂P/∂z̄) ∂H/∂θ而在气体轴承里会出现一个关键无量纲参数Λ轴承压缩数或轴承数∂/∂θ (PH³ ∂P/∂θ) (R/L)² ∂/∂z̄ (PH³ ∂P/∂z̄) Λ ∂(PH)/∂θ这里Λ 6μωR²/(pa·c²)。Λ的物理意义非常直观它衡量的是剪切流和压力流的相对强弱。Λ小说明压力流占主导气体可压缩性影响小趋近于液体行为Λ大说明剪切流强可压缩效应显著。我算过的一些箔片轴承工况Λ轻松上百这时候绝对不能忽略可压缩项。2.4 边界条件的设置原则边界条件是整个求解器最容易出bug的地方。压力边界条件对于径向轴承轴向两端直接接环境压力所以P(θ, z̄±1) 1气体或P0液体如果用表压。周向方向由于轴承表面是连续的必须满足周期性条件P(θ0) P(θ2π)也就是P(1,:) P(end,:)。空化边界液体滑动轴承在发散区会出现油膜破裂压力不能低于某个值通常认为是环境压力或饱和蒸汽压。工程上常用的处理办法是Reynolds边界条件也叫Swift-Stieber条件即压力不出现负值且在破裂边界上满足p∂p/∂x0。在迭代中实现的方法简单粗暴每轮迭代后把所有负压力直接置零。这个方法虽然粗糙但工程上足够用。还有一种更严格的空化模型是JFO理论要追踪空化区域边界复杂得多我这边一般先用Reynolds条件。对于气体轴承不存在空化问题但要注意边界上P1后压力不要强制设定为不小于1因为负压区在气体轴承里可能真实存在比如收敛区因压膜效应压力升高发散区压力降低只是通常不严重。气体轴承里的负压概念和液体空化不同只要压力不低于绝对零理论上都是合理的气体状态。3. 静特性数值求解有限差分与SOR迭代落地3.1 网格划分与离散格式径向滑动轴承的求解域是一个展开的平面周向从0到2π轴向从-z_max到z_max。网格划分就是在这个平面上打点。我的经验是周向网格数nx取120~180轴向nz取60~100这个密度既能保证精度计算时间也完全可以接受。对箔片轴承或需要考虑局部大变形的情况可以加到nx240、nz120白天跑一版也够了。离散的核心是用有限差分替代偏导数。方程的离散化我自己习惯用中心差分处理压力流项但需要特别注意系数h³在网格点上的取值方式。对于压力流项 ∂/∂θ (H³ ∂P/∂θ)在(i,j)点离散为[H³_{i1/2}(P_{i1,j} - P_{i,j}) - H³_{i-1/2}(P_{i,j} - P_{i-1,j})] / Δθ²这里H³_{i1/2}是界面上的值用调和平均还是算术平均会影响精度。我测试过用算术平均即H³_{i1/2} (H³_{i1,j}H³_{i,j})/2在膜厚变化剧烈时会有误差而采用harmonic平均更稳。当然在很多标准教材里直接写成H³_{i,j}(P_{i1,j}-2P_{i,j}P_{i-1,j})/Δθ²这在H变化不剧烈的工况误差可接受但箔片轴承里H可能突变建议用界面值。剪切流项 ∂H/∂θ 的离散有讲究。这里用的是迎风差分的思想如果轴颈顺时针旋转那么上游方向的膜厚梯度对剪切流贡献更大。简单的中心差分在某些工况下会产生非物理振荡我后来一直用一阶迎风∂H/∂θ ≈ (H_{i,j} - H_{i-1,j}) / Δθ前提是流动方向沿θ正方向。虽然一阶精度不高但稳定性好实际算下来压力场结果和网格加密后的中心差分结果几乎没差别。若想提高精度也可以用二阶迎风或Quick格式但对于膜厚光滑变化的常规轴承一阶足够。气体可压缩项的离散类似∂(PH)/∂θ 也用迎风即(PH){i,j} - (PH){i-1,j}除以Δθ。3.2 SOR迭代简单但极其好用的收敛方案离散化之后得到的代数方程组最直接的解法就是迭代。为什么不用直接法因为这个方程组虽然线性液体但维数高、系数矩阵有特殊结构直接法要存储大矩阵而且一旦引入空化边界负压清零操作让矩阵形式变化直接法反而不好处理。迭代法里逐点SORSuccessive Over-Relaxation逐次超松弛实现简单内存占用小是教科书里最经典的方案。SOR的更新公式是把P_ij的新值写成周围四个点的旧值加权平均的形式再加上一个松弛因子ω加速收敛P_new(i,j) (1-ω)·P_old(i,j) ω·P_updated(i,j)其中P_updated是高斯-赛德尔迭代的中间结果。ω的选择很关键取1就是高斯-赛德尔取1.5左右通常能显著加速但取得过大接近2就不稳定迭代直接发散。我一般取ω1.5~1.7对于网格更密的ω要适当调低。完整迭代流程初始化压力场为环境压力或一个均匀的猜测值如P1根据当前压力场计算膜厚场H液体轴承H直接由几何决定箔片轴承需要压力去迭代对每个内部网格点用SOR更新公式计算新压力应用边界条件周向周期边界、轴向端部环境压力对液体轴承做空化处理P0的点置为0计算收敛判据当前迭代压力场和上一次压力场的最大相对残差若残差小于阈值比如1e-6停止否则回到步骤2这里比较关键的一点是对于气体轴承因为方程是非线性的直接P迭代很可能发散。我的做法是把方程改写成关于P的隐式形式或者做阻尼迭代每次更新时用新压力和旧压力的线性插值即P β·P_new (1-β)·P_oldβ取0.3~0.5。这本质上是一种欠松弛迭代牺牲点速度换稳定性在气体轴承里非常管用。另外一个常被忽略的技巧先用粗网格迭代出一个差不多的压力场插值到细网格作为初始猜测能省下大量迭代时间。这在批量扫描工况时尤其有用——上一工况算完的压力场直接作为下一工况的初值工况变化不大时基本两三轮就收敛了。3.3 静特性参数承载力、偏位角与摩擦阻力求解出压力场之后静态特性参数就是对压力场做积分。无量纲承载力沿x和y方向的分量W_x -∫∫ P·cosθ dθ dz̄ W_y -∫∫ P·sinθ dθ dz̄注意这里符号方向取决于坐标定义我在代码里是直接对力矢量做方向判定。总承载力W sqrt(W_x² W_y²)偏位角φ atan2(W_y, W_x)。在MATLAB里积分用trapz或直接矩阵求和即可。要注意的是如果用的是无量纲压力Pp/pa最终要乘上pa·R·L恢复有量纲的承载力如果是液体要看你选择的无量纲特征压力别搞混了。摩擦阻力算起来稍麻烦一点。轴颈表面的剪切应力τ μU/h h/2 · ∂p/∂x沿表面积分得到摩擦力进而可以算摩擦系数。箔片轴承因为气膜极薄摩擦力矩通常很小这也是它适合高速的原因之一。摩擦计算在工程上相对次要我项目里主要关注承载力和温升相关的流量。全部静特性算完后绘制压力分布图。MATLAB里最顺手的流程是先用meshgrid生成θ和z̄的网格然后surf或mesh绘制三维压力曲面再用contourf画平面云图加colorbar。我习惯用surf(θ, z̄, P)后加view(3)和colormap(jet)展示效果在论文里已经很漂亮了。注意转置问题——网格方向要和矩阵维度一致这个细节经常让人画出来的图方向是反的。3.4 静特性曲线批量扫描单工况算完了静特性更有价值的展示方式是参数扫描曲线。常见的横坐标有偏心率ε、转速ω、长径比L/D等。我做了一个双层循环外层循环偏心率内层循环转速每个工况都跑一遍求解器。这里必须强调初始猜测复用的重要性——如果不复用每个工况从头迭代几百个工况可能要跑一个晚上如果按工况连续性把上一个解作为初值基本上十几分钟能跑完一轮。把结果存成结构体数组然后统一绘图承载力-偏心率曲线、偏位角-偏心率曲线、最小膜厚-转速曲线就都有了一张图。对于箔片轴承静特性还要额外画膜厚分布图和箔片变形图因为气膜厚度是压力场耦合作用的结果这恰恰是箔片轴承和刚性轴承最大的不同后面会专门讲。4. 动特性系数求解小扰动法的完整计算链路静特性算完只是第一步。转子动力学分析真正需要的是轴承的刚度和阻尼系数——这组参数直接决定了转子系统的临界转速和稳定性。对径向轴承在平衡位置附近做小扰动得到4个刚度系数kxx、kxy、kyx、kyy和4个阻尼系数cxx、cxy、cyx、cyy简称8个系数。4.1 8个系数的物理意义在固定坐标系下油膜力可以线性化为-Fx kxx·Δx kxy·Δy cxx·Δẋ cxy·Δẏ -Fy kyx·Δx kyy·Δy cyx·Δẋ cyy·Δẏ注意不少文献里力的符号方向约定有差异看的时候要仔细核对。kxx和kyy是主刚度kxy和kyx是交叉刚度。交叉刚度是转子失稳的重要根源——它代表一个方向位移会在另一个方向产生力相当于在转子系统里引入了非保守力。气体轴承和液体轴承的8个系数随转速变化差异很大画出来就是工程上常看的刚度阻尼图。4.2 摄动方程的推导思路小扰动法的核心思想假设轴颈中心在其平衡位置(x0,y0)附近做小幅振动位移和速度为Δx、Δy、Δẋ、Δẏ。膜厚h或H是位移的函数所以膜厚可以展开成H H0 Δx·∂H/∂x Δy·∂H/∂y O(ε²)对于圆柱径向轴承∂H/∂x cosθ∂H/∂y sinθ具体正负要看坐标定义所以H H0 Δx·cosθ Δy·sinθ同样压力场也展开P P0 Px·Δx Py·Δy Pẋ·Δẋ Pẏ·Δẏ其中Px、Py、Pẋ、Pẏ分别是压力对各扰动量的偏导数它们都是θ和z̄的函数与扰动本身无关。把H和P的展开式代入瞬态雷诺方程液体为含时间项或含挤压项的方程只保留一阶小量就可以分离出四组关于Px、Py、Pẋ、Pẏ的线性扰动方程。这些方程的系数取决于稳态解P0和H0所以求解顺序一定是先算稳态场再解扰动方程。对于不可压缩液体瞬态雷诺方程的挤压项是∂h/∂t对应速度扰动Δẋ、Δẏ扰动方程里会出现与速度相关的项。对于可压缩气体瞬态方程里不仅压力有瞬态项密度也有瞬态项处理更繁琐一些。4.3 扰动方程的离散求解与系数恢复四组扰动方程的离散格式和稳态方程类似只是右侧源项不同。解出Px、Py、Pẋ、Pẏ之后对它们做数值积分即可得刚度系数和阻尼系数kxx -∫∫ Px·cosθ dθ dz̄ kxy -∫∫ Py·cosθ dθ dz̄ kyx -∫∫ Px·sinθ dθ dz̄ kyy -∫∫ Py·sinθ dθ dz̄阻尼系数的形式类似只是把Px换成了Pẋ、Py换成了Pẹ:cxx -∫∫ Pẋ·cosθ dθ dz̄ cxy -∫∫ Pẏ·cosθ dθ dz̄ cyx -∫∫ Pẋ·sinθ dθ dz̄ cyy -∫∫ Pẏ·sinθ dθ dz̄注意这些积分是无量纲的恢复有量纲系数时要乘上对应的特征系数。液体和气体的特征系数不同很多人在这里栽跟头我建议在代码里把恢复公式单独写成一个小函数反复校验量纲。4.4 频率相关的动特性气体轴承还有一个要特别注意的地方它的刚度和阻尼是频率相关的。也就是说不同涡动频率Ω下同一个平衡位置对应的8个系数不一样。这是因为气体膜的可压缩性导致动态压力场依赖于扰动频率。在实际工程计算中通常的做法是给一个特定的涡动频率比比如Ω ω同步涡动或Ω 0.5ω半频涡动在频域里求解频域扰动方程得到对应频率下的系数。我项目里绘制刚度阻尼图时就设置了Ω/ω从0.2到1.5扫描每个频率比都重新算一组扰动方程。这个计算量会翻倍但得到的曲线信息量很大可以直接用于转子稳定性分析。这里必须提醒有些教材里的公式只适用于Ω0的静态位移情形即静刚度如果用这些公式去画全频率范围的动特性图结果会完全错误。5. 箔片轴承的气弹耦合从刚性表面到柔性波箔箔片轴承和刚性表面气体轴承相比本质区别在于气膜厚度不是单纯由几何间隙决定的而是几何间隙加上压力引起的波箔变形。这意味着每轮迭代都需要更新膜厚形成压力—变形—膜厚—压力的闭环耦合。5.1 波箔的刚度模型与柔度系数工程中用的波箔轴承结构是顶层平滑箔片top foil加一层波纹箔片bump foil波纹箔片提供了弹性支撑。当气膜压力作用在顶层箔片上压力通过顶层箔片传递到波箔波箔被压缩变形气膜厚度增大进而又影响压力分布。最简单的波箔模型是各向同性的线性弹性基础模型局部压力增量与局部变形量成正比即w α·(p - pa)其中α是箔片的柔度系数单位m/Pa。这里w为箔片变形量。有些模型还会考虑波箔与顶层箔片之间的摩擦力、波拱之间的相互作用但工程上线性弹性基础模型已经能反映主要趋势。柔度系数α怎么取对单波拱进行力学分析可得α近似正比于l³/(Et³)其中l是波拱半跨距t是箔片厚度E是弹性模量。具体的系数跟波拱几何有关但确定α的可靠方法还是有限元计算或者实验标定。我项目里用的是一个标定过的值量级在1e-7到1e-6 m/MPa之间具体记为α。引入了柔度系数之后气膜厚度方程变成H H_geo ᾱ·(P - 1)其中H_geo是刚性几何间隙含偏心率引起的楔形ᾱ α·pa/c为无量纲柔度。注意这个H现在和P耦合了。5.2 气弹耦合迭代的收敛控制耦合迭代的标准策略是外部迭代嵌套内部迭代。每轮外部迭代流程用当前压力场更新膜厚H H_geo ᾱ·(P - 1)固定H用雷诺方程内部迭代求解新压力场SOR迭代数十到数百步判断压力场的更新量如果收敛则退出否则回到步骤1最关键的经验是不能等内部雷诺方程完全收敛到残差1e-6再更新膜厚那样外部迭代会非常慢且容易振荡。我采用的是不完全内部收敛膜厚欠松弛策略内部只迭代20~50步不求完全收敛但压力场形状基本稳定了更新膜厚时用H H_old β_H·(H_new - H_old)β_H取0.3~0.5。这个欠松弛是稳定收敛的关键。我一开始图省事内部完全收敛再更新膜厚结果压力分布总是抖动箔片轴承就是算不稳。对于柔度较大的波箔ᾱ大膜厚更新更容易振荡可以进一步降低β_H到0.2。对于轻载工况P接近1ᾱ·(P-1)很小可以少嵌套几轮重载工况接近极限承载力时耦合效应显著外部迭代可能要跑到几十轮。5.3 箔片轴承的静特性与动特性后处理箔片轴承的静特性输出除了常规的承载力-偏心率曲线、偏位角曲线之外还有一个重要的检查项实际膜厚分布图和箔片变形量分布图。重载时箔片会产生明显的局部变形最小膜厚位置可能会偏移到和刚性轴承不同的角度这直接关系到轴承的安全运行。我遇到过的情况是刚性气体轴承在某个偏心率下算出来最小膜厚还有20微米但箔片轴承因为压力集中导致箔片局部压陷同样的名义间隙下实际最小膜厚只剩10微米不到。这个信息在上面那些承载力曲线里完全看不出来必须看膜厚分布云图才能发现。所以画完压力分布图之后建议同时把H分布图也画出来两张图对照着看。动特性方面箔片轴承的刚度和阻尼计算比刚性气体轴承更复杂。因为动扰动不仅引起压力场扰动还会引起箔片变形扰动。也就是说摄动方程里膜厚的摄动量不仅包含几何位移项cosθ、sinθ还包含压力扰动通过柔度反馈回来的变形项。这使得扰动方程左侧系数里多了类似ᾱ·P项迭代求解时同样需要内外耦合。处理上我采用的办法是按静力求解的嵌套结构在扰动方程的每次迭代后更新膜厚摄动量直到收敛。最终绘制刚度阻尼图时箔片轴承会呈现出和液体轴承截然不同的趋势。典型的特征包括主刚度Kxx随转速先升后降交叉刚度的幅值明显小于液体轴承阻尼系数整体偏小——这些都是气体箔片轴承被用于高速轻载场合的原因也是做转子动力学分析时最关心的数据。6. 画图脚本与批处理压力分布图和刚度阻尼图的生产线求解器写好了画图这块是每天的体力活建立一个好用的绘图脚本库能省大量时间。6.1 压力分布图的绘制细节三维压力云图我是用surf画的但直接画出来默认视角和配色都不够好看。我标准的一套设置是surf(theta, zbar, P, EdgeColor, none); view(135, 30); colormap(jet); colorbar; xlabel(\theta (rad)); ylabel(z/L); zlabel(P/P_a); title(Pressure Distribution);再加个lighting和shading interp效果就很接近论文配图了。平面云图我用contourf等值线数量60到100条再用colorbar标出压力范围。对于气体箔片轴承如果压力变化范围很大我建议用对数色标线性色标会淹没低压区的细节。另外一个画图技巧是不要直接画无量纲压力要画恢复成有量纲压力MPa或者kPa的图这样跟其他文献对比时心里有数。6.2 刚度阻尼图的批量生成与组织刚度阻尼图的横坐标通常是转速nrpm或涡动频率比Ω/ω纵坐标是对应的刚度系数Kxx、Kxy等或者阻尼系数Cxx、Cxy等。一次批量扫描几十个工况点建议用数组把所有结果存好再统一画而不是算一个画一个。我建议这种图最少画两张一张是刚度系数-转速曲线4条曲线一张是阻尼系数-转速曲线4条曲线。如果算的是频率相关动特性就在同一张图里用不同颜色区分不同频率比或者画成三维曲面。用MATLAB的yyaxis可以在一张图里同时画刚度和阻尼但在转速跨度很大的情况下两个量纲差太多建议还是分开画或者用分面图subplot。6.3 导出高质量图片论文和报告里要用的图导出时我一般用exportgraphicsexportgraphics(gcf, pressure_distribution.pdf, ContentType, vector);矢量图格式在Word和论文排版里放大缩小都清晰。如果要用位图设置Resolution, 600。这里有个小坑MATLAB默认的图窗尺寸和字体大小导出来经常偏小我习惯先set(gcf, Position, [100 100 1200 900])把窗口调大再调fontsize。7. 调试经验十次发散里九次栽在这些地方写求解器的过程说白了就是和发散作斗争的过程。我自己踩过的坑总结下来主要是这么几类残差计算方式不合理。我一开始用绝对残差max(|P_new-P_old|)结果网格加密之后由于网格点增多单步更新量本来就小看起来收敛了实际上离真解还有距离。改用相对残差max(|P_new-P_old|)/max(|P_new|)之后问题就清楚多了。边界条件与无量纲化不匹配。气体轴承的轴向端部是P1如果忘了在每次迭代后重新赋值边界点边界压力会被内部的迭代一步步侵蚀整个压力场也会慢慢飘掉。我在代码里专门写了一个applyBC()函数每次迭代完强制执行边界避免这个bug。SOR松弛因子选得太大。对于网格数超过200×100的工况ω1.9必发散1.8也会震荡我一般先在粗网格上试出合适的ω细网格上沿用或微调。如果看到残差曲线先降后升基本就是ω偏大。空化处理位置不对。液体轴承的空化负压置零必须放在SOR更新之后、边界条件应用之前且每轮都要做。有一次我把空化处理放到了整个迭代循环的外面结果负压在迭代中不断放大整个压力场直接崩了。气体轴承初始猜测太差。从P1均匀大气压开始迭代在Λ很大的时候经常迭代几百步都不收敛因为初始的PH分布和真实解差太远。我的做法是先算一个低转速工况小Λ收敛再逐步提高转速把前一工况结果作为下一工况的初始猜测。这个工况延续法非常有效尤其在箔片轴承里几乎可以保证大范围扫描不发散。箔片轴承的膜厚更新直接替换。前面说了膜厚更新一定要欠松弛我用β_H0.3~0.5算下来又稳又快。有个朋友照着我代码抄就是忘了这行结果怎么都收敛不了。还有一个在MATLAB性能上的建议迭代里最内层循环尽量避免用for嵌套遍历所有网格点。把离散方程的系数矩阵组装好然后用矩阵操作批量更新速度差异能达到几十倍。我最早用三重for循环解一个120×60的网格一个工况要跑两分钟改成矩阵操作之后只要两三秒。批量扫描几百个工况时这个差距就是两小时和十分钟的区别。8. 往工程化方向扩展的几个思路求解器跑通之后后续的扩展方向其实非常多这里列几个我实际用过的方向。一是把求解器封装成函数库。把稳态求解、扰动求解、参数后处理分别写成独立函数输入参数用结构体统一管理。这样批量扫描工况时只需要写一个几行的循环脚本很方便。二是和转子动力学模型耦合。把8个系数代入转子有限元模型可以算临界转速和失稳阈值。进一步还可以做轴承-转子系统的不平衡响应分析。三是考虑热效应。重载高速工况下润滑油或气体的温度分布不再均匀粘度随温度和压力变化液体非常显著气体也受温度影响需要在雷诺方程之外再解一个能量方程。这个方向复杂度上了一个台阶但工程上很有价值尤其是在涡轮机械里。四是加入非线性效应。箔片轴承在重载或大扰动下波箔可能进入非线性刚度区库仑摩擦也会提供额外的能量耗散。考虑这些效应通常要引入时域仿真跑轴心轨迹图。五是和实验数据对标。算完理论曲线之后有条件的话建议去和实测数据对标一次哪怕是文献里的实验曲线也好。对标的目的一是校验模型的准确性二是知道模型的适用范围。我自己的经验是气体箔片轴承在小偏心率下线性弹性基础模型的预测和实验吻合得可以但是偏心率一大箔片局部接触和干摩擦的影响会让理论值和实验值出现偏差这时候就要考虑是否引入非线性箔片模型了。最后再分享一点个人体会写这个MATLAB求解器表面上花时间最多的是迭代调试和边界条件处理但真正让我收获最大的反而是推导雷诺方程和扰动方程的过程。你如果不把每一项的物理意义搞清楚就算跑出来一张彩色的压力分布图也不知道它是真的还是数值假象。反过来把底层逻辑理顺之后看任何论文里的轴承计算结果你一眼就能判断出他用的是哪种模型、哪种边界条件、算出来的数据可不可信。这个能力是商业软件给不了的。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。