ARTICLE DETAIL

资讯详情

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

生死单元技术详解:ANSYS APDL焊接仿真命令流实战

生死单元技术详解:ANSYS APDL焊接仿真命令流实战 做焊接有限元分析的人几乎绕不开生死单元这四个字。说得直白点生死单元就是ANSYS APDL里的一组控制命令——EKILL把单元杀死、EALIVE把单元激活配合移动热源就能把焊接过程中焊缝金属逐渐填充、熔池移动、热量扩散、冷却收缩这一整条物理链条还原出来。我最早用这个技术是给一套厚板多层多道焊做残余应力评估前前后后改了好几版命令流才把计算稳定性和精度调到能用的水平。这篇文章把整个思路和可直接改用的命令流模板整理出来覆盖从原理、参数、建模、求解到后处理的完整链路也把我踩过的坑一并交代清楚。适合刚开始做焊接仿真、或者被APDL命令流折磨得想放弃的朋友。1. 为什么焊接模拟绕不开生死单元1.1 焊接模拟到底要还原什么焊接过程从物理上看很直接一个集中热源沿着焊缝移动把局部金属迅速加热到熔点以上形成熔池焊丝或者焊条不断送进熔池形成新的焊缝金属热源离开后熔池快速凝固、冷却体积收缩整个构件经历剧烈的局部加热和冷却循环最后在结构内部留下残余应力和变形。这里面有两个关键点是一般结构分析不会遇到的。第一材料的无中生有。焊缝金属不是一开始就存在的它是随着焊接过程一点一点填进去的。如果从一开始就把焊缝单元放在模型里那热还没加到焊缝就已经在那里参与导热和承载了物理过程完全是错的。第二热源是移动的。同一位置经历的是快速升温—维持高温—快速冷却这样的热循环曲线加载方式必须是动态的。生死单元就是为第一个问题准备的先把焊缝区域对应的单元全部杀死EKILL让它们在初始阶段不参与计算随着热源推进再把当前覆盖到的焊缝单元逐段激活EALIVE让材料在这个时间点真正出现。实际项目里这两个命令配合时间步和热生成率就能把动态焊接过程比较真实地模拟出来。1.2 生死单元的数学本质与计算机制很多人第一次用生死单元时会有个误解以为EKILL就是把单元删了。不是。ANSYS里的杀死单元并不会把单元从模型中移除而是把它的贡献从总体矩阵里抹掉刚度或者导热矩阵乘以一个极小系数默认是1e-6同时把单元的质量、热容、载荷都置零。反过来EALIVE的时候单元从死亡状态恢复重新参与计算。这个机制有个很大的好处整个求解域的节点编号和单元编号从头到尾不变。你不需要重划分网格、不需要重新编号、不需要做网格映射只需要按顺序把单元复活就行。这在热-结构耦合分析里特别省心因为温度结果文件里的节点编号始终对应同一个几何位置后面读温度载荷时完全对得上。但也要注意死亡单元并不是完全消失了。它对应的节点还在模型里自由度还存在于总体矩阵中只是贡献被压小了。如果这个极小系数给得太大死单元会漏热或者漏刚度如果给得太小矩阵可能出现病态。不过实际使用中默认值1e-6在绝大多数焊接模拟里够用了我一般只有在热分析出现异常漏热时才把它调到1e-8。还有一个经常被忽略的点EALIVE激活单元时单元默认是初生状态也就是说它没有继承之前的应变历史。在结构分析中被激活的焊缝单元初始应变为零这正好符合我们的物理直觉——焊缝金属刚填进去的那一刻确实还没开始受力。1.3 什么场合该用、什么场合别硬用生死单元的核心应用场景是材料随过程增加或减少。焊接填充、多层多道焊逐层堆叠、增材制造逐层成形、混凝土分层浇筑、基坑开挖回填这类问题都适用。增材制造这几年很热本质上和焊接的分层激活逻辑是一样的只是每层更薄、道次更多。反过来如果问题里不涉及材料增减只是表面移动热源在固定实体上扫过那就不需要生死单元只要在表面上施加移动热流密度比如高斯热源就够了。很多人一上来就杀单元、活单元把自己搞晕其实先想清楚物理过程中到底有没有材料的出现/消失可以少走很多弯路。另外要提醒的是生死单元解决不了熔池流动问题。如果研究目标是熔池内部的流场、气孔、熔深精确形貌APDL不是合适的工具那应该用流体仿真软件。APDL擅长的是热循环、温度场、残余应力和变形这类宏观尺度分析这个定位要清楚。2. 前处理的门道材料、单元、网格分组2.1 单元选型与热-结构耦合路线焊接模拟最常用的路线是先热后力的间接耦合法先用热单元算出整个焊接过程的瞬态温度场再把节点温度作为体载荷读入结构分析算出应力应变和残余应力。热分析推荐用SOLID708节点六面体热单元如果网格里有大量四面体可以用SOLID87。结构分析推荐SOLID1858节点六面体高阶的可以用SOLID186。常规做法是先建立模型做热分析算完之后在/PREP7里执行ETCHG,TTS命令把SOLID70自动转换为SOLID185再定义结构材料参数读入温度结果求解。有人会问为什么不用SOLID226、SOLID227这种耦合单元一步到位直接法理论上可以但焊接模拟的时间尺度跨度太大热分析需要小时间步捕捉快速升温结构分析又不希望步长太小浪费计算量两者混在一起很容易把一个模型算到天荒地老。间接法灵活两个过程可以分别控制求解策略实际项目里我基本都用间接法。2.2 高温材料参数与潜热处理焊接模拟的结果可靠性一半以上取决于材料参数给得对不对。导热系数KXX、比热容C、密度DENS是热分析最基本的三个参数。它们都必须随温度变化钢在室温下导热系数大概50 W/(m·K)左右随着温度升高逐步下降比热容随温度上升而增大。这里有个坑600°C到800°C区间很多钢会发生相变比热容曲线会有一个明显的鼓包这是相变潜热在比热上的表现。如果你手头材料参数表里恰好有这个鼓包说明数据源比较专业如果没有建议用MPDATA,ENTH定义温度相关焓值来考虑潜热。具体命令是这样的MPTEMP,1,20,200,400,600,800,1200,1500 MPDATA,KXX,1,1,51.9,48.6,44.2,39.6,34.1,29.7,29.7 MPDATA,C,1,1,460,500,560,630,670,660,660 MPDATA,DENS,1,1,7850,7830,7790,7740,7690,7580,7580 MPDATA,ENTH,1,1,0,9.2E7,1.9E8,3.0E8,4.2E8,5.3E8,7.8E8,8.2E8结构分析的材料参数同样关键尤其是高温段。弹性模量EX在接近熔点时必须给得很低比如1200°C时只能给到室温的几十分之一热膨胀系数ALPX随温度升高略有增加屈服强度在高温段急剧下降需要用TB,BISO定义随温度变化的双线性等向强化模型。温度相关材料参数建议一次给到位省得后面反复改。实测数据显示高温段参数给不准残余应力结果可以偏差20%以上。还有个单位制的坑必须单独说。APDL不强制单位全靠自己统一。热分析推荐用国际单位m, kg, s, K, W, J应力输出是Pa虽然数值看起来很大但只要统一就没事。如果嫌应力单位不舒服想用mm单位制那密度要换算成t/mm³导热系数要换算成W/(mm·K)比热要换算成J/(t·K)非常容易算错。我最开始自学时就在这里翻过车温度场算出来整体偏高查了半天才发现是单位制混了。2.3 网格尺寸、焊缝分组与时间步的匹配焊接模拟的网格策略就一句话焊缝及其热影响区加密远离焊缝的母材可以放松。焊缝区通常划分到1mm到4mm量级的单元母材可以放松到10mm甚至20mm。但网格尺寸不能只看几何和精度它和焊接速度、加载时间步是强耦合的。一个基本的关系是热源从当前单元组移动到下一组的时间等于组长度除以焊接速度。这个时间必须分成若干个时间步来求解否则热源就是跳着走温度场会出现明显的锯齿状波动。我的经验是每个组至少分8到20个子步。分组越细热源的移动越平滑但计算量也越大。焊缝长度20cm、组宽1cm那就是20组每组10个子步再加上冷却时间一次热分析大概要算200到300个时间步网格如果控制在几万个单元普通工作站几小时能跑完。这个规模是合理的。焊缝分组我习惯用组件CM来管理而不是直接用单元号区间。焊接方向是直线的时候可以按单元质心的X坐标来分选把每段焊缝的单元放进一个组件里。这样后面激活、加载热源都是对组件操作逻辑非常清晰也不容易选错。3. 核心命令流逐段拆解焊接温度场实战3.1 建模与分网命令流示例下面这套命令流是一个焊接温度场分析的基础框架。先看参数区和建模部分! ! 参数区几何尺寸、工艺参数 ! 单位制m, kg, s, K, W, J ! PL_L 0.20 ! 母材长 200mm PL_W 0.10 ! 母材宽 100mm PL_T 0.010 ! 母材厚 10mm WELD_W 0.008 ! 焊缝宽 8mm WELD_H 0.004 ! 焊缝高 4mm ! 焊接工艺 ARC_EFF 0.80 ! 电弧热效率 ARC_U 24.0 ! 电压 V ARC_I 180.0 ! 电流 A WELD_V 0.005 ! 焊接速度 m/s ! ! 前处理 ! /PREP7 ET,1,SOLID70 ! 母材和焊缝两个体 BLOCK,0,PL_L,0,PL_W,0,PL_T BLOCK,0,PL_L,PL_W/2-WELD_W/2,PL_W/2WELD_W/2,PL_T,PL_TWELD_H VGLUE,ALL ! 网格控制 ALLSEL ESIZE,0.004 MSHAPE,1,3D MSHKEY,0 VMESH,ALL这里把母材和焊缝建成两个体再用VGLUE粘起来是为了后面能按体去控制网格密度。实际项目里焊缝形状如果是坡口可以再细分几个体逻辑是一样的。建模完之后最重要的一步是焊缝单元分组。! ! 焊缝单元按X方向分20组 ! NW 20 SEGLEN PL_L / NW *DO,I,1,NW XMIN (I-1)*SEGLEN XMAX I*SEGLEN ESEL,S,CENT,X,XMIN,XMAX NSLE,S CM,WELD_%I%,ELEM ALLSEL *ENDDO用ESEL加CENT选单元质心坐标的方式把焊缝长度方向切成段每段生成一个组件。组件名带编号后面循环里可以用CMSEL,S,WELD_%I%直接选中对应的那一段焊缝单元这是整套命令流能循环起来的关键。3.2 EKILL/EALIVE的正确打开方式单元分组完成后先不要急着求解要把所有焊缝单元在初始状态杀死*DO,I,1,NW CMSEL,S,WELD_%I% EKILL,ALL ALLSEL *ENDDO注意顺序先选中某一组EKILL然后ALLSEL恢复全选再选下一组。如果漏了ALLSEL选择集合会层层嵌套后面组件可能选不全或者误杀别的单元。这是新手最容易犯的错误。进入求解阶段后在焊接循环里激活当前组/SOLU ANTYPE,TRANS TRNOPT,FULL SOLCONTROL,ON NROPT,FULL,,ON LNSRCH,ON AUTOTS,ON ! 初始温度 IC,ALL,TEMP,25 ! 初始微小时间步 TIME,1E-4 NSUBST,1 SOLVE ! 焊接循环 STEP_TIME SEGLEN / WELD_V QH ARC_EFF * ARC_U * ARC_I / (WELD_W * WELD_H * SEGLEN) *DO,I,1,NW ! 激活当前组焊缝单元 CMSEL,S,WELD_%I% EALIVE,ALL ALLSEL ! 当前组施加热生成率 CMSEL,S,WELD_%I% BF,ALL,HGEN,QH ALLSEL ! 求解当前步 TIME,I*STEP_TIME NSUBST,8,20,4 SOLVE ! 移出热源进入冷却 CMSEL,S,WELD_%I% BFDELE,ALL,HGEN ALLSEL *ENDDO ! 焊后冷却 TIME,NW*STEP_TIME 600 NSUBST,20,50,10 SOLVE FINISHEALIVE之后紧跟ALLSEL是为了避免后面BF加载时选择集合还停留在焊缝组件上。施加热生成率用BF,ALL,HGEN,QH热源离开后立刻用BFDELE删掉这样该组单元进入散热冷却状态而已经激活的焊缝金属会继续参与后续导热。这个写法是最经典的一组逻辑杀光—逐步激活—逐步加热—逐步冷却。3.3 移动热源怎么加载HGEN体热源方案热源模型的选择直接决定温度场形态。工程上最常用的是等效体积热源HGEN就是把电弧能量按体积平均转化成焊缝区域的体积生热率。前面命令流里QH ARC_EFF * ARC_U * ARC_I / (WELD_W * WELD_H * SEGLEN)这个公式的物理含义是热效率0.8、电压24V、电流180A时电弧输入功率是0.8乘24乘180约3456W。这部分功率被分配到当前激活的那一段焊缝体积里。焊缝宽8mm、高4mm、段长10mm体积是3.2e-7 m³QH大约1.08e10 W/m³是个非常大的数字别被吓到因为作用时间极短。等效体积热源的好处是简单、稳定、容易收敛能比较好地预测远离熔池的温度场和热循环曲线。缺点是熔池附近的温度分布比较平均无法精确模拟熔池形状。如果项目要求更高精度可以上高斯表面热源或者Goldak双椭球热源但那些用APDL实现要复杂得多一般先跑等效热源验证整体流程需要时再升级热源模型。有一点必须注意QH加载在当前激活焊缝组上激活组的长度就是热源的作用范围。所以分组长度不能太大。10mm一组已经是上限了想精细一点就分到5mm一组代价是组数翻倍、时间步翻倍。3.4 求解控制与时间步策略焊接模拟是非线性瞬态问题因为材料参数随温度变化如果还考虑辐射那就更非线性。求解控制里最核心的是NROPT,FULL加上SOLCONTROL,ON。NROPT,FULL表示每一迭代步重新形成刚度矩阵虽然慢但收敛稳定性最好。对焊接这种强非线性热分析别用Newton-Raphson的简化选项老老实实用Full。时间步上我习惯每组设8到20个子步。看具体模型如果焊缝细、热源集中子步多一点如果模型粗、只是看整体趋势少一点。AUTOTS打开让程序根据收敛情况自动调节步长。这样万一某一步收敛困难程序会自动加密步长不至于直接发散。焊接循环结束后的冷却阶段经常被忽略。其实焊后冷却阶段对残余应力计算结果至关重要。冷却时间至少要给到几百秒比如600秒让整个构件温度降到接近室温。冷却阶段时间步可以适当放大因为温度梯度已经平缓了但也不能太大否则热应力曲线会出现台阶状跳跃。3.5 热循环曲线与温度场后处理温度场算完之后最有价值的后处理不是一张漂亮的云图而是几个关键点的温度-时间曲线热循环曲线。用POST26处理器可以提取某一点的温度历程/POST26 NSOL,2,NODE_ID,TEMP,,TEMP_CURVE PLVAR,2 PRVAR,2实际操作中通常选熔合线附近、热影响区、距离焊缝5mm、10mm等几个典型位置分别提取曲线。这些曲线可以用来验证焊接工艺参数峰值温度是否合理、冷却速度是否与实验热电偶数据吻合、是否出现二次热循环多层多道焊里很常见。温度场云图方面要注意看熔合区范围是否和实际焊缝截面相符。如果模拟的熔池熔合线形状和实验金相照片对不上大概率是热源模型太粗或者材料参数有问题这时候不要急着往下做应力分析先把热分析校准到能接受的程度。4. 完整命令流模板热分析与热-结构耦合4.1 热分析全流程模板把前面几节的内容整合起来一套可以改参数直接跑的完整热分析命令流长这样! ! 焊接温度场分析生死单元 移动体热源 ! 单位制m, kg, s, K, W, J ! PL_L 0.20 PL_W 0.10 PL_T 0.010 WELD_W 0.008 WELD_H 0.004 ARC_EFF 0.80 ARC_U 24.0 ARC_I 180.0 WELD_V 0.005 NW 20 SEGLEN PL_L / NW /PREP7 ET,1,SOLID70 MPTEMP,1,20,200,400,600,800,1200,1500 MPDATA,KXX,1,1,51.9,48.6,44.2,39.6,34.1,29.7,29.7 MPDATA,C,1,1,460,500,560,630,670,660,660 MPDATA,DENS,1,1,7850,7830,7790,7740,7690,7580,7580 MPDATA,ENTH,1,1,0,9.2E7,1.9E8,3.0E8,4.2E8,5.3E8,7.8E8,8.2E8 BLOCK,0,PL_L,0,PL_W,0,PL_T BLOCK,0,PL_L,PL_W/2-WELD_W/2,PL_W/2WELD_W/2,PL_T,PL_TWELD_H VGLUE,ALL ALLSEL ESIZE,0.004 MSHAPE,1,3D MSHKEY,0 VMESH,ALL ! 焊缝分组 *DO,I,1,NW XMIN (I-1)*SEGLEN XMAX I*SEGLEN ESEL,S,CENT,X,XMIN,XMAX NSLE,S CM,WELD_%I%,ELEM ALLSEL *ENDDO ! 初始杀死所有焊缝单元 *DO,I,1,NW CMSEL,S,WELD_%I% EKILL,ALL ALLSEL *ENDDO ! 对流边界示意所有外表面 ALLSEL SFE,ALL,CONV,1,10,25 /SOLU ANTYPE,TRANS TRNOPT,FULL SOLCONTROL,ON NROPT,FULL,,ON LNSRCH,ON AUTOTS,ON IC,ALL,TEMP,25 TIME,1E-4 NSUBST,1 SOLVE STEP_TIME SEGLEN / WELD_V QH ARC_EFF * ARC_U * ARC_I / (WELD_W * WELD_H * SEGLEN) *DO,I,1,NW CMSEL,S,WELD_%I% EALIVE,ALL ALLSEL CMSEL,S,WELD_%I% BF,ALL,HGEN,QH ALLSEL TIME,I*STEP_TIME NSUBST,8,20,4 SOLVE CMSEL,S,WELD_%I% BFDELE,ALL,HGEN ALLSEL *ENDDO TIME,NW*STEP_TIME 600 NSUBST,20,50,10 SOLVE FINISH这里必须强调两点。第一SFE,ALL,CONV,1里的1是单元面编号不同单元类型、不同网格形态下面编号不同实际使用时要确认你加的面对的是外表面否则会出现对流边界无效或者加错面的问题。第二这套命令流是直焊缝的模板如果焊缝是曲线分组就不能简单用X坐标范围选而要沿路径方向分。4.2 切换到结构分析的流程温度场算完并保存了RTH文件后接下来做热-结构耦合。思路是把热单元转换为结构单元定义结构材料参数施加约束然后按时间步把温度载荷读进来。! ! 热-结构间接耦合分析 ! /PREP7 ETCHG,TTS ! SOLID70 转换为 SOLID185 ! 结构材料参数示例 MPTEMP,1,20,200,400,600,800,1200 MPDATA,EX,1,1,2.10E11,1.86E11,1.43E11,7.00E10,2.00E10,5.00E9,1.00E9 MPDATA,ALPX,1,1,1.20E-5,1.25E-5,1.35E-5,1.44E-5,1.52E-5,1.60E-5,1.65E-5 MPDATA,NUXY,1,1,0.30,0.30,0.31,0.32,0.35,0.38,0.40 TB,BISO,1,4,2 TBTEMP,20 TBDATA,1,2.35E8,2.10E8 TBTEMP,400 TBDATA,1,1.60E8,1.20E8 TBTEMP,800 TBDATA,1,5.00E7,3.00E7 TBTEMP,1200 TBDATA,1,1.00E7,5.00E6 ! 约束消除刚体位移 ALLSEL NSEL,S,LOC,X,0 D,ALL,UX,0,,,,UY,UZ ALLSEL ! 读入热分析温度场并求解 /SOLU ANTYPE,STATIC LDREAD,TEMP,,,,,,thermal,rth SOLVE FINISHLDREAD把热分析结果文件的温度读成体载荷。实际工程里残余应力是焊接结束后留在构件里的应力场所以常见做法是读最后一个时间步的温度场做一次静态求解如果还想看焊接过程中的瞬态应力就应该在焊接循环的每个时间步都读取对应温度并逐步求解但那套流程更复杂计算量也大得多适合有明确需要时再上。4.3 把模型改成可复用参数化模板这套命令流最大的价值在于参数化。所有关键变量都集中在文件头部板尺寸、焊缝尺寸、电压、电流、焊接速度、分组数。改参数不需要动下面的命令这为参数扫描和工艺优化提供了极大便利。我实际做项目时经常要跑几十组工况——电压电流不同、速度不同、预热温度不同。如果每次都重新建模、重新写命令流人早就崩溃了。参数化之后用脚本批量生成不同参数的APDL输入文件通宵挂机跑一晚上第二天起来整理结果效率完全不一样。APDL里还可以用DIM定义数组来存放多组工艺参数配合DO循环一次提交多个工况但要注意每个工况之间一定要用/CLEAR清除模型或者每个工况一个文件单独求解。混在一起跑容易出脏数据。4.4 多层多道焊的扩展前面模板是单道焊。多层多道焊要复杂一些但核心逻辑不变只是分组逻辑从沿长度分变成沿长度和高度两个方向分。比如两层三道焊先焊第一层两道再焊第二层一道。分组的时候按实际焊接顺序编号第一层道次1的若干组、道次2的若干组、第二层道次3的若干组。焊接循环里按道次顺序逐个激活、加热、冷却。层间温度interpass temperature对最终残余应力有显著影响所以每道之间必须模拟冷却等待时间等温度降到规定值再接下一道。这也是为什么前面模板里用TIME 当前累积时间而不是TIME 本步时长的原因——焊接过程的时间是连续的不能重置。5. 实战问题速查不收敛、状态错乱、结果失真5.1 求解不收敛先查这四个地方热分析其实不太容易不收敛一旦不收敛问题往往很明确。我按照发生的概率排序一是材料参数给错。比热容或者导热系数出现负数、温度点缺失、差值算出异常值这类错误在高温段特别容易出现。检查MPTEMP的温度点是否覆盖了计算可能达到的所有温度范围最高温必须高于熔点。二是热生成率数值量级错误。QH算出来动辄10的10次方如果单位制换算失误比如长度单位用了mm但体积算成了m³QH会偏差几个数量级温度直接飞到几万度求解器当场崩溃。三是时间步过大。热源移动过程中温度梯度极其陡峭时间步太大会导致每步温升过大迭代无法收敛。把NSUBST下限调小让AUTOTS自动加密。四是辐射边界处理不当。如果用了辐射辐射率加绝对温度四次方步长必须足够小才能保证稳定性。很多初学者一上来就加辐射模型瞬间变难收敛。建议先用对流跑通再加辐射。结构分析的不收敛最常见原因是高温段材料刚度太低加上节点温度载荷跳变太大导致单元过度畸变。解决办法是细化时间步必要时打开LNSRCH线性搜索以及调整收敛准则CNVTOL。5.2 生死单元状态错乱与杀不干净的单元这类问题比较隐蔽出错后结果看起来也能算出来但你仔细看温度场会发现焊缝区域在焊接开始前就和其他区域一样导热了。这种情况十有八九是初始EKILL没有生效或者激活时机不对。排查思路很简单在焊接循环第一次SOLVE之前用后处理查看初始时刻的温度分布和导热路径。如果焊缝位置在初始时刻仍参与传热说明EKILL没杀干净。最常见的原因是选择集的问题——EKILL时候选中的不是所有焊缝单元或者漏了ALLSEL导致某些组没被杀到。另一个常见错误是杀错了对象。如果EKILL时选中的不只是焊缝单元而把母材单元也选了那整个模型初始状态就全是死的第一次SOLVE时模型里几乎没有任何刚度热分析完全跑不起来。所以组件命名和选择顺序一定要再三检查。激活之后出现幽灵单元问题也遇到过。具体表现是某组单元明明还没激活但温度却跟着邻居变。这是因为死亡单元的导热矩阵极小但不是零当相邻已激活单元温度极高时极少量的漏热经过足够长的时间也能把死单元温度渗上去。解决方法是把ESTIF调小或者检查是不是漏了BFDELE导致热源一直留在已经过了的组上。5.3 温度场异常负温度、跳变与熔池形状不对负温度在纯对流边界的热分析里很少见一旦出现优先怀疑辐射边界的时间步设置或者初始条件TEMP设置冲突。检查IC、TUNIF这些命令是不是同时在起作用初始温度覆盖顺序可能有问题。温度场出现锯齿状跳变大概率是分组太粗或者时间步太大。热源从第I组跳到第I1组时如果步长太大前一步还在强热加载后一步热源突然消失温度就会明显回落再重新升高形成波浪纹。这时候把分组长度减半或者把每组的子步数增加就能明显改善。熔池形状对不上实际焊缝时先别急着调网格。问自己三个问题热效率取了多少实际焊接工艺的热效率是不是0.8热源体积算对了没有很多时候熔池太大是因为焊缝体积里包含了多余的坡口空隙或者热效率取高了。把这些参数核对一遍往往比折腾热源模型更有效。5.4 计算时间爆炸的优化办法生死单元模型的计算量主要被三件事吃掉单元数量、时间步数量、非线性迭代次数。最有效的优化是走对称模型。焊缝沿中心线分布时如果结构和边界条件对称可以只建半模型甚至四分之一模型计算量立刻缩小到原来的几分之一。工程上绝大多数直焊缝都具备这个条件。网格上坚持局部加密原则。焊缝区1到2mm热影响区逐步过渡远离焊缝处10到20mm。别图省事把整个模型画成均匀细网格那样计算量会爆炸式增长。时间步上焊接阶段每个组8到20个子步冷却阶段放宽到每步几十秒甚至几百秒。有些人怕不收敛把冷却阶段也设成1秒一个子步纯属浪费计算资源。AUTOTS这时候就是好东西给它合理的上下限让它自己跑。启用多核并行也是一个方向。新版软件默认能利用多核你做热-结构耦合时把并行能力打开大模型的提速非常明显。如果跑的是大型增材制造模型高性能计算集群是必须的APDL命令流在集群上通过批处理跑逻辑和本地完全一样。5.5 结果验证跟实验和文献对得上才敢用我最想强调的一点焊接模拟结果必须验证否则再漂亮的云图也只是自嗨。验证手段从易到难有这几档第一热循环曲线对比。如果项目里有热电偶实测数据把模拟的峰值温度和冷却时间与实测对比误差控制在10%以内算比较理想。第二熔合线形状对比。把计算出的超过熔点的区域和金相截面叠加看形状和深度是否一致。第三残余应力对比。可用盲孔法、X射线衍射法或者轮廓法测残余应力和模拟结果对比。文献里同种材料和工艺的残余应力数据也可以参考。另外每次建模都要做一遍网格无关性和时间步无关性验证网格加密一倍、时间步减半如果结果变化很小说明当前设置可靠如果变化很大说明网格或时间步还没收敛直接拿去对比实验数据没有意义。下面这张表是我自己在排查问题时的速查表照着查能省不少时间异常现象优先检查项常见处理求解不收敛材料参数、QH量级、时间步修参数、减小步长下限初始阶段焊缝导热EKILL选择集、ALLSEL检查组件的焊缝单元完整性未激活区温度升高ESTIF偏大、漏热调小ESTIF检查热源是否移除温度场锯齿分组粗、子步少增加组数或子步数熔池范围偏大/偏小热效率、热源体积核对电弧效率与焊缝实际尺寸计算量过大网格密度、时间步、对称性局部加密、用半模型/四分之一模型残余应力对不上实验高温材料参数、冷却时间校准高温段EX、ALPX延长冷却时间6. 我的一点个人体会与后续可玩的方向说实话生死单元这套东西命令就两个真正难的不是命令本身而是对整个物理过程的把握——什么时候该激活、热源怎么给、时间步怎么设、材料参数怎么编这些才是焊接模拟的核心。我自己的习惯是拿到一个新工艺参数永远先用一个很粗的模型快速跑通流程看温度场的量级和趋势对不对确认无误后再加密网格做正式计算。这样能把试错成本压到最低。APDL还有一个好处是命令流本身就是文档。几个月后回来看每行命令都记录着当时的参数和逻辑比任何仿真报告都好用。Workbench能干的活APDL大多能干而且更可控。当然Workbench在建模和后处理交互上确实方便不少同事习惯Workbench建模、导出APDL命令流、再在Mechanical APDL里做二次开发这个组合我见过用得相当顺手。新版本界面换了不少但APDL核心命令二十年没怎么变学会这套基本功短期不会过时。如果后面想继续深入建议往两个方向走一是把热源模型从等效体热源升级到Goldak双椭球温度场精度会提升一个档次二是把多层多道焊和增材制造的分层激活逻辑做熟那套思路的工业价值比单道焊大得多。最后再提一句Student版本对模型规模有严格限制焊接模拟动辄几万单元跑之前先确认你手里的版本能不能扛得住别辛辛苦苦写完命令流提交求解那一刻才被限制卡住。
返回列表