当前位置: 首页 > 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.jsqmd.com/news/84447/

相关文章:

  • 从零构建大模型智能体:OpenAI Function Calling智能体实战
  • 基于定子磁场矢量控制的异步电机磁链观测模型研究与应用
  • 光伏充电站的“弹性“密码:当电动车遇上数学建模
  • 告别CRUD Boy!Java缓存精要,是你突破技术天花板的“第一课”! - 详解
  • Petrel一体化软件平台压裂模块Kinetix与地应力模块Visage培训视频3套及模型文件
  • Nordic-nRF54L 系列架构全景:从蓝牙 6.0 到超低功耗设计详解
  • 2025最新人力资源系统/人力资源管理系统top5推荐!市场主流公司权威榜单发布 - 全局中转站
  • 2025人事系统/人事管理系统/人事考勤系统品牌TOP5推荐,优质公司权威榜单发布,赋能企业高效运营与人才发展 - 全局中转站
  • 虚幻引擎源码-剖析与改写Actor源码中的扫掠检测机制-避免物体移动穿墙
  • TCR-T细胞疗法
  • DeepSeek-R1 与 OpenAI o3 的启示:Test-Time Compute 技术不再迷信参数堆叠
  • win10系统盘制作
  • Does Reinforcement Learning Really Incentivize Reasoning Capacity in LLMs Beyond the Base Model?
  • BetterDiscord终极个性化定制完全攻略
  • 不止是用AI干活:IT人要学会把AI变成“个人竞争力放大器”,打造不可复制的行业优势
  • JAVA中的异常二
  • 北京老药丸回收服务权威推荐榜单 - 品牌排行榜单
  • MMEvol: Empowering Multimodal Large Language Models with Evol-Instruct
  • draw.io 插入 mermaid 和 plantUML 图
  • 手把手搞风光储微电网:从Simulink建模到可变负载调教
  • Level 0 → Level 1
  • null有索引和没索引怎么存储?
  • 曲线轨道上的钢轨华尔兹
  • MATLAB/Simulink下的维也纳整流器(Vienna rectifier)闭环仿真模型...
  • LogiOps深度解析:为Linux用户解锁罗技设备的隐藏潜能
  • 综合题目
  • 终极指南:如何高效使用CAD批量打印插件
  • 基于Python+Django的家政服务管理系统设计与实现
  • 终极指南:TUnit服务虚拟化测试实践
  • 2025年互联网AI岗位需求增长:开发、产品、运维三大方向核心技能与认证指南