FVM in CFD 学习笔记_第11章_对流项离散

学习自F. Moukalled, L. Mangani, M. Darwish所著The Finite Volume Method in Computational Fluid Dynamics - An Advanced Introduction with OpenFOAM and Matlab
Chapter 11 Discretization of the Convection Term

在前面的第8-9章,咱们详细讲解了在正交、非正交、结构、非结构网格上的通有稳态扩散方程的离散方法。本章咱们讲讲CFD的控制方程中另一个非常重要的项,对流项的离散方法。最初,跟扩散项中所采用的离散方式一样,对流项也是对物理量采用对称和线性分布(廓线profile)假设来离散的,然而,这种分布廓线有很大缺陷,促使人们提出了使用迎风廓线来修正其缺陷。尽管迎风廓线可以得到物理上说得通的结果,然而其被表明是高度diffusive(扩散?)的,导致结果只有一阶精度。为了提高精度,提出了偏迎风的高阶廓线。离散误差倒是降低了,但是高阶廓线却引出了另一种形式的误差,dispersion误差(色散?),关于这种误差的处理方法将放到下一章讲解。还有一点需要说明,我们假设驱动扩散项的流场,是事先已知的。那么流场的计算将放到后续章节里详解(可能你已经猜到了,因为离散方程的系数矩阵本身就是与流场量相关的,哪怕是定常流场,也需要迭代计算,而不可压缩中还有压力速度的耦合问题,还得构造解耦算法来折腾呢)。

1 引言

尽管对流项看起来很简单,然而其离散方法却非常麻烦,以至于人们研究了30来年。这些工作给影响其离散的问题照亮了道路,也催生了大量的离散格式。鉴于文献的数量是如此庞大,咱们不得不用两个章节来分析它们。本章将引入基本概念和高阶(High Order,缩写为HO)偏迎风格式。下一章会讲到对流项的界限(bounding)问题,其有助于发展高阶精度的无振荡对流格式,即,所谓的高分辨率(High Resolution(HR))格式。

为清晰起见,新概念的引入将首先在1维网格上进行,然后再扩展到多维非正交网格上。本章将用1维对流-扩散问题的离散作为开端,通过稳定性判据,表明中心差分算法的缺陷。随后,表明迎风格式可通过该稳定性测试。接着解释了低阶格式的数值diffusion(扩散)误差和高阶格式的数值dispersion(色散)误差。而对高分辨率格式的处理则放到下一章进行讲解。

2 稳态一维对流和扩散

为便于说明问题,给出一个非常简单的一维定常对流-扩散方程,其控制方程为
d ( ρ u ϕ ) d x − d d x ( Γ ϕ d ϕ d x ) = 0 \frac{d(\rho u \phi)}{d x} - \frac{d}{dx}\left( \Gamma^{\phi}\frac{d \phi}{d x} \right)=0 dxd(ρuϕ)dxd(Γϕdxdϕ)=0
万分幸运的是,这个问题存在着解析解,所以它通常用作基准算例来跟各种各样的数值格式做对照。

2.1 解析解

如果截面是不变的,那么这个稳态1维问题的连续方程是
d ( ρ u ) d x = 0 \frac{d (\rho u)}{d x}=0 dxd(ρu)=0
这表明 ρ u \rho u ρu是定值,那么对流扩散方程变成了
ρ u d ϕ d x − d d x ( Γ ϕ d ϕ d x ) = 0 \rho u \frac{d \phi}{d x} - \frac{d}{dx}\left( \Gamma^{\phi}\frac{d \phi}{d x} \right)=0 ρudxdϕdxd(Γϕdxdϕ)=0
x x x积分,得
ρ u ϕ − Γ ϕ d ϕ d x = c 1 \rho u \phi - \Gamma^{\phi}\frac{d \phi}{d x}=c_1 ρuϕΓϕdxdϕ=c1
c 1 c_1 c1为积分常数,由边界条件来定。上面这个方程进一步写成
d ϕ d x = ρ u Γ ϕ ϕ − c 1 Γ ϕ \frac{d \phi}{d x}=\frac{\rho u}{ \Gamma^{\phi}} \phi - \frac{c_1}{ \Gamma^{\phi}} dxdϕ=ΓϕρuϕΓϕc1
引入变量替换,定义 Φ \Phi Φ
Φ = ρ u Γ ϕ ϕ − c 1 Γ ϕ \Phi=\frac{\rho u}{ \Gamma^{\phi}} \phi - \frac{c_1}{ \Gamma^{\phi}} Φ=ΓϕρuϕΓϕc1
则方程变为
d Φ d x = ρ u Γ ϕ Φ \frac{d\Phi}{dx}=\frac{\rho u}{\Gamma^\phi}\Phi dxdΦ=ΓϕρuΦ

d Φ Φ = ρ u Γ ϕ d x \frac{d\Phi}{\Phi}=\frac{\rho u}{\Gamma^\phi} dx ΦdΦ=Γϕρudx
两侧同时积分,得
L n ( Φ ) = ρ u Γ ϕ x + c 3 Ln(\Phi)=\frac{\rho u}{\Gamma^\phi} x + c_3 Ln(Φ)=Γϕρux+c3
其中 c 3 c_3 c3为积分常数,进一步写为
Φ = c 2 e ρ u Γ ϕ x \Phi = c_2 e^{\frac{\rho u}{\Gamma^\phi} x } Φ=c2eΓϕρux
其中 c 2 = e c 3 c_2=e^{c_3} c2=ec3为积分常数,再把 Φ \Phi Φ替换回最初的变量 ϕ \phi ϕ,得到解析解
ϕ = c 2 Γ ϕ e ρ u Γ ϕ x + c 1 ρ u \phi=\frac{c_2\Gamma^\phi e^{\frac{\rho u}{\Gamma^\phi} x }+ c_1}{\rho u} ϕ=ρuc2ΓϕeΓϕρux+c1
一维问题的网格剖分如下图所示
在这里插入图片描述

