对流扩散方程有限差分方法
求解对流扩散方程的差分格式有很多种,在本节中将介绍以下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