在很多工程物理的有限元仿真过程中,网格剖分是一个难点,得到适合模型的最优网格更是难上加难,自适应有限元则是解决方法之一。
自适应有限元有很多分支,大体上可分成:h型自适应,p型自适应,hp型自适应,r型自适应,本次要介绍的是P型自适应有限元的实现。
p型自适应:在不改变网格的基础上,改变每个网格单元的阶数来实现提高数值解的精度。有文献提及:“p型虽然不如h型更加的直观,但是在收敛效率上通常由于h型自适应”。
这篇文章的边值问题沿用一维电磁波的在介质中的传播规律,具体有限元推导部分可以参考:“自适应有限元技术:一维电场衰减数值模拟”、“一维混合高阶有限元详细实现过程”,本文主要介绍p型自适应部分。
其中重点是三个部分:有限元模拟,后验误差估计,网格优化。
对于一维p型自适应而言,网格优化体现在每个网格上的阶数,根据后验误差与给出的策略即可,不需要改变网格本身。
该边值问题的有限元数值模拟部分的详细实现过程请参考:“一维混合高阶有限元详细实现过程”。
后验误差这里采取基于残差的后验误差,其基本原理是数值解带入到原边值问题中所得到的残差即可评价该网格的精度是否满足要求,关于后验误差更加详细的内容可以参考:“自适应有限元:几种常见的后验误差”。
根据上述公式,对于理论解情况,r是等于零,而对于离散求解的数值解,r一般情况是非零的,这就提供了每个网格解的残差,即可得到对应物理问题在当前网格阶数下的误差情况。
这其中有个关键点是对数值解求取两次导数的技术,对于1阶有限元而言,一次导数为常数,二次导数即为零。这个问题在高阶的情况不用过多纠结,当为高阶的时候,二次导数自然不等于零。
这里展示二次导数的具体推导,同样给出基本的线性基函数:
1阶叠层基函数与一次导数、二次导数的表达式:
2阶基函数则添加:
对于3阶基函数,的第四个基函数为:
N阶基函数的通式表示为:
对于初始网格的阶数选定,均为1阶,然后选择误差较大的一半进行加1,直到所有网格精度均满足要求。
退出自适应迭代标准:选择连续两次迭代变化结果,二者数值结果的误差变化量小于给定范围,即可满足要求,公式如下:
自适应最终结果如下:
单元残差与单元阶数如下:
自适应结果下的电场如下:
单元误差与单元阶数如下:
自适应结果下的电场如下:
单元误差与单元阶数如下:
测试各个模型后,自适应阶数的效果还是比较显著,呈现阶数越高,精度越大的态势。并且在变化区域大的地方阶数会高于阶数低的区域。
实现了一维的P型自适应有限元,由于其一维的原因,不需要对阶数不同单元进行处理,所以其关键在于后验误差的获取和退出迭代标准的判断。
本次选择的后验误差与标准,从简单模型的效果上看不错的,在变化大的地方进行了阶数明显要高于变化小的区域。
一维的p型自适应有限元相对容易简单,这里也仅仅是抛砖引玉,对于二维、三维而言,考虑的因素更多,尤其是均匀网格有时候难以满足要求,对于ph型自适应,加密网格的同时再进行阶数优化可能会是更好的选择。