最近在网上刷到了这篇 arxiv 预印本,
Zhou J G. Single MRT-featured Lattice Boltzmann Method (SmrtLBM)[PP/OL]. arXiv(2024-09-02). http://arxiv.org/abs/2409.01076.
加上休息时间有空,就简单看了这篇文章并做了笔记。
基本原理
这篇文章以 D2Q9 离散速度模型为例,对其多松弛形式进行了简化。
多松弛模型 (MRT) 的简单介绍
定义:
- f=[f0(x,t),...,f8(x,t)]T 分布函数向量;
- f(pc)=[f0(pc)(x,t),...,f8(pc)(x,t)]T 碰撞后的分布函数向量;
- f(eq)=[f0(eq)(x,t),...,f8(eq)(x,t)]T 平衡态分布函数向量。
这里的平衡态用的仍旧是 LBGK 模型的形式
fi(eq)=wiρ[1+cs2ci⋅u+2cs4(ci⋅u)2−2cs2u2]
其中 ci 为离散速度方向, wi 为 ci 方向的权重系数, cs 为格子声速。 ρ 和 u 分别为流场密度和速度。
在 D2Q9 模型中,cs=1/3,
ci=⎩⎪⎪⎨⎪⎪⎧(0,0)(±1,0),(0,±1)c(±1,±1)ci=0i=1−4i=5−8
权重系数 w0=4/9 , w1−4=1/9 , w5−8=1/36 .
MRT 方程的碰撞步在D2Q9模型下的矩阵形式为:
f(pc)=[M−1][S][M](f−f(eq))(1)
松弛步则写作:
fi(x+ciδt,t+δt)=fi(pc)(x,t+δt)(2)
其中 δt 为时间步长, [S] 为松弛系数的对角矩阵。变换矩阵 [M] 为:
[M]=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡1−440000001−1−21−200101−1−2001−2−101−1−2−1200101−1−200−12−10121111101121−1−1110−1121−1−1−1−10112111−1−10−1⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
流场密度 ρ 和速度 u 分别为
ρ=i∑fi,ρu=i∑cifi
郭照立等[1]记松弛时间的对角矩阵为:
[S]=diag(0,se,sε,0,sq,0,sq,sν,sν)
则运动粘度 ν=cs2(sν1−21)δt ,以及体黏性系数 ζ=cs2(se1−21)δt 。
Zhou 的简化
Zhou[2]将矩阵 [S] 改写成
[S]=[S0]+[St]=diag(1/τs,1/τs,1/τs,1/τs,1/τs,1/τs,1/τs,1/τ,1/τ),(3)
其中:
[S0][St]=(τ1−τs1)diag(0,0,0,0,0,0,0,1,1),=τs1diag(1,1,1,1,1,1,1,1,1).
可见在这种构造形式下,τ=1/sν,与LBGK模型一致。
为了实现化简,Zhou[2]令 τs=1,并把式(3)代入式(1)中展开,整理得:
fi(pc)(x,t)=fi(eq)(x,t)+(−1)i(1−τ1)×k=1∑84(−1)k[1[1,2,3,4](i,k)+1[5,6,7,8](i,k)][fk(x,t)−fk(eq)(x,t)](4)
式(4)中的函数 1[a,b,c,d](i,k) 定义为
1[a,b,c,d](i,k)={1,0,if i in [a,b,c,d], and k in [a,b,c,d]otherwise
实例代码
这里顺手做了个双周期剪切流的简单算例(拿上次双松弛LBM的代码改的),设置如下。
- 计算域: [0,L]×[0,L],其中 L=2π。
- 雷诺数: Re=1/ν=1000。 其中 ν 为流体运动粘度 (Physical)。
- 初始速度场
{ux=uy=U0tanh(σ(41−∣Ly−21∣))U0δsin(2π(Lx+21))
- 压强场 p : 用伪谱法求解压力泊松方程。
- LBM松弛时间 τ: 0.515
- 网格大小: δx=L/N (N=200)。
- 时间步 δt : 用 LBM 中 τ 的关系反推。
- 初始速度场参数: U0=1, σ=30, δ=0.05
代码我放在了Github Gist上,计算结果如下图所示
Reference
[1] 郭照立,郑楚光. 格子Boltzmann方法的原理及应用[M]. 科学出版社,2009.
[2] Zhou J G. Single MRT-featured Lattice Boltzmann Method (SmrtLBM)[PP/OL]. arXiv(2024-09-02). http://arxiv.org/abs/2409.01076.