首页/文章/ 详情

一维混合高阶有限元详细实现过程

1月前浏览569

简述

    一维混合阶有限元,顾名思义,就是把不同阶数的基函数混合在一起。要实现混合阶有限元,这里不得不再次提到叠层基函数和插值基函数的区别,将两者加以对比,更加能理解如何实现混合阶。

    插值基函数的不同阶数的形函数是相对独立的,高低阶不存在包含的关系,因此在阶数不同的分界面上,无法保证基函数阶数一致,所以插值基函数无法实现混合阶有限元。具体插值基函数公式可以参看:一维高阶插值基函数有限元实现

    而叠层基函数的特点就是高阶基函数包含低阶,因此天然的适合做混合阶的实现,在阶数不同的分界面上,通过处理成相对低阶一致,就能够保证基函数阶数一致。

    下面将根据高阶叠层基函数的原理,详细介绍具体边值问题的混合阶实现过程。

1.边值问题

    为了更好的体现混合阶有限元在某些问题上的必要性,这里引入一个新的边值问题:一维电磁波在导体介质上的衰减规律。

    假设电场只沿着X轴振动,磁场只沿着Y轴振动,则根据Maxwell方程的推导并处理,最终可以得到如下的一维电磁场传播规律方程:

    该边值问题在均匀介质中的解析解为:  

2.有限元离散方程

    边值问题的微分方程的推导过程类似:最简单的一维有限元问题:求解cos函数分布 ,不同点在于第二项多了表征研究介质区域属性的系数k,这部分的简略推导如下:

    使用伽辽金推导方法,首先对微分方程乘以试探函数,并且再求解区域积分,得到:

    对上述式子第一项进行分部积分处理后:

    其中,上述等式的右边对一项表示边界位置,这部分对于边界条件,详细推导如下:

    最终得出有限元方程为:

解释为什么第三类边界条件部分的系数矩阵为[1]:

    因为一维度的边界为一个点,也就是零维度,基函数的目的是为了插值得到对应单元类的任意一点值,而一个点零维则表示该单元(点单元)只可能存在一个值(可以理解为不管如何插值,都只有几个结果),所以插值基函数就是[1],对应的系数矩阵就是[1]*[1]=[1].

    可以类比二维的边界是一维,所以二维的边界条件的基函数用的是一维的基函数;三维的边界条件用的基函数是二维的基函数。

3.高阶叠层基函数

    直接给出1、2、3阶基函数的表达式与关系如下:

    其中1阶基函数的详细推导细节参考:最简单的一维有限元问题:求解cos函数分布,高阶基函数通过低阶可以获得。

    从阶数的组成方式可以观察到,1阶基函数是直接与一个点关联,并且具有具体物理意义;2、3阶是与单元的所有点关联,不具备物理意义(无法表示在单元内任何一点的数值解)。所以,1阶基函数的位置表示在点上,2、3阶基函数用单元表示,但是不具备物理意义。这个特点在后面也会多次强调。

4.叠层基函数对应的系数矩阵

    红色方块从小到大表示1、2、3阶,可以直观感受到单元系数矩阵高阶包含低阶的现象。

5.组装系数矩阵

   以三个均匀剖分的单元为例:

     a.给出1阶的全局与局部坐标系映射关系,后期将用于对比混合阶的精度:

    b.1、2、3混合阶全局坐标系与局部坐标系映射关系:  


    将三个单元系数矩阵组装成全局系数矩阵的位置关系如下:

    将第一类边界条件和第三类边界条件加入上述矩阵中,得到:

    从组装结果与网格都明确显示:单元1与单元2分别为3阶和2阶,并且两者相关联的2号节点均表示1阶部分的基函数,也就是说单元1,2在分界点2上自然的满足阶数一致。2号单元与3号单元也是同理,所以这不需要对边界再做阶数一致化处理。注意在二维、三维情况又有所不同。

6.具体系数矩阵与结果对比

    a.首先考虑3个网格单元,给定需要的物理参数与网格剖分信息:

    然后可以得到具体的系数矩阵:

    求解线性方程组后,通过对应阶数插值(高阶叠层基函数必须通过插值获得对应点的数值解,因为仅用1阶部分的结果可能无法体现高阶部分的精度),获得每个单元中心点的数值解,具体的插值方式:

    下面给出具体插值得到的数值解与理论解析解的误差分析结果:

Ex      

theoy      

1阶数值解      

混合阶数值解      

1阶误差%      

混合阶误差%      

实部      

0.6947      

0.7177      

0.6938      

2.31%      

0.09%      

0.2290      

0.2588      

0.2259      

2.97%      

0.31%      

0.0000      

0.0130      

0.0165      

1.30%      

1.65%      

虚部      

0.2257      

0.1648      

0.2260      

6.09%      

0.03%      

0.3152      

0.3086      

0.3167      

0.66%      

0.15%      

0.2079      

0.2200      

0.2101      

1.22%      

0.23%      

    1阶数值解对比理论解析解:

    1、2、3阶混合阶数值解对比理论解:

    计算结果显示:纯粹1阶对比混合阶的精度要低;而混合阶中,阶数越高,与解析解的误差越小,3阶、2阶、1阶的单元数值解实部误差分布为:0.09%、0.31%、1.65%。可见,混合阶有限元的实现是成功的。  

    b.考虑20个网格单元,具体参数如下:

    1阶计算结果对比解析解:

    混合阶阶数信息与计算结果对比解析解:

单元编号      

1      

2      

3      

4      

5      

6      

7      

8      

