ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Abaqus金属增材制造44层热-力耦合仿真实战详解

Abaqus金属增材制造44层热-力耦合仿真实战详解 金属打印——也就是金属增材制造——的Abaqus仿真模型一直是仿真分析里比较“磨人”的一类活儿。最近手头正好在搭一个44层金属打印件的热-力耦合模型层数不多不少既有逐层沉积带来的热累积效应又不会像几百层的大部件那样一提交作业就奔着好几天去。这篇就把我的整个拆解过程、模型搭建方法、材料参数设定、热源处理和踩过的坑全部摊开来讲适合刚开始接触增材制造仿真的工程师也适合已经在跑模型但总卡在收敛、算不准或者算不动这个环节的人。按我的理解44层是一个特别好的“试验田”规模能验证你所有热源参数、单元生死逻辑和材料数据又不会让预算和磁盘空间直接爆炸。1. 44层模型的设计思路为什么卡在这个规模1.1 金属打印仿真的核心矛盾金属打印仿真和普通结构仿真最大的不同在于它必须同时处理两个尺度完全错开的现象。激光光斑直径通常只有零点几毫米扫描速度却能到每秒几百到上千毫米而整个打印过程又是逐层累积的一层打印完要等冷却、再铺粉、再打印下一层时间尺度从秒一直拉到分钟级。Abaqus在单个分析里可以处理这种多尺度问题但成本极高所以第一步要想清楚你到底要算温度场还是要算残余应力与变形还是两个都要。我见过不少新手上来就选完全热力耦合分析步Coupled temperature-displacement觉得这样最“真实”。实际上对于44层这种规模完全耦合带来的非线性迭代次数远超顺序耦合而且材料参数如果不准完全耦合的精度优势根本体现不出来。我的做法是采用热-力顺序耦合先用传热分析Heat Transfer把每一层的沉积和冷却温度场算出来再把这个温度场作为预定义场加载到静力分析Static, General中求应力和变形。这样做的好处很直接热分析和力分析是两个独立模型我可以单独检查热源、换热系数和潜热这些热参数是否合理再检查力学参数调试逻辑清楚很多。1.2 44层的工程含义与简化策略44层这个数字不是拍脑袋定的。一个典型试验件如果每层沉积厚度0.8毫米44层叠起来大约35毫米高配合一个50×50×10毫米的基板正好是一个中小尺寸金属打印件的代表。在这个高度上热累积效应已经很明显底部几层散热快、温度梯度大中间层开始出现热量堆积顶部附近则可能出现高温区持续不散的现象这些都会直接影响残余应力和翘曲变形。在建模策略上44层不适合把每一道扫描路径都细致建模到极致也不适合像固有应变法那样完全忽略热历程。我的简化方式是每层内部按实际扫描方向布置移动热源但把扫描道数合并成有限几条热流路径每层划分两个分析步——一个“加热步”模拟热源扫过本层一个“冷却步”模拟本层打印完成后的自然散热。这样44层一共约88个分析步既保留了逐层沉积的物理过程又把计算规模控制在可接受的范围内。实测下来这个简化对温度循环趋势和残余应力分布的影响很小但对收敛速度和计算时长的改善非常明显。2. 材料参数、单位与热物性最容易翻车的一步2.1 Abaqus没有单位制mm制下参数换算先说一个几乎每个新手都会踩的坑Abaqus本身不强制你使用哪套单位制所有输入参数必须自己在脑子里统一。我最常用的是mm-N-s制因为几何模型用毫米建模最方便应力单位正好是MPa。但在这个单位制下材料参数并不是你从手册里查到的SI数值直接填进去就行。以TC4钛合金为例手册上密度是4420 kg/m³但是mm制下密度的单位是t/mm³需要换算成4.42e-9 t/mm³。很多人在这一步出错填成4.42e-6或者4420结果整个模型的质量、热容和惯性效应全部离谱。热导率在mm制下单位是mW/(mm·K)数值上倒是和W/(m·K)一致所以TC4室温热导率7.4直接填7.4就行。最容易搞混的是比热容mm制下单位是mJ/(t·K)TC4的560 J/(kg·K)换算过来是5.6e8 mJ/(t·K)。我第一次跑的时候就是忽略了这里的换算导致热分析升温异常缓慢检查了很久才发现是单位制的问题。总结一下我常用的换算表方便你直接对照参数SI制单位mm-N-s制单位换算关系长度mmm1 m 1000 mm质量kgt1 kg 1e-3 t密度kg/m³t/mm³数值除以1e9力NN不变应力PaMPa数值除以1e6热导率W/(m·K)mW/(mm·K)数值不变比热容J/(kg·K)mJ/(t·K)数值乘以1e6热膨胀系数1/K1/K数值不变潜热J/kgmJ/t数值乘以1e32.2 热物性参数的温度依赖性设定金属打印的温度跨度极大从室温20°C一直到材料熔点以上材料参数绝不能填常数。特别是热导率、比热容和热膨胀系数这三项温度依赖会让温度场的计算产生明显差异。TC4的导热率在室温附近大约7.4 W/(m·K)到1000°C会爬升到25 W/(m·K)左右如果不区分温度热影响区范围和冷却速率都会失真。Abaqus里设定温度依赖的方法很简单在材料模块里选择Conductivity、Specific Heat、Expansion这些卡片把温度和对应的参数值做成表格即可。注意比热容的输入单位要和你选定的单位制一致同时我习惯把温度点覆盖到比熔点稍高的范围比如到1700°C避免计算中温度超出表格范围后出现外插导致的异常行为。另外高温下材料的弹性模量和屈服强度也建议一并输入。静力分析阶段残余应力计算高度依赖高温屈服强度如果屈服强度设置过高算出来的残余应力必然偏大设置过低又会导致变形过计算。TC4的屈服强度在室温下约950 MPa到800°C以上会急剧降低到一两百MPa这些数据要尽量从文献或材料商手册里找到实测曲线别自己去猜。2.3 潜热与换热边界条件熔化潜热是金属打印仿真里必须处理的一个非线性源项。TC4的熔化潜热大约是365 kJ/kgAbaqus处理它的方式是定义固相线温度、液相线温度以及潜热值。我的做法是把固相线设在1620°C液相线设在1660°C潜热输入时注意单位制SI制是365000 J/kgmm制下是3.65e8 mJ/t。潜热不设置的话熔池附近温度会虚高冷却曲线也会不对后期力学分析继承的温度场自然就偏了。换热边界条件也要分层处理。基板底部通常是和打印机工作台接触可以设置一个较大的换热系数甚至直接设成恒定温度边界来模拟工作台的热沉打印件外表面则设置自然对流换热系数一般取5-20 W/(m²·K)同时考虑辐射散热。Abaqus里的辐射用Surface Film Condition配合Stefan-Boltzmann实现也可以在Surface Film Condition里选择“Including Radiation”直接配置发射率。TC4表面发射率在高温下大约0.4-0.7我一般取0.5作为初值后续根据温度场对比实测再调。3. 热源模型与逐层激活核心实现3.1 高斯体热源与双椭球热源的选择热源模型是金属打印仿真里最核心的简化点也是影响温度场分布的关键。很多教材里会用高斯面热源认为激光能量只作用于表面但实际打印过程中能量在材料内部有一个穿透深度所以体热源往往更接近真实。工程上比较常用的是高斯体热源热流密度沿深度方向衰减公式大致是q(x,y,z) (3Pη) / (πR²d) × exp(-3(x²y²)/R²) × exp(-3z/d)其中P是激光功率η是材料对激光的吸收效率R是有效光斑半径d是热源穿透深度。这个公式的好处是参数少、标定起来方便也比较好写进DFLUX子程序。如果你要更精细地模拟熔池形貌可以用双椭球热源模型前半球和后半球的能量分布不同能更准确地反映移动热源前方的陡峭温度梯度和后方的拖尾热影响区。双椭球模型参数更多需要定义前后半轴长度和能量分配系数标定工作量相应增加。对于44层这个规模我认为高斯体热源已经足够双椭球更适合单道熔池形貌研究。3.2 用DFLUX实现移动热源在Abaqus里实现移动热源绕不开DFLUX子程序。子程序的逻辑并不复杂当前积分点的坐标判断它是否落在热源作用范围内然后在对应的时间段内赋予热流密度值。我的做法是定义一个时间区间表示热源经过当前层的扫描时间在这个区间内热源中心沿扫描路径匀速移动将当前积分点到热源中心的径向距离代入热源公式。给你一个简化但可用的DFLUX框架我用Fortran写的注意这是示意代码实际使用时要根据你的扫描路径几何修改SUBROUTINE DFLUX(FLUX,SOL,KSTEP,KINC,TIME,NOEL,NPT, COORDS,JLTYP,TEMP,PRESS,SNAME) C INCLUDE ABA_PARAM.INC C DIMENSION FLUX(2),COORDS(3),TIME(2) C DOUBLE PRECISION P, ETA, R0, D, X0, Y0, Z0, RR DOUBLE PRECISION XC, YC, VS, T_START, T_END, Q, DEPTH C P 200.0 ETA 0.4 R0 0.6 D 0.9 VS 800.0 C T_START 0.0 T_END 1.2 IF (TIME(2).GE.T_START .AND. TIME(2).LE.T_END) THEN C 当前层扫描起点坐标 XC 0.0 YC 0.0 C 热源中心随时间沿X方向移动 X0 XC VS * (TIME(2) - T_START) Y0 YC Z0 0.0 RR SQRT((COORDS(1)-X0)**2 (COORDS(2)-Y0)**2) Q (3.0*P*ETA) / (3.1415926*R0*R0*D) * EXP(-3.0*RR*RR/(R0*R0)) * EXP(-3.0*ABS(COORDS(3)-Z0)/D) FLUX(1) Q ELSE FLUX(1) 0.0 ENDIF C RETURN END这个框架里时间判断用的是TIME(2)也就是当前增量步的累计时间每个分析步都会被重置。实际多层的做法是把T_START和T_END按层的沉积时间平移再用一个变量判断当前是哪一层或者干脆每个层对应一个独立的加热分析步步内热源只在当前层高度上作用。后者更简单我推荐新手先这样干。3.3 单元生死的操作细节单元生死也就是Abaqus里的Model Change是逐层沉积仿真的另一半核心。基本思路是初始状态下所有打印层的单元都处于“未激活”状态它们不参与传热也不参与受力然后在每一层的加热步开始时把这一层的单元激活。在Abaqus/Standard里这个操作需要在Input文件的对应分析步中用*Model Change, Add语句或者在CAE的Interaction模块里设置Model Change交互。我要提醒几个容易翻车的细节。第一单元初始状态要在第一步之前就Remove掉也就是第一个分析步里先把所有打印层单元移除第二热分析和力分析的单元生死必须同步比如第10层激活时传热分析里要激活静力分析里对应分析步也要激活否则温度场算完了但力学模型里这一层还是“空”的应力结果必然错第三被激活的单元温度场初始值要合理设置在热分析里新激活的单元通常没有上一步的温度历史Abaqus会按当前分析步的初始温度处理所以要把当前时刻的周围温度场继承过来做法是在预定义场里指定激活单元的温度为前一步的熔池邻近温度否则会出现温度断层。4. 网格、分析步与计算成本控制4.1 网格过渡与热源分辨率金属打印仿真的网格策略只有一个原则热源作用区域必须足够密远离热源的区域尽量粗。44层模型里每层高度只有0.8毫米左右如果全部用0.1毫米的六面体单元单元数量会直接冲到百万级根本跑不动。我的做法是把每层在厚度方向保证至少两层单元扫描路径两旁的热影响区范围内网格尺寸控制在0.2-0.3毫米基板中心厚厚的区域用5毫米左右的粗网格两者之间用从粗到细的过渡网格衔接。Abaqus的六面体网格过渡可以自动处理但建议先用 Partition 把网格区域切出来避免过渡单元畸形。对于非热源区的基板我会用线性减缩积分单元C3D8R做力学分析但热分析里减缩积分单元容易产生积分点稀疏的问题所以热分析模型干脆就用C3D8单元。如果你怕麻烦热和力模型都用C3D8R也能跑只要别在热梯度特别剧烈的区域出现明显的锯齿状等温线就行。4.2 时间步控制与质量缩放热分析的时间步控制直接决定整个模型能不能算完。金属打印的表面热流密度极大热源扫过的一瞬间表面单元的温度可能在一毫秒内上升上千度所以加热步的初始增量步必须很小。我的经验是加热步的初始增量步设为热源经过一个单元所需时间的十分之一左右比如单元长度0.3毫米、扫描速度800毫米每秒热源扫过一个单元约0.375毫秒那初始增量步就取0.03-0.04毫秒。计算机会自动调整增量步但如果初始值给得太大非线性迭代很容易反复失败。冷却步的时间步可以放开一些因为此时没有移动热源只有对流和辐射散热温度场变化相对平缓。冷却步的固定增量步我一般设到1-2秒每个冷却步算30-50个增量步即可。注意不要在一个冷却步里用过大增量步否则冷却曲线上的转折点会丢失叠加到下一层加热时的初始温度场就不准了。4.3 44层模型的计算量评估说句实在话44层的顺序耦合模型即使做了以上简化也不是一个“秒出结果”的模型。我做过的典型规模是每层约8000个单元44层加上基板共约15万单元、25万节点。热分析每层加热步约100个增量步、冷却步约40个增量步44层累计约6000个增量步静力分析步的增量步数和热分析步对应。在8核16线程的机器上这样规模大概需要跑12-20个小时。如果你觉得时间长可以考虑启用Abaqus的多核并行并在Job模块里把并行参数里“Number of domains”设为CPU核数非线性分析里 Domain 并行比 Thread 并行对内存友好一些。如果时间实在紧张还有一个折中方法前20层用较小的冷却步精确计算后24层把冷却时间适当压缩用更大的增量步做“准稳态”处理。这样能牺牲一些高层的冷却细节但整体残余应力趋势不会偏太多。适合方案比选阶段用。5. 实操过程从零搭建44层模型5.1 几何与分区把44层拆出来我在Abaqus/CAE里建44层模型第一步不是画网格而是做几何分区。打印件本身很简单比如一个40×10×35.2毫米的薄壁件每层0.8毫米。关键在于用Partition功能在厚度方向切出44层每一层都对应独立的Cell这样后续网格划分、单元集合定义和Model Change操作都会方便很多。基板我单独建一个Part尺寸定为60×60×10毫米材料同样用TC4但不需要分区。基板和打印件之间用Tie约束绑定在实际打印中它们是一体的但在网格划分阶段是分开的PartTie约束可以保证热和力都能连续传递。将44层全部切出来后每一层都定义一个Set命名比如Layer_01到Layer_44。这些Set在后面Model Change和预定义场里会反复用到名字规范能让你省掉很多找错集合的时间。5.2 材料、分析步与载荷装配顺序材料定义部分我通常先定义热学参数导热率、比热容、潜热都是温度相关的表格再定义力学参数弹性模量、泊松比、屈服强度、热膨胀系数。注意TC4塑性阶段建议用等向硬化模型设置几个温度点上的屈服应力和塑性硬化斜率就够了不需要复杂的子程序。分析步的装配顺序是整个模型能跑通的关键。我习惯在第0步Initial之后先放一个“全局移除打印层”的传热分析步这一步里把所有Layer集合全部Remove然后进入第一层的加热步Add Layer_01并加载DFLUX热源接着一个第一层冷却步然后第二层加热步Add Layer_02同时加载DFLUX如此循环到第44层。力学模型的分析步顺序类似只是把DFLUX替换成温度场预定义场加载并且在对应层激活时才Add该层单元。这里需要注意Abaqus/Standard中一个分析步里只能有一个“Model Change”操作所以每一层加热步的开头都要单独加一个Model Change来添加当前层单元不能把44层一次性全Add进去。5.3 边界条件与初始条件边界条件这块力学模型相对简单基板底面施加固支约束或者约束底面所有节点的三个平动自由度。有些模型为了更真实地模拟打印过程只在基板四角约束但结果差异不大我建议做固支后处理时对比实验测量值更方便。热学模型的初始条件要特别注意。打印前整个模型处于环境温度一般设为20°C或25°C。但每激活一层新单元时Abaqus默认这些新激活单元没有温度历史你需要用预定义场把当前层的温度初始值设置合理。我的做法是在每一层激活后、热源加载前给这一层单元施加一个“瞬态初始温度”取该层下方相邻层的当前平均温度这样能避免新单元一出现就吸热、导致温度场突变。换热边界的设置我放在基板底面和外表面。底面用较大的表面换热系数比如100 W/(m²·K)模拟与工作台的接触导热外表面用自然对流对流换热系数5-15 W/(m²·K)并叠加辐射散热发射率0.5。注意换热面是动态变化的打印过程中新激活单元的顶面和侧面也要参与散热所以在热分析里需要对所有Layer的外表面统一设置Surface Film Condition而不是只设置在基板上。5.4 作业提交与结果初看提交计算前我最少检查三样东西第一热分析模型里每一层的DFLUX时间窗口是否正确避免出现热源扫到第10层时第12层单元也被加热第二Model Change的Add顺序是否和层序号一致力学模型和热模型的添加顺序也要一致第三预定义场的温度单位、分析步对应关系是否匹配尤其是顺序耦合时从热模型继承的是ODB里的温度场别把热模型的增量步名称弄错。计算完成后第一件事是看温度场分布。把最大温度输出打开观察每个加热步峰值温度是否在合理范围。金属打印的熔池峰值温度一般在2000-2500°C左右如果算出来五六千度大概率是热源功率或吸收效率设置过高。温度场合理之后再看残余应力——取模型沿高度方向的中轴路径输出S11、S33的分布曲线正常情况下表面附近是拉应力内部是压应力整体呈现一个自平衡状态。如果应力符号整体反了多半是热膨胀系数符号或约束方向出了问题。6. 常见问题与排查技巧实录6.1 热分析不收敛增量步一减再减热分析不收敛的典型现象是增量步从设定值不断缩小最后跌到10的负十几次方分析基本就卡死了。我遇到这种问题的第一排查项是潜热设置。潜热导致材料在固液相变温度附近出现一个“能量缓冲区间”如果这个区间的温度范围设置太窄Abaqus需要极小的增量步才能迭代过相变点。把固液相线温度差拉开一些比如从40°C差扩大到80°C收敛性会明显改善对结果影响也可以接受。第二个常见原因是辐射边界设置不当。表面辐射的发射率如果设置太高或者斯蒂芬-玻尔兹曼常数在单位制下搞错冷却速率会异常温度跌得特别猛增量步也会被迫缩小。检查一下稳态阶段的温度下降曲线是否合理如果冷却得太快就降低发射率或对流系数。6.2 力学分析中单元过度变形层激活后的力学分析偶尔会提示单元过度变形或负特征值原因通常是激活单元的初始温度场和当前分析步温度梯度差异过大导致单元瞬间承受极不均匀的热应变。解决办法是细化新激活单元的温度初始值别让相邻层之间存在一个突然的几千度温差。还有就是网格质量打印层厚度方向上的单元高宽比如果超过5在温度梯度大时也很容易畸变我会优先把每层在高度方向切成两到三层单元。6.3 结果不合理温度过高或应力异常温度峰值过高的原因集中在热源参数上吸收效率η取太高是最常见的。不同材料对激光的吸收率差别很大TC4在室温下对近红外激光的吸收率只有0.3-0.4但在熔池形成后会升高到0.5甚至更高。如果你的计算峰值温度持续偏高可以先把吸收率降到0.25左右试算再结合实测熔池宽度微调。残余应力异常则要检查材料屈服强度曲线是否正确另一处值得注意的是基板约束方式固支约束过强会把热应力全部锁在板上算出的打印件残余应力会比实际偏小。6.4 计算时间失控如果你发现44层模型跑了一晚上才算了2层就别硬跑了。先把热分析单独提出来做单层测试一个最简单的单元模型验证热源参数和换热系数是否正确再跑一个3-5层的小模型看温度场趋势是否合理。小模型跑通后再铺到44层这样能把大部分参数错误挡在小规模阶段。我的时间分配习惯是单层标定占20%时间5层验证占30%时间44层正式计算占50%时间。别一上来就冲44层否则返工成本太高。再说一个小技巧如果热分析的计算时间集中在加热步可以把扫描路径的加载方式从“逐积分点移动热源”改成“层内均匀热流密度”也就是一个分析步里把当前层所有单元同时施加热流。这样计算速度能提升一个数量级但温度场细节会丢失一部分。我一般只用它来做残余应力的快速预判最终结果还是用移动热源版本。最后分享一点个人习惯无论做多少层我都会同步输出每层最高温度随层数的变化曲线这是一条特别有用的诊断曲线。如果曲线在中间某层出现突然的跳变说明那一层的换热边界或热源时间设置有bug如果曲线顶部平台期太长说明热累积比预期严重可能需要调大冷却时间。44层这个规模刚好能让你看清这些趋势又不会让你调参一次等太久。做增材制造仿真参数标定永远比模型大小更重要模型再大材料参数是错的结果也只是精致的垃圾。
返回列表