如何通过直线法 (MOL) 求解刚性方程?

计算科学 matlab pde 刚性 线法
2021-12-14 06:23:15

我想求解 7 个耦合方程。我使用直线法(MOL)和离散长度和半径的方程,并及时将它们转换为 ODE 系统。并使用 ode15s 在 MATLAB 中求解它们。但是出现错误:

警告:在 t=5.422028e-006 时失败。如果不将步长减小到低于时间 t 允许的最小值 (1.355253e-020),则无法满足积分容差。

这意味着方程太僵硬了。我该如何解决?还有其他方法吗?方程式是正确的。我敢肯定。

1个回答

ode15s 旨在处理 ODE 的刚性系统,所以我怀疑您遇到的问题是否是您的“方程太僵硬”

由于某种原因,您的空间离散化更有可能出现错误,或者您有其他一些 MATLAB 编程错误。我建议使用以下方法进行调试:将 ode15s 的最终集成时间设置为小于发生故障时的时间:例如 5.2e-6(我假设开始时间为零)。确保您在该间隔内有足够的输出时间,以便您可以在空间网格中的关键点生成合理的因变量图,作为时间的函数。

我的猜测是,如果您查看这些图,您会发现当您接近最后一次时,您的一个或多个因变量将变为无穷大或 - 无穷大。这应该为您提供有关哪些方程导致 ode15s 问题的线索。