这是自己的一份笔记,主要是和格子Boltzmann方法的DnQb离散速度模型相关的。还请读者确定自己已经知道常见的DnQb模型长什么样再来读这篇文章,这样会好理解一些。

Gauss-Hermite积分与DnQb模型

一般来说,密度分布函数的Maxwell-Boltzmann平衡态分布为:

feq=ρ(2πRT)D/2exp⁡[−(ξ−u)22RT],(1-1)f^{eq} = \frac{\rho}{ (2 \pi R T)^{D/2} } \exp \left[ - \frac{(\boldsymbol{\xi} - \boldsymbol{u})^2}{2 R T} \right], \tag{1-1}

其中 ξ\boldsymbol{\xi} 为分子速度;RR 为气体常数;DD为问题的维度数;ρ\rho 为流场密度;u\boldsymbol{u} 为流场速度。而 LBM 里常用的离散平衡态分布一般写作(沿着 cα\boldsymbol{c}_\alpha 方向,权重为 WαW_\alpha,cs2=RTc_s^2 = RT):

fαeq=ρWα×[1+ξα⋅ucs2+(ξα⋅u)22cs4−∣u∣22cs2].(1-2)f^{eq}_{\alpha} = \rho W_{\alpha} \times \left[ 1 + \frac{\boldsymbol{\xi}_{\alpha} \cdot \boldsymbol{u}}{c_s^2} + \frac{(\boldsymbol{\xi}_{\alpha} \cdot \boldsymbol{u})^2}{2 c_s^4} - \frac{|\boldsymbol{u}|^2}{2 c_s^2} \right]. \tag{1-2}

那么这两者是怎么联系起来的呢?参考文献 [1] 讲的就是这个事情。最近自己总算是略懂一点了,这里把笔记写下来,作为备忘录。

平衡态分布的展开

当马赫数远小于1时,我们可以对式(1)的平衡态做如下离散:

feq(ξ)=ρ(2πRT)D/2exp⁡(−∣ξ∣22RT)×[1+ξ⋅uRT+(ξ⋅u)22(RT)2−∣u∣22RT](1-3)\begin{aligned} f^{eq} (\boldsymbol{\xi}) &= \frac{\rho}{ (2 \pi R T)^{D/2} } \exp \left( - \frac{|\boldsymbol{\xi}|^2}{2 R T} \right)\\ & \quad \times \left[ 1 + \frac{\boldsymbol{\xi} \cdot \boldsymbol{u}}{R T} + \frac{(\boldsymbol{\xi} \cdot \boldsymbol{u})^2}{2 (R T)^2} - \frac{|\boldsymbol{u}|^2}{2 R T} \right] \end{aligned} \tag{1-3}

式(1-3)中,我们对 u\boldsymbol{u} 进行展开,并且只截断到2阶。而格子Boltzmann方法(LBM)要做的,便是把下面的这个积分

∫−∞+∞ψ(ξ)feq(ξ)dξ\int_{-\infty}^{+\infty} \psi(\boldsymbol{\xi}) f^{eq} (\boldsymbol{\xi}) \mathrm{d}\boldsymbol{\xi}

用离散的方式近似计算,其中 ψ(ξ)\psi(\boldsymbol{\xi}) 是关于 ξ\boldsymbol{\xi} 的多项式。下面我们将先以一维的情况为例,不去考虑多维的积分,简单讲讲数值离散的具体操作。

一维情形的离散 —— 以 D1Q3 为例

由于这一节只讨论一维问题,分子速度 ξ\xi 和宏观速度 uu 即是标量值(不需要向量形式的加粗),并且维度 D=1D=1。所以,式(3)写作

feq(ξ)=ρ(2πRT)1/2exp⁡(−ξ22RT)×[1+ξuRT+(ξu)22(RT)2−u22RT].(1-4)\begin{aligned} f^{eq} (\xi) &= \frac{\rho}{ (2 \pi R T)^{1/2} } \exp \left( - \frac{\xi^2}{2 R T} \right)\\ & \quad \times \left[ 1 + \frac{\xi u}{R T} + \frac{(\xi u)^2}{2 (R T)^2} - \frac{u^2}{2 R T} \right]. \end{aligned} \tag{1-4}

积分形式的抽象

式(1-4)的中括号内的四项可以用积分的加法拆成四个积分,并且每一项都可以看成如下形式:

Constant⋅∫−∞+∞exp⁡(−ξ22RT)ψ(ξ)dξ,\text{Constant} \cdot \int_{-\infty}^{+\infty} \exp \left( - \frac{\xi^2}{2 R T} \right) \psi(\xi) \mathrm{d}\xi,

其中 ψ(ξ)\psi(\xi) 为关于 ξ\xi 的多项式。那么,我们令 ψm(ξ)=ξm\psi_{m}(\xi) = \xi^{m} (mm 为自然数),将研究目标变为式(1-5)的通式,即:

ρ(2πRT)1/2⋅∫−∞+∞exp⁡(−ξ22RT)ψm(ξ)dξ.(1-5)\frac{\rho}{ (2 \pi R T)^{1/2} } \cdot \int_{-\infty}^{+\infty} \exp \left( - \frac{\xi^2}{2 R T} \right) \psi_{m}(\xi) \mathrm{d}\xi. \tag{1-5}

为简化这个积分的计算,这里需要引入变量代换

ζ=ξ/2RT,\zeta = \xi / \sqrt{2 R T},

则

dξ=2RTdζ.\mathrm{d}\xi = \sqrt{2 R T} \mathrm{d}\zeta.

代换后,有:

ρ(2πRT)1/2⋅∫−∞+∞exp⁡(−ζ2)ψm(2RTζ)2RTdζ=ρ(2πRT)1/2⋅(2RT)(m+1)/2⋅Im=ρπ⋅(2RT)m/2⋅Im\begin{aligned} & \frac{\rho}{ (2 \pi R T)^{1/2} } \cdot \int_{-\infty}^{+\infty} \exp \left( - \zeta^2 \right) \psi_{m}(\sqrt{2 R T} \zeta) \sqrt{2 R T} \mathrm{d}\boldsymbol{\zeta} \\=& \frac{\rho}{ (2 \pi R T)^{1/2} } \cdot (2 R T)^{(m+1)/2} \cdot I_m \\=& \frac{\rho}{\sqrt{\pi}} \cdot (2 R T)^{m/2} \cdot I_m \end{aligned}

其中 Im=∫−∞+∞exp⁡(−ζ2)ζmdζ\displaystyle I_m = \int_{-\infty}^{+\infty} \exp \left( - \zeta^2 \right) \zeta^m \mathrm{d}\boldsymbol{\zeta},且 mm 为自然数。

所以,下面的积分会被展开为

I=∫−∞+∞ψm(ξ)feq(ξ)dξ=ρπ[(1−u22RT)(2RT)m/2Im+uRT(2RT)(m+1)/2Im+1+u22(RT)2(2RT)(m+2)/2Im+2].(1-6)\begin{aligned} I=& \int_{-\infty}^{+\infty} \psi_m(\xi) f^{eq} (\xi) \mathrm{d}\xi \\=& \frac{\rho}{\sqrt{\pi}} \left[ \left(1 - \frac{u^2}{2 R T}\right) (2 R T)^{m/2} I_m + \frac{u}{RT} (2 R T)^{(m+1)/2} I_{m+1} \right. \\&\qquad \left. + \frac{u^2}{2(RT)^2} (2 R T)^{(m+2)/2} I_{m+2} \right]. \end{aligned} \tag{1-6}

数值积分的构造

假设我们想用一个三点格式的Gauss-Hermite数值积分进行近似,则:

∫−∞+∞exp⁡(−ζ2)ϕ(ζ)dζ=∑i∈[−1,0,1]wiϕ(ζi).\int_{-\infty}^{+\infty} \exp(- \zeta^2) \phi(\zeta) \mathrm{d} \zeta = \sum_{i \in [-1, 0, 1]} w_{i} \phi(\zeta_{i}).

其中:

ζ0=0,ζ1=3/2,ζ−1=−3/2,w0=2π/3,w1=π/6,w−1=π/6.\begin{aligned} \zeta_0 = 0 ,\quad& \zeta_{1} = \sqrt{3/2} ,\quad& \zeta_{-1} = -\sqrt{3/2} ,\\ w_0 = 2\sqrt{\pi} / 3 ,\quad& w_{1} = \sqrt{\pi} / 6 ,\quad& w_{-1} = \sqrt{\pi} / 6. \end{aligned}

如果用变换关系代换回 ξ\xi,则 ξ0=0\xi_0 = 0, ξ−1=−3RT\xi_{-1} = -\sqrt{3RT} 和 ξ1=3RT\xi_{1} = \sqrt{3RT}.

