在应对气候变化的全球行动中,碳捕集与封存(CCS)技术正成为关键解决方案。其中,深部咸水层地质封存因其巨大的储存潜力和相对成熟的技术路线,已成为当前工程实践的首选方案。这种封存方式利用地下800米以深的咸水层孔隙结构,将超临界状态的CO₂长期封存于地质构造中。
我最近使用COMSOL Multiphysics完成了一个典型咸水层CO₂封存的数值模拟项目。这个模型特别关注三个核心物理场的耦合作用:流体流动(达西定律)、热传导(傅里叶定律)以及物质扩散(菲克定律)。通过这个案例,我想分享如何构建一个可靠的咸水层封存模型,以及在实际模拟中需要特别注意的关键参数设置。
建立一个1000m×500m的二维矩形域,代表咸水层的垂直剖面。这里有几个需要特别注意的几何处理细节:
matlab复制% 几何参数定义
domain_length = 1000; % 区域长度(m)
domain_height = 500; % 区域高度(m)
injection_zone = 300; % 注入区高度(m)
% 创建几何
rect1 = rect2('0','0',num2str(domain_length),num2str(domain_height));
注意:实际地质构造往往不是理想矩形,可通过导入CAD图纸或使用参数化曲线来模拟更复杂的地层界面。
咸水层的物理参数设置直接影响模拟结果的可靠性。基于文献调研和实际测井数据,我采用的基准参数如下表所示:
| 参数 | 符号 | 数值 | 单位 | 数据来源 |
|---|---|---|---|---|
| 孔隙度 | φ | 0.15 | - | 测井数据平均 |
| 渗透率 | k | 50 | mD | 岩心实验 |
| 盐水密度 | ρ_w | 1050 | kg/m³ | 实验室测定 |
| CO₂密度 | ρ_c | 650 | kg/m³ | Span-Wagner方程 |
| 盐水粘度 | μ_w | 0.8 | cP | 温度35℃测定 |
| CO₂粘度 | μ_c | 0.06 | cP | NIST数据库 |
| 岩石压缩系数 | c_r | 4.5×10⁻⁵ | 1/MPa | 三轴实验 |
在COMSOL中设置这些参数时,建议使用"材料库"功能创建自定义材料,便于后续参数敏感性分析:
matlab复制% 材料参数定义
mat1 = mphcreate('material');
mphmaterial(mat1, 'name', 'brine', 'propertygroup', 'basic',...
'density', '1050[kg/m^3]', 'viscosity', '0.8[cP]');
采用达西定律描述超临界CO₂在多孔介质中的流动:
$$
\mathbf{u} = -\frac{k}{\mu}(\nabla p + \rho g \nabla z)
$$
在COMSOL中通过"多孔介质流"接口实现,需要特别注意:
相对渗透率曲线采用Brooks-Corey模型:
$$ k_{rw} = S_e^{4}, \quad k_{rn} = (1-S_e)^2(1-S_e^{2}) $$
毛细压力采用van Genuchten模型:
$$ p_c = p_0(S_e^{-1/m}-1)^{1-m} $$
考虑对流-传导耦合传热:
$$
(\rho C_p){eff}\frac{\partial T}{\partial t} + \rho_f C \mathbf{u} \cdot \nabla T = \nabla \cdot (k_{eff} \nabla T)
$$
其中有效参数计算:
$$ (\rho C_p){eff} = \phi \rho_f C + (1-\phi)\rho_s C_{p,s} $$
CO₂在盐水中的溶解扩散过程:
$$
\phi \frac{\partial c}{\partial t} + \nabla \cdot (-D_{eff}\nabla c + \mathbf{u}c) = Q
$$
扩散系数采用温度依赖的修正公式:
$$ D_{eff} = \phi^{4/3}D_0 \exp(-\frac{E_a}{RT}) $$
在顶部边界设置注入条件时,推荐使用"质量流量"而非固定压力,更接近实际工程操作:
matlab复制% 注入条件设置
injection_rate = 1; % kg/s per meter thickness
mphphysicsset('comp1', 'inlet', 'massflow', num2str(injection_rate));
| 边界类型 | 物理场 | 设置值 | 备注 |
|---|---|---|---|
| 注入边界 | 流动 | 质量流量1kg/s | 对应实际注入井 |
| 侧边界 | 流动 | 无流动 | 封闭边界 |
| 底边界 | 流动 | 定压10MPa | 模拟无限大储层 |
| 所有边界 | 传热 | 热绝缘 | 绝热近似 |
| 注入边界 | 物质 | 饱和CO₂ | Xco2=1 |
实际项目中,建议进行边界敏感性分析,特别是侧边界的处理方式对压力传播有显著影响。
采用自适应时间步长结合手动关键点设置:
matlab复制% 时间步设置
tlist = [0 logspace(-6,3,50)]; % 从1微秒到1000秒
mphstudy('std1', 'tlist', tlist);
经过24小时模拟后,我们观察到:
进行了三级网格细化验证:
| 网格级别 | 单元数 | 最大压力(MPa) | 相对误差 |
|---|---|---|---|
| 粗 | 5,248 | 18.52 | - |
| 中 | 21,120 | 18.69 | 0.9% |
| 细 | 84,480 | 18.71 | 0.1% |
最终采用中等网格密度,在精度和计算效率间取得平衡。
基于模拟结果,给出以下工程实践建议:
在实际建模过程中,我遇到过以下几个典型问题及解决方案:
收敛困难:
非物理振荡:
内存不足:
结果异常:
这个基础模型可以进一步扩展:
我在后续项目中尝试了耦合化学反应,发现方解石沉淀会导致孔隙度降低约3%,显著影响长期封存效果。这提示我们多场耦合分析的重要性。