将线法应用于抛物线 PDE:参考资料和软件

计算科学 pde 数值分析 参考请求 抛物线pde 线法
2021-12-22 16:51:59

您能否提供一些有关抛物线 PDE 的线数值方法 (MOL) 的文献?它是一种求解偏微分方程的方法,仅按空间离散而不按时间离散。获得了一个 ODE 系统,并且可以使用例如 Runge-Kutta 方法对其进行求解。

你知道一些应用线法的求解器(程序、库)吗?这种方法适用于多维(2D、3D)问题吗?

3个回答

对此的一个很好的参考是LeVeque 的有限差分书的第 10 章。当然,它只涵盖了基本的有限差分方法,还有很多其他方法(都在线条框架的方法内)。线的方法确实适用于多维,在刚刚给出的参考文献中讨论了二维问题。

现有的大多数方法和库都是基于线条的方法,所以如果你想要有意义的建议,你需要问一个更具体的问题。

这是一个相当大的问题。基本思想是在求解tu=Lu, 你近似L有一个矩阵A, 并解决

u=Au.
在这个公式中,您有两个主要问题:

  • 使用什么方法来求解 ODE。由于抛物线 PDE 的性质以及它们产生的 ODE 的刚性系统,该方法必须是隐式的。
  • 如何求解线性方程组A1x出现在 ODE 求解器中。这里A是稀疏的。

这些问题并不是直线法或抛物线方程所独有的。Hairer 和 Wanner 的“求解常微分方程”等书籍将涵盖这一点;LeVeque的“有限差分方法”;Trefethen在这里免费提供了一本未完成的教科书;其他 PDE 教科书也涵盖了这一点。

请注意,只是一个显式的 Runge-Kutta 方法不太可能直接工作:ODE 系统通常是僵硬的、稀疏的和非常大的。

粗略地,如何求解所得到的线性方程组的问题可以用不同的方式来解决。如果你能解决A1x直接有效,没有问题。有(多样化的!)迭代方法,如果你能为矩阵找到一个好的预处理器,它们会很好地工作。还有不同的拆分方式,你可以在里面写A=A1+A2+,并定义仅依赖于系统解的 ODE 的数值解Ak1x. 你可以挑Ak方便求解,例如微分算子的各个部分沿各个维度进行。交替方向隐式方法是这种方法的一个示例。

对于软件,大多数 PDE 包都会做这样的事情,比如 CVODE(在 SUNDIALS 中)可能是合适的。

编辑 对于非线性系统,过程大致相同,只是不需要解决像这样的系统A1x您需要使用类牛顿法求解非线性方程组,其中J1x雅可比矩阵需要有效;再次,雅可比很可能是稀疏且非常大的。在这种情况下,CVODE看起来很合适。

编辑正如David Ketcheson正确指出的那样,我的回答假设了许多问题中没有明确指定的事情,如果这些假设不成立,这将使这个答案非常具有误导性。

我没有足够的声誉发表评论,但我希望这个答案对你有所帮助。就个人而言,我发现我通过例子学得最好。尝试查看此处的代码,了解如何在 Python 中使用中心有限差分逼近(使用了 ODE 求解器)实现 MOL。

如果您想了解有关求解 ODE、抛物线 PDE 和 MOL 的更多信息,我建议您阅读 Heath 的科学计算(第 11 章),其中还提供了一些求解 MOL 的示例。祝你好运!