【笔记】双松弛时间格子 Boltzmann 方法

双松弛时间(Two-relaxation-time)格子 Boltzmann 方法是多松弛时间(Multi-Relaxation-Time)LBM 的一种特殊形式。它仅具有两个松弛时间,分为对称和非对称两部分,同时保持了与 LBGK 模型一致的简单算法和计算效率。

基本方程

对于 tt 时刻的点 x\boldsymbol{x} 沿 ci\boldsymbol{c}_i 方向的分布函数 fi(x,t)f_i(\boldsymbol{x}, t),其在 Δt\Delta t 时间步长内的演化为:

fi(x+ciΔt,t+Δt)fi(x,t)=1τ+[fi+fi(eq)+]1τ[fifi(eq)]+FiΔt(1)\begin{aligned} f_i(\boldsymbol{x}+\boldsymbol{c}_i \Delta t, t + \Delta t) - f_i(\boldsymbol{x}, t) &= -\frac{1}{\tau^{+}} \left[ f_i^{+} - f_i^{(\mathrm{eq})+} \right] \\ &\quad -\frac{1}{\tau^{-}} \left[ f_i^{-} - f_i^{(\mathrm{eq})-} \right] \\ &\quad + \mathbb{F}_i \Delta t \end{aligned} \tag{1}

其中:

  • τ+\tau^{+}τ\tau^{-} 分别为两部分的松弛时间(均为正数),其数值由流体运动粘度 ν\nu 和参数 Λ=(τ+12)(τ12)\Lambda = (\tau^{+} - \frac{1}{2}) (\tau^{-} - \frac{1}{2}) 共同决定。d’Humières 等[1]提出 Λ\Lambda 控制了 TRT 方程的稳态场。并且得出 Λ=1/4\Lambda=1/4 可使 TRT 的运算保持稳定。

τ+=νcs2+12,τ=2Λ2τ+1+12\tau^{+} = \frac{\nu}{c_s^2} + \frac{1}{2} ,\quad \tau^{-} = \frac{2 \Lambda}{2 \tau^{+} - 1} + \frac{1}{2}

  • fi(x,t)f_{-i}(\boldsymbol{x}, t)fi(eq)(x,t)f_{-i}^{(\mathrm{eq})}(\boldsymbol{x}, t)ci=ci\boldsymbol{c}_{-i}=-\boldsymbol{c}_{i} 方向的分布函数和平衡态分布。

  • fi+f_i^{+}fif_i^{-} 分别为分布函数的对称部分和非对称部分,即

fi+=12(fi(x,t)+fi(x,t)),fi=12(fi(x,t)fi(x,t))f_i^{+} = \frac{1}{2}\left( f_i(\boldsymbol{x}, t) + f_{-i}(\boldsymbol{x}, t) \right) ,\quad f_i^{-} = \frac{1}{2}\left( f_i(\boldsymbol{x}, t) - f_{-i}(\boldsymbol{x}, t) \right)

  • 同理, fi(eq)+f_i^{(\mathrm{eq})+}fi(eq)f_i^{(\mathrm{eq})-} 分别为平衡态分布 fi(eq)f_i^{(\mathrm{eq})} 的对称部分和非对称部分,即

