首页/文章/ 详情

瞬态热传导有限元求解器开发

6月前浏览658

关键词:瞬态,热传导,有限元求解器,三角形单元

热传递有三种方式:热传导、热对流、热辐射。就热传导问题而言,无论是结构力学还是流体力学都会涉及,两边都没拿它当外人。

前面的文章提到过,结构力学的有限元发展得非常成熟,大部分的刚度矩阵在文献里面都推导好了。而流体力学的很多单元类型的有限元方程,可能需要自行推导完成。在热传导问题中,我采用加权余量法进行处理,推导出了符合结构力学有限元文献中给出的刚度矩阵,殊途同归。

实际上,传统的结构力学有限元三大控制方程:几何方程、物理方程、平衡方程。几何方程描述位移-应变关系,物理方程描述应力-应变关系,平衡方程描述内应力-外载荷关系。传热问题从控制方程角度,更偏向流体力学(能量方程)。但是热对于结构变形太重要了,因此结构有限元必须要把传热问题解决掉。

从结构力学跨到流体力学,在有限元方法中,流体力学控制方程左边的矩阵都可以用刚度矩阵去看待它。控制方程的右边的列阵,都可以用载荷的角度去看待,对于第二类边界条件,则可以分成左侧矩阵的修正+右侧列阵的载荷组合。有些文献上,用所谓的“内部单元方程”、“边界单元方程”的描述,会增加我们的困惑,可以不必纠结在此。

控制方程

二维瞬态热传导控制方程如下:

这个方程里面的常数有密度、比热容、导热系数。

三种边界条件:

(1) 已知边界温度值,属于第一类边界条件,它的处理就和结构有限元里面的位移以一样,可以用置大数法对方程左边的矩阵进行约束处理。

(2) 已知边界热流密度,属于第二类边界条件,作为热源。可以类比到结构有限元里面的均布载荷。

(2) 已知边界对流换热系数和接触环境温度,也属于第二类边界条件。这个边界条件在处理的时候,需要进行拆分,一部分放到左侧单元矩阵,一部分作为右侧的载荷。

有限元思路

这部分在结构有限元教材中介绍的比较多,流程:

(1) 根据单元类型,确定插值函数。此时单元温度用权函数表达。

(2) 采用伽辽金方法,权函数=插值函数,控制方程与权函数相乘,积分取0。

(3) 在每个单元域内,方程转换为权函数的积分形式,最终形成单元矩阵。

单元方程

使用三角形线性单元对应的插值函数:

有些教材中,会把面积项提取出来,写成以下这种形式,所以有的教材上刚度矩阵结果用a、b、c表达的时候,会存在差异,但是本质都是一样的。

最终单元方程如下,其中M是热容矩阵,K是传导矩阵,F是热载荷。

热容矩阵乘的是温度的导数。在瞬态问题的求解中,导数项可以写成前后时间变量差值与时间间隔的比值:

代入后得到如下形式:

求解思路

在求解过程中,把Tn+1当作未知量,Tn作为已知量。这样在每个时间点,求解方法和结构有限元方法一致。

初始时候,可以指定一个温度作为全域已知初始温度,然后在迭代过程中,Tn和Tn+1会逐渐接近,达到收敛状态。

案例效果

设计案例如下,同时包含对流换热边界条件和热流,时间总长10000s,每步时间间隔50s。

自研求解器和商用软件结果对比如下,从结果可以看出,自研求解器结果与商用软件结果一致。

自研求解器结果:最终温度分布

商用软件结果:最终温度分布

自研求解器结果:平均温度时间曲线

商用软件结果:平均温度时间曲线

来源:静界有限元
二次开发控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2026-02-26
最近编辑:6月前
静界有限元
博士 签名征集中
获赞 27粉丝 4文章 58课程 0
点赞
收藏
作者推荐

我为什么研发一个工程壳有限元软件

