论文部分内容阅读
Helmholtz方程广泛地用来刻画波传播和逆散射现象,它在若干工业技术领域有着重要的应用,如航空航天、海洋技术、油气勘探等。由于其重要性,Helmholtz方程的数值求解引起了广泛的研究。建立Helmholtz方程有效的数值求解方法具有一定的挑战性,其主要难点在于如何尽可能减小大波数问题带来的“污染效应”。“污染效应”会导致数值解的精度被严重污染,且对于高维情形“污染效应”无法被克服。无论是有限元法还是有限差分法离散Helmholtz方程,为了尽可能减少“污染效应”,采用足够小的离散步长是必需的。这样我们就会得到一个大规模的稀疏线性系统,特别是对于三维大波数情形。由于规模巨大且系数矩阵性质较坏,此线性系统几乎无法用串行的标准迭代法来求解。我们需要发展并行预条件迭代法来求解此大规模稀疏线性系统。 本文提出了一种求解3维大波数Helmholtz方程的基于MPI的并行预条件迭代算法。我们采用复移位的Laplacian预处理3维Helmholtz算子方程,再用频散极小化有限差分法进行离散,得到离散预条件线性系统。采用Krylov子空间Bi-CGSTAB迭代法联合三维全粗化的多重网格方法来求解此大规模稀疏线性系统。多重网格作为内迭代来逼近预条件子的逆,并采用基于矩阵的延拓算子。基于MPI环境,我们实现此预条件迭代算法的并行计算,其中多重网格的并行化是关键。我们解决了一系列并行多重网格计算中出现的问题,其中包括计算区域的并行剖分,剖分后子区域的拓展,相邻子区域的数据信息通信,局部多重网格分量的重构,以及并行多重网格的具体执行等等。数值试验显示了此并行预条件迭代法的性能及较高的并行加速比。我们计算的最大波数达到500,对应线性系统的自由度达到10亿,其中最多用到512个核,相对于8个核计算时间节省了将近90%。我们同时还测试了用此并行预条件迭代法求解地球物理实际应用中的大规模问题,取得了良好的效果,这是串行算法所无法企及的。全文分七章。 第一章为引言,简要地介绍Helmholtz问题的背景及其迭代解的发展状况,同时介绍了本文的主要工作. 第二章回顾了三维Helmholtz方程的全粗化多重网格预条件迭代法。其中,预条件子的构造基于复移位的Laplacian,多重网格延拓算子的构造基于差分离散方案。 第三章提出并行计算的数据(任务)划分,也即计算区域的划分,并对划分后的子区域依据多重网格的层次进行拓展,以实现各子区域内不同层次网格上的信息转移和不同子区域间的数据交换。 第四章实现多重网中格粗网格算子的并行计算。 第五章实现多重网格算法的并行计算,包括并行多重网格算法的启动及计算中的信息通信。 第六章为数值实验,测试并行预条件迭代算法的并行加速比和实际应用。 第七章为本文的结论,提出进一步需要研究的问题.