【LBM教程 3】Boltzmann 方程基础

关注微信同名公众号,获取更多信息

引言

Boltzmann 方程是统计力学和气体动力学的核心方程之一,它描述了气体粒子的分布函数在时间和空间上的演化。相较于传统的流体力学方程(如 Navier-Stokes 方程),Boltzmann 方程能够在更广泛的尺度上适用,包括稀薄气体、非平衡态流动以及微尺度现象。

本文我们将从基础概念出发,深入探讨 Boltzmann 方程的物理背景和数学表达,包括如何从微观粒子运动推导 Boltzmann 方程,以及如何通过 Chapman-Enskog 方法分析其如何与宏观流体方程建立联系。为了使理论更加直观,我们还会给出 C++ 代码示例,展示其数值求解方法。

Boltzmann方程的物理背景

1、统计力学与分布函数

在统计物理学中,我们研究的是大量粒子的平均行为,而不是单个粒子的轨迹。为了描述流体的统计状态,我们引入分布函数 f ( x , u , t ) f(\mathbf{x},\mathbf{u},t) f(x,u,t),定义为:
f ( x , u , t ) d 3 x d 3 u f(\mathbf{x},\mathbf{u},t)d^3xd^3u f(x,u,t)d3xd3u
代表在时刻 t t t 时,空间位置 x \mathbf{x} x 附近的体积元 d 3 x d^3x d3x,且速度接近 u \mathbf{u} u 的速度元 d 3 u d^3u d3u 内的粒子数。这个分布函数是 Boltzmann 方程的核心变量,它能够统计性地描述粒子的分布情况。

通过对分布函数在速度空间 d 3 u d^3u d3u 上积分,我们可以得到一些宏观物理量:

  • 质量密度
    ρ ( x , t ) = ∫ f ( x , u , t ) d 3 u \rho(\mathbf{x},t)=\int f(\mathbf{x},\mathbf{u},t)d^3u ρ(x,t)=f(x,u,t)d3u

  • 宏观速度
    ρ u ( x , t ) = ∫ u f ( x , u , t ) d 3 u \rho\mathbf{u}(\mathbf{x},t)=\int \mathbf{u}f(\mathbf{x},\mathbf{u},t)d^3u ρu(x,t)=uf(x,u,t)d3u

  • 动量流密度
    P = ∫ u u f ( x , u , t ) d 3 u \mathbf{P}=\int \mathbf{u}\mathbf{u}f(\mathbf{x},\mathbf{u},t)d^3u P=uuf(x,u,t)d3u

  • 内能密度
    ρ e = ∫ 1 2 ∣ u ∣ 2 f ( x , u , t ) d 3 u \rho e=\int \frac{1}{2} |\mathbf{u}|^2 f(\mathbf{x},\mathbf{u},t)d^3u ρe=21u2f(x,u,t)d3u

这些量是流体力学中的基本变量,Boltzmann 方程的求解能够给出这些变量的演化规律。

2、Boltzmann 方程的建立

假设气体由大量相互作用的粒子组成,每个粒子按照牛顿第二定律运动,其速度和位置随着时间的演化由如下微分方程决定:
d x d t = u , d u d t = F , \frac{d \mathbf{x}}{dt}=\mathbf{u}, \frac{d \mathbf{u}}{dt}=\mathbf{F}, dtdx=u,dtdu=F,
其中 F \mathbf{F} F 代表外力(如重力、电场力等)。

为了推导 Boltzmann 方程,我们可以从粒子微观运动的角度进行。考虑粒子在相空间 ( x , u ) (\mathbf{x},\mathbf{u}) (x,u) 的分布函数 f ( x , u , t ) f(\mathbf{x},\mathbf{u},t) f(x,u,t)。粒子的状态随时间演化遵循以下基本规律:

  • 粒子自由运动:粒子沿着速度 u \mathbf{u} u 进行漂移,导致分布函数发生对流变化:
    ∂ f ∂ t + u ⋅ ∇ x f \frac{\partial f}{\partial t}+\mathbf{u} \cdot \nabla_{\mathbf{x}} f tf+uxf
  • 外力作用:若系统存在外力 F \mathbf{F} F,粒子的速度会随时间变化,导致分布函数在速度空间中发生漂移:
    F = m d u d t ⇒ d u d t = F m \mathbf{F}=m \frac{d \mathbf{u}}{dt} \Rightarrow \frac{d \mathbf{u}}{dt}=\frac{\mathbf{F}}{m} F=mdtdudtdu=mF
    因此,外力对分布函数的影响为:
    F ⋅ ∇ u f \mathbf{F} \cdot \nabla_{\mathbf{u}} f Fuf
  • 碰撞效应:粒子之间的碰撞会使分布函数趋向于平衡态,这一项通常用碰撞算子 Ω ( f ) \Omega (f) Ω(f) 表示:

( ∂ f ∂ t ) collision = Ω ( f ) \left(\frac{\partial f}{\partial t} \right)_\text{collision}=\Omega (f) (tf)collision=Ω(f)

综上所述,Boltzmann 方程可以写成如下形式:

∂ f ∂ t + u ⋅ ∇ x f + F ⋅ ∇ u f = Ω ( f ) \frac{\partial f}{\partial t}+\mathbf{u} \cdot \nabla_{\mathbf{x}} f + \mathbf{F} \cdot \nabla_{\mathbf{u}} f=\Omega (f) tf+uxf+Fuf=Ω(f)
其中,左侧项描述粒子的自由运动,包括时间变化、空间输运和外力作用;右侧项代表粒子间的碰撞作用,导致分布函数随时间变化。 这个碰撞项非常复杂,它决定了流体的粘性、热传导等输运性质

