地形上水层数值模拟

计算科学 流体动力学
2021-12-22 10:39:40

我正在寻找一种基于网格的数值方法,该方法允许在基于网格的地形上模拟水,大概类似于浅水方程。我有一个地形高程值的方形网格,我想要一种实时演变水位(同一网格上水层高度值)的数值方法。我不介意该方法在某些方面是否不准确,但我希望它能够保持质量并能够在没有任何伪影的情况下处理没有水(即旱地)的情况。

我发现的方法最接近我的意思,但并不适合我的所有需求:

  • Jos Stam 的稳定流体- 似乎没有同时考虑水的高度和地形高度,似乎只考虑了一些溶剂的密度
  • Bedrich Beneš使用浅水模拟的实时侵蚀——迄今为止我发现的最好的,但它缺乏质量守恒,并且不完全清楚如何以合理的方式恢复它
1个回答

这是一个相当广泛的话题。根据您的目标和限制,您可以想到几个选项。它们可以大致分为两类:

欧拉:

  • 正如班格思教授所提到的,您可以使用黎曼求解器在网格上求解浅水方程。
  • 您可以使用两相方法求解 Navier-Stokes 方程,例如水平集(通常不是保守的)、流体体积相场方法。这通常在计算上很昂贵。

拉格朗日:

  • 您可以尝试Smoothed-particle-hydrodynamics此方法通常用于动画流体,也包含在 Blender 等渲染软件中。

稳定流体本身并不是一种计算方法。Jos Stam 刚刚应用半拉格朗日方法将 Navier Stokes 方程的对流项离散化到计算机图形学中。在他写论文之前,这种方法已经在数值天气预报中很常见,但“稳定流体”这个名字可能在计算机图形学界很流行。一些半拉格朗日求解器是质量守恒的。

其它你可能感兴趣的问题