2025–2026 学年第二学期
北京理工大学 空天科学与技术学院
任杰
John D. Anderson Computational Fluid
Dynamics: The Basics with Applications
McGraw-Hill, 1995
任玉新 陈海昕
计算流体力学基础 清华大学出版社,2006
张德良
计算流体力学教程 高等教育出版社,2010
蔡庆东
计算流体动力学
北京大学本科生研究生专业基础课讲义,2018
真正理解 CFD 的最好方式,是自己实现数值算法并运行计算 - John D. Anderson
两平行平板之间的粘性流体流动,其中:
\[ \mu \frac{d^2 u}{dy^2}=0 \]
\[ u(y)=U\frac{y}{h} \]
\[ -\frac{\mathrm{d}p}{\mathrm{d}z} +\mu \frac{1}{r}\frac{\mathrm{d}}{\mathrm{d}r} \left(r\frac{\mathrm{d}u}{\mathrm{d}r}\right)=0 \]
\[ u(y,t)=U\left[1-\operatorname{erf}\!\left(\frac{y}{2\sqrt{\nu t}}\right)\right] \]
在现代科学与工程中,流体力学问题通常具有以下特点:
这些问题往往无法通过解析方法求解,因此需要借助计算方法进行研究。
计算流体力学(Computational Fluid Dynamics, CFD)是利用数值方法与计算机技术求解流体力学控制方程的一门学科。
其核心思想是通过数值离散的方法,将连续的偏微分方程转化为可在计算机上求解的代数方程组,从而获得流场中的速度、压力、温度等物理量分布。
在流体力学的发展过程中,主要形成了三种互补的研究方法:
理论分析(Theoretical Analysis)
通过数学方法对流动方程进行解析求解,从而揭示基本物理规律。
实验研究(Experimental Methods)
通过风洞、水槽等实验装置直接测量流动现象。
数值模拟(Computational Methods)
通过计算机求解流体控制方程,获得流动的详细信息。
传统上,理论与实验构成流体力学研究的两大支柱。然而随着计算机技术的发展,计算方法逐渐成为第三种重要研究手段。
因此,在现代工程实践中,流体问题通常通过 理论、实验与计算三者结合 的方式进行研究。
随着计算能力的迅速提升,CFD 已成为工程设计和科学研究中的重要工具。典型应用包括:
CFD 的一个重要优势是可以提供完整的流场信息,例如
实体形式(向量形式):
\[ \frac{\partial \rho}{\partial t}+\nabla\cdot(\rho\mathbf{u})=0 \]
笛卡尔坐标系分量形式(Einstein 求和约定):
\[\frac{\partial \rho}{\partial t}+\frac{\partial (\rho u_i)}{\partial x_i}=0\]
不可压缩流体(\(\rho=\text{const}\)):
\[ \frac{\partial u_i}{\partial x_i}=0 \]
在指标记号中,如果某个指标在同一项中 重复出现两次,则默认对该指标在所有空间方向求和,而不必显式写出求和符号 \(\sum\)。例1:在三维空间中
\[a_i b_i=\sum_{i=1}^{3}a_i b_i\]
例2:速度散度
\[\frac{\partial u_i}{\partial x_i}=\frac{\partial u}{\partial x}+\frac{\partial v}{\partial y}+\frac{\partial w}{\partial z}\]
\[ \frac{\partial (\rho \mathbf{u})}{\partial t} + \nabla \cdot (\rho \mathbf{u}\mathbf{u}) = -\nabla p + \nabla \cdot \boldsymbol{\tau} + \rho \mathbf{f} \]
笛卡尔坐标系分量形式为
\[\frac{\partial (\rho u_i)}{\partial t}+\frac{\partial (\rho u_i u_j)}{\partial x_j}=-\frac{\partial p}{\partial x_i}+\frac{\partial \tau_{ij}}{\partial x_j}+\rho f_i\]
对于牛顿流体,
\[\tau_{ij}=\mu\left(\frac{\partial u_i}{\partial x_j}+\frac{\partial u_j}{\partial x_i}\right)-\frac{2}{3}\mu\frac{\partial u_k}{\partial x_k}\delta_{ij}\]
\(\tau_{ij}\) 为粘性应力张量,其中 \(\delta_{ij}\) 为 Kronecker delta
为何会出现 \(2/3\) ?
各向同性牛顿流体中,黏性应力与速度梯度线性相关:
\[ \tau_{ij} = 2\mu S_{ij} + \lambda (\nabla \cdot \mathbf{u}) \delta_{ij} \]
其中
\[ S_{ij}=\frac{1}{2}\left(\frac{\partial u_i}{\partial x_j}+\frac{\partial u_j}{\partial x_i}\right) \]
关键要求:黏性应力不包含各向同性部分(由压力单独承担)
应力分解
\[ \sigma_{ij} = -p\delta_{ij} + \tau_{ij} \]
👉 单位张量 \(\delta_{ij}\) 是唯一各向同性二阶张量,其强度由“迹”决定
\[ \boldsymbol{\tau}=\begin{bmatrix} 2\mu\dfrac{\partial u}{\partial x}+\lambda\nabla\cdot\mathbf{u} & \mu\left(\dfrac{\partial u}{\partial y}+\dfrac{\partial v}{\partial x}\right) & \mu\left(\dfrac{\partial u}{\partial z}+\dfrac{\partial w}{\partial x}\right)\\[1.0em] \mu\left(\dfrac{\partial v}{\partial x}+\dfrac{\partial u}{\partial y}\right) & 2\mu\dfrac{\partial v}{\partial y}+\lambda\nabla\cdot\mathbf{u} & \mu\left(\dfrac{\partial v}{\partial z}+\dfrac{\partial w}{\partial y}\right)\\[1.0em] \mu\left(\dfrac{\partial w}{\partial x}+\dfrac{\partial u}{\partial z}\right) & \mu\left(\dfrac{\partial w}{\partial y}+\dfrac{\partial v}{\partial z}\right) & 2\mu\dfrac{\partial w}{\partial z}+\lambda\nabla\cdot\mathbf{u} \end{bmatrix} \]
其迹为: \[ \tau_{kk} = (2\mu + 3\lambda)(\nabla \cdot \mathbf{u}) \]
\[ \tau_{kk} = 0 \quad \Rightarrow \quad \lambda = -\frac{2}{3}\mu \]
\[ \frac{\partial (\rho E)}{\partial t} + \nabla \cdot \left[(\rho E + p)\mathbf{u}\right] = \nabla \cdot (\boldsymbol{\tau}\cdot\mathbf{u}) - \nabla \cdot \mathbf{q} + \rho \mathbf{f}\cdot\mathbf{u} \]
分量形式
\[ \frac{\partial (\rho E)}{\partial t}+\frac{\partial}{\partial x_j}\left[(\rho E+p)u_j\right]=\frac{\partial}{\partial x_j}\left(\tau_{ij}u_i\right)-\frac{\partial q_j}{\partial x_j}+\rho f_i u_i \]
其中
\[ E = e + \frac{1}{2}(u^2 + v^2 + w^2) \]
表示单位质量的总能量(total energy per unit mass)
在计算流体力学中,三大守恒律通常写成统一形式:
\[ \frac{\partial \mathbf{U}}{\partial t} + \nabla \cdot \mathbf{F} = \nabla \cdot \mathbf{F}_v + \mathbf{S} \]
对于三维可压缩流
\[ \mathbf{U}= \begin{bmatrix} \rho\\ \rho u_1\\ \rho u_2\\ \rho u_3\\ \rho E \end{bmatrix}, \qquad \mathbf{F}_j= \begin{bmatrix} \rho u_j\\ \rho u_1u_j+p\delta_{1j}\\ \rho u_2u_j+p\delta_{2j}\\ \rho u_3u_j+p\delta_{3j}\\ (\rho E+p)u_j \end{bmatrix}, \qquad \mathbf{F}_{v,j}= \begin{bmatrix} 0\\ \tau_{1j}\\ \tau_{2j}\\ \tau_{3j}\\ \tau_{ij}u_i-q_j \end{bmatrix}, \qquad \mathbf{S}= \begin{bmatrix} 0\\ \rho f_1\\ \rho f_2\\ \rho f_3\\ \rho f_i u_i \end{bmatrix} \]
其中
热流:\(q_j=-\kappa\frac{\partial T}{\partial x_j}\).
\((\nabla \cdot \mathbf{F})=\frac{\partial F_{k j}}{\partial x_j}\),\(k=1,\dots,5\)(方程编号),\(j=1,2,3\)(空间方向)
\[ \frac{\partial \mathbf{U}}{\partial t} + \nabla \cdot \mathbf{F} = \nabla \cdot \mathbf{F}_v + \mathbf{S} \]
该统一形式具有三个重要特点:
因此这是 现代CFD代码(OpenFOAM、SU2、Fluent等)普遍采用的基本方程形式。
✔ 前两步已经完成(物理建模 + 控制方程建立)
建立物理模型
写出控制方程(Navier–Stokes 方程等)
给定初始条件与边界条件
对方程进行数值离散
求解离散方程组
对计算结果进行分析与验证
\[ \frac{\partial \mathbf{U}}{\partial t}+\frac{\partial \mathbf{F}}{\partial x}+\frac{\partial \mathbf{G}}{\partial y}+\frac{\partial \mathbf{H}}{\partial z}= \mathbf{J} \]
\[ \mathbf{U}= \begin{bmatrix} \rho\\ \rho u\\ \rho v\\ \rho w\\ \rho\left(e+\frac{u^2 + v^2 + w^2}{2}\right) \end{bmatrix} \]
\[ \mathbf{F}= \begin{bmatrix} \rho u\\ \rho u^2 + p - \tau_{xx}\\ \rho uv - \tau_{xy}\\ \rho uw - \tau_{xz}\\ \rho u\left(e+\frac{V^2}{2}\right) + pu - q_x - u\tau_{xx} - v\tau_{xy} - w\tau_{xz} \end{bmatrix} \]
\[ \mathbf{G}= \begin{bmatrix} \rho v\\ \rho uv - \tau_{yx}\\ \rho v^2 + p - \tau_{yy}\\ \rho vw - \tau_{yz}\\ \rho v\left(e+\frac{V^2}{2}\right) + pv - q_y - u\tau_{yx} - v\tau_{yy} - w\tau_{yz} \end{bmatrix} \]
\[ \mathbf{H}= \begin{bmatrix} \rho w\\ \rho uw - \tau_{zx}\\ \rho vw - \tau_{zy}\\ \rho w^2 + p - \tau_{zz}\\ \rho w\left(e+\frac{V^2}{2}\right) + pw - q_z - u\tau_{zx} - v\tau_{zy} - w\tau_{zz} \end{bmatrix} \]
\[ \mathbf{J}= \begin{bmatrix} 0\\ \rho f_x\\ \rho f_y\\ \rho f_z\\ \rho(f_x u + f_y v + f_z w) + \dot{q} \end{bmatrix} \]
守恒变量: \[ \rho,\ \rho u,\ \rho v,\ \rho w,\ \rho E \]
特征变量: \[ u,\ v,\ w,\ p,\ e \]
👉 CFD:先求守恒变量,再还原物理量
👉 激波本质就是不连续面
以一维为例:
\[ \rho_1 u_1 = \rho_2 u_2 \]
\[ \rho_1 u_1^2 + p_1 = \rho_2 u_2^2 + p_2 \]
\[ \rho_1 u_1\left(e_1 + \frac{u_1^2}{2}\right) + p_1 u_1= \rho_2 u_2\left(e_2 + \frac{u_2^2}{2}\right) + p_2 u_2 \]
👉 本质上:
\[ F(U_1) = F(U_2) \]
✔ 即:通量在激波两侧相等(连续)
守恒形式积分后:
\[ \frac{d}{dx}F(U)=0 \quad \Rightarrow \quad F = \text{常数} \]
👉 类比:
Shock Capturing(激波捕捉)
Shock Fitting(激波装配)
无滑移条件: \[ u = v = w = 0 \]
温度条件: \[ T = T_w\]
或给定热流(Fourier定律): \[ \frac{\partial T}{\partial n} = -\frac{q_w}{k} \]
👉 压力、密度:由方程求解得到
👉 核心结论:
方程的数学类型 = 流动的信息传播方式
\[ a_1 \frac{\partial u}{\partial x} + b_1 \frac{\partial u}{\partial y}+ c_1 \frac{\partial v}{\partial x} + d_1 \frac{\partial v}{\partial y} = f_1 \]
\[ a_2 \frac{\partial u}{\partial x} + b_2 \frac{\partial u}{\partial y}+ c_2 \frac{\partial v}{\partial x} + d_2 \frac{\partial v}{\partial y} = f_2 \]
定义全微分:
\[ du = \frac{\partial u}{\partial x}dx + \frac{\partial u}{\partial y}dy \]
\[ dv = \frac{\partial v}{\partial x}dx + \frac{\partial v}{\partial y}dy \]
方程组 \[ a_1 \frac{\partial u}{\partial x} + b_1 \frac{\partial u}{\partial y}+ c_1 \frac{\partial v}{\partial x} + d_1 \frac{\partial v}{\partial y} = f_1 \]
\[ a_2 \frac{\partial u}{\partial x} + b_2 \frac{\partial u}{\partial y}+ c_2 \frac{\partial v}{\partial x} + d_2 \frac{\partial v}{\partial y} = f_2 \]
写为矩阵形式:
\[ \begin{bmatrix} a_1 & b_1 & c_1 & d_1 \\ a_2 & b_2 & c_2 & d_2 \\ dx & dy & 0 & 0 \\ 0 & 0 & dx & dy \end{bmatrix}\begin{bmatrix} \frac{\partial u}{\partial x} \\ \frac{\partial u}{\partial y} \\ \frac{\partial v}{\partial x} \\ \frac{\partial v}{\partial y} \end{bmatrix}=\begin{bmatrix} f_1 \\f_2 \\du \\dv \end{bmatrix} \]
\[ [A] =\begin{bmatrix} a_1 & b_1 & c_1 & d_1 \\ a_2 & b_2 & c_2 & d_2 \\ dx & dy & 0 & 0 \\ 0 & 0 & dx & dy \end{bmatrix} \]
将第一列替换为右端项:
\[ [B] = \begin{bmatrix} f_1 & b_1 & c_1 & d_1 \\ f_2 & b_2 & c_2 & d_2 \\ du & dy & 0 & 0 \\ dv & 0 & dx & dy \end{bmatrix} \]
则:
\[ \frac{\partial u}{\partial x} = \frac{|B|}{|A|} \]
在点 \(P\):
👉 这些量正是矩阵中的变量 👉 不同方向(不同 \(dx, dy\)):

