Matlab实现二维内罚不连续Galerkin泊松问题

计算科学 不连续-galerkin
2021-11-29 19:42:00

基本上,我正在尝试解决 2D 泊松问题,以学习 IPDG 方法的实现。问题状态在狄利克雷边界弱 DG 公式给出了 find u 使得 其中 请注意,表示内部边缘的集合,a(x)(u)=0 in ΩU=0ΓD

aϵ(u,v)=l(v)
aϵ(u,v)=KThKauveΓhΓDe{aune}[v]+eΓhΓDeϵ{avne}[u]+eΓhΓDσ0|e|e[u][v]
Γhϵ从 SIPG、NIPG 或 IIPG 中选择方法。我非常了解如何在 matlab 中计算和组装对体积的积分,但骨架项(第二项和第三项以及第四项)是我的问题。对于这三个术语,我需要一个简单的 matlab 代码帮助。我需要知道如何编码和组装它们。

1个回答

由于您阅读了 Riviere 的书并且知道如何组装元素积分,因此我假设您熟悉诸如

  • 转换为参考元素,
  • 数值求积。

这些技术类似地应用于边缘积分 - 有两个区别:

  1. 积分被转换为参考元素边缘上的积分,然后第二次转换将它们带到参考区间 [0,1] 或 [-1,1],以便可以应用一维正交规则。
  2. 为了考虑相邻元素的贡献,您将从原始公式的每个积分中获得多个项(系统矩阵中的贡献)。

我的建议是在开始实施之前详细写出半离散系统。

对于另一个 DG 公式 (LDG),您可以在此处阅读离散化和实施细节:http: //dx.doi.org/10.1016/j.camwa.2015.04.013 那里解释的许多技术同样适用于 IPDG。对应代码在 Github 上:https ://github.com/FESTUNG/project