
格子波尔兹曼LBM在甲烷吸附解吸研究中的文献复现
最近在研究格子波尔兹曼方法(LBM)在甲烷吸附解吸中的应用,顺便复现了一篇文献的模型。LBM作
为一种介观尺度的数值模拟方法,在处理多孔介质中的流体流动和传质问题上有着独特的优势。今天就来
聊聊这个过程,顺便分享一些代码片段。
首先,LBM的核心思想是通过离散速度模型来模拟流体的宏观行为。对于甲烷吸附解吸问题,我们需
要考虑流体在多孔介质中的流动以及甲烷分子在固体表面的吸附和解吸过程。文献中提到的模型是一个
二维的D2Q9模型,也就是在二维空间中使用9个离散速度方向。
```python
import numpy as np
# 定义D2Q9模型的权重和速度向量
w = np.array([4/9, 1/9, 1/9, 1/9, 1/9, 1/36, 1/36, 1/36, 1/36])
e = np.array([[0, 0], [1, 0], [0, 1], [-1, 0], [0, -1], [1, 1], [-1, 1], [-1, -1], [
1, -1]])
```
接下来是初始化分布函数。文献中使用了简单的均匀初始化方法,即所有方向的分布函数都相等。
这里我们假设初始密度为1,速度为零。
```python
def initialize_f(rho, u):
f = np.zeros((nx, ny, 9))
for i in range(9):
f[:, :, i] = w[i] * rho * (1 + 3 * np.dot(e[i], u) + 9/2 * np.dot(e[i], u)**
2 - 3/2 * np.linalg.norm(u)**2)
return f
```
在LBM中,碰撞和迁移是两个关键步骤。碰撞过程通过BGK模型来描述,迁移过程则是将分布函数沿
着速度方向移动到相邻的格子。
```python
def collide(f, tau):
rho = np.sum(f, axis=2)
u = np.zeros((nx, ny, 2))
for i in range(9):