← 回到首页 Skip to main content

10.1 相容性要求

第 10 章 相容性、精度与稳定性

在有限体积方法中,需要采用适当方法,近似计算每个控制体上 Navier–Stokes 方程(2.19)的面积分。第4章和第5章介绍了多种空间离散方案。由于对穿过控制体边界的对流通量和黏性通量进行了近似,离散方程与所要求解的控制方程存在差别,由此产生一定的空间离散误差。误差受积分计算所采用的数值格式及离散分辨率影响。因此,一个重要问题是:随着网格不断加密,离散方程的解是否会收敛到控制方程的精确解,以及收敛速度有多快。下面两节将从相容性与精度两方面讨论这一问题。

求解随时间变化的控制方程(2.19),还需要离散守恒变量的时间导数。第6章介绍了若干时间离散方法,并指出各格式具有特定的精度阶数,同时最大时间步长受到一定限制。可利用10.3节将介绍的 von Neumann 稳定性分析,评估这些限制。该节还将研究显式多级时间推进格式与一种一般形式的隐式格式在时间推进过程中衰减离散解误差的能力。阻尼性能决定具体格式的收敛速度和稳健性,也直接影响9.4节介绍的多重网格加速能否成功。

10.1 相容性要求

当时间步长与网格尺寸均趋于零时,若离散方程趋于给定微分方程,则称离散格式具有相容性。相容的格式保证实际求解的是所需的控制方程。文献 $ [1] $ 将其表述为“正确地求解方程”,称为数值验证(verification)。不要将数值验证与物理确认(validation)混淆。物理确认回答的是:“所求解的方程是否正确?”因此,数值验证致力于量化数值误差和发现程序缺陷,物理确认则关注建模误差。详细讨论与建议见文献 $ [2] $ 的指南。

可将函数值展开为 Taylor 级数,以检查数值格式的相容性。将展开式代回离散方程,再减去原微分方程,即得到表示数值误差的各项,称为截断误差。对于相容格式,随着时间步长和网格尺寸减小,截断误差应趋于零。

下面用一个简单例子说明这一概念。考虑以下一维标量方程:

$$ \frac{\partial U}{\partial t}+\frac{\partial U}{\partial x}=0.\tag{10.1} $$

一种很简单而有效的离散格式为

$$ \frac{U_{i}^{n+1}-U_{i}^{n}}{\Delta t}+\frac{U_{i}^{n}-U_{i-1}^{n}}{\Delta x}=0,\tag{10.2} $$

其中,n 表示时间层,i 表示节点编号。将解 $ U_{i}^{n+1} $ 在时间层 n 附近展开,得到

$$ U_{i}^{n+1}=U_{i}^{n}+\Delta t\left(\frac{\partial U}{\partial t}\right)_{i}^{n}+\frac{(\Delta t)^{2}}{2}\left(\frac{\partial^{2}U}{\partial t^{2}}\right)_{i}^{n}+\cdots\tag{10.3} $$

其中,$ (\cdots) $ 表示高阶项。解 $ U_{i-1}^{n} $ 的 Taylor 级数为(参见式(3.1))

$$ U_{i-1}^{n}=U_{i}^{n}-\Delta x\left(\frac{\partial U}{\partial x}\right)_{i}^{n}+\frac{(\Delta x)^{2}}{2}\left(\frac{\partial^{2}U}{\partial x^{2}}\right)_{i}^{n}+\cdots\tag{10.4} $$

将式(10.3)和(10.4)代入离散方程(10.2),得到

$$ \left(\frac{\partial U}{\partial t}+\frac{\partial U}{\partial x}\right)_{i}^{n}=-\frac{\Delta t}{2}\left(\frac{\partial^{2}U}{\partial t^{2}}\right)_{i}^{n}+\frac{\Delta x}{2}\left(\frac{\partial^{2}U}{\partial x^{2}}\right)_{i}^{n}+\cdots\tag{10.5} $$

与微分方程(10.1)比较可见,式(10.5)右侧各项表示截断误差,其阶数为 $ \mathcal{O}(\Delta t, \Delta x) $。由于截断误差在 $ \Delta t \to 0 $、$ \Delta x \to 0 $ 时消失,数值格式(10.2)具有相容性。