求解刚性 ODE:处理用有限差分计算耗时过长的雅可比项

计算科学 pde 效率 刚性 雅可比
2021-12-04 18:37:28

我有一个描述大气化学和传输的 PDE 系统。我使用有限差分将我的 PDE 系统变成了大约 10,000 个 ODE 的系统。然后,我将 ODE 与 CVODE BDF 方法(来自 Sundials)及时集成。对于我目前对 PDE 的离散化,雅可比近似为带状(带宽 = ~200),因此我一直在使用 CVODE 的直接带状求解器。

但是,我想结合其他描述大气温度演化的 ODE。计算这些新 ODE 的右侧会很慢,因为它需要计算红外光如何穿过大气层(这很慢)。我担心的是计算与大气温度相关的雅可比项将变得不切实际。例如,假设我计算了一个具有有限差分的雅可比项:

d(dT/dt)dfCO2=dFTdfCO2F(fCO2+ΔfCO2)F(fCO2)ΔfCO2

这里是 CO_2 的浓度 T温度。问题是仅计算这一个雅可比项将需要计算,这非常慢(因为红外辐射传输计算很慢)。计算数十个物种的所有雅可比项可能需要几分钟,这是不可接受的。fCO22TF(fCO2+ΔfCO2)

一种可能的解决方案是使用拆分 ODE 求解器,例如ARKODE拆分 ODE 求解器将“快速”解决方案组件与隐式方法集成,将“慢”解决方案组件与显式方法集成。我可以将大气化学与隐式方法结合起来,将温度变化与显式方法结合起来。在这种情况下,我不需要计算温度的雅可比项(因为它是显式集成的)。

我的第一个问题:拆分 ODE 求解器可能适用于我的问题吗?

另一种可能的解决方案是使用 CVODE BDF 方法(完全隐式),并忽略需要永远计算的雅可比项,并希望雅可比是非线性求解收敛的足够好的近似值。我的第二个问题:这行得通吗?

任何反馈表示赞赏。

1个回答

我的第一个问题:拆分 ODE 求解器可能适用于我的问题吗?

根据您的描述,这听起来像是拆分 ODE 求解器的教科书用例。无论是隐式方法还是显式方法都不适用于整个 ODE。只要您要明确处理的大气温度动态实际上是非刚性的,IMEX 方法听起来是一个合理的选择。

如果化学+运输与温度之间的时间尺度或评估成本差异非常大,则最好使用 ARKODE 中的 MRIStep 模块。这是对不同分区使用不同时间步长的多速率无穷小 GARK 方法的实现。

大气化学通常非常僵硬。即使它会被隐式处理,它也有可能导致订单减少和效率降低。IMEX 和多速率无穷小方法都容易受到此影响。但是,没有足够的信息可以说明这是否真的会成为您的问题。

我的第二个问题:[不精确的雅可比矩阵与 BDF] 会起作用吗?

对于足够小的时间步长,它会收敛,但速度可能很慢。

牛顿法用于求解非线性系统以计算下一步,对不精确的雅可比矩阵具有相当的弹性。在使用零矩阵作为雅可比矩阵的极端情况下,牛顿法退化为定点迭代。您建议的是一种准牛顿方法,其中一些变量通过牛顿法求解,而另一些变量通过定点迭代求解。这是否可行将取决于温度动态的刚度、时间步长和评估成本。

BDF 非常适合这些不精确的非线性求解。我不熟悉 CVODE 的内部结构,但通常 BDF 实现以高阶外推产生的初始猜测启动非线性求解器。这已经很准确了。不需要多次迭代或精确的雅可比矩阵即可达到所需的精度;它们主要有助于稳定。

结论

可能最简单的想法是尝试使用部分雅可比行列式的 CVODE,因为您的代码已经为此设置了。ARKODE 似乎是一个合理的第二选择,但确实需要额外的工作来对 ODE 的 RHS 进行分区。如果两者都不令人满意,您可能需要考虑 Rosenbrock-W 方法,该方法仅求解线性方程组并接受完全任意的雅可比行列式。这不需要分区,但据我所知不是 SUNDIALS 的一部分。还有更多奇特的技术,例如波形松弛和协同仿真,也可以使用。