论文部分内容阅读
作为许多数值模拟的前处理过程,网格生成过程很大程度上影响着求解的效率和正确性。非结构网格由于其对复杂外形的良好适应性,正逐渐成为诸如计算流体力学(CFD: Computational Fluid Dynamics)等领域研究和应用的热点。其中Delaunay算法因其数学基础好、网格质量高、计算高效等特点,是非结构网格生成中最常用的方法之一。随着数值模拟采用的计算模型日益复杂,许多算法和应用需要上亿甚至数十亿规模的网格单元,传统串行算法在时间和内存空间上无法满足如此规模的网格生成需求,并行网格生成算法因而也就成为了全新的研究热点。而近几十年,高性能计算技术和超级计算机的发展又为提高网格生成过程的效率提供了新的平台,研究面向超级计算机的并行网格生成算法就更加重要。 目前在二维情况下,Delaunay网格生成并行化的研究已经十分成熟,基本没有难点;而三维条件下的并行Delaunay网格生成仍然存在许多问题需要解决。本文针对三维条件下Delaunay网格生成算法的并行化展开研究,以减少网格生成过程的时间、提升并行效率为目标,综合考虑超级计算机的混合多级体系结构,研究了适用于不同内存架构的并行Delaunay网格生成算法。 首先,本文提出了面向分布式内存架构的三维并行约束Delaunay网格生成算法(3D PCDM)。针对原有二维PCDM算法直接应用在三维情况下会在人工边界面产生过短边从而导致网格质量下降的问题,采用点移动和主从通信模式两种方法在三维条件下实现人工边界网格一致,同时避免在边界产生低质量网格单元。随后本文针对3D PCDM算法的实现技术展开研究,设计了子区域间通信相关的数据结构,采用了消息聚合、非阻塞通信和计算通信重叠等实现方法减少通信开销。同时研究了基于加权图剖分的区域分解过程以及人工边界网格一致保证算法的实现方法。实验证明本文算法和采用的具体实现技术能够在保证网格质量的前提下,取得较好的并行效率。 随后本文提出了面向多核共享存储架构的三维并行Delaunay网格生成算法。该算法基于并行插点的思想,以候选点集的子集为单位进行并行插点。算法首先将候选点集划分成互不重合的子集,随后选择互相独立的子集分配给不同的处理器进行并行插点,增大了一次点集划分之后进行并行插点的点集规模。实现过程中采用了多种方法避免线程间不必要的同步和等待,减少了多线程并行引入的额外开销。实验表明,本文算法可以在共享内存节点上快速生成较高质量的网格单元,大幅度提升了并行网格生成的计算速度,并行效率较高。 接下来本文在上述两种并行算法的基础上,形成了面向超级计算机分布式+共享内存混合多级体系结构的混合多粒度三维并行Delaunay网格生成算法。算法分为粗细两种不同的并行粒度,粗粒度并行过程采用3D PCDM算法,在子区域网格生成的过程中则采用面向共享内存的并行插点算法进行细粒度并行。实现过程采用MPI+OpenMP混合编程模型,并针对混合并行过程中子区域间通信、人工边界面接收点处理等过程的实现方法进行了研究。通过实验可知,混合多粒度并行算法和3D PCDM算法相比,在使用大量计算核心进行大规模并行网格生成时能够取得比3D PCDM算法更高的计算速度,可以支持面向复杂外形的千核级高效并行网格生成。 最后本文通过对标准算例DLR-F4翼身组合体算例对本文提出的3D PCDM算法、面向共享内存架构的三维并行Delaunay网格生成算法和混合多粒度三维并行Delaunay网格生成算法进行应用验证。验证过程使用本文提出的并行算法以及开源串行软件Tetgen对DLR-F4算例生成较大规模网格单元,并使用商业软件Fluent进行定常绕流计算,通过对不同展向站位压力系数分布和实验结果进行对比,说明了本文提出的并行算法可以生成应用于实际数值模拟计算的网格,具有工程实用意义。