4. 应力场模拟:有限元方法、热力耦合分析、生死单元技术
各位工程师朋友,咱们今天聊聊应力场模拟。说实话,SLM过程中最让人头疼的就是热应力。我见过太多因为应力控制不好导致的开裂、翘曲,甚至整炉报废。所以这一节,我把自己这些年摸爬滚打的经验,结合有限元方法、热力耦合分析、生死单元技术,给你掰开揉碎了讲清楚。
4.1 有限元方法:SLM应力模拟的基石
有限元方法,说白了就是把一个连续体切成无数个小块,然后挨个算。你想想看,一个激光扫描路径那么复杂,温度场、应力场都在剧烈变化,不用有限元根本算不了。
我个人习惯用ANSYS或者Abaqus来做SLM的应力模拟。核心思路是这样的:
- 几何建模:建立粉末床和基板的三维模型。注意,粉末层厚度通常取20-50μm,基板厚度取5-10mm就够了。
- 网格划分:扫描路径附近要加密,远离的地方可以粗一些。我建议热源作用区域网格尺寸控制在10-20μm,基板部分可以放到0.5-1mm。
- 边界条件:基板底部固定,四周自由。热边界条件包括对流和辐射,对流系数取10-30 W/(m²·K),辐射率取0.3-0.5。
- 材料属性:这个最关键。粉末态和固态的导热系数、比热容、弹性模量、热膨胀系数都不一样。我一般用JMatPro算出来,再输入到有限元软件里。
重要提醒:材料属性随温度变化很大,尤其是高温段。比如316L不锈钢,从室温到1400℃,弹性模量从200GPa降到50GPa。如果你用常数,算出来的应力会差30%以上。
4.2 热力耦合分析:温度场和应力场怎么互相影响
热力耦合,就是温度场和应力场互相影响。温度变化导致热膨胀,热膨胀产生应力,应力反过来又会影响材料的导热性能。嗯,这里要注意,SLM过程中热力耦合是单向的——温度场主导,应力场跟随。所以我们一般用顺序耦合:先算温度场,再把温度结果作为载荷算应力场。
具体步骤我总结了一下:
- 热分析:用移动热源模型(高斯体热源或双椭球热源)模拟激光扫描,得到每一时刻的温度分布。
- 应力分析:把温度场作为体载荷,施加到结构单元上,计算热应力和变形。
- 更新材料状态:根据温度判断材料是固态、液态还是粉末态,更新相应的力学属性。
我在项目中遇到过一个问题:热分析步长设得太小,导致计算时间爆炸。后来我学乖了,激光扫描阶段用0.1ms步长,冷却阶段用1s步长,效率提升了好几倍。
小技巧:热力耦合分析中,建议先做热分析,保存所有时间步的温度结果。然后做应力分析时,直接读取温度文件。这样万一应力分析出错了,不用重新算热分析。
4.3 生死单元技术:模拟粉末→固态的转变
生死单元技术,是SLM模拟里最核心的技巧之一。为什么?因为粉末在没被激光扫描之前,是松散的,几乎不传递应力。只有被激光熔化再凝固后,才变成固体,参与应力传递。
具体做法是这样的:
- 初始状态:所有粉末层单元都是“死”的,刚度矩阵乘以一个极小系数(比如1e-6),不参与计算。
- 激活条件:当激光扫描到某个单元时,根据温度判断——如果温度超过熔点,就把这个单元“激活”,恢复正常的材料属性。
- 凝固过程:激活后的单元从液态冷却到固态,热膨胀系数从零逐渐恢复到正常值。这个过渡过程很关键,处理不好会导致应力突变。
我曾经犯过一个错误:把单元激活温度设得太低,结果粉末还没完全熔化就被激活了,算出来的应力完全不对。后来我改成:温度超过液相线温度+50℃才激活,留出足够的熔化窗口。
避坑指南:生死单元技术中,激活的单元不能一下子全部加载温度。我建议分三步:第一步,激活单元并赋予初始温度(熔点附近);第二步,施加激光热源;第三步,冷却到室温。这样应力过渡更平滑。
4.4 一个完整的模拟流程示例
下面我给你展示一个简化版的APDL代码片段,演示热力耦合+生死单元的核心逻辑:
! 热分析阶段
/PREP7
ET,1,SOLID70 ! 热单元
MP,KXX,1,15 ! 固态导热系数
MP,KXX,2,0.2 ! 粉末态导热系数
! 生死单元设置
EKILL,ALL ! 初始全部杀死
*DO,I,1,NUM_LAYER
ESEL,S,,,LAYER_I ! 选择当前层
EALIVE,ALL ! 激活当前层单元
NSLE,S ! 选择节点
D,ALL,TEMP,TMELT ! 设置初始温度
! 施加移动热源
*DO,J,1,NUM_STEP
SF,ALL,HFLUX,QS ! 热流密度
SOLVE
*ENDDO
*ENDDO
! 应力分析阶段
/PREP7
ETCHG,TTS ! 热单元转结构单元
MP,EX,1,1.93E11 ! 弹性模量
MP,ALPX,1,1.6E-5 ! 热膨胀系数
! 读取温度场
LDREAD,TEMP,,,TIME ! 每个时间步读取温度
SOLVE
这段代码虽然简单,但核心逻辑都在里面了。实际项目中,你还需要考虑扫描路径、层间旋转、支撑结构等因素。
4.5 应力场模拟的常见问题与对策
| 问题 | 原因 | 对策 |
|---|---|---|
| 计算不收敛 | 网格畸变、材料属性突变 | 使用ALE网格、平滑材料过渡 |
| 应力结果偏大 | 忽略了粉末的应力释放 | 设置粉末单元为低刚度 |
| 温度场不准 | 热源参数不合适 | 用熔池尺寸标定热源参数 |
| 计算时间太长 | 时间步太小、网格太密 | 自适应时间步、局部网格加密 |
我个人习惯在模拟前先做一次网格敏感性分析。比如分别用10μm、20μm、50μm的网格算同一个模型,看看应力结果差异。如果20μm和10μm的结果差不到5%,那就用20μm,省时间。
4.6 知识体系总览
下面这张图,是我自己总结的应力场模拟知识体系。你一看就明白各个技术之间的关系了。
你看,有限元方法是基础,热力耦合分析是核心逻辑,生死单元技术是SLM特有的实现手段。三者缺一不可。
最后说一句:应力场模拟不是算完就完事了。我每次算完都会和实际打印的零件做对比——比如用DIC测量变形,用XRD测残余应力。只有模拟和实验对得上,你才敢用模拟结果去优化工艺参数。这个习惯,我一直保持到现在。
公众号:蓝海资料掘金营,微信deep3321