专栏导读
- 作者简介:工学博士,高级工程师,专注于工业软件算法研究
- 本文已收录于专栏:《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现,并提供所有案例完整源码;2.单元类型包含:杆单元,梁单元,平面三角形单元,薄板单元,厚板单元,壳单元,四/六面体实体单元,金字塔单元等;3.物理场问题涉及:力学、传热学、电磁学及多物理场耦合等问题的稳态(静力学)和瞬态(动力学)求解。专栏旨在帮助有志于有限元工业软件开发的小伙伴,快速上手有限元编程,在案例中成长,摆脱按部就班填鸭式教学。
- 【所有专栏文章均提供视频教程和源码】《有限元编程从入门到精通30讲》视频教程与源码获取地址: https://www.bilibili.com/video/BV1kP4y1d7Zo
- 欢迎订阅专栏,订阅用户可私聊进入有限元编程交流群(知识交流、问题解答),并获赠丰厚的有限元相关学习资料(教材、源码、视频课)
- 专栏订阅地址:有限元编程从入门到精通_suoge223的博客-CSDN博客
一、案例介绍
本案例实现了下述二维三角形区域的泊松方程的Matlab有限元编程求解,边界条件包含了第一类Direchliet和第二类Neumann边界条件,采用的单元为三角形单元,具体方程形式如下图,介绍了泊松方程有限元求解基本原理,将Matlab求解的结果与Comsol求解的结果进行对比,证明了本Matlab求解程序的准确性。提供案例源码供大家练习。
你将获得:二维三角形区域的泊松方程有限元求解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计算结果
结果一致,可验证准确性。