处理有限差分方案中狄利克雷边界条件的最佳实践:添加人工未知数?

计算科学 有限差分 边界条件
2021-12-03 04:49:58

我知道在有限差分方案(以及在较小程度上,有限元方案)中处理 Dirichlet 边界条件的至少两种方法。在这里,我正在考虑求解泊松方程Δu=f,但问题更笼统。

  1. 将边界节点处的函数值视为进一步的未知变量ui, 但添加形式的方程ui=g(xi)到得到的方程组。总的来说,我们将拥有ninner+nboundary方程和未知数,其中ninner是域内部的节点数,并且nboundary是边界上的节点数。

  2. 不要在边界节点处包含固定函数值的变量。总的来说,我们将拥有ninner方程和未知数。

这两种方法具有以下优点和缺点:

  • 在第二种方法中建立方程稍微复杂一些,因为与边界节点相邻的节点的处理方式必须略有不同。这似乎是第一种方法的主要卖点。

  • 使用第一种方法,得到的系统矩阵可能不是对称的。(对称性对于迭代求解器来说非常好。)

  • 第二种方法更接近于对未离散情况的理论处理:在狄利克雷条件为零的情况下,我们在 Sobolev 空间中寻找解H01(Ω)代替H1(Ω).

  • 一旦涉及多个微分算子,例如在斯托克斯方程中,第一种方法就会变得更加混乱。必须在一些结果矩阵中引入零行。

问题:这两种方法中的哪一种是当前推荐的最佳实践?还有其他我忽略的优点或缺点吗?

1个回答

我认为最好的方法取决于您使用的求解器。使用直接方法,我将通过修改右侧(选项 2)来合并 Dirichlet 边界条件。正如您已经列出的那样,主要优点是生成的矩阵是对称的。这不仅可以节省您的存储空间,还可以使用(更)更有效的算法。

还有其他优点。例如,假设您想在域中加入不规则边界。选项 1 现在变得相当复杂,特别是当边界值相互依赖或依赖于解时——例如使用 Neumann 或混合边界条件。选项2将是要走的路。

使用迭代方法,这取决于。例如,在使用几何多重网格时,在域边界附近使用幻影单元通常是有意义的,这样您就可以在任何地方使用相同的平滑器。