焊接、3D打印是难度相对较高的数值模拟过程,在模拟温度场及应力场过程中,至关重要的是如何进行热源函数的建立和加载,同时配以符合实际试验工况的边界条件才能模拟出相对准确的效果。
在众多热源模型中,虽然高斯面热源作为众多文献引用的模型被广泛使用,但对于厚板焊接,激光深孔效应,多道多层复杂形状焊缝,3D复杂形状打印等,都是无法满足要求的。所以,体热源模型被越来越多的应用和给予重视。
典型的函数体热源是高斯旋转体热源(也可看做椎体热源)和双椭球热源,也包括一些组合型热源(比如高斯面热源组合柱状体热源等)。这些体函数热源在一些权威文献中得到了验证,其模拟效果确实精于普通的高斯面热源。但是,体函数热源也有其限制,对热源函数加载区的网格密度要求较高,若想描述一个体热源函数,在X,Y,Z任意一个方向上都要有至少十几个节点(甚至更多吧)来描述函数在该方向上的变化,然后施以变化的节点热流密度。而且,在这一过程中,还要能够精确的选取到想要的节点才行,也就是对节点的坐标控制也要较为精确。因此,想施加体函数热源对网格的基本要求是:1网格较密;2均匀的网格划分来获得较好选取的坐标用以后续的坐标变换控制热源移动。
关于生死单元,目前应用也特别多,尤其对于有焊缝熔敷金属填充的焊接工艺,生死单元几乎是必选方案,对于3D打印,生死单元也是必选的方法之一。这里明确一点:利用杀死和激活单元并不属于热源模型的一部分,只是利用单元的生死来模拟材料的填充过程而已。因此,生死单元法其实是可以配合任何一种热源模型的。比如,如果条件允许是完全可以做到生死单元+双椭球热源这种模拟方法的。但不要忘了它们各自的限制,很多时候让你无法达成这一效果。
我在任何一套焊接模拟视频课件中,都会反复强调几个概念:模型简化的重要性,宏观模拟与微观模拟的区别,定性分析与定量分析的区别。当研究目的确定后,一定要分清自己对模拟过程的诉求是什么,这点特别重要。
对于大部分焊接,3D打印模拟来说,也包括很多类似的移动热源模型,比如磨削生热过程,路面移动加热过程,火焰移动加热过程等,一个宏观的定性分析往往是可以获得很多想要的结果的,也是可以满足研究目的的,比如工艺优化。因为能够指导我们进行工艺优化或问题分析的不一定是一个量化指标,很多时候我们需要的仅仅是某个参数的影响,或结果的变化规律。
通过以上的总结,我想阐明的是为什么我特别中意于生死单元+平均体生热率这样的组合。生死单元本身已经模拟了材料的添加过程,若想让结果更精确,只要控制这个添加过程就行了,比如网格划密后,每次只激活一个单元格。对于这个被激活的单元格,当然可以加一个体生热率就够了,因为网格密度已经足够了。那么,激活可以接受的一步单元格,比如激活某一个坐标范围内的所有单元格,只要不影响结果分析,在这一步上施加平均体生热率没什么不好的。
生死单元+平均体生热率的组合能做什么模拟呢?相比复杂的函数热源,它的优势在哪呢?
优势一对网格划分密度相对要求不高
优势二避免了复杂的函数构建,计算收敛快,计算时间短
优势三适用于复杂形状焊缝截面,多道多层焊接。
特殊指出一点:任何一种热源模型一定不是万能的,生死单元+平均体生热率也不是什么都能做。例如,当研究对象为熔池内温度梯度分布时,个人就更倾向于函数型热源了。
接下来,我做了一个焊缝高度,或者说3D打印高度变换过程的数值模拟,结合二次开发,更好的运用了生死单元模拟材料的动态添加,高斯体热源模拟了热源半径内的生热率分布,从而对照国外先进文献,获得了较为满意的结果。
对于焊缝/3D打印高度模拟,首先有一个问题:热源的加载和新的一层熔敷材料谁先谁后?是先施加一个热源获得温度场后判别熔池形状和下一步要激活的单元有哪些,还是先激活一部分单元施加热源获得温度场后判别熔池形状和下一步要激活的单元有哪些?在实际物理过程中,热源和熔敷材料的添加送给是同步进行的,而模拟过程必须把它分开对待从而在时间上有承接计算性。这是个先有鸡还是先有蛋的问题!!
最终决定采用第一种方法,因为施加热源后获得的温度场可以二次开发判别新的熔敷层有多少单元可以被熔化,从而获得更精确的熔池形状和焊缝高度变化。
定义材料参数,采用mptemp和mpdata命令。
格式:
Mptemp,1,1,10,20,30,40,50,60
Mptemp,1,,70,80,90,100,110,120
…
Mpdata,dens,1,1,8001,8002,8003,8004,8005,8006
Mpdata,dens,1,,8007,8008,8009,8010,8011,8012
…
建立模型划分网格,施加高斯体热源和相关边界条件后求解计算。施加高斯体热源采用选择一定热源半径内单元施加体生热率来实现。比如,先施加心部区域的最大体生热率。
!*******加载热源心部的最大体生热率************
esel,s,live
nsle,s,1
*get,livelocmax,node,0,mxloc,z
nsle,s,1
nsel,s,loc,y,(ymin+ymax)/2-dd,(ymin+ymax)/2+dd
nsel,r,loc,z,-0.5,livelocmax
nsel,r,loc,x,-dd,dd
nplot
esln,s,1
eplot
bfe,all,hgen,,HGENM
求解出温度场后,利用二次开发程序判别超过熔点单元有哪些,并将其全部激活。局部判别语句如下:
*if,tempavg,ge,1320,then
/solu
alls
esel,s,elem,,elemnum
nsle,s,1
*get,nodeloc,node,0,mxloc,z
nsel,r,loc,z,nodeloc
esln,s
eplot
ealive,all
*endif
继而进行下一步的热源加载和持续求解。最终获得了较为满意的结果。结果部分图片结果如下:
PS:由于该计算涉密,这里只列出较粗网格计算后的结果。网格细化后效果更好。可以看到阶梯状熔池前沿及焊缝高度和宽度上的逐渐变化。