fieq=wiρ[1+ciucs2+(ciu)22cs4u22cs2],fi(eq)+=12(fi(eq)(x,t)+fi(eq)(x,t))=wiρ[1+(ciu)22cs4u22cs2],fi(eq)=12(fi(eq)(x,t)fi(eq)(x,t))=wiρciucs2\begin{aligned} f^{\mathrm{eq}}_i &= w_i \rho \left[ 1 + \frac{\boldsymbol{c}_i \cdot \boldsymbol{u}}{c_s^2} + \frac{(\boldsymbol{c}_i \cdot \boldsymbol{u})^2}{2 c_s^4} - \frac{u^2}{2 c_s^2} \right] ,\\ f_i^{(\mathrm{eq})+} &= \frac{1}{2}\left( f_i^{(\mathrm{eq})}(\boldsymbol{x}, t) + f_{-i}^{(\mathrm{eq})}(\boldsymbol{x}, t) \right) =w_i \rho \left[ 1 + \frac{(\boldsymbol{c}_i \cdot \boldsymbol{u})^2}{2 c_s^4} - \frac{u^2}{2 c_s^2} \right] ,\\ f_i^{(\mathrm{eq})-} &= \frac{1}{2}\left( f_i^{(\mathrm{eq})}(\boldsymbol{x}, t) - f_{-i}^{(\mathrm{eq})}(\boldsymbol{x}, t) \right) = w_i \rho \frac{\boldsymbol{c}_i \cdot \boldsymbol{u}}{c_s^2} \end{aligned}

  • wiw_ici\boldsymbol{c}_{i} 方向的权重, ρ\rhou\boldsymbol{u} 为宏观密度和速度, csc_s 为DnQb模型的格子声速。

  • Fi\mathbb{F}_i 为源项 F\boldsymbol{F}ii 方向上的函数。

TRT 的外力项

下面记 ti=wi/cs2t_i = {w_i} / {c_s^2},以及 Fi+=12(Fi+Fi)F_{i}^{+} = \frac{1}{2} (\mathbb{F}_i + \mathbb{F}_{-i})Fi=12(FiFi)F_{i}^{-} = \frac{1}{2} (\mathbb{F}_i - \mathbb{F}_{-i})

Postma 等[2]的研究对几种主流的源项模型进行了研究。不过他原文里列出的源项方程我还有些看不懂,我就照着Bawazeer等的文章抄了两个简单的源项:

(1)Buick and Greated [3]:

Fi=(112τ)tqciF\mathbb{F}_i = \left(1 - \frac{1}{2 \tau} \right) t_q \boldsymbol{c}_{i} \cdot \boldsymbol{F}

转写为正负两项后表示为:

Fi+=0,Fi=(112τ)ticiFF_{i}^{+} = 0, \quad F_{i}^{-} = \left(1 - \frac{1}{2 \tau^{-}} \right) t_i \boldsymbol{c}_{i} \cdot \boldsymbol{F}

(2)Guo et al. [4]:

Fi=(112τ)wi[ciucs2+(ciu)cics4]F\mathbb{F}_{i} = \left(1 - \frac{1}{2 \tau} \right) w_i \cdot \left[\frac{\boldsymbol{c}_i - \boldsymbol{u}}{c_s^2} + \frac{(\boldsymbol{c}_i \cdot \boldsymbol{u}) \boldsymbol{c}_i}{c_s^4}\right] \cdot \boldsymbol{F}

转写为正负两项后表示为:

Fi+=(112τ+)ti[u+(ciu)cics2]FFi=(112τ)ticiF\begin{aligned} F_i^{+} =& \left(1 - \frac{1}{2 \tau^{+}} \right) t_i \cdot \left[-\boldsymbol{u} + \frac{(\boldsymbol{c}_i \cdot \boldsymbol{u}) \boldsymbol{c}_i}{c_s^2}\right] \cdot \boldsymbol{F} \\ F_i^{-} =& \left(1 - \frac{1}{2 \tau^{-}} \right) t_i \boldsymbol{c}_i \cdot \boldsymbol{F} \\ \end{aligned}

宏观密度 ρ\rho 和动量 j\boldsymbol{j} 的计算均表示为:

ρ=i=0b1fi,j=ρu=i=0b1fici+F2\rho = \sum\limits_{i=0}^{b-1} f_i ,\quad \boldsymbol{j} = \rho \boldsymbol{u} = \sum\limits_{i=0}^{b-1} f_i \boldsymbol{c}_{i} + \frac{\boldsymbol{F}}{2}

单步TRT-LBM的计算流程

(1) 计算 fi+f_i^{+}fif_i^{-} 以及 fi(eq)+f_i^{(\mathrm{eq})+}fi(eq)f_i^{(\mathrm{eq})-}

