喜欢仿真?关注我们,干货随时学。遇到有用的技术文章和视频,转发朋友圈收藏起来,随取随用;别忘了推荐给身边的朋友,好东西一起分享!
工程界有句老话:机器不是被一次大载荷砸坏的,而是被成千上万次"小打小闹"磨坏的。统计表明,机械结构失效里大约百分之八十到九十最终都能追到疲劳头上。你在 nCode DesignLife 里点开「Fatigue Analysis」引擎下拉菜单,扑面而来两个最基础也最让人犯迷糊的名字:Standard SN(应力疲劳)和Standard EN(应变疲劳)。选错一个,后面算得再花哨,寿命预测能差出去一个数量级。今天咱们就把这两位"老对手"掰开揉碎讲明白:到底什么时候用 S-N,什么时候用 E-N,中间的 Neuber 修正、平均应力处理、材料数据又该怎么落地。
别被名字吓到,这两个方法的本质差别就一句话:它到底认不认"塑性变形"这笔账。认账的,叫应变疲劳;不认账的,叫应力疲劳。
应力疲劳也叫高周疲劳(HCF,High-Cycle Fatigue),管的是那些循环次数动辄十万、百万甚至上亿次才坏的结构。典型场景:风机叶片、高铁车轮、发动机连杆、弹簧、焊接桁架。这类构件工作应力通常低于屈服强度,局部基本处于弹性状态,所以方法很"省事"——直接用名义应力幅值去对寿命,根本不关心材料内部到底有没有一点点塑性流动。
应变疲劳又叫低周疲劳(LCF,Low-Cycle Fatigue),管的是几千到几万次就坏、而且局部早就进入塑性的大变形部位。典型场景:发动机排气歧管热机交变、压力容器接管处、起落架着陆冲击、涡轮盘榫齿。这里名义应力早超了屈服,塑性应变才是消耗寿命的"主谋",所以方法必须盯着局部应变,尤其是塑性应变分量。
用一张表先把两者钉死,后面所有讨论都围着这张表转:
S-N 曲线是疲劳界资历最老、用得最广的一张图,横轴是失效循环数 N,纵轴是应力水平(常用应力幅或应力范围)。它的脾气是:应力越低,能扛的循环越多。
在双对数坐标里,中段基本是一条直线,代表Basquin 关系:S = A·Nᵇ。曲线往左上方走,很多材料(尤其钢)在某一应力水平以下会出现一条"水平尾巴",叫疲劳极限(Endurance Limit),意思是低于它就理论上永不失效。但在 nCode 里你可要当心:这根水平尾巴是有置信度假设的,默认往往按 50% 存活率给,工程上常要按 97.7% 或更高存活率下拉,否则算出来的"无限寿命"会让你在试验台前栽跟头。
Basquin 方程写成 Sₐ = σ'f·(2N)ᵇ 的常见变体,其中 σ'f 是疲劳强度系数、b 是疲劳强度指数(钢一般约 -0.08 到 -0.12)。在 nCode 的 Standard SN 引擎里,你输入的材料常常就是一组(应力水平,失效循环数)散点,软件用最小二乘拟合出这条线。这里有个实用技巧:一定要看散点的循环数跨度。如果你的实测数据最高只到 10⁶ 次,却拿去外推到 10⁹ 次,误差能大到没边。
真实的活载荷很少是纯对称循环,多半带着平均应力。平均拉应力会缩短寿命,平均压应力会延长寿命。S-N 方法在应力域里做修正,三员大将各有地盘:
Goodman 修正:直线连接疲劳极限与抗拉强度,保守、最常用;Gerber 修正:抛物线连接,对中等平均应力更贴合试验,偏乐观;Soderberg 修正:连到屈服强度,最保守,常用于安全余量极小的场合。在 nCode 里,你只要在材料定义里把修正方式选对,引擎会自动把每一级载荷的应力幅"折算"成等效对称幅值再去查表。
Standard SN 引擎吃进来的,通常是有限元算出的弹性应力张量时间序列,或者是直接给的应力幅/应力范围。它内部做雨流计数、平均应力修正、插值查 S-N 曲线,最后用 Miner 线性累积损伤求和。优点是快、稳、对网格不敏感;缺点也正源于此——它看不见塑性,一旦局部真进了塑性,算出来的损伤往往偏危险(寿命预测偏长)。
应变疲劳的逻辑换个赛道:既然寿命由局部塑性应变说了算,那就直接拿应变幅去对循环数。它尤其擅长处理缺口根部、焊缝起裂这类"应力算出来早超屈服、但实际就裂在塑性区"的硬骨头。
总应变幅 Δε/2 被拆成两部分:弹性部分 εₐᵉ 和塑性部分 εₐᵖ。低周区塑性部分占大头,高周区弹性部分占大头。这个拆分是 E-N 方法的地基。
塑性应变幅由 Coffin-Manson 关系描述:εₐᵖ = ε'f·(2N)ᶜ,其中 ε'f 是疲劳延性系数、c 是疲劳延性指数(约 -0.5 到 -0.7)。总应变寿命方程把弹性项(Basquin 形式)和塑性项(Coffin-Manson 形式)加起来,得到著名的 Manson-Coffin 总应变方程。在双对数坐标里,总应变曲线在转折寿命 Nᵗ 附近拐弯——这就是 S-N 与 E-N 谁更准的分界线:Nᵗ 左边用 E-N,右边用 S-N 误差都不大。
E-N 方法还需要一条循环应力应变曲线(Cyclic Stress-Strain Curve, CSSC),它和单调拉伸曲线不同——材料在循环加载下会循环硬化或循环软化,CSSC 描述的是"稳态循环"下的σ-ε关系,形式常为 Δσ/2 = K'·(Δεᵖ/2)ⁿ'。配合给定的滞回环规则(如 Ramberg-Osgood 形式),nCode 才能把每一圈循环的塑性应变算准。
Standard EN 引擎的输入通常是有限元的弹性应力结果,但它不会直接拿去查 E-N 曲线——它先用 Neuber 类修正把弹性应力"翻译"成真实弹塑性应变,再去做雨流计数、查 E-N 曲线、累积损伤。这一步"翻译"正是 EN 方法区别于 SN 的灵魂,也是新手最容易漏掉的关键。
这一节是整篇文章的"技术心脏"。很多工程师纳闷:我有限元明明只算了线弹性应力,缺口根部应力早就过千兆帕,按 SN 查表它说永不坏,可实物偏偏裂了——问题就出在弹性应力不能代表真实塑性应变。
线弹性有限元在应力集中处会算出"无限大"的理论应力,现实里材料会屈服,应力被塑性"摊平",但应变却实实在在攒下来了。E-N 方法要的是应变,于是得把弹性解映射到真实的弹塑性状态,这就是 Neuber 修正干的事。
Neuber 假说认为,在缺口根部,弹塑性应力集中系数 Kσ 与应变集中系数 Kε 满足 Kt² = Kσ·Kε(Kt 是理论弹性应力集中系数)。换算到局部量,有 (σ·ε) = (Kt·S)²/E,其中 S 是名义弹性应力、E 是弹性模量。再联立循环应力应变曲线,就能解出真实的局部 σ 和 ε。说人话:用 Kt 把名义应力放大,再用材料的塑性把应力"压"回真实值,多出来的全变成应变。
nCode 给了不止一种修正,别只会用默认的:
Neuber:最经典,对高强钢、脆性材料偏保守;Glinka(能量法):基于总应变能,对塑性较强的材料更合理,常比 Neuber 乐观;Hoffmann-Seeger:考虑循环硬化/软化的改进版,适合有明显循环特性变化的材料。在 DesignLife 的「Neuber Analysis」或 EN 引擎的材料修正选项里,你直接下拉切换即可。经验法则:塑性越强、循环软化越明显,越该考虑 Glinka 或 Hoffmann-Seeger。
举个实在例子:某缺口件名义应力幅 Sₐ=200 MPa,Kt=3,E=210 GPa。弹性"假"应力是 600 MPa,但材料屈服才 350 MPa。经 Neuber 修正后,真实局部应力可能落在 420 MPa 左右,而局部塑性应变幅达到约 0.002。把这个应变喂给 E-N 曲线,得到的寿命可能是几千次——而直接用 600 MPa 应力去查 S-N,软件会告诉你"远低于疲劳极限,无限寿命"。这一正一反,就是选错方法的代价。
平均应力无处不在,但 S-N 和 E-N 处理它的"战场"不一样,这是第二个容易踩坑的点。
前面说过,S-N 用 Goodman/Gerber/Soderberg 把平均应力折算到应力幅上,本质是在应力空间里把不对称循环"拉"成等效对称循环。
E-N 因为盯着应变,平均应力得在应变空间里处理,常用三招:Morrow 修正(用平均应力除以疲劳强度系数,偏保守)、Smith-Watson-Topper(SWT)(用 σₘₐₓ·εₐ 乘积,对拉平均应力很有效)、均方根/其他方法。SWT 参数在存在平均应力且以拉伸为主时特别好用,nCode 的 EN 引擎里可直接勾选。
Walker 提出用指数 γ 加权平均应力与应力幅:σₐ·(σₘₐₓ)^(1-γ)。γ 趋近 1 偏 Goodman,趋近 0.5 偏 Gerber 类。它把应力域和应变域的修正在形式上统一,适合做参数化敏感性分析时一把梭。实际工程里,先判断平均应力大小,再选修正模型,比无脑用默认更靠谱。
讲了这么多理论,落到软件里就是"拖哪个方块"。DesignLife 的 Glyph 流程里,疲劳分析引擎常挂在有限元结果之后,关键选择就两个:Standard SN 还是 Standard EN。
两者都吃有限元结果(ANSYS、ABAQUS、Nastran 等导入的应力/应变时间序列)。区别在于:SN 引擎把应力当真实应力直接计数;EN 引擎把弹性应力先过一道 Neuber 类修正再计数。输入一样的,中间算法天差地别。
第一,导入有限元应力结果,确认单位与载荷步对应;第二,在引擎里选 Standard SN,指定平均应力修正方式(Goodman 等);第三,绑定材料(含 S-N 曲线);第四,设置表面处理、尺寸系数、可靠度等修正因子;第五,运行后看寿命云图与损伤分布。整个过程对网格不那么挑剔,是"先跑一版找趋势"的首选。
第一,同样导入结果;第二,选 Standard EN,勾选塑性修正模型(Neuber/Glinka/Hoffmann-Seeger);第三,材料必须带循环应力应变曲线与 E-N 参数,缺一不可;第四,设置平均应力修正(Morrow/SWT);第五,运行看寿命。EN 对网格更敏感,缺口根部建议加密并做网格无关性验证。
两者都输出寿命(cycles to failure)、损伤(1/life 的累积)、安全系数。建议把 最小寿命节点、最大损伤节点都拉出来,和 SN 结果并排对比——如果两套结果差很多,八成是局部塑性在"捣乱",这时优先信 EN。
方法选对了,材料数据是另一半江山。垃圾进垃圾出,这点在疲劳里格外灵验。
nCode 自带 MaterialsManager,里面大量材料同时存了 S-N 和 E-N(含 CSSC)数据,覆盖钢、铝、钛合金等。调用时直接在引擎里选材料名即可。注意库里同一材料可能有多条曲线,别张冠李戴——看清楚是旋转弯曲、轴向还是扭转数据,载荷模式不对,曲线白给。
S-N 数据来自成组疲劳试样在不同应力水平下的失效循环数统计;E-N 数据则要靠应变控制疲劳试验,测出循环稳定后的滞回环,再拟合 CSSC 与 Coffin-Manson 参数。常用标准如 ASTM E466(轴向疲劳)、E606(应变控制疲劳)。如果你手头只有单调拉伸性能,也能用通用斜率法(Universal Slopes)粗略估算 E-N 参数,但那只是应急,正经报告还得靠实测。
有时只有 S-N 没有 E-N,经验上可借转折寿命 Nᵗ 附近两曲线"交汇"的特性做近似衔接;但别指望精确互推。更稳的做法是:高周段信 S-N、低周段信 E-N,在 Nᵗ 附近两者包络取保守值。
这里顺手提醒一个每年都坑哭新人的低级错误:单位制一致性。疲劳分析里应力单位(MPa 还是 psi)、长度单位(mm 还是 m)、应变(小数还是百分比)必须全程统一。nCode 导入有限元结果时通常带单位,但材料库曲线的单位常常被忽略——库里 S-N 曲线是 MPa,你却按 psi 去理解,寿命能直接错出一个数量级。建议每次建分析前,在 MaterialsManager 里显式核对材料单位并在报告注明。另外 E-N 的应变是无量纲量,若试验给的是百分比(如 0.2%),记得除以 100 再喂给软件。这类"小数点前移两位"的失误,比方法选错还常见。
踩过的坑都是学费,这里把高频"翻车点"摊开讲:
看到这你可能还是想问"到底选哪个"。给你一句口诀:看失效循环数、看局部塑性、看材料数据。下面这张选型矩阵,建议直接存图:
再补一句实战心法:拿不准时,两套都跑一遍。SN 与 EN 结果若一致,说明塑性影响小,放心用 SN 提效;若 EN 明显短命,那塑性就是关键先生,报告里就得用 EN 兜底。别偷懒只跑一个,多花十分钟,少背一个锅。
方法再漂亮,终归要和试验"对账"。不少工程师算完寿命直接出报告,结果台架一上,寿命差出两三倍,尴尬得想钻地缝。疲劳仿真的价值在于定位危险部位、比较方案优劣、给出趋势,但绝对寿命精度终究受材料分散性制约。这里给一套四步验证法,帮你把仿真结果真正"落地"。
如果你手头有少量同类结构的疲劳试验数据,哪怕只有三五根试样,也千万别浪费。把仿真寿命与试验寿命的比值做统计,反推出一个经验修正系数,在 nCode 的分析层级或材料层级挂上去,把"本结构仿真寿命系统性偏长百分之二十"这类结论固化进流程。这比盲信软件默认值靠谱得多,也是企业把仿真"越用越准"的必由之路。
疲劳结果对输入参数极其敏感,但敏感程度天差地别。建议跑一轮参数敏感性扫描:固定其余,单独把表面系数、尺寸系数、平均应力修正模型、Neuber 修正方法各换一遍,观察寿命波动幅度。经验上,局部应力集中与塑性修正是命门,动一下寿命能差好几倍;而材料疲劳极限小幅浮动,影响反而有限。把敏感性排序写进报告,评审一眼就知道结论稳不稳。
疲劳天生是"概率游戏",同一材料同一应力下寿命能散布一个数量级。正规做法是按存活率(可靠性)把曲线下拉:百分之五十存活率给中位寿命,百分之九十、百分之九十七点七、百分之九十九点九则越来越保守。nCode 材料定义里可设可靠性水平,出报告务必标注"本寿命对应百分之九十七点七存活率",否则别人按百分之五十去验收,翻车概率直接翻倍。画一张 P-S-N 分散带比单根线有说服力得多。
实际签报告,建议"仿真定趋势、试验定底线"。仿真帮你定位最危险部位、对比方案;试验或类比成熟产品定最终验收寿命。当 SN 与 EN 都跑、且你拿不准时,取两者更保守者作为设计依据,再叠加一个工程安全系数(常取一点五到三倍循环数),给制造偏差、服役环境腐蚀、偶然过载留出余地。记住:疲劳失效的后果往往是断裂,宁可在报告里保守,也别在事故现场解释为什么算出来"无限寿命"。
讲到这其实还有一个常被忽略的点:SN 与 EN 不是非此即彼,而是可以接力。一个复杂部件,高周区用 SN 快速扫一遍找薄弱面,低周危险点再切 EN 精细算,二者在同一流程里分工协作,既保效率又保精度。nCode 的流程化架构正好支持这种"混合作战",这也是资深工程师和初学者的分水岭。
写到这里,S-N 与 E-N 这对"老对手"的恩怨也大致厘清了。一句话收尾:S-N 管弹性高周、图快图省;E-N 管塑性低周、图准图稳;中间靠 Neuber 翻译,两端靠平均应力修正,选型看循环数、看塑性、看数据。下次在 nCode 里点引擎前,先问自己这三个问题,保你少走两年弯路。如果今天只记住一句话,那就记这句:宁可算两遍、用 E-N 兜底,也别拿弹性假设去赌一个会断的零件。