首页/文章/ 详情

任意高阶通式有限元玩法-泊松方程

17天前浏览18

简述  

在上篇文章中实现了高斯积分取代求解系数矩阵的过程,那么这篇文章高能来了,既然可以不用求系数矩阵,是否存在基函数到系数矩阵整个流程的通式,直接实现任意阶有限元!
答案是肯定的!
高斯积分的有限元框架实现后发现,只需要再实现N阶基函数的通式即可。这就是高斯积分带给我们的惊喜!  
本文依旧以一维泊松方程为例,实现任意阶有限元。一维有限元流程这里不再推导,这里重点给出任意阶基函数的通式推导。  

1.一维线单元基函数通式  

首先,确定任意高阶形函数的基底为线性基函数:

并且根据高斯积分需求,将线性基函数投影到[-1,1]的区间,如下:

如此,线性基函数可以表示为:

 

已知,线性基函数满足:

 

接下来就推导并求解具体的形函数的过程。首先考虑1阶,已知两个形函数是线性基函数基底组成,并且为1阶,由此有:
N1,N2是满足插值形函数的基本要求:

因此,带入求解,得到:

所以,1阶基函数为:

针对2阶形函数,插值点在中心点,形函数有3个,阶数为2,因此有:

此时,形函数满足条件:

分别带入,可以求解得到:

继续对于三阶形函数的表达式为:

对于四阶形函数的表达式为:

由此,可以推导得到N阶形函数的表达式为:

得到形函数后,进而对其求梯度:

求解系数,带入节点信息求解即可:

对于头尾两个节点,带入所有点坐标;对于中间节点,仅需要带入内部插值点坐标求解即可。
如此,只需要组装好矩阵,求解方程交给计算机实现,即可实现任意阶的形函数求解,进而通过高斯积分方法,得到自动得到任意阶单元系数矩阵,从而实现任意阶有限元。
在实现过程中,还需要处理的地方是节点信息随着阶数增加的增加,因此单元到节点的映射关系也需要随着阶数的增加而改变。在一维有限元中,实现起来也比较容易。  

2结果展示  

测试三个算例,分别验证了泊松方程的任意高阶实现、霍姆霍兹方程的任意高阶实现与霍姆霍兹方程的高阶精度与同等未知数下的一阶精度对比。  

Eg1:泊松方程,研究区域[0,10],网格剖分为5个单元  

给出了线性基函数L1,L2在单元节点的取值与形函数通式中求解得到的各个系数。  

a.2阶结果 11个未知数

b.4阶结果 21个未知数

c.6阶结果 31个未知数

d.9阶结果 46个未知数

可见结果均正确,精度均是非常高的,这也是由于泊松方程太过于简单的原因。下面测试电场衰减的例子,精度误差就有非常明显的感觉。

Eg2:电场衰减模型,研究区域5个波长,网格剖分为10个网格  

a.2阶结果

b.5阶结果

c.8阶结果

d.12阶结果

观察可得,随着阶数增加,误差从最开始0.1量级降到最后1e-10次方量级。

Eg3:电场衰减模型,研究区域5个波长,测试相同101个未知数下,不同阶数之间的精度对比  

a.1阶基函数,100个单元  

 

b.2阶基函数,50个网格

c.5阶基函数20个网格  

 

d.10阶基函数,10个网格

可见,虽然未知数一致,但是阶数越高精度越高,可见单纯的增加网格,达到阶数增加而达到的精度。  

总结  

1.实现了任意阶的一维有限元算法,重点在于使用高斯积分避开求解系数矩阵与推导任意阶基函数的通式;

2.很容易想到,对于结构化有限元而言,一维有限元的任意阶有限元实现后,二维四面体、三维六面体的任意阶有限元实现的技术也基本上迎刃而解。后期将会逐一实现介绍。  

3.虽然从未知数角度看,高阶有限元等价于多网格1阶有限元,但是从精度上看,高阶有限元精度远远高于同等未知数下1阶多网格有限元。这也说明了高阶有限元的必要性,尤其在复杂边值问题上,高阶的精度是低阶无法实现的。  


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

三维矢量有限元实现-六面体网格

