首页/文章/ 详情

四面体网格混合阶矢量有限元实现

1天前浏览7

简述

对于电场矢量波动方程的数值模拟,矢量有限元是求解电场分布规律的常见数值方法。在之前的实践过程中发现,二阶的计算精度虽然有效的高于一阶,但是未知数也是成倍的增加,在实际工程中无论是效率和精度都不是最优的选择,对此,混合阶矢量有限元可能是更好的选择,既能保证感兴趣的位置精度,同时降低不必要区域的阶数。

这篇文章抛砖引玉,探讨实现基于一阶、二阶下混合阶的矢量有限元。

其中基于矢量有限元的整个实现流程可以参考以下文章,这里不再介绍。重点介绍混合阶矢量有限元的一些关键技术点与测试结果。

二阶矢量有限元实现-四面体网格

三维四面体矢量有限元实现-霍姆霍兹方程-高斯积分

1.矢量基函数表达式

本次混合阶是基于一阶、二阶的,因此这里给出一阶二阶的基函数表达式

一阶基函数:

二阶基函数:

再次提及,二阶基函数中包含了一阶基函数,这是混合阶有限元能实现的基本要求。高阶基函数可以理解为基函数的本身的高阶项,因此在四面体单元不存在具体的某个点与之对应,这是区别于插值基函数而言。

确定基函数后,可以发现一阶基函数会形成6*6的单元系数矩阵,而二阶基函数会形成20*20阶的单元系数矩阵。

2.四面体网格的自由度计算与拓扑关系

由于整个网格中,不再是统一的一阶或者二阶,因此首先必须确定每个四面体网格的阶数,例如测试模型10*10*10的模型,规定x<5区域部分为二阶基函数,其余为一阶基函数,得到的阶数分布规律如下:

可见混合阶网格的自由度不再很容易获得,不同阶数单元的自由度不同,一阶为6个自由度,二阶为20个自由度,分别用棱边、面表示。因此需要计算整个模型中实际的未知数个数。对于上述示意图而言,需要计算得到红色 区域的棱边数量与面的数量,并且对它们进行编号,如此可以得到:

获得这些信息后,然后再根据总未知数的关系,得到单元与每个未知数上的映射关系,以便于后续的系数矩阵组装。

此外,还需知道一阶和二阶四面体单元所在分界面的面、棱边的编号信息关系,因为在高阶向低阶基函数的过渡区域,我们需要统一阶数,即将四面体相连的高阶棱边、面处理成低阶的状态。

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

在获取的必须的网格拓扑关系、自由度关系与一阶、二阶基函数后,组装矩阵则是按照正常的有限元系数矩阵组装即可,一阶的四面体累加上6*6单元系数矩阵,二阶的四面体累加上20*20单元系数矩阵。

边界条件依然是使用第一类边界条件,对于基函数阶数分界面而言,需要统一阶数,将高阶部分基函数处理成低阶状态。

组装好矩阵后,正常求解即可。在后处理插值中,同样高阶部分使用高阶插值,低阶部分使用低阶插值,避免精度浪费。

4.结果测试

为了与之前文章对比,采用相同的模型10*10*10的网格,首先取x<5的区域为二阶基函数,其他区域为一阶基函数,得到的阶数分布如上图。具体的电场衰减结果与理论解进行对比:    

分别对比一阶、二阶与文章二阶矢量有限元实现-四面体网格的结果精度进行对比结果如下:

整体上看,混合阶的精度在一阶、二阶之间,这也符合预期。再看看其三维可视化结果,更容易观察出混合阶的优势:    

由于x<5的区域是二阶,可以明显看出x<5的区域,插值的电场结果更加的光滑,而相反x>5区域依旧呈现一阶的锯齿状结果。

在实际结果中,我们可能只对x=0位置或者附近的电场感兴趣,如此通过混合阶有限元,就能避免其他区域不必要的高阶有限元阶数。

再测试y<5的区域采用二阶网格,其他区域采用一阶网格的三维可视化结果,如下图:    

依然可以明显看出,二阶部分的插值结果明显要比一阶部分的插值结果光滑很多。由此基本上可以确定对于一阶、二阶的混合阶矢量有限元的求解是正确的。

结束语

1.本文章实现了简单的一阶、二阶的混合阶有限元,并讨论了混合阶有限元的关键技术点。

2.本文章仅仅是对混合阶有限元的简单实现操作,在具体工程案例中,还需要考虑具体 位置的阶数分布,这需要具体的仿真经验与对模型电场分布规律的了解等,最佳的有自适应技术,通过电场、模型分布规律自动实现阶数分布的确定,这其中涉及到网格剖分、阶数分布特征、自适应技术、专业知识背景等等。