所以,积分 ImI_m 可以被近似成:

Im=∫−∞+∞exp⁡(−ζ2)ζmdζ≈∑i∈[−1,0,1]wiζim=(2RT)−m/2∑i∈[−1,0,1]wiξim\begin{aligned} I_m &= \int_{-\infty}^{+\infty} \exp \left( - \zeta^2 \right) \zeta^m \mathrm{d}\boldsymbol{\zeta} \\&\approx \sum_{i \in [-1, 0, 1]} w_{i} \zeta_{i}^m \\&= (2RT)^{-m/2} \sum_{i \in [-1, 0, 1]} w_{i} \xi_{i}^m \end{aligned}

也就是说,

(2RT)m/2Im≈∑i∈[−1,0,1]wiξim(2 R T)^{m/2} I_m \approx \sum_{i \in [-1, 0, 1]} w_{i} \xi_{i}^m

综上所述,式(1-6)就会被改写为:

I=∫−∞+∞ψm(ξ)feq(ξ)dξ≈∑i∈[−1,0,1]ξim⋅{ρwiπ⋅[1+ξiuRT+(ξiu)22(RT)2−u22RT]}.\begin{aligned} I=& \int_{-\infty}^{+\infty} \psi_m(\xi) f^{eq} (\xi) \mathrm{d}\xi \\ \approx& \sum_{i \in [-1, 0, 1]} \xi_{i}^{m} \cdot \left\{ \rho \frac{w_{i}}{\sqrt{\pi}} \cdot \left[ 1 + \frac{\xi_{i} u}{R T} + \frac{(\xi_{i} u)^2}{2 (R T)^2} - \frac{u^2}{2 R T} \right] \right\}. \end{aligned}

到这一步,我们就可以定义 ξi\xi_{i} 方向的离散平衡态 fieqf^{eq}_{i} 为:

fieq=ρWi⋅[1+ξiucs2+(ξiu)22cs4−u22cs2].(1-7)f^{eq}_{i} = \rho W_{i} \cdot \left[ 1 + \frac{\xi_{i} u}{c_s^2} + \frac{(\xi_{i} u)^2}{2 c_s^4} - \frac{u^2}{2 c_s^2} \right]. \tag{1-7}

其中的权重 Wi=wi/πW_{i} = w_i / \sqrt{\pi}。并且,如果令 c=3RTc = \sqrt{3RT}, 则 cs=RT=c/3c_s = \sqrt{RT} = c / \sqrt{3} 。

至此,我们就整理出了 D1Q3 模型:

i{i} 离散速度 ξi\xi_{i} 权重系数 WiW_i
0 0 2/3
-c -c 1/6
c c 1/6

注意:在多数LBM实践中,我们通常将 cc 无量纲化,即令 c=1c=1。

更高维的扩展

由于各个坐标轴之间是正交的,这种做法同样可以拓展到高维空间。

打个比方,对于三维问题, ξ=[ξx,ξy,ξz]T\boldsymbol{\xi} = [\xi_x, \xi_y, \xi_z]^{\mathrm{T}}, 则 dξ=dξxdξydξz\mathrm{d}\boldsymbol{\xi} = \mathrm{d}\xi_x \mathrm{d}\xi_y \mathrm{d}\xi_z。积分时就只需要将不同方向的分量分离出来就可以了。

对于二维问题,记 ψm,n(ξ)=ξxmξyn\psi_{m,n}(\boldsymbol{\xi})=\xi_x^{m} \xi_y^{n},则

I=∫ψm,n(ξ)f(st)dξ=ρπ(2RT)m+n{(1−u22RT)ImIn+12RT2(uxIm+1In+uyImIn+1)+1RT(ux2Im+2In+2uxuyIm+1In+1+uy2ImIn+2)}(1-8)\begin{aligned} I =& \int\psi_{m , n} (\boldsymbol{\xi}) f^{( \mathrm{s t} )} \mathrm{d}\boldsymbol{\xi} \\=& \frac{\rho}{\pi} ( \sqrt{2 R T} )^{m+n} \Biggl\{\left( 1-\frac{u^{2}} {2 R T} \right) I_{m} I_{n} \\&+ \frac{1} {\sqrt{2 R T}} 2 ( u_{x} I_{m+1} I_{n}+u_{y} I_{m} I_{n+1} ) \\&+ \frac{1} {R T} (u_{x}^{2} I_{m+2} I_{n}+2 u_{x} u_{y} I_{m+1} I_{n+1}+u_{y}^{2} I_{m} I_{n+2}) \Biggr\} \end{aligned} \tag{1-8}

式(1-8)同样可以整理成:

I=∑i,j∈[−1,0,1]ψ(ξi,j)⋅{ρwiwjπ[1+ξi,j⋅ucs2+(ξi,j⋅u)22cs4−∥u∥22cs2]}(1-9)I = \sum_{i,j\in[-1,0,1]} \psi(\boldsymbol{\xi}_{i,j}) \cdot \left\{ \rho \frac{w_i w_j}{\pi} \left[ 1 + \frac{\boldsymbol{\xi}_{i,j} \cdot \boldsymbol{u}}{c_s^2} + \frac{(\boldsymbol{\xi}_{i,j} \cdot \boldsymbol{u})^2}{2 c_s^4} - \frac{\|\boldsymbol{u}\|^2}{2 c_s^2} \right] \right\} \tag{1-9}

其中 ξi,j=2RT(ζi,ζj)\boldsymbol{\xi}_{i,j}=\sqrt{2RT} (\zeta_i,\zeta_j)。令 Wi,j=wiwj/πW_{i,j} = w_i w_j / \pi ,便得出了 D2Q9 模型的权重。

类似的,对于三维问题,则可以整理出

I=∑i,j,k∈[−1,0,1]ψ(ξi,j,k)⋅{ρwiwjwkπ3/2[1+ξi,j,k⋅ucs2+(ξi,j,k⋅u)22cs4−∥u∥22cs2]}(1-10)I = \sum_{i,j,k\in[-1,0,1]} \psi(\boldsymbol{\xi}_{i,j,k}) \cdot \left\{ \rho \frac{w_i w_j w_k}{\pi^{3/2}} \left[ 1 + \frac{\boldsymbol{\xi}_{i,j,k} \cdot \boldsymbol{u}}{c_s^2} + \frac{(\boldsymbol{\xi}_{i,j,k} \cdot \boldsymbol{u})^2}{2 c_s^4} - \frac{\|\boldsymbol{u}\|^2}{2 c_s^2} \right] \right\} \tag{1-10}

其中 ξi,j,k=2RT(ζi,ζj,ζk)\boldsymbol{\xi}_{i,j,k}=\sqrt{2RT} (\zeta_i,\zeta_j,\zeta_k)。令 Wi,j,k=wiwjwk/π3/2W_{i,j,k} = w_i w_j w_k / \pi^{3/2} ,便得出了 D3Q27 模型的权重。

待定系数法与DnQb模型

上面的内容可以说从数学上给出了明确的证明。然而实际使用中,其实还是用待定系数法来敲定 DnQb 模型更多一些。下面的内容里,为了保持和何雅玲老师的书标号一致,这里将第 α\alpha 个格子速度向量记作 eα\boldsymbol{e}_{\alpha},其权重也记作 ωα\omega_{\alpha}。

一般来说,d 维空间下的格子速度的 n 阶张量为:

Ei1i2...in(n)=∑α(eα)i1(eα)i2...(eα)in(2-1)E_{i_1 i_2 ... i_n}^{(n)} = \sum_{\alpha} (\boldsymbol{e}_{\alpha})_{i_1} (\boldsymbol{e}_{\alpha})_{i_2} ... (\boldsymbol{e}_{\alpha})_{i_n} \tag{2-1}

假如你选取的离散速度集(共有 MM 个速度)是各向同性的,则应该满足

Ei1i2...i2n+1(2n+1)=0,E^{(2n+1)}_{i_1 i_2 ... i_{2n+1}} = 0,

和

Ei1i2...i2n(2n)=Md(d+2)...(d+2n−2)Δi1i2...i2n(2n)E^{(2n)}_{i_1 i_2 ... i_{2n}} = \frac{M}{d (d+2) ... (d+2n-2)} \Delta^{(2n)}_{i_1 i_2 ... i_{2n}}

下面我们首先从张量算子 Δ(2n)\Delta^{(2n)} 开始介绍。详情可见文献 [2] 的第3章,这篇文章在scihub上可以直接下载。

格子张量

张量算子 Δ(2n)\Delta^{(2n)} 实际上计算的是将 2n2n 个指标全部两两配对的所有方式之和。它的具体形式为:

Δij(2)=δijΔijkl(4)=δijδkl+δikδjl+δilδjkΔijklpq(6)=δijΔklpq(4)+δikΔjlpq(4)+δilΔjkpq(4)+δipΔjklq(4)+δiqΔjklp(4)\begin{aligned} \Delta^{(2)}_{ij}&=\delta_{ij} \\ \Delta^{(4)}_{ijkl}&=\delta_{ij}\delta_{kl} + \delta_{ik}\delta_{jl} + \delta_{il}\delta_{jk} \\ \Delta^{(6)}_{ijklpq}&=\delta_{ij}\Delta^{(4)}_{klpq} + \delta_{ik}\Delta^{(4)}_{jlpq} + \delta_{il}\Delta^{(4)}_{jkpq} + \delta_{ip}\Delta^{(4)}_{jklq} + \delta_{iq}\Delta^{(4)}_{jklp} \end{aligned}

并存在如下递归关系:

Δi1i2…i2n(2n)=∑j=22nδi1,ij⋅Δi2…ij−1ij+1…i2n(2n−2)\Delta^{(2n)}_{i_1 i_2 \dots i_{2n}} = \sum_{j=2}^{2n} \delta_{i_1, i_{j}} \cdot \Delta^{(2n-2)}_{i_2 \dots i_{j-1} i_{j+1} \dots i_{2n}}

其中 δij\delta_{ij} 为克罗内克积。

  1. 2n2n 个指标分成 nn 对再求和,共有 (2n−1)!! 项。
    计算思路为 :第一个元素有 (2n−1) 个选择配对;剩下 (2n−2) 个元素之中的第一个有 (2n−3) 个选择;后续依此类推。
  2. 有的书会从排列组合视角出发,写成 (2n)!2nn!=总积偶数部分的积\frac{(2n)!}{2^n n!} = \frac{\text{总积}}{\text{偶数部分的积}},结果是等价的。
    计算思路为 :2n2n 个元素的全排列,除以每对内部的顺序(2n2^n),再除以 nn 对之间的顺序(n!n!)。

为了简洁表示 Δ(2n)\Delta^{(2n)} 的分量,文献 [2] 引入了 upper simplicial components,其索引是非递增的多重指标(如(i1,i2,…,ik)(i_1,i_2,\dots,i_k),满足i1≥i2≥⋯≥iki_1 \geq i_2 \geq \dots \geq i_k)。 假设我们讨论一下二维空间的 Δijkl(4)\Delta^{(4)}_{ijkl} ,其中的 i,j,k,li,j,k,l 取 1 或 2。 那么下标的所有排列便是:

  • 1111(全1,非递增)→ 值3
  • 2111(1个2、3个1,非递增)→ 值0
  • 2211(2个2、2个1,非递增)→ 值1
  • 2221(3个2、1个1,非递增)→ 值0
  • 2222(全2,非递增)→ 值3

即 Δ(4)=[3,0,1,0,3]\Delta^{(4)}=[3,0,1,0,3].

在后续的描述中,为了避免写一大堆下标,我们采用如下简记

E(n)=Ei1i2…in(n),Δ(2n)=Δi1i2…i2n(2n),δ(2n)=δi1i2…i2n(2n),E^{(n)} = E^{(n)}_{i_1 i_2 \dots i_{n}}, \quad \Delta^{(2n)} = \Delta^{(2n)}_{i_1 i_2 \dots i_{2n}}, \quad \delta^{(2n)} = \delta^{(2n)}_{i_1 i_2 \dots i_{2n}},

这里的 Δ(2n)\Delta^{(2n)} 就是 {i1,i2,…i2n}\{i_1, i_2, \dots i_{2n}\} 一系列下标组成的 Δi1i2…i2n(2n)\Delta^{(2n)}_{i_1 i_2 \dots i_{2n}}。而 δ(2n)\delta^{(2n)} 则是2n个下标的克罗内克积,当所有下标相等时才等于1,否则为0。

速度矩与权重系数

从 E(2n)E^{(2n)} 的定义中,若假设所有 eα\boldsymbol{e}_{\alpha} 一样长,可得:

1M∑α(eα⋅v)2n=(2n−1)!!d(d+2)...(d+2n−2)⏟Q2n∥v∥2n\frac{1}{M} \sum_{\alpha} (\boldsymbol{e}_{\alpha} \cdot \boldsymbol{v})^{2n} = \underbrace{\frac{(2n-1)!!}{d (d+2) ... (d+2n-2)}}_{Q_{2n}} \|\boldsymbol{v}\|^{2n}

对于二维情况 (d=2d=2),则 Q2=1/2Q_2 = 1/2, Q4=3/8Q_4 = 3/8, Q6=5/16Q_6 = 5/16, Q8=35/128Q_8 = 35/128。对于三维情况 (d=3d=3),则 Q2n=1/(2n+1)Q_{2n} = 1 / (2n+1).

同理,拓展到奇数阶,则有:

1M∑α(eα⋅v)2n(eα⋅v)=Q2n∥v∥2nv\frac{1}{M} \sum_{\alpha} (\boldsymbol{e}_{\alpha} \cdot \boldsymbol{v})^{2n} (\boldsymbol{e}_{\alpha} \cdot \boldsymbol{v}) = Q_{2n} \|\boldsymbol{v}\|^{2n} \boldsymbol{v}

因此,对于一个所有 eα\boldsymbol{e}_{\alpha} 一样长的离散速度集来说,它的离散速度矩的权重是确定的一个数 —— Q2nQ_{2n}。

假如 eα{\boldsymbol{e}_{\alpha}} 中的所有速度并不等长,我们则可以认为:

Ei1i2...in(n)=∑αω(∥eα∥)⋅(eα)i1(eα)i2...(eα)inE_{i_1 i_2 ... i_n}^{(n)} = \sum_{\alpha} \omega(\|\boldsymbol{e}_{\alpha}\|) \cdot (\boldsymbol{e}_{\alpha})_{i_1} (\boldsymbol{e}_{\alpha})_{i_2} ... (\boldsymbol{e}_{\alpha})_{i_n}

其中 ω(∥eα∥)\omega(\|\boldsymbol{e}_{\alpha}\|) 指代由特征速度的模 ∥eα∥\|\boldsymbol{e}_{\alpha}\| 决定的权重系数。

DnQb 模型的确定

Qian等的 DnQb 模型采用如下的平衡态分布:

fαeq(ρ,u;eα,ωα)=ωαρ⋅[1+eα⋅ucs2+(eα⋅u)22cs4−∥u∥22cs2].f^{eq}_{\alpha} (\rho, \boldsymbol{u}; \boldsymbol{e}_{\alpha}, \omega_{\alpha}) = \omega_{\alpha} \rho \cdot \left[ 1 + \frac{\boldsymbol{e}_{\alpha} \cdot \boldsymbol{u}}{c_s^2} + \frac{(\boldsymbol{e}_{\alpha} \cdot \boldsymbol{u})^2}{2 c_s^4} - \frac{\|\boldsymbol{u}\|^2}{2 c_s^2} \right].

其中 ρ\rho 为流场密度;u\boldsymbol{u} 为流场速度,cs2=RTc_s^2 = RT。若是为了模拟Navier-Stokes方程,平衡态分布函数需要满足下面的约束:

∑αfαeq=ρ,∑αfαeqeα=ρu,∑αfαeqeαieαj=ρuiuj+pδij.(2-2)\begin{aligned} \sum_{\alpha} f^{eq}_{\alpha} &= \rho ,\\ \sum_{\alpha} f^{eq}_{\alpha} \boldsymbol{e}_{\alpha} &= \rho \boldsymbol{u} ,\\ \sum_{\alpha} f^{eq}_{\alpha} e_{\alpha i} e_{\alpha j} &= \rho u_i u_j + p \delta_{ij}. \end{aligned} \tag{2-2}

在待定系数法的框架下,就是把已经设计好的离散速度集 {eα}\{\boldsymbol{e}_{\alpha}\} 代入上面的约束中,然后求解对应的权重 ωα\omega_{\alpha}。

在这种视角下,我们要怎么确定就是要用 D2Q9、D3Q15、D3Q19 这些形式呢?

首先,正四边形最多能保证三阶格子张量是各向同性的,而到了四阶就变成了 Eijkl(4)∣M=4=2δijklE_{ijkl}^{(4)}|_{M=4} = 2 \delta_{ijkl}。为了解决这个问题,我们可以在在原有最近邻链接基础上,增加更远邻的链接,扩大速度方向集合 {eα}\{\boldsymbol{e}_{\alpha}\}。 而正方晶格加对角线的方式,就构成了典型的 D2Q9 模型:此时速度方向等效于正八边形顶点,当 M=8>4M=8>4 时,E(4)E^{(4)} 满足各向同性条件(MM 不整除4)。