(2) 计算碰撞步

fi(pc)(x,t)=fi(x,t)1τ+[fi+fi(eq)+]1τ[fifi(eq)]+FiΔt(2)f_i^{(\mathrm{pc})}(\boldsymbol{x}, t) = f_i(\boldsymbol{x}, t) -\frac{1}{\tau^{+}} \left[ f_i^{+} - f_i^{(\mathrm{eq})+} \right] -\frac{1}{\tau^{-}} \left[ f_i^{-} - f_i^{(\mathrm{eq})-} \right] + \mathbb{F}_i \Delta t \tag{2}

(3) 计算流动步(与常规LBM一致)

(4) 更新宏观量。

TRT-LBM 与其他 LBM 的联系

TRT 与单松弛 LBGK

将式(1)整理,可得式(3):

fi(x+ciΔt,t+Δt)fi(x,t)=(12τ++12τ)[fi(x,t)fi(eq)](12τ+12τ)[fi(x,t)fi(eq)]+FiΔt(3)\begin{aligned} f_i(\boldsymbol{x}+\boldsymbol{c}_i \Delta t, t + \Delta t) - f_i(\boldsymbol{x}, t) &= - \left(\frac{1}{2 \tau^{+}} + \frac{1}{2 \tau^{-}}\right) [f_i(\boldsymbol{x}, t) - f^{(\mathrm{eq})}_i] \\ &\quad -\left(\frac{1}{2 \tau^{+}} - \frac{1}{2 \tau^{-}}\right) [f_{-i}(\boldsymbol{x}, t) - f^{(\mathrm{eq})}_{-i}] \\ &\quad + \mathbb{F}_i \Delta t \end{aligned} \tag{3}

所以,当 τ+=τ\tau^{+} = \tau^{-} 时,TRT 方程可以退化为单松弛 LBGK 方程。此时: Λ=ν2cs4\Lambda = \frac{\nu^2}{c_s^4}τ+\tau^{+} 也回归到单松弛 LBGK 方程的定义。

TRT 与 MRT

下文为方便起见,记 w1=(1τ++1τ)/2\mathtt{w}_1 = (\frac{1}{\tau^{+}} + \frac{1}{\tau^{-}})/2w2=(1τ+1τ)/2\mathtt{w}_2 = (\frac{1}{\tau^{+}} - \frac{1}{\tau^{-}})/2 ,并以D2Q9模型为例。

先定义:

  • f=[f0(x,t),...,f8(x,t)]T\boldsymbol{f} = [f_0(\boldsymbol{x}, t), ..., f_8(\boldsymbol{x}, t)]^\mathrm{T} 分布函数向量;
  • f(pc)=[f0(pc)(x,t),...,f8(pc)(x,t)]T\boldsymbol{f}^{(\mathrm{pc})} = [f_0^{(\mathrm{pc})}(\boldsymbol{x}, t), ..., f_8^{(\mathrm{pc})}(\boldsymbol{x}, t)]^\mathrm{T} 碰撞后的分布函数向量;
  • f(eq)=[f0(eq)(x,t),...,f8(eq)(x,t)]T\boldsymbol{f}^{(\mathrm{eq})} = [f_0^{(\mathrm{eq})}(\boldsymbol{x}, t), ..., f_8^{(\mathrm{eq})}(\boldsymbol{x}, t)]^\mathrm{T} 平衡态分布函数向量。

则 TRT 方程的碰撞步在D2Q9模型下的矩阵形式为:

f(pc)=[H](ff(eq))(4)\boldsymbol{f}^{(\mathrm{pc})} = [\bold{H}] (\boldsymbol{f} - \boldsymbol{f}^{(\mathrm{eq})}) \tag{4}

其中矩阵 [H][\bold{H}] 为:

[H]=[w1+w2w1w2w1w2w2w1w2w1w1w2w1w2w2w1w2w1][\bold{H}] = \begin{bmatrix} \mathtt{w}_1+\mathtt{w}_2 &&&&&&&\\ & \mathtt{w}_1 & & \mathtt{w}_2 &&&&&\\ && \mathtt{w}_1 & & \mathtt{w}_2 &&&&\\ & \mathtt{w}_2 & & \mathtt{w}_1 &&&&&\\ && \mathtt{w}_2 & & \mathtt{w}_1 &&&&\\ &&&&& \mathtt{w}_1 & & \mathtt{w}_2 &\\ &&&&&& \mathtt{w}_1 & & \mathtt{w}_2 \\ &&&&& \mathtt{w}_2 & & \mathtt{w}_1 &\\ &&&&&& \mathtt{w}_2 & & \mathtt{w}_1 \end{bmatrix}

对比 MRT 方程的碰撞步在D2Q9模型下的矩阵形式:

f(pc)=[M1][S][M](ff(eq))(5)\boldsymbol{f}^{(\mathrm{pc})} = [\bold{M}^{-1}][\bold{S}][\bold{M}] (\boldsymbol{f} - \boldsymbol{f}^{(\mathrm{eq})}) \tag{5}

其中 [S][\bold{S}] 为松弛系数的对角矩阵。变换矩阵 [M][\bold{M}] 为:

[M]=[111111111411112222422221111010101111020201111001011111002021111011110000000001111][\bold{M}] = \begin{bmatrix} 1&1&1&1&1&1&1&1&1\\ -4&-1&-1&-1&-1&2&2&2&2\\ 4&-2&-2&-2&-2&1&1&1&1\\ 0&1&0&-1&0&1&-1&-1&1\\ 0&-2&0&2&0&1&-1&-1&1\\ 0&0&1&0&-1&1&1&-1&-1\\ 0&0&-2&0&2&1&1&-1&-1\\ 0&1&-1&1&-1&0&0&0&0\\ 0&0&0&0&0&1&-1&1&-1 \end{bmatrix}

求解方程 [H]=[M1][S][M][\bold{H}] = [\bold{M}^{-1}][\bold{S}][\bold{M}],可得:

[S]=[M][H][M1]=diag(w1+w2,w1+w2,w1+w2,w1w2,w1w2,w1w2,w1w2,w1+w2,w1+w2)\begin{aligned} [\bold{S}] =& [\bold{M}][\bold{H}][\bold{M}^{-1}] \\ =&\mathrm{diag}( \mathtt{w}_1+\mathtt{w}_2, \mathtt{w}_1+\mathtt{w}_2, \mathtt{w}_1+\mathtt{w}_2,\\&\quad \mathtt{w}_1-\mathtt{w}_2, \mathtt{w}_1-\mathtt{w}_2, \mathtt{w}_1-\mathtt{w}_2,\\&\quad \mathtt{w}_1-\mathtt{w}_2, \mathtt{w}_1+\mathtt{w}_2, \mathtt{w}_1+\mathtt{w}_2 ) \end{aligned}

可见 TRT 模型就是 MRT 模型的特例,将 MRT 中所使用的诸多松弛系数减少至到 2 个(1τ+\frac{1}{\tau^{+}}1τ\frac{1}{\tau^{-}})。


  1. d’Humières, D., & Ginzburg, I. (2009). Viscosity independent numerical errors for Lattice Boltzmann models: From recurrence equations to “magic” collision numbers. Computers & Mathematics with Applications, 58(5), 823–840. https://doi.org/10.1016/j.camwa.2009.02.008 ↩︎

  2. Postma B, Silva G. Force methods for the two-relaxation-times lattice Boltzmann[J]. Physical Review E, 2020, 102(6): 063307. ↩︎

  3. Buick, J. M., Greated, C. A. Gravity in a lattice Boltzmann model[J]. Physical Review E, 2000, 61(5): 5307–5320. ↩︎

  4. Guo, Z., Zheng, C., & Shi, B. (2002). Discrete lattice effects on the forcing term in the lattice Boltzmann method. Phys. Rev. E, 65, 046308. ↩︎