首页/文章/ 详情

三维高阶叠层与插值有限元细节对比-霍姆霍兹方程

4月前浏览358

简述

前面分别介绍了二阶插值有限元与二阶叠层有限元的泊松方程的实现过程,本文将再从结果上对比二者的区别,直观的对比各自精度。其次,使用微分方程:霍姆霍兹方程,意在给出新的单元系数矩阵。

1.边值问题

霍姆霍兹方程如下,物理含义是平面波Ex=1从z=0处入射均匀空间,模拟研究区域的电磁衰减规律。更详细内容请参考:二阶叠层基函数:二维电磁衰减数值模拟

该问题的有限元问题也很容易得到:

将上式带入基函数,可以得到:

可以发现,与泊松方程不同点在于不仅包括拉普拉斯项,还有NN的第二项,因此,本文将依次给出第二项的插值基函数的系数矩阵与叠层基函数的系数矩阵。

2.系数矩阵

对于积分项中的偏导数的系数推导不再演示,详细请参考文章:泊松方程三维二阶叠层有限元实现-四面体泊松方程三维二阶插值有限元实现-四面体,本文主要推导第二项:

    

已知插值基函数与叠层基函数为:

因此同样把10*10的系数矩阵分成4个亚矩阵:

a.对于插值基函数的系数矩阵

首先求解K11:

观察发现有明显的规律,因此其他类比系数项可得;

继续求解K12系数矩阵:    

因此,统计K12系数矩阵为:    

继续求解K22:

因此,得到K22:    

将所有亚矩阵组合起来,得到基于插值基函数得到的10*10的单元系数矩阵如下:

b.对于叠层基函数的系数矩阵

对于K11求解很容易获得

对于K12:    

对于K22,我们发现其叠层基函数N5~N10与插值基函数的对应项只相差4倍,因此可以直接延用插值基函数的结果:

因此,组合所有亚矩阵,叠层基函数10*10的系数矩阵为:    

对比二者基函数,虽然有很多类似的地方,但是系数矩阵相差甚大。可以发现二阶叠层基函数的K11亚矩阵就是1阶基函数的系数矩阵,而插值基函数则完全不同,这与我们之前讨论一致。

对于系数矩阵组装过程这里不再赘述,二阶插值基函数可参考:泊松方程三维二阶插值有限元实现-四面体,二阶叠层基函数可参考:泊松方程三维二阶叠层有限元实现-四面体

3.结果对比

使用tetgen剖分得到的网格信息:网格量2234,四面体顶点数目:953,顶点数目+棱边中点数共计3847:

a.首先看一阶对比数值结果对比理论解结果    

b.二阶插值基函数对比理论解结果(网格顶点+棱边中点)

c.二阶叠层基函数对比理论解结果:(网格顶点)   

可见,相比一阶最大0.006的误差,二阶插值和二阶叠层最大误差均只有0.00012,精度提高了50倍,高阶基函数结果在精度上得到很大程度提升。我们再具体对比二阶插值与二阶叠层的结果:

二者结果在593(四面体顶点数)之前一致,之后完全不同。再次验证了插值基函数的基函数落在具体的四面体中点上,而叠层基函数的高阶部分基函数仅仅用棱边表示,从而导致二者的高阶部分完全不一样的求解结果。    

我们继续对比二者593个四面体顶点数据的绝对误差,如下图:

发现叠层和插值基函数在二阶结果是几乎一致,误差低至8e-6。说明虽然二者的基函数不同,系数矩阵也不相同,但是得到的精度几乎是一致。同样二者得到三维可视化结果几乎也是一样的。

4.总结

1.二阶插值基函数与二阶叠层基函数虽然类似,但是本质不同,二阶插值基函数的10个基函数都能在四面体上找到具体的点;而叠层基函数的高阶部分仅仅用棱边表示编号,并不具体体现在四面体某个点上。

2.两种基函数的结果在同等阶数下具有几乎一致的精度。

