当域内有对象时,如何使用有限差分法求解泊松方程?

计算科学 有限差分 泊松 电磁学
2021-12-16 18:13:50

我有兴趣在某个域中解决二维情况下的静电问题,其中导体放置在域内。从数学的角度来看,我必须求解泊松 具有用户定义边界条件的泊松方程(为简单起见,让我们考虑一个矩形域)和域中具有恒定用户定义势的某个区域(见图)。

方案

我使用有限差分法对泊松方程进行数值求解,这意味着我必须在域中构建一个网格,然后尝试找到网格节点处的势值。回想一下,在有限差分法中,我们为网格的每个节点处的未知电位编写了一个方程。这些方程组合在一起形成了一个线性方程组。该系统的解是该域中泊松方程的近似解。

我知道如何在没有任何“内部对象”的情况下构造和求解矩形域中未知潜力的线性方程组。我的问题是:当有一些“内部对象”时,我应该如何解决这个问题?

我目前的想法是记录对象占据的每个节点(图中橙色),然后从线性系统中划掉相应的方程。我还必须修改与恰好位于对象边界附近的节点相对应的方程。完成后,应该可以解决系统问题。然后,使用此解决方案和用户定义的导体上的电位值,可以恢复整个域中的电位。

这是唯一可能的策略还是有更简单的方法可以做到这一点?我对这种方法很感兴趣,从编程的角度来看是最合理的。

顺便说一句:我使用 PETSc 来解决线性系统。对于这种情况,它可能具有某种功能吗?

2个回答

如果您有简单的、网格对齐的内部对象或准确性并不重要,那么请坚持使用您描述的方法。如果您需要准确地表示任意边界形状,那么您可能最好在非结构化网格上使用(更复杂的)有限元方法。

您已经描述了解决此问题的最简单方法。如果内部对象只能与您的网格完全对齐(例如矩形网格中的矩形),这种方法将非常有效。但是,您将边界离散到所选网格上,这会导致内部边界处的低(一阶?)精度,而不管您使用的有限差分离散化的精度顺序如何。根据您的目标,这可能没问题。与求解 PDE 的情况一样,更复杂的边界形状(内部或外部)会产生很大的困难。泊松方程最常见的解决方案是使用贴体网格或非结构化网格。最典型的是在非结构化三角形网格上使用有限元(例如pdf 链接)。这需要处理网格生成,并且通常需要更复杂的数据结构来管理元素之间的关系以及处理非结构化网格的其他挑战。

我在第 4 课中找到了一种针对 dirichlet BCs 的特定方法。展示了一种解决复杂边界问题的可能方法。由于线性插值,我认为可以达到二阶精度。相关页面如下图:
第 4 讲,幻灯片 16