ARTICLE DETAIL

资讯详情

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

ANSYS APDL焊接模拟:生死单元实现移动热源与残余应力分析

ANSYS APDL焊接模拟:生死单元实现移动热源与残余应力分析 焊接模拟在ANSYS APDL里最让人抓狂的一步就是怎么让焊缝金属“按顺序长出来”。你要是把整条焊缝一次性建成热源还没移动过去热量早就沿着尚未焊接的区域跑光了算出来的温度场完全脱离实际。解决办法就是生死单元先让焊缝单元整体“死掉”不参与传热、不承担载荷热源走到哪里再把对应位置的单元“激活”模拟焊料逐步填充和凝固的过程。这篇文章我从原理讲到完整命令流再讲顺序耦合到结构分析提取残余应力最后把常见的坑一并列出来。适合刚入门焊接仿真、或者已经用Workbench做过静态分析但想用APDL做移动热源仿真的朋友。1. 为什么要用生死单元模拟焊接——先把原理和思路理清1.1 生死单元的本质先杀掉再激活生死单元并不是把单元从模型里删掉而是通过修改单元矩阵参与计算的方式让单元暂时“隐身”。在ANSYS APDL里用EKILL命令杀死单元后该单元的热传导矩阵、刚度矩阵、质量矩阵都会乘上一个极小的因子相当于这个单元既不传热、也不受力。节点依然存在但单元本身不参与求解。反过来用EALIVE命令激活后单元的各项矩阵恢复正常重新参与计算。这个机制用在焊接模拟里对比非常直观焊接过程就是母材固定焊料在热源前方熔化并逐步填入焊缝。如果焊料从一开始就存在且参与传热那么母材的预热、熔池的建立、后方的冷却规律全会乱掉。只有让焊缝单元沿着热源移动方向逐步激活才能还原出“前方预热、中间熔化、后方凝固”的温度场演化过程。1.2 焊接模拟最核心的取舍热源与材料填充怎么配合焊接模拟有两个关键要素一个是热源模型另一个是生死单元的激活逻辑。二者必须联动。热源功率、焊接速度、热源作用半径都会影响激活单元的选择范围。热源模型大致有三类。第一类是表面高斯热流把电弧热流按高斯函数分布加载到焊件表面适合薄板或者表面加热占主导的情况。第二类是双椭球体热源把热流密度分配到熔池体积内常用于厚板、深熔焊结果更接近真实温度场但命令流复杂对网格密度要求高。第三类是等效体热源内热源把热源总功率均匀折算到热源作用体积内直接在单元上施加体热生成率。本文的命令流选用第三种因为对初学者最友好计算稳定、收敛快跑通整个流程后再换双椭球也不迟。激活逻辑上我的做法是让热源前方的焊缝单元提前一小段激活大约一个热源作用半径的距离。这样做的目的是给刚激活的单元一个预热缓冲避免新单元一上来就与上千度的熔池直接接触导致温度场出现异常突变。1.3 你手里的焊接工艺参数如何变成APDL里的数字从实际焊接工艺到APDL参数其实就是把物理量代入命令流。下面这张表是本文示例模型的参数对照单位全部采用国际单位制米、秒、瓦、摄氏度。物理含义数值APDL变量名焊件长100 mmL 0.100焊件宽50 mmW 0.050板厚5 mmT 0.005坡口宽度5 mmWW 0.005焊缝余高3 mmWH 0.003焊接速度4 mm/sVW 0.004电弧功率1500 WP 1500热效率0.8EFF 0.8热源作用半径2 mmRR 0.002时间步长0.25 sDT 0.25环境温度25 ℃T0 25焊接速度4 mm/s板长100 mm那么热源移动总时间是25秒。时间步长取0.25秒时总共需要约100个载荷步。如果你要更精确的温度峰值时间步长建议按“网格尺寸/(3×焊接速度)”来压本文为了流程演示和计算速度故意放大了时间步正式计算时要收紧。2. 模型准备与网格划分——战场没布置好后面全是坑2.1 几何模型怎么建底板和焊缝分开建的原因模型采用两块母材板对接中间自然形成坡口焊缝体单独建立。这样做的根本原因只有一个方便区分单元集合。给母材分配材料编号1焊缝区域分配材料编号2后续用ESEL, S, MAT, , 2就能精准选中焊缝单元完成杀活操作。如果你把焊缝和母材建成同一个体后处理阶段想单独选择焊缝单元就会非常痛苦。几何上左母材体、右母材体、中间焊缝体之间用VGLUE,ALL做粘接让界面上的节点共享。这步很关键。只有界面节点重合焊缝单元被激活后热量才能顺利地从热源区传入母材如果各体独立划分网格导致界面节点错开生死单元激活后传热路径会断裂温度场会出错。2.2 网格密度怎么定生死单元对网格的隐性要求网格密度直接影响热源的“分辨率”。焊接熔池尺度通常只有几毫米如果网格太粗热源移动一个时间步可能跨越两三个单元温度云图会呈现跳变峰值温度也会被严重抹平。本文模型中热源作用半径是2 mm网格建议至少让热源作用半径覆盖3到4个单元也就是焊缝区域网格尺寸在0.5~1 mm左右。母材远离焊缝的区域可以适当放粗但过渡不要太突兀。网格尺寸从1 mm直接跳到5 mm会在尺寸突变处产生虚假的温度梯度反而影响结果。2.3 建模和网格命令流可直接改参数运行FINISH /CLEAR, START /TITLE, WELDING SIMULATION WITH BIRTH AND DEATH /FILNAME, weld, 1 ! 参数定义 *AFUN, DEG L 0.100 ! 板长(m) W 0.050 ! 板宽(m) T 0.005 ! 板厚(m) WW 0.005 ! 坡口宽度(m) WH 0.003 ! 焊缝高出母材高度(m) VW 0.004 ! 焊接速度(m/s) P 1500.0 ! 电弧功率(W) EFF 0.8 ! 热效率 RR 0.002 ! 热源作用半径(m) DT 0.25 ! 时间步长(s) T0 25.0 ! 环境温度(°C) ! /PREP7 ET, 1, SOLID70 ! 母材材料编号1 MP, KXX, 1, 50.0 MP, C, 1, 500.0 MP, DENS,1, 7850.0 ! 焊缝材料编号2热物性与母材相同但编号必须分开 MP, KXX, 2, 50.0 MP, C, 2, 500.0 MP, DENS,2, 7850.0 ! 建立几何模型左母材、右母材、中间焊缝体 BLOCK, 0, L/2-WW/2, 0, W, 0, T BLOCK, L/2WW/2, L, 0, W, 0, T BLOCK, L/2-WW/2, L/2WW/2, 0, W, 0, TWH ! 粘接各体保证界面节点连续 VGLUE, ALL ! 网格划分母材区域粗一些 ESIZE, 0.002 VSEL, S, , , 1, 2 VATT, 1, , 1, 0 MSHKEY, 1 VMESH, ALL ! 焊缝区域加密 VSEL, S, , , 3 VATT, 2, , 1, 0 ESIZE, 0.001 VMESH, ALL ALLSEL, ALL ! 关键步骤先杀死所有焊缝单元 ESEL, S, MAT, , 2 EKILL, ALL ALLSEL, ALL网格划分时建议打开映射网格MSHKEY,1因为这里每个体都是长方体映射能生成规整的六面体单元热流方向计算更准确。如果你需要模拟更真实的坡口形状几何建模可以换成梯形坡口、U形坡口但原则不变——焊缝区域独立建体、独立分配材料号、独立网格加密。3. 移动热源与单元激活的联动——核心命令流逐步拆解3.1 单元激活逻辑热源走到哪焊材长到哪在求解阶段我按时间步循环推进。每一步先根据当前时间算出热源中心的X坐标然后激活“从起点到热源中心前方一个作用半径范围”内的所有焊缝单元。之所以要往前多看一个RR的距离是为新激活的单元留出预热空间。热源还没到但单元已经参与传热提前被周围高温母材加热这样等热源真正覆盖到这片区域时温度过渡更平滑。如果你刚好把单元激活在热源位置新单元初始温度等于环境温度或上一时刻冻结的节点温度会形成一个瞬间低温区温度场出现不合理的凹陷。3.2 热源载荷的施加与删除别让旧热量赖着不走体热源通过BFE,ALL,HGEN,1,HVAL施加到热源影响区内的单元上。这里最容易被忽略的一步是每进入下一个载荷步前必须删除上一载荷步的热源载荷。如果不删每步热源影响区会叠加在所有已激活单元上。前几个载荷步还看不出来多走几步之后整条焊缝都会在同时发热温度场直接变成“整条焊缝一起烧”完全违背移动热源的本意。所以循环里的标准顺序是删旧载荷 → 选择当前热源影响区 → 施加新载荷 → 求解。热源影响区的选择用节点坐标过滤实现。先选所有焊缝材料单元MAT2再取它们上面的节点按X、Y坐标限制出热源附近范围最后再通过ESLN筛回单元集。每一步都要记得把单元集重新限制回MAT2因为节点选择可能会把母材单元也带进来。3.3 求解控制时间步、非线性设置和冷却阶段瞬态热分析的求解设置里务必打开NLGEOM,ON生死单元配合大变形开关在很多版本的ANSYS里是推荐组合。自动时间步AUTOTS,ON可以保留但要给时间步一个合理的上下限以免中途自动步长跳得太大导致热源在一个载荷步里跨过整段焊缝。计算完成后要增加冷却阶段。焊接结束后熔池和热影响区还有大量余热如果不设置冷却时间残余应力会停留在高温状态下的应力水平没有意义。本文命令流在循环结束后额外加了10个载荷步每步2秒让焊件自然冷却约20秒。/SOLU ANTYPE, TRANS NLGEOM, ON AUTOTS, ON DELTIM, DT, DT/5, DT*2 OUTRES, ALL, ALL TUNIF, T0 IC, ALL, TEMP, T0 ! 对流换热边界 ASEL, S, LOC, Z, TWH SFA, ALL, , CONV, 10, T0 ASEL, S, LOC, Z, 0 SFA, ALL, , CONV, 5, T0 ASEL, S, LOC, X, 0 SFA, ALL, , CONV, 10, T0 ASEL, S, LOC, X, L SFA, ALL, , CONV, 10, T0 ASEL, S, LOC, Y, 0 SFA, ALL, , CONV, 10, T0 ASEL, S, LOC, Y, W SFA, ALL, , CONV, 10, T0 ALLSEL, ALL ! 等效体热源功率密度 HVAL EFF*P / (3.14159*RR*RR*WH) TIME_END L/VW NSTEP NINT(TIME_END/DT) *DO, ISTEP, 1, NSTEP TIME, ISTEP*DT XC VW*ISTEP*DT ! 激活已焊接区域的焊缝单元 ALLSEL, ALL ESEL, S, MAT, , 2 NSLE, S NSEL, R, LOC, X, 0, XCRR ESLN, S, 1 ESEL, R, MAT, , 2 EALIVE, ALL ALLSEL, ALL ! 删除上一载荷步热源 ESEL, S, MAT, , 2 BFDELE, ALL, HGEN ALLSEL, ALL ! 对当前热源影响区施加体热源 ESEL, S, MAT, , 2 NSLE, S NSEL, R, LOC, X, XC-2*RR, XC2*RR NSEL, R, LOC, Y, W/2-RR, W/2RR ESLN, S, 1 ESEL, R, MAT, , 2 BFE, ALL, HGEN, 1, HVAL ALLSEL, ALL SOLVE *ENDDO ! 冷却阶段 ESEL, S, MAT, , 2 BFDELE, ALL, HGEN ALLSEL, ALL *DO, ICOOL, 1, 10 TIME, TIME_END ICOOL*2.0 SOLVE *ENDDO提示文中HVAL的算法是把有效功率摊到以RR为半径、WH为高度的圆柱体积里属于简化等效热源。想要更精确的温度场后期可以把BFE换成双椭球体热源的函数加载或者用ANSYS的表数组接口定义热流密度分布。4. 从温度场到应力场——顺序耦合提取残余应力的套路4.1 热分析与结构分析的网格一致性焊接残余应力属于热-结构顺序耦合问题。思路很清晰先在SOLID70热单元上算出每个时刻的温度场保存成RTH结果文件然后换用SOLID185结构单元在同一套网格上逐载荷步读入温度场算出热应力和塑性变形。这里最省事的做法不是重新建模而是紧接热分析结束后在同一模型里直接把单元类型从SOLID70切换为SOLID185。这样网格和节点编号完全一致不需要担心LDREAD读温度时节点对不上。如果重新建模网格稍微不一致就会导致温度载荷映射失败或插值错误。切换单元后要重新定义结构材料属性。原来的热物性参数导热系数、比热、密度在结构计算中用不到了需要补上弹性模量、泊松比、热膨胀系数和屈服强度。这些参数必须是随温度变化的因为焊缝从上千度冷却到室温材料弹性模量和屈服强度变化极大用常温参数算出来的应力场不可靠。4.2 材料本构高温参数不能拍脑袋结构分析要用弹塑性本构。焊缝和母材都定义成双线性等向硬化模型BISO用TBTEMP和TBDATA分温度点定义屈服应力和切线模量。下面的命令只是示例格式具体数值一定要根据你的材料牌号和温度查手册。/PREP7 ! 换热单元为结构单元 ET, 1, SOLID185 ! 母材结构材料 MPTEMP, 1, 20, 300, 600, 900 MPDATA, EX, 1, 2.1E11, 1.8E11, 1.2E11, 0.5E11 MPDATA, NUXY, 1, 0.3, 0.3, 0.3, 0.3 MPDATA, ALPX, 1, 1.2E-5, 1.3E-5, 1.45E-5, 1.5E-5 TB, BISO, 1, 4 TBTEMP, 20 TBDATA, 1, 235E6, 2000E6 TBTEMP, 300 TBDATA, 1, 200E6, 1600E6 TBTEMP, 600 TBDATA, 1, 120E6, 800E6 TBTEMP, 900 TBDATA, 1, 50E6, 300E6 ! 焊缝材料同理编号2参数可按焊材调整 ...结构分析中要把时间积分效应关掉用TIMINT,OFF做准静态计算。焊接的热应力过程惯性效应可以忽略关掉时间积分既能提高计算效率又能避免一些瞬态振荡带来的收敛问题。参考温度TREF一定要设成环境温度25℃否则焊件初始状态就会产生热应变。4.3 结构分析命令流核心段与后处理结构分析的生死单元逻辑和热分析完全一致只不过每步求解前要多做一件事用LDREAD,TEMP,ISTEP读取当前时间步的温度场。命令流框架如下。/SOLU ANTYPE, TRANS TIMINT, OFF NLGEOM, ON TREF, T0 ! 约束底板底面防止刚体位移 ASEL, S, LOC, Z, 0 DA, ALL, ALL ALLSEL, ALL ! 确保焊缝单元处于杀死状态 ESEL, S, MAT, , 2 EKILL, ALL ALLSEL, ALL *DO, ISTEP, 1, NSTEP TIME, ISTEP*DT ! 激活与热分析相同区域的焊缝单元 ALLSEL, ALL ESEL, S, MAT, , 2 NSLE, S NSEL, R, LOC, X, 0, VW*ISTEP*DTRR ESLN, S, 1 ESEL, R, MAT, , 2 EALIVE, ALL ALLSEL, ALL ! 读取该时刻温度场 LDREAD, TEMP, ISTEP, , , , weld, rth SOLVE *ENDDO计算结束后进入POST1后处理/POST1 SET, LAST PLNSOL, S, EQVSET,LAST会跳到最后一个载荷步这时焊件已经基本冷却到室温可以看到最终的残余应力分布。如果你想观察某个时刻的应力演化可以用SET,FIRST或指定具体载荷步号。要提醒的是冷却阶段的应力变化同样重要结构分析最好也把热分析的结果文件里冷却段的载荷步读完否则最终应力场对应的时间点可能还停留在高温状态。5. 常见问题排查与避坑实录——我踩过的坑你别再踩了5.1 高频问题速查表现象可能原因解决办法温度场整条焊缝同时发热没有删除上一载荷步热源或误对所有焊缝单元施加了热生成率在循环中先BFDELE,ALL,HGEN再施加当前热源热源不移动温度云图固定循环里XC没有随ISTEP更新或载荷施加范围固定检查XCVW*ISTEP*DT是否在循环内生死单元“失效”激活前焊缝就传热建模后忘记EKILL或材料号错误导致选择不到焊缝单元检查模型里有没有正确执行ESEL,S,MAT,,2和EKILL,ALL温度峰值异常偏高热源功率密度过大时间步过大对流边界缺失检查HVAL计算缩小时间步检查SFA是否应用到外表面新激活单元温度突然掉到25℃生死单元激活时节点保持冻结温度热源前方提前激活单元用预热缓冲结构分析不收敛时间步长太大材料高温参数不合理未关闭时间积分缩小时间步检查高温屈服强度是否过低TIMINT,OFFLDREAD读温度时报错热分析与结构分析网格节点不一致推荐热分析后直接切换单元类型不要重建网格5.2 几个让结果更靠谱的小习惯第一热源作用半径至少覆盖3到4个网格单元。如果焊缝区网格是1 mmRR取2 mm勉强可以RR最好到3 mm会更稳但代价是热源被“抹平”。网格和时间步的匹配关系我前面提过时间步最好满足DT ≤ 网格尺寸/(3×焊接速度)否则热源跨度过大温度峰值的扫描路径是断的。第二焊接模拟的初始温度边界条件不要忽略。很多初学者只施加热源不给对流和初始温度模型温度会一路飙升到离谱。虽然热分析不一定发散但结果完全失真。本文命令流里对顶面、底面、侧面都加了自然对流系数底面因为与工作台接触对流系数取小一些这个处理比较贴近工程实际。第三不要一开始就追求双椭球热源。先用等效体热源跑通生死单元和顺序耦合的完整流程确认激光测温或文献温度场的趋势对得上再切换到更精细的热源模型。顺序耦合的坑不在热源精度而在单元激活逻辑和材料参数的一致性先把链路走通比一步到位更高效。第四如果条件允许尽量用ANSYS命令流而不是Workbench做这类移动热源仿真。Workbench里虽然也有单元生死但要控制单元激活顺序、移动热源加载、逐载荷步读温度操作非常绕远不如APDL循环直白。APDL不需要图形界面一条*DO循环就能完成全部载荷步后期改参数也方便。我个人的体会是生死单元焊接模拟最大的门槛不是命令流本身而是建立“焊接是动态填充过程”的物理直觉。一旦你把单元激活、热源移动、时间步推进三者绑定在一起后续做热应力耦合、多道焊、甚至增材制造逐层堆积都会顺很多。命令流跑通之后不要急着改模型先固定参数多算几遍观察温度场云图是否沿着焊缝匀速移动、熔池形状是否稳定这个验证值得花时间。
返回列表