1. 项目概述:地质封存中的气液两相博弈
在地下800米的岩层深处,一场看不见的战争正在上演。二氧化碳被注入多孔岩层后,与地层水展开复杂的物理化学相互作用。这场"气液博弈"的结果直接决定了碳封存项目的成败——究竟是二氧化碳乖乖留在目标层位,还是突破盖层防线逃逸到地表?
作为一名长期从事COMSOL多物理场仿真的工程师,我经常被问到:"你们怎么确定封存的二氧化碳不会泄漏?"今天我们就用COMSOL Multiphysics这款神器,带你深入岩层微观孔隙,用数值仿真还原这场暗战的全过程。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心问题拆解
2.1 地质封存的基本原理
地质碳封存的核心是将CO2注入地下深层多孔岩层(如枯竭油气藏或咸水层),利用上覆致密盖层(如页岩)作为天然屏障。但实际情况远比这复杂:
- CO2在高压下呈现超临界状态(密度接近液体,粘度接近气体)
- 地层水通常是含盐的卤水,与CO2会发生溶解反应
- 岩层孔隙结构从纳米到微米级不等,形成复杂流道网络
2.2 关键科学问题
在仿真中我们需要重点关注:
- 毛细力与重力的博弈:CO2作为非润湿相,需要克服毛细管压力才能进入孔隙
- 两相流驱替机制:CO2如何驱替原位地层水
- 盖层突破条件:什么情况下CO2会穿透盖层微裂缝
3. COMSOL建模全流程
3.1 几何建模
我们采用典型的"储层-盖层"双层结构:
matlab复制% 储层几何参数
reservoir_height = 50; % 储层厚度(m)
caprock_height = 10; % 盖层厚度(m)
domain_width = 100; % 模拟区域宽度(m)
% 创建几何
geom = ModelUtil.create('Model');
geom.component('comp1').geom.create('geom1', 2);
geom.component('comp1').geom('geom1').create('r1', 'Rectangle');
geom.component('comp1').geom('geom1').feature('r1').set('size', [domain_width reservoir_height]);
geom.component('comp1').geom('geom1').create('r2', 'Rectangle');
geom.component('comp1').geom('geom1').feature('r2').set('pos', [0 reservoir_height]);
geom.component('comp1').geom('geom1').feature('r2').set('size', [domain_width caprock_height]);
3.2 多物理场耦合设置
我们主要耦合以下物理场:
-
达西两相流:
- 使用Richards方程描述水相流动
- 采用Brooks-Corey模型描述相对渗透率
-
岩石力学:
- 线弹性本构模型
- 考虑孔隙压力对有效应力的影响
-
化学场:
- CO2在水中的溶解扩散
- 可能的矿物反应(简化处理)
关键参数设置示例:
matlab复制% 储层岩石参数
perm_reservoir = 1e-12; % 渗透率(m^2)
porosity = 0.2; % 孔隙度
brooks_lambda = 2.0; % Brooks-Corey系数
% 盖层参数
perm_caprock = 1e-18; % 极低渗透率
youngs_modulus = 10e9; % 弹性模量(Pa)
3.3 边界条件设置
- 底部边界:CO2注入通量
- 侧边界:无流动
- 顶部边界:固定压力(模拟上覆岩层压力)
- 初始条件:地层水饱和度为1
4. 仿真结果分析
4.1 CO2运移前沿演化
通过时间序列分析可以看到:
- 注入初期:CO2在储层底部形成"羽流"
- 中期:羽流向上运移,受毛细力和浮力共同作用
- 后期:CO2在盖层下方聚集,可能形成局部高压区
4.2 突破风险指标
重点关注三个关键指标:
-
毛细管突破压力:$P_c = \frac{2γcosθ}{r}$
- γ:界面张力
- θ:接触角
- r:孔隙半径
-
盖层应力状态:
- 有效应力减小可能导致微裂缝开启
-
溶解封存比例:
- 溶解于水的CO2更稳定
5. 工程实践建议
5.1 注入策略优化
- 采用周期性注入(注入-暂停交替)
- 控制注入压力低于盖层突破阈值
- 考虑添加示踪剂监测运移
5.2 监测方案设计
建议布设三类监测点:
- 储层内部压力监测
- 盖层应变监测
- 地表微渗漏检测
6. 常见问题排查
6.1 收敛性问题
当遇到求解不收敛时,可以尝试:
- 减小时间步长
- 调整非线性求解器容差
- 使用更平缓的初始条件
6.2 参数敏感性
最敏感的三个参数:
- 相对渗透率曲线
- 毛细压力模型
- 岩石压缩系数
重要提示:实际工程中建议进行岩心实验标定这些参数
7. 模型验证方法
7.1 解析解验证
对于简单一维情况,可对比Buckley-Leverett前沿解:
matlab复制% Buckley-Leverett前沿速度计算
fw = @(Sw) (Sw.^2)./(Sw.^2 + 0.5*(1-Sw).^2);
dfw = @(Sw) (2*Sw.*(1-Sw))./(Sw.^2 + 0.5*(1-Sw).^2).^2;
7.2 实验对比
建议参考:
- 微流控芯片实验(可视化两相流)
- 岩心驱替实验(测量突破压力)
8. 模型扩展方向
8.1 多尺度耦合
可以考虑:
- 孔隙尺度LBM模拟获取等效参数
- 场尺度模型耦合井筒流动
8.2 化学场增强
增加:
- 矿物溶解沉淀
- 盐析出效应
- CO2相变过程
在实际项目中,我们发现盖层中存在微裂缝时,CO2更容易沿裂缝形成优势通道。这种情况下需要特别关注裂缝开度与注入压力的动态平衡关系。
