论文部分内容阅读
Navier-Stokes方程是从复杂的流体运动中简化出来的一个重要模型问题,通过对这个模型的深入研究,可以帮助我们了解掌握自然规律,从而推动自然科学的进步。但是Navier-Stokes方程是一个非线性偏微分方程组,求解非常困难,到目前为止,也只有极少数非常简单的流动问题才能求得其精确解,大多数还是要通过离散方法求得数值解。所以对Navier-Stokes方程的数值解法的研究还是非常有现实意义的。本文主要研究了Navier-Stokes方程的几类数值解法,主要包括迭代罚方法,两套网格方法,算子分裂方法等。从数学的角度看Navier-Stokes方程组,它需要求解两个自变量速度和压力,是一个耦合的方程,并且对速度还要求其散度为零,这就使得其成为一个鞍点问题。此外它还带有非线性项,又可以和时间有关,所有这些都给数值求解带来了很大的麻烦,针对其不同的方面,都有一些不同的数值算法。论文共分四章。第一章我们简要地介绍了一下不可压缩方程组的物理背景。实际上Navier-Stokes方程就是质量守恒定律,动量定理以及牛顿第二定律在流体力学中的表达形式,方程中的每一个量,每一式子都有其具体的物理意义。如u就是速度,p表示所受的压力,速度满足散度为零,表明该流体是不可压缩的等等。另外也说明Stokes方程是特定情况下Navier-Stokes方程的简化形式。在第一章第二部分我们还简要介绍了有限元方法,这是我们在具体计算数值例子时空间离散采用的方法。相对于差分方法来说,有限元方法具有稳定性好,有比较好的误差估计,可以使用不规则剖分等优点。我们也稍微提及了一点在有限元编程中碰到的问题。Stokes方程需要求解两个未知量,因而需要用混合有限元解。所以在第二章的开始,我们简单介绍混合有限元方法。为了保证解的唯一性,两个解的空间不是任意取的,而是必须满足所谓的LBB条件。方程离散之后也必须满足离散的LBB条件,这就使得我们在离散的时候必须选择稳定的元,如比较经典的RT元,BDM元,Mini元以及Taylor-Hood元等都是满足离散LBB条件的。从数学角度来看,Stokes方程也可以看作是一个有条件约束的极小化问题。速度项散度为零作为约束条件,这样的话就可以用带积分简化的罚方法去解。相比Lagrange乘子法而言,罚方法能够使得引入的变量个数达到最少,这样就使得有限元方法实现起来简单很多,但是罚因子ε会引进一部分误差,全部误差估计为O(ε+Rh),Rh为空间离散误差。从这一结果来看显然罚因子ε应该取的越小越好,这样我们就可以尽可能逼近方程的解。但是从另一方面来看,方程离散导出的矩阵条件数为O(ε-1h-2),所以当ε变小时,相应的矩阵计算将变的不稳定。为了解决这一矛盾,我们利用迭代罚方法,使得可以通过不用减小ε,而消除ε带来的误差,这样其条件数就不会太差,使得相应的计算比较稳定。在这一过程中,要求解所属于的两个空间满足离散LBB条件,我们常用的一个简单的元,Q1—P0元,虽然不满足LBB条件,但我们证明了在剔除使得(▽·v,q)=0的基底之后,是同样可以达到我们需要的结果。在第三章我们介绍了两套网格方法和两套网格方法在Navier-Stokes方程上的应用。两套网格方法最先是由许进超教授提出的,用来离散非对称不正定偏微分方程。而后随着研究的深入,也被用于非线性问题的线性化,大型偏微分方程的局部并行算法,求解耦合方程等等。在第三章的开始我们先通过两个具体的例子来说明两套网格的思想。接着将两套网格思想应用于Navier-Stokes方程。首先取两套网格,一粗一细。我们做的工作就是将粗细网格之间的比例在H1(Ω)范数意义下提高到H=O(h1/4-s)(这里s是一个跟维数有关的参数,d=2,s为任意小的正数,d=3,s=1/2),在L2(Ω)范数意义下提高到H=O(h1/2)。具体算法为先在粗网格上解Navier-Stokes方程得一数值解,因为网格比较粗,所以计算量也不是很大。然后在细网格做一次牛顿迭代,其迭代初值为我们在粗网格求得的解,最后在不需要重新组合细网格刚度矩阵的前提下,仅仅改变右端项对解做一次修正。我们对算法进行了详细的分析,给出了误差估计,并利用数值例子说明了其计算的高效性。第四章主要介绍了与时间相关的Navier-Stokes方程的分裂算法。分裂算法经过半个多世纪的发展,已经形成规模。我们首先介绍了几种比较流行的分裂算法,罗列了一些经典分裂格式及其相应的误差分析结果。在分析这些格式的优缺点的基础上,提出了我们的分裂格式,是将不可压缩项和非线性项分开在不同的方程中,每个方程都满足原始的边界条件,这样就不会像投影算法那样引进人工边界层。我们采用半离散的格式进行讨论,在时间上采用Crank-Nicolson公式进行离散,并且我们在计算tn+1的时候不仅用到tn的速度和压力值,而且还用到了tn-1的压力值,这两个特点使得我们这个格式在时间上具有两阶的精度。我们详细地给出了这个两阶精度的证明过程及其相应的数值例子。