论文部分内容阅读
对流扩散方程是一种常见的偏微分方程,在很多情况下,获得它的解析解是非常困难的,为了得到它的数值解只能采用数值方法。作为一种新兴的介于微观方法与宏观方法之间的介观方法,格子Boltzmann方法可以用来求解偏微分方程。相比传统的宏观算法,它无需构造大规模线性方程组,也弥补了微观算法在现有的硬件条件下难以实现的缺点。除此之外,格子Boltzmann方法还有容易编程实现、边界处理较为简单的特点,并且具有天然的并行性。单松弛(LBGK或SRT)模型和多松弛(MRT)模型是LBM目前最常用的模型。与单松弛模型相比,多松弛模型涉及矩阵运算,计算量也有所增加,但是它的收敛性更好。多松弛模型在参数选取方面也更有优势,具有更广泛的应用范围。本文介绍了格子Boltzmann方法的基本原理及其求解对流扩散方程的步骤。本文应用格子Boltzmann方法的单松弛模型与多松弛模型,首先对二维对流扩散问题进行数值求解,结果与有限差分法的计算结果吻合度良好;之后将格子Boltzmann方法用于求解三维的对流扩散问题,实验结果与解析相差很小。这两个实验的结果显示格子Boltzmann方法是可行的。其中,对于三维的对流扩散问题,单松弛模型与多松弛模型的串行实验结果对比显示,相同收敛条件下,MRT模型所需的迭代次数比LBGK模型少。在计算量比较大的情况下,为了进一步提高运算速度、节省计算时间,本文采用CUDA架构分别实现了LBGK-LBM与MRT-LBM的并行。GPU采用SIMT(单指令、多线程)指令模型,通过CUDA内核函数,设备端同时开启成百上千的线程,每个线程负责处理一个网格的数据,以便多个线程同时执行,这样就实现了LBM求解三维对流扩散问题在GPU上的并行。数值模拟实验结果显示相比CPU上的串行实验,在GPU上并行的运算速度有明显的提高,加速比也随着网格规模的增加而增大。对于同一三维问题,分别采用两种模型的并行实验结果对比后表明,采用多松弛模型得到的加速比要大于采用单松弛模型得到的加速比。