同样的道理,在三维空间中若是使用立方晶格,此时速度方向为立方体顶点(M=8M=8,最近邻链接),对称性较低。E(4)E^{(4)} 也是各向异性的,无法导出标准流体方程。此时也需要把一些对角线方向加进来,让 E(4)E^{(4)} 满足各向同性条件。

Example: 以 D2Q9 为例

首先,我们把 D2Q9 分成三组

组别 速度配置 权重
1 (0,0)(0,0) ω0\omega_0
2 cyc:(±c,0)(\pm c,0) ω1=ω2=ω3=ω4\omega_1=\omega_2=\omega_3=\omega_4
3 (±c,±c)(\pm c,\pm c) ω5=ω6=ω7=ω8\omega_5=\omega_6=\omega_7=\omega_8

对于组别 2,根据格子张量的表格,我们有

∑α∈[1−4]eαi=0,∑α∈[1−4]eαieαj=2δij⋅c2∑α∈[1−4]eαieαjeαk=0,∑α∈[1−4]eαieαjeαkeαl=2δijkl⋅c4\begin{aligned} \sum_{\alpha\in[1-4]} e_{\alpha i} &= 0 ,& \sum_{\alpha\in[1-4]} e_{\alpha i} e_{\alpha j} &= 2\delta_{ij} \cdot c^2\\ \sum_{\alpha\in[1-4]} e_{\alpha i} e_{\alpha j} e_{\alpha k} &= 0 ,& \sum_{\alpha\in[1-4]} e_{\alpha i} e_{\alpha j} e_{\alpha k} e_{\alpha l} &= 2\delta_{ijkl} \cdot c^4\\ \end{aligned}

对于组别 3,同理可得

∑α∈[5−8]eαi=0,∑α∈[5−8]eαieαj=4δij⋅c2∑α∈[5−8]eαieαjeαk=0,∑α∈[5−8]eαieαjeαkeαl=(4Δijkl(4)−8δijkl(4))⋅c4\begin{aligned} \sum_{\alpha\in[5-8]} e_{\alpha i} &= 0 ,& \sum_{\alpha\in[5-8]} e_{\alpha i} e_{\alpha j} &= 4\delta_{ij} \cdot c^2\\ \sum_{\alpha\in[5-8]} e_{\alpha i} e_{\alpha j} e_{\alpha k} &= 0 ,& \sum_{\alpha\in[5-8]} e_{\alpha i} e_{\alpha j} e_{\alpha k} e_{\alpha l} &= (4 \Delta^{(4)}_{ijkl} - 8 \delta^{(4)}_{ijkl}) \cdot c^4\\ \end{aligned}

代入式(2-2),依次得:

ρ(ω0+4ω1+4ω5)+ρ∥u∥2[ω1(c2cs4−2cs2)+ω5(2c2cs4−2cs2)−ω02cs2]=ρ(2-3)\rho (\omega_0 + 4 \omega_1 + 4 \omega_5) + \rho \|\boldsymbol{u}\|^2 \left[ \omega_1 \left(\frac{c^2}{c_s^4} - \frac{2}{c_s^2}\right) \right.\\ \left. + \omega_5 \left(\frac{2 c^2}{c_s^4} - \frac{2}{c_s^2}\right) - \frac{\omega_0}{2 c_s^2} \right] = \rho \tag{2-3}

ρu(ω12c2cs2+ω54c2cs2)=ρu(2-4)\rho \boldsymbol{u} \left( \omega_1 \frac{2 c^2}{c_s^2} + \omega_5 \frac{4 c^2}{c_s^2} \right) = \rho \boldsymbol{u} \tag{2-4}

ρω1∑α=14[eαieαj(1−u22cs2)+eαieαjeαkeαlukul2cs4]+ρω5∑α=58[eαieαj(1−u22cs2)+eαieαjeαkeαlukul2cs4]=ρuiuj+pδij(2-5)\begin{aligned} \rho \omega_1 \sum_{\alpha=1}^{4} \left[ e_{\alpha i} e_{\alpha j} \left(1 - \frac{u^2}{2 c_s^2}\right) + \frac{e_{\alpha i} e_{\alpha j} e_{\alpha k} e_{\alpha l} u_k u_l}{2 c_s^4} \right] &+ \\ \rho \omega_5 \sum_{\alpha=5}^{8} \left[ e_{\alpha i} e_{\alpha j} \left(1 - \frac{u^2}{2 c_s^2}\right) + \frac{e_{\alpha i} e_{\alpha j} e_{\alpha k} e_{\alpha l} u_k u_l}{2 c_s^4} \right] &= \rho u_i u_j + p \delta_{ij} \end{aligned} \tag{2-5}

由式(2-3),得:

ω0+4ω1+4ω5=1ω1(c2cs4−2cs2)+ω2(2c2cs4−2cs2)−ω02cs2=0\begin{aligned} \omega_0 + 4 \omega_1 + 4 \omega_5 = 1 \\ \omega_1 \left(\frac{c^2}{c_s^4} - \frac{2}{c_s^2}\right) + \omega_2 \left(\frac{2 c^2}{c_s^4} - \frac{2}{c_s^2}\right) - \frac{\omega_0}{2 c_s^2} = 0 \end{aligned}

由式(2-4),得:

(ω1+2ω5)2c2cs2=1(\omega_1 + 2 \omega_5) \frac{2 c^2}{c_s^2} =1

式(2-5)需要用到如下化简:

Δijkl(4)ukul=δij(δklukul)+(δikδjlukul)+(δilδjkukul)=δij∥u∥2+2uiuj\begin{aligned} \Delta^{(4)}_{ijkl} u_{k} u_{l} &= \delta_{ij} (\delta_{kl} u_{k} u_{l}) + (\delta_{ik}\delta_{jl}u_{k} u_{l}) + (\delta_{il}\delta_{jk} u_{k} u_{l}) \\ &=\delta_{ij} \|\boldsymbol{u}\|^2 + 2 u_i u_j \end{aligned}

其中:

  • 第一项仅当 k=lk=l 时不为0。因此 δklukul=∑k=lukul=∑kukuk=∥u∥2\delta_{kl} u_k u_l = \sum_{k=l} u_k u_l = \sum_{k} u_k u_k = \|\boldsymbol{u}\|^2。
  • 第二项 δik\delta_{ik} 要求 k=ik=i 时才非零,δjl\delta_{jl} 要求 l=jl=j 时才非零。因此对 k,lk,l 求和时,只有 k=ik=i 且 l=jl=j 的项保留,即 uiuju_i u_j。
  • 第三项 δil\delta_{il} 要求 l=il=i,δjk\delta_{jk} 要求 k=jk=j。因此只有 l=il=i 且 k=jk=j 的项保留,即 uiuju_i u_j。

由于式(2-5)的左侧可被简化为

(ω1−4ω5)c4cs4ρδijklukul+ρc2δij[(1−∥u∥22cs2)(2ω1+4ω5)+2ω5∥u∥2c2cs4]+ρuiujw54c2cs4(2-6)\begin{aligned} (\omega_1 - 4 \omega_5) \frac{c^4}{c_s^4} \rho \delta_{ijkl} u_k u_l &+ \rho c^2 \delta_{ij} \left[ (1 - \frac{\|\boldsymbol{u}\|^2}{2 c_s^2}) (2\omega_1 + 4\omega_5) \right. \\ &\left. + 2 \omega_5 \frac{\|\boldsymbol{u}\|^2 c^2}{c_s^4} \right] + \rho u_i u_j w_5 \frac{4 c^2}{c_s^4} \tag{2-6} \end{aligned}

所以

w54c2cs4=1ω1−4ω5=0(1−∥u∥22cs2)(2ω1+4ω5)+2ω5∥u∥2c2cs4=pρc2\begin{aligned} w_5 \frac{4 c^2}{c_s^4} &= 1 \\ \omega_1 - 4 \omega_5 &= 0 \\ \left(1 - \frac{\|\boldsymbol{u}\|^2}{2 c_s^2}\right) (2\omega_1 + 4\omega_5) + 2 \omega_5 \frac{\|\boldsymbol{u}\|^2 c^2}{c_s^4} &= \frac{p}{\rho c^2} \end{aligned}

联立这些方程就可以解得: ω0=4/9\omega_0 = 4/9, ω1=1/9\omega_1 = 1/9, ω5=1/36\omega_5 = 1/36, cs=c/3c_s = c / \sqrt{3}。

附录

