一、案例介绍
本案例实现了下述二维三角形区域的泊松方程的Matlab有限元编程求解,边界条件包含了第一类Direchliet和第二类Neumann边界条件,采用的单元为三角形单元,具体方程形式如下图,介绍了泊松方程有限元求解基本原理,将Matlab求解的结果与Comsol求解的结果进行对比,证明了本Matlab求解程序的准确性。提供案例源码供大家练习。
你将获得:二维三角形区域的泊松方程有限元求解Matlab源码+说明文本
二、原理说明
根据变分原理,平面三角形区域内无体力的泊松方程的泛函表达式为:
其中,q,h,f为边界条件系数。
将求解域离散,节点u值通过形函数表示:
采用三角形单元,在面积坐标系中,形函数为:
将形函数表示的u值代入泛函表达式,根据泛函取极值,其一阶变分为0可得有限元方程:
其中[K]表示整体刚度矩阵,由单元的[Ke]矩阵和[He]矩阵组装得到;[P]表示边界条件矩阵,由边界单元的[PeH]矩阵和[PeQ]矩阵组装得到,具体为:
三、程序介绍
将压缩文件解压后放入matlab运行目录,运行主函数“mian”便可得到计算结果,结果包括:
1.域D的网格划分情况(来自于“element.txt”和“node.txt”):
2.变量u在D域中的分布:
3.将u在D域中的分布记录为文本文件,第一列表示x值,第二列为y值,第三列为u值。
程序的子函数共有三个,分别为:“KeCalculate.m”用于计算公式(5);“HeCalculate.m”用于计算公式(6);“PeCalculate.m”用于计算公式(7)(8)。程序中矩阵的装配对应公式(9)(10)。
边界条件数值通过三个系数q,h,f控制,程序中通过乘大数法定义BC边界条件,设置h =1e8,f=0;AB边界条件设置q=1;AC边界条件设置q=0。
具体过程在程序中都写好了注释。
三、程序计算结果和COMSOL商用有限元软件对比:
Matlab计算结果
Comsol计算结果
结果一致,可验证准确性。