hello,小伙伴们大家晚上好,今天是2020-12-18。周五,非常抱歉,前两天因为别的事耽搁了,所有没有更新专栏。今天开始我们稍微回归一下正轨。今天晚上给大家介绍一个新的abaqus用户热源子程序DFLUX。感觉应该是焊接方面的用的比较多。其他领域我不太清楚。
1 子程序接口
我们第一步就是在帮助文档里找接口,说实话,这个我都不想说了。懂我的兄弟们都懂了,看过我之前文章的粉丝们,应该不陌生了。如果有新的小伙伴,第一次看,有不知道的在哪的,请看之前的文章。
 
    
2 子程序待定义变量
待定义的变量有两个,一个是热源Flux(1),还有一个是Flux(2),这个东西就是热源对温度的偏导数。我之前就讲过了,很多子程序都有这个东西。当一个待定义的变量是某些量的函数的时候,为了增加收敛速度,会让你人为的把它对自变量的偏导数写出来。比如,我们这里,flux(2)就是flux(1)对温度的偏导数。后面的许许多多子程序都会有这个东西,大家要熟悉。
 
    
3 子程序的其余形参
Dflux的形参比较简单。我就不单独介绍了,大家自己可以看一看,跟之前几个常用的差不太多。常用的就那么几个,大家可以读一读。我们今天用到的就两个,一个是Time(2),总时间。一个是COORDS,三元素的一维数组,节点坐标。
 
    
4 cae模型
介绍完了子程序的接口之后呢。下面就说一下我们今天用的cae模型吧。因为Dflux一般是用于焊接分析的,所以我们就讲一个焊接的例子(实在是网上的焊接例子有点多,)
今天的用的模型和热源数据我都是参考下面这篇文献里的。我就在知网里随便找了一篇。
 
    (1) 所用的几何模型是一块120*70*3.5mm的板材。
 
    
(2)Partition,沿着中间切开:(等会画网格需要)
 
    
(3) 材料模型,我这里用热力学3要素就行了,密度、比热、热传导系数。因为等会我只算热传导。如果算热力耦合的话,还需要加弹性模量、塑性、以及连接热学和力学的桥梁-热膨胀系数。我为了算的快一点,只调一个热传导模型。
 
    
(4)定义分析步,上个刚说,我们这里的分析步选的是Heat Transfer。热传导模型,有兴趣的小伙伴可以自己试试热力耦合。
 
    
(5)画网格,先讲画网格。(注意:大家如果觉得这一节比较麻烦的话,可以不做,直接画个均匀一点的网格往后算就行了)。但是,如果你要看的话,这也是今天的有bonus地方。首先看一下别人文献里画的网格。平板焊接的侧重点都是热源部分,细化的很好。网格过渡的很自然。
 
    我看到的时候,我也准备画这么一个,然后发现在abaqus里不太好画。如果有做过焊接的小伙伴应该知道,这种过渡网格,一般都是在第三方软件下画好的,比如我们的HyperMesh,比如ANSA。然后我就想试试能不能在abaqus下画,我准备自己动手操刀写个脚本的。然后百度了一下,发现有人已经写过了,那我就笑纳了,借花献佛,也送给大家,谢谢这位无私奉献的前辈,哈哈(别人是2012年就写了的)
原链接在这里:http://forums.caenet.cn/showtopic-528705.aspx
里面有源码,大家也可以下载。这个脚本是做什么的呢。是绘制过渡网格的。我看了一下。做的效果挺好的,但是有个小缺点。展示一下,这位前辈的脚本做法。大家可以用我们刚才那个模型试试看。
 
    
如果你自己尝试的话,应该会发现。这个过渡网格,只能画在与xy平面平行的面上,如果是xz,或者是yz平面,就不能画了。如果你想画在下图的这个xz平面。用这位前辈的脚本是行不通的。
 
    这也是为什么有人在它的文章底下留这句话的原因。
 
    但是好在,咱们做开发的,就喜欢找这种小问题。。我把它稍微改了一点,加了一个参数Dcoordinates。致敬前辈,顺着他的编码写下去,就没改别的了。这个Dcoordinates是一个绝对坐标,是草图右边一条边上的某个点。比如我举个例子:
 
    其他的变量可以参考之前那位前辈的脚本介绍。里面讲的挺详细。
运行完之后的样子如下图,我这么空讲,你们很难理解,大家自己下去照着前辈的教程练习练习。如果你感兴趣的话,我当时是挺有兴趣的。
 
    
 
    
由于源码比较长,我把改过的源码和子程序都放我的github里,大家可以下载:https://github.com/wuhuiguo/Abaqus
 
    
做完这部分partition之后,进入mesh模块。选过渡区域,网格个数为1。
 
    
然后选边,在过渡一下。厚度方向的层数看着就行。给8个。
 
    最后生成网格mesh。过渡区域生成的不够好,所以不是太好看。但是方法就是这样,大家可以自己动手尝试做个好看的。
 
    
我终于讲完了,可累死我,相信你们可能也看的一脸懵。如果要理解怎么做的画,需要自己动手尝试,多自己运行运行脚本,试几次就明白了。这部分的内容实在是我无心之举。如果大家觉得比较复杂的话,可以跳过不用做。直接画一个均匀的网格也无所谓。就是算的可能稍微慢了一点。
(6)载荷类型,cae种开启dflux接口。在load力,选surface heat flux,我们今天用的高斯面热源,函数稍微简单一点。其实体热源也一样啊,像双椭球的体热源,还有激光焊的那种符合热源。其实就是函数稍微复杂了一点,整个操作过程,包括子程序的写法上,与这个最简单的高斯面热源相比,都没有其他区别。就是函数复杂了一点。
 
    
5 写子程序
我们所有的准备工作都做完了之后,到了我们的千呼万唤始出来,犹抱琵琶半遮面的写脚本环节。
我们今天写高斯热源模型,首先你得知道这个模型是什么吧:
 
    参数的大小也要知道的吧:
 
    参数有好多组,我就随便取了一组。
接下来就是写程序了,如下:
 
    里面有些关键的地方,我都加了注释了。整个flux(1)就是基于上面的高斯热源公式,我们所要做的就是把公式写进子程序里。由于flux(1)与温度无关,所以flux(2)可以不用定义,或者写flux(2)=0也可以。
大家注意一点,我写的子程序,是基于我的这个坐标系下,如果你们的坐标原点不是这里,要相应的改一下子程序:
 
    
6 测试子程序
下面我们就去测试一下:
(1)
 
    (2)
 
    
(3)
 
    总体来说,子程序是没问题的,就是温度偏低,是热源的值小了,应该是高斯热源的参数给的不好。文献里的SI单位,我用的是mm-MPa单位,可能是换算的过程出现了问题。大家不妨找找看。
 
好啦,我们今天的内容就到这里啦。明天再见。88,大家晚安。今天的源码都在我的github里。https://github.com/wuhuiguo/Abaqus,一直都是这个网站,大家需要的下载一下即可。我每写一次专栏都会同步更新一次。
 
凡治众如治寡,分数是也 -《孙子兵法》