news 2026/5/11 10:01:29

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
格子波尔兹曼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的朋友有所帮助,也欢迎大家在评论区讨论交流。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/8 0:48:05

LogiOps深度解析:为Linux用户解锁罗技设备的隐藏潜能

LogiOps深度解析:为Linux用户解锁罗技设备的隐藏潜能 【免费下载链接】logiops An unofficial userspace driver for HID Logitech devices 项目地址: https://gitcode.com/gh_mirrors/lo/logiops LogiOps是一个专为Linux环境设计的非官方罗技设备驱动程序&a…

作者头像 李华
网站建设 2026/5/8 9:39:37

AgentScope终极指南:快速上手多智能体应用开发

AgentScope终极指南:快速上手多智能体应用开发 【免费下载链接】agentscope 项目地址: https://gitcode.com/GitHub_Trending/ag/agentscope 想要构建功能强大的多智能体应用,却苦于技术门槛太高?AgentScope就是为你量身打造的解决方…

作者头像 李华
网站建设 2026/5/9 9:25:44

python装饰器

python装饰器装饰器示例代码装饰器应用示例实战应用示例装饰器示例代码 def 外func(被装饰func):"""这是一个装饰器示例,展示如何使用中文命名函数和变量。被装饰func: 这是将被装饰的函数"""def 内func(*args, **kwargs):"&qu…

作者头像 李华
网站建设 2026/5/9 22:47:49

我对防抖(Debounce)的一点理解与实践:从基础到立即执行

我对防抖(Debounce)的一点理解与实践这篇文章主要是我在项目中使用防抖过程中的一些总结,只代表个人理解,如果有不严谨或可以优化的地方,欢迎指出和讨论。一、防抖的概念 防抖(Debounce) &#…

作者头像 李华
网站建设 2026/5/9 6:02:26

重构 Flutter 状态管理:从 Provider 到 Riverpod 2.0 的无痛迁移与性能飞跃

欢迎大家加入[开源鸿蒙跨平台开发者社区](https://openharmonycrossplatform.csdn.net),一起共建开源鸿蒙跨平台生态。 在 Flutter 开发的迭代长河中,状态管理始终是绕不开的核心命题。Provider 曾凭借简洁的 API 和低学习成本成为主流选择,…

作者头像 李华
网站建设 2026/5/9 11:28:03

AI大模型之Agent,RAG,LangChain(三)

前面分享了项目的大致流程,这篇主要分享一下LangChain这个框架的个人简单理解.看懂这篇必须要看我之前发的二,这样便于更好的理解这个框架.一.简述1.什么是LangChain简单来说,LangChain是LLMs的开发框架,他为不同的LLMs提供统一的接口,并且把和LLMs相关的内部组件连接在一起.2.…

作者头像 李华