Maxwell-Boltzmann平衡分布

在粒子系统达到平衡态时,分布函数趋近于 Maxwell-Boltzmann 分布:
f e q = ρ ( 1 2 π R T ) 3 / 2 e x p ( − ∣ ξ − u ∣ 2 2 R T ) f^{eq}=\rho {\left( \frac{1}{2 \pi RT} \right)}^{3/2} exp{\left( - \frac{{|\mathbf{\xi}-\mathbf{u}|}^2}{2RT} \right)} feq=ρ(2πRT1)3/2exp(2RTξu2)
在局部平衡条件下,Boltzmann 方程的碰撞项可以用 BGK 模型近似处理,使得求解过程大大简化。

Boltzmann碰撞项

1、碰撞项的数学表达

Boltzmann 方程的核心是碰撞项,它描述了粒子在发生碰撞时的统计行为。完整的碰撞积分方程为:
( ∂ f ∂ t ) collision = ∫ ∫ [ f ′ f ∗ ′ − f f ∗ ] B ( g , Ω ) d Ω d 3 u ∗ \left(\frac{\partial f}{\partial t} \right)_\text{collision} = \int \int \left[ f^{'} f_{*}^{'} -f f_{*} \right] B(g, \Omega) d \Omega d^3 u_{*} (tf)collision=[ffff]B(g,Ω)dΩd3u

  • f f f f ∗ f_{*} f 是碰撞前的粒子分布函数;
  • f ′ f^{'} f f ∗ ′ f_{*}^{'} f 是碰撞后的粒子分布函数;
  • B ( g , Ω ) B(g, \Omega) B(g,Ω) 是碰撞核,决定粒子的碰撞概率;
  • g = ∣ u − u ∗ ∣ g=|\mathbf{u}-\mathbf{u_{*}}| g=uu 是相对速度;
  • d Ω d \Omega dΩ 代表散射方向的积分。

这个积分表示的是粒子进入和离开特定速度状态的概率,由于完整的 Boltzmann 碰撞积分计算复杂,一般会采用近似方法进行简化。

2、BGK 近似

Bhatnagar-Gross-Krook (BGK) 近似是一种经典的碰撞模型,它假设粒子系统的碰撞趋向于局部平衡态,采用如下模型:
( ∂ f ∂ t ) collision = − 1 τ [ f − f e q ] \left(\frac{\partial f}{\partial t} \right)_\text{collision}=- \frac{1}{\tau} \left[ f-f^{eq} \right] (tf)collision=τ1[ffeq]

其中, f e q f^{eq} feq 为局部 Maxwell-Boltzmann 平衡分布, τ \tau τ 为弛豫时间,表示系统恢复平衡的时间尺度。

BGK 近似计算简单,广泛用于格子 Boltzmann 方法 (LBM)。

Chapman-Enskog展开

Chapman-Enskog 展开是一种从 Boltzmann 方程推导 Navier-Stokes 方程的经典方法。假设分布函数 f f f 在局部平衡态附近作微扰展开:
f = f e q + ϵ f ( 1 ) + ϵ ( 2 ) f ( 2 ) + . . . f = f^{eq} + \epsilon f^{(1)} + \epsilon^{(2)} f^{(2)} + ... f=feq+ϵf(1)+ϵ(2)f(2)+...
其中, ϵ \epsilon ϵ 为 Knudsen 数(气体自由程与特征尺度之比), f ( 1 ) f^{(1)} f(1) f ( 2 ) f^{(2)} f(2) 分别为微扰修正项。

通过将展开项代入 Boltzmann 方程,并逐级展开微扰项,可以推导出粘性应力、热传导等输运性质。不同阶展开可以得到:

  • 0 阶近似:恢复 Euler 方程(无粘流动);
  • 1 阶近似:恢复 Navier-Stokes 方程(包含粘性和热传导效应);
  • 2 阶近似:Burnett 方程(描述非平衡现象,如稀薄气体流动)。

对于一阶展开得到的 Navier-Stokes 方程,粘性系数由以下公式给出:

μ = ρ τ R T \mu=\rho \tau RT μ=ρτRT

C++ 代码实现

以下示例展示如何用 C++ 实现简单的 BGK 模型,通过不断执行碰撞函数,系统逐渐趋于平衡。

#include <iostream>
#include <vector>
#include <cmath>

const int NX = 100;
const int NY = 100;
const double tau = 0.6;
const double omega = 1.0 / tau;
std::vector<std::vector<double>> f(NX, std::vector<double>(NY, 1.0));

void collision() 
{
    for (int i = 0; i < NX; ++i) 
    {
        for (int j = 0; j < NY; ++j) 
        {
            double feq = 1.0;  // 简化为均匀分布
            f[i][j] += omega * (feq - f[i][j]);
        }
    }
}

int main() 
{
    for (int step = 0; step < 1000; ++step) 
    {
        collision();
    }
    std::cout << "Simulation completed." << std::endl;
    return 0;
}

总结

Boltzmann 方程从微观粒子运动出发,成功描述了气体动力学与宏观流体行为的联系。通过 BGK 模型简化碰撞项,我们能更高效地数值求解 Boltzmann 方程。本篇文章从基础原理、平衡分布函数到 Chapman-Enskog 展开进行了详细探讨,并给出了简单的 C++ 代码示例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值