博主长期深入实践电磁学领域的有限元技术,感兴趣的朋友可以添加博主公众 号,欢迎共同探讨与有限元相关的技术知识。



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

二阶矢量有限元实现-四面体网格

简介作者认为有限元最复杂的部分就是高阶矢量有限元的实现。其棱边、面、体之间的关系与高阶基函数交织在一起,再加上棱边、面均具有方向的特性,导致实现起来比较困难。本次以霍姆霍兹方程出发,在之前一阶矢量有限元的基础上,实现了二阶矢量有限元。依旧采用边值问题为描述电场衰减的霍姆霍兹矢量方程,其有限元推导等流程可以参考:三维四面体矢量有限元实现-霍姆霍兹方程-高斯积分,这里不再赘述。1.高阶基函数根据四面体网格,首先得到线性插值基函数:一阶基函数:直接给出,具体参考文章三维四面体矢量有限元实现-霍姆霍兹方程-高斯积分。将式子中梯度项展开,得到:基函数旋度项的通式:二阶基函数推导:在一阶基础上,所有的20个基函数与棱边、面的关系如下:对应的具体二阶基函数表达式如下:可以发现,其本质上是二阶倒数的全基函数与三阶倒数的旋度项基函数组合而成。对基函数的旋度与展开式可以获得:面的展开式:面的旋度推导,首先以线性基函数为基准,推导得到:然后对线性基函数的梯度展开,进一步推导得到:到这里,公式推导完成,无论是矢量基函数的旋度与矢量基函数本身而言,其均为形成的矩阵20*3,两两相乘后,通过高斯积分,最终得到20*20的系数矩阵矩阵。2.四面体网格、系数矩阵组装与边界条件加载四面体网格,不同于之前,因为基函数包含了面的信息,因此必须获得所有棱边和所有面的信息,并且唯一确定其标记,这就需要对四面体网格进行几何网格信息的提取。在组装系数矩阵的过程中,必须确保系数矩阵的每一项为全局映射关系,如此才能进行各个单元的累加。其中Nedge1部分与一阶一样,必须保证棱边方向唯一;Nedge2无需考虑,只需要与Nedge1一致即可;而Nface1、Nface2均需要考虑,因为面的三个节点编号顺序不一致,会导致同一个面在不同单元结果是不一样,不满足唯一性,因此需要确定面方向的唯一。最简单的方式就是Nface1顺序定义为全局面的顶点编号从大到小排列,Nface2的编号按照Nface1的排列错一位。如上述表格。第一类边界条件的高阶矢量基函数加载与高阶节点有限元的加载方式一致,对于一阶部分,在边界棱边与边界面上强加已知数值,在边界棱边与面的二阶部分强加零元素。3.结果展示模型依旧为:研究区域大小10m*10m*10m,频率10000Hz,电导率1欧姆米。由于采用二阶有限元,因此未知数会成倍增加,因此对网格粗化,共计289个四面体网格,110个顶点,498个棱边,678个面。a.一阶矢量有限元求解的数值解与理论解对比:三维可视化结果:数值可视化结果出现“块状”的分布,也是低阶矢量有限元的体现,在梯度方向完全没有约束的情况下导致的。b.二阶矢量有限元求解的数值解与理论解对比:直观可以看出,精度相比于一阶而言,得到了明显改善。可视化结果如下:可视化结果更加的明显,其一阶中出现的分块情况不再体现。主要原因是由于二阶基函数保留的一阶的梯度约束项,当然本身也有二阶精度高于一阶的原因。在详细分别对比一阶、二阶与文章XX的结果精度进行对比结果如下:对比发现,2阶用更少的自由度得到了更好的精度。同样的网格下,精度提升在5倍左右,计算时间慢10倍。但是在1阶使用超5000的自由度下也无法达到2阶2300的自由度的精度。因此,二阶的精度效果还是非常具体的。总结本文介绍了二阶矢量有限元的实现过程与一些技术细节,并对比了相同网格下不同阶数的求解精度的对比。在使用高斯积分求解系数矩阵的情况下,二阶矢量有限元的难点不再是20*20的单元系数矩阵,而是棱边、面、节点的全局映射关系与矢量基函数的一一对应,稍微出错即全盘皆输。其次则是网格的处理,如何高效的获取全局棱边编号、面的编号以及他们与单元的关系,这也是实现高阶有限元的难点之一。来源:实践有限元

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