这是自己的一份笔记,主要是和格子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_\alphacs2=RTc_s^2 = RT):

fαeq=ρWα×[1+ξαucs2+(ξαu)22cs4u22cs2].(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)2u22RT](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)2u22RT].(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)/2Im=ρπ(2RT)m/2Im\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ξ=ρπ[(1u22RT)(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,w1=π/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/2i[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/2Imi[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)2u22RT]}.\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)22cs4u22cs2].(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{(1u22RT)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,jucs2+(ξi,ju)22cs4u22cs2]}(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,kucs2+(ξi,j,ku)22cs4u22cs2]}(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+2n2)Δ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Δijkl(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)}_{ijkl} + \delta_{ik}\Delta^{(4)}_{jlpq} + \delta_{il}\Delta^{(4)}_{jkpq} + \delta_{ip}\Delta^{(4)}_{jklq} + \delta_{iq}\Delta^{(4)}_{jklp} \end{aligned}

并存在如下递归关系:

Δi1i2i2n(2n)=j=22nδi1,ijΔi2ij1ij+1i2n(2n2)\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 个元素的全排列,除以每对内部的顺序(2n2n),再除以 nn 对之间的顺序(n!n!)。

为了简洁表示 Δ(2n)\Delta^{(2n)} 的分量,文献 [2] 引入了 upper simplicial components,其索引是非递增的多重指标(如(i1,i2,,ik)(i_1,i_2,\dots,i_k),满足i1i2iki_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)=Ei1i2in(n),Δ(2n)=Δi1i2i2n(2n),δ(2n)=δi1i2i2n(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}\} 一系列下标组成的 Δi1i2i2n(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=(2n1)!!d(d+2)...(d+2n2)Q2nv2n\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)=Q2nv2nv\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)22cs4u22cs2].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、D3Q9 这些形式呢?

首先,正四边形最多能保证三阶格子张量是各向同性的,而到了四阶就变成了 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,根据格子张量的表格,我们有

α[14]eαi=0,α[14]eαieαj=2δijc2α[14]eαieαjeαk=0,α[14]eαieαjeαkeαl=2δijklc4\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,同理可得