但是,有一个重要的例外!
如果选择某个方向,使:
\[ |A| = 0 \]
则:

👉 当:
\[ |A| = 0 \]
对应方向:特征方向(Characteristic direction)
对应曲线:特征线(Characteristic curve)
在特征线上:
👉 本质:PDE 在该方向上“退化”
展开行列式:
\[ |A|=(a_1c_2 - a_2c_1)(dy)^2- (a_1d_2 - a_2d_1 + b_1c_2 - b_2c_1) dx\,dy+ (b_1d_2 - b_2d_1)(dx)^2 = 0 \]
令 \[ a = (a_1c_2 - a_2c_1), \quad b = - (a_1d_2 - a_2d_1 + b_1c_2 - b_2c_1), \quad c = (b_1d_2 - b_2d_1) \] 得到 \[ a \left(\frac{dy}{dx}\right)^2+ b \left(\frac{dy}{dx}\right)+ c = 0 \]
判别式:
\[ D = b^2 - 4ac \]
| 类型 | 数学特征 | 典型方程 | 物理/计算特征 |
|---|---|---|---|
| 双曲型 | 有两组实特征方向 | 波动方程、Euler方程 | 扰动沿特征线以有限速度传播,解与初始条件关系密切 |
| 抛物型 | 有一组实特征方向 | 热传导方程、边界层方程 | 具有“沿主方向推进”的特点 |
| 椭圆型 | 无实特征方向 | Laplace方程、Poisson方程 | 某点解受整个区域边界条件共同影响,体现全局耦合 |
方程组 \[ a_1 \frac{\partial u}{\partial x} + b_1 \frac{\partial u}{\partial y}+ c_1 \frac{\partial v}{\partial x} + d_1 \frac{\partial v}{\partial y} = f_1 \]
\[ a_2 \frac{\partial u}{\partial x} + b_2 \frac{\partial u}{\partial y}+ c_2 \frac{\partial v}{\partial x} + d_2 \frac{\partial v}{\partial y} = f_2 \]
为简化分析,令\(f_1=f_2=0\),写为向量形式:
\[ [K]\frac{\partial W}{\partial x} + [M]\frac{\partial W}{\partial y} = 0 \]
其中:
左乘 \([K]^{-1}\):
\[ \frac{\partial W}{\partial x} + [N]\frac{\partial W}{\partial y} = 0 \]
其中:\([N] = [K]^{-1}[M]\)
👉 方程类型由矩阵 \([N]\) 的特征值决定
\[ |[N] - \lambda [I]| = 0 \]
线性化后方程:
\[ (1 - M_\infty^2)\frac{\partial u'}{\partial x} + \frac{\partial v'}{\partial y} = 0 \]
\[ \frac{\partial u'}{\partial y} - \frac{\partial v'}{\partial x} = 0 \]
\[ [K] = \begin{bmatrix} 1 - M_\infty^2 & 0 \\ 0 & -1 \end{bmatrix}, \quad [M] = \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} \]
\[ [N] = [K]^{-1}[M] =\begin{bmatrix}0 & \frac{1}{1 - M_\infty^2} \\-1 & 0\end{bmatrix} \]
\[ |[N] - \lambda [I]| = 0 \]
展开:
\[ \lambda^2 + \frac{1}{1 - M_\infty^2} = 0 \Rightarrow \lambda = \pm \frac{1}{\sqrt{M_\infty^2 - 1}} \]
① 写成矩阵形式
② 构造 \([N] = [K]^{-1}[M]\)
③ 求特征值
④ 判定类型
👉 结论:PDE 分类并非总是“纯类型”
👉 不同类型 PDE:
假设你站在图中的点 \(P\),面向 \(x\) 正方向:
这些特征线的一个重要意义在于:
👉 区域 I 被称为点 \(P\) 的影响域(Region of Influence)
👉 区域 III 被称为点 \(P\) 的依赖域(Domain of Dependence)
现在将通过点 \(P\) 的两条特征线向后延伸,直到与 \(y\) 轴相交:
哪些方程属于抛物型方程?
定义:
✔ 示例: