12.6 二维结构 Euler/Navier–Stokes 求解器
12.6 二维结构 Euler/Navier–Stokes 求解器
structured_2d 目录包含在结构贴体网格上求解二维 Euler 方程和 Navier–Stokes 方程的程序。空间离散基于4.2.1节的单元中心有限体积方法,采用4.3.1节的带标量人工耗散中心格式,以及4.3.3节的 Roe 迎风格式。控制方程用显式多级格式积分,见6.1.1或6.1.2节,并通过局部时间推进(9.1节)及中心隐式残差光顺(9.3.1节)加速。速度分量与温度梯度采用4.4.1节的对偶控制体方法计算。


程序还可模拟极低马赫数的不可压缩流动,见9.5节。为使代码易于理解,没有实现湍流模型。
流动求解器的源代码位于 src 子目录;输入文件、网格与结果位于 run 子目录;doc 子目录包含文件、模块、函数和变量的 HTML 文档。
程序利用虚拟单元概念(8.1节)处理边界条件,采用两层虚拟单元。图12.4展示计算域中的网格,亦见图8.1。程序仅支持单块网格,但边界条件的类型及指定方式非常灵活,提供以下八种边界类型:
-
坐标割线,用于 C 型或 O 型网格;
-
远场,可选涡修正,适用于亚声速及超声速;
-
入口,仅适用于亚声速;
-
出口,适用于亚声速及超声速;
-
流体注入或抽吸;
-
线周期边界;
-
固壁,可为黏性或无黏;
-
对称边界,沿 x=常数或 y=常数的直线。
上述边界条件的实现严格遵循第8章的讨论。
计算空间的四个边界可划分为任意数量的线段,每段可指定不同的边界条件。这与8.9节的网格块接口处理非常相似,实际上,程序较容易扩展到多块网格。边界线段定义与网格分开存储,保存在扩展名为 top 的拓扑文件中。


求解器所用面矢量 SI 与 SJ,即 $ \vec{n} \cdot \Delta S $,其定义见图12.5。它们分别对应控制体 $ \mathsf{VOL}(\mathsf{I},\mathsf{J}) $ 的左面与底面,亦即 $ \Omega_{I,J} $,并指向控制体外部。其余两面的面矢量分别由 $ -\mathsf{SI}(\mathsf{I}+1,\mathsf{J}) $ 和 $ -\mathsf{SJ}(\mathsf{I},\mathsf{J}+1) $ 得到。因此,每个控制体只需存储两个面矢量。
12.6.1 运行示例
作为测试算例,计算对称 NACA 0012 翼型的跨声速绕流,远场边界条件如下:
-
马赫数 $ M_{\infty} = 0.8 $;
-
迎角 $ \alpha = 1.25^{\circ} $;
-
静压 $ p_{\infty} = 1.0 \times 10^{5} $ Pa;
-
静温 $ T_{\infty} = 288.0 K $。
模拟采用 Roe 迎风空间离散与显式时间推进,参数为 $ \sigma = 5.0 $、$ \epsilon = 1.2 $,限制器系数 K=30.0,熵修正系数 $ \delta = 0.05 \cdot c $。
算例网格可用12.3节的程序生成,也以 n0012.grd 文件提供于 run 子目录。求解器还需要各种参数,设置边界条件、数值格式及收敛历程与绘图文件输出;这些数据位于用户输入文件 n0012_input_r。


假设求解器源代码已编译,详情见 README.txt,打开终端窗口(Windows 中为命令提示符),进入 run,再输入以下命令即可开始模拟:
Struct2D n0012_input_r
计算产生图12.6的收敛历程,图12.7展示翼型周围的马赫数等值线。