α[58]eαi=0,α[58]eαieαj=2δij(2c)2α[58]eαieαjeαk=0,α[58]eαieαjeαkeαl=(4Δijkl(4)8δijkl(4))(2c)4\begin{aligned} \sum_{\alpha\in[5-8]} e_{\alpha i} &= 0 ,& \sum_{\alpha\in[5-8]} e_{\alpha i} e_{\alpha j} &= 2\delta_{ij} \cdot (\sqrt{2} 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 (\sqrt{2} c)^4\\ \end{aligned}

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

ρ(ω0+4ω1+4ω5)+ρu2[ω1(c2cs42cs2)+ω5(2c2cs42cs2)ω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(1u22cs2)+eαieαjeαkeαlukul2cs4]+ρω5α=58[eαieαj(1u22cs2)+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(c2cs42cs2)+ω2(2c2cs42cs2)ω02cs2=0\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

由式(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)=δiju2+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=u2\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=il=jl=j 的项保留,即 uiuju_i u_j
  • 第三项 δil\delta_{il} 要求 l=il=iδjk\delta_{jk} 要求 k=jk=j。因此只有 l=il=ik=jk=j 的项保留,即 uiuju_i u_j

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

(ω14ω5)c4cs4ρδijklukul+ρc2δij[(1u22cs2)(2ω1+4ω5)+2ω5u2c2cs4]+ρ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ω14ω5=0(1u22cs2)(2ω1+4ω5)+2ω5u2c2cs4=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)。此时阶数 nnMM 的对应关系为:

各向同性张量 E(n)E^{(n)} 正多边形边数 MM
E(2)E^{(2)} M>2M \gt 2
E(3)E^{(3)} M2,M3M \ge 2, M \neq 3
E(4)E^{(4)} M>2,M4M \gt 2, M \neq 4
E(5)E^{(5)} M2,M[3,5]M \ge 2, M \neq [3,5]
E(6)E^{(6)} M>4,M6M \gt 4, M \neq 6
E(7)E^{(7)} M2,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+ciucs2+(ciu)22cs4u22cs2].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 xb\vec{x}_b, then q=xwxF/xbxFq = |\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 q12q \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)+2q12q[fi(xFF,t+δt)fi(x+,t+δt)]=12qfiˉ(xF,t)+(112q)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)+(12q)[fiˉ(xFF,t)fiˉ(xF,t)]=2qfiˉ(xF,t)+(12q)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 xw\vec{x}_w is at the middle of x1\vec{x}_1 and x2\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 stepfiˉ(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:

xw=xF+qciˉ\vec{x}_w = \vec{x}_{F} + q \vec{c}_{\bar{i}}, x1=xF+lciˉ\vec{x}_1 = \vec{x}_{F} + l \vec{c}_{\bar{i}}, x2=2xwx1\vec{x}_2 = 2 \vec{x}_{w} - \vec{x}_1.

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

With x1\vec{x}_1 and xFF\vec{x}_{FF}, the interpolation of xF\vec{x}_{F} is:

fi(xF,t+δt)=l1+lfi(xFF,t+δt)+11+lfi(x1,t+δt)=l1+lfi(xF,t)LBM Streaming+11+lfi(x1,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(x1,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(x1,t+δt)=fiˉ(x2,t+δt)+2wiρ0ciu(xb,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(xb,t)\boldsymbol{u}(\vec{x}_b, t) is a known quantity.

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

fiˉ(x2,t+δt)=(1+l2q)fiˉ(xF,t+δt)+(2ql)fiˉ(xb,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 xF\vec{x}_F and xb\vec{x}_b, we have: fiˉ(xF,t)=fiˉ(xb,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 stepfiˉ(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(xF,t+δt)=1+l2q1+lfiˉ(xF,t)before collision+l1+lfi(xF,t)+2ql1+lfiˉ(xF,t)post collision terms+2wiρ0(1+l)cs2ciu(xb,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(xF,t+δt)=1q1+qfiˉ(xF,t)+q1+q[fi(xF,t)+fiˉ(xF,t)]+2wiρ0(1+q)cs2ciu(xb,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ˉ(xFF,t)f_{\bar{i}}^{*} (\vec{x}_{FF}, t) rather than replacing it with fiˉ(xF,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 xF\vec{x}_F, its unknown distribution function can be calculated by the following interpolation:

fi(xF,t+δt)=11+qfi(xw,t+δt)+q1+qfi(xFF,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 xF\vec{x}_F to xFF\vec{x}_{FF}, we have:

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

Second, the term fi(xw,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(xw,t+δt)=fi(eq)(xw,t+δt)+fi(neq)(xw,t+δt)=fi(eq)(xw,t+δt)+fi(neq)(xF,t+δt)=fi(eq)(xw,t+δt)+fiˉ(neq)(xF,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)(xF,t+δt)f_{i}^{(neq)}(\vec{x}_F, t + \delta_t) to fiˉ(neq)(xF,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)(xw,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)(xw,t+δt)=fi(eq)(u(xw,t+δt),ρ(xw,t+δt))fi(eq)(u(xw,t+δt),ρ(xF,t+δt))fi(eq)(u(xw,t+δt),ρ(xF,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(xF,t+δt)=q1+qfi(xF,t)+11+q{fi(eq)(u(xw,t+δt),ρ(xF,t))+fiˉ(neq)(xF,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(xFF,t+δt)f_{i}(\vec{x}_{FF}, t + \delta_t).
(3) The distribution function at the wall node xw\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(xF,t+δt)=a1fiˉ(xFF)+a2(xF+2f(eq)(xw))1+a3fi(xF)+a4f~i(xw,t+δt)2+a5f~i(xw)3Kfi(neq)(xF)τ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)(xw)=wiρciuw/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+ciδt,t+δt)fi+(x,t)=1τ+(fi+(x,t)fi(eq)+(x,t))fi(x+ciδ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+fi),fi=12(fifi),fi(eq)+=12(fi(eq)+fi(eq))=wiρ(1+(ciu)22cs4u22cs2),fi(eq)=12(fi(eq)fi(eq))=wiρciucs2,\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(xw)\tilde{f}_{i}^{*}(\vec{x}_w) and f~i(xw,t+δt)\tilde{f}_{i}(\vec{x}_w, t+\delta_t).【Ω\Omega is the collision operator.】

f~i(xw,t)=deff~i(eq)(xw,t)+(1Ω)f~i(neq)(xw,t)f~i(xw,t+δt)=deff~i(eq)(xw,t+δt)+f~i(neq)(xw,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(xw,t+δt)\tilde{f}_{i}(\vec{x}_w, t+\delta_t), its equilibrium part is approximated by

f~i(eq)(xw,t+δt)fi(eq)+(ρ(xF,t),u(x{w,F},t+δt))+fi(eq)(ρ(xF,t),u(xw,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 xw\vec{x}_{w} or xF\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)(xw,t+δt)=f~i(neq)(xF,t)\tilde{f}_{i}^{(neq)}(\vec{x}_w, t+\delta_t) = \tilde{f}_{i}^{(neq)}(\vec{x}_F, t)

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

f~i(eq)(xw,t)fi(eq)+(ρ(xF,t),u(x{w,F},t))+fi(eq)(ρ(xF,t),u(xw,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)(xw,t)=fi(neq)+(xw,t)+fi(neq)(xw,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)+(xw,t)fi(neq)+(xF,t),fi(neq)(xw,t)fi(neq)(xF,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)+(xw,t)fi(neq)+(xF,t),fi(neq)(xw,t)fi(neq)(xF,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)+(xw,t)fi(neq)+(xF,t),fi(neq)(xw,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 KK^{-} 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 Kfi(neq)(xF)τK^{-} \frac{f_{i}^{(neq)-}(\vec{x}_F)}{\tau^{-}} less significant.

[NOTE]: The calculation of KK^{-} 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).

[注] 本文同步发表在 知乎.

宇宙安全声明:
1.这份文档来自我的一份课程作业, 由于笔者水平有限, 所以在内容上写得会比较粗糙, 或者出现一些错误.如有错误, 敬请谅解并指正.
2. 后续可能随缘更新?【如果又有空去读什么其他文章的话?】

Boltzmann方程和格子Boltzmann方法

Boltzmann方程

Boltzmann方程源自气体动理论, 它通过建模粒子系统的概率分布函数, 描述其集体行为.速度分布函数 f(x,ξ,t)f\left( \mathbf{x},\mathbf{\xi},t \right) 的含义通常表示为:在 tt 时刻位于 x\mathbf{x} 位置的球体微元 dV=[x,x+dx]dV = [\mathbf{x}, \mathbf{x}+ d\mathbf{x}] 内, 粒子速度位于区间 [ξ,ξ+dξ][\mathbf{\xi},\mathbf{\xi} + d\mathbf{\xi}] 的分子数量为 f(x,ξ,t)dξdVf\left( \mathbf{x},\mathbf{\xi},t \right)d\mathbf{\xi}dV .Boltzmann方程可以视作是 f(x,ξ,t)f\left( \mathbf{x},\mathbf{\xi},t \right) 的雷诺输运方程, 即:

DfDt=ft+ξfx+afξ=Ω(1.1)\frac{\mathrm{D}f}{\mathrm{D}t} = \frac{\partial f}{\partial t} + \mathbf{\xi} \cdot \frac{\partial f}{\partial\mathbf{x}} + \mathbf{a} \cdot \frac{\partial f}{\partial\mathbf{\xi}} = \Omega \tag{1.1}

其中 ξ=xt\mathbf{\xi =}\frac{\partial\mathbf{x}}{\partial t} 为粒子速度, a=ξt=Fm\mathbf{a =}\frac{\partial\mathbf{\xi}}{\partial t}\mathbf{=}\frac{\mathbf{F}}{m} 为粒子的外力加速度, F\mathbf{F} 为粒子所受外力, mm 为粒子质量, Ω\Omega 为描述分子碰撞作用的项.分布函数 ff 的速度矩可导出不同宏观量, 即.

n=fdξ,ρ=mn,ρu=mfξdξ,ρE=mξ22fdξ\begin{aligned} n = \int f d\mathbf{\xi} ,&\qquad \rho = m \cdot n,\\ \rho\mathbf{u} = m\int {f \mathbf{\xi}} d\mathbf{\xi} ,&\qquad \rho E = m\int {\frac{\xi^{2}}{2} f} d\mathbf{\xi} \end{aligned}

nn 为分子数密度, ρ\rho 为流体密度, u\mathbf{u} 为流体速度, EE为总能的密度.

对分子的碰撞进行建模并非易事.为简化式(1.1)的计算, Bhatnagar等提出了BGK碰撞项.这一思路主张将复杂的碰撞视作当前状态 ff 向Maxwell平衡态分布 f(eq)f^{(eq)} 演化的过程, 即:

Ω=1τ0(ff(eq))\Omega = - \frac{1}{\tau_{0}}\left( f - f^{(eq)} \right)

其中 τ0\tau_{0} 为松弛时间.DD 维空间下的Maxwell平衡态分布表示为:

f(eq)=n(2πRgT)D2exp[(ξu)22RgT].(1.2)f^{(eq)} = \dfrac{n}{\left( 2\pi R_g T \right)^{\frac{D}{2}}}\exp\left\lbrack - \frac{\left( \mathbf{\xi} - \mathbf{u} \right)^{2}}{2R_g T} \right]. \tag{1.2}

RgR_g 为气体常数, TT 为温度.

在格子Boltzmann方法(Lattice Boltzmann Method, LBM)中, 使用的分布函数是密度分布函数 mfmf , 下文为方便起见会将密度分布函数记作 ff .密度分布函数的演化方程与式(1.1)一致, 其平衡态分布为:

f(eq)=ρ(2πRgT)D2exp[(ξu)22RgT].(1.3)f^{(eq)} = \frac{\rho}{\left( 2\pi R_g T \right)^{\frac{D}{2}}}\exp\left\lbrack - \frac{\left( \mathbf{\xi} - \mathbf{u} \right)^{2}}{2R_g T} \right]. \tag{1.3}

宏观量则表示为:

ρ=fdξ,j=ρu=fξdξ,ρE=ξ22fdξ.\rho = \int f d\mathbf{\xi},\quad \mathbf{j} = \rho\mathbf{u} = \int {f \mathbf{\xi}}d\mathbf{\xi} ,\quad \rho E = \int_{}^{}{\frac{\xi^{2}}{2}f}d\mathbf{\xi}.

格子Boltzmann方法

广义上说, LBM是离散Boltzmann方法(Discrete Boltzmann Method, DBM)的一种, 是式(1.1)的一种数值格式.本节介绍从式(1.1)到格子Boltzmann方程的离散思路, 推导中仅考虑外力加速度 a=F/m0\mathbf{a} =\mathbf{F}/ m \equiv 0 的情况.

对式(1.1)沿着特征线 ξ=x/t\mathbf{\xi} = \mathbf{x}/tΔt\Delta t 时间段内作积分, 略去 O(Δt2)O({\Delta t}^{2}) , 得

f(x+ξΔt,ξ,t+Δt)f(x,ξ,t)=1τ[f(x,ξ,t)f(eq)(x,ξ,t)](1.4)f( \mathbf{x} + \mathbf{\xi}\Delta t,\mathbf{\xi},t + \Delta t ) - f( \mathbf{x},\mathbf{\xi,}t) = -\frac{1}{\tau} \left\lbrack f(\mathbf{x},\mathbf{\xi},t) - f^{(eq)}(\mathbf{x},\mathbf{\xi},t) \right] \tag{1.4}

其中 τ=τ0/Δt\tau = \tau_{0}/\Delta t 为无量纲松弛时间.为了数值地计算这一连续方程, 需要将其在 ξ\mathbf{\xi} 的空间中进行离散, 并使其平衡态满足速度矩的约束, 即:

f(eq)(x,ξ,t)Ψ(ξ)dξ=iwiΨ(ξi)f(eq)(x,ξi,t)(1.5)\int f^{(eq)} \left( \mathbf{x},\mathbf{\xi}, t \right) \cdot \Psi\left( \mathbf{\xi} \right) d\mathbf{\xi} = \sum_{\mathbf{i}} {w_i\Psi\left( \mathbf{\xi}_i \right) f^{(eq)} \left( \mathbf{x},\mathbf{\xi}_i,t \right)} \tag{1.5}

这里 Ψ(ξ)\Psi\left( \mathbf{\xi} \right)ξ\mathbf{\xi} 的多项式, ξi\mathbf{\xi}_i 为离散速度, wiw_i 为积分的权系数.具体到Boltzmann方程中, 则至少应满足质量和动量守恒:

ρ=ifi=ifi(eq),j=ρu=iξifi=iξifi(eq)\rho = \sum_i f_i = \sum_i f_i^{(eq)},\qquad \mathbf{j} = \rho\mathbf{u} = \sum_i {\mathbf{\xi}_if_i} = \sum_i {\mathbf{\xi}_if_i^{(eq)}}

以及内能 ee 的方程:

ρe=12i(ξiu)2fi=12i(ξiu)2fi(eq)\rho e = \frac{1}{2}\sum_i^{}{\left( \mathbf{\xi}_i\mathbf{- u} \right)^{2}f_i} = \frac{1}{2}\sum_i^{}{\left( \mathbf{\xi}_i\mathbf{- u} \right)^{2}f_i^{(eq)}}

其中 fi=Wif(x,ξi,t)f_i = W_if\left( \mathbf{x},\mathbf{\xi}_i\mathbf{,}t \right)fi(eq)=Wif(eq)(x,ξi,t)f_i^{(eq)} = W_if^{(eq)}\left( \mathbf{x},\mathbf{\xi}_i\mathbf{,}t \right) .选定合适的离散速度集 {ci}(i=0,1,,b1)\{\mathbf{c}_i\}(i = 0,1,\ldots,b - 1) 及其对应的权重后, Boltzmann-BGK方程即可被数值计算.一般地, n 维空间下 b 速度的离散速度模型简称 DnQb 模型.

在低马赫数下, 平衡态可对 u\mathbf{u} 进行Taylor展开, 并截断至二阶:

f(eq)(x,ξ,t)=ρ(2πRgT)D2exp(ξ22RgT)exp(2(ξu)u22RgT)=ρexp(ξ22RgT)(2πRgT)D2[1+ξuRgT+(ξu)22(RgT)2u22RgT]+O(u3)(1.6)\begin{aligned} f^{(eq)}\left( \mathbf{x},\mathbf{\xi,}t \right) &= \frac{\rho}{\left( 2\pi R_g T \right)^{\frac{D}{2}}} \cdot \exp\left( - \frac{\mathbf{\xi}^{2}}{2R_g T} \right) \cdot \exp\left( \frac{2\left( \mathbf{\xi \cdot u} \right) - \mathbf{u}^{2}}{2R_g T} \right) \\ &= \frac{\rho\exp\left( - \frac{\mathbf{\xi}^{2}}{2R_g T} \right)}{\left( 2\pi R_g T \right)^{\frac{D}{2}}} \cdot \left[ 1 + \frac{\mathbf{\xi} \cdot \mathrm{u}}{R_g T} + \frac{\left( \mathbf{\xi \cdot u} \right)^{2}}{2 \left( R_g T \right)^{2}} - \frac{\mathbf{u}^{2}}{2R_g T} \right] + O\left( \mathbf{u}^{3} \right) \end{aligned} \tag{1.6}

因此, 当使用 截断的平衡态 计算 f(eq)Ψ(ξ)dξ\int {f^{(eq)} \cdot \Psi\left( \mathbf{\xi} \right)}d\mathbf{\xi} 时, 会导出形如 exp(x2)Ψ(x)dx\int {\exp\left( - x^{2} \right) \cdot \Psi(x)}dx 的积分, 它可以用高斯积分进行数值计算.根据上式的具体情况, 记

Im=+exp(ζ2)ζmdζI_{m} = \int_{- \infty}^{+ \infty}{\exp\left( - \zeta^{2} \right) \cdot \zeta^{m}} d\zeta

其中 ζ=ξ/2RgT\zeta = \xi/\sqrt{2 R_g T} .ImI_{m} 是权函数 exp(ζ2)\exp\left(-\zeta^{2}\right) 在某一实轴上的 mm 阶矩.

这里以D2Q9离散速度集为例介绍权重的计算, 其离散速度集为

cα={(0,0),α=0c(cosπ(α1)2,sinπ(α1)2),α=142c(cosπ(2α1)4,sinπ(2α1)4),α=58(1.7)\mathbf{c}_{\alpha} = \begin{cases} (0,0) & ,\alpha = 0 \\ c\left( \cos\frac{\pi(\alpha - 1)}{2},\sin\frac{\pi(\alpha - 1)}{2} \right) & ,\alpha = 1\ldots 4 \\ \sqrt{2}c\left( \cos\frac{\pi(2\alpha - 1)}{4},\sin\frac{\pi(2\alpha - 1)}{4} \right) & , \alpha = 5 \ldots 8 \\ \end{cases} \tag{1.7}

其中 c=Δx/Δtc = \Delta x/\Delta t .二维情况下的 Ψ\Psi 可定义为 Ψm,n(ξ)=ξxmξyn\Psi_{m,n}\left( \mathbf{\xi} \right) = \xi_{x}^{m}\xi_{y}^{n}, 则式(1.6)被展开为[1]

I=f(eq)Ψm,n(ξ)dξ=ρπ(2RgT)m+n2[(1u22RgT)ImIn+22RgT(uxIm+1In+uyImIn+1) +1RgT(ux2Im+2In+2uxuyIm+1In+1+uy2ImIn+2)](1.8)\begin{aligned} I & = \int f^{(eq)} \cdot \Psi_{m,n} \left( \mathbf{\xi} \right) d\mathbf{\xi} \\ &= \frac{\rho}{\pi} \left( 2 R_g T \right)^{\frac{m + n}{2}} \left[ \left( 1 - \frac{u^{2}}{2R_{g}T} \right)I_{m}I_{n} \right. \\ & + \frac{2}{\sqrt{2R_{g}T}}\left( u_{x}I_{m + 1}I_{n} + u_{y}I_{m}I_{n + 1} \right) \\ & \left. \ + \frac{1}{R_{g}T}\left( u_{x}^{2}I_{m + 2}I_{n} + 2u_{x}u_{y}I_{m + 1}I_{n + 1} + u_{y}^{2}I_{m}I_{n + 2} \right) \right] \end{aligned} \tag{1.8}

对D2Q9模型, ImI_{m} 可被替换为三点Gauss-Hermite数值积分:

Im=+exp(ζ2)ζmdζ=α=13ωαζαmI_{m} = \int_{- \infty}^{+ \infty}{\exp\left( - \zeta^{2} \right) \cdot \zeta^{m}}d\zeta = \sum_{\alpha = 1}^{3}{\omega_{\alpha}\zeta_{\alpha}^{m}}

[NOTE]
积分点 ζi\zeta_i 是Hermite多项式 H3(x)=8x312xH_{3}(x) = 8x^{3} - 12x 的零点, 对应权重 ωi=2313!H2(ζi)232π\omega_i = \frac{2^{3 - 1} \cdot 3!}{H_{2}\left( \zeta_i \right)^{2} \cdot 3^{2}} \cdot \sqrt{\pi}.
所以积分点和权重为:ζ1=3/2,w1=π/6\zeta_{1} = - \sqrt{3/2},w_{1} = \sqrt{\pi}/6ζ2=0,w2=2π/3\zeta_{2} = 0,w_{2} = 2\sqrt{\pi}/3ζ3=3/2,ω3=π/6\zeta_{3} = \sqrt{3/2},\omega_{3} = \sqrt{\pi}/6.

则式(1.8)可被数值离散为 [1:1]

I=ρi,j=13Ψ(ξi,j)ωiωjπ[1+ξi,juRgT+(ξi,ju)22(RgT)2u22RgT](1.9)I = \rho\sum_{i,j = 1}^{3} \Psi(\mathbf{\xi}_{i,j}) \cdot \frac{\omega_i \omega_j}{\pi} \cdot \left[ 1 + \frac{\mathbf{\xi}_{i,j} \cdot \mathbf{u}}{R_g T} + \frac{\left( \mathbf{\xi}_{i,j} \cdot \mathbf{u} \right)^{2}}{2 (R_g T)^{2}} - \frac{\mathbf{u}^{2}}{2 R_g T} \right] \tag{1.9}

此处 ξi,j=(ξi,ξj)=2RgT(ζi,ζj)\mathbf{\xi}_{i,j}\mathbf{=}\left( \xi_i\mathbf{,}\xi_{j} \right)\mathbf{=}\sqrt{2R_g T}\left( \zeta_i\mathbf{,}\zeta_{j} \right) .也就是说, 若令 RgT=cs2=c2/3R_g T = c_{s}^{2} = c^{2}/3 , 则 ξi,j\mathbf{\xi}_{i,j} 便对应D2Q9模型的 cα\mathbf{c}_{\alpha} .根据式(1.9), cα\mathbf{c}_{\alpha} 方向的平衡态分布 fα(eq)f_{\alpha}^{(eq)} 定义为

fα(eq)=ρwα[1+cαucs2+(cαu)22cs4u22cs2](1.10)f_{\alpha}^{(eq)} = \rho w_{\alpha} \cdot \left\lbrack 1 + \frac{\mathbf{c}_{\alpha} \cdot \mathbf{u}}{c_{s}^{2}} + \frac{\left( \mathbf{c}_{\alpha} \cdot \mathbf{u} \right)^{2}}{2c_{s}^{4}} - \frac{\mathbf{u}^{2}}{2c_{s}^{2}} \right\rbrack \tag{1.10}

其中

wα={4/9,i=j=2,α=01/9,(i=2)(j=2),α=1,,41/36,(i2)(j2),α=5,,8w_{\alpha} = \begin{cases} 4/9 ,& i = j = 2 ,& \alpha = 0 \\ 1/9 ,& (i = 2)\bigoplus(j = 2) ,& \alpha = 1, \ldots, 4 \\ 1/36 ,& (i \neq 2)\bigwedge(j \neq 2) ,& \alpha = 5, \ldots, 8 \\ \end{cases}

Qian等[2]已给出常用的DnQb模型参数, 大量学者也给出了其他离散速度模型的推导方式 [1:2][3][4].

在前文中, RgTR_g T 为常数一直是LBGK方程的推导前提, 这使得LBGK模型的最佳适用范围被限制在等温流动或无温流动.LBGK在模拟不可压缩流体时, 格子系统的马赫数应小于 0.15 [5].而LBGK框架虽然可通过部分手段实现亚音速[6]和高雷诺数[7]的模拟, 但仍旧无法直接解决热流问题.

就目前来说, 热流体的LBM模拟可以分为多速LBE模型 [8] [9] [10] [11] [12] [13] [14] 、双分布函数LBE模型 [15] [16] [17] [18] 、基于简化LBM的实现[19]、热流格子Boltzmann通量求解器[20]、多松弛模型[21] [22] [23] 以及与其他数值方法结合的混合模型等多种形式 [24] .

多速LBE模型

多速LBE模型(即Multi-Speed LBE)是一种完全基于LBM经典算法的改进.这类方法演化方程与常规LBM一致, 在保持算法不变的基础上通过使用比常规LBM更为复杂的离散速度模型还原高阶速度矩.它因只使用单一分布函数,物理描述上更接近事实而受到了广泛关注.并且使用更多的离散速度达到高阶精度的思路亦已经被广泛拓展到各种各样的LBM模拟中. 虽然Qian[11:1]和Alexander等[12:1]才是早期的提出者, 但本章首先以Chen等 [8:1] 的高阶MS-LBGK模型的二维形式为例引入多速LBM的概念, 随后介绍几种不同思路下的MS-LBM改进形式.

高阶MS-LBGK模型

Chen等 [8:2] 提出的多速LBM的平衡态分布函数定义为

fσi(eq)=Aσ+Bσ(cσiu)+Cσu2+Dσ(cσiu)2+Eσu2(cσiu)+Fσ(cσiu)3+Gσu2(cσiu)2+Hσu4(2.1)\begin{aligned} f_{\sigma i}^{(eq)} = & A_{\sigma} + B_{\sigma} \cdot \left( \mathbf{c}_{\sigma i} \cdot \mathbf{u} \right) + C_{\sigma}\left\| \mathbf{u} \right\|^{2} + D_{\sigma} \cdot \left( \mathbf{c}_{\sigma i} \cdot \mathbf{u} \right)^{2} \\ & + E_{\sigma}\left\| \mathbf{u} \right\|^{2} \cdot \left( \mathbf{c}_{\sigma i} \cdot \mathbf{u} \right) + F_{\sigma} \cdot \left( \mathbf{c}_{\sigma i} \cdot \mathbf{u} \right)^{3} \\ & + G_{\sigma}\left\| \mathbf{u} \right\|^{2} \cdot \left( \mathbf{c}_{\sigma i} \cdot \mathbf{u} \right)^{2} + H_{\sigma}\left\| \mathbf{u} \right\|^{4} \\ \end{aligned} \tag{2.1}

其中 AσA_{\sigma}HσH_{\sigma} 均为待定参数, 它们均可被表示为内能 ee 和密度 ρ\rho 的复合函数, 即 Xσ=(xσ0+xσ1e+xσ2e2)ρX_{\sigma} = \left( x_{\sigma 0} + x_{\sigma 1}e + x_{\sigma 2}e^{2} \right)\rho .并且 fσi(eq)f_{\sigma i}^{(eq)} 的各阶速度矩需要满足下列约束条件:

σifσi(eq)=ρ,σicσifσi(eq)=ρu,σicσicσifσi(eq)=ρuu+pI\sum_{\sigma i} f_{\sigma i}^{(eq)} = \rho, \qquad \sum_{\sigma i} {\mathbf{c}_{\sigma i}f_{\sigma i}^{(eq)}} = \rho\mathbf{u}, \qquad \sum_{\sigma i} {\mathbf{c}_{\sigma i}\mathbf{c}_{\sigma i}f_{\sigma i}^{(eq)}} = \rho\mathbf{uu} + p\mathbf{I}

σicσicσicσifσi(eq)=ρuuu+p [uδ]\sum_{\sigma i} {\mathbf{c}_{\sigma i}\mathbf{c}_{\sigma i}\mathbf{c}_{\sigma i}f_{\sigma i}^{(eq)}} = \rho\mathbf{uuu} + p\ [\mathbf{u \delta} ]

σicσicσicσi2fσi(eq)=ρu2uu+p(D+4)uu+pu2I+2(D+2)peD\sum_{\sigma i} {\mathbf{c}_{\sigma i}\mathbf{c}_{\sigma i} \vert{c_{\sigma i}}\vert ^{2}f_{\sigma i}^{(eq)}} = \rho |u|^{2} \mathbf{uu}\mathbf{+}p(D + 4)\mathbf{uu}\mathbf{+}p|u|^{2}\mathbf{I}\mathbf{+}\frac{2(D + 2)pe}{D}

其中压强 p=2ρeDp = \frac{2\rho e}{D} , 三阶张量 [uδ]= uαδβγ+uβδαγ+uγδαβ\left\lbrack \mathbf{u\delta} \right\rbrack = \ u_{\alpha}\delta_{\beta\gamma} + u_{\beta}\delta_{\alpha\gamma} + u_{\gamma}\delta_{\alpha\beta} .

为满足这五个守恒方程的约束, 张量 icσicσi...cσin\displaystyle \sum_i \overset{n\text{个}}{\overbrace{\mathbf{c}_{\sigma i}\mathbf{c}_{\sigma i}...\mathbf{c}_{\sigma i}}}\qquad 需要在 0~6 阶均为各向同性.因此Chen等 [8:3] 使用的离散速度集表示为

cσi=cpki=Perm{k(±1,,±1p,0,...,0Dp)}\mathbf{c}_{\sigma i} = \mathbf{c}_{pki}^{'} = \mathbf{Perm}\left\{ k\left( \underbrace{\pm 1,\ldots, \pm 1}_{p} , \overset{D - p}{\overbrace{0,...,0}} \right) \right\}

这里 Perm\mathbf{Perm} 是由 ()(*) 的所有排列构成的集合, kk 为格子的缩放系数, 且 σ=cσi2=k2p\sigma = c_{\sigma i}^{2} = k^{2}p. 因此, 高阶MS-LBGK模型的运动粘度为 μ=2ρeD(τ12)\mu = \frac{2\rho e}{D}\left( \tau - \frac{1}{2} \right) , 体积粘度 λ=2μD\lambda = - \frac{2\mu}{D} , 热扩散系数 κ=(D+2)ρeD(τ12)\kappa = \frac{(D + 2)\rho e}{D}\left( \tau - \frac{1}{2} \right) .对于气体常数为 $R_g $ 的单原子分子, 定压和定容比热容分别为 cp=(D+2)Rg/2c_{p} = (D + 2)R_g /2cv=DRg/2c_{v} = D R_g /2 .由于无量纲格子系统中 Rg=1R_g = 1 , 该模型的Prandtl数为 Pr=μcp/κ=1Pr = \mu c_{p}/\kappa = 1 .这也是MS-LBGK模型这类建模方式的常见问题.

目前, 学界已有数类方式在多速LBE模型中实现对Prandtl数的自由调节, 如:双松弛时间方法[9:1];引入熵格式[10:1] [13:1] [14:1] ;修改网格速度的定义 [3:1] [25] [26] 等.由于已有文献指出若不局限于常规晶格模型则可获得更高精度的离散格式, 并且大多数方法都涉及对DnQb模型的修改, 因此这里仅简要介绍前两种方式的实现思路.

对多速LBE模型的改进

基于双松弛时间的实现

基于双松弛时间的方法将碰撞分为由 fif_ifif_{-i} 控制的两个部分, 并分别进行松弛.以Chen等[9:2]提出的双松弛模型为例, 其演化方程为(不考虑外力项):

fi(x+ciΔt,t+Δt)fi(x,t)=Ωi+Ωi(2.2)f_i\left( \mathbf{x} + \mathbf{c}_i\Delta t,t + \Delta t \right) - f_i\left( \mathbf{x},t \right) = \Omega_i + \Omega_{\mathbb{i}} \tag{2.2}

其中

Ωi=1τ1(fifi(eq)),Ωi=1τ2(fifi(eq))\Omega_i = - \frac{1}{\tau_{1}}\left( f_i - f_i^{(eq)} \right),\qquad \Omega_{\mathbb{i}} = - \frac{1}{\tau_{2}}\left( f_{- i} - f_{- i}^{(eq)} \right)

下标 i-i 表示 ci=ci\mathbf{c}_{- i} = - \mathbf{c}_i 方向.τv=τ1τ2/(τ1+τ2)\tau_{v} = \tau_{1}\tau_{2}/(\tau_{1} + \tau_{2}) , τk=τ1τ2/(τ2τ1)\tau_{k} = \tau_{1}\tau_{2}/(\tau_{2} - \tau_{1}) .Chen等[9:3]指出其导出的宏观方程组为

DρDt=ρu(ρu)t+(ρuu)=p+Tv(ρe)t+(ρeu)=pu+(κT)+Tk:u\begin{aligned} \frac{D\rho}{Dt} &= \rho\nabla \cdot \mathbf{u} \\ \frac{\partial\left( \rho\mathbf{u} \right)}{\partial t} + \nabla \cdot \left( \rho\mathbf{uu} \right) &= - \nabla p + \nabla \cdot \mathbf{T}_{v} \\ \frac{\partial(\rho e)}{\partial t} + \nabla \cdot \left( \rho e\mathbf{u} \right) &= p\nabla \cdot \mathbf{u} + \nabla \cdot (\kappa\nabla T) + \mathbf{T}_{k}:\nabla\mathbf{u} \end{aligned}

其中

Tv=2μvS+λv(u)I,Tk=2μkS+λk(u)I\mathbf{T}_{v} = 2\mu_{v}\mathbf{S} + \lambda_{v}\left( \nabla \cdot \mathbf{u} \right)\mathbf{I},\mathbf{\qquad }\mathbf{T}_{k} = 2\mu_{k}\mathbf{S} + \lambda_{k}\left( \nabla \cdot \mathbf{u} \right)\mathbf{I}

S\mathbf{S} 为应变率张量.各输运系数为

μv=2Dρe(τv12),λv=4D2ρe(τv12)μk=2Dρe(τk12),λk=4D2ρe(τk12)\begin{aligned} \mu_{v} = \frac{2}{D}\rho e\left( \tau_{v} - \frac{1}{2} \right),& \lambda_{v} = \frac{- 4}{D^{2}}\rho e\left( \tau_{v} - \frac{1}{2} \right) \\ \mu_{k} = \frac{2}{D}\rho e\left( \tau_{k} - \frac{1}{2} \right),& \lambda_{k} = \frac{- 4}{D^{2}}\rho e\left( \tau_{k} - \frac{1}{2} \right) \end{aligned}

温度 T=De/2T = De/2 , 热传导系数 κ=ρe(D+2)(τk1/2)/D\kappa = \rho e(D + 2)\left( \tau_{k} - 1/2 \right)/D. 综上所述, 该模型的Prandtl数为

Pr=μvcpκ=2τv12τk1Pr = \frac{\mu_{v}c_{p}}{\kappa} = \frac{2\tau_{v} - 1}{2\tau_{k} - 1}

这种方法通过使用两个松弛时间 τ1,τ2\tau_{1},\tau_{2} 分别对动量和能量方程进行松弛(τ1,τ2>12\tau_{1},\tau_{2} > \frac{1}{2}), 缓解LBGK单个松弛时间的参数依赖性.但由于能量方程的粘性应力项 TkTv\mathbf{T}_{k} \neq \mathbf{T}_{v} , 因而其能量方程是与动量方程存在冲突的.

基于熵函数的实现

熵格子Boltzmann方程(Entropic Lattice Boltzmann Equation, ELBE)是另一种基于传统LBE的修改.这里以单松弛的ELBE为例, 它将LBE的演化方程修改为

fi(x+ciΔt,t+Δt)fi(x,t)=αβ(fifi(eq))(2.3)f_i\left( \mathbf{x} + \mathbf{c}_i\Delta t,t + \Delta t \right) - f_i\left( \mathbf{x},t \right) = - \alpha\beta\left( f_i - f_i^{(eq)} \right) \tag{2.3}

其中 β=1/(1+2ν/cs2)\beta = 1/(1 + 2\nu/c_{s}^{2}) , ν\nu 为运动粘度.α\alpha 为方程 H(f+α(ff(eq)))=H(f)H\left( f + \alpha\left( f - f^{(eq)} \right) \right) = H(f) 的解, 熵函数 HH 定义为[27]

H=ifiln(fiwi)(2.4)H = \sum_i^{}{f_i\ln\left( \frac{f_i}{w_i} \right)} \tag{2.4}

α\alpha 的解可通过迭代法或近似公式计算[28].由于部分常规DnQb模型在使用 f(eq)f^{(eq)} 的低阶展开(如式(1.10))时无法满足熵方程[29], 因此该方法通常需要对DnQb模型进行修改, 或搭配多速DnQb模型一同使用.

Pransianakis等[10:2] [14:2] 在ELBE的总体框架上, 将碰撞项视为从 fif_i 到中间态 fif_i^{*} 再到平衡态 fi(eq)f_i^{(eq)} 的两步松弛, 即:

1τ1(fifi)1τ2(fifi(eq))\frac{-1}{\tau_{1}}\left( f_i - f_i^{*} \right) - \frac{1}{\tau_{2}}\left( f_i^{*} - f_i^{(eq)} \right)

中间态 fif_i^{*} 是平衡态的扰动, 即:fi=fi(eq)+δfif_i^{*} = f_i^{(eq)} + \delta f_i^{*}.校正量δfi\delta f_i^{*} 的计算可基于 “中间态的热通量不变” 假设构造 δfi\delta f_i^{*} 的方程组进行求解[10:3]. 松弛时间为 τ1=μ/ρT0\tau_{1} = \mu/\rho T_0τ2=2κ/ρT0\tau_{2} = 2\kappa/\rho T_0 , 分别控制应力张量和热流量的松弛, T0T_0 是格子系统中的参考温度.因此, Prandtl数为 Pr=4τ1/τ2\Pr = 4\tau_{1}/\tau_{2} .

[NOTE]
需要强调的是, 在Pransianakis等[10:4]在文中使用的D2Q9模型里, 虽然特征速度方向与式(1.7)一致, 但各个ci\mathbf{c}_i的权重 WiW_i 是温度TT的函数, 即: Wi=(1T2)T2(1T)ci2\displaystyle W_i = \frac{\left( 1 - T^{2} \right)T}{2(1 - T)}c_i^{2}

而平衡态分布写作: fi(eq)=ρWi{1+cijρT+jjT2(ρT)2:[ciciT4T2+ci2(13T)2(1T)I]}\displaystyle f_i^{(eq)} = \rho W_i\left\{ 1 + \frac{\mathbf{c}_i \cdot \mathbf{j}}{\rho T} + \frac{\mathbf{j}\mathbf{j}^{T}}{2(\rho T)^{2}}:\left\lbrack \mathbf{c}_i\mathbf{c}_i^{T} - \frac{4T^{2} + c_i^{2}(1 - 3T)}{2(1 - T)}\mathbf{I} \right\rbrack \right\}

Frapolli等[13:2]提出了将多速LBE模型与熵LBE框架进行结合的思路.以D2Q25-ZOT模型为例, 其演化方程为:

fi(x+ciΔt,t+Δt)fi(x,t)=ω1(fifi)+ω2(fifi(eq))(2.5)f_i\left( \mathbf{x} + \mathbf{c}_i\Delta t,t + \Delta t \right) - f_i\left( \mathbf{x},t \right) = \omega_{1}\left( f_i - f_i^{*} \right) + \omega_{2}\left( f_i^{*} - f_i^{(eq)} \right) \tag{2.5}

在不考虑ELBE的校正时, 动力粘度 μ\mu 和热扩散系数 κ\kappa 的表达式为:

μ={(1ω112)ρT,Pr1(1ω212)ρT,Pr1,κ={(1ω212)ρTcp,Pr1(1ω112)ρTcp,Pr1\mu = \begin{cases} \left( \frac{1}{\omega_{1}} - \frac{1}{2} \right)\rho T,& \Pr \leq 1 \\ \left( \frac{1}{\omega_{2}} - \frac{1}{2} \right)\rho T,& \Pr \geq 1 \end{cases}, \qquad \kappa = \begin{cases} \left( \frac{1}{\omega_{2}} - \frac{1}{2} \right)\rho Tc_{p},& \Pr \leq 1 \\ \left( \frac{1}{\omega_{1}} - \frac{1}{2} \right)\rho Tc_{p},& \Pr \geq 1 \end{cases}

Frapolli等[13:3]认为, 上述计算中仅需要对涉及 μ\mu 的部分进行校正.当 Pr<1\Pr < 1 时, ω1=αβ1,ω2=β2\omega_{1} = \alpha\beta_{1},\omega_{2} = \beta_{2} ;当 Pr>1\Pr > 1 时, ω1=β1,ω2=αβ2\omega_{1} = \beta_{1},\omega_{2} = \alpha\beta_{2} . α\alpha 仍为方程 H(f+α(ff(eq)))=H(f)H\left( f + \alpha\left( f - f^{(eq)} \right) \right) = H(f) 的解.因此, μ\muκ\kappa 的计算变为:

μ={12(1β11)ρT,Pr112(1β21)ρT,Pr1,κ={(1β212)ρT,Pr1(1β112)ρT,Pr1 .\mu = \left\{ \begin{matrix} \frac{1}{2}\left( \frac{1}{\beta_{1}} - 1 \right)\rho T,\qquad \Pr \leq 1 \\ \frac{1}{2}\left( \frac{1}{\beta_{2}} - 1 \right)\rho T,\qquad \Pr \geq 1 \\ \end{matrix} \right., \qquad \kappa = \left\{ \begin{matrix} \left( \frac{1}{\beta_{2}} - \frac{1}{2} \right)\rho T,\qquad \Pr \leq 1 \\ \left( \frac{1}{\beta_{1}} - \frac{1}{2} \right)\rho T,\qquad \Pr \geq 1 \\ \end{matrix} \right.\ .

[NOTE]
Pr=1\Pr = 1 时模型退化为LBGK方程, 这里不做讨论.

上述所介绍的基于ELBE的热流模拟能够成功还原Fourier-Navier-Stokes方程组, 实现低马赫数下各种热流的数值模拟, 但也没有实现热流和流场的耦合.此外, 由于 HH 函数的引入, 这类方法需要额外求解 H(f+α(ff(eq)))=H(f)H\left( f + \alpha\left( f - f^{(eq)} \right) \right) = H(f) , 在数值计算上导致一定不便.

双分布函数LBE模型

双分布函数(double distribution function, DDF)的LBE模型的主要思路是将速度场和温度场分别用两套LBE进行计算.DDF-LBE下的热流分为两类:其一是将温度视作被动标量, 这要求温度变化对流动的影响较小;另一类考虑的温度对流场的影响(如可压缩热流).

不考虑黏性热耗散和压缩功的DDF-LBE

基本框架

Bartoloni等 [15:1] 指出:在压力做功和黏性热耗散项均可被忽略的场景中, 可将流场和温度场分别采用两套分布函数体系进行对流扩散.一般来说, 无源项的DDF-LBE演化方程组为:

fi(x+ciΔt,t+Δt)fi(x,t)=1τ1(fifi(eq))(3.1)f_i\left( \mathbf{x} + \mathbf{c}_i\Delta t,t + \Delta t \right) - f_i\left( \mathbf{x},t \right) = - \frac{1}{\tau_{1}}\left( f_i - f_i^{(eq)} \right)\tag{3.1}

gi(x+ciΔt,t+Δt)gi(x,t)=1τ2(gigi(eq))(3.2)g_i\left( \mathbf{x} + \mathbf{c}_i\Delta t,t + \Delta t \right) - g_i\left( \mathbf{x},t \right) = - \frac{1}{\tau_{2}}\left( g_i - g_i^{(eq)} \right)\tag{3.2}

其中 fif_igig_i 分别用于计算速度和温度, 并通过如下速度矩还原宏观物理量

ρ=ifi,j=ρu=icifi,ρT=igi(3.3)\rho = \sum_i f_i, \qquad \mathbf{j} = \rho\mathbf{u} = \sum_i {\mathbf{c}_if_i}, \qquad \rho T = \sum_i g_i \tag{3.3}

需要强调的是, fif_igig_i 分别使用不同的DnQb模型, 因此它们的格子声速分别为 cs1c_{s1}cs2c_{s2} .两个松弛时间( τ1,τ2\tau_{1},\tau_{2} )和运动粘度 ν\nu 、热扩散系数 κ\kappa 的关系为:

τ1=νcs12+12,τ2=κcs22+12(3.4)\tau_{1} = \frac{\nu}{c_{s1}^{2}} + \frac{1}{2},\qquad \tau_{2} = \frac{\kappa}{c_{s2}^{2}} + \frac{1}{2} \tag{3.4}

这种思路仅额外添加了一组分布函数及其平衡态的定义, 并且由于其易于实现, 目前是低速小Mach数场景下热流的一种主流LBM计算方法.

含黏性热耗散和压缩功的DDF-LBE

前面介绍的DDF-LBE都是在忽略黏性热耗散和压缩功的前提下, 单独另开一个分布函数 gig_i 来计算温度 TT 这一标量的变化.虽然基于温度的建模方式足够简单, 但其应用场景限制较大.为更全面地计算低马赫数热流中流场和温度的相互作用, 学界已经提出了一些方案.

基于能量的DDF-LBE

既然可以为温度TT构建一套LBE, 那么为其他可以表示能量的宏观量(如内能 ρe\rho e [16:1] 、总能 ρE=ρe+ρu2/2\rho E = \rho e + \rho u^{2}/2 [17:1] 、总焓 h=e+p/ρh = e + p/\rho [18:1] )构建一套LBE也是可行的.通过模拟能量场的演化, 更准确地描述流场和温度场之间的作用.由于这套思路的建模方式总体上较为相似, 下面仅以基于总能ρE\rho E的DDF-LBE为例对这种思路进行介绍.

单位体积内的总能可以由分布函数的速度矩表示为

ρE=ρe+ρu22=ρcvT+ρu22=12ξ2fdξ(3.5)\rho E = \rho e + \frac{\rho u^{2}}{2} = \rho c_{v}T + \frac{\rho u^{2}}{2} = \int_{}^{}{\frac{1}{2}\xi^{2}f}d\mathbf{\xi} \tag{3.5}

因此可以将总能的分布函数定义为 h=12ξ2fh = \frac{1}{2}\xi^{2}f , 则 ρE=hdξ\rho E = \int h d\mathbf{\xi} .

根据 ff 的演化方程(即式(1.1)), 可得到 hh 的演化方程为

ht+ξf+aξhfξa=Ωh(3.6)\frac{\partial h}{\partial t} + \mathbf{\xi} \cdot \nabla f + a \cdot \nabla_{\mathbf{\xi}}h - f\mathbf{\xi \cdot a} = \Omega_{h} \tag{3.6}

其中 Ωh=12ξ2Ωf\Omega_{h} = \frac{1}{2}\xi^{2}\Omega_{f} 为总能的碰撞算子.Guo等 [17:2]Ωh\Omega_{h} 视作机械能和内能两部分作用的组合, 分别采用 τf\tau_{f}τh\tau_{h} 控制, Ωh\Omega_{h} 则表示为

Ωh=1τh(hh(eq))+Zτhf(ff(eq))(3.7)\Omega_{h} = - \frac{1}{\tau_{h}}\left( h - h^{(eq)} \right) + \frac{Z}{\tau_{hf}}\left( f - f^{(eq)} \right) \tag{3.7}

其中 Z=ξuu22Z = \mathbf{\xi \cdot u} - \frac{u^{2}}{2}, 1τhf=1τh1τf\frac{1}{\tau_{hf}} = \frac{1}{\tau_{h}} - \frac{1}{\tau_{f}}.

多原子分子气体的 ff 也受到分子转动和振动的影响, 因此其平衡态 f(eq)f^{(eq)} 为:

f~(eq)(x,ξ,η,t)=ρ(2πRgT)D+K2exp[(ξu)2+η22RgT](3.8){\widetilde{f}}^{(eq)}\left( \mathbf{x,\xi,}\mathbf{\eta},t \right) = \frac{\rho}{\left( 2\pi R_g T \right)^{\frac{D + K}{2}}} \cdot \exp\left\lbrack - \frac{\left( \mathbf{\xi} - \mathbf{u} \right)^{2} + \mathbf{\eta}^{2}}{2R_g T} \right\rbrack \tag{3.8}

其中 η\mathbf{\eta} 是一个含有K个元素的内部自由度矢量.引入 f=fdη\overline{f} = \int f d\mathbf{\eta}, h=ξ2+η22fdη \overline{h}\mathbf{=}\int \frac{\mathbf{\xi}^{2}\mathbf{+}\mathbf{\eta}^{2}}{2}f d\mathbf{\eta\ } , 则可得到一组新的输运方程:

ft+ξf+aξf=1τf(ff(eq)),(3.9)\frac{\partial\overline{f}}{\partial t} + \mathbf{\xi} \cdot \nabla\overline{f} + \mathbf{a} \cdot \nabla_{\mathbf{\xi}}\overline{f} = - \frac{1}{\tau_{f}}\left( \overline{f} - {\overline{f}}^{(eq)} \right), \tag{3.9}

ht+ξh+aξhfξa=1τh(hh(eq))+Zτhf(ff(eq)).(3.10)\frac{\partial\overline{h}}{\partial t} + \mathbf{\xi} \cdot \nabla\overline{h} + a \cdot \nabla_{\mathbf{\xi}}\overline{h} - \overline{f}\mathbf{\xi \cdot a} = - \frac{1}{\tau_{h}}\left( \overline{h} - {\overline{h}}^{(eq)} \right) + \frac{Z}{\tau_{hf}}\left( \overline{f} - {\overline{f}}^{(eq)} \right). \tag{3.10}

它们的平衡态分别为

f(eq)=f~(eq)dη=ρ(2πRgT)D2exp[(ξu)22RgT],(3.11){\overline{f}}^{(eq)} = \int_{}^{}{\widetilde{f}}^{(eq)}d\mathbf{\eta =}\frac{\rho}{\left( 2\pi R_g T \right)^{\frac{D}{2}}}\exp\left\lbrack - \frac{\left( \mathbf{\xi} - \mathbf{u} \right)^{2}}{2R_g T} \right\rbrack, \tag{3.11}

h(eq)=ξ2+η22f~(eq)dη=ρ(ξ2+KRgT)2(2πRgT)D2exp[(ξu)22RgT].(3.12){\overline{h}}^{(eq)} = \int_{}^{}{\frac{\mathbf{\xi}^{2}\mathbf{+}\mathbf{\eta}^{2}}{2}{\widetilde{f}}^{(eq)}}d\mathbf{\eta =}\frac{\rho\left( \mathbf{\xi}^{2} + KR_g T \right)}{2 \cdot \left( 2\pi R_g T \right)^{\frac{D}{2}}}\exp\left\lbrack - \frac{\left( \mathbf{\xi} - \mathbf{u} \right)^{2}}{2R_g T} \right\rbrack. \tag{3.12}

可以看到多原子分子的流场与单原子分子的区别主要体现在能量上, 而 f(eq){\overline{f}}^{(eq)} 与式(1.10)一致.流场宏观量表示为:

ρ=fdξ,j=ρu=ξfdξ,ρE=hdξ.\rho = \int \overline{f}d\mathbf{\xi},\qquad \mathbf{j} =\rho\mathbf{u} = \int {\mathbf{\xi}\overline{f}}d\mathbf{\xi},\qquad \rho E = \int \overline{h}d\mathbf{\xi}.

定容比热比 cvc_{v} 和定压比热比 cpc_{p} 与内部自由度K相关:

cv=D+K2Rg,cp=D+K+22Rg.c_{v} = \frac{D + K}{2}R_g ,\qquad c_{p} = \frac{D + K + 2}{2}R_g .

对单原子分子而言, η=0 \mathbf{\eta = 0\ }K=0K = 0.

式(3.9)和式(3.10)在$\mathbf{c}_i $方向上的方程为

fit+cifi=1τf(fifi(eq))+Fi,(3.13)\frac{\partial{\overline{f}}_i}{\partial t} + \mathbf{c}_i \cdot \nabla{\overline{f}}_i = - \frac{1}{\tau_{f}}\left( {\overline{f}}_i - {\overline{f}}_i^{(eq)} \right) + F_i, \tag{3.13}

hit+cihi=1τh(hihi(eq))+Ziτhf(fifi(eq))+qi.(3.14)\frac{\partial{\overline{h}}_i}{\partial t} + \mathbf{c}_i \cdot \nabla{\overline{h}}_i = - \frac{1}{\tau_{h}}\left( {\overline{h}}_i - {\overline{h}}_i^{(eq)} \right) + \frac{Z_i}{\tau_{hf}}\left( {\overline{f}}_i - {\overline{f}}_i^{(eq)} \right) + q_i. \tag{3.14}

其中 Zi=ciuu22Z_i = \mathbf{c}_i \mathbf{\cdot u} - \frac{u^{2}}{2} .将其采用二阶积分格式离散后可得:

fi(x+ciΔt,t+Δt)fi(x,t)=ωf(fifi(eq))+(1ωf2)FiΔt,(3.15){\overline{f}}_i\left( \mathbf{x} + \mathbf{c}_i\Delta t,t + \Delta t \right) - {\overline{f}}_i\left( \mathbf{x},t \right) = - \omega_{f}\left( {\overline{f}}_i - {\overline{f}}_i^{(eq)} \right) + \left( 1 - \frac{\omega_{f}}{2} \right)F_i\Delta t, \tag{3.15}

hi(x+ciΔt,t+Δt)hi(x,t)=Ωh(hihi(eq))+Ziτhf(fifi(eq))+qi.(3.16){\overline{h}}_i\left( \mathbf{x} + \mathbf{c}_i\Delta t,t + \Delta t \right) - {\overline{h}}_i\left( \mathbf{x},t \right) = - \Omega_{h}\left( {\overline{h}}_i - {\overline{h}}_i^{(eq)} \right) + \frac{Z_i}{\tau_{hf}}\left( {\overline{f}}_i - {\overline{f}}_i^{(eq)} \right) + q_i .\tag{3.16}

Guo等 [17:3] 将平衡态使用Hermite展开对 f(eq){\overline{f}}^{(eq)}h(eq){\overline{h}}^{(eq)} 进行离散, 从而使低阶速度矩不会因高阶项的舍去而产生影响.由于涉及局部温度 TT , 因此展开过程是基于参考温度 T0T_0 进行的.离散平衡态为:

fi(eq)=ρwi[1+ciuRgT0+12(ciuRgT0)2u22RgT0],(3.17)\overline{f}_i^{(eq)} = \rho w_i \left[ 1 + \frac{\mathbf{c}_i \mathbf{\cdot u}}{R_g T_0} + \frac{1}{2}\left( \frac{\mathbf{c}_i \mathbf{\cdot u}}{R_g T_0} \right)^{2} - \frac{u^{2}}{2R_g T_0} \right], \tag{3.17}

hi(eq)=p0wi[ciuRgT0+(ciuRgT0)2u2RgT0+12(ci2RgT0D)]+fi(eq)E.(3.18)\overline{h}_i^{(eq)} = p_0 w_i \left[ \frac{\mathbf{c}_i \cdot \mathbf{u}}{R_g T_0} + \left( \frac{\mathbf{c}_i \cdot \mathbf{u}}{R_g T_0} \right)^{2} - \frac{u^{2}}{R_g T_0} + \frac{1}{2}\left( \frac{\mathbf{c}_i ^{2}}{R_g T_0} - D \right) \right] + \overline{f}_i^{(eq)}E. \tag{3.18}

源项为:

Fi=ρwi[ciaRgT0+(ciu)(cia)(RgT0)2auRgT0],qi=(ρwiERgT0+fi)(cia).(3.19)F_i = \rho w_i\left[ \frac{\mathbf{c}_{\mathbf{i}}\mathbf{\cdot}\mathbf{a}}{R_g T_{0}} + \frac{\left( \mathbf{c}_{\mathbf{i}}\mathbf{\cdot u} \right)\left( \mathbf{c}_{\mathbf{i}}\mathbf{\cdot}\mathbf{a} \right)}{\left( R_g T_{0} \right)^{2}} - \frac{\mathbf{a}\mathbf{\cdot u}}{R_g T_{0}} \right],\, q_i = \left( \frac{\rho w_iE}{R_g T_{0}} + f_i \right)\left( \mathbf{c}_{\mathbf{i}}\mathbf{\cdot}\mathbf{a} \right). \tag{3.19}

各宏观量则为:

ρ=ifi,j=ρu=icifi,ρE=ihi.\rho = \sum_i^{}{\overline{f}}_i,\, \mathbf{j} = \rho\mathbf{u} = \sum_i^{}{\mathbf{c}_i{\overline{f}}_i},\, \rho E = \sum_i^{}{\overline{h}}_i.

运动粘度为μ=τfp0\mu = \tau_{f}p_{0}, 热扩散系数为 κ=cvτhp0=D+K2Rgτhp0\kappa = c_{v}\tau_{h}p_{0} = \frac{D + K}{2}R_g \tau_{h}p_{0} .因此该模型的Prandtl数为 Pr=μcp/κ=γτf/τh\Pr = \mu c_{p}/\kappa = \gamma\tau_{f}/\tau_{h} , 其中 γ\gamma 为比热比.

[NOTE]
对应的参考压强 p0=ρRgT0p_{0} = \rho R_g T_{0}.

耦合DDF-LBE

何雅玲团队在Guo等 [17:4] 的理论基础上, 提出了一种耦合的DDF-LBE[30], 实现了热流和流场的耦合模拟.这里主要介绍耦合DDF-LBE与基于总能的DDF-LBE的区别.

为简化讨论, 考虑无外力项耦合DDF-LBE在 ci\mathbf{c}_i 方向上的演化方程组:

fit+cifi=1τf(fifi(eq)),(3.20)\frac{\partial f_i}{\partial t} + \mathbf{c}_{\mathbf{i}} \cdot \nabla f_i = - \frac{1}{\tau_{f}}\left( f_i - f_i^{(eq)} \right),\tag{3.20}

hit+cihi=1τh(hihi(eq))+(ciu)τhf(fifi(eq)).(3.21)\frac{\partial h_i}{\partial t} + \mathbf{c}_{\mathbf{i}} \cdot \nabla h_i = - \frac{1}{\tau_{h}}\left( h_i - h_i^{(eq)} \right) + \frac{\left( \mathbf{c}_{\mathbf{i}}\mathbf{\cdot u} \right)}{\tau_{hf}}\left( f_i - f_i^{(eq)} \right).\tag{3.21}

式(3.21)中将Zi=ciuu22Z_i = \mathbf{c}_{\mathbf{i}}\mathbf{\cdot u} - \frac{u^{2}}{2}换为(ciu)\left( \mathbf{c}_{\mathbf{i}}\mathbf{\cdot u} \right)并不会影响Navier-Stokes方程中的能量表示. 式(3.20)和式(3.21)中的两个平衡态分布(fα(eq)f_{\alpha}^{(eq)}hα(eq)h_{\alpha}^{(eq)})可以用两类方式进行求解.第一种方式是将其写作式(3.22)和式(3.23)的截断形式:

fα(eq)=Ai+Bσ(cαu)+Cαu2+Dα(cαu)2+Eαu2(cαu)+Fα(cαu)3,(3.22)\begin{aligned} f_{\alpha}^{(eq)} = & A_i + B_{\sigma} \cdot \left( \mathbf{c}_{\alpha} \cdot \mathbf{u} \right) + C_{\alpha}\left\| \mathbf{u} \right\|^{2} + D_{\alpha} \cdot \left( \mathbf{c}_{\alpha} \cdot \mathbf{u} \right)^{2} \\ & + E_{\alpha}\left\| \mathbf{u} \right\|^{2} \cdot \left( \mathbf{c}_{\alpha} \cdot \mathbf{u} \right) + F_{\alpha} \cdot \left( \mathbf{c}_{\alpha} \cdot \mathbf{u} \right)^{3} \end{aligned}, \tag{3.22}

hα(eq)=Kα+Lα(cαu)+Mαu2+Nα(cαu)2.(3.23)h_{\alpha}^{(eq)} = K_{\alpha} + L_{\alpha} \cdot \left( \mathbf{c}_{\alpha} \cdot \mathbf{u} \right) + M_{\alpha}\left\| \mathbf{u} \right\|^{2} + N_{\alpha} \cdot \left( \mathbf{c}_{\alpha} \cdot \mathbf{u} \right)^{2}. \tag{3.23}

则各系数可通过式(3.11)和式(3.12)的Chapman-Enskog展开得出[30:1].

第二种方式则采用其他 f(eq)f^{(eq)} 及其基于拉格朗日多项式的离散形式 fα(eq)f_{\alpha}^{(eq)} .令

h(eq)=[E+(ξu)u]f(eq)+ω(ξ,T)h^{(eq)} = \left[ E + \left( \mathbf{\xi} - \mathbf{u} \right) \cdot \mathbf{u} \right] f^{(eq)} + \omega(\mathbf{\xi},T)

其中 ω(ξ,T)\omega\left( \mathbf{\xi},T \right) 满足

ω(ξ,T)dξ=0,ω(ξ,T)ξdξ=0,ω(ξ,T)ξξTdξ=pRgTI\int {\omega(\mathbf{\xi},T)}d\mathbf{\xi =}0, \qquad \int {\omega(\mathbf{\xi},T)\mathbf{\xi}}d\mathbf{\xi =}0, \qquad \int {\omega\left( \mathbf{\xi},T \right)\mathbf{\xi}\mathbf{\xi}^{T}}d\mathbf{\xi =}pR_g T\mathbf{I}

因此可通过构建等价离散形式(式(3.24)):

hα(eq)=wαpc2RgT+[E+(cαu)u]fα(eq)(3.24)h_{\alpha}^{(eq)} = \frac{w_{\alpha}p}{c^{2}}R_g T + \left[ E + \left( \mathbf{c}_{\alpha} - \mathbf{u} \right) \cdot \mathbf{u} \right] \cdot f_{\alpha}^{(eq)} \tag{3.24}

计算总能的离散平衡态.

对于二维问题, 基于Qu等提出的圆函数[31]进行修改:

f(eq)={ρ2πcξu=cD(γ1)e and λ=ep,0otherwise(3.25)f^{(eq)} = \begin{cases} \frac{\rho}{2\pi c} & \parallel \mathbf{\xi} - \mathbf{u} \parallel = c \equiv \sqrt{D(\gamma - 1)e} \text{ and } \lambda = e_{p}, \\ 0 & \text{otherwise} \end{cases} \tag{3.25}

其中 λ\lambda 为静能, ep=[1D2(γ1)]ee_{p} = \left[ 1 - \frac{D}{2}(\gamma - 1) \right] e .对于三维问题, Li等[32]采用球面函数表示 f(eq)f^{(eq)}

f(eq)={ρ4πr2ξu=r=r,0otherwise.(3.26)f^{(eq)} = \begin{cases} \frac{\rho}{4\pi r^{2}} & \left\| \xi - \mathbf{u} \right\| = \left\| \mathbf{r} \right\| = r, \\ 0 & \text{otherwise}. \\ \end{cases} \tag{3.26}

以Li等[32:1]使用的D3Q27模型为例, 可得ρr2/3=p\rho r^{2}/3 = p, 因此对于理想气体有 r=3RgTr = \sqrt{3 R_g T}.

此外, Li等[30:2]指出:空间离散采用五阶WENO和TVD(total variation diminishing scheme)格式捕捉可压缩流中的不连续性;时间离散可采用二阶(或三阶)IMEX Runge-Kutta格式推进.虽然式(3.20)和式(3.21)同样可被离散为如下形式(ttt+Δtt + \Delta t和上标表示时间):

fαt+Δt=fαtΔt(cαfαt)+Δtτft(fα(eq),tfαt)(3.27)f_{\alpha}^{t + \Delta t} = f_{\alpha}^{t} - \Delta t \cdot \left( \mathbf{c}_{\alpha} \cdot \mathbf{\nabla}f_{\alpha}^{t} \right) + \frac{\Delta t}{\tau_{f}^{t}}\left( f_{\alpha}^{(eq),t} - f_{\alpha}^{t} \right) \tag{3.27}

hαt+Δt=hαt+Δt[1τht(hα(eq),thαt)(cαut)τhft(fα(eq),tfαt)(cαhαt)](3.28)h_{\alpha}^{t + \Delta t} = h_{\alpha}^{t} + \Delta t\left[ \frac{1}{\tau_{h}^{t}}\left( h_{\alpha}^{(eq),t} - h_{\alpha}^{t} \right) - \frac{\left( \mathbf{c}_{\alpha} \cdot \mathbf{u}^{t} \right)}{\tau_{hf}^{t}}\left( f_{\alpha}^{(eq),t} - f_{\alpha}^{t} \right) - \left( \mathbf{c}_{\alpha} \cdot \mathbf{\nabla}h_{\alpha}^{t} \right) \right] \tag{3.28}

但这种简单的形式仅适用于流场中无激波、无间断的情况, 且在时间上仅有一阶精度.


  1. He, X., & Luo, L.-S. (1997). Theory of the lattice Boltzmann method: From the Boltzmann equation to the lattice Boltzmann equation. Physical Review E, 56(6), 6811–6817. DOI:10.1103/PhysRevE.56.6811 ↩︎ ↩︎ ↩︎

  2. Qian, Y. H., D’Humières, D., & Lallemand, P. (1992). Lattice BGK Models for Navier-Stokes Equation. Europhysics Letters, 17(6), 479–484. DOI:10.1209/0295-5075/17/6/001 ↩︎

  3. 杨鲲 & 单肖文. (2020). 多层速度格子Boltzmann方法进展及展望. 空气动力学学报, 40(3), 23–45. DOI:10.7638/kqdlxxb-2021.0348 ↩︎ ↩︎

  4. Koelman, J. M. V. A. (1991). A Simple Lattice Boltzmann Scheme for Navier-Stokes Fluid Flow. Europhysics Letters, 15(6), 603–607. DOI:10.1209/0295-5075/15/6/007 ↩︎

  5. He, X., & Luo, L.-S. (1997). Lattice Boltzmann Model for the Incompressible Navier–Stokes Equation. Journal of Statistical Physics, 88(3/4), 927–944. DOI:10.1023/B:JOSS.0000015179.12689.e4 ↩︎

  6. Zaki Abiza, Miguel Chavez, David M. Holman, & Ruddy Brionnaud. Prediction of Finned Projectile Aerodynamics using a Lattice-Boltzmann Method CFD Solution (Vol:10, No:05, 2016). World Academy of Science, Engineering and Technology. ↩︎

  7. 邵菲, 韩端锋, 刘强, & 谢伟. (2016). 熵格子Boltzmann方法的亚格子尺度模型. 中国舰船研究, 11(3), 43–47. DOI:10.3969/j.issn.1673-3185.2016.03.008 ↩︎

  8. Chen, Y., Ohashi, H., & Akiyama, M. (1994). Thermal lattice Bhatnagar-Gross-Krook model without nonlinear deviations in macrodynamic equations. Phys. Rev. E, 50, 2776–2783. DOI: 10.1103/PhysRevE.50.2776 ↩︎ ↩︎ ↩︎ ↩︎

  9. Chen, Y., Ohashi, H., & Akiyama, M. (1997). Two-Parameter Thermal Lattice BGK Model with a Controllable Prandtl Number. Journal of Scientific Computing, 12(2), 169–185. DOI:10.1023/A:1025621832215 ↩︎ ↩︎ ↩︎ ↩︎

  10. Nikolaos I. Prasianakis, & Konstantinos Boulouchos (2007). Lattice Boltzmann Method For Simulation Of Weakly Compressible Flows At Arbitrary Prandtl Number. International Journal of Modern Physics C, 18, 602-609. DOI:10.1142/S012918310701084X ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  11. Qian, Y.H (1993). Simulating thermohydrodynamics with lattice BGK models. Journal of Scientific Computing, 8, 231–242. DOI:10.1007/BF01060932 ↩︎ ↩︎

  12. Alexander, F., Chen, S., & Sterling, J. (1993). Lattice Boltzmann thermohydrodynamics. Physical Review E, 47, R2249–R2252. DOI:10.1103/PhysRevE.47.R2249 ↩︎ ↩︎

  13. Frapolli, N., Chikatamarla, S., & Karlin, I. (2014). Multispeed entropic lattice Boltzmann model for thermal flows. Physical Review E, 90, 043306. DOI:10.1103/PhysRevE.90.043306 ↩︎ ↩︎ ↩︎ ↩︎

  14. N.I. Prasianakis, S.S. Chikatamarla, I.V. Karlin, S. Ansumali, & K. Boulouchos (2006). Entropic lattice Boltzmann method for simulation of thermal flows. Mathematics and Computers in Simulation, 72(2), 179-183. DOI:10.1016/j.matcom.2006.05.012 ↩︎ ↩︎ ↩︎

  15. A. Bartoloni, Claudia Battista, Simone Cabasino, P. S. Paolucci, J. Pech, Renata Sarno, Gian Marco Todesco, Mario Torelli, Walter Tross, Piero Vicini, Roberto Benzi, Nicola Cabibbo, Federico Massaioli, & Raffaele Tripiccione (1993). LBE simulations of Rayleigh-Bénard convection on the APE100 parallel processor. International Journal of Modern Physics C, 04, 993-1006. DOI:10.1142/S012918319300077X ↩︎ ↩︎

  16. Xiaoyi He, Shiyi Chen, & Gary D. Doolen (1998). A Novel Thermal Model for the Lattice Boltzmann Method in Incompressible Limit. Journal of Computational Physics, 146(1), 282-300. DOI:10.1006/jcph.1998.6057 ↩︎ ↩︎

  17. Guo, Z., Zheng, C., Shi, B., & Zhao, T. (2007). Thermal lattice Boltzmann equation for low Mach number flows: Decoupling model. Physical Review E, 75, 036704. DOI:10.1103/PhysRevE.75.036704 ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  18. Dipankar Chatterjee (2009). An enthalpy-based thermal lattice Boltzmann model for non-isothermal systems. Europhysics Letters, 86(1), 14004. DOI:10.1209/0295-5075/86/14004 ↩︎ ↩︎

  19. Chen, Z., Shu, C., & Tan, D. (2017). Three-dimensional simplified and unconditionally stable lattice Boltzmann method for incompressible isothermal and thermal flows. Physics of Fluids, 29(5), 053601. DOI:10.1063/1.4983339 ↩︎

  20. Y. Wang, C. Shu, & C.J. Teo (2014). Thermal lattice Boltzmann flux solver and its application for simulation of incompressible thermal flows. Computers & Fluids, 94, 98-111. DOI: 10.1016/j.compfluid.2014.02.006 ↩︎

  21. Zheng, L., Shi, B., & Guo, Z. (2008). Multiple-relaxation-time model for the correct thermohydrodynamic equations. Physical Review E, 78, 026705. DOI:10.1103/PhysRevE.78.026705 ↩︎

  22. Ai-Guo Xu, Guang-Cai Zhang, Yan-Biao Gan, Feng Chen & Xi-Jun Yu (2012). Lattice Boltzmann modeling and simulation of compressible flows. Frontiers of Physics. 7, 582–600. DOI:10.1007/s11467-012-0269-5 ↩︎

  23. Feng Chen, Aiguo Xu, Guangcai Zhang, Yingjun Li, & Sauro Succi (2010). Multiple-relaxation-time lattice Boltzmann approach to compressible flows with flexible specific-heat ratio and Prandtl number. Europhysics Letters, 90(5), 54003. DOI:10.1209/0295-5075/90/54003 ↩︎

  24. Sharma, K. V., Straka, R., & Tavares, F. W. (2020). Current status of Lattice Boltzmann Methods applied to aerodynamic, aeroacoustic, and thermal flows. Progress in Aerospace Sciences, 115, 100616. DOI:10.1016/j.paerosci.2020.100616 ↩︎

  25. Kataoka, T., & Tsutahara, M. (2004). Lattice Boltzmann model for the compressible Navier-Stokes equations with flexible specific-heat ratio. Physical Review E, 69, 035701. DOI:10.1103/PhysRevE.69.035701 ↩︎

  26. Gan, Y.-B., Xu, A.-G., Zhang, G.-C., & Li, Y.-J. (2011). Flux Limiter Lattice Boltzmann Scheme Approach to Compressible Flows with Flexible Specific-Heat Ratio and Prandtl Number. Communications in Theoretical Physics, 56(3), 490–498. DOI:10.1088/0253-6102/56/3/18 ↩︎

  27. Hosseini, S. A., Atif, M., Ansumali, S., & Karlin, I. V. (2023). Entropic lattice Boltzmann methods: A review. Computers & Fluids, 259, 105884. DOI:10.1016/j.compfluid.2023.105884 ↩︎

  28. Anirudh Jonnalagadda; Atul Sharma; Amit Agrawal (2021). Single relaxation time entropic lattice Boltzmann methods: A developer’s perspective for stable and accurate simulations. Computers & Fluids, 215, 104792. DOI:10.1016/j.compfluid.2020.104792 ↩︎

  29. Yong, Wen-an., Luo, Li-Shi (2005). Nonexistence of H Theorem for Some Lattice Boltzmann Models. Journal of Statistical Physics, 121, 91–103. DOI:10.1007/s10955-005-5958-9 ↩︎

  30. Li, Q., He, Y. L., Wang, Y., & Tao, W. Q. (2007). Coupled double-distribution-function lattice Boltzmann method for the compressible Navier-Stokes equations. Physical Review E, 76(5), 056705. DOI:10.1103/PhysRevE.76.056705 ↩︎ ↩︎ ↩︎

  31. Qu, K., Shu, C., & Chew, Y. (2007). Alternative method to construct equilibrium distribution functions in lattice-Boltzmann method simulation of inviscid compressible flows at high Mach number. Physical Review E, 75, 036706. ↩︎

  32. Q. Li, Y.L. He, Y. Wang, & G.H. Tang (2009). Three-dimensional non-free-parameter lattice-Boltzmann model and its application to inviscid compressible flows. Physics Letters A, 373(25), 2101-2108. DOI:10.1016/j.physleta.2009.04.036 ↩︎ ↩︎

工位上换了新电脑,于是需要重新安装 RDPWrap 让机子上的 Windows 11 家庭版能够打开 RDP 远程连接。

  1. 安装 RDPWrap

RDPWrap 的 Github 网址上下载它的最新 Release 【其实已经很久没更新了】。 解压后运行 install.bat 进行安装。

  1. 出现 Listener state: Not-listening 的解决方案。

1)首先在 sebaxakerhtc/rdpwrap.ini 这个仓库里下一份最新的 rdpwrap.ini,一般来说大多数Windows OS 版本号它都有配置。
2)然后将自行下载的 rdpwrap.ini 替换掉原始文件[1],原始文件位于 C:\Program Files\RDP Wrapper 文件夹。
3)替换完成后,回到解压 RDPWrap 的文件夹并在此处打开终端,运行 .\RDPWInst.exe -r [2]。这之后我的电脑就设置完成了。


  1. 执行此操作前先在具有管理员权限的终端里把对应远程服务关了:net stop TermService↩︎

  2. 这里参考了 Github 上的 issue 999↩︎

工位上换了新电脑,于是需要给新电脑安装 Linux 子系统(WSL 2)用来跑代码。
这里简单记录一下我的安装过程。

  1. 安装 WSL 2

这里主要是按照微软官方的教程[1][2]来做。

先在 powershell 里启用 WSL 和虚拟机功能

1
2
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart  
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

然后安装适用于 x64 计算机的 WSL2 Linux 内核更新包,并在 powershell 里将 WSL 2 设置为默认。

1
wsl --set-default-version 2

WSL 2 的自定义安装位置参考的是CSDN上给的做法:我下载了Ubuntu 24.04 的 AppxBundle,从包里提取 Ubuntu_2404.0.5.0_x64.Appx ,然后在我想要的位置将它当成 zip 解压。最后运行一下 ubuntu2404.exe 即可。

  1. 导入Windows系统的字体

这里主要参照知乎上给的方法[3],做了个软链接。

1
2
3
sudo mkdir /usr/share/fonts/win11 
sudo ln -s /mnt/c/Windows/Fonts/* /usr/share/fonts/win11
fc-cache -fv
  1. 安装CUDA

Nvidia 的安装教程 和它给的下载链接主要是针对 WSL-Ubuntu 的。

我用的网络下载,在shell里就应该是:

1
2
3
4
5
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-6
sudo apt-get -y install cuda

即使是这么安装完,还是会有非常幽默的 nvcc 找不到、 libcuda.so 找不到等问题。我就参照网上的做法[4][5]~/.bashrc 里补充了这么一段:

1
2
3
4
5
6
# >>> Nvidia CUDA initialize >>>
export CUDA_HOME=/usr/local/cuda
export PATH=${CUDA_HOME}/bin:${PATH}
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export LD_LIBRARY_PATH=/usr/lib/wsl/lib/:${LD_LIBRARY_PATH}
# <<< Nvidia CUDA initialize <<<

搞定。


  1. https://learn.microsoft.com/zh-cn/windows/wsl/install ↩︎

  2. https://learn.microsoft.com/zh-cn/windows/wsl/install-manual ↩︎

  3. https://zhuanlan.zhihu.com/p/683470601 ↩︎

  4. https://stackoverflow.com/questions/68221962/nvcc-not-found-but-cuda-runs-fine ↩︎

  5. https://github.com/microsoft/WSL/issues/8587 ↩︎

题 1

一无限流体被单位质量力 μr3/2\mu r^{-3/2} 的力作用,方向指向原点。若开始时流体静止且其中有一个空腔 r=cr=c,证明:在过 (25μ)1/2c5/4(\frac{2}{5 \mu})^{1/2} c^{5/4} 时间之后,空腔被流体填满。

这里假设流体不可压缩。取球坐标系 (r,θ,ϕ)(r, \theta, \phi) 进行计算,并以空腔中心为原点。

思路1:功能关系

假设当 t=t0t=t_0 时,空腔边界的球壳形薄液面位于 r=r0r=r_0 处。该薄液面厚度为 dr0\mathrm{d}r_0, 液面速度 vr(r0,t0)=0v_r (r_0, t_0) = 0

t0t_0 时刻,位于 r=r0r=r_0 处且厚度为 dr0\mathrm{d}r_0 的液面向内推动了 dr\mathrm{d} r, 由于该液面的质量积为 dm=ρ(4πr02)dr0\mathrm{d}m = \rho (4 \pi r_0^2) \mathrm{d}r_0,则这一过程中体积力(Fbr=μr3/2F_{br} = -\mu r^{-3/2})所作的功为

dW=dmr0+Fbrdr=dm(2μr01/2)=8μρπr03/2dr0.\mathrm{d} W = \mathrm{d}m \cdot \int_{r_0}^{+\infty} F_{br} \mathrm{d}r = \mathrm{d}m \cdot (-2 \mu r_0^{-1/2}) = -8 \mu \rho \pi r_0^{3/2} \mathrm{d}r_0 .

t1=t0+δtt_1 = t_0 + \delta_t 时,该液面前进到 r=r1r=r_1 位置(r1r0r_1 \le r_0),此时液面速度为 vr(r1,t1)=dr1dtv_r(r_1, t_1) = \dfrac{\mathrm{d} r_1}{\mathrm{d} t}

所以薄液面从 r0r_0 运动到 r1r_1 过程中, FbrF_{br} 做的总功为:

W=r0r1dW=165μρπ(r05/2r15/2)W = \int_{r_0}^{r_1} \mathrm{d} W = \frac{16}{5} \mu \rho \pi (r_0^{5/2} - r_1^{5/2})

记速度 v=[vr,0,0]T\bold{v} = [v_r, 0, 0]^T。代入球坐标系下的连续性方程,化简得:

(r2vr)r=0\frac{\partial (r^2 v_r)}{\partial r} = 0

rr 积分,可得 r2vr=f(t)r^2 v_r = f(t) ,其中 f(t)f(t) 为待定函数。根据这一方程,可得在 t1t_1 时刻满足 r02vr(r0,t1)=r12vr(r1,t1)r_0^2 v_r(r_0, t_1) = r_1^2 v_r(r_1, t_1)

t1t_1 时刻, r=r0r=r_0 层液体的动能表示为

dE=12dmvr2(r0,t1)=2ρπr14r02vr2(r1,t1)dr0\mathrm{d} E = \frac{1}{2} \cdot \mathrm{d}m \cdot v_r^2(r_0, t_1) = 2 \rho \pi \cdot \frac{r_1^4}{r_0^2} \cdot v_r^2(r_1, t_1) \mathrm{d}r_0

这一时刻下整个系统的动能为:

E=r1+dE=2ρπr13vr2(r1,t1)E = \int_{r_1}^{+\infty} \mathrm{d} E = 2 \rho \pi r_1^3 \cdot v_r^2(r_1, t_1)

据此,我们令 t0t_0 时刻即为初始时刻(t0=0t_0=0),满足 r0=cr_0 = cvr(t=0)=0v_r(t=0)=0。所以 t0t_0 时刻的动能为 0。对 t0t_0t1t_1 时刻的过程, FbrF_{br} 所做的功 WW 全部转化为流场动能 EE,即:W=EW=E

165μρπ(c5/2r15/2)=2ρπr13vr2(r1,t1)0\frac{16}{5} \mu \rho \pi (c^{5/2} - r_1^{5/2}) = 2 \rho \pi r_1^3 \cdot v_r^2(r_1, t_1) - 0

也就有:

vr(r1,t1)=dr1dt=8μ5r13/2(c5/2r15/2)v_r(r_1, t_1) = \frac{\mathrm{d} r_1}{\mathrm{d} t} = \sqrt{\frac{8 \mu}{5}} \cdot \sqrt{r_1^{-3/2} (c^{5/2} - r_1^{5/2})}

分离变量后解得:

1625(c5/2r15/2)=(8μ5t+c1)2\frac{16}{25} (c^{5/2} - r_1^{5/2}) = \left( \sqrt{\frac{8 \mu}{5}} t + c_1 \right)^2

其中 c1c_1 为待定常数。当 t=0t=0 时, r1=cr_1 = c,所以 c1=0c_1 = 0

假设当 t=Tmt=T_{m}r1=0r_1=0, 则可解得: Tm=(25μ)1/2c5/4T_m = (\frac{2}{5 \mu})^{1/2} c^{5/4}

思路2:联立动量方程和连续性方程

记速度 v=[vr,0,0]T\bold{v} = [v_r, 0, 0]^T。代入连续性方程,化简得:

(r2vr)r=0\frac{\partial (r^2 v_r)}{\partial r} = 0

rr 积分,可得 r2vr=f(t)r^2 v_r = f(t) ,其中 f(t)f(t) 为待定函数。

该场景下的运动方程为

ρDvDt=ρFb\rho \frac{\mathrm{D} \bold{v}}{\mathrm{D} t} = \rho \bold{F}_b

所以,动量方程写作:

vrt+vrvrr=Fbr\frac{\partial v_r}{\partial t} + v_r \frac{\partial v_r}{\partial r} = F_{br}

由题目可知 Fbr=μr3/2F_{br} = - \mu r^{-3/2}。将 r2vr=f(t)r^2 v_r = f(t) 代入到运动方程中,得:

f(t)r2+vrvrr=μr3/2\frac{f'(t)}{r^2} + v_r \frac{\partial v_r}{\partial r} = -\mu r^{-3/2}

R(t)R(t) 为真空球面的半径变化,则 vr(r=R(t))=R(t)v_r (r=R(t)) = R'(t)。对 rr 积分,得到:

R(t)f(t)r2+vrvrrdr=μR(t)r3/2dr[f(t)r+(vr)22]R(t)=2μrR(t)\begin{aligned} \int_{\infty}^{R(t)} \frac{f'(t)}{r^2} + v_r \frac{\partial v_r}{\partial r} \mathrm{d}r &= -\mu \int_{\infty}^{R(t)} r^{-3/2} \mathrm{d}r \\ \left.\left[ -\frac{f'(t)}{r} + \frac{(v_r)^2}{2} \right]\right|_{\infty}^{R(t)} &= \left. \frac{2 \mu}{\sqrt{r}} \right|_{\infty}^{R(t)} \end{aligned}

代入 vr(r=)=0v_r (r=\infty)=0,整理得到:

f(t)R(t)+(R(t))22=2μR(t)-\frac{f'(t)}{R(t)} + \frac{(R'(t))^2}{2} = \frac{2 \mu}{\sqrt{R(t)}}

在边界上有 f(t)=R2(t)vr(r=R(t))=R2Rf(t) = R^2(t) \cdot v_r (r=R(t)) = R^2 \cdot R' , 所以 f(t)=2RR2+R2Rf'(t) = 2 R R'^{2} + R^2 \cdot R{''} 。上式化简为:

32R2RR=2μR-\frac{3}{2} R'^{2} -R \cdot R{''} = \frac{2 \mu}{\sqrt{R}}

由于 d(R1/2(R)2)dR=R1/22(R)2+2R1/2R\frac{\mathrm{d} (R^{1/2} (R')^{2})}{\mathrm{d} R} =\frac{R^{-1/2}}{2} (R')^{2} + 2 R^{1/2} R{''},上式整理得:

d(R1/2(R)2)8μ+5(R1/2(R)2)=dR2R-\frac{\mathrm{d}(R^{1/2} (R')^{2})}{8\mu + 5 (R^{1/2} (R')^{2})} = \frac{\mathrm{d}R}{2R}

分离变量后并整理出 RR' ,可表示为:

R=R1/25(c1R5/28μ)R' = \sqrt{\frac{R^{-1/2}}{5} (c_1 R^{-5/2} - 8 \mu) }

R(t=0)=cR(t=0)=cR(t=0)=0R'(t=0) = 0 代入,解得: c1=8μc5/2c_1 = 8 \mu c^{5/2} 。即:

R=R1/258μ(c5/2R5/21)=8μ5R1/2(c5/2R5/21)R' = \sqrt{\frac{R^{-1/2}}{5} 8 \mu (c^{5/2} R^{-5/2} - 1)} \\= \sqrt{\frac{8 \mu}{5}} \cdot \sqrt{R^{-1/2} (c^{5/2} R^{-5/2} - 1)}

综上,真空球面的总运动时长表示为:

T=0c1RdR=58μ0c[R1/2((cR)5/21)]1/2dRT = \int_{0}^{c} \frac{1}{R'} \mathrm{d}R = \sqrt{\frac{5}{8 \mu}} \int_{0}^{c} \left[ R^{-1/2} \left( \left(\frac{c}{R}\right)^{5/2} - 1 \right) \right]^{-1/2} \mathrm{d}R

因为:

0c[R1/2((cR)5/21)]1/2dR=0cR1/4[((cR)5/21)]1/2dR=450c[((cR)5/21)]1/2d(R5/4)=t=R5/4450c5/4[(c5/2t21)]1/2dt=450c5/4t[(c5/2t2)]1/2dt=45(12)0c5/4[(c5/2t2)]1/2d(c5/2t2)=45(12)2(c5/2t2)1/20c5/4=45c5/4\begin{aligned} & \int_{0}^{c} \left[ R^{-1/2} \left( \left(\frac{c}{R}\right)^{5/2} - 1 \right) \right]^{-1/2} \mathrm{d}R \\ =& \int_{0}^{c} R^{1/4} \left[ \left( \left(\frac{c}{R}\right)^{5/2} - 1 \right) \right]^{-1/2} \mathrm{d}R \\ =& \frac{4}{5} \int_{0}^{c} \left[ \left( \left(\frac{c}{R}\right)^{5/2} - 1 \right) \right]^{-1/2} \mathrm{d}(R^{5/4}) \\ \xlongequal{t=R^{5/4}} & \frac{4}{5} \int_{0}^{c^{5/4}} \left[ \left( c^{5/2} t^{-2} - 1 \right) \right]^{-1/2} \mathrm{d}t \quad= \frac{4}{5} \int_{0}^{c^{5/4}} t \left[ \left( c^{5/2} - t^2 \right) \right]^{-1/2} \mathrm{d}t \\ =& \frac{4}{5} \cdot \left(-\frac{1}{2}\right) \int_{0}^{c^{5/4}} \left[ \left( c^{5/2} - t^2 \right) \right]^{-1/2} \mathrm{d}(c^{5/2} - t^2) \\ =& \frac{4}{5} \cdot \left(-\frac{1}{2}\right) \left.2 (c^{5/2} - t^2)^{1/2}\right|_{0}^{c^{5/4}} = \frac{4}{5} c^{5/4} \end{aligned}

所以 T=58μ45c5/4=25μc5/4T = \sqrt{\frac{5}{8 \mu}} \cdot \frac{4}{5} c^{5/4} = \sqrt{\frac{2}{5 \mu}} c^{5/4} .

证毕。

题 2

体积为 43πa3\frac{4}{3} \pi a^3 的液体充满于两个同心球面之间,外球面有压强 π\pi 作用,无质量力,内球面压强为 0 。开始时液体静止,内球面半径为 2a2a 。证明:当内球面半径变为 aa 时,其速度为 (14π3ρ21/321/31)12\displaystyle \left(\frac{14 \pi}{3 \rho} \frac{2^{1/3}}{2^{1/3} - 1}\right)^{\frac{1}{2}}

这里假设流体不可压缩。取球坐标系 (r,θ,ϕ)(r, \theta, \phi) 进行计算,并以空腔中心为原点。

记初始状态下(即 t=0t=0 时刻),内球面半径为 R0=2aR_0=2 a,外球面半径为 R1R_1;当内球面半径变为 aa 时(即 t1t_1 时刻),此时的内、外球面半径为分别为 R01=aR_{01} = aR11R_{11}。由于流体体积 V=43πa3V = \frac{4}{3} \pi a^3,可得:

V=43π(R13R03)=43π(R113R013)\begin{aligned} V &= \frac{4}{3} \pi (R_1^3 - R_0^3) \\ &= \frac{4}{3} \pi (R_{11}^3 - R_{01}^3) \end{aligned}

解得: R1=91/3aR_1 = 9^{1/3} aR11=21/3aR_{11} = 2^{1/3} a

记速度 u=[vr,0,0]T\bold{u} = [v_r, 0, 0]^T。代入连续性方程,化简得:

(r2vr)r=0\frac{\partial (r^2 v_r)}{\partial r} = 0

rr 积分,可得 r2vr=f(t)r^2 v_r = f(t) ,其中 f(t)f(t) 为待定函数。

t[0,t1]t \in [0,t_1] 时间段,外界压强在外表面做的功为:

W=R1R11(π)S(r)dr=283π2a3W = \int_{R_{1}}^{R_{11}} (-\pi) S(r) \mathrm{d} r = \frac{28}{3} \pi^2 a^3

其中 S(r)=4πr2S(r) = 4 \pi r^2 为球的表面积公式。

t1t_1 时刻, r2vr=f(t1)r^2 v_r = f(t_1) 为定值。若记此时刻的内球面速度为 u0=[v0,0,0]T\bold{u}_0 = [v_0, 0, 0]^Trr 处的流体速度为 ur=[vr,0,0]T\bold{u}_r = [v_r, 0, 0]^Tr[R01,R11]r \in [R_{01}, R_{11}]),则 R012v0=r2vrR_{01}^2 v_0 = r^2 v_r 。 所以 vr=(R01r)2v0v_r = \left( \frac{R_{01}}{r} \right)^2 v_0

t1t_1 时刻的流场总动能表示为:

Et1=R01R1112vr2(ρS(r)dr)=2πρv02a321/3121/3E_{t_1} = \int_{R_{01}}^{R_{11}} \frac{1}{2} v_r^2 \cdot (\rho S(r) \mathrm{d}r) = 2 \pi \rho v_0^2 a^3 \frac{2^{1/3} - 1}{2^{1/3}}

由于初始时刻的动能 E0=0E_0 = 0,根据功能关系可知:

W=Et1E0W = E_{t_1} - E_0

解得 t1t_1 时刻的内球面速度为: v0=(14π3ρ21/321/31)12\displaystyle v_0= - \left(\frac{14 \pi}{3 \rho} \frac{2^{1/3}}{2^{1/3} - 1}\right)^{\frac{1}{2}} ,方向指向原点。

本文同步发表于知乎CSDN

我在阅读其他文献时,看到有文献提到 Kupershtokh 的一篇关于 LBM 外力项的文章[1],他提出的格式在其他文章中又被称为 Exact difference method(EDM)

本想搜索这篇文章的PDF进行阅读,但最后只找到一个网站介绍了部分信息。这份粗略笔记的内容,都是基于其他文献[2][3][4]中对该方法的介绍而整理的。

介绍

Boltzmann-BGK方程的近似

密度分布函数 ff 的 Boltzmann-BGK方程写作:

ft+ξf+aξf=1τf[ff(eq)](1)\frac{\partial f}{\partial t} + \bold{\xi} \cdot \nabla f + \boldsymbol{a} \cdot \nabla_{\bold{\xi}} f = -\frac{1}{\tau_f} \left[ f - f^{(eq)}\right] \tag{1}

其中:

f(eq)=ρ(2πRgT)D/2exp((ξu)22RgT)(2)f^{(eq)} = \frac{\rho}{(2 \pi R_g T)^{D/2}} \exp{\left(- \frac{(\bold{\xi} - \bold{u})^2}{2 R_g T}\right)} \tag{2}

符号含义分别为

  • ξ\bold{\xi} : 粒子速度;
  • ρ\rho : 流体密度;
  • u\bold{u} : 流场宏观速度;
  • RgR_g : 气体常数;
  • TT : 温度;
  • a=du/dt\boldsymbol{a}=\mathrm{d}\bold{u}/\mathrm{d}t : 流场加速度。

Knudsen数较小时,Boltzmann方程的体力项可以基于f(eq)f^{(eq)}进行近似,即

ξfξf(eq)\nabla_{\bold{\xi}} f \approx \nabla_{\bold{\xi}} f^{(eq)}

根据式(2), f(eq)f^{(eq)} 是分子随机速度 C=ξu\bold{C} = \bold{\xi} - \bold{u} 的指数函数,则:

f(eq)u=f(eq)ξ=ξf(eq)\frac{\partial f^{(eq)}}{\partial \bold{u}} = -\frac{\partial f^{(eq)}}{\partial \bold{\xi}} = -\nabla_{\bold{\xi}} f^{(eq)}

假设密度 ρ\rho 为常数,则 dρdt=0\frac{\mathrm{d} \rho}{\mathrm{d} t}=0,那么 f(eq)f^{(eq)} 的全导数为:

df(eq)dt=f(eq)ududt+f(eq)ρdρdtf(eq)ududt=aξf(eq)\begin{aligned} \frac{\mathrm{d} f^{(eq)}}{\mathrm{d} t} &= \frac{\partial f^{(eq)}}{\partial \bold{u}} \cdot \frac{\mathrm{d} \bold{u}}{\mathrm{d} t} + \frac{\partial f^{(eq)}}{\partial \rho} \cdot \frac{\mathrm{d} \rho}{\mathrm{d} t} \\ &\approx \frac{\partial f^{(eq)}}{\partial \bold{u}} \cdot \frac{\mathrm{d} \bold{u}}{\mathrm{d} t} = -\boldsymbol{a} \cdot \nabla_{\bold{\xi}} f^{(eq)} \end{aligned}

也就是说,Kupershtokh 等[1:1][2:1]近似的 Boltzmann-BGK方程写作:

ft+ξf=1τf[ff(eq)]+df(eq)dt(3)\frac{\partial f}{\partial t} + \bold{\xi} \cdot \nabla f = -\frac{1}{\tau_f} \left[ f - f^{(eq)}\right] + \frac{\mathrm{d} f^{(eq)}}{\mathrm{d} t} \tag{3}

近似方程的离散化

将式(3)在[t,t+δt][t,t+\delta_t]内沿着eα\bold{e}_\alpha方向积分,可得

fα(x+eαδt,t+δt)fα(x,t)=1τ[fα(x,t)fα(eq)(ρ,u)]+[fα(eq)(u(t+δt))fα(eq)(u(t))](4)\begin{aligned} f_\alpha (\bold{x} + \bold{e}_\alpha \delta_t, t+\delta_t) - f_\alpha (\bold{x}, t) =& -\frac{1}{\tau} \left[ f_\alpha (\bold{x}, t) - f_\alpha^{(eq)} (\rho, \bold{u^*}) \right] \\ & + \left[ f_\alpha^{(eq)} (\bold{u^*}(t+\delta_t)) - f_\alpha^{(eq)} (\bold{u^*}(t)) \right] \end{aligned} \tag{4}

其中:

  • δt\delta_t 为时间步长;
  • τ=τf/δt\tau = \tau_f / \delta_t 为无量纲松弛时间;
  • x\bold{x} 为网格点位置,ρ,u\rho, \bold{u^*} 分别为该点在 tt 时刻的密度和速度(与宏观速度 u\bold{u} 有区别);
  • fα,fα(eq)f_\alpha, f_\alpha^{(eq)} 分别为 eα\bold{e}_\alpha 方向的分布函数平衡态

fα(eq)=wαρ[1+eαucs2+(eαu)22cs4u22cs2]=wαρ[1+eαucs2+12cs4(uu):(eαeαcs2[I])](4-1)\begin{aligned} f_\alpha^{(eq)} &= w_\alpha \rho \cdot \left[ 1 + \frac{\bold{e}_\alpha \cdot \bold{u}}{c_s^2} + \frac{(\bold{e}_\alpha \cdot \bold{u})^2}{2 c_s^4} - \frac{|\bold{u}|^2}{2 c_s^2} \right] \\ &= w_\alpha \rho \cdot \left[ 1 + \frac{\bold{e}_\alpha \cdot \bold{u}}{c_s^2} + \frac{1}{2 c_s^4}(\bold{u}\bold{u}):(\bold{e}_\alpha \bold{e}_\alpha - c_s^2 [\bold{I}]) \right] \\ \end{aligned} \tag{4-1}

这里 wαw_\alphaeα\bold{e}_\alpha 的权重系数, [I][\bold{I}] 为单位矩阵;
两个同样为m*n大小的矩阵 [A][\bold{A}][B][\bold{B}] ,则 [A]:[B]=i=1mj=1nAijBij\displaystyle [\bold{A}] : [\bold{B}] = \sum^{m}_{i=1}\sum^{n}_{j=1} A_{ij} B_{ij}

  • FαF_\alpha 为外力项,其表达式基于外力 F=ρdudt=ρa\bold{F} = \rho \dfrac{\mathrm{d} \bold{u^*}}{\mathrm{d} t} = \rho \bold{a} 进行构建。

Fα=fα(eq)(u(t+δt))fα(eq)(u(t))F_\alpha = f_\alpha^{(eq)} (\bold{u^*}(t+\delta_t)) - f_\alpha^{(eq)} (\bold{u^*}(t))

并且

u(t)=(αfαeα)/(αfα)u(t+δt)=u(t)+tt+δtdudtdt=u(t)+tt+δtFρdtu(t)+Fρδt(5)\begin{aligned} \bold{u^*}(t) &= \left(\sum_{\alpha} f_\alpha \bold{e}_\alpha \right) / \left(\sum_{\alpha} f_\alpha \right) \\ \bold{u^*}(t+\delta_t) &= \bold{u^*}(t) + \int_{t}^{t+\delta_t} \frac{\mathrm{d} \bold{u^*}}{\mathrm{d} t} \mathrm{d} t \\ &= \bold{u^*}(t) + \int_{t}^{t+\delta_t} \frac{\bold{F}}{\rho} \mathrm{d} t \approx \bold{u^*}(t) + \frac{\bold{F}}{\rho} \delta_t \end{aligned} \tag{5}

这意味着加速度 a=F/ρ\bold{a}=\bold{F}/\rho[t,t+δt][t,t+\delta_t] 时间段内被视为常数。

Kupershtokh等在这篇文章[2:2]说明,在使用该源项时,流体宏观量的计算应表示为:

ρ=αfα,ρu=ieαfα+δtF2(6)\rho = \sum_{\alpha} f_\alpha ,\quad \rho \bold{u} = \sum_{i} \bold{e}_\alpha f_\alpha + \frac{\delta_t \bold{F}}{2} \tag{6}

Li 等[4:1]通过 Chapman-Enskog 展开证明:该格式向宏观方程引入的误差项为:

ErrorEDM=δt2(FF4ρ)(7)\mathbf{Error}_{\mathrm{EDM}} = -\delta_t^2 \nabla\cdot\left( \frac{\bold{FF}}{4 \rho} \right) \tag{7}

EDM 源项的展开式

为便于分析,这里采用如下书写形式的平衡态:

fα(eq)=wαρ[1+eαucs2+12cs4(uu):(eαeαcs2[I])]f_\alpha^{(eq)} = w_\alpha \rho \cdot \left[ 1 + \frac{\bold{e}_\alpha \cdot \bold{u}}{c_s^2} + \frac{1}{2 c_s^4}(\bold{u}\bold{u}):(\bold{e}_\alpha \bold{e}_\alpha - c_s^2 [\bold{I}]) \right]

将其带入 EDM 源项,记 Δu=Fρδt\Delta\bold{u} = \frac{\bold{F}}{\rho} \delta_t,整理得:

Fα=fα(eq)(u(t+δt))fα(eq)(u(t))=ρwα{eαΔucs2+12cs4[(u+Δu)(u+Δu)uu]:(eαeαcs2[I])}\begin{aligned} F_{\alpha} &= f_\alpha^{(eq)} (\bold{u^*}(t+\delta_t)) - f_\alpha^{(eq)} (\bold{u^*}(t)) \\&= \rho w_\alpha \left\{ \frac{\bold{e}_\alpha \cdot \Delta\bold{u}}{c_s^2} + \newline \frac{1}{2 c_s^4} \left[ (\bold{u}^* + \Delta\bold{u})(\bold{u}^* + \Delta\bold{u}) \right.\right. \\ &\quad \left. - \bold{u}^* \bold{u}^* \right] : \left.(\bold{e}_\alpha \bold{e}_\alpha - c_s^2 [\bold{I}]) \right\} \end{aligned}

这里涉及矩阵 (u+Δu)(u+Δu)(\bold{u}^* + \Delta\bold{u})(\bold{u}^* + \Delta\bold{u})uu\bold{u}^* \bold{u}^* 的相减,由于:

(u+Δu)(u+Δu)=(ui+Δui)(uj+Δuj),uu=uiuj(\bold{u}^* + \Delta\bold{u})(\bold{u}^* + \Delta\bold{u}) = (u^*_{i} + \Delta u_i)(u^*_{j} + \Delta u_j), \quad \bold{u}^* \bold{u}^* = u^*_{i} u^*_{j}

其中 uiu_i^*Δui=Fiδt/ρ\Delta u_i = F_i \delta_{t} / \rho 分别为 u\bold{u}^*Δu\Delta\bold{u} 在 i 轴上的分量,所以:

(u+Δu)(u+Δu)uu=(ui+Δui)(uj+Δuj)uiuj=δtρ(uiFj+ujFi)+δt2ρ2FiFj=δtρ(ui+Fiδt2ρ)Fj+δtρ(uj+Fjδt2ρ)Fi\begin{aligned} (\bold{u}^* + \Delta\bold{u})(\bold{u}^* + \Delta\bold{u}) - \bold{u}^* \bold{u}^{*} &= (u^*_{i} + \Delta u_i)(u^*_{j} + \Delta u_j) - u^*_{i} u^*_{j} \\ &= \frac{\delta_t}{\rho} (u_i^* F_j + u_j^* F_i) + \frac{\delta_t^2}{\rho^2} F_i F_j \\ &= \frac{\delta_t}{\rho} (u_i^* + \frac{F_i \delta_t}{2 \rho}) F_j + \frac{\delta_t}{\rho} (u_j^* + \frac{F_j \delta_t}{2 \rho}) F_i \end{aligned}

这里令 vEDM=u+F2ρδt\bold{v}_{\rm{EDM}} = \bold{u}^{*} + \frac{\bold{F}}{2 \rho} \delta_{t} ,则 EDM 源项的展开式化简为:

Fα=δtwα[eαFcs2+12cs4(vEDMF+FvEDM):(eαeαcs2[I])](8)F_\alpha = \delta_t w_\alpha \left[ \frac{\bold{e}_\alpha \cdot \bold{F}}{c_s^2} + \frac{1}{2 c_s^4} \left( \bold{v}_{\rm{EDM}} \bold{F} + \bold{F} \bold{v}_{\rm{EDM}} \right) : (\bold{e}_\alpha \bold{e}_\alpha - c_s^2 [\bold{I}]) \right] \tag{8}

上式即为 EDM 源项的展开结果。

源项误差的 Chapman-Enskog 分析

这里的推导主要参考 Li 等[4:2]的文章,并补充了一些自己的笔记。

需要提醒的是,下文的速度记号和前文不同。

源项的各阶速度矩

根据 LBM 格子张量对称性,有前 5 阶表达式:

αwα=1,αwαeαi=0,αwαeαieαj=cs2δij,αwαeαieαjeαk=0αwαeαieαjeαkeαl=cs4(δijδkl+δikδjl+δilδkj)αwαeαieαjeαkeαleαm=0\sum_{\alpha} w_{\alpha} = 1 ,\quad \sum_{\alpha} w_{\alpha} e_{\alpha i} = 0 ,\\ \sum_{\alpha} w_{\alpha} e_{\alpha i} e_{\alpha j} = c_s^2 \delta_{ij} ,\quad \sum_{\alpha} w_{\alpha} e_{\alpha i} e_{\alpha j} e_{\alpha k} = 0 \\ \sum_{\alpha} w_{\alpha} e_{\alpha i} e_{\alpha j} e_{\alpha k} e_{\alpha l} = c_s^4 (\delta_{ij} \delta_{kl} + \delta_{ik} \delta_{jl} + \delta_{il} \delta_{kj}) \\ \sum_{\alpha} w_{\alpha} e_{\alpha i} e_{\alpha j} e_{\alpha k} e_{\alpha l} e_{\alpha m} = 0

其中 eαie_{\alpha i} 表示 D 维向量 eα\bold{e}_{\alpha} 的第 ii 个分量, wαw_\alphaeα\bold{e}_{\alpha} 的权重系数。 δij\delta_{ij} 为克罗内克符号。

所以,对于 EDM 格式的源项 Fα,EDMF_{\alpha,\mathrm{EDM}} ,其各阶速度矩为:

αFα,EDM=0,αeαFα,EDM=F,αeαeαFα,EDM=δt((uF+Fu)+δtFFρ)(9)\sum_{\alpha} F_{\alpha,\mathrm{EDM}} = 0 ,\quad \sum_{\alpha} \bold{e}_\alpha F_{\alpha,\mathrm{EDM}} = \bold{F} ,\quad\\ \sum_{\alpha} \bold{e}_\alpha \bold{e}_\alpha F_{\alpha,\mathrm{EDM}} = \delta_t \left( (\bold{u}^* \bold{F} + \bold{F}\bold{u}^*) + \delta_t \frac{\bold{FF}}{\rho} \right) \tag{9}

技术细节可见附录(A)。

LBM 的常规 Chapman-Enskog 展开

令展开参数 ϵ\epsilon 是与克努森数同阶的小量,则将分布函数展开为

fα=fα(0)+ϵfα(1)+ϵ2fα(2)+...,f_{\alpha} = f_{\alpha}^{(0)} + \epsilon f_{\alpha}^{(1)} + \epsilon^2 f_{\alpha}^{(2)} + ...,

源项展开为 Fα=ϵF1αF_{\alpha} = \epsilon F_{1 \alpha},时间和空间偏导展开为

t=ϵt1+ϵ2t2,x=ϵx1.\frac{\partial}{\partial t} = \epsilon \frac{\partial}{\partial t_1} + \epsilon^2 \frac{\partial}{\partial t_2} ,\quad \frac{\partial}{\partial \bold{x}} = \epsilon \frac{\partial}{\partial \bold{x}_1}.

将式(4)中的 fα(x+eαδt,t+δt)f_\alpha (\bold{x} + \bold{e}_\alpha \delta_t, t+\delta_t)fα(x,t)f_\alpha (\bold{x}, t) 处进行 Taylor 展开(至2阶项),并把上述展开式代入,可得 ϵ\epsilon 各阶项的方程为:

O(ϵ0):fα(0)=fα(eq),(101)O(ϵ1):D1αfα(0)=1τδtfα(1)+F1αδt,(102)O(ϵ2):fα(0)t2+D1αfα(1)+δt2D1α2fα(0)=1τδtfα(2).(103)\begin{aligned} O(\epsilon^0):\quad & f_{\alpha}^{(0)} = f_{\alpha}^{(eq)} , &(10-1)\\ O(\epsilon^1):\quad & \mathrm{D}_{1 \alpha} f_{\alpha}^{(0)} = -\frac{1}{\tau \delta_t} f_{\alpha}^{(1)} + \frac{F_{1 \alpha}}{\delta_t} , &(10-2)\\ O(\epsilon^2):\quad & \frac{\partial f_{\alpha}^{(0)}}{\partial t_2} + \mathrm{D}_{1 \alpha} f_{\alpha}^{(1)} + \frac{\delta_t}{2} \mathrm{D}_{1 \alpha}^2 f_{\alpha}^{(0)} = -\frac{1}{\tau \delta_t} f_{\alpha}^{(2)} . &(10-3)\\ \end{aligned}

其中 D1α=t1+eαx1\displaystyle \mathrm{D}_{1 \alpha} = \frac{\partial}{\partial t_1} + \bold{e}_{\alpha} \cdot \frac{\partial}{\partial \bold{x}_1}。将式(10-2)代入式(10-3)中,式(10-3)可被化简为式(10-4):

O(ϵ2):fα(0)t2+D1α(112τ)fα(1)+12D1αF1α=1τδtfα(2).(104)\begin{aligned} O(\epsilon^2):\quad & \frac{\partial f_{\alpha}^{(0)}}{\partial t_2} + \mathrm{D}_{1 \alpha} \left(1 - \frac{1}{2 \tau}\right) f_{\alpha}^{(1)} + \frac{1}{2} \mathrm{D}_{1 \alpha} F_{1 \alpha} = -\frac{1}{\tau \delta_t} f_{\alpha}^{(2)} . &(10-4) \end{aligned}

(1)考虑对式(10-3)和式(10-4)计算零阶矩,得:

ρt1+1(ρu)=0ρt2+121(δtF1)=0\frac{\partial \rho}{\partial t_1} + \nabla_1 \cdot (\rho \bold{u}^*) = 0 \\ \frac{\partial \rho}{\partial t_2} + \frac{1}{2} \nabla_1 \cdot (\delta_t \bold{F}_1) = 0 \\

此处 u=(ieαfα)/(ifα)\bold{u}^* = (\sum_{i} \bold{e}_\alpha f_\alpha) / (\sum_{i} f_\alpha) 并非真实流场速度,而 u^=u+Fδt/(2ρ)\hat{\bold{u}} = \bold{u}^* + \bold{F} \delta_t / (2 \rho) 为真实流场速度(也就是式(6)给出的形式)。

基于前面假设的偏微分关系式,我们可以得到 ρt+(ρu^)=0\displaystyle \frac{\partial \rho}{\partial t} + \nabla \cdot (\rho \hat{\bold{u}}) = 0

(2)同理,对式(10-3)和式(10-4)计算一阶矩,得:

ρut1+1(ρuu)=1p+F1ρut2+1[(112τ)αeαeαfα(1)]+δt2F1t1+121(αeαeαF1α)=0\frac{\partial \rho \bold{u}^*}{\partial t_1} + \nabla_1 \cdot (\rho \bold{u}^* \bold{u}^*) = -\nabla_1 p + \bold{F}_1 \\ \frac{\partial \rho \bold{u}^*}{\partial t_2} + \nabla_1 \cdot \left[\left(1 - \frac{1}{2 \tau}\right) \sum_{\alpha} \bold{e}_\alpha \bold{e}_\alpha f_{\alpha}^{(1)} \right] + \frac{\delta_t}{2} \frac{\partial \bold{F}_1}{\partial t_1} + \frac{1}{2} \nabla_1 \cdot \left( \sum_{\alpha} \bold{e}_\alpha \bold{e}_\alpha F_{1 \alpha} \right) = 0

其中 p=ρcs2p = \rho c_s^2

根据式(10-2),有:

αeαeαfα(1)=τ[δtt1(αeαeαfα(0))+δt1(αeαeαeαfα(0))αeαeαF1α]\begin{aligned} \sum_{\alpha} \bold{e}_\alpha \bold{e}_\alpha f_{\alpha}^{(1)} &= -\tau \left[ \delta_t \frac{\partial}{\partial t_1}\left( \sum_{\alpha} \bold{e}_\alpha \bold{e}_\alpha f_{\alpha}^{(0)} \right) \right. +\\ &\quad \left. \delta_t \nabla_1 \cdot \left( \sum_{\alpha} \bold{e}_\alpha \bold{e}_\alpha \bold{e}_\alpha f_{\alpha}^{(0)} \right) - \sum_{\alpha} \bold{e}_\alpha \bold{e}_\alpha F_{1 \alpha} \right] \end{aligned}

Π(1)=δt(τ12)[t1(αeαeαfα(0))+1(αeαeαeαfα(0))]=δt(τ12){ρcs2[1u+(1u)T]+uF1+F1u}\begin{aligned} \Pi^{(1)} &= -\delta_t \left( \tau - \frac{1}{2} \right) \left[ \frac{\partial}{\partial t_1}\left( \sum_{\alpha} \bold{e}_\alpha \bold{e}_\alpha f_{\alpha}^{(0)} \right) + \nabla_1 \cdot \left( \sum_{\alpha} \bold{e}_\alpha \bold{e}_\alpha \bold{e}_\alpha f_{\alpha}^{(0)} \right) \right] \\ &= -\delta_t \left( \tau - \frac{1}{2} \right) \{\rho c_s^2 [\nabla_1 \bold{u}^* + (\nabla_1 \bold{u}^*)^T] + \bold{u}^*\bold{F}_1 + \bold{F}_1 \bold{u}^* \} \end{aligned}

式(10-4)的一阶矩表示为: ρut2+1Π(1)+δt2F1t1+1(ταeαeαF1α)=0\displaystyle \frac{\partial \rho \bold{u}^*}{\partial t_2} + \nabla_1 \Pi^{(1)} + \frac{\delta_t}{2} \frac{\partial \bold{F}_1}{\partial t_1} + \nabla_1 \cdot \left( \tau \sum_{\alpha} \bold{e}_\alpha \bold{e}_\alpha F_{1 \alpha} \right) = 0

那么同样根据假设的微分关系,即可还原出一阶矩对应的方程。这里直接写出使用真实流场速度 u^=u+Fδt/(2ρ)\hat{\bold{u}} = \bold{u}^* + \bold{F} \delta_t / (2 \rho) 表示的形式:

(ρu^)t+(ρu^u^)=p+F+{ρν[1u+(1u)T}{ρν[1a+(1a)T]}+δt2ϵ2Ft2+[τδt(uF+Fu)+δt2FF4ρταeαeαFα]\begin{aligned} \frac{\partial (\rho \hat{\bold{u}})}{\partial t} + \nabla \cdot (\rho \hat{\bold{u}} \hat{\bold{u}}) &= -\nabla p + \bold{F} + \nabla \cdot \{ \rho \nu [\nabla_1 \bold{u}^* + (\nabla_1 \bold{u}^*)^T \} \\ &\quad - \nabla \cdot \{ \rho \nu [\nabla_1 \bold{a} + (\nabla_1 \bold{a})^T] \} + \frac{\delta_t}{2} \epsilon^2 \frac{\partial \bold{F}}{\partial t_2} \\ &\quad+ \nabla \cdot \left[ \tau \delta_t (\bold{u^* F} + \bold{F u^*}) + \delta_t^2 \frac{\bold{FF}}{4 \rho} - \tau \sum_{\alpha} \bold{e}_\alpha \bold{e}_\alpha F_{\alpha} \right] \end{aligned}

其中 a=δtF/2ρ\bold{a} = \delta_t \bold{F} / 2 \rhoν=(τ12)cs2δt\nu = (\tau - \frac{1}{2}) c_s^2 \delta_t 为流体运动粘度。 通过对比N-S方程,可见其误差项为:

Err={ρν[1a+(1a)T]}+δt2ϵ2Ft2+[τδt(uF+Fu)+δt2FF4ρταeαeαFα]\text{Err} = - \nabla \cdot \{ \rho \nu [\nabla_1 \bold{a} + (\nabla_1 \bold{a})^T] \} + \frac{\delta_t}{2} \epsilon^2 \frac{\partial \bold{F}}{\partial t_2} + \nabla \cdot \left[ \tau \delta_t (\bold{u^* F} + \bold{F u^*}) + \delta_t^2 \frac{\bold{FF}}{4 \rho} - \tau \sum_{\alpha} \bold{e}_\alpha \bold{e}_\alpha F_{\alpha} \right]

但上述的展开方式和Wagner等[5]使用Taylor展开的结果并不一致。 Li 等[4:3] 指出这种错误的来源是:上文将 fα(0)=fα(eq)(ρ,u)f_{\alpha}^{(0)} = f_{\alpha}^{(eq)}(\rho, \bold{u}^*),从而得到了 αeαfα(1)=0\sum_{\alpha} \bold{e}_{\alpha} f_{\alpha}^{(1)} = 0。 然而实际上 fα(0)=fα(eq)(ρ,u^)f_{\alpha}^{(0)} = f_{\alpha}^{(eq)}(\rho, \hat{\bold{u}}) ,从而有 αeαfα(1)=δtF1/2\sum_{\alpha} \bold{e}_{\alpha} f_{\alpha}^{(1)} = -\delta_t \bold{F}_1 / 2

修正后的 Chapman-Enskog 展开

因此,需要将原本的 LBE 等效地修改为:

fα(x+eαδt,t+δt)fα(x,t)=F^α1τ[fα(x,t)fα(eq)(ρ,u^)](11)f_\alpha (\bold{x} + \bold{e}_\alpha \delta_t, t+\delta_t) - f_\alpha (\bold{x}, t) = \hat{F}_{\alpha} -\frac{1}{\tau} \left[ f_\alpha (\bold{x}, t) - f_\alpha^{(eq)} (\rho, \hat{\bold{u}}) \right] \tag{11}

其中 F^α=Fα1τ(fα(eq)(ρ,u^)fα(eq)(ρ,u))\hat{F}_{\alpha} = F_{\alpha} - \frac{1}{\tau} (f_\alpha^{(eq)} (\rho, \hat{\bold{u}}) - f_\alpha^{(eq)} (\rho, \bold{u}^*)) 为基于原始源项 FαF_{\alpha} 修改而来的等效源项。并且需要强调的是,式(11)中的平衡态采用真实流场速度 u^\hat{\bold{u}} 计算。 在式(11)这一等效公式上,执行与上一节一致的 Chapman-Enskog 展开后,可得到还原的N-S方程为:

(ρu^)t+(ρu^u^)=p+F+{ρν[1u^+(1u^)T}+[(τ12)δt(u^F+Fu^)ταeαeαF^α](12)\begin{aligned} \frac{\partial (\rho \hat{\bold{u}})}{\partial t} + \nabla \cdot (\rho \hat{\bold{u}} \hat{\bold{u}}) &= -\nabla p + \bold{F} + \nabla \cdot \{ \rho \nu [\nabla_1 \hat{\bold{u}} + (\nabla_1 \hat{\bold{u}})^T \} \\ &\quad + \nabla \cdot \left[ \left(\tau - \frac{1}{2}\right) \delta_t (\hat{\bold{u}}\bold{F} + \bold{F}\hat{\bold{u}}) - \tau \sum_{\alpha} \bold{e}_\alpha \bold{e}_\alpha \hat{F}_{\alpha} \right] \end{aligned} \tag{12}

式(12)的误差项为:

Err=[(τ12)δt(u^F+Fu^)ταeαeαF^α](13)\text{Err} = \nabla \cdot \left[ \left(\tau - \frac{1}{2}\right) \delta_t (\hat{\bold{u}}\bold{F} + \bold{F}\hat{\bold{u}}) - \tau \sum_{\alpha} \bold{e}_\alpha \bold{e}_\alpha \hat{F}_{\alpha} \right] \tag{13}

将 EDM 的源项代入式(13)中,得到: Err=δt2(FF4ρ)\text{Err}=-\delta_t^2 \nabla\cdot\left( \frac{\bold{FF}}{4 \rho} \right)

附录

(A)源项各阶速度矩的推导

这里仅以 αeαeαFα,EDM\displaystyle \sum_{\alpha} \bold{e}_\alpha \bold{e}_\alpha F_{\alpha,\mathrm{EDM}} 的计算举例来简单说明。

αeαeαFα,EDM=αeαeαδtwα[eαFcs2+12cs4(vEDMF+FvEDM):(eαeαcs2[I])]=δtcs2α[eαeα(wαeαF)]+δt2cs4αwαeαeα[(vEDMF+FvEDM):(eαeαcs2[I])]\begin{aligned} \sum_{\alpha} \bold{e}_{\alpha} \bold{e}_{\alpha} F_{\alpha,\mathrm{EDM}} &= \sum_{\alpha} \bold{e}_\alpha \bold{e}_\alpha \cdot \delta_t w_\alpha \left[ \frac{\bold{e}_\alpha \cdot \bold{F}}{c_s^2} + \right.\\ &\quad\left. \frac{1}{2 c_s^4} \left( \bold{v}_{\rm{EDM}} \bold{F} + \bold{F} \bold{v}_{\rm{EDM}} \right) : (\bold{e}_\alpha \bold{e}_\alpha - c_s^2 [\bold{I}]) \right] \\ &= \frac{\delta_t}{c_s^2} \sum_{\alpha} \left[ \bold{e}_\alpha \bold{e}_\alpha (w_\alpha \bold{e}_\alpha \cdot \bold{F}) \right] + \\ &\quad \frac{\delta_t}{2 c_s^4} \sum_{\alpha} w_{\alpha} \bold{e}_\alpha \bold{e}_\alpha \cdot [\left( \bold{v}_{\rm{EDM}} \bold{F} + \bold{F} \bold{v}_{\rm{EDM}} \right) : (\bold{e}_\alpha \bold{e}_\alpha - c_s^2 [\bold{I}])] \end{aligned}

一方面,对于 α[eαeα(wαeαF)]\displaystyle \sum_{\alpha} \left[ \bold{e}_\alpha \bold{e}_\alpha (w_\alpha \bold{e}_\alpha \cdot \bold{F}) \right] 这个矩阵,它的第 ii 行第 jj 列写作

kFkα(wαeαieαjeαk)=kFk0=0\sum_{k} F_{k} \sum_{\alpha}(w_{\alpha} e_{\alpha i} e_{\alpha j} e_{\alpha k}) = \sum_{k} F_{k} \cdot 0 = 0

另一方面,已知 vEDM=u+F2ρδt\bold{v}_{\rm{EDM}} = \bold{u}^{*} + \frac{\bold{F}}{2 \rho} \delta_{t},由于 (vEDMF+FvEDM)\left( \bold{v}_{\rm{EDM}} \bold{F} + \bold{F} \bold{v}_{\rm{EDM}} \right) 为矩阵。所以,下文为方便起见,我们记

[B]=vEDMF+FvEDM=uF+Fu+δtρFF[\bold{\mathbb{B}}] = \bold{v}_{\rm{EDM}} \bold{F} + \bold{F} \bold{v}_{\rm{EDM}} = \bold{u}^{*} \bold{F} + \bold{F} \bold{u}^{*} + \frac{\delta_t}{\rho}\bold{F}\bold{F}

[B]:(eαeαcs2[I])[\bold{\mathbb{B}}] : (\bold{e}_\alpha \bold{e}_\alpha - c_s^2 [\bold{I}]) 是一个标量。
对于矩阵 [A]=αwαeαeα{[B]:(eαeαcs2[I])}\displaystyle [\bold{\mathbb{A}}] = \sum_{\alpha} w_{\alpha} \bold{e}_\alpha \bold{e}_\alpha \cdot \{[\bold{\mathbb{B}}] : (\bold{e}_\alpha \bold{e}_\alpha - c_s^2 [\bold{I}])\} ,它的第 ii 行第 jjAij\mathbb{A}_{ij} 写作

Aij=αwαeαieαj[klBkl(eαkeαlcs2δkl)]=klBklα{wαeαieαj(eαkeαlcs2δkl)}=klBklcs4(δilδjk+δikδjl)=(Bij+Bji)cs4\begin{aligned} \mathbb{A}_{ij} &= \sum_{\alpha} w_{\alpha} e_{\alpha i} e_{\alpha j} \left[ \sum_{k} \sum_{l} \mathbb{B}_{kl} (e_{\alpha k} e_{\alpha l} - c_s^2 \delta_{kl}) \right] \\&= \sum_{k} \sum_{l} \mathbb{B}_{kl} \sum_{\alpha} \left\{ w_{\alpha} e_{\alpha i} e_{\alpha j} (e_{\alpha k} e_{\alpha l} - c_s^2 \delta_{kl}) \right\} \\&= \sum_{k} \sum_{l} \mathbb{B}_{kl} \cdot c_s^4 (\delta_{il} \delta_{jk} + \delta_{ik} \delta_{jl}) \\&= (\mathbb{B}_{ij} +\mathbb{B}_{ji}) c_s^4 \end{aligned}

因为 [B][\mathbb{B}] 是对称矩阵,所以 Aij=2cs4Bij\mathbb{A}_{ij} =2 c_s^4 \mathbb{B}_{ij}。也就有:

αeαeαFα,EDM=0+δt2cs4αwαeαeα[(vEDMF+FvEDM):(eαeαcs2[I])]=δt(vEDMF+FvEDM)=δt(uF+Fu+δtρFF)\begin{aligned} \sum_{\alpha} \bold{e}_\alpha \bold{e}_\alpha F_{\alpha,\mathrm{EDM}} &= \vec{\bold{0}} + \frac{\delta_t}{2 c_s^4} \sum_{\alpha} w_{\alpha} \bold{e}_\alpha \bold{e}_\alpha \cdot [\left( \bold{v}_{\rm{EDM}} \bold{F} + \bold{F} \bold{v}_{\rm{EDM}} \right) : (\bold{e}_\alpha \bold{e}_\alpha - c_s^2 [\bold{I}])] \\&= \delta_t \left( \bold{v}_{\rm{EDM}} \bold{F} + \bold{F} \bold{v}_{\rm{EDM}} \right) \\&= \delta_t \left( \bold{u}^{*} \bold{F} + \bold{F} \bold{u}^{*} + \frac{\delta_t}{\rho}\bold{F}\bold{F} \right) \end{aligned}

综上, αeαeαFα,EDM=δt(uF+Fu+δtFFρ)\displaystyle \sum_{\alpha} \bold{e}_\alpha \bold{e}_\alpha F_{\alpha,\mathrm{EDM}} = \delta_t \left( \bold{u}^* \bold{F} + \bold{F}\bold{u}^* + \delta_t \frac{\bold{FF}}{\rho} \right) 成立。其他低阶矩均采用类似方法进行计算。当然,这也同样可以拓展至其他源项的速度矩计算。

(B)修正源项的计算

由于 a=δtF/2ρ=u^u\bold{a} = \delta_t \bold{F} / 2 \rho = \hat{\bold{u}} - \bold{u}^* ,则 ρa=δtF/2\rho \bold{a} = \delta_t \bold{F} / 2 。因此:

1τ(fα(eq)(ρ,u^)fα(eq)(ρ,u))=ρwατ[eαacs2+12cs4(u^u^uu):(eαeαcs2[I])]=ρwατ[eαacs2+12cs4(ua+au+aa):(eαeαcs2[I])]=wαδtτ[eαF2cs2+12cs4(12(uF+Fu)+δtFF4ρ):(eαeαcs2[I])]\begin{aligned} & \frac{1}{\tau} (f_\alpha^{(eq)} (\rho, \hat{\bold{u}}) - f_\alpha^{(eq)} (\rho, \bold{u}^*)) \\=& \frac{\rho w_{\alpha}}{\tau} \left[ \frac{\bold{e}_{\alpha} \cdot \bold{a}}{c_s^2} + \frac{1}{2 c_s^4} (\hat{\bold{u}}\hat{\bold{u}} - \bold{u^* u^*}):(\bold{e}_\alpha \bold{e}_\alpha - c_s^2 [\bold{I}]) \right] \\=& \frac{\rho w_{\alpha}}{\tau} \left[ \frac{\bold{e}_{\alpha} \cdot \bold{a}}{c_s^2} + \frac{1}{2 c_s^4} ( \bold{u^* a} + \bold{a u^*} + \bold{aa}):(\bold{e}_\alpha \bold{e}_\alpha - c_s^2 [\bold{I}]) \right] \\=& \frac{w_{\alpha} \delta_t}{\tau} \left[ \frac{\bold{e}_{\alpha} \cdot \bold{F}}{2 c_s^2} + \frac{1}{2 c_s^4} \left( \frac{1}{2} (\bold{u^* F} + \bold{F u^*}) + \delta_t \frac{\bold{FF}}{4 \rho} \right) : (\bold{e}_\alpha \bold{e}_\alpha - c_s^2 [\bold{I}]) \right] \end{aligned}

由于 EDM 源项的表达式为:

Fα,EDM=δtwα[eαFcs2+12cs4(u^F+Fu^):(eαeαcs2[I])]F_{\alpha,\mathrm{EDM}} = \delta_t w_\alpha \left[ \frac{\bold{e}_\alpha \cdot \bold{F}}{c_s^2} + \frac{1}{2 c_s^4} \left( \hat{\bold{u}} \bold{F} + \bold{F} \hat{\bold{u}} \right) : (\bold{e}_\alpha \bold{e}_\alpha - c_s^2 [\bold{I}]) \right]

因此,其对应修正源项为

Fα,EDM1τ(fα(eq)(ρ,u^)fα(eq)(ρ,u))=eαFcs2(112τ)+wαδt2cs4{[(12τ1)(uF+Fu)(aF+Fa)δt4ρτFF]:(eαeαcs2[I])}\begin{aligned} & F_{\alpha,\mathrm{EDM}} - \frac{1}{\tau} (f_\alpha^{(eq)} (\rho, \hat{\bold{u}}) - f_\alpha^{(eq)} (\rho, \bold{u}^*)) \\=& \frac{\bold{e}_\alpha \cdot \bold{F}}{c_s^2} (1 - \frac{1}{2 \tau}) + \\& \frac{w_{\alpha} \delta_t}{2 c_s^4} \left\{ \left[ (\frac{1}{2 \tau} - 1) (\bold{u^* F} + \bold{F u^*}) - (\bold{a F} + \bold{F a}) \right.\right. \\& \left.\left. - \frac{\delta_t}{4 \rho \tau} \bold{FF} \right] : (\bold{e}_\alpha \bold{e}_\alpha - c_s^2 [\bold{I}]) \right\} \end{aligned}


  1. Kupershtokh, A. L. New method of incorporating a body force term into the lattice Boltzmann equation. in Proceeding of the 5th international EHD workshop 241–246 (Poitiers, France, 2004). ↩︎ ↩︎

  2. A.L. Kupershtokh, D.A. Medvedev, & D.I. Karpov (2009). On equations of state in a lattice Boltzmann method. Computers & Mathematics with Applications, 58(5), 965-974. DOI:10.1016/j.camwa.2009.02.024. ↩︎ ↩︎ ↩︎

  3. Q. Li, K.H. Luo, Q.J. Kang, Y.L. He, Q. Chen, & Q. Liu (2016). Lattice Boltzmann methods for multiphase flow and phase-change heat transfer. Progress in Energy and Combustion Science, 52, 62-105. DOI:10.1016/j.pecs.2015.10.001. ↩︎

  4. Li, Q., Zhou, P., & Yan, H. (2016). Revised Chapman-Enskog analysis for a class of forcing schemes in the lattice Boltzmann method. Physical Review E, 94, 043313. DOI:10.1103/PhysRevE.94.043313. ↩︎ ↩︎ ↩︎ ↩︎

  5. Wagner, A. (2006). Thermodynamic consistency of liquid-gas lattice Boltzmann simulations. Physical Review E, 74, 056703. DOI: 10.1103/PhysRevE.74.056703. ↩︎

基于这篇的内容,我用 Python 写了一份对单种颗粒系统进行粗粒化的代码。

其具体使用流程为:

  1. obj = CG_mono_3D(...): 初始化。
  2. obj.set_domain(...): 设置矩形的计算域。
  3. obj.get_CG_data(R, CG_width): 对 R 点进行粗粒化,其粗粒化的长度为 CG_width
DEM_CG_mono.py 这里使用Github Gist展示代码。如果无法查看下面内容,青科学上网。

离散单元法(Discrete Element Method,简称DEM)是颗粒流数值模拟的重要数值方法,被用于各种各样的颗粒流定量研究中。颗粒流的粗粒化(Coarse Graining),便是将颗粒流流场的大量数据转化为连续场数据的数值方法。

在开始介绍之前,先简要列出主要的参考资料:
  • Breard, E. C. P., Dufek, J., Fullard, L., & Carrara, A. (2020). The Basal Friction Coefficient of Granular Flows With and Without Excess Pore Pressure: Implications for Pyroclastic Density Currents, Water‐Rich Debris Flows, and Rock and Submarine Avalanches. Journal of Geophysical Research: Solid Earth, 125(12), e2020JB020203. DOI:10.1029/2020JB020203.
  • Lacaze, L., & Kerswell, R. R. (2009). Axisymmetric Granular Collapse: A Transient 3D Flow Test of Viscoplasticity. Physical Review Letters, 102(10), 108305. DOI:10.1103/PhysRevLett.102.108305.
  • Weinhart, T., Labra, C., Luding, S., & Ooi, J. Y. (2016). Influence of coarse‐graining parameters on the analysis of DEM simulations of silo flow. Powder Technology, 293, 138–148. DOI:10.1016/j.powtec.2015.11.052

单种颗粒的粗粒化

为简单起见,先从仅存在单种球形颗粒的颗粒流开始说起,并且只考虑获取空间内一点 r\boldsymbol{r}tt 时刻的粗粒化数据。

粗粒化函数

在这里,引入高斯函数

W(r)={1Vwexp(r22w),r<c0,otherwiseW(\boldsymbol{r}) = \begin{cases} \frac{1}{V_w} \exp{\left(- \frac{\vert\boldsymbol{r}\vert^2}{2w} \right)} ,& {\vert\boldsymbol{r}\vert} < c \\ 0 ,& \text{otherwise} \end{cases}

其中: ww 为粗粒化宽度; c=3wc = 3 w 为粗粒化截断长度; VwV_w 是确保其密度积分等于总质量的系数

Vw=22w3π32erf(c22w)4cw2πexp(c22w2)V_w = 2 \sqrt{2} \cdot w^3 \pi^{\frac{3}{2}} \mathrm{erf}\left( \frac{c \sqrt{2}}{2 w} \right) - 4 c w^2 \pi \exp{\left( \frac{- c^2}{2 w^2} \right)}

Weinhart 等建议 ww 的取值范围应在 [0.75dmean,1.25dmean][0.75 d_{\mathrm{mean}}, 1.25 d_{\mathrm{mean}}] 之间,其中 dmeand_{\mathrm{mean}} 为平均颗粒直径。

密度和动量的计算

tt 时刻,单种颗粒的集合为 qq 。对于其中的第 ii 个球,其位置矢量为 ri\boldsymbol{r}_i ,质量为 mim_i ,速度为 ui\boldsymbol{u}_i

密度的粗粒化表达式为:

ρ(r,t)=iqmiW(rri(t))\rho(\boldsymbol{r}, t) = \sum\limits_{i \in q} m_i W(\boldsymbol{r} - \boldsymbol{r}_{i}(t))

动量的粗粒化表达式为:

j(r,t)=iqmiuiW(rri(t))\boldsymbol{j}(\boldsymbol{r}, t) = \sum\limits_{i \in q} m_i \boldsymbol{u}_i W(\boldsymbol{r} - \boldsymbol{r}_{i}(t))

所以,速度的计算需要通过 j\boldsymbol{j}ρ\rho 完成:

u(r,t)=j(r,t)/ρ(r,t)\boldsymbol{u}(\boldsymbol{r}, t) = \boldsymbol{j}(\boldsymbol{r}, t) / \rho(\boldsymbol{r}, t)

根据 W(r)W(\boldsymbol{r}) 的定义,当 rri(t)c\vert \boldsymbol{r} - \boldsymbol{r}_{i}(t) \vert \ge c 时, W(rri(t))=0W(\boldsymbol{r} - \boldsymbol{r}_{i}(t)) = 0
因此在实际计算中可根据这一点跳过某些球的计算。

应力张量的计算

应力张量 [σ]=σαβ[\boldsymbol{\sigma}] = \sigma_{\alpha\beta} 被表示为由接触作用产生的部分 σαβ(c)\sigma_{\alpha\beta}^{(c)} ,以及由动能作用产生的部分 σαβ(k)\sigma_{\alpha\beta}^{(k)} 。即:

σαβ=σαβ(k)+σαβ(c)\sigma_{\alpha\beta} = \sigma_{\alpha\beta}^{(k)} + \sigma_{\alpha\beta}^{(c)}

对于 σαβ(k)\sigma_{\alpha\beta}^{(k)} ,有:

σαβ(k)(r,t)=iqmivi,αvi,βW(rri(t))\sigma_{\alpha\beta}^{(k)}(\boldsymbol{r}, t) = \sum\limits_{i \in q} m_i v_{i,\alpha}^{'} v_{i,\beta}^{'} W(\boldsymbol{r} - \boldsymbol{r}_{i}(t))

其中 vi,α=ui,αuα(r,t)v_{i,\alpha}^{'} = u_{i,\alpha} - u_{\alpha}(\boldsymbol{r}, t) 为第 ii 个球的速度波动值。

对于 σαβ(c)\sigma_{\alpha\beta}^{(c)} ,考虑第 ii 个球的所有接触:

σαβ(c)(r,t)=iqjQˉjiFij,αlij,β01W(rri(t)+slij)ds\sigma_{\alpha\beta}^{(c)}(\boldsymbol{r}, t) = \sum\limits_{i \in q} \sum\limits_{j \in \bar{Q}}^{j \neq i} F_{ij,\alpha} l_{ij,\beta} \int_{0}^{1} W(\boldsymbol{r} - \boldsymbol{r}_{i}(t) + s \boldsymbol{l}_{ij}) \mathrm{d}s

式中

  • jj 是整个颗粒系统 Qˉ\bar{Q} 中的一个球(jij \neq i),并且球 ii 与球 jj 发生接触;
  • Fij\boldsymbol{F}_{ij} 是球 ii 所受到的来自球 jj 接触的力, Fij,αF_{ij,\alpha} 为其 α\alpha 方向分量;
  • lij\boldsymbol{l}_{ij} 是球 ii 与球 jj 的接触矢量(从 iijj), lij,αl_{ij,\alpha} 为其 α\alpha 方向分量。

在实际操作中,对于

01W(rri(t)+slij)ds\int_{0}^{1} W(\boldsymbol{r} - \boldsymbol{r}_{i}(t) + s \boldsymbol{l}_{ij}) \mathrm{d}s

我选择使用复化 Simpson 积分计算其数值,以简化操作。

多种颗粒的粗粒化

假设一个颗粒流系统 Qˉ\bar{Q} 中有 QQ 类颗粒,对于第 qq 类颗粒 qQq \in Q, 可以使用单类颗粒粗粒化的公式计算出:第 qq 类颗粒的粗粒化密度 ρq(r,t)\rho^{q}(\boldsymbol{r}, t) 、速度 uq(r,t)\boldsymbol{u}^{q}(\boldsymbol{r}, t) 和应力张量 σαβq(r,t)\sigma_{\alpha\beta}^{q}(\boldsymbol{r}, t)

所以整个颗粒流系统 Qˉ\bar{Q} 的粗粒化结果为:

ρ(r,t)=qQρq(r,t)u(r,t)=qQuq(r,t)σαβ(r,t)=qQσαβq(r,t)\begin{aligned} \rho(\boldsymbol{r}, t) &= \sum_{q \in Q} \rho^{q}(\boldsymbol{r}, t) \\ \boldsymbol{u}(\boldsymbol{r}, t) &= \sum_{q \in Q} \boldsymbol{u}^{q}(\boldsymbol{r}, t) \\ \sigma_{\alpha\beta}(\boldsymbol{r}, t) &= \sum_{q \in Q} \sigma_{\alpha\beta}^{q}(\boldsymbol{r}, t) \\ \end{aligned}

使用粗粒化数据提取颗粒流流变参数

这里以 μ(I)\mu(I) 流变关系为例子,以上文的文献作为参照。

记速度剪切率张量 γij=uixj+ujxi\gamma_{ij} = \frac{\partial u_i}{\partial x_j} + \frac{\partial u_j}{\partial x_i} ,其中 uiu_i 源自粗粒化速度场。令:

γijd=γijδij3tr([γ])\gamma_{ij}^{d} = \gamma_{ij} - \frac{\delta_{ij}}{3} \mathrm{tr}([\gamma])

其中 tr([γ])=γxx+γyy+γzz\mathrm{tr}([\gamma]) = \gamma_{xx} + \gamma_{yy} + \gamma_{zz}[γ][\gamma] 的迹。

所以剪切应变率定义为:

γ˙=12γijdγijd|\dot{\gamma}| = \sqrt{\frac{1}{2} {\gamma}_{ij}^{d} {\gamma}_{ij}^{d} }

定义压强为 p=13tr([σ])=(σxx+σyy+σzz)/3p = \frac{1}{3} \mathrm{tr}([\sigma]) = (\sigma_{xx} + \sigma_{yy} + \sigma_{zz}) / 3,偏应力张量为: [τ]=τij=σijpδij[\tau] = \tau_{ij} = \sigma_{ij} - p \cdot \delta_{ij}, 所以切应力为:

τ=12τijτij|\tau| = \sqrt{\frac{1}{2} \tau_{ij} \tau_{ij} }

简单的粗粒化代码示意

我用 Python 写了一份对单种颗粒系统进行粗粒化的代码,详情见此网页

我的这个 Github Page 大约花了我一天时间从完全不懂到凑活着用。
这里简单分享一下我使用 hexo + hexo-next-theme + giscus 实现这个 Github Page 的参考资料。

  1. 建站
    从零开始用Hexo+GithubPage搭建个人网站(保姆级) - 哔哩哔哩

  2. 使用 Github Action
    如何优雅的使用Github Action服务来将Hexo部署到Github Pages - CSDN博客
    GitHub Pages | Hexo

  3. Katex 渲染公式
    Hexo博客渲染KaTeX数学公式 | Feng’s Blog

  4. Giscus 评论系统
    Hexo 使用 giscus 评论系统 | 404频道
    Hexo 评论系统(Giscus)

0%