在煤层气开发与碳封存研究中,CO2驱替甲烷的过程是一个核心课题。本文通过COMSOL平台模拟实验室条件下的这一过程,揭示其内在规律。该模型基于CO2与CH4分子之间的竞争机制,并引入流固耦合方法,真实还原气体运移与岩石响应的动态交互。
模拟的核心在于两个物理场的协同作用:达西定律用于描述多孔介质中的流体流动,而固体力学模块则捕捉岩石在压力变化下的形变行为。两者通过孔隙度的变化实现耦合——流体压力改变导致岩石结构压缩或扩张,进而反过来影响渗透特性。这种相互制约的关系如同一场持续的拔河博弈,决定了整个驱替过程的演化路径。
建模的第一步是构建物理场接口。在COMSOL中需添加达西流和固体力学两个模块,为后续耦合奠定基础。虽然实际操作主要依赖图形界面,但其底层逻辑可通过脚本语言(如Python API)进行示意性表达。
model = Model()
darcy = model.physics.create('DarcyLaw', 'dl')
solid = model.physics.create('SolidMechanics', 'sm')
材料参数的设定尤为关键。岩石基质被定义为弹塑性材料,以更真实地反映其力学响应。渗透率则采用Kozeny-Carman方程进行动态更新:
% 材料参数设置
k0 = 1e-15; // 初始渗透率
phi0 = 0.2; // 初始孔隙度
k = k0*(phi/phi0)^3*( (1-phi0)/(1-phi) )^2; // 动态渗透率公式
该公式的物理意义直观:当孔隙度减小,渗透率随之急剧下降,类似于管道堵塞后水流受阻的现象。这一非线性关系显著影响气体的推进效率。
边界条件的设计直接影响模拟的稳定性与真实性。左端设置为CO2注入边界,右端为混合气体采出端,上下边界采用对称约束。特别需要注意的是,注入压力应采用渐进式加载方式,而非突加恒定压力。
// 边界条件设置
BoundaryInjection = 2e6*(1 - exp(-t/100)); // 指数型压力递增
这种平滑的压力施加策略可有效避免数值震荡,提升求解过程的收敛性,相当于“轻推”系统进入工作状态,而不是强行“踹门”。
求解器配置中隐藏着诸多细节。时间步长采用自适应算法,确保在动态变化剧烈阶段自动加密步长;同时将流固耦合的内部迭代次数限制在五次以内,兼顾计算效率与收敛稳定性。经验表明,当相对容差设为1×10-4时,精度与耗时达到最优平衡。过高的精度要求会导致计算时间剧增,而过低则可能使结果失真。
模拟完成后,甲烷饱和度的空间分布图能够清晰展示驱替进程。CO2像贪吃蛇般在孔隙网络中前行,形成明显的前缘指进现象。借助流线动画工具进行后处理,可以直观呈现气体如何逐层渗透、迂回前进。
# 流线绘制技巧
streamline = post.plot('dl')
streamline.set('coloring', 'velocity')
streamline.set('timeslider', 'range', [0, 3600])
值得注意的是,当注入压力超过某一临界值时,原本稳定的推进前沿会突然失稳,分裂成树枝状的通道,这正是粘性指进不稳定性的真实体现。
网格划分是建模过程中最容易出错的环节之一。由于涉及孔隙尺度的精细捕捉,理想情况下需要极细的网格,但这对计算资源构成巨大挑战。成熟的做法是在驱替前缘区域实施局部网格加密,其余区域使用较粗网格,实现“重点布防”,在精度与效率之间取得平衡。
还有一个反直觉的现象值得关注:提高注入压力并不总能提升甲烷采收率。过高的压力可能导致岩石孔隙被过度压缩,渗透率骤降,反而阻碍CO2的进一步推进。这就像追求过猛适得其反,关键在于掌握合适的“力度”。
数值模拟既依赖物理机理的理解,也讲究数值技巧的应用。利用COMSOL提前开展虚拟实验,不仅能预判关键现象,还能大幅降低实际试验中的试错成本。毕竟,在数字世界里调试模型,远比在实验室里处理泄漏装置来得轻松。



雷达卡


京公网安备 11010802022788号







