首页/文章/ 详情

间断伽辽金(DG)方法入门学习:一维泊松方程为例

9月前浏览619

简述

传统有限元法(FEM)的解在单元界面是强制连续的,间断伽辽金(DG)方法的核心思想是放松连续性约束,在每个单元上独立地使用局部多项式空间逼近解,允许解在单元界面处跳跃。

边值问题

考虑一个简单的一维边值问题,即泊松方程:

齐次狄利克雷边界条件:

虽然该问题是光滑的,但是作为学习入门,不可失为一种很好的方法。

网格划分与基函数

这里考虑足够简单的1阶基函数,这部分与传统有限元一致,首先将求解区间 [0,L]划分为 N个单元:

设均匀网格 h=L/N。在每个单元上,使用线性多项式近似,也就是传统有限元的1阶基函数:

其导数为:

网格剖分与单元基函数的选择与传统有限元完全一致,并没有任何差别。

DG推导:系数矩阵的边界项

确定网格和基函数后,接下来就是系数矩阵组装,这里和有限元有相似,也有本质上差别。

首先是微分方程到变分问题的推导,这部分与传统传统有限元一样,推导得到:

在传统有限元中,解是连续的,内部界面处的边界项会成对抵消,此时上述的边界项在内部单元一一抵消,只剩下研究区域的外边界。

而在DG中,不允许它们抵消,因为解uh和其导数du/dx在界面处可能不连续。此时DG在边界上引入一个新的量来代替边界面上的不确定性,即数值通量,q.n来代表边界上的通量。它表示界面两侧解信息的某种组合:

这里,n是界面的单位外法向量。在一维情况下,n在左边界为-1,在右边界为+1。数值通量的选择不是唯一的,不同的选择对应不同的DG格式。这里选择一种最流行、稳健的格式:对称内惩罚法。

选择SIPG格式定义数值通量:

作用:保证一致性。设想如果精确解是光滑的,那么在界面处左值梯度和右值梯度的平均值就等于真实的物理通量。这确保了我们的离散格式是原始方程的一个真实近似。

作用:保证稳定性。它像一根“弹簧”,惩罚解在界面处的跳跃。跳跃越大,这个项产生的“恢复力”就越大,从而防止解出现非物理的振荡,并保证解的唯一性。

将数值通量带入到全局方程中,乘以试探函数,得到:

如此,得到DG的实际离散方程。

具体案例推导

以两个单元为例,展示如何将上述弱形式转化为具体的矩阵元素。对于上述边值问题,当网格仅两个N=2的时候,h=0.5。此时网格与单元基函数可以直接表达出来:

单元1的线性基函数:

单元2的线性基函数:

未知数向量为:

此时可见,内部边界面是x=0.5位置的点,通过管理单元1右值与单元2左值来耦合两个单元。

第一步:按照传统有限元获得每个单元系数矩阵并组装不含有边界通量的系数矩阵。单元刚度矩阵公式与传统有限元计算方法一致:

由于1阶导数,并且均匀剖分,因此对于这两个单元,其系数矩阵是一样的,推导可得:

组装整体系数矩阵为:

这里可见,与有限元的本质区别,这个系数矩阵的单元1和单元2并没有任何耦合关系,二者是完全独立的。

第二步:接下来就是DG的核心部分,推导界面项矩阵。

首先,我们设定公共法向 n指向正方向(向右),因此在界面分界处,有:

因此,跳跃项为:

平均项为:

进一步推导惩罚项矩阵:

取sigma=3,得到惩罚项的矩阵:

一致性项与对称项矩阵:

带入到一致性项中,得到:

忽略掉与当前边界面无关的项:left u1 和right u2去掉,得到:

因此,整理整个界面上的矩阵:惩罚项、一致性项和对称项,得到:

将之前的全局系数矩阵加入界面矩阵,得到:

最终,得到加入了边界项后的系数矩阵。这就是整个间断伽辽金的系数矩阵的组装过程。

右端项与边界条件

组装好系数矩阵后,继续处理右端项和边界条件,这部分的组装方式与传统有限元一致,需要注意是组装过程中,右端项也是不进行强制耦合,例如上述N=2的例子,单个单元的右端项为:

当f=2,h=0.5的时候,组装整体右端项:

加载边界条件与传统有限元一致:乘以大数法或者去除边界项,这里采取第二种方法,得到的最终的线性方程组为:

实现线性方程求解器,求解得到结果为:

以上即使整个一维DG算法的流程。关键在于边界项位置的耦合方法。

测试结果

对于上述案例,当N=2的时候,结果已经给出,当把N=8调整大,得到结果:

此时发现,虽然结果是在边界是间断的,但是单元内的数值与实际结果差异很大,这时候调整sigma=10、50,得到结果:

可以看出,随着惩罚项逐渐变大,该结果与理论结果基本上一致。并且在分界面上可以看见是不连续的。但是如何选取合适的sigma参数,还需要进一步研究。

总结

本文对间断伽辽金(DG)法进行了入门级介绍,大致说明该方法与传统有限元方法的区别在什么地方,更加深入的研究还需要进一步学习了解。

