使用有限差分法时如何处理弯曲边界条件?

计算科学 pde 有限差分 边界条件
2021-12-20 00:34:00

我正在尝试自己学习数值求解 PDE。

我开始使用有限差分法(FDM)已有一段时间了,因为我听说 FDM 是 PDE 众多数值方法的基础。到目前为止,我对 FDM 有了一些基本的了解,并且能够使用我在图书馆和互联网上找到的资料,为一些简单的 PDE 编写代码,这些资料在常规区域中,但奇怪的是,我得到的那些资料通常很少说话关于不规则、弯曲、奇怪边界的处理,像这样

更重要的是,我从未见过处理弯曲边界的简单方法。例如,本书Numerical Solution of Partial Differential Equations - An Introduction (Morton K., Mayers D) ,其中包含我到目前为止看到的最详细的讨论(主要在p71的3.4和 p199 的6.4 ),已经转向一个对我来说真的很麻烦和令人沮丧的推断。

那么,正如标题所问,对于弯曲的边界,通常人们在使用 FDM 时是如何处理的呢?换句话说,最流行的治疗方法是什么?还是取决于 PDE 的类型?

是否有(至少相对)优雅和高精度的方式来处理弯曲的边界?或者这只是一种不可避免的痛苦?

我什至想问,现在人们真的用 FDM 来做弯曲边界吗?如果不是,它的常用方法是什么?

任何帮助,将不胜感激。

3个回答

大多数 CFD 书籍都涵盖了曲线边界,例如Wesseling 的第 11章或Ferziger 和 Peric 的第 8 章

虽然不是一个基本的理论问题,但在弯曲边界上为高阶方法实现边界条件的实际复杂性是对几何更灵活的方法感兴趣的重要原因,例如有限元方法(包括不连续 Galerkin)。结构化有限差分和有限体积网格在一些 CFD 模拟中仍然使用,但非结构化方法越来越受欢迎,高阶非结构化方法使用的局部运算实际上非常有效,因此与类似的 FD 相比,效率损失可能不会太大方法。(实际上,几何灵活性通常使它们更有效。)

首先回答你的最后一个问题,现在人们是否真的将 FDM 用于弯曲边界,我会说答案是否定的。在商业 CFD 世界中,二阶精确有限体积方案是事实上的行业标准。FV(以及 Jed 提到的有限元/不连续 Galerkin 方法)优于 FD 的优点之一是对复杂边界的处理更加自然。FD 确实提供了很多数值方法(包括 FV)的基础,并且作为第一步学习是必要的,但对于大规模的复杂问题不建议这样做。

至于在FD中处理复杂的边界,我可以想到两种规范的方法,其中一种是你提到的插值/外推法。另一种是在物理空间中使用适合身体的网格点,并使用保形映射到“计算”空间,其中然后可以重写术语,例如(x,y)ξ=ξ(x,y),η=η(x,y)Δξ=Δη=constant

ux=uξξx+uηηx

其中项称为度量项,可以在问题开始时计算(或者对于一个简单的域,您可能有一个精确的保形映射可用),并且可以在逻辑上简单的计算域上计算这个过程使边界条件的实现变得简单,但它需要生成足够平滑的、名义上正交的曲线网格。(ξ,η)(x,y)u

我想说这种贴身网格方法是处理 FD 中弯曲边界的“最流行的处理方法”,但需要注意的是,FD 方法本身对于复杂的应用程序不再非常“流行”。除了非常简单的领域外,它们很少出现在 CFD 文献中。

在过去的 n 年里,我一直致力于高精度 fdm。我已经使用静电 -2 暗拉普拉斯方程作为明确开发高精度算法的示例。直到大约 4 年前,这些问题都是用可能不连续的水平或垂直线点构建的。如果你谷歌我的名字和 fdm 高精度你应该找到参考资料。但这不是你的问题。你的问题是 fdm 和弯曲的边界。大约一年前,我在香港提出了一个 8 阶解决方案(参见具有曲线边界的圆柱对称静电学的有限差分法) 它为靠近边界的内部点创建了 8 阶算法,这些算法当然需要边界另一侧的点。边界另一侧的点只需将网格扩展到另一侧即可。完成此操作后,问题是在放松网格时如何找到这些点的值。它是通过使用算法从边界(已知电位)积分到点来完成的。它相当成功且相当准确~<1e-11,但需要 103 个算法,每个算法都是单独制作的,而且它有点脆弱,可以找到不稳定的几何形状。为了解决上述问题,已经使用(一个!)最小算法找到了一个解决方案(8 级及以下),并且该解决方案表现出相当大的鲁棒性。它已提交,但可以通过电子邮件发送给我作为预印本。我相信这种技术可以扩展到除拉普拉斯以外的与时间无关的 pde(需要线性)和大于 2 的维度。我没有考虑时间相关问题,但是作为幂级数技术的技术应该是适应性强和适用的。大卫