学习自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误差(色散?),关于这种误差的处理方法将放到下一章讲解。还有一点需要说明,我们假设驱动扩散项的流场,是事先已知的。那么流场的计算将放到后续章节里详解(可能你已经猜到了,因为离散方程的系数矩阵本身就是与流场量相关的,哪怕是定常流场,也需要迭代计算,而不可压缩中还有压力速度的耦合问题,还得构造解耦算法来折腾呢)。
尽管对流项看起来很简单,然而其离散方法却非常麻烦,以至于人们研究了30来年。这些工作给影响其离散的问题照亮了道路,也催生了大量的离散格式。鉴于文献的数量是如此庞大,咱们不得不用两个章节来分析它们。本章将引入基本概念和高阶(High Order,缩写为HO)偏迎风格式。下一章会讲到对流项的界限(bounding)问题,其有助于发展高阶精度的无振荡对流格式,即,所谓的高分辨率(High Resolution(HR))格式。
为清晰起见,新概念的引入将首先在1维网格上进行,然后再扩展到多维非正交网格上。本章将用1维对流-扩散问题的离散作为开端,通过稳定性判据,表明中心差分算法的缺陷。随后,表明迎风格式可通过该稳定性测试。接着解释了低阶格式的数值diffusion(扩散)误差和高阶格式的数值dispersion(色散)误差。而对高分辨率格式的处理则放到下一章进行讲解。
为便于说明问题,给出一个非常简单的一维定常对流-扩散方程,其控制方程为
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
万分幸运的是,这个问题存在着解析解,所以它通常用作基准算例来跟各种各样的数值格式做对照。
如果截面是不变的,那么这个稳态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=ePeL−1ePeLLx−xW−1
其中 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=xE−xW
不同的 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的变化也逐渐变为了更加陡峭的廓线形式。
在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 f∼nb(C)∑(ρuϕi−Γϕdxdϕi)f⋅Sf=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需要用邻近的节点值来得到,确定这些面上值的方法就是文献中所谓的“对流格式”。
乍一看,好像没啥难的啊,就跟在扩散项离散中采用的线性插值廓线一样,来做这个对流离散不就好了么,即,在给定面比如右侧面 e e e上的 ϕ \phi ϕ值的计算,可以假设变量的空间分布为
ϕ ( x ) = k 0 + k 1 ( 1 − x C ) \phi(x)=k_0+k_1(1-x_C) ϕ(x)=k0+k1(1−xC)
其中的 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+xE−xCϕE−ϕC(xe−cC)
这便是中心差分格式,其可通过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Δyw−2(ρuΔy)wFluxFw=−ΓwϕδxwΔyw−2(ρ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Δyw−2(ρuΔy)waC=FluxCe+FluxCw=ΓeϕδxeΔye+2(ρuΔy)e+ΓwϕδxwΔyw−2(ρ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=−xE−xCΓϕ+2(ρu)eaW=−xC−xWΓϕ−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=xE−xW的形式,单元 C C C的数值解为(注意,书中给出的公式RHS为 1 2 ( 1 − P e L 2 ) \frac{1}{2}(1-\frac{Pe_L}{2}) 21(1−2PeL)实际应为 1 2 ( 1 − P e L 4 ) \frac{1}{2}(1-\frac{Pe_L}{4}) 21(1−4PeL))
ϕ 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(1−4PeL)
单元 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=ePeL−1ePeL/2−1
让 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流动),这么做的话也是不可行的,所以需要发展修正方法。
如上图,与对流过程更加契合的格式为迎风格式,迎风格式基本上是模仿了对流的物理特性,即,单元面上的值是依赖于迎风节点上的值的,换言之,依赖于流动方向的。图中所示的单元面上的值用下式给出
ϕ 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=(ρv⋅S)e=(ρuS)e=(ρuΔy)em˙w=(ρv⋅S)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∣∣ϕC−∣∣−m˙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,0∣∣FluxFeConv=−∣∣−m˙e,0∣∣FluxVeConv=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∣∣ϕC−∣∣−m˙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,0∣∣FluxFwConv=−∣∣−m˙w,0∣∣FluxVwConv=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,0∣∣2+∣∣−PeL,0∣∣=4+∣PeL∣2+∣∣−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)格式后,咱们再讨论这个问题。
如果把迎风格式反过来用,即,用背风格式的话,会发生什么有趣的事情呢?如上图所示,在这种插值廓线中,是把界面背风方向节点处的值视作界面上的值,这样,面 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,0∣∣−∣∣−m˙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=4−∣∣−PeL,0∣∣−∣∣PeL,0∣∣2−∣∣PeL,0∣∣=4−∣PeL∣2−∣∣PeL,0∣∣
不用把上式的图形画出来,也可以看出,当 ∣ P e L ∣ → 4 |Pe_L|\rightarrow4 ∣PeL∣→4的时候,解变得完全无界。背风格式与其它格式联合起来预测突变界面时是有用的,然而这里引入背风格式的目的主要是为了便于在下一节给出更好的稳定性分析。
截断误差是由离散过程的自然近似所造成的,对于笛卡尔网格上的一维情形较容易分析。下面将做迎风、背风、中心差分格式的扩散和反扩散分析。
针对通过迎风格式离散得到的方程,尝试将其恢复到最初的积分方程并考察其截断误差。假设流动是沿着 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(xC−xe)+21(dx2d2ϕ)e(xC−xe)2+...=ϕe−(dxdϕ)e(xe−xC)+...
对于均匀网格
ϕ 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
该截断误差,也称为流向扩散,通过更改扩散系数的值影响了待求解方程,从而降低了解的精确性。这样,相当于改变了对流扩散方程的扩散效应。另一方面,该额外的流向扩散效应也是有益的,因为其对解进行了限定,起到了稳定作用,可得到物理上有意义的解。
显然,要想减少这个流向数值扩散,需要针对对流项构造高阶精度的近似格式。然而,后面章节中会讲到,这些格式在构造的时候还需要保证解的有界性。
跟上一小节类似,假设流动是沿着 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(没搞懂啥意思)。实际上使用背风格式得到的一维对流扩散方程的解比中心差分格式的振荡还要剧烈。
有限体积方法中,对中心差分格式的截断误差分析略嫌麻烦,因为梯度的计算需要用到单元面上的插值,而并非直接用到节点处的已有值。假设各处的速度是已知的,且网格是均匀的,网格尺度为 Δ 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=ϕw−2Δxϕw′+8Δx2ϕw′′−48Δx3ϕw′′′+384Δx4ϕwiv−3840Δx5ϕwv+...ϕC=ϕw+2Δxϕw′+