对于电场矢量波动方程的数值模拟,矢量有限元是求解电场分布规律的常见数值方法。在之前的实践过程中发现,二阶的计算精度虽然有效的高于一阶,但是未知数也是成倍的增加,在实际工程中无论是效率和精度都不是最优的选择,对此,混合阶矢量有限元可能是更好的选择,既能保证感兴趣的位置精度,同时降低不必要区域的阶数。
这篇文章抛砖引玉,探讨实现基于一阶、二阶下混合阶的矢量有限元。
其中基于矢量有限元的整个实现流程可以参考以下文章,这里不再介绍。重点介绍混合阶矢量有限元的一些关键技术点与测试结果。
本次混合阶是基于一阶、二阶的,因此这里给出一阶二阶的基函数表达式
一阶基函数:
二阶基函数:
再次提及,二阶基函数中包含了一阶基函数,这是混合阶有限元能实现的基本要求。高阶基函数可以理解为基函数的本身的高阶项,因此在四面体单元不存在具体的某个点与之对应,这是区别于插值基函数而言。
确定基函数后,可以发现一阶基函数会形成6*6的单元系数矩阵,而二阶基函数会形成20*20阶的单元系数矩阵。
由于整个网格中,不再是统一的一阶或者二阶,因此首先必须确定每个四面体网格的阶数,例如测试模型10*10*10的模型,规定x<5区域部分为二阶基函数,其余为一阶基函数,得到的阶数分布规律如下:
可见混合阶网格的自由度不再很容易获得,不同阶数单元的自由度不同,一阶为6个自由度,二阶为20个自由度,分别用棱边、面表示。因此需要计算整个模型中实际的未知数个数。对于上述示意图而言,需要计算得到红色 区域的棱边数量与面的数量,并且对它们进行编号,如此可以得到:
获得这些信息后,然后再根据总未知数的关系,得到单元与每个未知数上的映射关系,以便于后续的系数矩阵组装。
此外,还需知道一阶和二阶四面体单元所在分界面的面、棱边的编号信息关系,因为在高阶向低阶基函数的过渡区域,我们需要统一阶数,即将四面体相连的高阶棱边、面处理成低阶的状态。
在获取的必须的网格拓扑关系、自由度关系与一阶、二阶基函数后,组装矩阵则是按照正常的有限元系数矩阵组装即可,一阶的四面体累加上6*6单元系数矩阵,二阶的四面体累加上20*20单元系数矩阵。
边界条件依然是使用第一类边界条件,对于基函数阶数分界面而言,需要统一阶数,将高阶部分基函数处理成低阶状态。
组装好矩阵后,正常求解即可。在后处理插值中,同样高阶部分使用高阶插值,低阶部分使用低阶插值,避免精度浪费。
为了与之前文章对比,采用相同的模型10*10*10的网格,首先取x<5的区域为二阶基函数,其他区域为一阶基函数,得到的阶数分布如上图。具体的电场衰减结果与理论解进行对比:
分别对比一阶、二阶与文章二阶矢量有限元实现-四面体网格的结果精度进行对比结果如下:
整体上看,混合阶的精度在一阶、二阶之间,这也符合预期。再看看其三维可视化结果,更容易观察出混合阶的优势:
由于x<5的区域是二阶,可以明显看出x<5的区域,插值的电场结果更加的光滑,而相反x>5区域依旧呈现一阶的锯齿状结果。
在实际结果中,我们可能只对x=0位置或者附近的电场感兴趣,如此通过混合阶有限元,就能避免其他区域不必要的高阶有限元阶数。
再测试y<5的区域采用二阶网格,其他区域采用一阶网格的三维可视化结果,如下图:
依然可以明显看出,二阶部分的插值结果明显要比一阶部分的插值结果光滑很多。由此基本上可以确定对于一阶、二阶的混合阶矢量有限元的求解是正确的。
1.本文章实现了简单的一阶、二阶的混合阶有限元,并讨论了混合阶有限元的关键技术点。
2.本文章仅仅是对混合阶有限元的简单实现操作,在具体工程案例中,还需要考虑具体 位置的阶数分布,这需要具体的仿真经验与对模型电场分布规律的了解等,最佳的有自适应技术,通过电场、模型分布规律自动实现阶数分布的确定,这其中涉及到网格剖分、阶数分布特征、自适应技术、专业知识背景等等。
博主长期深入实践电磁学领域的有限元技术,感兴趣的朋友可以添加博主公众 号,欢迎共同探讨与有限元相关的技术知识。