海浪的纳维-斯托克斯方程的实现

计算科学 模拟 纳维斯托克斯
2021-12-17 08:44:53

我正在进行一项本科研究,以实时模拟浅水区的海浪。我试图将我的研究建立在 Navier-Stokes 方程上,因为它们会产生最准确的数学结果。作为开始,我应该研究 3D Navier-Stokes 方程的现有实现。

我在哪里可以找到最适合我研究目的的实现?

我还遇到了一组方程,称为从 Navier-Stokes 方程推导出的浅水方程。它们也有合适的实现吗?

我也可以知道解决这些方程存在的不同方法的优缺点......

3个回答

3D Navier-Stokes 的数值求解器:我假设您的意思是不可压缩流体。这是一个很大的问题;有很多方法和很多代码。

浅水方程:同样,有很多方法和代码。我会指出我最了解的那些。两者都是 Clawpack 的一部分。

  • PyClaw - 通用双曲守恒定律求解器,包括 1D 和 2D 浅水求解器。接口是 Python。包括 MPI 并行性。如果你只处理理想化的问题,我会选择这个选项。
  • GeoClaw - 用于模拟海啸、风暴潮和洪水的广泛使用的代码。该接口部分是 Python,部分是 Fortran。包括自适应网格细化和 OpenMP 并行性。如果您打算在模拟中加入真实世界的水深测量等内容,我会选择此选项。

我在FreeFEM++ wiki中使用有限体积法在 FreeFEM++ 中找到了浅水方程的实现看看纸。

浅水方程最重要的限制可以说是无法表示倾覆的波浪。图形领域的人试图克服这个限制,例如这篇论文我不确定这个模型是否容易扩展到物理上精确的解决方案。

至于浅水方程的实现,开始研究的一个好点可能是使用最简单的选项,即有限差分法。您可以在此处找到 MATLAB 实现实际的模拟循环适合一行。