“最简单的”是指从头开始学习和实施的最简单的方法。我希望我的问题或多或少能够得到回答。
“最简单的”是指从头开始学习和实施的最简单的方法。我希望我的问题或多或少能够得到回答。
Answers:
在两个维度上,速度-涡度公式化是最简单的实施方法,因为变量是并置的,但是边界条件可能很复杂,并且不是问题的直接陈述。对于原始变量公式,Harlow和Welch(1965)的交错网格有限差分法是一个很好的起点。
最简单的总是与您的特定兴趣和需求相关。我同意安德斯(Anders)的观点,对于具有简单几何形状的区域上不可压缩的流动,如果同时兼顾易用性和准确性,您将很难击败投影方法(即Chorin的分裂方法)。
为了更详细一点,该方法是在[1]中介绍的问题。在[2]中很好地解释了更现代的二阶近似投影方法。这样做的动机是要求解完整的不可压缩的Navier-Stokes方程,需要同时求解速度场和压力,并且所得线性系统的状态相当恶劣。投影方法通过使用之前时间步长中的压力将每个时间步分为速度求解,然后进行压力更新,从而消除了这个问题,该压力更新实质上使速度场保持不可压缩。
要实现这一点,您将需要一些其他组件,但是可以很容易地学习和编程所有组件。
对于压力求解,假设您对恒定密度的系统感兴趣,则需要求解泊松方程。当然,有数十种算法可以解决此问题,但是到目前为止,最容易实现的算法(如果可能无法完全理解)是共轭梯度(CG)算法。我读过的关于CG的最好的解释之一是乔纳森•舒丘克(Jonathan Shewchuk)撰写的,可以在这里找到。当然,您不必阅读整篇文章,就可以简单地实现该算法。
您将需要另一种算法来处理Navier-Stokes中的对流项。在几个方面,对最灵活的方法(例如Godunov)的鲁棒性实现进行编程可能非常具有挑战性。但是,如果您对雷诺数相对适中的流量(即粘度不可忽略)感兴趣,那么从本质上来说,一种非振荡(ENO)方法很容易实现。[3]中对理论和实现都有很好的概述。
您需要使用隐式方法(通常是Crank-Nicolson)处理粘性项。投影方法文件中对此进行了详细说明,如果粘度恒定,则可以轻松地将CG用于基质求解。
[1] AJ Chorin,Navier-Stokes方程的数值解, J。Math 。计算(22)(1968),第745-762页。
[2] A. Almgren,JB Bell和W. Szymczak,基于近似投影的不可压缩Navier-Stokes方程的数值方法,SIAM J. Sci。计算 17(1996),第258-369页。
[3] S. Osher和R. Fedkiw,水平集方法和动态隐式曲面。纽约Springer-Verlag ,。应用数学科学,2002年,第153页