(1)对于二维正M边形网格,eα=e(cos⁡(2παM),sin⁡(2παM))\boldsymbol{e}_{\alpha} = e \left( \cos(\frac{2\pi\alpha}{M}), \sin(\frac{2\pi\alpha}{M})\right)。此时阶数 nn 与 MM 的对应关系为:

各向同性张量 E(n)E^{(n)} 正多边形边数 MM
E(2)E^{(2)} M>2M \gt 2
E(3)E^{(3)} M≥2,M≠3M \ge 2, M \neq 3
E(4)E^{(4)} M>2,M≠4M \gt 2, M \neq 4
E(5)E^{(5)} M≥2,M≠[3,5]M \ge 2, M \neq [3,5]
E(6)E^{(6)} M>4,M≠6M \gt 4, M \neq 6
E(7)E^{(7)} M≥2,M≠[3,5,7]M \ge 2, M \neq [3,5,7]

(2)文献[2]给出了三维情况下 E(n)E^{(n)} 的各向同性情况,下表用 Y 和 N 分别表示是和否。其中 cyc 表示循环排列, ϕ=(1+5)/2\phi=(1+\sqrt{5})/2。

几何形状 速度配置 M E(2)E^{(2)} E(3)E^{(3)} E(4)E^{(4)} E(5)E^{(5)} E(6)E^{(6)}
四面体 (1,1,1)(1,1,1), cyc:(1,−1,−1)(1,-1,-1) 4 Y N N N N
立方体 cyc:(±1,±1,±1)(\pm 1,\pm 1,\pm 1) 8 Y Y N Y N
八面体 cyc:(±1,0,0)(\pm 1,0,0) 6 Y Y N Y N
十二面体 (±1,±1,±1)(\pm 1,\pm 1,\pm 1), cyc: (0,±ϕ−1,±ϕ)(0, \pm \phi-1, \pm \phi) 20 Y Y Y Y N
二十面体 cyc: (0,±ϕ,±1)(0, \pm \phi, \pm 1) 12 Y Y Y Y N

(3)两种基本正方形格子模型的偶数阶张量

速度配置 M E(2)E^{(2)} E(4)E^{(4)} E(6)E^{(6)}
cyc:(±1,0)(\pm 1,0) 4 2δ(2)2 \delta^{(2)} 2δ(4)2 \delta^{(4)} 2δ(6)2 \delta^{(6)}
(±1,±1)(\pm 1,\pm 1) 8 4δ(2)4 \delta^{(2)} 4Δ(4)−8δ(4)4 \Delta^{(4)} - 8 \delta^{(4)} 43Δ(6)−16δ(6)\frac{4}{3} \Delta^{(6)} - 16 \delta^{(6)}

(4)几种最对称的三维Bravais晶格的偶数阶张量

形状 速度配置 M E(2)E^{(2)} E(4)E^{(4)} E(6)E^{(6)}
Primitive cubic cyc:(±1,0,0)(\pm 1,0,0) 6 2δ(2)2 \delta^{(2)} 2δ(4)2 \delta^{(4)} 2δ(6)2 \delta^{(6)}
Body-centered cubic (±1,±1,±1)(\pm 1,\pm 1,\pm 1) 8 8δ(2)8 \delta^{(2)} 8(Δ(4)−2δ(4))8 (\Delta^{(4)} - 2\delta^{(4)}) 8(Δ(6)−2Δ(4,2)+16δ(6))8 (\Delta^{(6)} - 2 \Delta^{(4,2)} + 16\delta^{(6)})
Face-centered cubic cyc:(±1,±1,0)(\pm 1,\pm 1,0) 12 8δ(2)8 \delta^{(2)} 4(Δ(4)−δ(4))4 (\Delta^{(4)} - \delta^{(4)}) 4(Δ(4,2)+13δ(6))4 (\Delta^{(4,2)} + 13\delta^{(6)})

在文献[2]的原话中:

Δ(n,m)\Delta^{(n,m)} is the sum of all possible products of pairs of Kronecker delta symbols with nn and mm indices。

具体到 Δ(4,2)=Δijklmn(4,2)\Delta^{(4,2)} = \Delta^{(4,2)}_{ijklmn} ,它应该是 C62=15\mathrm{C}_{6}^{2} = 15 个项的和。打个比方:第1个项是 δijδklmn(4)\delta_{ij}\delta^{(4)}_{klmn};第2个项是 δikδjlmn(4)\delta_{ik}\delta^{(4)}_{jlmn};后续依次类推,直到把15个组合都轮换出来,然后求和。

参考

[1] HE X, LUO L S. Theory of the lattice Boltzmann method: From the Boltzmann equation to the lattice Boltzmann equation[J]. Physical Review E, 1997, 56(6): 6811-6817. DOI:10.1103/PhysRevE.56.6811.
[2] WOLFRAM S. Cellular automaton fluids 1: Basic theory[J]. Journal of Statistical Physics, 1986, 45(3-4): 471-526. DOI:10.1007/BF01021083.
[3] 何雅玲, 王勇, 李庆, 童自翔. 格子Boltzmann方法的理论及应用[M]. 1 版. 北京: 高等教育出版社, 2023.

Lattice Boltzmann method

The (force-free) LBM equation is

fi(x+ci,t+δt)−fi(x,t)=Ωi(x,t).f_{i}(\boldsymbol{x} + \boldsymbol{c}_{i}, t+\delta_t) - f_{i}(\boldsymbol{x}, t) = \Omega_{i}(\boldsymbol{x}, t).

In LBGK model, Ωi(x,t)=−1τ[fi(x,t)−fi(eq)]\Omega_{i}(\boldsymbol{x}, t) = -\frac{1}{\tau} \left[ f_{i}(\boldsymbol{x}, t) - f_{i}^{(eq)} \right].

The fi(eq)f_{i}^{(eq)} is the equilibrium state,

fi(eq)=wiρ[1+ci⋅ucs2+(ci⋅u)22cs4−∣u∣22cs2].f_{i}^{(eq)} = 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{|\boldsymbol{u}|^2}{2 c_s^2} \right].

wiw_i is the weight of the ci\boldsymbol{c}_{i}. csc_s is the speed of sound. ρ,u\rho, \boldsymbol{u} are the fluid density and velocity, respectively.

For simplicity, we define fi∗=fi−Ωif^{*}_{i} = f_{i} - \Omega_{i} as the post-collision population.

Curved boundary in LBM

The purpose of boundary algorithms is to reconstruct missing fiˉ(xF,t+δt)f_{\bar{i}}(\boldsymbol{x}_{F}, t+\delta_t) after the streaming step.

Interpolated bounce-back method (IBB) ia a general ideas to implement the boundary condition. We will introduce it at below.

NOTE: ① In the left figure, xw=xF+qciˉ\boldsymbol{x}_{w} = \boldsymbol{x}_{F} + q \boldsymbol{c}_{\bar{i}}, and ciˉ=−ci\boldsymbol{c}_{\bar{i}} = -\boldsymbol{c}_{i}. ② Let the yellow node is x⃗b\vec{x}_b, then q=∣x⃗w−x⃗F∣/∣x⃗b−x⃗F∣q = |\vec{x}_w - \vec{x}_F| / |\vec{x}_b - \vec{x}_F|

Interpolated bounce-back method

It treats the unknown fi(xF,t+δt)f_{i}(\boldsymbol{x}_{F}, t+\delta_t) as a polynomial of the known populations.

fi(xF,t+δt)=a1fiˉ∗(xFF,t)+a2fiˉ∗(xF,t)+a3fi∗(xF,t)+Kf_{i}(\boldsymbol{x}_{F}, t+\delta_t) = a_1 f_{\bar{i}}^{*}(\boldsymbol{x}_{FF}, t) + a_2 f_{\bar{i}}^{*}(\boldsymbol{x}_{F}, t) + a_3 f_{i}^{*}(\boldsymbol{x}_{F}, t) + K

where KK is a correction term.


|👉 How to find the coefficients aia_i?
(1) Use Chapman-Enskog expansion, Taylor expansion, or Grad’s method to find the coefficients.
(2) BFL: a mesoscopic, geometrical approach proposed by Bouzidi et al.

BFL scheme

It determinates the boundary scheme based on the value of qq. The length of the orange line is 1.

When q≥12q \ge \frac{1}{2} (Figure (a)), we have

fi(x+,t+δt)=fiˉ∗(xF,t),fi(xFF,t+δt)=fi∗(xF,t).f_{i}(\boldsymbol{x}_{+}, t+\delta_t) = f_{\bar{i}}^{*} (\boldsymbol{x}_{F}, t) ,\quad f_{i}(\boldsymbol{x}_{FF}, t+\delta_t) = f_{i}^{*} (\boldsymbol{x}_{F}, t).

