论文部分内容阅读
格子Boltzmann方法(lattice Boltzmann method,LBM)诞生至今已有30年,其在理论和应用上都取得了快速的发展,已经能够解决部分工程应用中的实际问题,并成为相关领域研究的一个热点。格子Boltzmann方法不同于直接离散Navier-Stokes等宏观方程,它基于分子动理论,由Boltzmann方程演化而来,在宏观上是离散方法,微观上是连续方法。在许多传统方法无法胜任的多孔介质、晶体生长、磁流体等诸多领域都有成功的应用。格子Boltzmann方法的一个重要优点是具有天生的并行特性,适合于在大规模并行集群上进行复杂流场情况的数值模拟。尽管格子Boltzmann方法已取得了丰硕的成果,但仍然存在着许多亟待解决的问题。本文的主要工作和创新点如下:1.均匀网格格子Boltzmann方法同构和异构环境下的并行算法。文中将多松弛格子Boltzmann方法与大涡模拟相结合,用来模拟高雷诺数下流场的流动情况并对其并行方法进行了详细的分析研究。格子Boltzmann方法基于笛卡尔网格,所以流场可以沿着坐标轴的方向进行流场的划分,将流场划分为对应于MPI进程的多个计算子区域,每个MPI进程处理一块计算子区域。在同构环境下,我们设计了流场划分(1D,2D和3D)的详细策略,给出了三种不同流场划分时的进程间通信需要传递的数据。在复杂流场中,需要判断几何边界处的格子类型,文中给出了格子类型的判断方法。我们分别在上海大学-“自强4000”和国家超算济南中心神威蓝光超级计算机上进行了测试。详细比较了三种划分的通信量、格子类型判断量、并行性能。在异构多GPU环境下,我们使用SoA结构在GPU全局内存中存储变量,以便wrap中线程协同访问。算法中将计算子区域划分为inner和boundary两个部分分别进行计算,在计算inner部分的同时,通过cuda中overlapping特性隐藏boundary部分数据传递需要花费的时间。为了测试异构环境下的性能,我们在12块NVIDIA Kepler K20M GPU上进行了性能测试。2.有限差分格子Boltzmann方法并行性能的研究分析。格子Boltzmann方法可以看成是Boltzmann方程的一种特殊差分离散格式。在有限差分格子Boltzmann方法中,时间步长和格子尺寸可以设置为不同尺寸。我们使用同格子Boltzmann方法相同的并行策略在神威蓝光超级计算机上进行了并行性能的分析。3.高Ma数可压缩流格子Boltzmann方法及其并行性能研究。格子Boltzmann方法在不可压缩流上的研究已经较为成熟,但是对于可压缩流的研究相对较少。本文基于双分布函数和多速模型提出了适合于计算高Ma数可压缩流模型。通过具有三阶精度的MUSCL有限体积方法求解DVBE方程,模拟了跨音速和超音速Bump管道流动、Rae2822翼型以及圆柱绕流。设计了该模型的流场划分方法、数据传递策略等并行方法。并在国家超算广州中心天河二号超级计算机上进行了并行性能的测试。4.非结构化网格有限体积格子Boltzmann方法。均匀网格下的格子Boltzmann方法格式简单,并行计算方便。但是,对于具有复杂边界的流场来说,难于判断网格类型,为了更好的判断边界,只有提高网格的精度,致使流场在并行处理时计算量和网格量过大。为此,我们给出了非结构网格下有限体积格子 Boltzmann 方法。二维情况下,我们基于centroid-dual方案,通过Roe’s flux-difference splitting方法计算对流通量,采用Green-Gauss方法计算粒子分布函数的梯度。最后通过后台阶流、顶盖驱动流、圆柱绕流以及列车绕流进行了数值验证。三维情况下,我们基于cell-centered方案,采用了Lax-Wendroff方法计算对流通量,最后通过三维顶盖驱动流验证了方法的可靠性。我们基于PETSc对三维非结构化网格有限体积格子Boltzmann方法进行了并行实现并在并行集群上进行了并行性能分析。