9      

10      

单元阶数      

3      

3      

3      

3      

3      

3      

2      

2      

2      

2      

单元编号      

11      

12      

13      

14      

15      

16      

17      

18      

19      

20      

单元阶数      

2      

2      

1      

1      

1      

1      

1      

1      

1      

1      

    从20个单元网格的计算结果显示:纯粹1阶的数值结果中,误差较大的位置分布x=0~400位置。因此在混合阶的组合中,将网格的前部分设置为3阶,中部设置为2阶,误差较小的后部分设置为1阶,如此组合的阶数,求解的数值结果误差能控制在了0.04%以下。

7.总结

(1)混合阶的计算精度整体上是明显高于低阶数值结果的;

(2)混合阶的实现过程需要注意的是对高阶部分的编号处理,以及对高低阶分界面的处理,尤其是二维、三维的数值模拟,这一点上要重要注意。

(3)混合阶的必要性:根据20个单元网格的计算结果,纯粹的1阶计算精度,只有左侧网格单元的误差较大,这部分的确需要高阶来提高精度;而在右侧网格的误差很小,这部分不需要高阶。所以混合阶有限元就在精度与内存性能上达到了最优效果,即保证了全局的精度要求,又避免了不必要的内存空间浪费。这对于大规模数据模拟或者仅需要局部最优解的问题来说,是一个非常好的选择。

(4)综述混合高阶有限元实现过程的主要步骤:

       a.网格划分;

       b.边值问题推导出有限元离散化方程;

       c.网格单元阶数的确定;

       d.排列全局计算点(自由度)编号与局部自由度编号的映射关系;

       e.推导叠层基函数表达式与单元系数矩阵;

       f.根据全局编号组装全局系数矩阵;

       g.添加边界条件,对于第一类边界的加入将高阶的点处理成1阶;

       h.求解线性方程组得出数值结果;

       i.使用叠层基函数插值获得研究区域任意一点结果;


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

最简单的一维有限元问题:求解cos函数分布

1.给出边值问题满足cos函数的边值问题:求解区域离散x=(0,2pi)该边值问题的解析解为:2.有限元离散方程推导首先对求解区域离散,例如x=(0,2pi)区域离散得到的网格:这里展示离散成3个单元段,四个节点,对应编号关系如下:针对离散网格,使用伽辽金推导方法对连续的边值问题进行离散,首先对微分方程乘以试探函数,并且再求解区域积分,得到:对上述式子第一项进行分部积分处理后:根据边界条件对上述的等号右端第一项分析:在x=0处是第一类边界条件,后续强加边界后会覆盖掉这里x=0项的值;在x=2pi处是第二类边界条件,对应给出的第二类边界条件等于0,也就是在x=2pi处加入第二类边界条件的系数矩阵为零;具体详细的公式,在后续给出,这里继续推导区域内的有限元方程:对求解区域进行网格划分,引入每个单元的线性插值型函数,表示为:对上述方程进行离散,得到有限元离散方程:其中,试探函数不等于零,因此约去,简化用矩阵表示,得到:当加入边界条件后,变成:上述就是有限元离散方程,K表示对应边值问题的有限元系数矩阵。3.确定形函数在每个小单元内,通过端点解与形函数的组合可以获得单元内任意一点的求解结果:理解为在单元(一维线段)内u任意一点值有两个端点u1,u2通过插值函数N获得。因此不难理解,型函数N必须满足在端点1处插值的点为u1,在端点2处插值结果为u2。使用拉格朗日插值公式,可以直接获得满足上述要求的基本插值函数:其中,a等于线段的长度,当型函数为线性一阶基函数的时候,形函数就等于插值函数:可以简单验证,上述形函数满足:4.单元系数矩阵推导在确定形函数后,根据有限元离散方程,发现还需要形函数的梯度,因此根据形函数与插值函数的关系,推导如下:根据有限元离散方程的系数矩阵K,其中主要有两部分组成,梯度*梯度与N*N,因此,分开考虑两部分,带入形函数的梯度推导结果,得到:其中第一项是常数积分,很容易获得;第二个公式可以查表获得,这里手动积分看看原理。对第二项的积分变量转化到§下,因为§的积分范围是一定的(0,1),因此:所以,得到第二项的积分结果:一般的,通过带入公式计算得到系数或者查表得到:5.组装全局系数矩阵根据上述离散网格,离散成三个单元,因此,单元长度a等于2pi/3,因此第一个单元的系数矩阵:其他两个单元一次可以得到相同的系数矩阵,然后把三个系数矩阵根据单元节点列表将局部单元系数矩阵一一映射到全局节点中:然后,对系数矩阵添加边界条件:在x=0处的第一类边界条件,使用乘以大数的方法,得到:在x=2pi位置处添加第二类边界条件,在终端边界点添加矩阵Kf:最终得到的系数矩阵数据,线性方程组:6.有限元计算结果求解线性方程组有很多方法,大体分成迭代法和直接求解方法,这里采用matlab中自带的直接求解方法求解,求解结果为:用图像显示,数值结果与解析解的误差:3个网格单元:10个网格单元:50个网格单元:可以直观感受,3个网格的最大计算误差在0.5左右,10个网格误差在0.1以下,而50个网格精度就达到了4e-3,基本上与理论解完全重合。7.总结有限元求解流程:1.确定边值问题与求解区域;2.推导有限元离散方程;3.确定形函数;4.单元系数矩阵推导;5.组装全局系数矩阵;6.求解线性方程组得到数值结果。来源:实践有限元

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