最近用到了相变生热这部分的内容,技术邻查了没找到对应的教程。自己探索了一段时间,下面将在abaqus帮助文档里的例子基础上。结合传热学的理论,介绍在UMATHT实现内热源生热,并与用abaqus的HETVAL子程序的结果做对比,验证正确性。(注:这个例子很简单,大家可以根据需要进一步开发)
为了更好得理解UMATHT需要定义变量,先介绍一下一维导热微分方程(三维可类似推广)。
基于能量守恒定律,以上图一维导热微体积元为例,流入体积元内的热量+内生热量等于内能的变化+流出体积元的热量,如下式:
将能量的具体表达式代入:
其中,q是热流密度(W/m2),A是体积元一个截面的面积(m2),Q是生热量(W/m3),detaU是内能变化(J),方程左右两边的单位是对应的1J=1W/s。(单位用m,s对应的)
下面用傅里叶定律和内能变化的公式表示热流密度和内能变化:
其中K是热导率(W/m/K),代入(2)式:
消掉相同的项、移项,两边同时除以Adxdt,得到:
从这个偏微分方程中可以看出,我们给出热导率、内热源项、比热容、密度这些参数。结合初始条件、边界条件就可以求解温度场。
2.UMATHT简要介绍
UMATHT主要是用来定义材料的热本构,适用于带内热源的传热过程。与UMAT必须定义雅可比矩阵和更新后应力类似,下图中列出了UMATHT在使用过程中必须定义内能随温度的变化等变量:
包括U内能,(这里需要注意一下,U的单位是单位质量的内能与前面方程中推导的过程中不同,后面加入内热源项需要考虑)。其他变量在后面的例子中再介绍。
建一个1m*1m*1m的立方体,给定密度7900(kg/m3),热导率50(W/m/K),比热容500(J/kg/K)。hetval子程序使用的时候要在Thermal中选择Heat Generation,要不然子程序不起作用。
初始温度0度,时间步长5s总共50s。HETVAL子程序里面FLUX的单位是(J/m3/s),根据detaU=c*m*dt只有内热源产热的时候升温速率每秒升高10度:
在HETVAL中给定FLUX(1):
提交计算,结果符合理论:
下面介绍UMATHT子程序中实现相同的效果,在UMATHT子程序中的设置如下:
主要是内生热量的转换,在hetval中是J/m3/s,而在UMATHT中U的单位是J/kg。需要除一下密度转换成J/kg/s,通过dU更新时要在乘dtime转化成J/kg。其他的内容可以根据给出的公式及abaqus帮助中的例子理解。
结果如下,与HETVAL是一致的:
当然如果你的生热模型中相变潜热等内生热量的单位是J/kg,不是温度和时间的函数而只是温度的函数,直接在更新du的时候加上潜热就可以了,不用乘dtime。这个可以参考abaqus的umatht中的另一个例子。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删