非线性多物理场问题的强耦合:Newton Raphson 方法的失败

计算科学 收敛 非线性方程 牛顿法 耦合
2021-11-28 14:39:40

我正在尝试使用有限元和 Newton Raphson 解决方案来解决多物理场问题。我有两个双向耦合的非线性子系统。

第一个子系统包括我求解的方程pf

ua3pf=a3B

这个方程变得非常非线性,由于参数a指数为 3! B是体力和u我要解决的第二个子系统的解决方案。第二个子系统包括取决于梯度的斯托克斯方程pf. 因此,两个系统都是双向耦合的。

我为每个子系统使用 Newton-Raphson 解决方案。首先,我解决pf. 收敛后,我将此解决方案传递给第二个子系统,我也使用 Newton Raphson 方案对其进行求解。那么,解决方案u被传递给第一个子系统......直到两个子系统的解决方案不再改变。请参见下面的流程图。

流程图

到目前为止,此过程运行良好。但是,如果参数的值a变得非常低(因此梯度a变得非常非常低),不再有收敛!原因似乎是两个子系统之间的耦合变得非常强。一个子系统的微小变化会导致另一个子系统的显着变化(尤其是当a非常低)。我尝试了各种好的初始条件,但是,由于第一个子系统的反应非常敏感,到目前为止收敛是不可能的。

在下图中,您可以看到这种方法的解决方案(“隔离方法”-蓝线)与“真正的”解决方案(“全耦合”-红线)有何不同。“真正的解决方案”是基准测试的结果,我通过求解一个包含两个子系统方程的方程组来计算它。

解决方案的差异

两种解决方案之间的最大差异位于a变得非常小。见下图(在这个图中的值pfa被归一化为 0 和 1 之间的范围):

参数 $a$ 和 $p_f$ 的“错误”解决方案

那么:如果子系统中存在低梯度,Newton-Raphson 解决方案是否是解决强耦合系统的错误方法?我的方法可以修复以解决我描述的问题吗?如果是,如何?这个问题有替代的解决方案吗?

3个回答

您现在遇到的问题不是 Newton-Raphson 的失败,而是耦合问题。你正在做迭代的顺序耦合——依次求解每个方程,然后迭代直到(有希望的)收敛。

只要您进行迭代顺序耦合,没有任何求解器替代 NR 可以解决这种缺乏收敛性的问题。

相反,您要考虑使用有关耦合项的更多信息的不同耦合方案。@paul 所建议的实际上等同于使用块对角耦合系统的雅可比行列式近似来执行准牛顿方法。请注意,这不再是 Newton-Raphson,因为您没有耦合系统的真正雅可比行列式 - 相反,您使用比真正的雅可比行列式更少的项来形成雅可比行列式的近似值,并改用它。这是一个很好的起点,因为它不需要额外的物理知识——您可以完全从已有的部分构建它。耦合系统的规范成为您拥有的两个系统的规范的组合。耦合系统的残差成为两个系统残差的向量。

有可能,但不太可能,这将有很大帮助。问题是近似(块对角线)逆与真实逆相距太远。一种可能的选择是尝试 Jacobian-Free Newton Krylov 以获得更好的逆。在您开始将非对角块添加到近似逆块之前,这可能不会工作得更好。

从实际的角度来看——你最好的办法是咬紧牙关,找到一种方法来开始至少包含一些关于方程如何在近似逆中耦合的信息,即在近似雅可比中包含非对角块以用于完全隐式耦合方案。

不要运行 Newton-Raphson 来收敛每个子系统,而是尝试在第一个子系统上进行 1 次迭代,然后在第二个子系统上进行 1 次迭代。这可能会使子系统更加耦合,而不是“遥远”不相关的子解决方案。重复这两步迭代,看看它是否收敛。

这是一个简短的答案,主要是一种解决方法。这可能会在以后再次打击您,但可以为您提供临时解决方案。您可以尝试放松 Newton-Raphson 求解器的解。我的意思是不要取你的非线性系统的完整解,而只是取先前解和新解的一个因子(比如 0.1 新解,0.9 旧解),并使用这个中间解您的其他求解器。这意味着您将放松您的全局方程组(并且在概念上类似于使用单个 Newton-Raphson 迭代的上述答案)。

这通常会导致更稳健的收敛,但结果可能会非常缓慢。