我想问一下如何在典型的 DG 代码中实现元素间接口上的积分评估。我可以想到两种基本方法(我在这里假设 2D 网格):
1) 对从每个边缘的“左”和“右”看到的界面数据进行一维插值并进行数值积分。为此,我不需要评估与边缘相邻的元素中的元素形状函数。这可能适用于拉格朗日形状函数(限制为边缘的元素插值和一维边缘插值应该相同)。
2) 将 1D 边缘求积规则解释为在每个元素的边界上放置点的求积,并使用元素形状函数来计算边缘积分。
选项 1) 不需要额外存储跳跃/平均项:对每条边的评估是即时执行的,我可以直接将边界积分添加到弱形式。选项 2) 将需要为接口积分分配大量额外的内存:跳转和平均项只有在我访问每条边的左右邻居之后才完成,并且在正交点评估的临时数据必须在接口积分组装之前等待某个地方. 我还可以遍历所有边并直接从元素形状函数中获取左右插值,但这意味着我每次访问元素形状函数的一个边时都要重新评估元素形状函数(计算开销)。
我认为 1) 的缺点是无法评估高阶方程的元素界面上的形状函数梯度。此外,它可能不适用于某些模态基础(扩展中需要元素内部的所有模态)。
我无法决定哪种方法更好(或者它们是否很好)。也许有一个我没有想到的更聪明的方法。你能分享你的意见吗?