Then we can do linear interpolation to calculate fi(xF,t+δt)f_{i}(\boldsymbol{x}_{F}, t+\delta_t):

fi(xF,t+δt)=fi(x+,t+δt)+2q−12q[fi(xFF,t+δt)−fi(x+,t+δt)]=12qfiˉ∗(xF,t)+(1−12q)fi∗(xF,t)\begin{aligned} f_{i}(\boldsymbol{x}_{F}, t+\delta_t) =& f_{i}(\boldsymbol{x}_{+}, t+\delta_t) + \\ &\frac{2q - 1}{2q} [f_{i}(\boldsymbol{x}_{FF}, t+\delta_t)- f_{i}(\boldsymbol{x}_{+}, t+\delta_t)] \\ =& \frac{1}{2q} f_{\bar{i}}^{*} (\boldsymbol{x}_{F}, t) + (1-\frac{1}{2q}) f_{i}^{*} (\boldsymbol{x}_{F}, t) \end{aligned}

When q<12q < \frac{1}{2} (Figure (b)), we can do linear interpolation, i.e.,

fi(xF,t+δt)=fiˉ∗(x+,t)=fiˉ∗(xF,t)+(1−2q)[fiˉ∗(xFF,t)−fiˉ∗(xF,t)]=2qfiˉ∗(xF,t)+(1−2q)fiˉ∗(xFF,t)\begin{aligned} f_{i}(\boldsymbol{x}_{F}, t+\delta_t) =& f_{\bar{i}}^{*}(\boldsymbol{x}_{+}, t)\\ =& f_{\bar{i}}^{*}(\boldsymbol{x}_{F}, t) \\ & + (1-2q) [f_{\bar{i}}^{*}(\boldsymbol{x}_{FF}, t) - f_{\bar{i}}^{*}(\boldsymbol{x}_{F}, t)]\\ =& 2q f_{\bar{i}}^{*}(\boldsymbol{x}_{F}, t) + (1-2q) f_{\bar{i}}^{*}(\boldsymbol{x}_{FF}, t) \end{aligned}

One-node local boundary

We can notice that: the general scheme usually employs the data of xFF\boldsymbol{x}_{FF}, which is the second layer of fluid.

To design local linkwise boundary condition, one must discard the nonlocal contribution f∗(xFF,t)f^{*}(\boldsymbol{x}_{FF}, t) that appears in the interpolation scheme.

Because the existence of f∗(xFF,t)f^{*}(\boldsymbol{x}_{FF}, t) would make the scheme hard to describe the narrow region or corner.

1st order time approximation

The boundary node x⃗w\vec{x}_w is at the middle of x⃗1\vec{x}_1 and x⃗2\vec{x}_2, which is easier to use the half-way bounce-back (J. Fluid Mech., 271 (1994), pp. 285–309).

The first one is based on the following first-order in time approximation:

fiˉ∗(xFF,t)=fiˉ(xF,t+δt)⏟LBM streaming step≈fiˉ(xF,t)⏟Approximation\underbrace{f_{\bar{i}}^{*}(\boldsymbol{x}_{FF}, t) = f_{\bar{i}}(\boldsymbol{x}_{F}, t+\delta_t) }_{\text{LBM streaming step}} \approx \underbrace{f_{\bar{i}}(\boldsymbol{x}_{F}, t)}_{\text{Approximation}}

Zhao et al.[3] point out that: their scheme can obtain second-order accuracy under the diffusive scaling (δt=O(δx2)\delta_t = O(\delta_x^2)) [3].

Here:

x⃗w=x⃗F+qc⃗iˉ\vec{x}_w = \vec{x}_{F} + q \vec{c}_{\bar{i}}, x⃗1=x⃗F+lc⃗iˉ\vec{x}_1 = \vec{x}_{F} + l \vec{c}_{\bar{i}}, x⃗2=2x⃗w−x⃗1\vec{x}_2 = 2 \vec{x}_{w} - \vec{x}_1.

Stability condition: l∈[max⁡{0,2q−1},2q]l \in [\max\{0, 2q-1\}, 2q]

With x⃗1\vec{x}_1 and x⃗FF\vec{x}_{FF}, the interpolation of x⃗F\vec{x}_{F} is:

fi(x⃗F,t+δt)=l1+lfi(x⃗FF,t+δt)+11+lfi(x⃗1,t+δt)=l1+lfi∗(x⃗F,t)⏟LBM Streaming+11+lfi(x⃗1,t+δt)\begin{aligned} f_i (\vec{x}_{F}, t + \delta_t) =& \frac{l}{1+l} f_i (\vec{x}_{FF}, t + \delta_t) + \frac{1}{1+l} f_i (\vec{x}_{1}, t + \delta_t) \\ =& \underbrace{\frac{l}{1+l} f_i^{*} (\vec{x}_{F}, t)}_{\text{LBM Streaming}} + \frac{1}{1+l} f_i (\vec{x}_{1}, t + \delta_t) \end{aligned}

For the unknown distribution function fi(x⃗1,t+δt)f_i (\vec{x}_{1}, t + \delta_t), Zhao et al.[3] use the half-way bounce-back purposed by Ladd (J. Fluid Mech., 271 (1994), pp. 285–309).

fi(x⃗1,t+δt)=fiˉ(x⃗2,t+δt)+2wiρ0ci⋅u(x⃗b,t)cs2f_i (\vec{x}_{1}, t + \delta_t) = f_{\bar{i}} (\vec{x}_{2}, t + \delta_t) + 2 w_i \rho_0 \frac{\boldsymbol{c}_i \cdot \boldsymbol{u}(\vec{x}_b, t)}{c_s^2}

Here the wall velocity u(x⃗b,t)\boldsymbol{u}(\vec{x}_b, t) is a known quantity.

Next, we interpolate fiˉ(x⃗2,t+δt)f_{\bar{i}} (\vec{x}_{2}, t + \delta_t) with the distribution functions at x⃗F\vec{x}_F and x⃗b\vec{x}_b:

fiˉ(x⃗2,t+δt)=(1+l−2q)fiˉ(x⃗F,t+δt)+(2q−l)fiˉ(x⃗b,t+δt)f_{\bar{i}} (\vec{x}_{2}, t + \delta_t) = (1+l-2q) f_{\bar{i}} (\vec{x}_{F}, t + \delta_t) + (2q-l) f_{\bar{i}} (\vec{x}_{b}, t + \delta_t)

Consider the streaming step from x⃗F\vec{x}_F and x⃗b\vec{x}_b, we have: fiˉ∗(x⃗F,t)=fiˉ(x⃗b,t+δt)f_{\bar{i}}^{*} (\vec{x}_{F}, t) = f_{\bar{i}} (\vec{x}_{b}, t + \delta_t).

Finally, with the approximation

fiˉ∗(xFF,t)=fiˉ(xF,t+δt)⏟LBM streaming step≈fiˉ(xF,t)⏟Approximation,\underbrace{f_{\bar{i}}^{*}(\boldsymbol{x}_{FF}, t) = f_{\bar{i}}(\boldsymbol{x}_{F}, t+\delta_t) }_{\text{LBM streaming step}} \approx \underbrace{f_{\bar{i}}(\boldsymbol{x}_{F}, t)}_{\text{Approximation}},

we can obtain the local boundary scheme:

