当前位置: 首页 > news >正文

格子波尔兹曼LBM在甲烷吸附解吸研究中的应用及文献复现

格子波尔兹曼 LBM 甲烷吸附解吸 文献复现

最近在研究格子波尔兹曼方法(LBM)在甲烷吸附解吸中的应用,顺便复现了一篇文献的模型。LBM作为一种介观尺度的数值模拟方法,在处理多孔介质中的流体流动和传质问题上有着独特的优势。今天就来聊聊这个过程,顺便分享一些代码片段。

首先,LBM的核心思想是通过离散速度模型来模拟流体的宏观行为。对于甲烷吸附解吸问题,我们需要考虑流体在多孔介质中的流动以及甲烷分子在固体表面的吸附和解吸过程。文献中提到的模型是一个二维的D2Q9模型,也就是在二维空间中使用9个离散速度方向。

import numpy as np 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,速度为零。

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模型来描述,迁移过程则是将分布函数沿着速度方向移动到相邻的格子。

def collide(f, tau): rho = np.sum(f, axis=2) u = np.zeros((nx, ny, 2)) for i in range(9): u[:, :, 0] += e[i, 0] * f[:, :, i] u[:, :, 1] += e[i, 1] * f[:, :, i] u /= rho[:, :, np.newaxis] feq = np.zeros_like(f) for i in range(9): feq[:, :, 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) f += (feq - f) / tau return f def stream(f): for i in range(9): f[:, :, i] = np.roll(f[:, :, i], e[i], axis=(0, 1)) return f

对于甲烷吸附解吸过程,文献中引入了一个额外的吸附项,用来描述甲烷分子在固体表面的吸附和解吸行为。这个吸附项可以通过一个简单的动力学模型来描述,具体形式如下:

def adsorption(f, k_ads, k_des): rho = np.sum(f, axis=2) q = k_ads * rho - k_des * (1 - rho) return q

最后,我们将这些步骤整合到一个主循环中,进行时间步进模拟。

def simulate(nx, ny, nsteps, tau, k_ads, k_des): f = initialize_f(1, np.zeros((nx, ny, 2))) for step in range(nsteps): f = collide(f, tau) f = stream(f) q = adsorption(f, k_ads, k_des) f[:, :, 0] += q # 假设吸附只影响静止方向 return f

通过这个简单的模型,我们可以模拟甲烷在多孔介质中的吸附解吸过程。当然,实际应用中还需要考虑更多的细节,比如边界条件、多组分流体等。不过,这个模型已经能够很好地展示LBM在处理这类问题上的潜力。

复现文献的过程让我对LBM有了更深的理解,也让我意识到在实际应用中还有很多可以改进的地方。希望这篇博文能对正在研究LBM的朋友有所帮助,也欢迎大家在评论区讨论交流。

http://www.gsyq.cn/news/94666.html

相关文章:

  • TCR-T细胞疗法
  • 2025最新人力资源系统/人力资源管理系统top5推荐!市场主流公司权威榜单发布 - 全局中转站
  • DeepSeek-R1 与 OpenAI o3 的启示:Test-Time Compute 技术不再迷信参数堆叠
  • 强化学习——PPO、DPO、GRPO的原理推导
  • Does Reinforcement Learning Really Incentivize Reasoning Capacity in LLMs Beyond the Base Model?
  • FLAC3D随机裂隙建模:从基础到复杂网络
  • 北京老药丸回收服务权威推荐榜单 - 品牌排行榜单
  • 元素周期表1.0.7更新
  • Level 0 → Level 1
  • 网络请求性能优化实战指南:告别卡顿与超时
  • 2025年互联网AI岗位需求增长:开发、产品、运维三大方向核心技能与认证指南
  • “传智杯”第六届河南省高校新生程序设计大赛热身赛-赛后总结
  • 基于Python+Django的大学生兴趣部落交流系统设计与实现
  • 【Java毕设源码分享】基于springboot+vue的横向课题信息管理系统设计与实现(程序+文档+代码讲解+一条龙定制)
  • 从微信群“服务器抖动”看超级应用的高并发稳定性攻坚之道
  • 曲终之时
  • 使用docker安装ollama及ollama拉取模型的总结
  • 大白话Reactor模式
  • 基于MATLAB的零件表面缺陷检测系统设计与实现
  • python装饰器
  • CAIE认证:一次关于AI认知与思维升级的个人记录
  • Part 02|我为什么开始自己做一套商城系统
  • B站的视频怎么下载到电脑?
  • 21.数据库连接池
  • 放过自己,也放过你的领导
  • Part 03|当客户真的要交付时,我最先考虑的不是技术
  • 我对防抖(Debounce)的一点理解与实践:从基础到立即执行
  • [网鼎杯 2020 青龙组]AreUSerialz(个人记录写题笔记,含PHP反序列化的原理、漏洞成因以及利用技巧)
  • Comsol Multiphysics数值模拟
  • 战网注册后显示无法登录