-
多重网格法(Multigrid method,MG)是求解偏微分方程离散化方程组的高性能计算方法[1-10].
目前,关于求解带间断系数的非线性椭圆问题的多重网格法鲜见报道.为发展带间断系数的非线性椭圆问题的快速数值算法,本文通过减少辅助的粗网格空间、降低细层网格上的计算量,提出了基于差分格式的两重网格(NETG)法.数值试验表明,在相同计算精度的前提下,本文算法在计算量和计算时间方面优于以往的瀑布型多重网格(CMG)法.本文算法可与其它离散格式结合,推广至其它非线性偏微分方程.
全文HTML
-
考虑与非线性Helmholtz方程、天体物理学中的Lane-Emden方程有着紧密联系的一类非线性椭圆问题
其中:Ω是一个二维多边形区域,$\nabla = {\left({\frac{\partial }{{\partial x}}, \frac{\partial }{{\partial y}}} \right)^T}$为梯度算子,f(u)是与x,y,u有关的函数,α>0为已知的间断常系数,u=u(x,y)∈C02(Ω)为待求函数.
为便于讨论,取Ω为矩形区域[0,Lx]×[0,Ly],将Ω沿x,y方向均分成m,n等份.即${h_x} = \frac{{{L_x}}}{m}$,${h_y} = \frac{{{L_y}}}{n}$.网格点(xi,yj)对应于xi=i×hx,yj=j×hy,i=0,1,2,…,m,j=0,1,2,…,n.在非边界点(xi,yj)处采用二阶中心差分格式离散模型问题(1),可得到对应于步长h=max{hx,hy}的非线性方程组
其中u为待求的解向量,其维数依赖于步长h.
类似地,选取一组步长hs=2s-1h1,可得一系列对应的网格层Ωs和非线性方程组
文中用下标s从小到大表示网格从细到粗.
-
在使用牛顿法、拟牛顿法等迭代法求解大规模非线性方程组时,选择一个合适的初始值,有助于降低求解过程中的迭代次数.为了给最细层网格上的非线性方程组提供初始值,文献[6-8]讨论了求解非线性椭圆问题的CMG法.这类方法的基本思路是,首先使用迭代法求解未知点较少的最粗层上的非线性方程组,接着使用插值算子为相邻细层网格上的非线性方程组提供迭代初始值,如此递进,直至最细层网格.
在CMG法中各粗层网格的主要作用是为了给最细层网格提供初始值.为了减少这些辅助网格层上的计算量,我们使用插值算子,将最粗层网格的解插值到最细层网格,为该层上的非线性方程组的求解提供迭代初始值.
另一方面,在相同未知点规模的情况下,非线性方程组的求解代价高于线性方程.为降低求解非线性方程组的计算量,借鉴文献[9]的思路,在最细层网格上只需求解线性校正方程组,以降低该层上的求解计算量.
综上可知,通过减少中间辅助网格层以及在细层上求解线性方程代替直接求解非线性方程都可降低计算量.基于这种思路,我们设计了求解带间断系数的非线性椭圆方程离散化方程组的两重网格(NETG)法,其核心思想是选择合适步长,离散形成粗细两层网格,使用插值算子将粗网格上的非线性方程组的高精度近似解插值到细层上,为该层上的线性校正方程组的求解提供迭代初始值.该算法过程如下
算法1 两重网格法(NETG)
步骤1 给定误差限ε1,ε2,以uM0为初始值,迭代mM次求解FM(u)=0,得uM*.
步骤2 将uM*插值到细网格Ω1上得u10,置A10:=F1′(u10),置k:=0.
步骤3 计算b1k:=F1(u1k),求解线性校正方程组A10◇u1k=-b1k得◇u1k,并置
步骤4 置k:=k+1,u1k:=u1k+1.若‖F1(u1k)‖≤ε1或‖◇u1k‖≤ε2,置m1:=k,u1*:=u1k,否则转步骤3.
注 F1′(u10)表示非线性函数F1(u)在u10处的Jacobian矩阵.
可以看出,NETG法只使用了两个网格层(即粗层ΩM和细层Ω1),无需使用中间网格层,并且在最细网格层上只需要求解线性校正方程组,因此该算法结构简单,计算量更少.
-
为验证算法的有效性,我们在区域[0, 1]×[0, 1]上考虑如下数值算例.
例1 右端非线性函数f(u)=g(x,y)-u3,间断系数为
其中
真解为
例2 右端非线性函数f(u)=g(x,y)-uexp(u),间断系数α同上.其中,
真解为
选取CMG法作为对比算法,其插值算子为线性插值.在NETG法中,使用三次多项式插值作为插值算子.取网格层M=4,取精度控制条件为ε1=ε2=10-8,使用牛顿法求解非线性方程,最粗层上迭代初始值取为零向量.记ΩM,Ω1分别表示最粗、最细层上的网格规模;令E=‖u-u1*‖∞表示问题真解与算法求出的数值解的最大范数误差;对于CMG法,r从左向右分别表示最粗层ΩM到最细层Ω1上的迭代次数,对于NETG法,r从左向右分别表示ΩM和Ω1上的迭代次数;t表示计算时间.
为便于比较CMG法和NETG法在求解不同规模离散化方程组时的计算效率,使用这两种算法求解最细网格层规模分别为128×128,256×256,512×512,1 024×1 024的离散化方程组,将例1、例2对应的最大范数误差和所需计算时间绘制于图 1(a)、(b)中,图中点型从左到右分别对应最细网格层规模:128×128,256×256,512×512,1 024×1 024.
从表 1及表 2可以看出,随着间断系数中的c取值从109(或108)变化到10-8,CMG法、NETG法除在最粗层上的迭代次数略受影响,在其它层网格上的迭代步数为3次左右.由于最粗层上未知点较少,对整体计算量的影响不大.因此CMG法、NETG法的计算效率几乎不受间断系数取值的影响.此外,随着求解规模的增加,各层上的迭代次数基本保持不变.这表明,NETG法和CMG法一样,具有很好的稳健性.
此外,从表 1、表 2、图 1可以看出,在相同计算条件下,NETG法具有和CMG法相同的计算精度,在最粗、最细网格层的迭代次数也与CMG法相同,但NETG的计算时间仅为CMG的一半左右.这是因为NETG没有使用中间网格层,且在最细层网格上求解的是线性校正方程组,而不是非线性方程组.本文提出的NETG能更快求出带间断系数的非线性椭圆问题的数值解.