首页/文章/ 详情

三维四面体三阶有限元实现-泊松方程

1月前浏览1148

简述

在上篇文章中,基于高斯积分原理,快速实现了泊松方程与霍姆霍兹方程三维四面体一阶、二阶有限元求解,本文将继续实现三阶插值基函数的有限元流程。

泊松方程与霍姆霍兹方程两种边值问题,请参考上篇文章:

泊松方程-三维四面体插值基函数有限元实现-高斯积分

1.三阶基函数推导

已知面积坐标得到的线性积函数表达式:

其中,对应方向的梯度有:

四面体任意阶插值基函数的通式为:

当n=3的时候,共计20个节点,如下图所示,4个顶点,12个棱边点,4个面点:

   

将n带入通式,可以求解得到与四面体对应的三阶插值基函数,这里展示其中两个基函数的带入方式:

如此依次类推,得到共计20个基函数表达式:

其中,Vertex表示四面体四个顶点、edge1edge2表示六条棱边上两个三分点、face表示面中心点,对应的基函数梯度可以表示为:

2.高斯积分

高斯积分形式与文章泊松方程-三维四面体插值基函数有限元实现-高斯积分完全一致:

其中,Fmat,Frhs可以通过高斯积分点获得,V是四面体的体积,对于三阶四面体网格的高斯积分点位置对应的面积坐标权重值与积分权重值如下:

整个过程与一阶、二阶完全一致,格式流程没有半点变化。

3.系数矩阵组装与边界条件加载

整个三阶有限元的实现过程,关键点是基函数及其梯度的推导。而难点则是四面体网格的全局节点排序与局部节点排序的一致性。

首先需要得到棱边的唯一编号与面的唯一编号,其中节点编号与面编号都仅仅对应一个自由度,不足为虑,而每条棱边对应两个自由度,并且这两个自由度是存在顺序关系的,因此这里需要特别注意确保局部棱边的两个自由度与全局的棱边自由度对应一致。    

边界条件的加载与以前文章介绍的方法一致,这里需要注意的是在边界面上,需要对边界的顶点、棱边点、面点均赋值对应的边界条件。

4.结果展示

由于三阶有限元会导致自由度急剧增加,因此这里剖分了一个网格量小的模型对结果进行验证。

a.泊松方程三阶    

b.霍姆霍兹方程模拟电场衰减过程:一阶、二阶、三阶与理论解析解对四面体顶点精度:    

I.一阶精度:

II.二阶精度:

III.三阶精度:

粗略统计不同阶数的最大误差如下表:

可见,随着精度增加,最大误差在逐渐减小,但是可以发现精度收敛并不是太明显,这是由于实际网格过少导致的。即使如此,高阶的精度的确也确实比低阶的精度要高。

下面是三阶可视化结果(分布表示未知数的实部虚部):    

最后

本次实现了三维四面体网格的三阶插值基函数有限元算法。其中有两点关键点:1.插值基函数的获取与有效的利用高斯积分原理获得单元系数矩阵;2.局部的顶点、棱边点、面点需要和全局节点一一对应。

来源:实践有限元
电场理论
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-12-06
最近编辑:1月前
实践有限元
硕士 签名征集中
获赞 0粉丝 0文章 57课程 0
点赞
收藏
作者推荐

二阶矢量有限元实现:二维电场在介质中的衰减

简述二维一阶的矢量有限元在之前的文章中已有实现,本文在高斯积分求解的基础上,实现三角形网格的叠层二维二阶矢量有限元。并分析其计算精度与计算效率。二维电磁在介质中的传播问题的边值问题这里不再详细介绍,具体可以参考:1.二阶矢量基函数对于矢量基函数而言,首先依旧是得到三角形网格的线性基底面积坐标:由此,可以得到一阶矢量旋度基函数表达式为:对于二阶矢量基函数,则是保留完全的一阶矢量基函数,加上二阶矢量基函数的旋度部分,进而得到:对于第三项面矢量基函数而言,虽然节点组合可以得到三组面基函数,但是由于其中任意一项与其他两项是呈线性相关的,因此仅需要考虑任意两项。具体展开后,每个三角形由八个矢量基函数组成,如下:可以发现,前三项基函数与一阶的矢量基函数是一致的,这也是叠层矢量基函数的特征,高阶项保留低阶项,以便于使用混合阶矢量有限元。2.系数矩阵的推导同样,由于引入了高斯积分来求解具体的系数矩阵,因此不需要完全推导N*N的系数矩阵,只需要推导得到其表达式即可。因此,根据上述二阶矢量基函数,需要进一步推导的内容是矢量基函数的旋度。第一部分一阶矢量基函数的旋度直接给出结果:第二部分的矢量基函数本身由梯度组成,因此也很容易得出其旋度等于零。第三部分面矢量基函数进行推导,难度也不大:最终得到三部分的旋度表达式如下:接下来的求解过程就交给高斯积分完成,最终求解得到每个三角形的系数矩阵,具体高斯离散求解如下所示:3.系数矩阵的组装与边界条件对于二阶矢量有限元,组装过程中需要注意对应棱边编号、正负以及对应面的方向确定。这一点是非常重要的。基本原理就是保证同一条边在全局上是具有唯一的方向的,同一个面在全局方向也是唯一确定的。同时也需要把这些边的全局方向映射到局部单元上,以确保根据母单元顺序可以唯一的组装好系数矩阵。对于母单元而言,三角形的排列顺序为:自由度节点编号棱边11,2棱边22,3棱边33,1棱边41,2棱边52,3棱边63,1面11,2,3面22,3,1对于第一类边界条件,其加载原理与叠层节点的有限元一致,在一阶部分使用强加第一类边界,对于二阶部分强加为零。同时矢量有限元需要将节点位置的场值映射到棱边切向分量,具体实现可参考:4.结果展示测试模型为10m*20m的矩形,频率为1000Hz的电场垂直入射Y方向,介质体电导率为1欧姆米,模拟电场在介质中的衰减过程。Eg1.网格横纵剖分5*10*2共计100个三角形网格其中棱边165个,未知数共计165*2+100*2=530个。下面是具体的三角形网格剖分。系数矩阵的分布如下,可以看出两个棱边部分与两个面部分在系数矩阵中体现的很分明,总体上该系数矩阵还是大型稀疏矩阵。求解该矩阵方程后,得到结果,将二阶结果、一阶结果的电场与理论解进行对比,如下:未知数矩阵求解时间/s最大误差1阶矢量有限元1655.046e-310%2阶矢量有限元5300.0140750.3%对比发现,相比于一阶矢量有限元,二阶有限元计算精度提高了30多倍,当然二阶的计算时长是一阶的2.79倍。二阶精度提升在与理论解对比上也是非常的明显。Eg2.剖分网格为20*20*2=800个网格,共计4080个未知数。在模型中间放置一个低电导率,得到的电场衰减分布规律如下:可以明显看出,电场Ex的实部虚部在介质分界面有明显的突变情况。这也体现了矢量基函数的特点:仅保证切向连续,不保证法向连续。总结1.成功实现了二维二阶矢量有限元,相对于一阶而言计算精度有明显提升;2.二阶矢量有限元实现的关键点需要注意单元于自由度之间的映射关系以及确保每个自由度全局方向唯一性。3.矢量基函数的构成方面,可以理解为一阶矢量基函数为二阶节点基函数的旋度部分;二阶矢量基函数为二阶节点基函数的旋度、梯度部分加上三阶节点基函数的旋度部分。来源:实践有限元

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