fi(x⃗F,t+δt)=1+l−2q1+lfiˉ(x⃗F,t)⏟before collision+l1+lfi∗(xF,t)+2q−l1+lfiˉ∗(xF,t)⏟post collision terms+2wiρ0(1+l)cs2ci⋅u(x⃗b,t)⏟Ladd’s bounce-backf_i (\vec{x}_{F}, t + \delta_t) = \underbrace{ \frac{1+l-2q}{1+l} f_{\bar{i}} (\vec{x}_F, t) }_{\text{before collision}} + \underbrace{ \frac{l}{1+l} f_{i}^{*}(\boldsymbol{x}_{F}, t) + \frac{2q-l}{1+l} f_{\bar{i}}^{*}(\boldsymbol{x}_{F}, t) }_{\text{post collision terms}} + \underbrace{\frac{2 w_i \rho_0}{(1+l)c_s^2} \boldsymbol{c}_i \cdot \boldsymbol{u}(\vec{x}_b, t)}_{\text{Ladd's bounce-back}}

[NOTE]
(1) This scheme doesn’t rely on the collision model.
(2) If xFF\boldsymbol{x}_{FF} is always available, we can remove the first-order time approximation, and convert the scheme into a two-node scheme.
(3) When l=ql = q, the scheme is equivalent to that purposed by Geier et al. (Comput. Math. Appl., 70 (2015), pp. 507–547)

fi(x⃗F,t+δt)=1−q1+qfiˉ(x⃗F,t)+q1+q[fi∗(xF,t)+fiˉ∗(xF,t)]+2wiρ0(1+q)cs2ci⋅u(x⃗b,t)f_i (\vec{x}_{F}, t + \delta_t) = \frac{1-q}{1+q} f_{\bar{i}} (\vec{x}_F, t) + \frac{q}{1+q} [f_{i}^{*}(\boldsymbol{x}_{F}, t) + f_{\bar{i}}^{*}(\boldsymbol{x}_{F}, t)] + \frac{2 w_i \rho_0}{(1+q)c_s^2} \boldsymbol{c}_i \cdot \boldsymbol{u}(\vec{x}_b, t)

If we still use fiˉ∗(x⃗FF,t)f_{\bar{i}}^{*} (\vec{x}_{FF}, t) rather than replacing it with fiˉ(x⃗F,t)f_{\bar{i}} (\vec{x}_{F}, t), the scheme is equivalent to that purposed by Yu et al. (AIAA Paper, 2003-0953, 2003.).

Non-equilibrium state reconstruction

Tao et al.[4] have proposed a scheme to reconstruct the equilibrium and non-equilibrium state of the fluid node near the wall.

For the boundary node x⃗F\vec{x}_F, its unknown distribution function can be calculated by the following interpolation:

fi(x⃗F,t+δt)=11+qfi(x⃗w,t+δt)+q1+qfi(x⃗FF,t+δt).f_{i}(\vec{x}_F, t + \delta_t) = \frac{1}{1+q} f_{i}(\vec{x}_w, t + \delta_t) + \frac{q}{1+q} f_{i}(\vec{x}_{FF}, t + \delta_t).

Then we begin to discuss the reconstruction process.

First, consider the streaming step from x⃗F\vec{x}_F to x⃗FF\vec{x}_{FF}, we have:

fi∗(x⃗F,t)=fi(x⃗FF,t+δt)f_{i}^{*}(\vec{x}_{F}, t) = f_{i}(\vec{x}_{FF}, t + \delta_t)

Second, the term fi(x⃗w,t+δt)f_{i}(\vec{x}_w, t + \delta_t) can be divided into two parts of equilibrium (fi(eq)f_{i}^{(eq)}) and non-equilibrium states (fi(neq)f_{i}^{(neq)}):

fi(x⃗w,t+δt)=fi(eq)(x⃗w,t+δt)+fi(neq)(x⃗w,t+δt)=fi(eq)(x⃗w,t+δt)+fi(neq)(x⃗F,t+δt)=fi(eq)(x⃗w,t+δt)+fiˉ(neq)(x⃗F,t)\begin{aligned} f_{i}(\vec{x}_w, t + \delta_t) &= f_{i}^{(eq)}(\vec{x}_w, t + \delta_t) + f_{i}^{(neq)}(\vec{x}_w, t + \delta_t) \\ &= f_{i}^{(eq)}(\vec{x}_w, t + \delta_t) + f_{i}^{(neq)}(\vec{x}_F, t + \delta_t) \\ &= f_{i}^{(eq)}(\vec{x}_w, t + \delta_t) + f_{\bar{i}}^{(neq)}(\vec{x}_F, t) \end{aligned}

Consider the substitution from fi(neq)(x⃗F,t+δt)f_{i}^{(neq)}(\vec{x}_F, t + \delta_t) to fiˉ(neq)(x⃗F,t)f_{\bar{i}}^{(neq)}(\vec{x}_F, t) as a non-equilibrium bounce-back, as mentioned in Tao et al.[4].

The fi(eq)(x⃗w,t+δt)f_{i}^{(eq)}(\vec{x}_w, t + \delta_t) can be determined by the known velocity and the approximate fluid density

fi(eq)(x⃗w,t+δt)=fi(eq)(u⃗(x⃗w,t+δt),ρ(x⃗w,t+δt))≈fi(eq)(u⃗(x⃗w,t+δt),ρ(x⃗F,t+δt))≈fi(eq)(u⃗(x⃗w,t+δt),ρ(x⃗F,t))\begin{aligned} f_{i}^{(eq)}(\vec{x}_w, t + \delta_t) &= f_{i}^{(eq)} \left( \vec{u}(\vec{x}_w, t + \delta_t), \rho(\vec{x}_w, t + \delta_t) \right) \\ &\approx f_{i}^{(eq)} \left( \vec{u}(\vec{x}_w, t + \delta_t), \rho(\vec{x}_F, t + \delta_t) \right) \\ &\approx f_{i}^{(eq)} \left( \vec{u}(\vec{x}_w, t + \delta_t), \rho(\vec{x}_F, t) \right) \\ \end{aligned}

Here we cite the original sentences from the paper [4]:

It has been demonstrated that for low speed flow, using ρA(t)\rho_A (t) and ρA(t+δt)\rho_A (t+\delta_t) to approximate ρA(t+δt)\rho_A (t+\delta_t) and ρW(t+δt)\rho_W (t+\delta_t) have second- and third-order accuracies, respectively [23,39].

== Reference ==
[23] Z. Guo, C. Zheng, B. Shi, An extrapolation method for boundary conditions in lattice Boltzmann method, Phys. Fluids 14 (6) (2002) 2007–2010.
[39] Z. Guo, C. Shu, Lattice Boltzmann Method and Its Applications in Engineering, World Scientific, 2013.


So the boundary scheme purposed by Tao et al. [4] is:

fi(x⃗F,t+δt)=q1+qfi∗(x⃗F,t)+11+q{fi(eq)(u⃗(x⃗w,t+δt),ρ(x⃗F,t))+fiˉ(neq)(x⃗F,t)}f_{i}(\vec{x}_F, t + \delta_t) = \frac{q}{1+q} f_{i}^{*}(\vec{x}_{F}, t) + \frac{1}{1+q} \left\{ f_{i}^{(eq)} \left( \vec{u}(\vec{x}_w, t + \delta_t), \rho(\vec{x}_F, t) \right) + f_{\bar{i}}^{(neq)}(\vec{x}_F, t) \right\}

[NOTE]
This scheme sounds easy and familar, right? Let’s make a summary.
(1) It comes from the interpolation scheme.
(2) Employ streaming step to eliminate the unknown fi(x⃗FF,t+δt)f_{i}(\vec{x}_{FF}, t + \delta_t).
(3) The distribution function at the wall node x⃗w\vec{x}_w is divieded into two parts: fi(eq)f_{i}^{(eq)} and fi(neq)f_{i}^{(neq)}.
(4) fi(eq)f_{i}^{(eq)} is approximated by known macroscopic variables.
(5) fi(neq)f_{i}^{(neq)} is approximated by the non-equilibrium bounce-back.

Enhanced single-node boundary condition

Here, we introduce the enhanced single-node boundary condition purposed by Marson et al.[1].

fi(x⃗F,t+δt)=a1fiˉ∗(x⃗FF)+a2(x⃗F+2f(eq)−(x⃗w))⏟1+a3fi∗(x⃗F)+a4f~i(x⃗w,t+δt)⏟2+a5f~i∗(x⃗w)⏟3−K−fi(neq)−(x⃗F)τ−⏟4\begin{aligned} f_{i}(\vec{x}_F, t + \delta_t) =& \cancel{a_1 f_{\bar{i}}^{*}(\vec{x}_{FF})} + a_2 \underbrace{(\vec{x}_{F} + 2 f^{(eq)-}(\vec{x}_{w}))}_{\text{1}} + a_3 f_{i}^{*}(\vec{x}_{F})\\ & + a_4 \underbrace{ \tilde{f}_{i}(\vec{x}_w, t + \delta_t) }_{\text{2}} + a_5 \underbrace{\tilde{f}_{i}^{*}(\vec{x}_w)}_{\text{3}} - \underbrace{K^{-} \frac{f_{i}^{(neq)-}(\vec{x}_F)}{\tau^{-}}}_{\text{4}} \end{aligned}

Term ①: The haly-way bounce-back from Ladd (J. Fluid Mech., 271 (1994), pp. 285–309).
Note that: f(eq)−(x⃗w)=wiρc⃗i⋅u⃗w/cs2f^{(eq)-}(\vec{x}_{w}) = w_i \rho \vec{c}_i \cdot \vec{u}_w / c_s^2.
Term ②: The term from [4].
Term ③: The new term designed by Marson et al.[1].
Term ④: The new (optional) term mentioned in the Sec. ⅣB of Marson et al.[1].

Marson et al.[1] use TRT collision model. So here we briefly introduce the two-relaxation-time (TRT) collision model.

{fi+(x⃗+c⃗iδt,t+δt)−fi+(x⃗,t)=−1τ+(fi+(x⃗,t)−fi(eq)+(x⃗,t))fi−(x⃗+c⃗iδt,t+δt)−fi−(x⃗,t)=−1τ−(fi−(x⃗,t)−fi(eq)−(x⃗,t))\begin{cases} f_{i}^{+} (\vec{x} + \vec{c}_i \delta_t, t + \delta_t) - f_{i}^{+} (\vec{x}, t) = -\frac{1}{\tau^{+}} (f_{i}^{+} (\vec{x}, t) - f_{i}^{(eq)+} (\vec{x}, t)) \\ f_{i}^{-} (\vec{x} + \vec{c}_i \delta_t, t + \delta_t) - f_{i}^{-} (\vec{x}, t) = -\frac{1}{\tau^{-}} (f_{i}^{-} (\vec{x}, t) - f_{i}^{(eq)-} (\vec{x}, t)) \\ \end{cases}

where

fi+=12(fi+f−i),fi−=12(fi−f−i),fi(eq)+=12(fi(eq)+f−i(eq))=wiρ(1+(c⃗i⋅u⃗)22cs4−∣u⃗∣22cs2),fi(eq)−=12(fi(eq)−f−i(eq))=wiρc⃗i⋅u⃗cs2,\begin{aligned} f_{i}^{+} = \frac{1}{2} (f_i + f_{-i}) ,\quad f_{i}^{-} = \frac{1}{2} (f_i - f_{-i}) ,\\ f_{i}^{(eq)+} = \frac{1}{2} (f_i^{(eq)} + f_{-i}^{(eq)}) = w_i \rho (1 + \frac{(\vec{c}_i \cdot \vec{u})^2}{2 c_s^4} - \frac{|\vec{u}|^2}{2 c_s^2}) ,\\ f_{i}^{(eq)-} = \frac{1}{2} (f_i^{(eq)} - f_{-i}^{(eq)}) = w_i \rho \frac{\vec{c}_i \cdot \vec{u}}{c_s^2} ,\\ \end{aligned}

and the TRT magic number is: Λ=(τ+−12)(τ−−12)\Lambda = (\tau^{+} - \frac{1}{2}) (\tau^{-} - \frac{1}{2}).

Marson et al.[1] design the wall populations f~i∗(x⃗w)\tilde{f}_{i}^{*}(\vec{x}_w) and f~i(x⃗w,t+δt)\tilde{f}_{i}(\vec{x}_w, t+\delta_t).【Ω\Omega is the collision operator.】

f~i∗(x⃗w,t)=deff~i(eq)(x⃗w,t)+(1−Ω)f~i(neq)(x⃗w,t)f~i(x⃗w,t+δt)=deff~i(eq)(x⃗w,t+δt)+f~i(neq)(x⃗w,t+δt)\begin{aligned} \tilde{f}_{i}^{*}(\vec{x}_w, t) \overset{\text{def}}{=}& \tilde{f}_{i}^{(eq)}(\vec{x}_w, t) + (1 - \Omega) \tilde{f}_{i}^{(neq)}(\vec{x}_w, t) \\ \tilde{f}_{i}(\vec{x}_w, t+\delta_t) \overset{\text{def}}{=}& \tilde{f}_{i}^{(eq)}(\vec{x}_w, t+\delta_t) + \tilde{f}_{i}^{(neq)}(\vec{x}_w, t+\delta_t) \end{aligned}

Consider f~i(x⃗w,t+δt)\tilde{f}_{i}(\vec{x}_w, t+\delta_t), its equilibrium part is approximated by

f~i(eq)(x⃗w,t+δt)≈fi(eq)+(ρ(x⃗F,t),u⃗(x⃗{w,F},t+δt))+fi(eq)−(ρ(x⃗F,t),u⃗(x⃗w,t+δt)) \tilde{f}_{i}^{(eq)} (\vec{x}_w, t+\delta_t) \approx f_{i}^{(eq)+} (\rho(\vec{x}_F, t), \vec{u}(\vec{x}_{\{w, F\}}, t+\delta_t)) + f_{i}^{(eq)-} (\rho(\vec{x}_F, t), \vec{u}(\vec{x}_{w}, t+\delta_t))

Here, x⃗{w,F}\vec{x}_{\{w, F\}} means use x⃗w\vec{x}_{w} or x⃗F\vec{x}_F as the position.

The non-equilibrium part is approximated by an nonequilibrium bounce-back. This is a first-order approximation of the nonequilibrium bounce-back method of Zou and He, and it leads to the following second-order accurate approximation:

f~i(neq)(x⃗w,t+δt)=f~i(neq)(x⃗F,t)\tilde{f}_{i}^{(neq)}(\vec{x}_w, t+\delta_t) = \tilde{f}_{i}^{(neq)}(\vec{x}_F, t)

For the f~i∗(x⃗w,t)\tilde{f}_{i}^{*}(\vec{x}_w, t) , we have

f~i(eq)(x⃗w,t)≈fi(eq)+(ρ(x⃗F,t),u⃗(x⃗{w,F},t))+fi(eq)−(ρ(x⃗F,t),u⃗(x⃗w,t)) \tilde{f}_{i}^{(eq)} (\vec{x}_w, t) \approx f_{i}^{(eq)+} (\rho(\vec{x}_F, t), \vec{u}(\vec{x}_{\{w, F\}}, t)) + f_{i}^{(eq)-} (\rho(\vec{x}_F, t), \vec{u}(\vec{x}_{w}, t))

The non-equilibrium term is also split into symmetric and anti-symmetric parts: f~i(neq)(x⃗w,t)=fi(neq)+(x⃗w,t)+fi(neq)−(x⃗w,t)\tilde{f}_{i}^{(neq)}(\vec{x}_w, t) = f_{i}^{(neq)+}(\vec{x}_w, t) + f_{i}^{(neq)-}(\vec{x}_w, t). Marson et al.[1] gives three ways to approximate the non-equilibrium term.

(1) Non-symmetric enhanced local interpolation (Denoted as N):

fi(neq)+(x⃗w,t)≈fi(neq)+(x⃗F,t),fi(neq)−(x⃗w,t)≈−fi(neq)−(x⃗F,t)f_{i}^{(neq)+}(\vec{x}_w, t) \approx f_{i}^{(neq)+}(\vec{x}_F, t) ,\quad f_{i}^{(neq)-}(\vec{x}_w, t) \approx -f_{i}^{(neq)-}(\vec{x}_F, t)

(2) Symmetric enhanced local interpolation (Denoted as S):

fi(neq)+(x⃗w,t)≈fi(neq)+(x⃗F,t),fi(neq)−(x⃗w,t)≈fi(neq)−(x⃗F,t)f_{i}^{(neq)+}(\vec{x}_w, t) \approx f_{i}^{(neq)+}(\vec{x}_F, t) ,\quad f_{i}^{(neq)-}(\vec{x}_w, t) \approx f_{i}^{(neq)-}(\vec{x}_F, t)

(3) Central enhanced local interpolation (Denoted as C):

fi(neq)+(x⃗w,t)≈fi(neq)+(x⃗F,t),fi(neq)−(x⃗w,t)=0f_{i}^{(neq)+}(\vec{x}_w, t) \approx f_{i}^{(neq)+}(\vec{x}_F, t) ,\quad f_{i}^{(neq)-}(\vec{x}_w, t) = 0

The following table shows the interpolation coefficients provided by Marson et al. [1]. It should be noted that K−K^{-} is the term used to eliminate viscosity errors in steady-state conditions. In practice, τ+→12\tau^{+} \rightarrow \frac{1}{2} at high Reynolds numbers, making the contribution of K−fi(neq)−(x⃗F)τ−K^{-} \frac{f_{i}^{(neq)-}(\vec{x}_F)}{\tau^{-}} less significant.

[NOTE]: The calculation of K−K^{-} could be found in Marson et al. [1].

References

[1] Marson, F., Thorimbert, Y., Chopard, B., Ginzburg, I. & Latt, J. Enhanced single-node lattice Boltzmann boundary condition for fluid flows. Phys. Rev. E 103, 053308 (2021).
[2] 郭照立 & 郑楚光. 格子Boltzmann方法的原理及应用. (科学出版社, 2009).
[3] Zhao, W., Huang, J. & Yong, W.-A. Boundary conditions for kinetic theory based models I: Lattice boltzmann models. Multiscale Modeling & Simulation 17, 854–872 (2019).
[4] Tao, S., He, Q., Chen, B., Yang, X. & Huang, S. One-point second-order curved boundary condition for lattice Boltzmann simulation of suspended particles. Computers & Mathematics with Applications 76, 1593–1607 (2018).

0%