进展自研的工程壳有限元软件在有一搭没一搭的开发中,第一次跑通了前后处理。首先说说我搞这个软件的目的。实际上,杆、梁、板、膜、壳、实体单元求解器我都写过。已经在实际工程应用的是梁单元,我用它解决了一些叶轮机械设计的问题,集成为了一些专用软件。对于我心心念念的复合材料力学问题,用实体单元开发会快一些,但是考虑到目前存在的UMAT/VUMAT这些子程序与ABAQUS 铺层模块互斥的问题,我想搞一个自己的复合材料壳,支持批量定义铺层,还能够把我之前写的一些损伤、失效、疲劳的本构放进去,计算效率还远远高于实体单元,这样就具有了实际工程价值。所以我称它是工程壳有限元。为什么说用实体单元开发会快一些呢?在仿真中,壳的计算效率高,网格划分起来也简单,给人的感受是好像壳比实体要简单。然而在开发上,恰恰相反。实体单元的刚矩阵简单,而壳是由膜单元和板单元两部分合并构成的,尤其是三角形单元,其形函数非常复杂。看了不少论文专门做这个推导,有些甚至推导到最后还是错的。所以为了搞壳单元,被迫先去搞了膜和板单元。开发思路在搞求解器的同时,我的主要精力放在了视口 交互上。几年前我就会基于现有的库做三维显示了,如果只是显示一下模型和结果,这个对我不难。视口 交互但是既然要做工程软件,要有些实用性。我们在用其他商用软件的时候有个明显的体会,如果不能总视口中框选、点选、按角度选进行节点或者单元的拾取,我定义边界条件,或者修改其他设置的时候会有多么麻烦。由于节点的拾取频率最高,所以框选、点选、按角度选,都要做,除了能选,还要选中后高亮,还要可以选中后撤销指定的点。用惯了别的商用软件,感觉这些功能很基础,真到自己开发的时候,这些反而是最难的。为什么难呢?或者说开发中大型工业软件的难点在哪呢?有人说求解器,有人会说算法。在我看来,最难的是数据结构。比如一个单元在视口中是怎么表达的,在求解器输入中如何表达,在结果中如何表达,他们之间又是如何映射的。当你选中一个节点的时候,它怎么知道自己被选中了,它的编号是多少,你拿到这个数据存在内存,当用户二次查看的时候,你又如何让它二次高亮上去?所以,要弄清楚,这些模型的数据在不同的模块应该如何存储、如何转换、如何调用。定义set框选选中后高亮特征标记用户在定义边界条件以后。需要针对固支、位移、载荷、弯矩等边界条件,在指定节点位置进行标记显示。有一个非常有意思的现象,当我们在ABAQUS定义Fx、Fy等点载荷的时候,他会同时显示两个方向的载荷箭头,而不是显示合力方向。以前我不理解,现在我来理解了,我们看到的箭头应该不是通过向量绘制的。应该是把其内置的图形在节点位置进行显示,同时显示多个方向的载荷箭头,在代码中实现最简单,如果搞成合力方向,还要去计算偏转角度,显示的效果也不好。当然这是我猜的,反正我也采用这个思路。包含了载荷、位移、固支约束的标记同样的问题,当更改边界条件的时候,这些标记还要自动更新,二次打开工程的时候,还要能重建这些特征。还是数据结构的难题。这也是我花了很多时间的在视口上的原因。既然迟早要做,不如趁现在,再难也要做出来。特点我借鉴了ABAQUS set的思路,凡是要事先定义边界条件的地方,必须要要先定义成set。后面定义边界条件的时候,这些set会自动出现在下拉列表供选取,并且也通过“显示”按钮进行查看。求解器难点前面讲了交互的难,实际上求解器也是个难点,难在应力求解上。前面我们提到了,壳是膜单元和板单元合并成的。在求应力应变的时候,还需要根据位移,分布在膜和板里面求应力,最后再拼起来。和实体单元比,壳和梁单元都有一个问题,就是局部坐标系和整体坐标系的转换。在做刚度矩阵的时候,需要从局部到整体。在计算应变的时候,又要先把整体坐标系的位移转换到局部,然后在局部求应变。总之弯弯绕绕很多。仿真效果平面模型我们软件的位移结果某商用软件位移结果我们软件的应力结果某商用软件应力结果曲面叶片模型 我们软件的位移结果某商用软件位移结果我们软件的应力结果某商用软件应力结果来源:静界有限元

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