对流扩散方程有限差分方法. 下载本文

对流扩散方程有限差分方法

求解对流扩散方程的差分格式有很多种,在本节中将介绍以下3种有限差分格式:中心差分格式、Samarskii格式、Crank-Nicolson型隐式差分格式。

3.1 中心差分格式

时间导数用向前差商、空间导数用中心差商来逼近,那么就得到了(1)式的中心差分格式[6]

?1un?unjj?若令 ??a?a?nunj?1?uj?12h?vnnunj?1?2uj?uj?1h2 (3)

?h,??v?1 unj,则(3)式可改写为

h21nnnn?un?(unj?j?1?uj?1)??(uj?1?2uj?uj?1) (4)

2?1 从上式我们看到,在新的时间层n?1上只包含了一个未知量unj,它可以nn由时间层n上的值unj?1,uj,uj?1直接计算出来。因此,中心差分格式是求解对

流扩散方程的显示格式。

?1假定u(x,t)是定解问题的充分光滑的解,将unununj,j?1,j?1分别在(xj,tn)处

进行Taylor展开:

?1unj??u??u(xj,tn?1)?u(xj,tn)?????O(?2)

??t?jnunj?1h2??2u???u?3?u(xj?1,tn)?u(xj,tn)?h????2??O(h)

??x?j2??x?jh2??2u???u?3?u(xj?1,tn)?u(xj,tn)?h????2??O(h)

??x?j2??x?j?1un?unjjnunj?1?uj?1nnunj?1?2uj?uj?1nnnnunj?1代入(4)式,有 T(xj,tn)??n?a2hn?vh2

n??2u???u???u?2????O(?)?a???a?O(h)?v?2??v?O(h2) ??t?j??x?j??x?j??2u???u???u?????a???v?2??O(?)?(a?v)?O(h2) ??t?j??x?j??x?jnnn ?O(??h2)

显然,当??0,h?0时,T(xj,tn)?0,即中心差分格式与定解问题是相容的。由以上的讨论也可得知,对流扩散方程的中心差分格式的截断误差为

O(??h2)。

对于我们上面构造的差分格式,是否可以直接用于实际计算呢?也就是说,如果初始值有误差,在计算过程中误差会不会扩大传播呢?这就是接下来我们要讨论的是差分方程的稳定性问题。下面用Fourier方法来分析中心差分格式的稳定性。 令ujn?vneikjh,代入到(4)式

?venikjhven?1ikjh1??(vneik(j?1)h?vneik(j?1)h)??(vneik(j?1)h?2vneikjh?vneik(j?1)h)2n?1整理得 v?[1?2?(1?coskh)?i?sinkh]vn

所以该差分格式的增长因子为:

G(?,k)?1?2?(1?coskh)?i?sinkh 其模的平方为

G(?,k)?[1?2?(1?coskh)]2??2(sinkh)2

?1?4?(1?cokhs)?4?2(1?cokhs)2??2(sikhn)2 ?1?(1?coskh)[4??4?2(1?coskh)??2(1?coskh)] 由于1?coskh?0,所以G(?,k)?1(即差分格式稳定)的充分条件为 4??4?2(1?cokhs)??2(1?cokhs)?0 上式可以改写为

(2?2?8?2)1?coskh?4??2?2?0 21注意到(1?coskh)?[0,1],所以上面不等式满足的条件为

2 (2?2?8?2)?4??2?2?0, 4??2?2?0。

由此得到差分格式(3)的稳定性限制为

?12v ??2 , v2?。

2ha故有结论:对流扩散方程的中心差分格式是条件稳定的。根据Lax等价定理,我们可以知道,对流扩散方程的中心差分格式是条件收敛的。

3.2 Samarskii格式

设a>0,先对方程(1)作扰动,得到另一个对流扩散方程

[7]

?u?u1?2u?a?v (5) ?t?x1?R?x2其中 R?1ha,当h?0时,(5)式化为(1)式 2v对于(5)式,构造迎风格式

?1un?unjj??anunj?uj?1hnnun1j?1?2uj?uj?1?v (6) 21?Rh差分格式(6)称为逼近对流扩散方程的Samarskii格式。

首先推导(6)的截断误差。设u(x,t)是对流扩散方程(1)式的充分光滑的解

Tjn?u(xj,tn?1)?u(xj,tn)??au(xj,tn)?u(xj?1,tn)h?u(xj?1,tn)?2u(xj,tn)?u(xj?1,tn)1v1?Rh2令

??nju(xj,tn?1)?u(xj,tn)??vu(xj?1,tn)?2u(xj,tn)?u(xj?1,tn)h2

用 Taylor级数展开有

?un?2un2 ??()j?v(2)j?O(??h)

?t?xnj再令 ??anju(xj,tn)?u(xj?1,tn)hu(xj?1,tn)?2u(xj,tn)?u(xj?1,tn)1?(?1)v 1?Rh2用 Taylor级数展开有

?unah?2un1?2unv(2)j?O(h2) ??a()j?(2)j??t2?x1?R?xnj?un?2unR?2uv(2)?O(h2) ?a()j?Rv(2)j??x1?R?x?x?unR2?2unv(2)j?O(h2) ?a()j??x1?R?x