不可压缩流(Incompressible Flow) — CAE术语解说
不可压缩流概述
不可压缩流就是流体不会被压缩吧? 水无法压缩,所以水的流动都是这样吗?
严格来说,没有绝对不可压缩的流体。即使是水,在深海1万米处密度也会增加5%左右。但在实际应用中,如果密度变化小到可以忽略,我们就将其视为「不可压缩」。判断标准是马赫数,当 $\mathrm{Ma} < 0.3$ 就没问题。日常的水流基本上都满足 $\mathrm{Ma} \ll 0.3$,所以用不可压缩来处理是合理的。
Ma < 0.3 的判定标准
$\mathrm{Ma} = 0.3$ 在空气中大约是秒速100米。那么空气的流动在某些情况下也可以用不可压缩来计算吗?
完全正确。汽车空气动力学是典型例子,时速100公里对应约 $\mathrm{Ma} \approx 0.08$。建筑物风荷载也是如此。这些都满足 $\mathrm{Ma} < 0.3$,不需要特别用可压缩计算。相反,喷气发动机或超音速飞机周围的流动会有 $\mathrm{Ma} > 0.3$,密度变化变得重要,需要用可压缩求解器。
为什么是0.3而不是0.5或0.1呢?
这来自等熵关系式的推导。当 $\mathrm{Ma} = 0.3$ 时,密度变化约为4.5%。工程实践中「5%以内可以忽略」是经验法则。密度变化按 $\mathrm{Ma}^2$ 的阶次出现,所以当 $\mathrm{Ma}$ 较小时,影响迅速减小。具体地:
取 $\gamma = 1.4$(空气),代入 $\mathrm{Ma} = 0.3$ 得 $\rho/\rho_0 \approx 0.956$,即密度变化4.4%。这就是「0.3标准」的来源。
连续方程 div(u) = 0
听说不可压缩流的连续方程变成 $\nabla \cdot \mathbf{u} = 0$,这是什么意思?
一般的连续方程表达质量守恒:
当假定不可压缩时($\rho = \mathrm{const.}$),可以将 $\rho$ 提出来:
$$\rho \, \nabla \cdot \mathbf{u} = 0 \quad \Rightarrow \quad \nabla \cdot \mathbf{u} = 0$$这表示「任意微小体积进出的流体体积流量始终平衡」。拿装水的桶举例,底部漏水时,进入的水量必须等于流出的水量——就是这样的概念。把软管尖端压窄时,水流速会加快,也是为了满足 $\nabla \cdot \mathbf{u} = 0$ 的条件。
可压缩流中这个方程会更复杂吗?
可压缩流中,密度 $\rho$ 随时间和空间变化,$\partial \rho / \partial t$ 项保留。再加上状态方程 $p = \rho R T$,需要联立求解能量方程。不可压缩的 $\nabla \cdot \mathbf{u} = 0$ 大大简化了方程组,这就是为什么CFD的计算成本会大幅下降。
压力基础求解器与SIMPLE法
CFD中求解不可压缩流时,经常听说「压力基础求解器」和「SIMPLE法」,为什么压力这么重要?
这是不可压缩流最大的数值困难。可压缩流可以从状态方程 $p = \rho R T$ 求得压力,但不可压缩流中 $\rho = \mathrm{const.}$,这条路走不通。压力成为独立变量,需要通过满足 $\nabla \cdot \mathbf{u} = 0$ 的条件来确定。
SIMPLE法是什么样的算法?能简要说明一下吗?
SIMPLE(Semi-Implicit Method for Pressure-Linked Equations)是Patankar在1972年提出的迭代法,流程如下:
- 用假压力 $p^*$ 求解动量方程 → 得到假速度场 $\mathbf{u}^*$
- 计算速度场散度 → $\nabla \cdot \mathbf{u}^* \neq 0$(还未满足连续方程)
- 求解压力修正方程(Poisson型) → 得到修正量 $p'$
- 修正速度和压力 → $p = p^* + p'$, $\mathbf{u} = \mathbf{u}^* + \mathbf{u}'$
- 重复迭代直到收敛
OpenFOAM的 simpleFoam、Ansys Fluent的压力基础求解器、STAR-CCM+的SEGREGATED求解器——全部都以SIMPLE系列算法为基础。还有SIMPLEC(一致性)和PISO(非定常向)的变体。
压力修正方程是Poisson型,就是 $\nabla^2 p' = \text{(散度源项)}$ 这样的形式吗?
完全正确。离散化后变成大规模线性方程组,这个方程的求解占据了SIMPLE法计算成本的绝大部分。所以当感觉「收敛慢」时,检查压力方程的求解方法(如AMG预处理)是常见做法。在实际应用Fluent时,调整AMG循环数或Courant数,体感上就能改变计算时间。
Boussinesq近似与自然对流
Boussinesq近似是不可压缩流的扩展吗? 听说在自然对流中会用到。
Boussinesq近似是「仅在浮力项中考虑密度变化,其他地方仍当作不可压缩」的方法。在运动量方程的浮力项中代入:
其中 $\beta$ 是体膨胀系数。比如空调房间中热空气聚集在天花板、PC机箱内自然对流冷却——这类现象的模拟就用这个近似。这样可以大幅节省计算成本,不必用完全的可压缩性求解器。
这个近似在什么情况下失效呢?
温度差很大时就会失效。判断标准是 $\beta \Delta T \ll 1$。对于空气,$\beta \approx 1/T_0$,所以需要 $\Delta T / T_0 \ll 1$。比如室温300K、温度差30K时,$\Delta T / T_0 = 0.1$ 还是可以接受的。但火灾模拟中 $\Delta T = 700\mathrm{K}$ 时,$\Delta T / T_0 > 2$ 完全不行,必须用低马赫数近似或完全可压缩求解器。
实务判断要点
实际的CFD项目中,初期到底应该用不可压缩还是可压缩来求解,怎么判断比较好?
可以列一个检查清单:
- 从代表流速和音速计算Ma数 → $\mathrm{Ma} < 0.3$ 就可用不可压缩
- 有温度变化吗? → 温度差小的话加入Boussinesq近似
- 密度变化会超过5%吗? → 超过就切换到可压缩求解器
- 音波或冲击波的传播很关键吗? → 关键的话考虑密度基础求解器
比如汽车外部空气动力学无疑用不可压缩,F1后翼周围的空气动力学Ma ≈ 0.25也勉强可以用不可压缩。配管系统的水击(水锤)涉及音速,必须用可压缩——这样记住一些具体例子就不会迷茫了。
正确理解CAE术语是团队沟通的基础。 — NovaSolver Project也将支持实务工作者的学习。
在不可压缩流实务中遇到的课题,欢迎告诉我们
NovaSolver Project致力于解决CAE工程师日常面临的问题——设置的繁琐、计算成本、结果解释——的改善。你的实务经验将成为开发更好工具的动力。
联系我们(准备中)相关话题
价值
详细
错误