3.经验显示:二阶叠层基函数更容易出现错误,如果某个高阶系数某个系数出现错误,结果并不会完全错误,只不过精度会降至1阶精度,甚至略高于1阶,这很具有迷惑性。

例如,将系数矩阵knn12(4,6)=2 错误的写成knn12(4,5)=2,所得错误结果如下:    

发现,错误的结果与一阶结果相比,精度依然提升了6倍左右,但是与完全正确的二阶结果对比,精度远远没有达到,如果不知道完全正确的结果,这里就很容易被迷惑为系数矩阵不再有错。

所以对比插值基函数与叠层基函数结果能一定程度上检查叠层基函数是否完全正确。

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

泊松方程三维结构化有限元实现初探

简述众所周知,所有的实际问题都是三维的,所以对实际的三维模型数值模拟是尤为重要的,他能更大程度的反应实际物理规律。本文初步尝试使用三维结构化有限元实现泊松方程。1.边值问题不难发现,相比于二维问题,三维问题就多了一个Z轴,在方程中体现为对Z方向的二次偏导。2.有限元问题从边值问题到有限元问题的推导并不复杂,详细推导可以参考:最简单的二维结构化有限元问题:求解拉普拉斯方程将未知数离散到网格节点上,有:3.六面体基函数三维六面体是由一维组成,根据一维的插值基函数:可以衍生出三维的每个方向上的插值函数:对应的导数关系为:由此构造三维六面体8个点的基函数:最终就可以通过基函数与8个节点的数值表示六面体内任意一点:不难得出,当点落在对于节点的时候,对应的基函数等于1,其他基函数等于0。4.单元系数矩阵求解从有限元方程可以看出,单元系数矩阵的求解关键在于第一项中基函数在三个方向上的倒数的乘积,这里逐一详细对每一项求解。首先是推导基函数在x方向的倒数乘积:其中可以发现y方向的积分和z方向的积分是完全独立的,因此可以处理成积分的乘积,由此将三维问题拆分成一维积分的乘积问题,而一维积分则可以通过参考:最简单的一维有限元问题:求解cos函数分布中的积分表直接获得。由此得出N1对Ni的全部倒数积分项。由于矩阵的对称性原理,后续积分不需要积分对称位置的数据。整理后得到:仔细观察,其实每个数据之间是存在一定联系的,尤其在积分的过程中,可以不再每一项都老实的积分,简单观察就可以得到积分结果,这会大大提高积分效率。再积分在y方向的倒数:5~8位置仅z方向基函数不同,因此可以直接得出:整理得到:Z方向的推导过程不再一一演示,直接得出结果:右端项的积分可以写成:5.系数矩阵组装在得到了单元系数矩阵后,只需要将每个单元叠加起来,就可以获得全局的刚度矩阵。需要注意的是每个单元节点的全局顺序必须按照基本单元的顺序排列,如此才能保证每个单元的节点顺序与基函数的定义是一致的,这里示例X-Y-Z=1-1-2共计2个网格的节点坐标信息与单元的节点编号。由于矩阵维度较大,这里不再展示具体的系数矩阵。6.求解结果在组装好系数矩阵与右端项后,使用matlab自带求解器,求解结果。为了验证结果正确性,我们首先求解拉普拉斯方程,也就是把右端项置零,然后在X=0处放置1,X=end处放置0,其他边界不进行处理。注意第一类边界条件的加载还是采用乘以大数的方法。采用X-Y-Z=10-10-20共计2000个六面体网格,得到结果:结果是正确的,说明推导的系数矩阵以及整个有限元流程是没有问题的。进而我们再加入右端项:对每个单元加载负载到右端项,并且将所有边界处理成第一类边界条件,由此得到:7.总结1.三维结构化有限元的实现流程同一维、二维基本上没有太大差别,本质都是寻找基函数离散研究区域,然后组装系数矩阵求解的思路。2.与一维、二维最大的区别在于基函数的不同,六面体三维作为基函数,三个维度相互作用,导致推导单元系数矩阵相对繁琐,但是推导过程中同样发现存在一定规律。来源:实践有限元

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