与有限元相比,传统有限元是全域弱解形式,单元之间是强行连续的;而间断伽辽金是单元弱解+通量耦合的组合方法,放松了边界的连续性条件,允许边界上数值通量不连续。


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

有限元区域分解技术入门级实现-泊松方程

简述在所有有限元数值模拟领域,都会面临精度、效率、计算资源不足这三大问题。尤其对于动辄上千万网格的复杂模型,在这些问题上都具有极大的挑战。因此,有限元区域分解技术孕育而生。本文从最简单的二维泊松方程为例,介绍有限元区域分解技术的基本实现流程。该方法将计算区域分解成多个子区域,分别对每个区域进行独立求解,然后再对耦合区域求解,从而解决大规模问题。1.边值问题边值问题依然沿用最简单的二维泊松方程:其有限元离散方程为:具体有限元推导这里不再介绍,参考:有限元文章集合-2024年2.区域分解技术假设对研究区域[0,1]X[0,1]进行网格剖分,以x=0.5为分界面,剖分成两套网格:区域分解的技术的步骤:1.独立求解区域1、2,将区域1、2中与分界面点(耦合点)无关的点(内部点)的信息独立聚合到耦合点上;2.寻找区域之间耦合点的物理关系,在系数矩阵中强加耦合点的约束关系(拉格朗日乘子),从而得到关于耦合点的新的系数方程组,并求解该方程组,从而得到耦合点的解。3.根据耦合点解回代得到每个区域内部点的解。下面更加详细的介绍这个流程:首先区域1,区域2具有独立编号,因此可以独立的对两个区域进行有限元矩阵组装:然后分别确定两个区域的内部点与耦合点的ID,因此两个区域的有限元方程组均可以表示为:然后采用缩聚的原理,将内部点uI的信息缩聚到耦合点uB上,具体做法:用方程1表示uI,并带入方程2中,得到:最终,转化成求解uB的方程:缩聚相关知识可以参考:缩聚技术在网格结构层面上的技巧此时,独立处理区域1、2的任务完成,分别得到独立的两套系数方程组。写在一起可以表示为:接下来,需要耦合矩阵将两套独立的系数矩阵耦合在一起即可。对于区域1和区域2的耦合点,在泊松方程的物理规律中,区域1求解的耦合点解应该和区域2求解的耦合点解一致,即耦合点的关系具有:写成矩阵形式:这也就是耦合点的关系,耦合矩阵。只需要依次获得每个耦合点的耦合矩阵,然后按照区域1、区域2的耦合点的位置关系将耦合矩阵组装进原系数矩阵中:B1,B2分别是区域1、2的耦合系数矩阵,可以发现,该方程在保留了原有信息的前提下,加入了耦合项:此时,求解该方程,即可得到的解u1B、u2B就是一致的。这里给出该网格下具体的系数矩阵,以供参考:一般的对于大规模网格而言,上述系数矩阵规模是耦合未知数的三倍,依然会很大,因此可以进一步推导,降低矩阵维度,如下:将第一、二个等式带入第三个,可以得到:最后需要求解的问题仅仅是求解lamda,之前的矩阵求解过程均可以在各自区域中独立完成。获得lamda解结果后,依次回代即可求解得到所有未知数。3.结果展示对于上述极其简单网格,其求解只有在中间一个节点非零,区域分解的结果与直接求解整个区域的结果对比如下:可以发现,全域求解和区域分解求解的误差挺大的,并不是完全一致。原因是由于区域分解时耦合点是通过强加耦合方程(拉格朗日算子)实现的,而全域求解是严格按照有限元理论,二者本质上存在差别。将网格量加密,误差会减小,得到的结果直观上也是正确的。全域求解结果:区域分解求解结果:进一步观察上述区域分解的网格,可以发现区域1、2的耦合点是共点的,两个网格能够完全拼起来。对于一些特殊案例,区域之间可能无法完全拼接,耦合位置可能会存在悬浮点的情况,这时候也可以通过耦合边界所在三角形的插值关系,获得每个悬浮点的耦合系数矩阵。例如网格如下:耦合位置存在很多悬浮点,此时对耦合位置的悬挂点插值处理,具体可以参考文章:有限元中悬挂点的处理方式:泊松方程实例,最终可以得到区域分解结果:直观上possion方程的结果是正确的。4.最后本文用最简单的案例介绍了有限元区域分解技术的实现原理。根据有限元区域分解技术的优势不难发现,可以将大规模模型分解成若干个子模型来处理,天然就很适合并行处理,最后的通信也仅在耦合面上,能很好的利用计算机资源,保证精度的情况下高效率完成求解,在大规模网格中是非常实用的。区域分解技术方式还有很多,这里仅介绍其中一种,但是在具体大规模问题实现中,尤其是涉及求逆运算,还有许多关键技术需要共同使用,如此才能实现达到最优的计算效率。博主长期深入实践电磁学领域的有限元技术,感兴趣的朋友可以添加博主公众号,欢迎共同探讨与有限元相关的技术知识。来源:实践有限元

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