三维稳态热传导问题
关键词: 稳态 线性 热传导
前面介绍的算例基本都是二维的,那么三维的问题应该如何处理呢?对 FEtch 来说,将一个已测试成功的有限元程序从二维扩展到三维,通常是非常直接、非常简单的。这里将给出详细介绍。本节以入门级别的稳态热传导问题为例,讲解如何使用 FEtch 系统求解三维的线性椭圆型偏微分方程。
控制方程
微分形式
对于三维直角坐标系,稳态热传导过程服从如下偏微分方程 ∂∂x(k∂u∂x)+∂∂y(k∂u∂y)+∂∂z(k∂u∂z)+Q=0 (in Ω) 其中,u 表示温度,k 是热传导系数,Q 为热源密度,x 、 y 和 z 为三维直角坐标系下的坐标变量。
这里考虑两类边界条件:
第一类边界条件,给定温度 u=ˉu (on Γ1)
第二类边界条件,给定热流 k∂u∂n⋅n=q (on Γ2)
其中,ˉu 和 q 为边界上的温度和热流值。n 为边界上的单位外法向量,热流以进入区域为正。
对比二维问题,三维情况主要有以下两点变化:
- 微分方程 (1) 多了一项,是新增的关于 z 坐标的二阶导数。
- 边界条件区域的几何类型发生了变化。对二维问题来说是线边界,对三维问题来说则是面边界了,升高了一维。
弱形式
运用虚位移原理求温度,由微分方程 (1) 两端乘以温度的变分,并在全域上积分,得 ∫Ω(∂∂x(k∂u∂x)+∂∂y(k∂u∂y)+∂∂z(k∂u∂z)+ Q)δudΩ=0 对于二阶导数的部分,利用分部积分将其中的一阶导数转化到温度的变分上,得 ∫Ω(k∂u∂x∂δu∂x+k∂u∂y∂δu∂y+k∂u∂z∂δu∂z)dΩ=∫ΩQδudΩ+∫Γk∂u∂n⋅nδudΓ 对于分部积分得到的边界积分项,代入边界条件,得 ∫Ω(k∂u∂x∂δu∂x+k∂u∂y∂δu∂y+k∂u∂z∂δu∂z)dΩ=∫ΩQδudΩ+∫Γ2qδudΓ 这就是温度场的最终的弱解形式。对式 (2) 进行空间离散化后,可进一步写成矩阵形式 SU=F 其中,S 为刚度矩阵,U 为温度向量,F 为载荷向量。该式即为最终需要求解的线性方程组。
脚本编写
一个具体问题的有限元语言表述,通常需要包含 5 种类型的文件:PDE、FBC、MDI、GCN 和 NFE。下面依次给出详细介绍。
PDE 和 FBC 文件
在这个例子中,只有一个物理场,需要给出温度场对应的 PDE 文件和 FBC 文件。根据有限元语言的语法规则,将方程 (2) 的体积分项写入 PDE 文件如下。
heat.pde | 说明 |
---|---|
defi disp u coor x y z shap %1 %2 gaus %3 mate ek eq 10; 0.0 stif dist = +[u/x;u/x]*ek+[u/y;u/y]*ek+[u/z;u/z]*ek load = +[u]*eq end |
系统关键字(信息定义) 定义未知量 定义坐标分量 定义采用的形函数 定义采用的积分方式 定义用到的材料参数和默认参数值 (空行) 系统关键字(单元刚度矩阵表达式定义) 刚度矩阵项,对应式 (2) 左侧 (空行) 荷载向量项,对应式 (2) 右侧第 1 项 (空行) 系统关键字(文件结束) |
同样地,将方程 (2) 的边界积分项写入 FBC 文件如下。
heat.fbc | 说明 |
---|---|
defi disp u coor x y shap %1 %2 gaus %3 mate eq 10.0 stif dist = +[u;u]*0 load = +[u]*eq end |
系统关键字(信息定义) 定义未知量 定义坐标分量 定义采用的形函数 定义采用的积分方式 定义用到的材料参数和默认参数值 (空行) 系统关键字(单元刚度矩阵表达式定义) 刚度矩阵项,取零矩阵 (空行) 荷载向量项,对应式 (2) 右侧第 2 项 (空行) 系统关键字(文件结束) |
对比二维算例可以发现,对应于控制方程弱形式 (2) 的体积分项的变化,PDE 文件仅在 coor 语句和 stif 段添加了部分内容,改动不大。由于边界积分项的表达式未发生变化,所以 FBC 文件内容完全无需修改。
MDI 文件
MDI 文件负责组织 PDE 和 FBC 文件,声明程序具体使用的坐标系统、单元类型和积分方法。这里文件命名为 le3d.mdi,具体内容如下。
le3d.mdi | 说明 |
---|---|
3dxyz #a 0 1 u pde heat w4g2 fbc heat t3g2 # |
在三维直角坐标系下求解 a场,无初值,1 个自由度,自由度名称为 u 调用 heat.pde,采用 4 节点四面体单元,2 点高斯积分 调用 heat.fbc,采用 3 节点三角形单元,2 点高斯积分 (文件结束符,可留空) |
对比二维算例,MDI 文件仅做了少量更改:更新了坐标系语句,并选择了与之匹配的体单元和边界单元类型。仍然需要注意的是,同一个场的 PDE 和 FBC 的单元类型和积分方法需要保证匹配,否则会导致计算精度降低,甚至计算失败的情况发生。
GCN 文件
GCN 文件给出计算流程信息,系统规定其文件名字要与 MDI 文件一致。作为线性椭圆方程,三维稳态热传导问题的计算流程和二维问题相比是完全一样的,具体内容如下。
le3d.gcn | 说明 |
---|---|
defi a ell #startsin a #solvsin a |
算法引入段 a 场,采用的算法模板文件为 ell.nfe (空行) 开始命令流段 初始化 a 场 求解 a 场,使用直接法,对称矩阵求解器 |
NFE 文件
GCN 文件使用了 ell 算法,系统会基于模板文件自动生成以下的 le3da.nfe 文件。
le3da.nfe | 说明 |
---|---|
defi stif s load f equation matrix = [s] forc = [f] solution u gidpost('u',1.0) u(1) end |
DEFI段 定义单元刚度矩阵s 定义荷载向量f (空行) EQUATION段 总刚矩阵公式 荷载向量公式 (空行) SOLUTION段 定义求解的场向量 将计算结果写入 GiD 后处理文件 (空行) 结束标记 |
算例
问题描述
考虑尺寸为 1.0 m×1.0 m×1.0 m 的正方体,热传导系数为 1 W/m/∘C,内热源密度为 0。以三维直角坐标系建模,正方体位于区域 [0,1]×[0,1]×[0,1] 内。它的六个面分别满足以下边界条件 u(0,y,z)=y+z ( on x=0)u(x,0,z)=x+z ( on y=0)u(x,y,0)=x+y ( on z=0)u(1,y,z)=1+y+z ( on x=1)u(x,1,z)=1+x+z ( on y=1)u(x,y,1)=1+x+y ( on z=1) 求温度场的分布。
前处理
填写材料参数文件
系统自动生成了 le3d.mat 文件,用于设置材料参数。参数初始值全部为 PDE 和 FBC 文件给出的默认值。可根据具体问题进行修改。对于本算例,修改完成后的文件内容如下。
le3d.mat | 说明 |
---|---|
1 3 aew4g2 num ek eq 1 1.0 0.0 # 1 2 alt3g2 num eq 1 1.0 # |
4 节点四面体体单元 材料参数 参数值 分隔符 3 节点三角形边界单元 材料参数 参数值 分隔符 |
赋单元材料号
施加边界条件
网格剖分
根据所开发程序的计算要求,采用四面体线性单元进行网格剖分。共 16122 个单元,3227 个节点。
计算结果
本算例是有解析解的,具体形式为 u(x,y,z)=x+y+z 观察计算结果可以看到,温度场的值从点 (0,0,0) 的 0 ∘C 到点 (1,1,1) 的 3 ∘C 的逐渐增大,呈线性分布。这与理论解完全一致,充分证明了算法和程序的有效性。