在CUDA上实现基于D3Q19模型的LBM流体模拟方法简介
--cyrosly与2009.05.14下午
LBM(Lattice Boltzmann Model)方法简介:
LBM是始与上世纪80年代末起源于70年代的LGA(格子气自动机)理论模型,并最终从90年代初开始趋于成熟(在适定的范围内)的一种流体计算的介观方法(处于微观与宏观之间),从本质上讲,它比N-S方程的描述更本质化。LBM是一种基于统计物理学方法,事实上我们这里所说的LBM是为了简化Bolztmann方程的求解而进行适当但确异常合理和有效的计算模型,因为在该模型中不存在非线性项因而不存在传统数值方法(如预处理共轭梯度发和多重网格法)的数值发散问题,也即内迭代收敛问题。所谓内迭代收敛是指在某个当前的时间步在有限步之后是否可以得到当前流场的正确解(例如当我们在某个时间点上运行N次PCG解算器,这N次迭代并非是按时间方向向前推进,而是一个数学上的N次计算步骤)。虽然如此,LBM和传统方法一样也存在所谓的外迭代收敛问题;外迭代是指流场在整个时空尺度上是否可以在有限步之后收敛与平衡状态,也就是说在时间方向上流场收敛与稳态的快慢。此外LBM目前基本只适用于低March数不可压缩(或允许存在小尺度可压缩性)的情况,对于可压缩流体模型还未成熟,不过已经有很多这方面的研究发表。与传统数值方法相比LBM的另一个优点是对复杂边界的适应性,但对于自由表面LBM目前仍然没有完美的解决方法,一般和传统方法一样采用level set。
LBM计算模型:
目前常用的规则网格模型有D2Q9,D3Q13,D3Q15,D3Q19(还有D1Q3,D2Q5,D3Q27),
当然还有各种非规则以及类似于传统网格划分的自适应格子布局。有兴趣的可以参考下郭照立郑楚光合编的《格子Bolztmann方法的原理及应用》。
LB Model D2Q9 LB Model D3Q19
上面分别是D2Q9和