求解二维稳定不可压缩流的简单方法?

计算科学 流体动力学 约束 不可压缩
2021-12-02 21:28:46

我正在尝试制作一个 CFD 模型,在该模型中,我可以将源和汇放置在网格中的任何位置,并获得跨越这些位置之间每个单元边界的流体流速。我从一个简单的 3x3 网格开始,并为每个网格元素求解连续性,但这让我的一些方程很短(9 个方程,12 个未知数)。一般来说,我希望能够将其提升到具有多个流输入的 64x64 网格。

有没有办法约束系统,以便我可以用连续性方程解决它,或者这比我最初想象的更难?

下面是我的 3x3 网格的简单图(o = 源,x = 漏):

-------
|o| | |
-------
| | | |
-------
| | |x|
-------

上述网格内有 9 个单元格和 12 个单元格边界。如何完全约束系统以解决流量问题?

编辑:对 CFD 进行一些阅读,似乎存储每个单元格中心的速度是有利的,并且边界速度将根据周围单元格的中心值计算......虽然我仍然不完全知道如何我的方程会这样看。

4个回答

我无法发表评论,因此作为答案,我建议您查看以下内容:

http://lorenabarba.com/blog/cfd-python-12-steps-to-navier-stokes/ 表格从头到尾?

这将读者从 1d 和 2d 中对流项和扩散项的基本离散化,到通过从连续性方程导出的压力方程处理不可压缩性的方法,到最后一个基本的盖驱动腔代码。所有这些都是在有限差分的上下文中完成的,代码示例易于解释。

我自己遵循了上述课程,发现对入门很有帮助。

仅使用连续性 eqn,您将丢失所有机械平衡:粘性和/或惯性效应将决定这种流动的流线。

如果您的主要目标是使其尽可能简单,我会选择润滑近似值。如果您认为您的流体正在两个间隙非常窄的平板之间渗出,那么最终方程将是:

cv=p

v=0

c是摩擦系数。

你没有说你目前如何求解连续性方程,所以很难说你应该如何扩展这个系统的方法。假设您很可能需要一个有限体积类型的网格,单元中心的压力和与该方向正交的单元边缘的中点处的每个方向的速度。

具有讽刺意味的是,有一种称为“SIMPLE”(压力关联方程的半隐式方法)的迭代方法旨在解决基于预测-校正方案的稳态纳维-斯托克斯方程。它通过求解动量方程的线性形式(预测步骤)来工作,该方程产生通常不满足连续性的速度场。预测速度用于获得受连续性方程约束的压力方程。该方程的结果是大致满足连续性方程(校正步骤)的压力场。使用更新后的压力场,可以轻松地再次更新速度场,使其满足连续性且误差较小。一个人反复地重复这个过程,直到达到稳定状态。

有关其实现的示例,您可能希望查看 OpenFOAM 的 simpleFoam 求解器以获取此类实现的示例:

https://github.com/OpenFOAM/OpenFOAM-2.3.x/tree/master/applications/solvers/incompressible/simpleFoam

诚然,OpenFOAM 不是最容易阅读和理解的软件,但它显示了所有前面提到的步骤(UEqn.H 中的预测器和 pEqn.H 中的校正器)。它可以帮助您作为开发自己的实现的指南。有关软件中术语的更详细解释,您可以考虑查看 Chalmers 的一些教程。特别是,我推荐“深入 icoFoam(和 pisoFoam)”: http ://www.tfd.chalmers.se/~hani/kurser/OS_CFD_2013/aLookInsideIcoFoam.pdf

你只能有 9 个未知数,因为你有 9 个方程。使用交错网格会引入比方程更多的未知数,因此您必须使用并置网格。因此,对具有中心的单元应用连续性方程(i,j)你得到

u|i12,ji+12,j+v|i,j12i,j+12=0

边缘速度可以通过相邻单元格中值的几何平均值来近似。

例如。

ui+12,j=ui+1,j+ui,j2

以这样的方式应用,应该使您能够用 9 个未知数、9 个方程进行离散化。在需要的地方添加源术语。