

清华大学 摩擦学国家重点实验室, 北京 100084
收稿日期:2019-01-10
基金项目:国家自然科学基金项目(51735006)
作者简介:何强(1991-), 男, 博士研究生
通信作者:黄伟峰, 副研究员, E-mail:huangwf@tsinghua.edu.cn
摘要:针对大规模三维颗粒两相流全尺度模拟并行计算问题,该文采用MPI+OpenMP混合编程模式,其中机群节点采用MPI并行计算,节点内部采用OpenMP进行细粒化的并行计算,并根据格子Boltzmann方法(LBM)颗粒两相流的特点进行OpenMP程序并行优化设计,提出了一种适用于大量颗粒的三维颗粒两相流LBM并行计算模型。以颗粒沉积问题为例,在集群计算机平台对并行算法的加速性能进行测试。计算结果表明:该算法具有良好的加速比及扩展性,并且其计算量具有颗粒数量不敏感的优点,适用于大规模多颗粒两相流问题的研究。
关键词:格子Boltzmann方法(LBM)MPI+OpenMP颗粒两相流
Parallel simulations of large-scale particle-fluid two-phase flows with the lattice Boltzmann method based on an MPI+OpenMP mixed programming model
HE Qiang, LI Yongjian, HUANG Weifeng


State Key Laboratory of Tribology, Tsinghua University, Beijing 100084, China
Abstract: This paper presents lattice Boltzmann method (LBM) analyses of three-dimensional, particle-fluid two-phase flows based on the MPI+OpenMP mixed programming model where the cluster nodes used the MPI parallelism with further fine-grained nodes using the OpenMP parallel calculation. The algorithm is optimized according to the characteristics of particle-fluid flows. The algorithm was then used to analyze a particle deposition problem to test the acceleration capabilities of the parallel algorithm. The results show that the algorithm has good speedup and scalability and that its computational complexity is insensitive to the number of particles, which is good for large-scale two-phase flow analyses.
Key words: lattice Boltzmann method (LBM)MPI+OpenMPparticle-fluid two-phase flow
颗粒两相流广泛存在于自然界、工程应用及生命科学等领域中[1-2]。颗粒与流体耦合作用的内在机理是颗粒两相流体力学的核心问题。格子Boltzmann方法(lattice Boltzmann method,LBM)是近30年来迅速发展起来的一种流体系统建模和仿真方法[3]。在LBM中,流体被视为由大量的离散粒子组成,这些离散粒子在规则的网格上进行简单的碰撞和迁移。由于其粒子方法的背景,LBM可以非常方便和直观地处理流体内部及流体和固体的相互作用,因而在颗粒两相流[4-5]、多孔介质流[6-7]等方面得到广泛应用,与传统方法相比具有突出优势。
Ladd于1994年首先基于动量交换法提出求解全尺度流固两相流的格子Boltzmann方法[8-9]。在Ladd的方法中,固体颗粒的边界采用格线的中点来表示,由于颗粒内部充满虚拟流体,因此颗粒可以被视为具有质量的壳体,颗粒的受力则通过流体粒子碰撞前后的动量变化进行计算。Aidun等首先提出了不使用颗粒内部虚拟流体的方法[10],该方法完全消除了Ladd方法中流固密度比的限制,但颗粒运动过程中,一些新的流体和固体节点不断产生和消失,因此局部质量和动量守恒难以得到保证。Qi[11]基于Ladd的壳模型,在计算流固相互作用时仅考虑颗粒外部流体的影响,得到了满足局部质量守恒的方法。后续的研究对Ladd的模型不断进行改进,使得模型更好地满足Galileo不变性[12-13],并且引入曲面边界的处理方法[5, 14-17],从而提升了边界反弹格式的精度,使LBM在颗粒多相流问题的研究上得到了广泛应用[18-19]。以上的研究大多基于单个或少量几个颗粒,而实际颗粒两相流中,颗粒的数量巨大,全解析模拟的计算量巨大,因而对实际的颗粒-流体系统进行全解析的数值模拟非常困难。随着计算机并行计算技术的发展,构建颗粒两相流仿真平台是目前并行计算领域的重要热点研究课题之一,通过高性能计算的相关技术提升颗粒两相流计算效率具有重大意义。
实现并行计算的平台主要分为高性能集群计算机、GPU等。其中,基于集群计算机的并行算法主要有MPI和OpenMP两种。MPI是一种消息传递编程模式,其实现关键在于正确地进行消息传递,它的编程模式复杂,需要分析和合理地划分计算程序,此外还要考虑通信延迟和负载不平衡两大问题。在OpenMP平台上,并行线程的创建、同步、负载平衡和销毁工作都是自动完成,从而为编写多线程并行计算程序提供了一种简便方法。
由于LBM模拟主要分为碰撞与迁移两个过程,因此适合采用并行计算。诸多研究人员对LBM的并行性能进行了研究,设计了高扩展性、高效率的并行算法。Pan等[20]在不同并行计算平台上比较区域划分方法的性能,并利用D3Q15模型模拟了单相和多相流在多孔介质中的流动。Velivelli等[21]利用CPU缓存将计算区域分块循环计算,提高了计算效率。Schepke等[22]采用块划分策略对双松弛因子LBM模型进行并行性能分析,该方法将每个进程都分配到整个计算域中的一个子计算域,不同子计算域之间进行数据传递。2010年,Vidal等[23]提出一种负载均衡且具有良好并行效率的并行LBM,该方法在128个计算核上获得近40%的加速效率。Stratford等[24]基于MPI研究了颗粒两相流的并行计算的实现,并对高浓度的颗粒两相流问题进行仿真。Günther等[25]在Shan-Chen两相流模型的基础上,引入颗粒的作用,构建颗粒三相流模型,并利用MPI并行思路,对颗粒稳定性乳液的稳定问题开展研究。
已有的LBM并行计算多针对单相流体,对于颗粒多相流的研究并不多见。而且,已有的少量颗粒多相流并行计算的报道中,并没有对并行效率及并行优化设计进行详细讨论。本文以尽量提高并行加速比为目标,采用MPI+OpenMP混合编程模式,对颗粒两相流计算中的不同环节使用不同的并行策略,提出了一种能适用于大量颗粒的基于LBM并行计算的三维颗粒两相流算法,并在清华大学“探索100”百万亿次集群计算机上对并行算法的效率及扩展性进行运行测试。
1 LBM模型LBM是一种基于介观模拟尺度的计算流体动力学方法,其中多松弛因子(multiple relaxation time, MRT)碰撞子可以提高模型的数值稳定性[26-27]。多松弛因子格子Boltzmann(LB-MRT)方程定义为[28]
$\begin{array}{*{20}{c}}{{f_\alpha }\left( {\mathit{\boldsymbol{x}} + {\mathit{\boldsymbol{c}}_\alpha }{\delta _t}, t + {\delta _t}} \right) = {f_\alpha }(\mathit{\boldsymbol{x}}, t) - {{\left( {{\mathit{\boldsymbol{M}}^{ - 1}}\mathit{\boldsymbol{SM}}} \right)}_{\alpha \beta }} \cdot }\\{\left[ {{f_\beta }(\mathit{\boldsymbol{x}}, t) - f_\beta ^{{\rm{eq}}}(\mathit{\boldsymbol{x}}, t)} \right] + {\delta _t}{F_\alpha }.}\end{array}$ | (1) |
$\mathit{\boldsymbol{u}} = \sum\limits_i {{c_i}} {f_i}, \rho = \sum\limits_i {{f_i}} .$ | (2) |
${\mathit{\boldsymbol{c}}_i} = \left\{ {\begin{array}{*{20}{l}}{(0, 0, 0)c, }&{i = 0};\\{( \pm 1, 0, 0)c, (0, \pm 1, 0)c, (0, 0, \pm 1)c, }&{i = 1, \cdots 6};\\{( \pm 1, \pm 1, 0)c, ( \pm 1, 0, \pm 1)c, (0, \pm 1, \pm 1)c, }&{i = 7, \cdots 18}.\end{array}} \right.$ | (3) |
$f_i^{{\rm{eq}}} = {w_i}\rho \left( {1 + \frac{{{c_{i\alpha }}{u_\alpha }}}{{c_{\rm{s}}^{\rm{2}}}} + \frac{{{u_\alpha }{u_\beta }\left( {{c_{i\alpha }}{c_{i\beta }} - c_{\rm{s}}^2{\delta _{\alpha \beta }}} \right)}}{{2c_{\rm{s}}^4}}} \right).$ | (4) |
${w_i} = \left\{ {\begin{array}{*{20}{l}}{\frac{1}{3}, }&{i = 0};\\{\frac{1}{{18}}, }&{i = 1, 2, \cdots , 6};\\{\frac{1}{{36}}, }&{i = 7, 8, \cdots , 18}.\end{array}} \right.$ |
$\begin{array}{*{20}{c}}{{\mathit{\boldsymbol{F}}_p} = \sum\limits_b {\sum\limits_i {\left[ {\left( {{c_{\bar i}} - {\mathit{\boldsymbol{u}}_w}} \right){f_{\bar i}}\left( {{x_{\rm{f}}}, t + {\rm{ \mathsf{ δ} }}t} \right) - } \right.} } }\\{\left. {\quad \quad \quad \quad \left( {{c_i} - {\mathit{\boldsymbol{u}}_{\rm{w}}}} \right){f_i}\left( {{x_{\rm{f}}}, t} \right)} \right], }\\{{\mathit{\boldsymbol{T}}_p} = \sum\limits_h {\sum\limits_i {\left[ {\left( {{c_{\bar i}} - {\mathit{\boldsymbol{u}}_{\rm{w}}}} \right) \cdot } \right.} } }\end{array}$ | (5) |
$\left. {{f_{\bar i}}\left( {{x_{\rm{f}}}, t + {\rm{ \mathsf{ δ} }}t} \right) - \left( {{c_i} - {\mathit{\boldsymbol{u}}_{\rm{w}}}} \right){f_i}\left( {{x_{\rm{f}}}, t} \right)} \right] \times \left( {{\mathit{\boldsymbol{x}}_{\rm{w}}} - {\mathit{\boldsymbol{x}}_{\rm{s}}}} \right).$ | (6) |
${M_{\rm{p}}}\frac{{{\rm{d}}{\mathit{\boldsymbol{u}}_{\rm{p}}}}}{{{\rm{d}}t}} = {\mathit{\boldsymbol{F}}_{\rm{p}}} - {M_{\rm{p}}}\left( {1 - \frac{{{\rho _{\rm{i}}}}}{{{\rho _{\rm{p}}}}}} \right)\mathit{\boldsymbol{g}}, {I_{\rm{p}}}\frac{{{\rm{d}}{\mathit{\pmb{Φ}}_{\rm{p}}}}}{{{\rm{d}}t}} = {\mathit{\boldsymbol{T}}_{\rm{p}}}.$ | (7) |
在基于网格的流固两相流直接模拟中,颗粒之间碰撞是一个需要处理的问题,本文采用Nguyen和Ladd的润滑力模型[29]。当颗粒移动时,颗粒内部的固体节点转变为流体节点,新流体节点的分布函数的重建采用平均外推的方法[30]。
2 并行算法设计本文使用MPI+OpenMP混合编程模式,MPI负责分布式节点之间的通信,OpenMP实现在单个节点内细粒化的并行计算。具体实现如下:对整个计算区域进行合理划分,将每个子区域分配给单独的计算节点,建立单个MPI进程进行计算,在单个MPI进程中调用OpenMP,充分利用节点中的计算核,实现线程级别的并行计算,从而提高计算效率。以清华大学“探索100”百万亿次集群计算机为例,其单个节点配置2个CPU(Intel Xeon X5670,6核处理器),设计的混合模式如图 1所示。
![]() |
图 1 MPI+OpenMP混合编程模式 |
图选项 |
MPI并行算法是基于进程间消息传递的算法,消息传递是MPI并行算法实现的关键。根据计算区域的特点以及计算节点的数量,对整个计算区域进行合理划分,形成不同的子区域,并在其边界处虚拟一层网格节点,用于存储相邻子区域边界节点的信息,进而构成完整的计算区域。相邻区域间流体节点信息的传递如图 2所示。对于颗粒的计算,由于颗粒之间存在相互作用,本模型借鉴了分子动力学模拟中的求解思路[24, 31],将单个子区域再次划分为更小的子域(以下称为颗粒子域),通过颗粒子域大小的合理选择使得颗粒只会与相邻颗粒子域及自身所在子域内的颗粒发生相互作用,从而将求解颗粒相互作用的计算规模从O(N2)降低到O(N),N为颗粒的数量。同时,在子区域边沿构建一层虚拟的颗粒子域,用于存储相邻颗粒子域中的颗粒信息(速度、位置、半径等)。
![]() |
图 2 计算区域划分及信息通信 |
图选项 |
本模型在MPI进程中利用OpenMP进行线程级别的并行计算。已有的LBM并行计算大多针对单相流体,本文根据颗粒两相流问题的特点,对程序的不同环节采用其适用的OpenMP并行策略,实现并行效率的进一步优化。具体算法如下:1)将所有的存在流-固耦合作用的节点单独取出建立链表,在分析流-固耦合作用时使用OpenMP进行多线程计算;2)将计算子域中的所有颗粒形成链表,在求解颗粒速度等操作时使用OpenMP并行计算;3)流体节点重建与销毁等操作需要遍历所有的颗粒子域,采用OpenMP并行加快遍历速度。
综上所述,本模型将颗粒计算的大部分环节进行了OpenMP并行设计,整个颗粒两相流并行计算的程序框架如图 3所示。其中,形成颗粒链表结构需要根据颗粒位置进行顺序链接,此外颗粒之间相互作用存在前后两个颗粒相互作用关系,这两部分很难借助并行计算加速,并且其计算量不大,因此未采用OpenMP并行加速。
![]() |
图 3 程序计算框图 |
图选项 |
3 计算结果与讨论为验证模型计算的准确性,以单个颗粒沉降为例进行计算,并与文[32]中实验结果进行对比。如图 4所示,计算区域为10 cm×10 cm×6 cm,颗粒直径为Dp=3.0 cm,颗粒密度ρp=1.12 g/cm3,颗粒初始位于(5 cm, 5 cm, 12.75 cm)。选择4组不同流体密度ρf(g/cm3)和黏度μ[g/(cm·s)]的颗粒进行计算。
![]() |
图 4 三维颗粒沉降示意图 |
图选项 |
Case 1: 0.97 g/cm3, 3.73 g/(cm·s);
Case 2: 0.965 g/cm3, 2.12 g/(cm·s);
Case 3: 0.962 g/cm3, 1.13 g/(cm·s);
Case 4: 0.96 g/cm3, 0.58 g/(cm·s)。
在LBM中选择尺寸为200×200×320的计算网格,松弛因子τ=0.6,并采用固壁边界。如图 5所示,仿真计算结果与实验结果[32]基本吻合。
![]() |
图 5 仿真计算与实验结果[32]对比 |
图选项 |
本文进一步以多颗粒沉降问题为例测试所提出的并行算法。选择尺寸为1.5 cm×1.5 cm×3.0 cm的微通道,颗粒直径Dp=0.12 cm,颗粒密度ρp=1.15 g/cm3,流体参数同上。LBM网格选择为150×150×300,XYZ方向均采用周期性边界,对颗粒数量N分别为125、432、1 024的3种算例进行计算。对于N=432和N=1 024,由于颗粒较多,颗粒初始位置设为线性阵列排布以避免初始化时产生颗粒干涉。以上3个算例分别采用串行以及处理器核数p分别为12、48、96、144、216进行计算。由于单个节点具有12个处理器,对计算域按照XYZ分别进行1×1×1、1×2×2、2×2×2、2×2×3、2×3×3的均匀划分,然后对每个子区域单独分配一个节点。计算1 000个子步。图 6为计算过程中某一时刻的颗粒分布及流场流线图。
![]() |
图 6 (网络版彩图)颗粒分布及流场流线示例 |
图选项 |
本文采用加速比和加速效率来度量模型的并行性能。加速比为同一个任务在单处理器串行运行和多处理器并行运行时执行时间的比率,用来衡量并行系统或程序并行化的性能和效果,其定义为Sp=T1/Tp;派生出的加速效率的定义为Ep=Sp/p。其中:T1为程序单核串行的执行时间,Tp为当有p个处理器时的执行时间。如图 7a所示,并行算法的采用大幅缩短了计算时间,并且可以发现对于不同颗粒浓度的算例,其计算求解时间相差不大。程序并行加速比如图 7b所示,当颗粒达到一定数量之后,颗粒数量对并行效率的影响降低。从图 7c可以看出,对于不同颗粒浓度的情形,加速效率均在0.5之上,说明本文并行算法的加速效果较好。
![]() |
图 7 并行性能 |
图选项 |
同时,由图 7可得,随着处理器核数的增加,程序的加速效率逐渐降低,这是由于计算区域被划分为更多的子区域,相应地产生更多虚拟流体节点和虚拟颗粒子域,从而造成信息通信开销的剧增。以p=216为例,其计算域划分为2×3×3个子区域,虚拟颗粒子域体积即为原来计算域体积的1.23倍。由图 8可知,程序执行时的信息通信时间占比随着核数的增加而增加。此外,程序中部分环节是串行计算,这部分的计算开销不会随着核数的增加而降低。综上原因使得程序的加速效率随着核数的增加而减少,但是图 7c中加速效率与核数之间的关系是随着求解问题的规模而变化的,当对更大规模的问题进行计算时,其加速效率会整体提高,因此需要根据问题规模选择合适的核数。
![]() |
图 8 程序主要计算环节的时间占比 |
图选项 |
如图 9所示,程序单次迭代的执行时间与颗粒数量呈小斜率的线性关系。当核数较大时,其斜率几乎为零,表明在增加颗粒数量的同时,其计算量的增加很小甚至可以忽略,证明本文模型与传统的颗粒两相流计算模型相比,具备颗粒数量不敏感的优点,本模型可以对数万级别的颗粒两相流问题进行求解。
![]() |
图 9 颗粒数量对计算效率的影响 |
图选项 |
4 结论本文针对大规模颗粒两相流问题,基于LBM采用MPI+OpenMP混合编程模式,综合利用MPI和OpenMP的优点,机群节点采用MPI并行计算,节点内部采用OpenMP进行细粒化的并行计算,并对程序的不同环节采用其适用的OpenMP并行策略,实现并行效率的进一步优化,最终建立起大规模三维颗粒两相流并行计算模型。经测试,该并行计算模型具有良好的加速比及扩展性,适用于集群计算机和普通多核单机。此外,本模型的计算量具有颗粒数量不敏感的优点,随着颗粒数量的增加,其计算开销只有轻微的增加,因此适用于大规模多颗粒两相流问题的研究。
参考文献
[1] | LI Q, LUO K H, KANG Q J, et al. Lattice Boltzmann methods for multiphase flow and phase-change heat transfer[J]. Progress in Energy and Combustion Science, 2016, 52: 62-105. DOI:10.1016/j.pecs.2015.10.001 |
[2] | HARTING J, FRIJTERS S, RAMAIOLI M, et al. Recent advances in the simulation of particle-laden flows[J]. European Physical Journal Special Topics, 2014, 223(11): 2253-2267. DOI:10.1140/epjst/e2014-02262-3 |
[3] | CHEN S Y, DOOLEN G D. Lattice Boltzmann method for fluid flows[J]. Annual Review of Fluid Mechanics, 1998, 30(1): 329-364. DOI:10.1146/annurev.fluid.30.1.329 |
[4] | LI H B, LU X Y, FANG H P, et al. Force evaluations in lattice Boltzmann simulations with moving boundaries in two dimensions[J]. Physical Review E, 2004, 70(2): 026701. DOI:10.1103/PhysRevE.70.026701 |
[5] | GUO Z L, ZHENG C G, SHI B C. An extrapolation method for boundary conditions in lattice Boltzmann method[J]. Physics of Fluids, 2002, 14(6): 2007-2010. DOI:10.1063/1.1471914 |
[6] | KOCH D L, HILL R J. Inertial effects in suspension and porous-media flows[J]. Annual Review of Fluid Mechanics, 2001, 33: 619-647. DOI:10.1146/annurev.fluid.33.1.619 |
[7] | ZHANG X R, JIN L C, NIU X D, et al. Lattice Boltzmann simulation for magnetic fluids in porous medium[C]//12th International Conference on Magnetic Fluids. Amsterdam, Netherlands: Elsevier, 2010, 9: 162-166. |
[8] | LADD A J C. Numerical simulations of particulate suspensions via a discretized Boltzmann equation. Part 2. Numerical results[J]. Journal of Fluid Mechanics, 1994, 271: 311-339. DOI:10.1017/S0022112094001783 |
[9] | LADD A J C. Numerical simulations of particulate suspensions via a discretized Boltzmann equation. Part 1. Theoretical foundation[J]. Journal of Fluid Mechanics, 1994, 271: 285-309. DOI:10.1017/S0022112094001771 |
[10] | AIDUN C K, LU Y N, DING E J. Direct analysis of particulate suspensions with inertia using the discrete Boltzmann equation[J]. Journal of Fluid Mechanics, 1998, 373: 287-311. DOI:10.1017/S0022112098002493 |
[11] | QI D W. Lattice-Boltzmann simulations of particles in non-zero-Reynolds-number flows[J]. Journal of Fluid Mechanics, 1999, 385: 41-62. DOI:10.1017/S0022112099004401 |
[12] | CHEN Y, CAI Q D, XIA Z H, et al. Momentum-exchange method in lattice Boltzmann simulations of particle-fluid interactions[J]. Physical Review E, 2013, 88: 013303. DOI:10.1103/PhysRevE.88.013303 |
[13] | LORENZ E, CAIAZZO A, HOEKSTRA A G. Corrected momentum exchange method for lattice Boltzmann simulations of suspension flow[J]. Physical Review E, 2009, 79(3): 036705. DOI:10.1103/PhysRevE.79.036705 |
[14] | MEI R W, LUO L S, SHYY W. An accurate curved boundary treatment in the lattice Boltzmann method[J]. Journal of Computational Physics, 1999, 155(2): 307-330. |
[15] | FILIPPOVA O, H?NEL D. Grid refinement for lattice-BGK models[J]. Journal of Computational Physics, 1998, 147(2): 219-228. |
[16] | YU D Z, MEI R W, SHYY W. A unified boundary treatment in lattice Boltzmann method[C]//41st Aerospace Sciences Meeting and Exhibit. Reno, USA: AIAA, 2003. |
[17] | BOUZIDI M, FIRDAOUSS M, LALLEMAND P. Momentum transfer of a Boltzmann-lattice fluid with boundaries[J]. Physics of Fluids, 2001, 13(11): 3452-3459. DOI:10.1063/1.1399290 |
[18] | HU J J, TAO S, GUO Z L. An efficient unified iterative scheme for moving boundaries in lattice Boltzmann method[J]. Computers & Fluids, 2017, 144: 34-43. |
[19] | TAO S, HU J J, GUO Z L. An investigation on momentum exchange methods and refilling algorithms for lattice Boltzmann simulation of particulate flows[J]. Computers & Fluids, 2016, 133: 1-14. |
[20] | PAN C X, PRINS J F, MILLER C T. A high-performance lattice Boltzmann implementation to model flow in porous media[J]. Computer Physics Communications, 2004, 158(2): 89-105. DOI:10.1016/j.cpc.2003.12.003 |
[21] | VELIVELLI A C, BRYDEN K M. A cache-efficient implementation of the lattice Boltzmann method for the two-dimensional diffusion equation[J]. Concurrency and Computation:Practice and Experience, 2004, 16(14): 1415-1432. DOI:10.1002/cpe.868 |
[22] | SCHEPKE C, MAILLARD N, NAVAUX P O A. Parallel lattice Boltzmann method with blocked partitioning[J]. International Journal of Parallel Programming, 2009, 37(6): 593-611. DOI:10.1007/s10766-009-0113-x |
[23] | VIDAL D, ROY R, BERTRAND F. A parallel workload balanced and memory efficient lattice-Boltzmann algorithm with single unit BGK relaxation time for laminar Newtonian flows[J]. Computers & Fluids, 2010, 39(8): 1411-1423. |
[24] | STRATFORD K, PAGONABARRAGA I. Parallel simulation of particle suspensions with the lattice Boltzmann method[J]. Computers & Mathematics with Applications, 2008, 55(7): 1585-1593. |
[25] | GüNTHER F, JANOSCHEK F, FRIJTERS S, et al. Lattice Boltzmann simulations of anisotropic particles at liquid interfaces[J]. Computers & Fluids, 2013, 80: 184-189. |
[26] | LALLEMAND P, LUO L S. Theory of the lattice Boltzmann method:Dispersion, dissipation, isotropy, Galilean invariance, and stability[J]. Physical Review E, 2000, 61(6): 6546-6562. DOI:10.1103/PhysRevE.61.6546 |
[27] | D'HUMIERES D, GINZBURG I, KRAFCZYK M, et al. Multiple-relaxation-time lattice Boltzmann models in 3D[R]. Washington DC, USA: NASA, 2002. |
[28] | KRüGER T, KUSUMAATMAJA H, KUZMIN H, et al. The lattice Boltzmann method:Principles and practice[M]. Cham, Switzerland: Springer, 2017. |
[29] | NGUYEN N Q, LADD A J C. Lubrication corrections for lattice-Boltzmann simulations of particle suspensions[J]. Physical Review E, 2002, 66(4): 046708. DOI:10.1103/PhysRevE.66.046708 |
[30] | PENG C, TENG Y H, HWANG B, et al. Implementation issues and benchmarking of lattice Boltzmann method for moving rigid particle simulations in a viscous flow[J]. Computers & Mathematics with Applications, 2016, 72(2): 349-374. |
[31] | ALLEN M P, TILDESLEY D J. Computer simulation of liquids[M]. Oxford, UK: Oxford University Press, 1987. |
[32] | TEN CATE A, NIEUWSTAD C H, DERKSEN J J, et al. Particle imaging velocimetry experiments and lattice-Boltzmann simulations on a single sphere settling under gravity[J]. Physics of Fluids, 2002, 14(11): 4012-4025. DOI:10.1063/1.1512918 |