1. 项目背景与核心原理
在油气田开发领域,CO2驱替甲烷技术正成为提高采收率的重要手段。这个模拟实验的核心在于重现实验室条件下CO2如何通过竞争吸附作用将甲烷从孔隙介质中驱替出来。作为从事油气藏模拟多年的工程师,我发现这种流固耦合模拟对理解实际开采过程具有重要参考价值。
驱替过程的物理本质是两种气体分子在多孔介质中的动态竞争。CO2分子与岩石表面的亲和力通常强于甲烷,这种差异导致了选择性吸附现象。当注入CO2时,它会优先占据岩石孔隙表面,迫使甲烷分子解吸并随流体流动被带出。这个过程涉及三个关键机制:
- 流体动力学:控制气体在多孔介质中的流动规律
- 质量传递:包括对流传输和分子扩散
- 吸附-解吸动力学:描述气体分子与固体表面的相互作用
2. 模型构建与参数设定
2.1 几何模型建立
在COMSOL中,我们通常采用二维轴对称模型来模拟圆柱形岩心样品。典型的实验室尺度为直径2.54cm、长度10cm的岩心柱。网格划分需要特别注意:
- 近井区域采用加密网格(约0.5mm)
- 主流区域使用常规网格(2-3mm)
- 边界层网格适当细化以捕捉浓度梯度
注意:网格质量直接影响计算收敛性,建议使用COMSOL的"物理场控制网格"功能,确保纵横比小于5。
2.2 关键物性参数
渗透率(k)是核心参数,其定义如下:
matlab复制k = 1e-12; % [m^2] 典型砂岩渗透率范围
这个量级对应中等渗透率砂岩储层,实际建模时需要根据岩心CT扫描数据或压汞实验确定。
气体粘度参数设置:
matlab复制mu_CO2 = 1.46e-5; % [Pa·s] @20°C, 1atm
mu_CH4 = 1.03e-5; % [Pa·s]
值得注意的是,气体粘度随温度压力变化显著,若模拟高温高压条件需使用Redlich-Kwong状态方程校正。
扩散系数设定:
matlab复制D_CO2 = 1.6e-5; % [m²/s] 自由扩散系数
D_CH4 = 2.0e-5; % [m²/s]
实际孔隙中的有效扩散系数需用Bruggeman公式修正:
D_eff = D * φ^(3/2)
其中φ为孔隙度。
3. 物理场耦合设置
3.1 流体流动控制方程
采用Brinkman方程耦合达西定律:
∇·(ρu) = 0
ρ(u·∇)u = ∇·[-pI + μ(∇u + (∇u)^T)] - (μ/k)u
其中渗透率k采用各向异性张量表示:
matlab复制k = [k_xx 0; 0 k_yy]; % 对于层状地层需考虑各向异性
3.2 质量传输方程
组分输运方程包含对流和扩散项:
∂c_i/∂t + ∇·(-D_i∇c_i) + u·∇c_i = R_i
其中R_i表示吸附源项,采用Langmuir等温吸附模型:
q = q_maxbp/(1+b*p)
3.3 流固耦合实现
通过以下方式实现耦合:
- 流体场计算压力分布和流速
- 将流速场传递给物质传输接口
- 吸附量变化反馈到孔隙度修正:
φ_eff = φ_0 - (q_CO2 + q_CH4)/ρ_rock
4. 边界条件设置技巧
4.1 注入端设置
采用流速边界条件:
u_in = Q_in/(A*φ)
其中Q_in为体积流量,典型实验室值为0.1ml/min。建议使用渐变函数避免数值震荡:
matlab复制u_in = 1e-6*(1-exp(-t/10)); % 渐进式启动
4.2 产出端处理
设置压力边界条件:
p_out = 1e6; % 1MPa 回压
使用背压阀模拟实际生产条件更符合物理实际。
4.3 初始条件
岩心初始饱和甲烷:
matlab复制c_CH4_init = p_init*M_CH4/(R*T); % 理想气体状态方程
c_CO2_init = 0;
5. 求解器配置经验
5.1 瞬态求解策略
采用自适应步长BDF方法:
- 初始步长1e-3s
- 最大步长10s
- 相对容差1e-4
5.2 非线性收敛技巧
遇到收敛困难时尝试:
- 增加阻尼因子(0.1-0.5)
- 使用延续方法逐步增加注入速度
- 检查材料参数单位一致性
5.3 后处理优化
建议监测:
- 产出气中CO2摩尔分数
- 累计甲烷采收率
- 压力场时空演化
6. 典型问题排查指南
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 浓度场出现负值 | 过大的扩散系数或过粗网格 | 减小时间步长,加密网格 |
| 压力振荡 | 初始条件不匹配 | 添加压力初始化步骤 |
| 收敛失败 | 强非线性吸附模型 | 改用更平缓的等温线 |
| 质量不守恒 | 边界条件设置错误 | 检查流入流出量平衡 |
7. 实际应用中的经验修正
实验室模拟与现场条件的差异需要特别注意:
- 尺度效应:实验室岩心通常忽略重力影响,但现场尺度需考虑
- 温度效应:实验室恒温条件与地层温度梯度的差异
- 非均质性:实验室岩心较均匀,实际储层需考虑裂缝网络
建议通过敏感性分析确定关键参数影响程度:
matlab复制k_range = logspace(-13, -11, 5); % 渗透率变化一个数量级
for k = k_range
% 运行模拟并记录采收率
end
在多次模拟实践中,我发现吸附滞后效应常常被低估。实际过程中,CO2的吸附速率可能比解吸速率快30-50%,这会导致驱替效率的预测偏差。建议通过实验数据校正动力学参数。