简述本文以矢量波动方程描述的电场在介质中衰减规律为边值问题,介绍六面体网格的矢量基函数、系数矩阵推导。矢量波动方程的有限元推导这里不再介绍,详细参考:电场矢量波动方程的三维有限元实现1.六面体网格基函数六面体的棱边有12条,xyz方向各四条,因此棱边基函数也有十二条,分为xyz三个方向,可以得到基函数的插值公式为:首先给出六面体单元的棱边编号的规律,如下图:根据二维棱边基函数的经验,参考二维矢量有限元(结构化网格)实现流程,三维的基函数同样由一维基函数组装得到,已知三个方向的一维线性基函数为:以此来组装三维棱边基函数。仔细观察,针对Nx方向的棱边1,2,3,4,它在x方向是不会有变化的,因此可以断定Nx中是没有x方向的一维基函数,然后可以发现这四条边的插值规律,可以由zy方向的一维基函数组合表示获得,由此类推,可以得到棱边基函数:可以发现,与节点基函数最大的不同,在于这十二个基函数都具有方向,Nx,Ny,Nz分别代表了XYZ三方向上各自棱边的插值基函数。并且验证发现,其顺序也是和上述图形中的棱边顺序一致,这很重要,不同的顺序得到的棱边基函数表达式结果也是不一样的。并且不难推导得到:梯度为零,而旋度不为零。继续推导各基函数的偏导数,以备后续使用:2.单元系数矩阵推导根据三维矢量波动方程的有限元方程:针对第一项旋度乘积的积分项,得出其是由九个部分组成:其中,根据单元系数矩阵的对称性,只需要求解对角线矩阵和上三角矩阵即可,首先推导单个基函数旋度表达式:然后对上述式子进一步推导旋度的乘积,得到:由此,整理得到表达式:对每一项进行积分,结合基函数的偏导数结果,可以快速求得:非对角线矩阵:所以,K的旋度部分的系数矩阵可以表示成3个4*4系数矩阵k1、k2、k3的组合;继续推导系数矩阵的第二项,由于:不难发现:因此,非对角线为零,只剩下对角线元素:很容易推导:从而可以得到:观察Kyy,Kzz,两者具有与Kxx一样的规律,因此,系数矩阵为一样的。因此,归集有限元第二项结果为:3.系数矩阵组装与边界条件加载系数矩阵组装与一般的有限元组装一样,关键在于获得单元与棱边的映射关系,这里需要自己写算法获得该映射关系与棱边总数。最简单的方法就是先标记X再标记Y最后考虑Z,标记的过程要保持与单元六面体的顺序一致即可。这里给出1*3*2共计6个单元的映射关系以供参考:x方向的棱边数,共计12个:y方向的棱边数,共计18个:z方向的棱边数,共计16个:同样仅考虑第一类边界条件加载,需要在棱边上赋值,如果考虑电场传播方向z方向,振动方程x方向的时候,则直接对边界上x方向的棱边赋值乘以大数即可。因为本身x方向的棱边方向与电场振动方向就是一致的,相比于四面体网格而言,要容易实现一些。4.结果测试模型大小10*10*20m,各个方向网格大小为10*10*20,共计2000个六面体,7040个棱边。a.频率为1e4Hz,电导率为1欧姆米数值结果与理论基本上能达到一致,误差还好,在1%以下。三维切片结果显示:从三维切片结果显示,基本上与理论一致,在均匀介质中,Ex方向的电场顺利传过模型,并没有发射反射等现象,因此Ey,Ez几乎是没有电场的,有的仅仅是数值带来的误差。b.频率为1e4Hz,电阻率为1欧姆米。中间存在一个立方体的区域电阻率为0.001欧姆米。可以发现,各个方向均有明显的反应,其中以入射波Ex方向的变化最大,并且能明显观察到分界面位置的突变。5.总结a.结构化网格的矢量有限元实现起来相对要比非结构网格容易,但是其中依旧是要注意局部棱边顺序与全局棱边顺序的一致。b.从上述结果中看出,依旧存在很大误差,这是由于网格量不足的原因导致的,在实际物理模型中,还需要对网格进行渐变处理,避免边界上的反射,或者使用吸收边界、解二次长的方法进行处理。来源:实践有限元

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