以上图的 W W W E E E两节点之间的部分为例,边界条件为
{ ϕ = ϕ W a t x = x W ϕ = ϕ E a t x = x E \begin{cases} \phi=\phi_W&at&x=x_W \\ \phi=\phi_E&at&x=x_E \end{cases} {ϕ=ϕWϕ=ϕEatatx=xWx=xE
可根据该边界条件求得积分常数 c 1 c_1 c1 c 2 c_2 c2,从而获得解析解为
ϕ − ϕ W ϕ E − ϕ W = e P e L x − x W L − 1 e P e L − 1 \frac{\phi-\phi_W}{\phi_E-\phi_W}=\frac{e^{Pe_L\frac{x-x_W}{L}}-1}{e^{Pe_L}-1} ϕEϕWϕϕW=ePeL1ePeLLxxW1
其中 P e L Pe_L PeL为Peclet数(基于长度 L L L),代表了变量 ϕ \phi ϕ的对流输运速率与扩散输运速率的比值,即
P e L = ρ u L Γ ϕ L = x E − x W Pe_L=\frac{\rho u L}{\Gamma^\phi}\quad\quad L = x_E-x_W PeL=ΓϕρuLL=xExW
不同的 P e L Pe_L PeL下所得到的不同结果如下图所示,可见, P e L = 0 Pe_L=0 PeL=0时对应的是纯扩散问题, ϕ \phi ϕ W W W E E E的变化是一条直线,而随着 P e L Pe_L PeL的增大,对流输运速率所占比重越来越大, ϕ \phi ϕ W W W E E E的变化也逐渐变为了更加陡峭的廓线形式。
在这里插入图片描述

2.2 数值解

在1维单元上对于1维对流扩散方程 d ( ρ u ϕ ) d x − d d x ( Γ ϕ d ϕ d x ) = 0 \displaystyle\frac{d(\rho u \phi)}{d x} - \frac{d}{dx}\left( \Gamma^{\phi}\frac{d \phi}{d x} \right)=0 dxd(ρuϕ)dxd(Γϕdxdϕ)=0进行数值积分,得
∫ V C [ ∇ ⋅ ( ρ v ϕ ) − ∇ ⋅ ( Γ ϕ ∇ ϕ ) ] d V = 0 \int_{V_C}[\nabla\cdot(\rho\bold v\phi)-\nabla\cdot(\Gamma^\phi\nabla\phi)]dV=0 VC[(ρvϕ)(Γϕϕ)]dV=0
其中 v = u i \bold v=u\bold i v=ui为速度矢量,守恒方程可以写成对流通量和扩散通量的形式,即
∫ V C ∇ ⋅ ( J ϕ , C + J ϕ , D ) d V = 0 \int_{V_C}\nabla\cdot(\bold J^{\phi,C}+\bold J^{\phi,D})dV=0 VC(Jϕ,C+Jϕ,D)dV=0
其中对流通量 J ϕ , C = ρ v ϕ \bold J^{\phi,C}=\rho\bold v\phi Jϕ,C=ρvϕ,扩散通量 J ϕ , D = − Γ ϕ ∇ ϕ \bold J^{\phi,D}=-\Gamma^\phi\nabla\phi Jϕ,D=Γϕϕ。接下来使用散度定理,把体积分转化成面积分,即
∫ V C ∇ ⋅ ( J ϕ , C + J ϕ , D ) d V = ∫ ∂ V C ( J ϕ , C + J ϕ , D ) ⋅ d S = ∫ ∂ V C ( ρ u ϕ i − Γ ϕ d ϕ d x i ) ⋅ d S = 0 \int_{V_C}\nabla\cdot(\bold J^{\phi,C}+\bold J^{\phi,D})dV= \int_{\partial V_C}(\bold J^{\phi,C}+\bold J^{\phi,D})\cdot d\bold S= \int_{\partial V_C}\left(\rho u \phi \bold i-\Gamma^\phi \frac{d\phi}{dx}\bold i\right)\cdot d\bold S = 0 VC(Jϕ,C+Jϕ,D)dV=VC(Jϕ,C+Jϕ,D)dS=VC(ρuϕiΓϕdxdϕi)dS=0
将面积分用流过单元面的通量加和形式表示,即
∑ f ∼ n b ( C ) ( ρ u ϕ i − Γ ϕ d ϕ d x i ) f ⋅ S f = 0 \sum_{f\sim nb(C)}\left(\rho u \phi \bold i-\Gamma^\phi \frac{d\phi}{dx}\bold i\right)_f\cdot \bold S_f=0 fnb(C)(ρuϕiΓϕdxdϕi)fSf=0
注意,如果面积矢量 S f \bold S_f Sf是沿着反方向的( − x -x x方向),那么它的符号是负的,对于恒定截面的情况,上式变为
[ ( ρ u Δ y ϕ ) e − ( Γ ϕ d ϕ d x Δ y ) e ] − [ ( ρ u Δ y ϕ ) w − ( Γ ϕ d ϕ d x Δ y ) w ] = 0 \left[(\rho u \Delta y\phi)_e-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_e\right]- \left[(\rho u \Delta y\phi)_w-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_w\right]=0 [(ρuΔyϕ)e(ΓϕdxdϕΔy)e][(ρuΔyϕ)w(ΓϕdxdϕΔy)w]=0
单元面上的速度 u u u是已知的( u e , u w u_e,u_w ue,uw已知),那些个梯度项( ( d ϕ / d x ) e , ( d ϕ / d x ) w ({d\phi}/{dx})_e,({d\phi}/{dx})_w (dϕ/dx)e,(dϕ/dx)w)用之前讲过的离散方法可以得到。现在的问题是如果继续离散的话,面上的值 ϕ e \phi_e ϕe ϕ w \phi_w ϕw需要用邻近的节点值来得到,确定这些面上值的方法就是文献中所谓的“对流格式”。

2.3 初步推导:中心差分格式(The Center Difference (CD) Scheme)

乍一看,好像没啥难的啊,就跟在扩散项离散中采用的线性插值廓线一样,来做这个对流离散不就好了么,即,在给定面比如右侧面 e e e上的 ϕ \phi ϕ值的计算,可以假设变量的空间分布为
ϕ ( x ) = k 0 + k 1 ( 1 − x C ) \phi(x)=k_0+k_1(1-x_C) ϕ(x)=k0+k1(1xC)
其中的 k 0 k_0 k0 k 1 k_1 k1为系数,使用 ϕ = ϕ E , x = x E \phi=\phi_E,x=x_E ϕ=ϕE,x=xE ϕ = ϕ C , x = x C \phi=\phi_C,x=x_C ϕ=ϕC,x=xC,可得
ϕ e = ϕ C + ϕ E − ϕ C x E − x C ( x e − c C ) \phi_e=\phi_C+\frac{\phi_E-\phi_C}{x_E-x_C}(x_e-c_C) ϕe=ϕC+xExCϕEϕC(xecC)
这便是中心差分格式,其可通过Taylor展开并略去2阶以上的项来推出,即其有2阶精度。

在均匀网格上,该离散型式为
ϕ e = ϕ C + ϕ E 2 \phi_e=\frac{\phi_C+\phi_E}{2} ϕe=2ϕC+ϕE
这样,对于上一小节最后得到的离散格式中,第1个中括号项 [ ( ρ u Δ y ϕ ) e − ( Γ ϕ d ϕ d x Δ y ) e ] \left[(\rho u \Delta y\phi)_e-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_e\right] [(ρuΔyϕ)e(ΓϕdxdϕΔy)e]变为
[ ( ρ u Δ y ϕ ) e − ( Γ ϕ d ϕ d x Δ y ) e ] = ( ρ u Δ y ) e ϕ C + ϕ E 2 − ( Γ ϕ Δ y δ x ) e ( ϕ E − ϕ C ) = F l u x C e ϕ C + F l u x F e ϕ E + F l u x V e \begin{aligned} \left[(\rho u \Delta y\phi)_e-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_e\right] & = (\rho u \Delta y)_e\frac{\phi_C+\phi_E}{2}-\left(\Gamma^\phi \frac{\Delta y}{\delta x}\right)_e(\phi_E-\phi_C) \\ & = FluxC_e\phi_C+FluxF_e\phi_E+FluxV_e \end{aligned} [(ρuΔyϕ)e(ΓϕdxdϕΔy)e]=(ρuΔy)e2ϕC+ϕE(ΓϕδxΔy)e(ϕEϕC)=FluxCeϕC+FluxFeϕE+FluxVe
其中
F l u x C e = Γ e ϕ Δ y e δ x e + ( ρ u Δ y ) e 2 F l u x F e = − Γ e ϕ Δ y e δ x e + ( ρ u Δ y ) e 2 F l u x V e = 0 \begin{aligned} & FluxC_e = \Gamma^\phi_e \frac{\Delta y_e}{\delta x_e}+\frac{(\rho u \Delta y)_e}{2} \\ & FluxF_e = -\Gamma^\phi_e \frac{\Delta y_e}{\delta x_e}+\frac{(\rho u \Delta y)_e}{2} \\ & FluxV_e = 0 \end{aligned} FluxCe=ΓeϕδxeΔye+2(ρuΔy)eFluxFe=ΓeϕδxeΔye+2(ρuΔy)eFluxVe=0
同样,第2个中括号项 − [ ( ρ u Δ y ϕ ) w − ( Γ ϕ d ϕ d x Δ y ) w ] -\left[(\rho u \Delta y\phi)_w-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_w\right] [(ρuΔyϕ)w(ΓϕdxdϕΔy)w]变为
− [ ( ρ u Δ y ϕ ) w − ( Γ ϕ d ϕ d x Δ y ) w ] = − [ ( ρ u Δ y ) w ϕ C + ϕ W 2 − ( Γ ϕ Δ y δ x ) w ( ϕ C − ϕ W ) ] = F l u x C w ϕ C + F l u x F w ϕ W + F l u x V w \begin{aligned} -\left[(\rho u \Delta y\phi)_w-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_w\right] &= -\left[ (\rho u \Delta y)_w\frac{\phi_C+\phi_W}{2}-\left(\Gamma^\phi \frac{\Delta y}{\delta x}\right)_w(\phi_C-\phi_W) \right] \\ & = FluxC_w\phi_C+FluxF_w\phi_W+FluxV_w \end{aligned} [(ρuΔyϕ)w(ΓϕdxdϕΔy)w]=[(ρuΔy)w2ϕC+ϕW(ΓϕδxΔy)w(ϕCϕW)]=FluxCwϕC+FluxFwϕW+FluxVw
其中
F l u x C w = Γ w ϕ Δ y w δ x w − ( ρ u Δ y ) w 2 F l u x F w = − Γ w ϕ Δ y w δ x w − ( ρ u Δ y ) w 2 F l u x V w = 0 \begin{aligned} & FluxC_w = \Gamma^\phi_w \frac{\Delta y_w}{\delta x_w}-\frac{(\rho u \Delta y)_w}{2} \\ & FluxF_w = -\Gamma^\phi_w \frac{\Delta y_w}{\delta x_w}-\frac{(\rho u \Delta y)_w}{2} \\ & FluxV_w = 0 \end{aligned} FluxCw=ΓwϕδxwΔyw2(ρuΔy)wFluxFw=ΓwϕδxwΔyw2(ρuΔy)wFluxVw=0
从而推得对流扩散方程的离散形式为
a C ϕ C + a E ϕ E + a W ϕ W = 0 a_C\phi_C+a_E\phi_E+a_W\phi_W=0 aCϕC+aEϕE+aWϕW=0
其中
a E = F l u x F e = − Γ e ϕ Δ y e δ x e + ( ρ u Δ y ) e 2 a W = F l u x F w = − Γ w ϕ Δ y w δ x w − ( ρ u Δ y ) w 2 a C = F l u x C e + F l u x C w = Γ e ϕ Δ y e δ x e + ( ρ u Δ y ) e 2 + Γ w ϕ Δ y w δ x w − ( ρ u Δ y ) w 2 \begin{aligned} & a_E=FluxF_e=-\Gamma^\phi_e \frac{\Delta y_e}{\delta x_e}+\frac{(\rho u \Delta y)_e}{2} \\ & a_W=FluxF_w=-\Gamma^\phi_w \frac{\Delta y_w}{\delta x_w}-\frac{(\rho u \Delta y)_w}{2} \\ & a_C=FluxC_e+FluxC_w=\Gamma^\phi_e \frac{\Delta y_e}{\delta x_e}+\frac{(\rho u \Delta y)_e}{2}+ \Gamma^\phi_w \frac{\Delta y_w}{\delta x_w}-\frac{(\rho u \Delta y)_w}{2} \end{aligned} aE=FluxFe=ΓeϕδxeΔye+2(ρuΔy)eaW=FluxFw=ΓwϕδxwΔyw2(ρuΔy)waC=FluxCe+FluxCw=ΓeϕδxeΔye+2(ρuΔy)e+ΓwϕδxwΔyw2(ρuΔy)w
由于问题是一维的,有 Δ y e = Δ y w \Delta y_e=\Delta y_w Δye=Δyw,故可把它们都设成1。此外,从连续方程可得到 ( ρ u Δ y ) e − ( ρ u Δ y ) w = 0 (\rho u \Delta y)_e-(\rho u \Delta y)_w=0 (ρuΔy)e(ρuΔy)w=0,且 u u u为常数。假设扩散系数为定值,则离散方程系数变为
a E = − Γ ϕ x E − x C + ( ρ u ) e 2 a W = − Γ ϕ x C − x W − ( ρ u ) w 2 a C = − ( a E + a W ) \begin{aligned} & a_E=-\frac{\Gamma^\phi}{x_E-x_C}+\frac{(\rho u)_e}{2} \\ & a_W=-\frac{\Gamma^\phi}{x_C-x_W}-\frac{(\rho u)_w}{2} \\ & a_C=-(a_E+a_W) \end{aligned} aE=xExCΓϕ+2(ρu)eaW=xCxWΓϕ2(ρu)waC=(aE+aW)
回代到离散格式 a C ϕ C + a E ϕ E + a W ϕ W = 0 a_C\phi_C+a_E\phi_E+a_W\phi_W=0 aCϕC+aEϕE+aWϕW=0,可得
ϕ C − ϕ W ϕ E − ϕ W = a E a E + a W \frac{\phi_C-\phi_W}{\phi_E-\phi_W}=\frac{a_E}{a_E+a_W} ϕEϕWϕCϕW=aE+aWaE
如果是均匀网格,可以写成 P e L = ρ u L Γ ϕ , L = x E − x W Pe_L=\frac{\rho u L}{\Gamma^\phi},L = x_E-x_W PeL=ΓϕρuL,L=xExW的形式,单元 C C C的数值解为(注意,书中给出的公式RHS为 1 2 ( 1 − P e L 2 ) \frac{1}{2}(1-\frac{Pe_L}{2}) 21(12PeL)实际应为 1 2 ( 1 − P e L 4 ) \frac{1}{2}(1-\frac{Pe_L}{4}) 21(14PeL)
ϕ C − ϕ W ϕ E − ϕ W = 1 2 ( 1 − P e L 4 ) \frac{\phi_C-\phi_W}{\phi_E-\phi_W}=\frac{1}{2}\left( 1- \frac{Pe_L}{4} \right) ϕEϕWϕCϕW=21(14PeL)
单元 C C C的精确解,由上一小节的解析解给出
ϕ C − ϕ W ϕ E − ϕ W = e P e L / 2 − 1 e P e L − 1 \frac{\phi_C-\phi_W}{\phi_E-\phi_W}=\frac{e^{Pe_L/2}-1}{e^{Pe_L}-1} ϕEϕWϕCϕW=ePeL1ePeL/21
P e L Pe_L PeL从-10变化到10,数值解和解析解给出的结果展示在下图中,当 P e L Pe_L PeL值(绝对值)较小时,数值解和解析解非常接近,当 P e L Pe_L PeL的值(绝对值)逐渐增大并跨过阈值后,中心差分格式给出的数值解就和解析解产生了很大偏差,其变得不受约束(无界)呈现出不符合物理意义的特性。即,解析解对于正的和负的 P e L Pe_L PeL分别逐渐趋近于0和1,中心差分格式给出的数值解则随着 P e L Pe_L PeL − ∞ -\infin 增大到 + ∞ +\infin +而从 + ∞ +\infin +线性减小到 − ∞ -\infin 。这表明前面离散过程中采用的某些假设是不切实际的或者说是不符合物理意义的,到底是什么原因造成的呢?

在这里插入图片描述

如下图所示,在点 C C C处的扩散所受到 C C C点上游和下游条件的影响是等效的(下图a),而对流过程则是与方向高度相关的过程,其仅在流动方向上有输运特性(下图b)。因此,给上下游节点赋予了同样的权重的线性廓线假设,对于扩散项的近似是没问题的(下图a),却没办法描述对流项的方向特性,此时陡峭的廓线更为合适(下图b),这便是造成前述中心差分格式数值解和解析解之间偏差的原因。

下图c给出了对流-扩散联合效应下的影响区域以及更加实际的廓线,该影响区域在低Peclet数下趋近于扩散区域(下图a),在高Peclet数下则趋近于对流区域(下图b)。因此,只要扩散在传输特性中占优,那么使用线性廓线能产生符合物理实际的解。然而,一旦对流压倒了扩散(问题变得对流占优了),再用线性廓线的假设就会产生不符合物理意义的解。可以容易地估算出Peclet数在何值下会产生该现象,假设流动是沿着 x x x正方向的,注意到 a E a_E aE系数有可能会变成正值,这样便会导致非物理解(如果流动是沿着 x x x负方向的话,那么 a W a_W aW可能会变成正值),即

在这里插入图片描述

a E = − Γ e ϕ Δ y e δ x e + ( ρ u Δ y ) e 2 > 0 ⇒ ( ρ u ) e δ x e Γ e ϕ > 2 a_E=-\Gamma^\phi_e \frac{\Delta y_e}{\delta x_e}+\frac{(\rho u \Delta y)_e}{2}>0 \Rightarrow \frac{(\rho u)_e\delta x_e}{\Gamma_e^\phi} > 2 aE=ΓeϕδxeΔye+2(ρuΔy)e>0Γeϕ(ρu)eδxe>2
定义Peclet数为
P e = ρ u δ x Γ ϕ Pe=\frac{\rho u\delta x}{\Gamma^\phi} Pe=Γϕρuδx
这样,对于均匀网格来说, P e = P e L / 2 Pe=Pe_L/2 Pe=PeL/2,那么 a E > 0 a_E>0 aE>0的条件变为
P e > 2 Pe>2 Pe>2
因此,单元的Peclet数(Pe)大于2的话,离散过程变得不相符,因为此时邻居值的增加会导致 C C C处值的降低,这又会反过来进一步增加邻居值,导致错误的放大。

当然,通过减小网格尺度让单元Peclet数小于2,就可以避免这种情况。然而,对于很多实际情况,这样做的话将会显著增加存储量和计算量,以至超出计算机负荷。而且,对于纯对流的问题(即不考虑粘性扩散效应,例如,Euler流动),这么做的话也是不可行的,所以需要发展修正方法。

2.4 迎风格式(Upwind Scheme)

在这里插入图片描述

如上图,与对流过程更加契合的格式为迎风格式,迎风格式基本上是模仿了对流的物理特性,即,单元面上的值是依赖于迎风节点上的值的,换言之,依赖于流动方向的。图中所示的单元面上的值用下式给出
ϕ e = { ϕ C i f m ˙ e > 0 ϕ E i f m ˙ e < 0 ϕ w = { ϕ C i f m ˙ w > 0 ϕ W i f m ˙ w < 0 \phi_e=\begin{cases} \phi_C & if & \dot m_e > 0 \\ \phi_E & if & \dot m_e < 0 \end{cases} \quad\quad\quad \phi_w=\begin{cases} \phi_C & if & \dot m_w > 0 \\ \phi_W & if & \dot m_w < 0 \end{cases} ϕe={ϕCϕEififm˙e>0m˙e<0ϕw={ϕCϕWififm˙w>0m˙w<0
(注意,这里的 ϕ w \phi_w ϕw没有写反,因为质量流量 m ˙ \dot m m˙跟速度 u u u是不同的,看下面说明)

其中 m ˙ e \dot m_e m˙e m ˙ w \dot m_w m˙w是在面 e e e w w w的质量流量(面积矢量的正方向是朝外的,而非指向单元中心 C C C的)
m ˙ e = ( ρ v ⋅ S ) e = ( ρ u S ) e = ( ρ u Δ y ) e m ˙ w = ( ρ v ⋅ S ) w = − ( ρ u S ) w = − ( ρ u Δ y ) w \begin{aligned} & \dot m_e=(\rho \bold v \cdot \bold S)_e=(\rho u S)_e=(\rho u \Delta y)_e \\ & \dot m_w=(\rho \bold v \cdot \bold S)_w=-(\rho u S)_w=-(\rho u \Delta y)_w \end{aligned} m˙e=(ρvS)e=(ρuS)e=(ρuΔy)em˙w=(ρvS)w=(ρuS)w=(ρuΔy)w
如此,面 e e e的对流通量可写成
m ˙ e ϕ e = ∣ ∣ m ˙ e , 0 ∣ ∣ ϕ C − ∣ ∣ − m ˙ e , 0 ∣ ∣ ϕ E = F l u x C e C o n v ϕ C + F l u x F e C o n v ϕ E + F l u x V e C o n v \begin{aligned} \dot m_e \phi_e &= ||\dot m_e,0||\phi_C-||-\dot m_e,0||\phi_E \\ &= FluxC_e^{Conv}\phi_C+FluxF_e^{Conv}\phi_E+FluxV_e^{Conv} \end{aligned} m˙eϕe=m˙e,0ϕCm˙e,0ϕE=FluxCeConvϕC+FluxFeConvϕE+FluxVeConv
其中
F l u x C e C o n v = ∣ ∣ m ˙ e , 0 ∣ ∣ F l u x F e C o n v = − ∣ ∣ − m ˙ e , 0 ∣ ∣ F l u x V e C o n v = 0 \begin{aligned} &FluxC_e^{Conv}= ||\dot m_e,0|| \\ &FluxF_e^{Conv}=-||-\dot m_e,0|| \\ &FluxV_e^{Conv}=0 \end{aligned} FluxCeConv=m˙e,0FluxFeConv=m˙e,0FluxVeConv=0
其中的 ∣ ∣ a , b ∣ ∣ = max ⁡ ( a , b ) ||a,b||=\max(a,b) a,b=max(a,b)代表了 a a a b b b中的最大值。同样手法,也可推导面 w w w的对流通量
m ˙ w ϕ w = ∣ ∣ m ˙ w , 0 ∣ ∣ ϕ C − ∣ ∣ − m ˙ w , 0 ∣ ∣ ϕ W = F l u x C w C o n v ϕ C + F l u x F w C o n v ϕ W + F l u x V w C o n v \begin{aligned} \dot m_w \phi_w &= ||\dot m_w,0||\phi_C-||-\dot m_w,0||\phi_W \\ &= FluxC_w^{Conv}\phi_C+FluxF_w^{Conv}\phi_W+FluxV_w^{Conv} \end{aligned} m˙wϕw=m˙w,0ϕCm˙w,0ϕW=FluxCwConvϕC+FluxFwConvϕW+FluxVwConv
其中
F l u x C w C o n v = ∣ ∣ m ˙ w , 0 ∣ ∣ F l u x F w C o n v = − ∣ ∣ − m ˙ w , 0 ∣ ∣ F l u x V w C o n v = 0 \begin{aligned} &FluxC_w^{Conv}= ||\dot m_w,0|| \\ &FluxF_w^{Conv}=-||-\dot m_w,0|| \\ &FluxV_w^{Conv}=0 \end{aligned} FluxCwConv=m˙w,0FluxFwConv=m˙w,0FluxVwConv=0
把扩散项用上标 D i f f {Diff} Diff表示,推得一维稳态对流扩散方程的离散格式为
( F l u x C e C o n v + F l u x C e D i f f + F l u x C w C o n v + F l u x C w D i f f ) ϕ C + ( F l u x F e C o n v + F l u x F e D i f f ) ϕ E + ( F l u x F w C o n v + F l u x F w D i f f ) ϕ W = 0 \begin{aligned} (FluxC_e^{Conv}&+FluxC_e^{Diff}+FluxC_w^{Conv}+FluxC_w^{Diff})\phi_C\\ &+(FluxF_e^{Conv}+FluxF_e^{Diff})\phi_E+(FluxF_w^{Conv}+FluxF_w^{Diff})\phi_W=0 \end{aligned} (FluxCeConv+FluxCeDiff+FluxCwConv+FluxCwDiff)ϕC+(FluxFeConv+FluxFeDiff)ϕE+(FluxFwConv+FluxFwDiff)ϕW=0
可写成下面形式
a C ϕ C + a E ϕ E + a W ϕ W = b C a_C\phi_C+a_E\phi_E+a_W\phi_W=b_C aCϕC+aEϕE+aWϕW=bC
其中
a E = F l u x F e C o n v + F l u x F e D i f f = − ∣ ∣ − m ˙ e , 0 ∣ ∣ − Γ e ϕ S e δ x e a W = F l u x F w C o n v + F l u x F w D i f f = − ∣ ∣ − m ˙ w , 0 ∣ ∣ − Γ w ϕ S w δ x w a C = ∑ f ( F l u x C f C o n v + F l u x C f D i f f ) = ∣ ∣ m ˙ e , 0 ∣ ∣ + ∣ ∣ m ˙ w , 0 ∣ ∣ + Γ e ϕ S e δ x e + Γ w ϕ S w δ x w = − ( a E + a W ) + ( m ˙ e + m ˙ w ) ⏟ = 0 b C = − ∑ f ( F l u x V f C o n v + F l u x V f D i f f ) = 0 \begin{aligned} a_E&= FluxF_e^{Conv}+FluxF_e^{Diff} \\ &= -||-\dot m_e,0|| - \Gamma^\phi_e \frac{S_e}{\delta x_e} \\ a_W&= FluxF_w^{Conv}+FluxF_w^{Diff} \\ &=-||-\dot m_w,0|| -\Gamma^\phi_w \frac{S_w}{\delta x_w} \\ a_C&= \sum_f \left( FluxC_f^{Conv} + FluxC_f^{Diff} \right)\\ &=||\dot m_e,0||+||\dot m_w,0||+\Gamma^\phi_e \frac{S_e}{\delta x_e}+\Gamma^\phi_w \frac{S_w}{\delta x_w} \\ &=-(a_E+a_W)+\underbrace{(\dot m_e + \dot m_w)}_{=0} \\ b_C&=-\sum_f \left( FluxV_f^{Conv} + FluxV_f^{Diff} \right)\\ &=0 \end{aligned} aEaWaCbC=FluxFeConv+FluxFeDiff=m˙e,0ΓeϕδxeSe=FluxFwConv+FluxFwDiff=m˙w,0ΓwϕδxwSw=f(FluxCfConv+FluxCfDiff)=m˙e,0+m˙w,0+ΓeϕδxeSe+ΓwϕδxwSw=(aE+aW)+=0 (m˙e+m˙w)=f(FluxVfConv+FluxVfDiff)=0
显而易见,迎风格式推出了负的邻居系数,而且在满足连续方程的情况下(即, m ˙ e + m ˙ w = 0 \dot m_e + \dot m_w=0 m˙e+m˙w=0),主节点上的系数为
a C = − ( a W + a E ) a_C=-(a_W+a_E) aC=(aW+aE)
这确保了有界性。

在连续方程满足的前提下,假设为均匀网格和常扩散系数,用 ϕ E \phi_E ϕE ϕ W \phi_W ϕW所给出的 ϕ C \phi_C ϕC值为
ϕ C − ϕ W ϕ E − ϕ W = 2 + ∣ ∣ − P e L , 0 ∣ ∣ 4 + ∣ ∣ − P e L , 0 ∣ ∣ + ∣ ∣ P e L , 0 ∣ ∣ = 2 + ∣ ∣ − P e L , 0 ∣ ∣ 4 + ∣ P e L ∣ \frac{\phi_C-\phi_W}{\phi_E-\phi_W} =\frac{2+||-Pe_L,0||}{4+||-Pe_L,0||+||Pe_L,0||} =\frac{2+||-Pe_L,0||}{4+|Pe_L|} ϕEϕWϕCϕW=4+PeL,0+PeL,02+PeL,0=4+PeL2+PeL,0
将该迎风格式的数值解与精确的解析解、之前中心差分格式的数值解一并展示于下图中。当 P e L Pe_L PeL的值(绝对值)较小时,迎风格式并没有中心差分格式的结果准确,这是因为迎风廓线只有一阶精度,而线性廓线具有二阶精度;而当 P e L Pe_L PeL的值(绝对值)较大时,中心差分格式是不稳定的,其表现为无界性,已经失去了物理意义,而此时的迎风格式,尽管并不是特别准确,但是物理意义上是正确的。
在这里插入图片描述

如此一来,就有了精确性和稳定性之间的权衡。使用迎风格式,得到的解即便在高 P e L Pe_L PeL下依旧保持有界性和有物理意义,然而付出的代价就是精度较低。另一方面,二阶精度的中心差分格式当 P e L Pe_L PeL超出特定阈值的时候会变得不稳定,产生不符合物理意义的解。两种格式都受到了误差的影响,一个影响了精确性,另一个影响了稳定性。这些都是什么误差呢?在引入背风(downwind)格式后,咱们再讨论这个问题。

2.5 背风格式(Downwind Scheme)

在这里插入图片描述

如果把迎风格式反过来用,即,用背风格式的话,会发生什么有趣的事情呢?如上图所示,在这种插值廓线中,是把界面背风方向节点处的值视作界面上的值,这样,面 e e e和面 w w w处的值为
ϕ e = { ϕ E i f m ˙ e > 0 ϕ C i f m ˙ e < 0 ϕ w = { ϕ W i f m ˙ w > 0 ϕ C i f m ˙ w < 0 \phi_e=\begin{cases} \phi_E & if & \dot m_e>0 \\ \phi_C & if & \dot m_e<0 \end{cases} \quad\quad\quad \phi_w=\begin{cases} \phi_W & if & \dot m_w>0 \\ \phi_C & if & \dot m_w<0 \end{cases} ϕe={ϕEϕCififm˙e>0m˙e<0ϕw={ϕWϕCififm˙w>0m˙w<0
面上的对流通量可以写成
m ˙ e ϕ e = − ∣ ∣ − m ˙ e , 0 ∣ ∣ ϕ C + ∣ ∣ m ˙ e , 0 ∣ ∣ ϕ E = F l u x C e C o n v ϕ C + F l u x F e C o n v ϕ E + F l u x V e C o n v m ˙ w ϕ w = − ∣ ∣ − m ˙ w , 0 ∣ ∣ ϕ C + ∣ ∣ m ˙ w , 0 ∣ ∣ ϕ W = F l u x C w C o n v ϕ C + F l u x F w C o n v ϕ W + F l u x V w C o n v \begin{aligned} \dot m_e\phi_e & = - ||-\dot m_e,0||\phi_C+||\dot m_e,0||\phi_E \\ &= FluxC_e^{Conv}\phi_C+FluxF_e^{Conv}\phi_E+FluxV_e^{Conv} \\ \dot m_w\phi_w & = - ||-\dot m_w,0||\phi_C+||\dot m_w,0||\phi_W \\ &= FluxC_w^{Conv}\phi_C+FluxF_w^{Conv}\phi_W+FluxV_w^{Conv} \end{aligned} m˙eϕem˙wϕw=m˙e,0ϕC+m˙e,0ϕE=FluxCeConvϕC+FluxFeConvϕE+FluxVeConv=m˙w,0ϕC+m˙w,0ϕW=FluxCwConvϕC+FluxFwConvϕW+FluxVwConv
可进一步推得一维稳态对流扩散方程的离散形式为
( F l u x C e C o n v + F l u x C e D i f f + F l u x C w C o n v + F l u x C w D i f f ) ϕ C + ( F l u x F e C o n v + F l u x F e D i f f ) ϕ E + ( F l u x F w C o n v + F l u x F w D i f f ) ϕ W = 0 \begin{aligned} (FluxC_e^{Conv}&+FluxC_e^{Diff}+FluxC_w^{Conv}+FluxC_w^{Diff})\phi_C\\ &+(FluxF_e^{Conv}+FluxF_e^{Diff})\phi_E+(FluxF_w^{Conv}+FluxF_w^{Diff})\phi_W=0 \end{aligned} (FluxCeConv+FluxCeDiff+FluxCwConv+FluxCwDiff)ϕC+(FluxFeConv+FluxFeDiff)ϕE+(FluxFwConv+FluxFwDiff)ϕW=0
可写成下面形式
a C ϕ C + a E ϕ E + a W ϕ W = b C a_C\phi_C+a_E\phi_E+a_W\phi_W=b_C aCϕC+aEϕE+aWϕW=bC
其中
a E = F l u x F e C o n v + F l u x F e D i f f = ∣ ∣ m ˙ e , 0 ∣ ∣ − Γ e ϕ S e δ x e a W = F l u x F w C o n v + F l u x F w D i f f = ∣ ∣ m ˙ w , 0 ∣ ∣ − Γ w ϕ S w δ x w a C = ∑ f ( F l u x C f C o n v + F l u x C f D i f f ) = − ∣ ∣ − m ˙ e , 0 ∣ ∣ − ∣ ∣ − m ˙ w , 0 ∣ ∣ + Γ e ϕ S e δ x e + Γ w ϕ S w δ x w = − ( a E + a W ) + ( m ˙ e + m ˙ w ) ⏟ = 0 b C = − ∑ f ( F l u x V f C o n v + F l u x V f D i f f ) = 0 \begin{aligned} a_E&= FluxF_e^{Conv}+FluxF_e^{Diff} \\ &= ||\dot m_e,0|| - \Gamma^\phi_e \frac{S_e}{\delta x_e} \\ a_W&= FluxF_w^{Conv}+FluxF_w^{Diff} \\ &=||\dot m_w,0|| -\Gamma^\phi_w \frac{S_w}{\delta x_w} \\ a_C&= \sum_f \left( FluxC_f^{Conv} + FluxC_f^{Diff} \right)\\ &=-||-\dot m_e,0||-||-\dot m_w,0||+\Gamma^\phi_e \frac{S_e}{\delta x_e}+\Gamma^\phi_w \frac{S_w}{\delta x_w} \\ &=-(a_E+a_W)+\underbrace{(\dot m_e + \dot m_w)}_{=0} \\ b_C&=-\sum_f \left( FluxV_f^{Conv} + FluxV_f^{Diff} \right)\\ &=0 \end{aligned} aEaWaCbC=FluxFeConv+FluxFeDiff=m˙e,0ΓeϕδxeSe=FluxFwConv+FluxFwDiff=m˙w,0ΓwϕδxwSw=f(FluxCfConv+FluxCfDiff)=m˙e,0m˙w,0+ΓeϕδxeSe+ΓwϕδxwSw=(aE+aW)+=0 (m˙e+m˙w)=f(FluxVfConv+FluxVfDiff)=0
在连续方程满足的前提下,假设为均匀网格和常扩散系数,用 ϕ E \phi_E ϕE ϕ W \phi_W ϕW所给出的 ϕ C \phi_C ϕC值为
ϕ C − ϕ W ϕ E − ϕ W = 2 − ∣ ∣ P e L , 0 ∣ ∣ 4 − ∣ ∣ − P e L , 0 ∣ ∣ − ∣ ∣ P e L , 0 ∣ ∣ = 2 − ∣ ∣ P e L , 0 ∣ ∣ 4 − ∣ P e L ∣ \frac{\phi_C-\phi_W}{\phi_E-\phi_W} =\frac{2-||Pe_L,0||}{4-||-Pe_L,0||-||Pe_L,0||} =\frac{2-||Pe_L,0||}{4-|Pe_L|} ϕEϕWϕCϕW=4PeL,0PeL,02PeL,0=4PeL2PeL,0
不用把上式的图形画出来,也可以看出,当 ∣ P e L ∣ → 4 |Pe_L|\rightarrow4 PeL4的时候,解变得完全无界。背风格式与其它格式联合起来预测突变界面时是有用的,然而这里引入背风格式的目的主要是为了便于在下一节给出更好的稳定性分析。

3 截断误差:数值扩散和反扩散(Truncation Error: Numerical Diffusion and Anti-Diffusion)

截断误差是由离散过程的自然近似所造成的,对于笛卡尔网格上的一维情形较容易分析。下面将做迎风、背风、中心差分格式的扩散和反扩散分析。

3.1 迎风格式

针对通过迎风格式离散得到的方程,尝试将其恢复到最初的积分方程并考察其截断误差。假设流动是沿着 x x x正方向的,将 ϕ C \phi_C ϕC ϕ W \phi_W ϕW分别写成 ϕ e \phi_e ϕe ϕ w \phi_w ϕw函数的形式,迎风格式为
ϕ e = ϕ C ϕ w = ϕ W \phi_e=\phi_C\quad\quad\quad\phi_w=\phi_W ϕe=ϕCϕw=ϕW
这样,使用迎风格式的一维对流扩散方程离散形式为
( ρ u Δ y ) e ϕ C − ( ρ u Δ y ) w ϕ W − [ ( Γ ϕ d ϕ d x Δ y ) e − ( Γ ϕ d ϕ d x Δ y ) w ] = 0 (\rho u \Delta y)_e\phi_C-(\rho u \Delta y)_w\phi_W- \left[\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_e-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_w\right]=0 (ρuΔy)eϕC(ρuΔy)wϕW[(ΓϕdxdϕΔy)e(ΓϕdxdϕΔy)w]=0
ϕ C \phi_C ϕC做一维Taylor展开,以单元面 e e e的值为基准,得
ϕ C = ϕ e + ( d ϕ d x ) e ( x C − x e ) + 1 2 ( d 2 ϕ d x 2 ) e ( x C − x e ) 2 + . . . = ϕ e − ( d ϕ d x ) e ( x e − x C ) + . . . \begin{aligned} \phi_C&=\phi_e+\left( \frac{d\phi}{dx} \right)_e(x_C-x_e)+\frac{1}{2}\left( \frac{d^2\phi}{dx^2} \right)_e(x_C-x_e)^2+...\\ &=\phi_e-\left( \frac{d\phi}{dx} \right)_e(x_e-x_C)+... \end{aligned} ϕC=ϕe+(dxdϕ)e(xCxe)+21(dx2d2ϕ)e(xCxe)2+...=ϕe(dxdϕ)e(xexC)+...
对于均匀网格
ϕ C = ϕ e − ( d ϕ d x ) e ( δ x ) e 2 + 1 2 ( d 2 ϕ d x 2 ) e ( ( δ x ) e 2 ) 2 + . . . \phi_C=\phi_e-\left( \frac{d\phi}{dx} \right)_e\frac{(\delta x)_e}{2}+\frac{1}{2}\left( \frac{d^2\phi}{dx^2} \right)_e\left(\frac{(\delta x)_e}{2}\right)^2+... ϕC=ϕe(dxdϕ)e2(δx)e+21(dx2d2ϕ)e(2(δx)e)2+...
可获得 ϕ W \phi_W ϕW的相似表达式
ϕ W = ϕ w − ( d ϕ d x ) w ( δ x ) w 2 + 1 2 ( d 2 ϕ d x 2 ) w ( ( δ x ) w 2 ) 2 + . . . \phi_W=\phi_w-\left( \frac{d\phi}{dx} \right)_w\frac{(\delta x)_w}{2}+\frac{1}{2}\left( \frac{d^2\phi}{dx^2} \right)_w\left(\frac{(\delta x)_w}{2}\right)^2+... ϕW=ϕw(dxdϕ)w2(δx)w+21(dx2d2ϕ)w(2(δx)w)2+...
截去二阶项和高阶项,将其代入到对流项中,离散方程的左端项变为
( ρ u Δ y ) e ϕ C − ( ρ u Δ y ) w ϕ W − [ ( Γ ϕ d ϕ d x Δ y ) e − ( Γ ϕ d ϕ d x Δ y ) w ] = ( ρ u Δ y ) e [ ϕ e − ( d ϕ d x ) e ( δ x ) e 2 ] − ( ρ u Δ y ) w [ ϕ w − ( d ϕ d x ) w ( δ x ) w 2 ] − [ ( Γ ϕ d ϕ d x Δ y ) e − ( Γ ϕ d ϕ d x Δ y ) w ] \begin{aligned} &(\rho u \Delta y)_e\phi_C-(\rho u \Delta y)_w\phi_W- \left[\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_e-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_w\right]=\\ &(\rho u \Delta y)_e\left[ \phi_e-\left( \frac{d\phi}{dx} \right)_e\frac{(\delta x)_e}{2} \right]-(\rho u \Delta y)_w\left[ \phi_w-\left( \frac{d\phi}{dx} \right)_w\frac{(\delta x)_w}{2} \right]-\\ &\left[\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_e-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_w\right] \end{aligned} (ρuΔy)eϕC(ρuΔy)wϕW[(ΓϕdxdϕΔy)e(ΓϕdxdϕΔy)w]=(ρuΔy)e[ϕe(dxdϕ)e2(δx)e](ρuΔy)w[ϕw(dxdϕ)w2(δx)w][(ΓϕdxdϕΔy)e(ΓϕdxdϕΔy)w]
可以改写为
( ρ u Δ y ) e ϕ C − ( ρ u Δ y ) w ϕ W − [ ( Γ ϕ d ϕ d x Δ y ) e − ( Γ ϕ d ϕ d x Δ y ) w ] = ( ρ u Δ y ) e ϕ e − ( ρ u Δ y ) w ϕ w − [ ( Γ ϕ + ρ u δ x 2 ) e ( d ϕ d x Δ y ) e − ( Γ ϕ + ρ u δ x 2 ) w ( d ϕ d x Δ y ) w ] \begin{aligned} &(\rho u \Delta y)_e\phi_C-(\rho u \Delta y)_w\phi_W- \left[\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_e-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_w\right]=\\ &(\rho u \Delta y)_e\phi_e-(\rho u \Delta y)_w\phi_w-\left[\left(\Gamma^\phi +\rho u\frac{\delta x}{2}\right)_e\left(\frac{d\phi}{dx}\Delta y\right)_e-\left(\Gamma^\phi +\rho u\frac{\delta x}{2}\right)_w\left(\frac{d\phi}{dx}\Delta y\right)_w\right] \end{aligned} (ρuΔy)eϕC(ρuΔy)wϕW[(ΓϕdxdϕΔy)e(ΓϕdxdϕΔy)w]=(ρuΔy)eϕe(ρuΔy)wϕw[(Γϕ+ρu2δx)e(dxdϕΔy)e(Γϕ+ρu2δx)w(dxdϕΔy)w]
显而易见,待求解的方程中额外加入了扩散项分量,这常被称为截断误差。数值扩散的值为
Γ t r u n c a t i o n ϕ = ρ u δ x 2 \Gamma^\phi_{truncation}=\rho u \frac{\delta x}{2} Γtruncationϕ=ρu2δx
该截断误差,也称为流向扩散,通过更改扩散系数的值影响了待求解方程,从而降低了解的精确性。这样,相当于改变了对流扩散方程的扩散效应。另一方面,该额外的流向扩散效应也是有益的,因为其对解进行了限定,起到了稳定作用,可得到物理上有意义的解。

显然,要想减少这个流向数值扩散,需要针对对流项构造高阶精度的近似格式。然而,后面章节中会讲到,这些格式在构造的时候还需要保证解的有界性。

3.2 背风格式

跟上一小节类似,假设流动是沿着 x x x正方向的,将 ϕ E \phi_E ϕE ϕ C \phi_C ϕC分别写成 ϕ e \phi_e ϕe ϕ w \phi_w ϕw函数的形式,背风格式为
ϕ e = ϕ E ϕ w = ϕ C \phi_e=\phi_E\quad\quad\quad\phi_w=\phi_C ϕe=ϕEϕw=ϕC
这样,使用背风格式的一维对流扩散方程离散形式为
( ρ u Δ y ) e ϕ E − ( ρ u Δ y ) w ϕ C − [ ( Γ ϕ d ϕ d x Δ y ) e − ( Γ ϕ d ϕ d x Δ y ) w ] = 0 (\rho u \Delta y)_e\phi_E-(\rho u \Delta y)_w\phi_C- \left[\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_e-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_w\right]=0 (ρuΔy)eϕE(ρuΔy)wϕC[(ΓϕdxdϕΔy)e(ΓϕdxdϕΔy)w]=0
在均匀网格上,将 ϕ E \phi_E ϕE ϕ C \phi_C ϕC做一维Taylor展开,分别以单元面 e e e w w w的值为基准,得
ϕ E = ϕ e + ( d ϕ d x ) e ( δ x ) e 2 + 1 2 ( d 2 ϕ d x 2 ) e ( ( δ x ) e 2 ) 2 + . . . ϕ C = ϕ w + ( d ϕ d x ) w ( δ x ) w 2 + 1 2 ( d 2 ϕ d x 2 ) w ( ( δ x ) w 2 ) 2 + . . . \begin{aligned} & \phi_E=\phi_e+\left( \frac{d\phi}{dx} \right)_e\frac{(\delta x)_e}{2}+\frac{1}{2}\left( \frac{d^2\phi}{dx^2} \right)_e\left(\frac{(\delta x)_e}{2}\right)^2+...\\ & \phi_C=\phi_w+\left( \frac{d\phi}{dx} \right)_w\frac{(\delta x)_w}{2}+\frac{1}{2}\left( \frac{d^2\phi}{dx^2} \right)_w\left(\frac{(\delta x)_w}{2}\right)^2+... \end{aligned} ϕE=ϕe+(dxdϕ)e2(δx)e+21(dx2d2ϕ)e(2(δx)e)2+...ϕC=ϕw+(dxdϕ)w2(δx)w+21(dx2d2ϕ)w(2(δx)w)2+...
截去二阶项和高阶项,将其代入到对流项中,离散方程的左端项变为
( ρ u Δ y ) e ϕ E − ( ρ u Δ y ) w ϕ C − [ ( Γ ϕ d ϕ d x Δ y ) e − ( Γ ϕ d ϕ d x Δ y ) w ] = ( ρ u Δ y ) e ϕ e − ( ρ u Δ y ) w ϕ w − [ ( Γ ϕ − ρ u δ x 2 ) e ( d ϕ d x Δ y ) e − ( Γ ϕ − ρ u δ x 2 ) w ( d ϕ d x Δ y ) w ] \begin{aligned} & (\rho u \Delta y)_e\phi_E-(\rho u \Delta y)_w\phi_C- \left[\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_e-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_w\right]=\\ & (\rho u \Delta y)_e\phi_e-(\rho u \Delta y)_w\phi_w-\left[\left(\Gamma^\phi-\rho u\frac{\delta x}{2}\right)_e\left(\frac{d\phi}{dx}\Delta y\right)_e-\left(\Gamma^\phi-\rho u\frac{\delta x}{2}\right)_w\left(\frac{d\phi}{dx}\Delta y\right)_w\right] \end{aligned} (ρuΔy)eϕE(ρuΔy)wϕC[(ΓϕdxdϕΔy)e(ΓϕdxdϕΔy)w]=(ρuΔy)eϕe(ρuΔy)wϕw[(Γϕρu2δx)e(dxdϕΔy)e(Γϕρu2δx)w(dxdϕΔy)w]
那么对于背风格式,其推出的离散方程中的数值扩散是负的,等于
Γ t r u n c a t i o n ϕ = − ρ u δ x 2 \Gamma^\phi_{truncation}=-\rho u \frac{\delta x}{2} Γtruncationϕ=ρu2δx
这作用是减小扩散系数,这会导致反扩散错误。使用背风格式的结果会造成clipping of the advected profiles(没搞懂啥意思)。实际上使用背风格式得到的一维对流扩散方程的解比中心差分格式的振荡还要剧烈。

3.3 中心差分格式

有限体积方法中,对中心差分格式的截断误差分析略嫌麻烦,因为梯度的计算需要用到单元面上的插值,而并非直接用到节点处的已有值。假设各处的速度是已知的,且网格是均匀的,网格尺度为 Δ x \Delta x Δx,那么 ( ϕ e − ϕ w ) (\phi_e-\phi_w) (ϕeϕw)
( ϕ e − ϕ w ) ⏟ I n t e r p o l a t e d = 1 2 ( ϕ E + ϕ C ) − 1 2 ( ϕ C + ϕ W ) = ( ϕ e − ϕ w ) ⏟ E x a c t + T E \underbrace{(\phi_e-\phi_w)}_{Interpolated}=\frac{1}{2}(\phi_E+\phi_C)-\frac{1}{2}(\phi_C+\phi_W)= \underbrace{(\phi_e-\phi_w)}_{Exact}+TE Interpolated (ϕeϕw)=21(ϕE+ϕC)21(ϕC+ϕW)=Exact (ϕeϕw)+TE
式中的 T E TE TE代表截断误差,为了算出截断误差,做Taylor展开,基于精确的 ϕ e \phi_e ϕe ϕ w \phi_w ϕw做展开,得
ϕ W = ϕ w − Δ x 2 ϕ w ′ + Δ x 2 8 ϕ w ′ ′ − Δ x 3 48 ϕ w ′ ′ ′ + Δ x 4 384 ϕ w i v − Δ x 5 3840 ϕ w v + . . . ϕ C = ϕ w + Δ x 2 ϕ w ′ + Δ x 2 8 ϕ w ′ ′ + Δ x 3 48 ϕ w ′ ′ ′ + Δ x 4 384 ϕ w i v + Δ x 5 3840 ϕ w v + . . . ϕ C = ϕ e − Δ x 2 ϕ e ′ + Δ x 2 8 ϕ e ′ ′ − Δ x 3 48 ϕ e ′ ′ ′ + Δ x 4 384 ϕ e i v − Δ x 5 3840 ϕ e v + . . . ϕ E = ϕ e + Δ x 2 ϕ e ′ + Δ x 2 8 ϕ e ′ ′ + Δ x 3 48 ϕ e ′ ′ ′ + Δ x 4 384 ϕ e i v + Δ x 5 3840 ϕ e v + . . . \begin{aligned} & \phi_W=\phi_w-\frac{\Delta x}{2}\phi'_w+\frac{\Delta x^2}{8}\phi''_w-\frac{\Delta x^3}{48}\phi'''_w+\frac{\Delta x^4}{384}\phi_w^{iv}-\frac{\Delta x^5}{3840}\phi_w^v+... \\ & \phi_C=\phi_w+\frac{\Delta x}{2}\phi'_w+\frac{\Delta x^2}{8}\phi''_w+\frac{\Delta x^3}{48}\phi'''_w+\frac{\Delta x^4}{384}\phi_w^{iv}+\frac{\Delta x^5}{3840}\phi_w^v+... \\ & \phi_C=\phi_e-\frac{\Delta x}{2}\phi'_e+\frac{\Delta x^2}{8}\phi''_e-\frac{\Delta x^3}{48}\phi'''_e+\frac{\Delta x^4}{384}\phi_e^{iv}-\frac{\Delta x^5}{3840}\phi_e^v+... \\ & \phi_E=\phi_e+\frac{\Delta x}{2}\phi'_e+\frac{\Delta x^2}{8}\phi''_e+\frac{\Delta x^3}{48}\phi'''_e+\frac{\Delta x^4}{384}\phi_e^{iv}+\frac{\Delta x^5}{3840}\phi_e^v+... \end{aligned} ϕW=ϕw2Δxϕw+8Δx2ϕw48Δx3ϕw+384Δx4ϕwiv3840Δx5ϕwv+...ϕC=ϕw+2Δxϕw+8Δx2ϕw+48Δx3ϕw+384Δx4ϕwiv+3840Δx5ϕwv+...ϕC=ϕe2Δxϕe+8Δx2ϕe48Δx3ϕe+384Δx4ϕeiv3840Δx5ϕev+...ϕE=ϕe+2Δxϕe+8Δx2ϕe+48Δx3ϕe+384Δx4ϕeiv+3840Δx5ϕev+...
使用这些展开形式,面上的平均值为
1 2 ( ϕ E + ϕ C ) = ϕ e + Δ x 2 8 ϕ e ′ ′ + Δ x 4 384 ϕ e i v + . . . ⇒ Δ x 2 4 ϕ e ′ ′ = ( ϕ C − 2 ϕ e + ϕ E ) − Δ x 4 192 ϕ e i v + . . . 1 2 ( ϕ C + ϕ W ) = ϕ w + Δ x 2 8 ϕ w ′ ′ + Δ x 4 384 ϕ w i v + . . . ⇒ Δ x 2 4 ϕ w ′ ′ = ( ϕ W − 2 ϕ w + ϕ C ) − Δ x 4 192 ϕ w i v + . . . \begin{aligned} \frac{1}{2}(\phi_E+\phi_C)&=\phi_e+\frac{\Delta x^2}{8}\phi''_e+\frac{\Delta x^4}{384}\phi_e^{iv}+... \\ \Rightarrow \frac{\Delta x^2}{4}\phi''_e &= (\phi_C-2\phi_e+\phi_E)-\frac{\Delta x^4}{192}\phi_e^{iv}+... \\ \frac{1}{2}(\phi_C+\phi_W) &= \phi_w+\frac{\Delta x^2}{8}\phi''_w+\frac{\Delta x^4}{384}\phi_w^{iv}+... \\ \Rightarrow \frac{\Delta x^2}{4}\phi''_w &=(\phi_W-2\phi_w+\phi_C)-\frac{\Delta x^4}{192}\phi_w^{iv}+... \end{aligned} 21(ϕE+ϕC)4Δx2ϕe21(ϕC+ϕW)4Δx2ϕw=ϕe+8Δx2ϕe+384Δx4ϕeiv+...=(ϕC2ϕe+ϕE)192Δx4ϕeiv+...=ϕw+8Δx2ϕw+384Δx4ϕwiv+...=(ϕW2ϕw+ϕC)192Δx4ϕwiv+...
上两式相减,得到
1 2 ( ϕ E + ϕ C ) − 1 2 ( ϕ C + ϕ W ) = ( ϕ e − ϕ w ) + Δ x 2 8 ( ϕ e ′ ′ − ϕ w ′ ′ ) + Δ x 4 384 ( ϕ e i v − ϕ w i v ) + . . . \frac{1}{2}(\phi_E+\phi_C)-\frac{1}{2}(\phi_C+\phi_W) = (\phi_e-\phi_w)+\frac{\Delta x^2}{8}(\phi''_e-\phi''_w)+\frac{\Delta x^4}{384}(\phi_e^{iv}-\phi_w^{iv})+... 21(ϕE+ϕC)21(ϕC+ϕW)=(ϕeϕw)+8Δx2(ϕeϕw)+384Δx4(ϕeivϕwiv)+...
那么,如果把 ϕ e \phi_e ϕe ϕ w \phi_w ϕw的精确值用 ϕ C \phi_C ϕC展开,为
ϕ e = ϕ C + Δ x 2 ϕ C ′ + Δ x 2 8 ϕ C ′ ′ + Δ x 3 48 ϕ C ′ ′ ′ + Δ x 4 384 ϕ C i v + Δ x 5 3840 ϕ C v + . . . ϕ w = ϕ C − Δ x 2 ϕ C ′ + Δ x 2 8 ϕ C ′ ′ − Δ x 3 48 ϕ C ′ ′ ′ + Δ x 4 384 ϕ C i v − Δ x 5 3840 ϕ C v + . . . \begin{aligned} & \phi_e=\phi_C+\frac{\Delta x}{2}\phi'_C+\frac{\Delta x^2}{8}\phi''_C+\frac{\Delta x^3}{48}\phi'''_C+\frac{\Delta x^4}{384}\phi_C^{iv}+\frac{\Delta x^5}{3840}\phi_C^v+... \\ & \phi_w=\phi_C-\frac{\Delta x}{2}\phi'_C+\frac{\Delta x^2}{8}\phi''_C-\frac{\Delta x^3}{48}\phi'''_C+\frac{\Delta x^4}{384}\phi_C^{iv}-\frac{\Delta x^5}{3840}\phi_C^v+... \\ \end{aligned} ϕe=ϕC+2ΔxϕC+8Δx2ϕC+48Δx3ϕC+384Δx4ϕCiv+3840Δx5ϕCv+...ϕw=ϕC2ΔxϕC+8Δx2ϕC48Δx3ϕC+384Δx4ϕCiv3840Δx5ϕCv+...
此外, ϕ E \phi_E ϕE ϕ W \phi_W ϕW也可以用 ϕ C \phi_C ϕC展开为
ϕ E = ϕ C + Δ x ϕ C ′ + Δ x 2 2 ϕ C ′ ′ + Δ x 3 6 ϕ C ′ ′ ′ + Δ x 4 24 ϕ C i v + Δ x 5 120 ϕ C v + . . . ϕ W = ϕ C − Δ x ϕ C ′ + Δ x 2 2 ϕ C ′ ′ − Δ x 3 6 ϕ C ′ ′ ′ + Δ x 4 24 ϕ C i v − Δ x 5 120 ϕ C v + . . . \begin{aligned} & \phi_E=\phi_C+\Delta x\phi'_C+\frac{\Delta x^2}{2}\phi''_C+\frac{\Delta x^3}{6}\phi'''_C+\frac{\Delta x^4}{24}\phi_C^{iv}+\frac{\Delta x^5}{120}\phi_C^v+... \\ & \phi_W=\phi_C-\Delta x\phi'_C+\frac{\Delta x^2}{2}\phi''_C-\frac{\Delta x^3}{6}\phi'''_C+\frac{\Delta x^4}{24}\phi_C^{iv}-\frac{\Delta x^5}{120}\phi_C^v+... \end{aligned} ϕE=ϕC+ΔxϕC+2Δx2ϕC+6Δx3ϕC+24Δx4ϕCiv+120Δx5ϕCv+...ϕW=ϕCΔxϕC+2Δx2ϕC6Δx3ϕC+24Δx4ϕCiv120Δx5ϕCv+...
从而得到
ϕ C − 2 ϕ e + ϕ E = ϕ C − 2 ϕ C − Δ x ϕ C ′ − Δ x 2 4 ϕ C ′ ′ − Δ x 3 24 ϕ C ′ ′ ′ − Δ x 4 192 ϕ C i v − Δ x 5 1920 ϕ C v + . . . + ϕ C + Δ x ϕ C ′ + Δ x 2 2 ϕ C ′ ′ + Δ x 3 6 ϕ C ′ ′ ′ + Δ x 4 24 ϕ C i v + Δ x 5 120 ϕ C v + . . . = Δ x 2 4 ϕ C ′ ′ + Δ x 3 8 ϕ C ′ ′ ′ + 7 Δ x 4 192 ϕ C i v + 15 Δ x 5 1920 ϕ C v + . . . ϕ W − 2 ϕ w + ϕ C = Δ x 2 4 ϕ C ′ ′ − Δ x 3 8 ϕ C ′ ′ ′ + 7 Δ x 4 192 ϕ C i v − 15 Δ x 5 1920 ϕ C v + . . . \begin{aligned} \phi_C-2\phi_e+\phi_E = & \phi_C - 2\phi_C-\Delta x\phi'_C-\frac{\Delta x^2}{4}\phi''_C-\frac{\Delta x^3}{24}\phi'''_C-\frac{\Delta x^4}{192}\phi_C^{iv}-\frac{\Delta x^5}{1920}\phi_C^v+... \\ &+\phi_C+\Delta x\phi'_C+\frac{\Delta x^2}{2}\phi''_C+\frac{\Delta x^3}{6}\phi'''_C+\frac{\Delta x^4}{24}\phi_C^{iv}+\frac{\Delta x^5}{120}\phi_C^v+... \\ =& \frac{\Delta x^2}{4}\phi''_C + \frac{\Delta x^3}{8}\phi'''_C+\frac{7\Delta x^4}{192}\phi_C^{iv}+\frac{15\Delta x^5}{1920}\phi_C^v+...\\ \phi_W-2\phi_w+\phi_C = &\frac{\Delta x^2}{4}\phi''_C - \frac{\Delta x^3}{8}\phi'''_C+\frac{7\Delta x^4}{192}\phi_C^{iv}-\frac{15\Delta x^5}{1920}\phi_C^v+... \end{aligned} ϕC2ϕe+ϕE==ϕW2ϕw+ϕC=ϕC2ϕCΔxϕC4Δx2ϕC24Δx3ϕC192Δx4ϕCiv1920Δx5ϕCv+...+ϕC+ΔxϕC+2Δx2ϕC+6Δx3ϕC+24Δx4ϕCiv+120Δx5ϕCv+...4Δx2ϕC+8Δx3ϕC+1927Δx4ϕCiv+192015Δx5ϕCv+...4Δx2ϕC8Δx3ϕC+1927Δx4ϕCiv192015Δx5ϕCv+...
得到
Δ x 2 8 ( ϕ e ′ ′ − ϕ w ′ ′ ) = 1 2 [ ( ϕ C − 2 ϕ e + ϕ E ) − ( ϕ W − 2 ϕ w + ϕ C ) ] + . . . = Δ x 3 8 ϕ C ′ ′ ′ + Δ x 5 128 ϕ C v + . . . \begin{aligned} \frac{\Delta x^2}{8}(\phi''_e-\phi''_w)&=\frac{1}{2}[(\phi_C-2\phi_e+\phi_E )-(\phi_W-2\phi_w+\phi_C)]+...\\ &= \frac{\Delta x^3}{8}\phi'''_C+\frac{\Delta x^5}{128}\phi_C^v+... \end{aligned} 8Δx2(ϕeϕw)=21[(ϕC2ϕe+ϕE)(ϕW2ϕw+ϕC)]+...=8Δx3ϕC+128Δx5ϕCv+...
代入到前式 1 2 ( ϕ E + ϕ C ) − 1 2 ( ϕ C + ϕ W ) = ( ϕ e − ϕ w ) + Δ x 2 8 ( ϕ e ′ ′ − ϕ w ′ ′ ) + Δ x 4 384 ( ϕ e i v − ϕ w i v ) + . . . \frac{1}{2}(\phi_E+\phi_C)-\frac{1}{2}(\phi_C+\phi_W)=(\phi_e-\phi_w)+\frac{\Delta x^2}{8}(\phi''_e-\phi''_w)+\frac{\Delta x^4}{384}(\phi_e^{iv}-\phi_w^{iv})+... 21(ϕE+ϕC)21(ϕC+ϕW)=(ϕeϕw)+8Δx2(ϕeϕw)+384Δx4(ϕeivϕwiv)+...,得
1 2 ( ϕ E + ϕ C ) − 1 2 ( ϕ C + ϕ W ) = ( ϕ e − ϕ w ) + Δ x 3 8 ϕ C ′ ′ ′ + Δ x 5 128 ϕ C v + . . . \frac{1}{2}(\phi_E+\phi_C)-\frac{1}{2}(\phi_C+\phi_W)=(\phi_e-\phi_w)+\frac{\Delta x^3}{8}\phi'''_C+\frac{\Delta x^5}{128}\phi_C^v+... 21(ϕE+ϕC)21(ϕC+ϕW)=(ϕeϕw)+8Δx3ϕC+128Δx5ϕCv+...
上式两端同除以 Δ x \Delta x Δx,得到计算梯度时的截断误差为
T E = Δ x 2 8 ϕ C ′ ′ ′ + Δ x 4 128 ϕ C v + . . . TE=\frac{\Delta x^2}{8}\phi'''_C+\frac{\Delta x^4}{128}\phi_C^v+... TE=8Δx2ϕC+128Δx4ϕCv+...
这表明该格式具有二阶精度。

4 数值稳定性

在前面的截断误差分析中,一阶精度格式能得到符合物理意义的解,二阶精度反而会得到毫无意义的解,这着实很让人迷惑不解。中心差分格式对于扩散项是如此精确,而对于对流项应该也差不多精确才是啊。然而,前面咱们已经讲了,中心差分格式针对对流项会产生毫无物理意义的解。产生这种现象的原因就在于,当用于推导奇数阶(odd order)比如对流项时,中心差分格式并没有继承对流稳定性(convective stability)。

为了解释中心差分格式应用于对流占优问题时所出现的数值解的振荡问题,Leonard提出了对流稳定性的概念。Leonard使用通有的一维非定常对流扩散方程,且速度为常数,来描述该问题
∂ ( ρ ϕ ) ∂ t = − ∂ ( ρ u ϕ ) ∂ x + ∂ ∂ x ( Γ ϕ ∂ ϕ ∂ x ) + Q ϕ \frac{\partial (\rho \phi)}{\partial t}= -\frac{\partial(\rho u \phi)}{\partial x} + \frac{\partial}{\partial x}\left( \Gamma^{\phi}\frac{\partial \phi}{\partial x} \right)+Q^\phi t(ρϕ)=x(ρuϕ)+x(Γϕxϕ)+Qϕ
在这里插入图片描述

当把这个方程应用于上图所示的单元 C C C时,其左端项(LHS)代表了在控制单元上单位时间内 ϕ C \phi_C ϕC的变化率,其右端项(RHS)代表着通过单元面的净流入通量和单元中的源项,它们影响着 ϕ C \phi_C ϕC的值。如果RHS有数值误差,那么算出来的 ϕ C \phi_C ϕC要么增加要么减小,这得视离散过程采用的离散格式而定。在不稳定的格式中,对正确值 ϕ C \phi_C ϕC的微小偏差将会造成RHS所代表的净流入通量的增加或减小。当使用迭代算法来求解时,净流入通量的增加或减小将通过每个迭代步进一步增加或减小 ϕ C \phi_C ϕC的值。而在稳定格式中, ϕ C \phi_C ϕC的变化导致RHS的误差将会负反馈到RHS,其具有自我修正的特性。显然,对于这种类型的数值稳定性,RHS应该满足
∂ ( R H S ) ∂ ϕ C < 0 \frac{\partial (RHS)}{\partial \phi_C}<0 ϕC(RHS)<0
这表明,方程右端项的离散格式应能保证其对 ϕ C \phi_C ϕC的敏感性是负的,这样才能让 ϕ C \phi_C ϕC的增加或减小造成净流入通量的减小或增加,反过来使得 ϕ C \phi_C ϕC减小或增加来趋近其正确值。然而,稳定性不能和有界性、精确性混淆起来。稳定的数值格式也有可能是无界限的,产生过冲和下冲(over/under shoots),产生振荡和起伏,产生过度扩散,也可能给出很低精度的解。这里的稳定性指的是把数值误差控制在有界范围内不让它无穷增大,就跟使用中心差分格式时出现的 ϕ C \phi_C ϕC的无量纲值随 P e Pe Pe − ∞ -\infin + ∞ +\infin +的变化而从 − ∞ -\infin 变化到 + ∞ +\infin +那样,实际上 ϕ C \phi_C ϕC的正确值应该是从 1 1 1变化到 0 0 0。当然,迎风格式既拥有有界性也拥有稳定性。

基于这种思想,给出RHS的通有离散形式
R H S = − ( ρ u Δ y ) e ϕ e + ( ρ u Δ y ) w ϕ w + [ ( Γ ϕ Δ y δ x ) e ( ϕ E − ϕ C ) − ( Γ ϕ Δ y δ x ) w ( ϕ C − ϕ W ) ] + Q C ϕ V C \begin{aligned} RHS=&-(\rho u \Delta y)_e\phi_e+(\rho u \Delta y)_w\phi_w \\ &+ \left[\left(\Gamma^\phi \frac{\Delta y}{\delta x}\right)_e(\phi_E-\phi_C)- \left(\Gamma^\phi \frac{\Delta y}{\delta x}\right)_w(\phi_C-\phi_W)\right]+Q_C^\phi V_C \end{aligned} RHS=(ρuΔy)eϕe+(ρuΔy)wϕw+[(ΓϕδxΔy)e(ϕEϕC)(ΓϕδxΔy)w(ϕCϕW)]+QCϕVC
使用中心差分格式,上式变为
R H S C D = − ( ρ u Δ y ) e ϕ E + ϕ C 2 + ( ρ u Δ y ) w ϕ C + ϕ W 2 + [ ( Γ ϕ Δ y δ x ) e ( ϕ E − ϕ C ) − ( Γ ϕ Δ y δ x ) w ( ϕ C − ϕ W ) ] + Q C ϕ V C \begin{aligned} RHS_{CD}=&-(\rho u \Delta y)_e\frac{\phi_E+\phi_C}{2}+(\rho u \Delta y)_w\frac{\phi_C+\phi_W}{2} \\ &+\left[\left(\Gamma^\phi \frac{\Delta y}{\delta x}\right)_e(\phi_E-\phi_C)- \left(\Gamma^\phi \frac{\Delta y}{\delta x}\right)_w(\phi_C-\phi_W)\right]+Q_C^\phi V_C \end{aligned} RHSCD=(ρuΔy)e2ϕE+ϕC+(ρuΔy)w2ϕC+ϕW+[(ΓϕδxΔy)e(ϕEϕC)(ΓϕδxΔy)w(ϕCϕW)]+QCϕVC
使用前述判据来分析中心差分格式,发现扩散项的敏感性为
∂ ( R H S C D D i f f ) ∂ ϕ C = − 2 Γ ϕ Δ y δ x \frac{\partial (RHS_{CD}^{Diff})}{\partial \phi_C}=-2\Gamma^\phi \frac{\Delta y}{\delta x} ϕC(RHSCDDiff)=2ΓϕδxΔy
因为 Γ ϕ \Gamma^\phi Γϕ是正值,所以上式值为负的,表明是稳定格式。然而,对于对流项,其敏感性方程为
∂ ( R H S C D C o n v ) ∂ ϕ C = − 1 2 ( m ˙ e + m ˙ w ) \frac{\partial (RHS_{CD}^{Conv})}{\partial \phi_C}=-\frac{1}{2}(\dot m_e+\dot m_w) ϕC(RHSCDConv)=21(m˙e+m˙w)
对于稳态问题,上式为0,但是对于非稳态问题则未必是0,对于非稳态情形,减速流动时其值是正的。在一般的流动中,这些区域作为起伏的区域,在Peclet数过大的时候很容易就造成了数值崩溃。即便是对于稳态流动,由于其值为0,所以无法很好地负向反馈给方程来做自修正处理。上式同时表明,对于稳态问题,CD格式算得的净对流通量是和 ϕ C \phi_C ϕC值无关的。因此,即便是不同的 ϕ C \phi_C ϕC值,算得的单元 C C C的对流通量也是一样的。

接下来看迎风格式,其推得的RHS为
R H S U p w i n d = − ∣ ∣ m ˙ e , 0 ∣ ∣ ϕ C + ∣ ∣ − m ˙ e , 0 ∣ ∣ ϕ E − ∣ ∣ m ˙ w , 0 ∣ ∣ ϕ C + ∣ ∣ − m ˙ w , 0 ∣ ∣ ϕ W + [ ( Γ ϕ Δ y δ x ) e ( ϕ E − ϕ C ) − ( Γ ϕ Δ y δ x ) w ( ϕ C − ϕ W ) ] + Q C ϕ V C \begin{aligned} RHS_{Upwind}=&-||\dot m_e,0||\phi_C+||-\dot m_e,0||\phi_E-||\dot m_w,0||\phi_C+||-\dot m_w,0||\phi_W \\ &+\left[\left(\Gamma^\phi \frac{\Delta y}{\delta x}\right)_e(\phi_E-\phi_C)- \left(\Gamma^\phi \frac{\Delta y}{\delta x}\right)_w(\phi_C-\phi_W)\right]+Q_C^\phi V_C \end{aligned} RHSUpwind=m˙e,0ϕC+m˙e,0ϕEm˙w,0ϕC+m˙w,0ϕW+[(ΓϕδxΔy)e(ϕEϕC)(ΓϕδxΔy)w(ϕCϕW)]+QCϕVC
跟预想的一样,其敏感性是负的,因为这个迎风格式对于所有的Peclet数都是稳定的,即
∂ ( R H S U p w i n d C o n v ) ∂ ϕ C = − ∣ ∣ m ˙ e , 0 ∣ ∣ − ∣ ∣ m ˙ w , 0 ∣ ∣ \frac{\partial (RHS_{Upwind}^{Conv})}{\partial \phi_C}=-||\dot m_e,0||-||\dot m_w,0|| ϕC(RHSUpwindConv)=m˙e,0m˙w,0
其为负值或0值(对于所有流动情况),其等于0的情况是,两个质量流量都是负的,这种情况在一维定截面问题中不会出现。再考虑到一阶近似所带来的假扩散,上式表明迎风格式是非常稳定的。然而,其稳定性的实现是以精确性为代价的。

对于背风格式,RHS为
R H S D o w n w i n d = − ∣ ∣ m ˙ e , 0 ∣ ∣ ϕ E + ∣ ∣ − m ˙ e , 0 ∣ ∣ ϕ C − ∣ ∣ m ˙ w , 0 ∣ ∣ ϕ W + ∣ ∣ − m ˙ w , 0 ∣ ∣ ϕ C + [ ( Γ ϕ Δ y δ x ) e ( ϕ E − ϕ C ) − ( Γ ϕ Δ y δ x ) w ( ϕ C − ϕ W ) ] + Q C ϕ V C \begin{aligned} RHS_{Downwind}=&-||\dot m_e,0||\phi_E+||-\dot m_e,0||\phi_C-||\dot m_w,0||\phi_W+||-\dot m_w,0||\phi_C \\ &+\left[\left(\Gamma^\phi \frac{\Delta y}{\delta x}\right)_e(\phi_E-\phi_C)- \left(\Gamma^\phi \frac{\Delta y}{\delta x}\right)_w(\phi_C-\phi_W)\right]+Q_C^\phi V_C \end{aligned} RHSDownwind=m˙e,0ϕE+m˙e,0ϕCm˙w,0ϕW+m˙w,0ϕC+[(ΓϕδxΔy)e(ϕEϕC)(ΓϕδxΔy)w(ϕCϕW)]+QCϕVC
其敏感性为
∂ ( R H S U p w i n d C o n v ) ∂ ϕ C = ∣ ∣ − m ˙ e , 0 ∣ ∣ + ∣ ∣ − m ˙ w , 0 ∣ ∣ \frac{\partial (RHS_{Upwind}^{Conv})}{\partial \phi_C}=||-\dot m_e,0||+||-\dot m_w,0|| ϕC(RHSUpwindConv)=m˙e,0+m˙w,0
其总是正值或者0值(对于所有流动情况),再考虑到反扩散效应,背风格式是高度的不稳定格式!

5 高阶迎风格式

前面小节中讲到,迎风格式和中心差分格式都有严重的缺陷,前者由于数值扩散使得其精度较差,后者的稳定性差存在数值dispersion(色散)误差。这些缺点促使学者们,基于高阶偏迎风插值廓线,提出精确和稳定的对流项格式。这些高阶格式旨在发展至少具有二阶精度的解,同时保持无条件的稳定性。

为了强调单元面通量的守恒特性,将用 D 、 C 、 U D、C、U DCU表示某特定面的背风Downwind、迎风Upwind、远迎风Far Upwind节点,用 D D DD DD U U UU UU表示 D D D的下游downstream节点和 U U U的上游upstream节点,对应的值用 ϕ D D , ϕ D , ϕ C , ϕ U , ϕ U U \phi_{DD},\phi_D,\phi_C,\phi_U,\phi_{UU} ϕDD,ϕD,ϕC,ϕU,ϕUU来表示。如下图所示,图中给出了面上的速度为正( → \rightarrow )和负( ← \leftarrow )两种情况。

在这里插入图片描述

5.1 二阶迎风格式(Second Order Upwind Scheme SOU)

二阶格式使用的仍旧是线性廓线,跟在中心差分格式中的廓线一样,然而,与对称廓线不同,其使用的是偏迎风架构的廓线(即其架构点在迎风方向比背风方向要更多一些)。如下图所示,通过在节点 C C C U U U处的 ϕ \phi ϕ值来构造线性廓线,因此,面上的值实际上是通过外插而非内插来算得的。

在这里插入图片描述

5.2 插值廓线

从线性廓线开始
ϕ ( x ) = k 0 + k 1 ( x − x C ) \phi(x)=k_0+k_1(x-x_C) ϕ(x)=k0+k1(xxC)
将其用于 x C x_C xC x U x_U xU节点的 ϕ \phi ϕ ϕ C \phi_C ϕC ϕ U \phi_U ϕU,廓线变为
ϕ ( x ) = ϕ C + ϕ C − ϕ U x C − x U ( x − x C ) \phi(x)=\phi_C+\frac{\phi_C-\phi_U}{x_C-x_U}(x-x_C) ϕ(x)=ϕC+xCxUϕCϕU(xxC)
使用上式,面 f f f处的 ϕ \phi ϕ值,为
ϕ f = ϕ ( x f ) = ϕ C + ϕ C − ϕ U x C − x U ( x f − x C ) \phi_f=\phi(x_f)=\phi_C+\frac{\phi_C-\phi_U}{x_C-x_U}(x_f-x_C) ϕf=ϕ(xf)=ϕC+xCxUϕCϕU(xfxC)
对于均匀网格,为
ϕ f = 3 2 ϕ C − 1 2 ϕ U \phi_f=\frac{3}{2}\phi_C-\frac{1}{2}\phi_U ϕf=23ϕC21ϕU

5.3 离散方程

将这种近似界面值廓线的方式应用于离散一维对流扩散方程,可获得面通量为
m ˙ e ϕ e = ( 3 2 ϕ C − 1 2 ϕ W ) ∣ ∣ m ˙ e , 0 ∣ ∣ − ( 3 2 ϕ E − 1 2 ϕ E E ) ∣ ∣ − m ˙ e , 0 ∣ ∣ m ˙ w ϕ w = ( 3 2 ϕ C − 1 2 ϕ E ) ∣ ∣ m ˙ w , 0 ∣ ∣ − ( 3 2 ϕ W − 1 2 ϕ W W ) ∣ ∣ − m ˙ w , 0 ∣ ∣ \begin{aligned} \dot m_e \phi_e &= \left( \frac{3}{2}\phi_C-\frac{1}{2}\phi_W \right)||\dot m_e,0||-\left( \frac{3}{2}\phi_E-\frac{1}{2}\phi_{EE} \right)||-\dot m_e,0|| \\ \dot m_w \phi_w &= \left( \frac{3}{2}\phi_C-\frac{1}{2}\phi_E \right)||\dot m_w,0||-\left( \frac{3}{2}\phi_W-\frac{1}{2}\phi_{WW} \right)||-\dot m_w,0|| \end{aligned} m˙eϕem˙wϕw=(23ϕC21ϕW)m˙e,0(23ϕE21ϕEE)m˙e,0=(23ϕC21ϕE)m˙w,0(23ϕW21ϕWW)m˙w,0
将上式代入到半离散通有形式中,得
( 3 2 ϕ C − 1 2 ϕ W ) ∣ ∣ m ˙ e , 0 ∣ ∣ − ( 3 2 ϕ E − 1 2 ϕ E E ) ∣ ∣ − m ˙ e , 0 ∣ ∣ + ( 3 2 ϕ C − 1 2 ϕ E ) ∣ ∣ m ˙ w , 0 ∣ ∣ − ( 3 2 ϕ W − 1 2 ϕ W W ) ∣ ∣ − m ˙ w , 0 ∣ ∣ − [ ( Γ ϕ S δ x ) e ( ϕ E − ϕ C ) − ( Γ ϕ S δ x ) w ( ϕ C − ϕ W ) ] = 0 \begin{aligned} & \left( \frac{3}{2}\phi_C-\frac{1}{2}\phi_W \right)||\dot m_e,0||-\left( \frac{3}{2}\phi_E-\frac{1}{2}\phi_{EE} \right)||-\dot m_e,0|| +\left( \frac{3}{2}\phi_C-\frac{1}{2}\phi_E \right)||\dot m_w,0|| \\ & -\left( \frac{3}{2}\phi_W-\frac{1}{2}\phi_{WW} \right)||-\dot m_w,0||- \left[ \left(\Gamma^\phi \frac{S}{\delta x}\right)_e(\phi_E-\phi_C)- \left(\Gamma^\phi \frac{S}{\delta x}\right)_w(\phi_C-\phi_W)\right] = 0 \end{aligned} (23ϕC21ϕW)m˙e,0(23ϕE21ϕEE)m˙e,0+(23ϕC21ϕE)m˙w,0(23ϕW21ϕWW)m˙w,0[(ΓϕδxS)e(ϕEϕC)(ΓϕδxS)w(ϕCϕW)]=0
可写成如下形式
a C ϕ C + a E ϕ E + a W ϕ W + a E E ϕ E E + a W W ϕ W W = 0 a_C\phi_C+a_E\phi_E+a_W\phi_W+a_{EE}\phi_{EE}+a_{WW}\phi_{WW}=0 aCϕC+aEϕE+aWϕW+aEEϕEE+aWWϕWW=0
其中
a E = F l u x F e = − Γ e ϕ S e δ x e − 3 2 ∣ ∣ − m ˙ e , 0 ∣ ∣ − 1 2 ∣ ∣ m ˙ w , 0 ∣ ∣ a W = F l u x F w = − Γ w ϕ S w δ x w − 3 2 ∣ ∣ − m ˙ w , 0 ∣ ∣ − 1 2 ∣ ∣ m ˙ e , 0 ∣ ∣ a E E = F l u x F e e = 1 2 ∣ ∣ − m ˙ e , 0 ∣ ∣ a W W = F l u x F w w = 1 2 ∣ ∣ − m ˙ w , 0 ∣ ∣ a C = ∑ f ∼ n b ( C ) F l u x C f = Γ e ϕ S e δ x e + Γ w ϕ S w δ x w + 3 2 ∣ ∣ m ˙ e , 0 ∣ ∣ + 3 2 ∣ ∣ m ˙ w , 0 ∣ ∣ = − ( a E + a W + a E E + a W W ) + ( m ˙ e + m ˙ w ) \begin{aligned} a_E&=FluxF_e=-\Gamma^\phi_e \frac{S_e}{\delta x_e}-\frac{3}{2}||-\dot m_e,0||-\frac{1}{2}||\dot m_w,0|| \\ a_W&=FluxF_w=-\Gamma^\phi_w \frac{S_w}{\delta x_w}-\frac{3}{2}||-\dot m_w,0||-\frac{1}{2}||\dot m_e,0|| \\ a_{EE}&=FluxF_{ee}=\frac{1}{2}||-\dot m_e,0|| \\ a_{WW}&=FluxF_{ww}=\frac{1}{2}||-\dot m_w,0|| \\ a_C&=\sum_{f\sim nb(C)}FluxC_f \\ &=\Gamma^\phi_e \frac{S_e}{\delta x_e}+\Gamma^\phi_w \frac{S_w}{\delta x_w}+\frac{3}{2}||\dot m_e,0||+\frac{3}{2}||\dot m_w,0||\\ &=-(a_E+a_W+a_{EE}+a_{WW})+(\dot m_e + \dot m_w) \end{aligned} aEaWaEEaWWaC=FluxFe=ΓeϕδxeSe23m˙e,021m˙w,0=FluxFw=ΓwϕδxwSw23m˙w,021m˙e,0=FluxFee=21m˙e,0=FluxFww=21m˙w,0=fnb(C)FluxCf=ΓeϕδxeSe+ΓwϕδxwSw+23m˙e,0+23m˙w,0=(aE+aW+aEE+aWW)+(m˙e+m˙w)

5.4 截断误差

跟前面中心差分格式的分析过程类似,可推得二阶迎风格式的截断误差为
T E = − 3 8 Δ x 2 ϕ C ′ ′ ′ − 1 4 Δ x 3 ϕ C i v + . . . TE=-\frac{3}{8}\Delta x^2\phi'''_C-\frac{1}{4}\Delta x^3\phi_C^{iv}+... TE=83Δx2ϕC41Δx3ϕCiv+...
表明其为二阶精度。

5.5 稳定性分析

跟前面的稳定性分析过程类似,推得离散对流项为
R H S c o n v e c t i o n = − ( 3 2 ϕ C − 1 2 ϕ W ) ∣ ∣ m ˙ e , 0 ∣ ∣ + ( 3 2 ϕ E − 1 2 ϕ E E ) ∣ ∣ − m ˙ e , 0 ∣ ∣ − ( 3 2 ϕ C − 1 2 ϕ E ) ∣ ∣ m ˙ w , 0 ∣ ∣ + ( 3 2 ϕ W − 1 2 ϕ W W ) ∣ ∣ − m ˙ w , 0 ∣ ∣ \begin{aligned} RHS_{convection}=&-\left( \frac{3}{2}\phi_C-\frac{1}{2}\phi_W \right)||\dot m_e,0||+\left( \frac{3}{2}\phi_E-\frac{1}{2}\phi_{EE} \right)||-\dot m_e,0|| \\ &-\left( \frac{3}{2}\phi_C-\frac{1}{2}\phi_E \right)||\dot m_w,0||+\left( \frac{3}{2}\phi_W-\frac{1}{2}\phi_{WW} \right)||-\dot m_w,0|| \end{aligned} RHSconvection=(23ϕC21ϕW)m˙e,0+(23ϕE21ϕEE)m˙e,0(23ϕC21ϕE)m˙w,0+(23ϕW21ϕWW)m˙w,0
该项对 ϕ C \phi_C ϕC的变化率为
∂ ( R H S c o n v e c t i o n ) ∂ ϕ C = − 3 2 ∣ ∣ m ˙ e , 0 ∣ ∣ − 3 2 ∣ ∣ − m ˙ w , 0 ∣ ∣ \frac{\partial (RHS_{convection})}{\partial \phi_C}=-\frac{3}{2}||\dot m_e,0||-\frac{3}{2}||-\dot m_w,0|| ϕC(RHSconvection)=23m˙e,023m˙w,0
该值总是负的,表明这是稳定的格式,即,解的误差将在可控范围内。需要注意的是,这只是针对推导过程中假设的条件才得到的结论,并不是针对一般的情况,比如速度不为常数的时候就未必如此了。

5.6 QUICK格式

对流运动学的平方迎风插值(Quadratic Upstream Interpolation for Convective Kinematics QUICK)格式是由Leonard提出的,该方法的思想是,每个面上值在插值计算时,用偏向迎风方向的平方多项式近似,如下图所示。

在这里插入图片描述

5.7 插值廓线

对于一维对流扩散方程, ϕ \phi ϕ值用下式计算
ϕ ( x ) = k 0 + k 1 x + k 2 x 2 \phi(x)=k_0+k_1x+k_2x^2 ϕ(x)=k0+k1x+k2x2

ϕ = { ϕ U a t x = x U ϕ C a t x = x C ϕ D a t x = x D \phi=\begin{cases} \phi_U & at & x=x_U \\ \phi_C & at & x=x_C \\ \phi_D & at & x=x_D \end{cases} ϕ=ϕUϕCϕDatatatx=xUx=xCx=xD
推得
ϕ = ϕ U + ( x − x U ) ( x − x C ) ( x D − x U ) ( x D − x C ) ( ϕ D − ϕ U ) + ( x − x U ) ( x − x D ) ( x C − x U ) ( x C − x D ) ( ϕ C − ϕ U ) \phi = \phi_U+\frac{(x-x_U)(x-x_C)}{(x_D-x_U)(x_D-x_C)}(\phi_D-\phi_U)+\frac{(x-x_U)(x-x_D)}{(x_C-x_U)(x_C-x_D)}(\phi_C-\phi_U) ϕ=ϕU+(xDxU)(xDxC)(xxU)(xxC)(ϕDϕU)+(xCxU)(xCxD)(xxU)(xxD)(ϕCϕU)
如果是均匀网格,那么单元面 f f f上的 ϕ \phi ϕ值为
ϕ f = ϕ C + ϕ D 2 − ϕ D − 2 ϕ C + ϕ U 8 = 3 4 ϕ C − 1 8 ϕ U + 3 8 ϕ D \phi_f=\frac{\phi_C+\phi_D}{2}-\frac{\phi_D-2\phi_C+\phi_U}{8}=\frac{3}{4}\phi_C-\frac{1}{8}\phi_U+\frac{3}{8}\phi_D ϕf=2ϕC+ϕD8ϕD2ϕC+ϕU=43ϕC81ϕU+83ϕD
这样,单元面上的对流通量为
m ˙ e ϕ e = ( 3 4 ϕ C − 1 8 ϕ W + 3 8 ϕ E ) ∣ ∣ m ˙ e , 0 ∣ ∣ − ( 3 4 ϕ E − 1 8 ϕ E E + 3 8 ϕ C ) ∣ ∣ − m ˙ e , 0 ∣ ∣ m ˙ w ϕ w = ( 3 4 ϕ C − 1 8 ϕ E + 3 8 ϕ W ) ∣ ∣ m ˙ w , 0 ∣ ∣ − ( 3 4 ϕ W − 1 8 ϕ W W + 3 8 ϕ C ) ∣ ∣ − m ˙ w , 0 ∣ ∣ \begin{aligned} \dot m_e \phi_e &= \left( \frac{3}{4}\phi_C-\frac{1}{8}\phi_W+\frac{3}{8}\phi_E \right)||\dot m_e,0||-\left( \frac{3}{4}\phi_E-\frac{1}{8}\phi_{EE}+\frac{3}{8}\phi_C \right)||-\dot m_e,0|| \\ \dot m_w \phi_w &= \left( \frac{3}{4}\phi_C-\frac{1}{8}\phi_E+\frac{3}{8}\phi_W \right)||\dot m_w,0||-\left( \frac{3}{4}\phi_W-\frac{1}{8}\phi_{WW}+\frac{3}{8}\phi_C \right)||-\dot m_w,0|| \end{aligned} m˙eϕem˙wϕw=(43ϕC81ϕW+83ϕE)m˙e,0(43ϕE81ϕEE+83ϕC)m˙e,0=(43ϕC81ϕE+83ϕW)m˙w,0(43ϕW81ϕWW+83ϕC)m˙w,0
代回到一维对流扩散方程中,其离散形式为
( 3 4 ϕ C − 1 8 ϕ W + 3 8 ϕ E ) ∣ ∣ m ˙ e , 0 ∣ ∣ − ( 3 4 ϕ E − 1 8 ϕ E E + 3 8 ϕ C ) ∣ ∣ − m ˙ e , 0 ∣ ∣ + ( 3 4 ϕ C − 1 8 ϕ E + 3 8 ϕ W ) ∣ ∣ m ˙ w , 0 ∣ ∣ − ( 3 4 ϕ W − 1 8 ϕ W W + 3 8 ϕ C ) ∣ ∣ − m ˙ w , 0 ∣ ∣ − [ ( Γ ϕ S δ x ) e ( ϕ E − ϕ C ) − ( Γ ϕ S δ x ) w ( ϕ C − ϕ W ) ] = 0 \begin{aligned} & \left( \frac{3}{4}\phi_C-\frac{1}{8}\phi_W+\frac{3}{8}\phi_E \right)||\dot m_e,0|| -\left( \frac{3}{4}\phi_E-\frac{1}{8}\phi_{EE}+\frac{3}{8}\phi_C \right)||-\dot m_e,0|| \\ &+\left( \frac{3}{4}\phi_C-\frac{1}{8}\phi_E+\frac{3}{8}\phi_W \right)||\dot m_w,0|| -\left( \frac{3}{4}\phi_W-\frac{1}{8}\phi_{WW}+\frac{3}{8}\phi_C \right)||-\dot m_w,0|| \\ &-\left[ \left(\Gamma^\phi \frac{S}{\delta x}\right)_e(\phi_E-\phi_C)- \left(\Gamma^\phi \frac{S}{\delta x}\right)_w(\phi_C-\phi_W)\right] = 0 \end{aligned} (43ϕC81ϕW+83ϕE)m˙e,0(43ϕE81ϕEE+83ϕC)m˙e,0+(43ϕC81ϕE+83ϕW)m˙w,0(43ϕW81ϕWW+83ϕC)m˙w,0[(ΓϕδxS)e(ϕEϕC)(ΓϕδxS)w(ϕCϕW)]=0
可写成如下形式
a C ϕ C + a E ϕ E + a W ϕ W + a E E ϕ E E + a W W ϕ W W = 0 a_C\phi_C+a_E\phi_E+a_W\phi_W+a_{EE}\phi_{EE}+a_{WW}\phi_{WW}=0 aCϕC+aEϕE+aWϕW+aEEϕEE+aWWϕWW=0
其中
a E = F l u x F e = − Γ e ϕ S e δ x e − 3 4 ∣ ∣ − m ˙ e , 0 ∣ ∣ + 3 8 ∣ ∣ m ˙ e , 0 ∣ ∣ − 1 8 ∣ ∣ m ˙ w , 0 ∣ ∣ a W = F l u x F w = − Γ w ϕ S w δ x w − 3 4 ∣ ∣ − m ˙ w , 0 ∣ ∣ + 3 8 ∣ ∣ m ˙ w , 0 ∣ ∣ − 1 8 ∣ ∣ m ˙ e , 0 ∣ ∣ a E E = F l u x F e e = 1 8 ∣ ∣ − m ˙ e , 0 ∣ ∣ a W W = F l u x F w w = 1 8 ∣ ∣ − m ˙ w , 0 ∣ ∣ a C = ∑ f ∼ n b ( C ) F l u x C f = Γ e ϕ S e δ x e + Γ w ϕ S w δ x w + 3 4 ∣ ∣ m ˙ e , 0 ∣ ∣ − 3 8 ∣ ∣ − m ˙ e , 0 ∣ ∣ + 3 4 ∣ ∣ m ˙ w , 0 ∣ ∣ − 3 8 ∣ ∣ − m ˙ w , 0 ∣ ∣ = − ( a E + a W + a E E + a W W ) + ( m ˙ e + m ˙ w ) \begin{aligned} a_E&=FluxF_e=-\Gamma^\phi_e \frac{S_e}{\delta x_e}-\frac{3}{4}||-\dot m_e,0||+\frac{3}{8}||\dot m_e,0||-\frac{1}{8}||\dot m_w,0|| \\ a_W&=FluxF_w=-\Gamma^\phi_w \frac{S_w}{\delta x_w}-\frac{3}{4}||-\dot m_w,0||+\frac{3}{8}||\dot m_w,0||-\frac{1}{8}||\dot m_e,0|| \\ a_{EE}&=FluxF_{ee}=\frac{1}{8}||-\dot m_e,0|| \\ a_{WW}&=FluxF_{ww}=\frac{1}{8}||-\dot m_w,0|| \\ a_C&=\sum_{f\sim nb(C)}FluxC_f \\ &=\Gamma^\phi_e \frac{S_e}{\delta x_e}+\Gamma^\phi_w \frac{S_w}{\delta x_w}+\frac{3}{4}||\dot m_e,0||-\frac{3}{8}||-\dot m_e,0||+\frac{3}{4}||\dot m_w,0||-\frac{3}{8}||-\dot m_w,0|| \\ &=-(a_E+a_W+a_{EE}+a_{WW})+(\dot m_e + \dot m_w) \end{aligned} aEaWaEEaWWaC=FluxFe=ΓeϕδxeSe43m˙e,0+83m˙e,081m˙w,0=FluxFw=ΓwϕδxwSw43m˙w,0+83m˙w,081m˙e,0=FluxFee=81m˙e,0=FluxFww=81m˙w,0=fnb(C)FluxCf=ΓeϕδxeSe+ΓwϕδxwSw+43m˙e,083m˙e,0+43m˙w,083m˙w,0=(aE+aW+aEE+aWW)+(m˙e+m˙w)

5.8 截断误差

跟前面一样,推得
T E = 1 16 Δ x 3 ϕ C i v − 3 128 Δ x 4 ϕ C v + . . . TE=\frac{1}{16}\Delta x^3\phi_C^{iv}-\frac{3}{128}\Delta x^4\phi_C^{v}+... TE=161Δx3ϕCiv1283Δx4ϕCv+...
显然,有三阶精度

5.9 稳定性分析

跟前面一样,推得
R H S c o n v e c t i o n = − ( 3 4 ϕ C − 1 8 ϕ W + 3 8 ϕ E ) ∣ ∣ m ˙ e , 0 ∣ ∣ + ( 3 4 ϕ E − 1 8 ϕ E E + 3 8 ϕ C ) ∣ ∣ − m ˙ e , 0 ∣ ∣ − ( 3 4 ϕ C − 1 8 ϕ E + 3 8 ϕ W ) ∣ ∣ m ˙ w , 0 ∣ ∣ + ( 3 4 ϕ W − 1 8 ϕ W W + 3 8 ϕ C ) ∣ ∣ − m ˙ w , 0 ∣ ∣ \begin{aligned} RHS_{convection}=& -\left( \frac{3}{4}\phi_C-\frac{1}{8}\phi_W+\frac{3}{8}\phi_E \right)||\dot m_e,0|| +\left( \frac{3}{4}\phi_E-\frac{1}{8}\phi_{EE}+\frac{3}{8}\phi_C \right)||-\dot m_e,0|| \\ &-\left( \frac{3}{4}\phi_C-\frac{1}{8}\phi_E+\frac{3}{8}\phi_W \right)||\dot m_w,0|| +\left( \frac{3}{4}\phi_W-\frac{1}{8}\phi_{WW}+\frac{3}{8}\phi_C \right)||-\dot m_w,0|| \end{aligned} RHSconvection=(43ϕC81ϕW+83ϕE)m˙e,0+(43ϕE81ϕEE+83ϕC)m˙e,0(43ϕC81ϕE+83ϕW)m˙w,0+(43ϕW81ϕWW+83ϕC)m˙w,0
该项对 ϕ C \phi_C ϕC的变化率为
∂ ( R H S c o n v e c t i o n ) ∂ ϕ C = − 3 4 ∣ ∣ m ˙ e , 0 ∣ ∣ + 3 8 ∣ ∣ − m ˙ e , 0 ∣ ∣ − 3 4 ∣ ∣ m ˙ w , 0 ∣ ∣ + 3 8 ∣ ∣ − m ˙ w , 0 ∣ ∣ = − 3 8 ∣ ∣ m ˙ e , 0 ∣ ∣ − 3 8 ( ∣ ∣ m ˙ e , 0 ∣ ∣ − ∣ ∣ − m ˙ e , 0 ∣ ∣ ) ⏟ = m ˙ e − 3 8 ∣ ∣ m ˙ w , 0 ∣ ∣ − 3 8 ( ∣ ∣ m ˙ w , 0 ∣ ∣ − ∣ ∣ − m ˙ w , 0 ∣ ∣ ) ⏟ = m ˙ w = − 3 8 ∣ ∣ m ˙ e , 0 ∣ ∣ − 3 8 ∣ ∣ m ˙ w , 0 ∣ ∣ − 3 8 ( m ˙ e + m ˙ w ) \begin{aligned} \frac{\partial (RHS_{convection})}{\partial \phi_C}&=-\frac{3}{4}||\dot m_e,0||+\frac{3}{8}||-\dot m_e,0||-\frac{3}{4}||\dot m_w,0||+\frac{3}{8}||-\dot m_w,0|| \\ &= -\frac{3}{8}||\dot m_e,0||-\frac{3}{8}\underbrace{(||\dot m_e,0||-||-\dot m_e,0||)}_{=\dot m_e} -\frac{3}{8}||\dot m_w,0||-\frac{3}{8}\underbrace{(||\dot m_w,0||-||-\dot m_w,0||)}_{=\dot m_w}\\ \\&=-\frac{3}{8}||\dot m_e,0||-\frac{3}{8}||\dot m_w,0||- \frac{3}{8}(\dot m_e+\dot m_w) \end{aligned} ϕC(RHSconvection)=43m˙e,0+83m˙e,043m˙w,0+83m˙w,0=83m˙e,083=m˙e (m˙e,0m˙e,0)83m˙w,083=m˙w (m˙w,0m˙w,0)=83m˙e,083m˙w,083(m˙e+m˙w)
对于均匀速度场来说,其总是一个负值,表明这是稳定的格式。然而在一般的非均匀速度情况下,该格式就未必能保证有界性了。

5.10 FROMM格式

FROMM格式是用界面两侧的远迎风节点(U)和下游节点(D)做线性廓线,如下图所示,与对称廓线不同,其用的是偏迎风的框架来计算面 f f f上的值 ϕ \phi ϕ,其假设 ϕ U \phi_U ϕU ϕ C \phi_C ϕC ϕ D \phi_D ϕD是共线的。

在这里插入图片描述

5.11 插值廓线

线性廓线
ϕ ( x ) = k 0 + k 1 ( x − x C ) \phi(x)=k_0+k_1(x-x_C) ϕ(x)=k0+k1(xxC)
用在 x D x_D xD x U x_U xU处的 ϕ \phi ϕ ϕ D \phi_D ϕD ϕ U \phi_U ϕU来拟合该廓线,得
ϕ ( x ) = ϕ U + ϕ D − ϕ U x D − x U ( x − x U ) \phi(x)=\phi_U+\frac{\phi_D-\phi_U}{x_D-x_U}(x-x_U) ϕ(x)=ϕU+xDxUϕDϕU(xxU)
使用上式,可得迎风节点 C C C处的 ϕ \phi ϕ
ϕ C = ϕ U + ϕ D − ϕ U x D − x U ( x C − x U ) \phi_C=\phi_U+\frac{\phi_D-\phi_U}{x_D-x_U}(x_C-x_U) ϕC=ϕU+xDxUϕDϕU(xCxU)
均匀网格上,上式变为
ϕ C = ϕ D + ϕ U 2 \phi_C=\frac{\phi_D+\phi_U}{2} ϕC=2ϕD+ϕU
f f f上的值为
ϕ f = ϕ ( f ) = ϕ U + ϕ D − ϕ U x D − x U ( x f − x U ) = ϕ C + x f − x C x D − x U ( ϕ D − ϕ U ) \phi_f=\phi(f)=\phi_U+\frac{\phi_D-\phi_U}{x_D-x_U}(x_f-x_U)=\phi_C+\frac{x_f-x_C}{x_D-x_U}(\phi_D-\phi_U) ϕf=ϕ(f)=ϕU+xDxUϕDϕU(xfxU)=ϕC+xDxUxfxC(ϕDϕU)
均匀网格上,上式变为
ϕ f = ϕ C + ϕ D − ϕ U 4 \phi_f=\phi_C+\frac{\phi_D-\phi_U}{4} ϕf=ϕC+4ϕDϕU

5.12 离散方程

将这种近似界面值廓线的方式应用于离散一维对流扩散方程,可获得面通量为
m ˙ e ϕ e = ( ϕ C − 1 4 ϕ W + 1 4 ϕ E ) ∣ ∣ m ˙ e , 0 ∣ ∣ − ( ϕ E − 1 4 ϕ E E + 1 4 ϕ C ) ∣ ∣ − m ˙ e , 0 ∣ ∣ m ˙ w ϕ w = ( ϕ C − 1 4 ϕ E + 1 4 ϕ W ) ∣ ∣ m ˙ w , 0 ∣ ∣ − ( ϕ W − 1 4 ϕ W W + 1 4 ϕ C ) ∣ ∣ − m ˙ w , 0 ∣ ∣ \begin{aligned} \dot m_e \phi_e &= \left( \phi_C-\frac{1}{4}\phi_W+\frac{1}{4}\phi_E \right)||\dot m_e,0||-\left( \phi_E-\frac{1}{4}\phi_{EE}+\frac{1}{4}\phi_C \right)||-\dot m_e,0|| \\ \dot m_w \phi_w &= \left( \phi_C-\frac{1}{4}\phi_E+\frac{1}{4}\phi_W \right)||\dot m_w,0||-\left( \phi_W-\frac{1}{4}\phi_{WW}+\frac{1}{4}\phi_C \right)||-\dot m_w,0|| \end{aligned} m˙eϕem˙wϕw=(ϕC41ϕW+41ϕE)m˙e,0(ϕE41ϕEE+41ϕC)m˙e,0=(ϕC41ϕE+41ϕW)m˙w,0(ϕW41ϕWW+41ϕC)m˙w,0
将上式代入到半离散通有形式中,得
( ϕ C − 1 4 ϕ W + 1 4 ϕ E ) ∣ ∣ m ˙ e , 0 ∣ ∣ − ( ϕ E − 1 4 ϕ E E + 1 4 ϕ C ) ∣ ∣ − m ˙ e , 0 ∣ ∣ + ( ϕ C − 1 4 ϕ E + 1 4 ϕ W ) ∣ ∣ m ˙ w , 0 ∣ ∣ − ( ϕ W − 1 4 ϕ W W + 1 4 ϕ C ) ∣ ∣ − m ˙ w , 0 ∣ ∣ − [ ( Γ ϕ S δ x ) e ( ϕ E − ϕ C ) − ( Γ ϕ S δ x ) w ( ϕ C − ϕ W ) ] = 0 \begin{aligned} & \left( \phi_C-\frac{1}{4}\phi_W+\frac{1}{4}\phi_E \right)||\dot m_e,0||-\left( \phi_E-\frac{1}{4}\phi_{EE}+\frac{1}{4}\phi_C \right)||-\dot m_e,0|| \\ & +\left( \phi_C-\frac{1}{4}\phi_E+\frac{1}{4}\phi_W \right)||\dot m_w,0||-\left( \phi_W-\frac{1}{4}\phi_{WW}+\frac{1}{4}\phi_C \right)||-\dot m_w,0|| \\ &-\left[ \left(\Gamma^\phi \frac{S}{\delta x}\right)_e(\phi_E-\phi_C)- \left(\Gamma^\phi \frac{S}{\delta x}\right)_w(\phi_C-\phi_W)\right] = 0 \end{aligned} (ϕC41ϕW+41ϕE)m˙e,0(ϕE41ϕEE+41ϕC)m˙e,0+(ϕC41ϕE+41ϕW)m˙w,0(ϕW41ϕWW+41ϕC)m˙w,0[(ΓϕδxS)e(ϕEϕC)(ΓϕδxS)w(ϕCϕW)]=0
可写成如下形式
a C ϕ C + a E ϕ E + a W ϕ W + a E E ϕ E E + a W W ϕ W W = 0 a_C\phi_C+a_E\phi_E+a_W\phi_W+a_{EE}\phi_{EE}+a_{WW}\phi_{WW}=0 aCϕC+aEϕE+aWϕW+aEEϕEE+aWWϕWW=0
其中
a E = F l u x F e = − Γ e ϕ S e δ x e + 1 4 ∣ ∣ m ˙ e , 0 ∣ ∣ − ∣ ∣ − m ˙ e , 0 ∣ ∣ − 1 4 ∣ ∣ m ˙ w , 0 ∣ ∣ a W = F l u x F w = − Γ w ϕ S w δ x w + 1 4 ∣ ∣ m ˙ w , 0 ∣ ∣ − ∣ ∣ − m ˙ w , 0 ∣ ∣ − 1 4 ∣ ∣ m ˙ e , 0 ∣ ∣ a E E = F l u x F e e = 1 4 ∣ ∣ − m ˙ e , 0 ∣ ∣ a W W = F l u x F w w = 1 4 ∣ ∣ − m ˙ w , 0 ∣ ∣ a C = ∑ f ∼ n b ( C ) F l u x C f = Γ e ϕ S e δ x e + Γ w ϕ S w δ x w + ∣ ∣ m ˙ e , 0 ∣ ∣ − 1 4 ∣ ∣ − m ˙ e , 0 ∣ ∣ + ∣ ∣ m ˙ w , 0 ∣ ∣ − 1 4 ∣ ∣ − m ˙ w , 0 ∣ ∣ = − ( a E + a W + a E E + a W W ) + ( m ˙ e + m ˙ w ) \begin{aligned} a_E&=FluxF_e=-\Gamma^\phi_e \frac{S_e}{\delta x_e} + \frac{1}{4}||\dot m_e,0|| - ||-\dot m_e,0|| - \frac{1}{4}||\dot m_w,0|| \\ a_W&=FluxF_w=-\Gamma^\phi_w \frac{S_w}{\delta x_w} + \frac{1}{4}||\dot m_w,0|| - ||-\dot m_w,0|| - \frac{1}{4}||\dot m_e,0|| \\ a_{EE}&=FluxF_{ee}=\frac{1}{4}||-\dot m_e,0|| \\ a_{WW}&=FluxF_{ww}=\frac{1}{4}||-\dot m_w,0|| \\ a_C&=\sum_{f\sim nb(C)}FluxC_f \\ &=\Gamma^\phi_e \frac{S_e}{\delta x_e}+\Gamma^\phi_w \frac{S_w}{\delta x_w}+||\dot m_e,0||-\frac{1}{4}||-\dot m_e,0||+||\dot m_w,0||-\frac{1}{4}||-\dot m_w,0|| \\ &=-(a_E+a_W+a_{EE}+a_{WW})+(\dot m_e + \dot m_w) \end{aligned} aEaWaEEaWWaC=FluxFe=ΓeϕδxeSe+41m˙e,0m˙e,041m˙w,0=FluxFw=ΓwϕδxwSw+41m˙w,0m˙w,041m˙e,0=FluxFee=41m˙e,0=FluxFww=41m˙w,0=fnb(C)FluxCf=ΓeϕδxeSe+ΓwϕδxwSw+m˙e,041m˙e,0+m˙w,041m˙w,0=(aE+aW+aEE+aWW)+(m˙e+m˙w)

5.13 截断误差

T E = O ( Δ x 2 ) TE=O(\Delta x^2) TE=O(Δx2)
表明为二阶精度。

5.14 稳定性分析

R H S c o n v e c t i o n = − ( ϕ C − 1 4 ϕ W + 1 4 ϕ E ) ∣ ∣ m ˙ e , 0 ∣ ∣ + ( ϕ E − 1 4 ϕ E E + 1 4 ϕ C ) ∣ ∣ − m ˙ e , 0 ∣ ∣ − ( ϕ C − 1 4 ϕ E + 1 4 ϕ W ) ∣ ∣ m ˙ w , 0 ∣ ∣ + ( ϕ W − 1 4 ϕ W W + 1 4 ϕ C ) ∣ ∣ − m ˙ w , 0 ∣ ∣ \begin{aligned} RHS_{convection}=& -\left( \phi_C-\frac{1}{4}\phi_W+\frac{1}{4}\phi_E \right)||\dot m_e,0||+\left( \phi_E-\frac{1}{4}\phi_{EE}+\frac{1}{4}\phi_C \right)||-\dot m_e,0|| \\ &-\left( \phi_C-\frac{1}{4}\phi_E+\frac{1}{4}\phi_W \right)||\dot m_w,0||+\left( \phi_W-\frac{1}{4}\phi_{WW}+\frac{1}{4}\phi_C \right)||-\dot m_w,0|| \end{aligned} RHSconvection=(ϕC41ϕW+41ϕE)m˙e,0+(ϕE41ϕEE+41ϕC)m˙e,0(ϕC41ϕE+41ϕW)m˙w,0+(ϕW41ϕWW+41ϕC)m˙w,0
该项对 ϕ C \phi_C ϕC的变化率为
∂ ( R H S c o n v e c t i o n ) ∂ ϕ C = − 3 4 ∣ ∣ m ˙ e , 0 ∣ ∣ − 3 4 ∣ ∣ m ˙ w , 0 ∣ ∣ − 1 4 ( m ˙ e + m ˙ w ) \begin{aligned} \frac{\partial (RHS_{convection})}{\partial \phi_C}&=-\frac{3}{4}||\dot m_e,0||-\frac{3}{4}||\dot m_w,0||-\frac{1}{4}(\dot m_e + \dot m_w) \end{aligned} ϕC(RHSconvection)=43m˙e,043m˙w,041(m˙e+m˙w)
对于定值速度场,其值总是负的,表明这是稳定的格式,但是对于速度并非定值的一般情况则未必如此。

5.15 不同格式的对比

将前面几种格式的稳定性做个对比,明显,负值最大的是二阶迎风SOU格式(系数是-3/2),然后是迎风格式(系数是-1),接下来是FROMM格式(系数为-3/4),再下来是QUICK格式(系数-3/8),最后是中心差分CD格式(系数是0,即,对于 ϕ C \phi_C ϕC的变化是中性稳定的)。前面讲的自修正特性既包含了对流项也包含了扩散项,那么迎风格式的假扩散特性增加了其稳定性,即便其系数只有-1,其也是最稳定的格式。下图展示了不同格式求解对流扩散问题的结果,算例的计算域长度 L = 1 L=1 L=1,Dirichlet边界条件 x = 0 x=0 x=0 ϕ = 1 \phi=1 ϕ=1 x = 1 x=1 x=1 ϕ = 0 \phi=0 ϕ=0。在较低的Peclet数(Pe=1,如下图(a)所示)下所有的解都是稳定的,在较高的Peclet数(Pe=10,如下图(b)所示)下,CD、FROMM、QUICK格式的解出现了波动。

在低Pe下,CD和QUICK格式的精度相当且与精确解非常接近,而一阶迎风格式的解精度最低,FROMM格式的解比SOU格式的解更为精确,SOU又比迎风格式的精度略高,FROMM和SOU两者的精度稍逊于QUICK格式。即
E x a c t   S o l u t i o n ≈ C D ≈ Q U I C K > F R O M M > S O U > U p w i n d a t   l o w   P e Exact~Solution \approx CD \approx QUICK>FROMM>SOU>Upwind\quad\quad at~low~Pe Exact SolutionCDQUICK>FROMM>SOU>Upwindat low Pe

在高Pe下,各种格式的特性发生了变化。仅仅是迎风格式和SOU格式获得了稳定的解,两者的曲线几乎完全相同,表明SOU格式是高度扩散的。CD格式在整个区域上都是波动的,而FROMM和QUICK格式,虽然有波动却幅值很小。之所以出现这些波动,是因为给区域的出口施加了边界条件。由于高Pe的现象是对流主导的,所以其主要受上游值的影响。在区域的出口,解需要满足一个强制的边界值,就会产生较大的梯度导致发生过冲和下冲。扩散性较高的迎风和SOU格式是仅仅基于上游节点构造的,所以较为光滑且对于所有Pe值并不会表现出过冲和下冲现象,因为它们的解是和施加的出口值无关的。然而SOU格式在较高的梯度区域比如像激波这种情况存在时,依旧会产生振荡(过冲和下冲)。
在这里插入图片描述

5.16 均匀和非均匀网格的函数关系

在这里插入图片描述

前面展示的不同插值廓线是在一维笛卡尔网格上推导的,如果是沿着曲线坐标轴的话,可以采用同样的函数关系,只需要把笛卡尔坐标轴 x x x替换为曲线轴 ζ \zeta ζ就好了,如上图所示。在均匀网格上,函数关系是完全一样的,不管是笛卡尔网格还是曲线网格系统。在非均匀网格上,函数关系中的独立变量 x x x应该用更加通有的 ζ \zeta ζ来替代, ζ \zeta ζ代表沿着坐标轴的距离。如果 O O O为坐标原点,那么 ζ U \zeta_U ζU可用下式计算
ζ U = ζ U U + ( ζ U − ζ U U ) ζ U U = ( x U U − x O ) 2 + ( y U U − y O ) 2 + ( z U U − z O ) 2 ζ U − ζ U U = ( x U − x U U ) 2 + ( y U − y U U ) 2 + ( z U − z U U ) 2 \begin{aligned} \zeta_U & = \zeta_{UU}+(\zeta_U-\zeta_{UU}) \\ \zeta_{UU} &= \sqrt{(x_{UU}-x_O)^2+(y_{UU}-y_O)^2+(z_{UU}-z_O)^2} \\ \zeta_U-\zeta_{UU} &= \sqrt{(x_U-x_{UU})^2+(y_U-y_{UU})^2+(z_U-z_{UU})^2} \end{aligned} ζUζUUζUζUU=ζUU+(ζUζUU)=(xUUxO)2+(yUUyO)2+(zUUzO)2 =(xUxUU)2+(yUyUU)2+(zUzUU)2
因此,距离的计算可以通过把曲线划分成很多小段,然后每段用直线来代替,通常可用下式计算
ζ 1 − ζ 2 = ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 + ( z 1 − z 2 ) 2 \zeta_1-\zeta_{2} = \sqrt{(x_1-x_{2})^2+(y_1-y_{2})^2+(z_1-z_{2})^2} ζ1ζ2=(x1x2)2+(y1y2)2+(z1z2)2
在更加通有的坐标系统上,针对均匀和非均匀网格的不同格式汇总在下表中。

格式均匀网格非均匀网格
迎风Upwind ϕ f = ϕ C \phi_f=\phi_C ϕf=ϕC ϕ f = ϕ C \phi_f=\phi_C ϕf=ϕC
背风Downwind ϕ f = ϕ D \phi_f=\phi_D ϕf=ϕD ϕ f = ϕ D \phi_f=\phi_D ϕf=ϕD
中心差分CD ϕ f = 1 2 ( ϕ C + ϕ D ) \phi_f=\displaystyle\frac{1}{2}(\phi_C+\phi_D) ϕf=21(ϕC+ϕD) ϕ f = ϕ C + ϕ D − ϕ C ζ D − ζ C ( ζ f − ζ C ) \phi_f=\phi_C+\displaystyle\frac{\phi_D-\phi_C}{\zeta_D-\zeta_C}(\zeta_f-\zeta_C) ϕf=ϕC+ζDζCϕDϕC(ζfζC)
二阶迎风SOU ϕ f = 3 2 ϕ C − 1 2 ϕ U \phi_f=\displaystyle\frac{3}{2}\phi_C-\frac{1}{2}\phi_U ϕf=23ϕC21ϕU ϕ f = ϕ C + ϕ C − ϕ U ζ C − ζ U ( ζ f − ζ C ) \phi_f=\phi_C+\displaystyle\frac{\phi_C-\phi_U}{\zeta_C-\zeta_U}(\zeta_f-\zeta_C) ϕf=ϕC+ζCζUϕCϕU(ζfζC)
QUICK ϕ f = 3 4 ϕ C − 1 8 ϕ U + 3 8 ϕ D \phi_f=\displaystyle\frac{3}{4}\phi_C-\frac{1}{8}\phi_U+\frac{3}{8}\phi_D ϕf=43ϕC81ϕU+83ϕD ϕ f = ϕ U + ( ζ f − ζ U ) ( ζ f − ζ C ) ( ζ D − ζ U ) ( ζ D − ζ C ) ( ϕ D − ϕ U ) + ( ζ f − ζ U ) ( ζ f − ζ D ) ( ζ C − ζ U ) ( ζ C − ζ D ) ( ϕ C − ϕ U ) \begin{aligned}\phi_f = \phi_U&+\displaystyle\frac{(\zeta_f-\zeta_U)(\zeta_f-\zeta_C)}{(\zeta_D-\zeta_U)(\zeta_D-\zeta_C)}(\phi_D-\phi_U)\\&+\frac{(\zeta_f-\zeta_U)(\zeta_f-\zeta_D)}{(\zeta_C-\zeta_U)(\zeta_C-\zeta_D)}(\phi_C-\phi_U)\end{aligned} ϕf=ϕU+(ζDζU)(ζDζC)(ζfζU)(ζfζC)(ϕDϕU)+(ζCζU)(ζCζD)(ζfζU)(ζfζD)(ϕCϕU)
FROMM ϕ f = ϕ C + 1 4 ( ϕ D − ϕ U ) \phi_f=\phi_C+\displaystyle\frac{1}{4}(\phi_D-\phi_U) ϕf=ϕC+41(ϕDϕU) ϕ f = ϕ C + ζ f − ζ C ζ D − ζ U ( ϕ D − ϕ U ) \phi_f=\phi_C+\displaystyle\frac{\zeta_f-\zeta_C}{\zeta_D-\zeta_U}(\phi_D-\phi_U) ϕf=ϕC+ζDζUζfζC(ϕDϕU)

6 稳态二维对流

稳态二维对流方程为
∇ ⋅ ( ρ v ϕ ) = 0 \nabla \cdot (\rho \bold v \phi)=0 (ρvϕ)=0
对如图所示的二维单元 C C C上针对体积 V C V_C VC做体积分,使用散度定理,将体积分转化为面积分,并将面积分用单元面的形式表示,得
在这里插入图片描述

∑ f ∼ n b ( C ) ( ∫ f J ϕ , C ⋅ d S ) = 0 \sum_{f\sim nb(C)}\left( \int_f \bold J^{\phi,C} \cdot d \bold S \right)=0 fnb(C)(fJϕ,CdS)=0
对于面积分使用单点Gauss积分,上式RHS变为
∑ f ∼ n b ( C ) ( ∫ f J ϕ , C ⋅ d S ) = ∑ f ∼ n b ( C ) ( J f ϕ , C ⋅ S f ) = ∑ f ∼ n b ( C ) ( ρ v ϕ ) f ⋅ S f \sum_{f\sim nb(C)}\left( \int_f \bold J^{\phi,C} \cdot d \bold S \right)= \sum_{f\sim nb(C)}\left( \bold J^{\phi,C}_f \cdot \bold S_f \right)= \sum_{f\sim nb(C)}(\rho \bold v \phi)_f \cdot \bold S_f fnb(C)(fJϕ,CdS)=fnb(C)(Jfϕ,CSf)=fnb(C)(ρvϕ)fSf

∑ f ∼ n b ( C ) ( ρ v ϕ ) f ⋅ S f = 0 \sum_{f\sim nb(C)}(\rho \bold v \phi)_f \cdot \bold S_f=0 fnb(C)(ρvϕ)fSf=0
其在笛卡尔网格上的完全离散形式为
( ρ u Δ y ϕ ) e ⏟ m ˙ e − ( ρ u Δ y ϕ ) w ⏟ − m ˙ w + ( ρ u Δ x ϕ ) n ⏟ m ˙ n − ( ρ u Δ x ϕ ) s ⏟ − m ˙ s = 0 \underbrace{(\rho u \Delta y \phi)_e}_{\dot m_e} -\underbrace{(\rho u \Delta y \phi)_w}_{-\dot m_w} +\underbrace{(\rho u \Delta x \phi)_n}_{\dot m_n} -\underbrace{(\rho u \Delta x \phi)_s}_{-\dot m_s}=0 m˙e (ρuΔyϕ)em˙w (ρuΔyϕ)w+m˙n (ρuΔxϕ)nm˙s (ρuΔxϕ)s=0
对于每个坐标方向把流动当成局部一维的情况来处理,采用迎风格式离散,上式变为
a C ϕ C + a E ϕ E + a W ϕ W + a N ϕ N + a S ϕ S = 0 a_C\phi_C+a_E\phi_E+a_W\phi_W+a_N\phi_N+a_S\phi_S=0 aCϕC+aEϕE+aWϕW+aNϕN+aSϕS=0
系数为
a E = F l u x F e = − ∣ ∣ − m ˙ e , 0 ∣ ∣ a W = F l u x F w = − ∣ ∣ − m ˙ w , 0 ∣ ∣ a N = F l u x F n = − ∣ ∣ − m ˙ n , 0 ∣ ∣ a S = F l u x F s = − ∣ ∣ − m ˙ s , 0 ∣ ∣ a C = ∑ f ∼ n b ( C ) F l u x C f = ∣ ∣ m ˙ e , 0 ∣ ∣ + ∣ ∣ m ˙ w , 0 ∣ ∣ + ∣ ∣ m ˙ n , 0 ∣ ∣ + ∣ ∣ m ˙ s , 0 ∣ ∣ = − ( a E + a W + a N + a S ) ⏟ ∑ F ∼ N B ( C ) a F + m ˙ e + m ˙ w + m ˙ n + m ˙ s \begin{aligned} a_E &= FluxF_e=-||-\dot m_e,0|| \\ a_W &= FluxF_w=-||-\dot m_w,0|| \\ a_N &= FluxF_n=-||-\dot m_n,0|| \\ a_S &= FluxF_s=-||-\dot m_s,0|| \\ a_C &= \sum_{f\sim nb(C)} FluxC_f \\ &= ||\dot m_e,0||+||\dot m_w,0||+||\dot m_n,0||+||\dot m_s,0|| \\ &=-\underbrace{(a_E+a_W+a_N+a_S)}_{\sum_{F\sim NB(C)} a_F}+\dot m_e+\dot m_w+\dot m_n+\dot m_s \end{aligned} aEaWaNaSaC=FluxFe=m˙e,0=FluxFw=m˙w,0=FluxFn=m˙n,0=FluxFs=m˙s,0=fnb(C)FluxCf=m˙e,0+m˙w,0+m˙n,0+m˙s,0=FNB(C)aF (aE+aW+aN+aS)+m˙e+m˙w+m˙n+m˙s
如果使用QUICK格式,离散方程变为
a C ϕ C + a E ϕ E + a W ϕ W + a E E ϕ E E + a W W ϕ W W + a N ϕ N + a S ϕ S + a N N ϕ N N + a S S ϕ S S = 0 \begin{aligned} a_C\phi_C&+a_E\phi_E+a_W\phi_W+a_{EE}\phi_{EE}+a_{WW}\phi_{WW}\\ &+a_N\phi_N+a_S\phi_S+a_{NN}\phi_{NN}+a_{SS}\phi_{SS}=0 \end{aligned} aCϕC+aEϕE+aWϕW+aEEϕEE+aWWϕWW+aNϕN+aSϕS+aNNϕNN+aSSϕSS=0
其系数为
a E = F l u x F e = − 3 4 ∣ ∣ − m ˙ e , 0 ∣ ∣ + 3 8 ∣ ∣ m ˙ e , 0 ∣ ∣ − 1 8 ∣ ∣ m ˙ w , 0 ∣ ∣ a W = F l u x F w = − 3 4 ∣ ∣ − m ˙ w , 0 ∣ ∣ + 3 8 ∣ ∣ m ˙ w , 0 ∣ ∣ − 1 8 ∣ ∣ m ˙ e , 0 ∣ ∣ a E E = F l u x F e e = 1 8 ∣ ∣ − m ˙ e , 0 ∣ ∣ a W W = F l u x F w w = 1 8 ∣ ∣ − m ˙ w , 0 ∣ ∣ a N = F l u x F n = − 3 4 ∣ ∣ − m ˙ n , 0 ∣ ∣ + 3 8 ∣ ∣ m ˙ n , 0 ∣ ∣ − 1 8 ∣ ∣ m ˙ s , 0 ∣ ∣ a S = F l u x F s = − 3 4 ∣ ∣ − m ˙ s , 0 ∣ ∣ + 3 8 ∣ ∣ m ˙ s , 0 ∣ ∣ − 1 8 ∣ ∣ m ˙ n , 0 ∣ ∣ a N N = F l u x F n = 1 8 ∣ ∣ − m ˙ n , 0 ∣ ∣ a S S = F l u x F s = 1 8 ∣ ∣ − m ˙ s , 0 ∣ ∣ a C = ∑ f ∼ n b ( C ) F l u x C f = − ∑ F ∼ N B ( C ) a F + m ˙ e + m ˙ w + m ˙ n + m ˙ s \begin{aligned} a_E &= FluxF_e=-\frac{3}{4}||-\dot m_e,0||+\frac{3}{8}||\dot m_e,0||-\frac{1}{8}||\dot m_w,0||\\ a_W &= FluxF_w=-\frac{3}{4}||-\dot m_w,0||+\frac{3}{8}||\dot m_w,0||-\frac{1}{8}||\dot m_e,0|| \\ a_{EE} &= FluxF_{ee}=\frac{1}{8}||-\dot m_e,0|| \\ a_{WW} &= FluxF_{ww}=\frac{1}{8}||-\dot m_w,0|| \\ a_N &= FluxF_n=-\frac{3}{4}||-\dot m_n,0||+\frac{3}{8}||\dot m_n,0||-\frac{1}{8}||\dot m_s,0|| \\ a_S &= FluxF_s=-\frac{3}{4}||-\dot m_s,0||+\frac{3}{8}||\dot m_s,0||-\frac{1}{8}||\dot m_n,0|| \\ a_{NN} &= FluxF_n=\frac{1}{8}||-\dot m_n,0|| \\ a_{SS} &= FluxF_s=\frac{1}{8}||-\dot m_s,0|| \\ a_C &= \sum_{f\sim nb(C)} FluxC_f =-\sum_{F\sim NB(C)}a_F+\dot m_e+\dot m_w+\dot m_n+\dot m_s \end{aligned} aEaWaEEaWWaNaSaNNaSSaC=FluxFe=43m˙e,0+83m˙e,081m˙w,0=FluxFw=43m˙w,0+83m˙w,081m˙e,0=FluxFee=81m˙e,0=FluxFww=81m˙w,0=FluxFn=43m˙n,0+83m˙n,081m˙s,0=FluxFs=43m˙s,0+83m˙s,081m˙n,0=FluxFn=81m˙n,0=FluxFs=81m˙s,0=fnb(C)FluxCf=FNB(C)aF+m˙e+m˙w+m˙n+m˙s
采用这两个离散方程来求解在倾斜速度场中含台阶廓线的纯对流问题,如下图所示,矩形计算域内,在速度场 v ( 1 , 1 ) \bold v(1,1) v(1,1)的驱动下,变量 ϕ \phi ϕ的纯对流问题,计算域左侧 ϕ \phi ϕ为1,底部 ϕ \phi ϕ为0。在毫无扩散的情况下,如图(a)所示,精确解是对角线上为 ϕ = 1 \phi=1 ϕ=1,对角线下为 ϕ = 0 \phi=0 ϕ=0。图(b)给出了 x = 0.5 x=0.5 x=0.5处的精确廓线,以及使用迎风格式和QUICK格式得到的数值解。
在这里插入图片描述

与精确解相比,迎风格式所得廓线较为模糊且非常不准确但是非常光滑。该不精确性是由一种新形式的误差——交叉扩散(cross-stream diffusion)误差引起的,其是由使用的一维插值廓线导致的,即,将流动视为局部一维的这一假设引起的。起初交叉扩散被Patankar和Stubley定义为多维现象,当流动方向与网格不平齐的时候就产生了这一现象。针对二维问题,Vahl Davis和Mallinson给出了交叉扩散的近似表达式
Γ f a l s e ϕ = ρ ∣ v ∣ Δ x Δ y sin ⁡ ( 2 θ ) 4 [ Δ y sin ⁡ 3 ( θ ) + Δ x cos ⁡ 3 ( θ ) ] \Gamma_{false}^\phi=\frac{\rho |\bold v| \Delta x\Delta y\sin(2\theta)}{4[\Delta y\sin^3(\theta)+\Delta x\cos^3(\theta)]} Γfalseϕ=4[Δysin3(θ)+Δxcos3(θ)]ρvΔxΔysin(2θ)
其中 ∣ v ∣ |\bold v| v是速度幅值,而 θ \theta θ是速度矢量与 x x x坐标轴的夹角。通过使用高阶格式,可减小该误差,比如QUICK格式。QUICK格式比迎风格式给出的廓线更加陡峭也更加准确,然而在尖锐梯度附近其表现出了过冲和下冲。前面提到过,这种误差叫做色散误差(dispersion error),其生成了求解域内的最大/最小值,正是高阶格式的特征。

6.1 误差来源

基于前面章节的讨论,对流通量离散过程的数值误差来源可分为数值扩散(numerical diffusion)和数值色散(numerical dispersion)。

数值扩散会把尖锐的梯度抹平,其可分为流向和交叉流向的数值扩散。可以通过提高插值廓线的阶数来减小流向数值扩散,这会使廓线更加陡峭,但是会在梯度较大处产生上冲和下冲。交叉流向的数值扩散,是由假设廓线为一维的特性引起的,可以通过在流动方向上做插值或者使用一维高阶插值廓线来减少交叉数值扩散。

数值色散误差表现为在梯度较大处的振荡,使得解变得无界。除了迎风格式,数值色散在所有插值格式中都存在,其是由所假设的插值廓线的非物理特性决定的(这句话的意思是说,在梯度较大的地方,这些格式中假设的变量分布规律跟实际情况是不符合的)。

下图(a)展示的为数值扩散,下图(b)展示的为数值色散。

在这里插入图片描述
在这里插入图片描述

为评估该误差,针对非定常一维对流扩散方程,忽略其扩散项和源项,并假设密度和速度都是定值,则
∂ ϕ ∂ t + u ∂ ϕ ∂ x = 0 \frac{\partial \phi}{\partial t}+u \frac{\partial \phi}{\partial x} = 0 tϕ+uxϕ=0
假设精确解的形式为
ϕ ( x , t ) = ϕ ( t ) e j k x \phi(x,t)=\phi(t)e^{jkx} ϕ(x,t)=ϕ(t)ejkx
其中 j j j为虚数( j 2 = − 1 j^2=-1 j2=1),由该精确解算得的梯度为
∂ ∂ x ϕ ( x , t ) = j k ϕ ( t ) e j k x = j k ϕ ( x , t ) \frac{\partial}{\partial x}\phi(x,t)=jk\phi(t)e^{jkx}=jk\phi(x,t) xϕ(x,t)=jkϕ(t)ejkx=jkϕ(x,t)
当使用插值廓线的时候,梯度的数值近似是用在位置 − M Δ x , ( − M + 1 ) Δ x , . . . , Δ x , 2 Δ x , . . . , N Δ x -M\Delta x,(-M+1)\Delta x,...,\Delta x,2\Delta x,...,N\Delta x MΔx,(M+1)Δx,...,Δx,2Δx,...,NΔx处的 ϕ \phi ϕ值来获取的,即
∂ ∂ x ϕ ( x , t ) ≈ 1 Δ x ∑ n = − M N a n ϕ ( x + n Δ x , t ) = 1 Δ x ∑ n = − M N a n ϕ ( t ) e j k ( x + n Δ x ) = 1 Δ x ∑ n = − M N a n ϕ ( t ) e j k x e j k n Δ x = 1 Δ x ∑ n = − M N a n e j k n Δ x ϕ ( x , t ) \begin{aligned} \frac{\partial}{\partial x}\phi(x,t)&\approx\frac{1}{\Delta x}\sum_{n=-M}^{N}a_n\phi(x+n\Delta x,t) \\ &=\frac{1}{\Delta x}\sum_{n=-M}^{N}a_n\phi(t)e^{jk(x+n\Delta x)} \\ &=\frac{1}{\Delta x}\sum_{n=-M}^{N}a_n\phi(t)e^{jkx} e^{jkn\Delta x} \\ &=\frac{1}{\Delta x}\sum_{n=-M}^{N}a_n e^{jkn\Delta x} \phi(x,t) \end{aligned} xϕ(x,t)Δx1n=MNanϕ(x+nΔx,t)=Δx1n=MNanϕ(t)ejk(x+nΔx)=Δx1n=MNanϕ(t)ejkxejknΔx=Δx1n=MNanejknΔxϕ(x,t)
与精确解对比,得
j k ϕ ( x , t ) ≈ 1 Δ x ∑ n = − M N a n e j k n Δ x ϕ ( x , t ) ⇒ k ≈ − j Δ x ∑ n = − M N a n e j k n Δ x jk\phi(x,t) \approx \frac{1}{\Delta x}\sum_{n=-M}^{N}a_n e^{jkn\Delta x} \phi(x,t) \Rightarrow k \approx -\frac{j}{\Delta x}\sum_{n=-M}^{N}a_n e^{jkn\Delta x} jkϕ(x,t)Δx1n=MNanejknΔxϕ(x,t)kΔxjn=MNanejknΔx
一般 k k k是个虚数,将其写成实部和虚部的形式
k = Re ( k ) + j Im ( k ) k=\text{Re}(k)+j\text{Im}(k) k=Re(k)+jIm(k)
其中的Re和Im分别代表实部和虚部,将上式代入精确解 ϕ ( x , t ) = ϕ ( t ) e j k x \phi(x,t)=\phi(t)e^{jkx} ϕ(x,t)=ϕ(t)ejkx,得
ϕ ( x , t ) = ϕ ( t ) e j k x ≈ ϕ ( t ) e j [ Re ( k ) + j Im ( k ) ] x = ϕ ( t ) e j Re ( k ) x ⏟ P h a s e D i s p e r s i o n    e − Im ( k ) x ⏟ A m p l i t u d e D i s s i p a t i o n \begin{aligned} \phi(x,t)&=\phi(t)e^{jkx} \\ &\approx \phi(t)e^{j[\text{Re}(k)+j\text{Im}(k)]x} \\ &= \phi(t) \underbrace{e^{j\text{Re}(k)x}}_{\begin{aligned}&Phase\\&Dispersion~~\end{aligned}} \underbrace{e^{-\text{Im}(k)x}}_{\begin{aligned}&Amplitude\\&Dissipation\end{aligned}} \end{aligned} ϕ(x,t)=ϕ(t)ejkxϕ(t)ej[Re(k)+jIm(k)]x=ϕ(t)PhaseDispersion   ejRe(k)xAmplitudeDissipation eIm(k)x
因此,数值解包含了扩散diffusion(或耗散dissipative)和色散dispersion误差。如果 k k k为实数,则只有色散误差。如果 k k k是复数,则两种误差都会出现。基于此分析,检查下迎风格式和中心差分格式的 k k k值,对于迎风格式,其梯度算出来是
∂ ϕ ∂ x ≈ ϕ e − ϕ w Δ x = ϕ C − ϕ W Δ x = e j k x − e j k ( x − δ x ) Δ x ϕ ( x , t ) = 1 − cos ⁡ ( k δ x ) + j sin ⁡ ( k δ x ) Δ x ϕ ( x , t ) = j k ϕ ( x , t ) ⇒ k = sin ⁡ ( k δ x ) Δ x − j 1 − cos ⁡ ( k δ x ) Δ x \begin{aligned} \frac{\partial\phi}{\partial x} &\approx\frac{\phi_e-\phi_w}{\Delta x}=\frac{\phi_C-\phi_W}{\Delta x} =\frac{e^{jkx}-e^{jk(x-\delta x)}}{\Delta x}\phi(x,t) \\ &=\frac{1-\cos(k\delta x)+j\sin(k\delta x)}{\Delta x}\phi(x,t) \\ &=jk\phi(x,t) \\ \Rightarrow k&=\frac{\sin(k\delta x)}{\Delta x}-j\frac{1-\cos(k\delta x)}{\Delta x} \end{aligned} xϕkΔxϕeϕw=ΔxϕCϕW=Δxejkxejk(xδx)ϕ(x,t)=Δx1cos(kδx)+jsin(kδx)ϕ(x,t)=jkϕ(x,t)=Δxsin(kδx)jΔx1cos(kδx)
显然,迎风格式既有扩散误差又有色散误差。对于中心差分格式,其梯度项为
∂ ϕ ∂ x ≈ ϕ e − ϕ w Δ x = ϕ E − ϕ W Δ x = e j k ( x + δ x ) − e j k ( x − δ x ) Δ x ϕ ( x , t ) = j sin ⁡ ( k δ x ) Δ x ϕ ( x , t ) = j k ϕ ( x , t ) ⇒ k = sin ⁡ ( k δ x ) Δ x \begin{aligned} \frac{\partial\phi}{\partial x} &\approx\frac{\phi_e-\phi_w}{\Delta x}=\frac{\phi_E-\phi_W}{\Delta x} =\frac{e^{jk(x+\delta x)}-e^{jk(x-\delta x)}}{\Delta x}\phi(x,t) \\ &=\frac{j\sin(k\delta x)}{\Delta x}\phi(x,t) \\ &=jk\phi(x,t) \\ \Rightarrow k&=\frac{\sin(k\delta x)}{\Delta x} \end{aligned} xϕkΔxϕeϕw=ΔxϕEϕW=Δxejk(x+δx)ejk(xδx)ϕ(x,t)=Δxjsin(kδx)ϕ(x,t)=jkϕ(x,t)=Δxsin(kδx)
因为 k k k是实数,所以只有色散误差,色散误差导致解中出现震荡、上冲和下冲。

对数值色散有了更加深入的理解后,就需要针对对流项发展高阶精度的无震荡格式,这可一直是研究的热点,直到人们理解了对流通量的界定bounding。下一章将会详细讲解这类格式的发展。

7 非结构网格上的高阶格式

在这里插入图片描述

在结构网格上,高阶精度的函数关系是用远迎风 U U U、迎风 C C C、背风 D D D节点的值来定义的,然而在非结构网格上,界面的 C C C D D D节点是确定的,而 U U U节点则无法知晓在哪,如图。针对该难题,一种简单的处理方式是把高阶格式重新定义成节点 C C C D D D处梯度的形式,另一种方法是重构一个伪节点 U U U,这个在下一章中再讲,其主要用于发展高分辨率格式。

7.1 将高阶格式写成梯度项的形式

前面讲过的QUICK格式为例,其函数关系为
ϕ f = 3 4 ϕ C − 1 8 ϕ U + 3 8 ϕ D = ϕ C + 1 4 ( ϕ D − ϕ U 2 ) + 1 4 ( ϕ D − ϕ C ) \begin{aligned} \phi_f&=\frac{3}{4}\phi_C-\frac{1}{8}\phi_U+\frac{3}{8}\phi_D \\ &=\phi_C+\frac{1}{4}\left(\frac{\phi_D-\phi_U}{2}\right)+\frac{1}{4}(\phi_D-\phi_C) \end{aligned} ϕf=43ϕC81ϕU+83ϕD=ϕC+41(2ϕDϕU)+41(ϕDϕC)
在这里插入图片描述
沿着 d C F \bold d_{CF} dCF ζ \zeta ζ方向,位于节点 C C C和面 f f f处的梯度为
∂ ϕ C ∂ ζ = ϕ D − ϕ U 2 Δ ζ ∂ ϕ f ∂ ζ = ϕ D − ϕ C Δ ζ \frac{\partial \phi_C}{\partial \zeta}=\frac{\phi_D-\phi_U}{2\Delta\zeta} \quad\quad\quad \frac{\partial \phi_f}{\partial \zeta}=\frac{\phi_D-\phi_C}{\Delta\zeta} ζϕC=2ΔζϕDϕUζϕf=ΔζϕDϕC
跟QUICK格式对比,发现
ϕ f = ϕ C + 1 4 ( ϕ D − ϕ U 2 ) + 1 4 ( ϕ D − ϕ C ) = ϕ C + 1 2 ( ϕ D − ϕ U 2 Δ ζ ) Δ ζ 2 + 1 2 ( ϕ D − ϕ C Δ ζ ) Δ ζ 2 \begin{aligned} \phi_f&=\phi_C+\frac{1}{4}\left(\frac{\phi_D-\phi_U}{2}\right)+\frac{1}{4}(\phi_D-\phi_C) \\ &=\phi_C+\frac{1}{2}\left(\frac{\phi_D-\phi_U}{2\Delta\zeta}\right)\frac{\Delta\zeta}{2}+\frac{1}{2}\left(\frac{\phi_D-\phi_C}{\Delta\zeta}\right)\frac{\Delta\zeta}{2} \\ \end{aligned} ϕf=ϕC+41(2ϕDϕU)+41(ϕDϕC)=ϕC+21(2ΔζϕDϕU)2Δζ+21(ΔζϕDϕC)2Δζ

ϕ f = ϕ C + 1 2 ∂ ϕ C ∂ ζ Δ ζ 2 + 1 2 ∂ ϕ f ∂ ζ Δ ζ 2 \phi_f=\phi_C+\frac{1}{2} \frac{\partial \phi_C}{\partial \zeta} \frac{\Delta\zeta}{2}+\frac{1}{2} \frac{\partial \phi_f}{\partial \zeta} \frac{\Delta\zeta}{2} ϕf=ϕC+21ζϕC2Δζ+21ζϕf2Δζ
C C C f f f之间的矢量定义成 d C f \bold d_{Cf} dCf,上式变为
ϕ f = ϕ C + 1 2 ∇ ϕ C ⋅ d C f + 1 2 ∇ ϕ f ⋅ d C f \phi_f=\phi_C+\frac{1}{2} \nabla\phi_C \cdot \bold d_{Cf}+\frac{1}{2} \nabla\phi_f \cdot \bold d_{Cf} ϕf=ϕC+21ϕCdCf+21ϕfdCf
在非结构网格上使用这种形式是非常适合的,因为它只需要提供 C C C f f f处的梯度,只要对于这些梯度的计算是二阶精度的就好了,梯度的计算前面章节已经详细讲过了。与其最初的格式相比,这种格式也更加灵活,尤其适合在非结构网格上的计算。同样的,上式表明,基于3点的格式可以写成下面这种梯度的组合形式
ϕ f = a ϕ C + b ∇ ϕ C ⋅ d C f + c ∇ ϕ f ⋅ d C f \phi_f=a\phi_C+b \nabla\phi_C \cdot \bold d_{Cf}+c \nabla\phi_f \cdot \bold d_{Cf} ϕf=aϕC+bϕCdCf+cϕfdCf
其中的 a , b , c a,b,c a,b,c是系数,由在非结构网格上确定 ϕ f \phi_f ϕf时所采用的假设廓线分布所决定。这个通有离散格式可以用于其他格式的推导,先把它写成梯度值近似表达的形式,即
ϕ f = a ϕ C + b ∇ ϕ C ⋅ d C f + c ∇ ϕ f ⋅ d C f = a ϕ C + b ϕ D − ϕ U 2 Δ ζ Δ ζ 2 + c ϕ D − ϕ C Δ ζ Δ ζ 2 \begin{aligned} \phi_f&=a\phi_C+b \nabla\phi_C \cdot \bold d_{Cf}+c \nabla\phi_f \cdot \bold d_{Cf}\\ &=a\phi_C+b \frac{\phi_D-\phi_U}{2\Delta\zeta} \frac{\Delta\zeta}{2}+c \frac{\phi_D-\phi_C}{\Delta\zeta} \frac{\Delta\zeta}{2} \end{aligned} ϕf=aϕC+bϕCdCf+cϕfdCf=aϕC+b2ΔζϕDϕU2Δζ+cΔζϕDϕC2Δζ
然后可得最终形式为
ϕ f = ( a − c 2 ) ϕ C + ( b 4 + c 2 ) ϕ D − b 4 ϕ U \phi_f=\left(a-\frac{c}{2}\right)\phi_C+\left(\frac{b}{4}+\frac{c}{2}\right)\phi_D-\frac{b}{4}\phi_U ϕf=(a2c)ϕC+(4b+2c)ϕD4bϕU
使用上式,很容易就能算出 a , b , c a,b,c a,b,c系数来。以二阶迎风格式SOD为例
ϕ f = ( a − c 2 ) ϕ C + ( b 4 + c 2 ) ϕ D − b 4 ϕ U ϕ f = 3 2 ϕ C − 1 2 ϕ U } ⇒ { − b 4 = − 1 2 ⇒ b = 2 b 4 + c 2 = 0 ⇒ c = − 1 a − c 2 = 3 2 ⇒ a = 1 \left. \begin{aligned} &\phi_f=\left(a-\frac{c}{2}\right)\phi_C+\left(\frac{b}{4}+\frac{c}{2}\right)\phi_D-\frac{b}{4}\phi_U \\ &\phi_f=\frac{3}{2}\phi_C-\frac{1}{2}\phi_U \end{aligned} \right\} \Rightarrow \left\{\begin{aligned} -\frac{b}{4}=-\frac{1}{2} &\Rightarrow b=2\\ \frac{b}{4}+\frac{c}{2}=0 &\Rightarrow c=-1\\ a-\frac{c}{2}=\frac{3}{2} &\Rightarrow a=1 \end{aligned} \right. ϕf=(a2c)ϕC+(4b+2c)ϕD4bϕUϕf=23ϕC21ϕU4b=214b+2c=0a2c=23b=2c=1a=1
推得二阶迎风格式的等效形式
ϕ f = ϕ C + ( 2 ∇ ϕ C − ∇ ϕ f ) ⋅ d C f \phi_f=\phi_C+\left(2 \nabla\phi_C - \nabla\phi_f \right) \cdot \bold d_{Cf} ϕf=ϕC+(2ϕCϕf)dCf
按照同样的方法,可以推得前面所讲格式的等效形式,汇总如下

格式非结构网格等效形式
迎风Upwind ϕ f = ϕ C \phi_f=\phi_C ϕf=ϕC
中心差分CD ϕ f = ϕ C + ∇ ϕ f ⋅ d C f \phi_f=\phi_C+\nabla\phi_f \cdot \bold d_{Cf} ϕf=ϕC+ϕfdCf
二阶迎风SOU ϕ f = ϕ C + ( 2 ∇ ϕ C − ∇ ϕ f ) ⋅ d C f \phi_f=\phi_C+\left(2 \nabla\phi_C - \nabla\phi_f \right) \cdot \bold d_{Cf} ϕf=ϕC+(2ϕCϕf)dCf
FROMM ϕ f = ϕ C + ∇ ϕ C ⋅ d C f \phi_f=\phi_C+\nabla\phi_C \cdot \bold d_{Cf} ϕf=ϕC+ϕCdCf
QUICK ϕ f = ϕ C + 1 2 ( ∇ ϕ C + ∇ ϕ f ) ⋅ d C f \phi_f=\phi_C+\displaystyle\frac{1}{2}\left(\nabla\phi_C + \nabla\phi_f \right) \cdot \bold d_{Cf} ϕf=ϕC+21(ϕC+ϕf)dCf
背风Downwind ϕ f = ϕ C + 2 ∇ ϕ f ⋅ d C f \phi_f=\phi_C+2\nabla\phi_f \cdot \bold d_{Cf} ϕf=ϕC+2ϕfdCf

关于 ∇ ϕ C \nabla\phi_C ϕC ∇ ϕ f \nabla\phi_f ϕf的算法,前面第9章已经详细讲过了,如果忘掉的话,去看下吧。

8 延迟修正方法(The Deferred Correction Approach)

Khosla和Rubin提出的延迟修正(DC)过程,是一种紧凑的技术,其允许最初是针对低阶算法编写的代码,可以来使用高阶格式,而不会影响稳定性。该方法既可适用于结构网格也可适用于非结构网格,其思想是把使用高阶格式HO的单元面 f f f的对流通量写成
m ˙ f ϕ f H O = m ˙ f ϕ f U ⏟ i m p l i c i t + m ˙ f ( ϕ f H O − ϕ f U ) ⏟ e x p l i c i t \dot m_f\phi_f^{HO}=\underbrace{\dot m_f\phi_f^{U}}_{implicit}+\underbrace{\dot m_f(\phi_f^{HO}-\phi_f^{U})}_{explicit} m˙fϕfHO=implicit m˙fϕfU+explicit m˙f(ϕfHOϕfU)
其中上标 U U U H O HO HO分别表示迎风和高阶格式,通过把对流项写成这种格式,RHS的第1项是隐式计算的,其用的是节点值,而RHS的第2项是显示计算的,其用的是最近的 ϕ \phi ϕ值,即,在迭代过程中上一次的迭代值。上式可展开为节点值的形式
m ˙ f ϕ f H O = ∣ ∣ m ˙ f , 0 ∣ ∣ ϕ C − ∣ ∣ − m ˙ f , 0 ∣ ∣ ϕ F + ( m ˙ f ϕ f H O − ∣ ∣ m ˙ f , 0 ∣ ∣ ϕ C + ∣ ∣ − m ˙ f , 0 ∣ ∣ ϕ F ) = F l u x C f ϕ C + F l u x F f ϕ F ⏟ i m p l i c i t + F l u x V f ⏟ e x p l i c i t \begin{aligned} \dot m_f\phi_f^{HO}&=||\dot m_f,0||\phi_C-||-\dot m_f, 0||\phi_F+(\dot m_f\phi_f^{HO}-||\dot m_f,0||\phi_C+||-\dot m_f, 0||\phi_F) \\ &= \underbrace{FluxC_f\phi_C+FluxF_f\phi_F}_{implicit} + \underbrace{FluxV_f}_{explicit} \end{aligned} m˙fϕfHO=m˙f,0ϕCm˙f,0ϕF+(m˙fϕfHOm˙f,0ϕC+m˙f,0ϕF)=implicit FluxCfϕC+FluxFfϕF+explicit FluxVf
其中
F l u x C f = ∣ ∣ m ˙ f , 0 ∣ ∣ F l u x F f = − ∣ ∣ − m ˙ f , 0 ∣ ∣ F l u x V f = m ˙ f ϕ f H O − F l u x C f ϕ C − F l u x F f ϕ F \begin{aligned} &FluxC_f=||\dot m_f,0|| \\ &FluxF_f=-||-\dot m_f,0|| \\ &FluxV_f=\dot m_f\phi_f^{HO}-FluxC_f\phi_C-FluxF_f\phi_F \end{aligned} FluxCf=m˙f,0FluxFf=m˙f,0FluxVf=m˙fϕfHOFluxCfϕCFluxFfϕF
可以推得最终的代数方程为
a C ϕ C + ∑ F ∼ N B ( C ) a F ϕ F = b C a_C\phi_C+\sum_{F\sim NB(C)}a_F\phi_F=b_C aCϕC+FNB(C)aFϕF=bC
其中
a F = F l u x F f = − ∣ ∣ − m ˙ f , 0 ∣ ∣ a C = ∑ f ∼ n b ( C ) F l u x C f = ∑ f ∼ n b ( C ) ∣ ∣ m ˙ f , 0 ∣ ∣ = ∑ f ∼ n b ( C ) ( m ˙ f + ∣ ∣ − m ˙ f , 0 ∣ ∣ ) = − ∑ F ∼ N B ( C ) a F + ∑ f ∼ n b ( C ) m ˙ f b C = Q C ϕ V C − ∑ f ∼ n b ( C ) F l u x V f ⏟ b C D C = Q C ϕ V C − ∑ f ∼ n b ( C ) m ˙ f ( ϕ f H O − ϕ f U ) ⏟ b C D C \begin{aligned} a_F&=FluxF_f=-||-\dot m_f,0|| \\ a_C&=\sum_{f\sim nb(C)}FluxC_f=\sum_{f\sim nb(C)}||\dot m_f,0||=\sum_{f\sim nb(C)}(\dot m_f+||-\dot m_f,0||) \\ &=-\sum_{F\sim NB(C)}a_F+\sum_{f\sim nb(C)}\dot m_f\\ b_C&=Q_C^\phi V_C-\underbrace{\sum_{f\sim nb(C)}FluxV_f}_{b_C^{DC}} =Q_C^\phi V_C-\underbrace{\sum_{f\sim nb(C)}\dot m_f(\phi_f^{HO}-\phi_f^U)}_{b_C^{DC}} \end{aligned} aFaCbC=FluxFf=m˙f,0=fnb(C)FluxCf=fnb(C)m˙f,0=fnb(C)(m˙f+m˙f,0)=FNB(C)aF+fnb(C)m˙f=QCϕVCbCDC fnb(C)FluxVf=QCϕVCbCDC fnb(C)m˙f(ϕfHOϕfU)
其中的 b C D C b_C^{DC} bCDC代表了延迟修正(DC)过程所引入的额外源项,此外,DC技术生成的方程中系数矩阵总是对角占优的,因为其使用了迎风格式。


例2 采用QUICK格式,推导延迟修正的系数。


守恒方程将离散成如下的代数方程形式
a C ϕ C + ∑ F ∼ N B ( C ) a F ϕ F = b C a_C\phi_C+\sum_{F\sim NB(C)}a_F\phi_F=b_C aCϕC+FNB(C)aFϕF=bC
QUICK给出的单元面的值为(下式中的C、U、D表示迎风、远迎风、背风节点)
ϕ f = 3 4 ϕ C − 1 8 ϕ U + 3 8 ϕ D \phi_f=\frac{3}{4}\phi_C-\frac{1}{8}\phi_U+\frac{3}{8}\phi_D ϕf=43ϕC81ϕU+83ϕD
延迟修正方法是基于迎风格式得到代数方程的系数的,这些系数为
a F = F l u x F f = − ∣ ∣ − m ˙ f , 0 ∣ ∣ a C = − ∑ F ∼ N B ( C ) a F + ∑ f ∼ n b ( C ) m ˙ f \begin{aligned} a_F&=FluxF_f=-||-\dot m_f,0|| \\ a_C&=-\sum_{F\sim NB(C)}a_F+\sum_{f\sim nb(C)}\dot m_f \end{aligned} aFaC=FluxFf=m˙f,0=FNB(C)aF+fnb(C)m˙f
迎风和QUICK格式的差别在于其源项中的显示计算过程不同,即
b C = S C ϕ V C − ∑ f ∼ n b ( C ) m ˙ f ( ϕ f H O − ϕ f U p w i n d ) = S C ϕ V C − ∑ f ∼ n b ( C ) m ˙ f ( − 1 4 ϕ C − 1 8 ϕ U + 3 8 ϕ D ) \begin{aligned} b_C&=S_C^\phi V_C-\sum_{f\sim nb(C)}\dot m_f\left(\phi_f^{HO}-\phi_f^{Upwind}\right) \\ &=S_C^\phi V_C-\sum_{f\sim nb(C)}\dot m_f\left(-\frac{1}{4}\phi_C-\frac{1}{8}\phi_U+\frac{3}{8}\phi_D\right) \end{aligned} bC=SCϕVCfnb(C)m˙f(ϕfHOϕfUpwind)=SCϕVCfnb(C)m˙f(41ϕC81ϕU+83ϕD)


该紧凑流程非常容易实现,然而随着迎风格式和高阶格式算出来的单元面值的差别的增大,其收敛速度也变慢了。

9 代码讲解

9.1 uFVM

在uFVM中,对流项的组装是在cfdAssembleConvectionTerm中进行的,采用迎风格式先计算内部面的(cfdAssembleConvectionTermInterior),然后再对不同边界片Patch来计算边界面的(cfdAssembleConvectionTermInletBC,cfdAssembleConvectionTermOutletBC等)。

内部面的组装过程如下,首先找到内部面的owner和neighbour标识,然后使用pos来定义迎风标识(=1表示迎风),最后计算迎风格式的相关系数。

theMdotName = ['Mdot' theFluidTag];
mdotField = cfdGetMeshField(theMdotName,'Faces');	% 质量流量场

mdot_f = mdotField.phi(iFaces);						% 面的流出质量流量

iOwners = [theMesh.faces(iFaces).iOwner];			% 面所属单元标识
iNeighbours = [theMesh.faces(iFaces).iNeighbour];	% 面邻近单元标识
pos = zeros(size(mdot_f));
pos((mdot_f>0))=1;									% 依据mdot_f的正负判断是否为迎风方向节点

theFluxes.FLUXC1f(iFaces,1) = mdot_f.*pos;			% 给迎风格式的相关系数赋值
theFluxes.FLUXC2f(iFaces,1) = mdot_f.*(1-pos);
theFluxes.FLUXVf(iFaces,1) = 0;

对于高阶格式的添加是在迎风格式组装之后使用延迟修正方法来实现的,QUICK格式的组装在cfdAssembleConvectionTermDCQUICK中实现,如下

iUpwind = pos.*iOwners + (1-pos).*iNeighbours;	% 计算迎风侧单元标识
%get the upwind gradient at the interior faces
phiGradCf = phiGrad(iUpwind,:,iComponent); 		% 提取界面迎风侧单元的梯度
%interpolated gradient to interior faces
iOwners = [theMesh.faces(iFaces).iOwner]';
iNeighbours = [theMesh.faces(iFaces).iNeighbour]';
pos = zeros(size(mdot_f));
pos(mdot_f>0)=1;
% 插值计算面上的梯度值
phiGradf = ...
cfdInterpolateGradientsFromElementsToInteriorFaces('Average:Corrected'
,phiGrad,phi);
rc = [theMesh.elements(iUpwind).centroid]';
rf = [theMesh.faces(iFaces).centroid]';
rCf = rf-rc;	% 单元形心到面形心的距离矢量
% 计算延迟修正中的修正项
corr = mdot_f .* dot(phiGradCf'+phiGradf',rCf')'*0.5;
% 把修正项加入到源项中去
theFluxes.FLUXTf(iFaces) = theFluxes.FLUXTf(iFaces) + corr;

上述代码中对内部面的修正项corr的计算,即
m ˙ f ( ϕ f H O − ϕ f U p w i n d ) = m ˙ f [ ϕ C + 1 2 ( ∇ ϕ C + ∇ ϕ f ) ⋅ d C f ⏟ Q U I C K − ϕ C ⏟ U p w i n d ] = m ˙ f 1 2 ( ∇ ϕ C + ∇ ϕ f ) ⋅ d C f \begin{aligned} \dot m_f\left(\phi_f^{HO}-\phi_f^{Upwind}\right) &=\dot m_f\left[\underbrace{\phi_C+\frac{1}{2}\left(\nabla\phi_C + \nabla\phi_f \right) \cdot \bold d_{Cf}}_{QUICK}-\underbrace{\phi_C}_{Upwind}\right] \\ &=\dot m_f \frac{1}{2}\left(\nabla\phi_C + \nabla\phi_f \right) \cdot \bold d_{Cf} \end{aligned} m˙f(ϕfHOϕfUpwind)=m˙fQUICK ϕC+21(ϕC+ϕf)dCfUpwind ϕC=m˙f21(ϕC+ϕf)dCf

9.2 OpenFOAM

to be continued…

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值