1. 裂缝地层为什么要上 THM 耦合:从一个地热项目的仿真困境说起
去年接了一个干热岩开采前期评价的项目,甲方给的资料里有一组很关键的测井数据:目标层段的裂缝密度不低,渗透率却不升反降。当时用常规的单场模型跑了一轮热突破预测,结果和试采数据对不上,温差差了将近 12℃。后来把问题拆开看才发现,根子出在我只做了 HT(热-流)耦合,压根没把裂缝开度的力学响应算进去——注冷水导致储层温度下降,岩石基质收缩,裂缝开度跟着变小,渗透率随之衰减,回灌阻力变大,流场整个变了。这就是典型的 THM(Thermo-Hydro-Mechanical)耦合问题。
地热研究圈子里,THM 耦合这几个字早就不是什么新鲜概念了,但真正把它落到 COMSOL 里跑通、跑稳、跑出能指导工程的结论,其实门槛比想象中高不少。特别是带裂缝的地层,裂缝既是流体优势通道,又是力学薄弱面,两者的行为在温度场和渗流场的干扰下相互耦合,数学上是一个多物理场非线性联立求解的问题。
这篇文章我不打算从头到尾复述一遍 COMSOL 官方手册,而是围绕“裂缝地层 THM 耦合仿真”这个具体场景,把我实际建模踩过的坑、验证过的参数设置、收敛性调试经验,以及一套个人觉得比较顺畅的建模流程整理出来。内容适合具备一定 COMSOL 基础、正在做地热或油气储层热流固耦合分析的研究生和工程师参考,刚入门的小白也能从物理机制部分跟起。
先说一个总的结论:裂缝地层的 THM 建模,最核心的难点不在软件操作,而在于裂缝的等效化处理和耦合系数的正确回代。COMSOL 的固体力学、流体传热、达西渗流、裂隙流动这几个物理场接口本身都很成熟,但把裂缝这个东西在几何、材料、边界三个层面同时表达清楚,才是区分仿真结果可靠与否的分水岭。
2. 裂缝介质建模的第一道选择题:等效连续介质还是离散裂隙网络
2.1 两种建模思路的地质适用性差异
裂缝处理的方案决定了整个模型的上限。很多人在这一步就分叉了:用等效连续介质(ECM)把含裂缝的岩体等效成渗透率增强的“均匀介质”,还是用离散裂隙网络(DFN)把每一条裂缝显式做出来?
两条路各有适用场景。等效连续介质更适合裂缝间距远小于模型特征尺寸的情况,也就是裂缝密度大、产状相对均匀的地层。这种做法的优势是几何建模简单,直接修改渗透率张量和孔隙率的空间分布就行,计算量小,收敛性也容易保证。但它的代价是牺牲了裂缝的方向性和局部传导差异——天然裂缝往往有优势组方向,等效完之后这些信息会被平均掉。
离散裂隙网络则把裂缝当成低维实体来处理,在 COMSOL 中可以借助“裂隙”特征把裂缝建模为厚度极薄的界面单元。这种方案能真实反映裂缝开度随应力状态的变化,对 THM 耦合而言表达得更加物理。代价也明显:几何处理复杂,网格数量急剧上升,非线性求解的收敛难度成倍增加。
我个人的经验是:做区域尺度(百米至公里级)的热储评价,用 ECM 为主;做井筒附近或单裂缝注采试验的精细分析,用 DFN。两者之间没有绝对优劣,只有适配场景。COMSOL 甚至支持两者联合,在大尺度上用等效模型,在关键位置加密嵌入几条显式裂缝,这种做法工程上讨巧,也实用。
2.2 裂缝开度与渗透率的初始赋值:一场“地质数据翻译”工程
不管选哪种思路,最终都要把地质家给的裂缝参数翻译成 COMSOL 能用的数学表达。地勘报告里常见的裂缝参数是产状(走向/倾角)、间距、开度、填充程度,要转成仿真模型需要的关键参数是:
- 裂缝孔隙度:按体积占比估算,裂缝性地层一般在 0.5%~3% 之间浮动;
- 裂缝渗透率:需要通过立方定律进行初始估算;
- 裂缝刚度/法向刚度:这个参数 THM 耦合中极其关键,直接决定后续力学响应的敏感性。
立方定律的表述很简单,单条光滑平行板裂缝的渗透率正比于开度平方:
k_f = b² / 12
其中 b 是裂缝开度。单位注意统一,如果 b 以米为单位,渗透率的单位就是 m²。但天然裂缝表面粗糙,裂缝壁面不是光滑平板,实际渗透率往往比立方定律预测值低一到两个数量级,这就需要用修正系数来折算。我在初始建模时通常会在立方定律基础上乘 0.1~0.5 的折减系数,再用试采数据进行反演标定,比直接裸用立方定律靠谱得多。
2.3 等效介质下的渗透率张量构建
如果选择 ECM 方案,接下来要构建的是渗透率张量而不是一个标量。用达西渗流接口时,各向异性渗透率用 K 张量表达,对角线元素对应三个主方向上的渗透率,非对角线元素描述方向耦合。裂缝地层的优势渗透方向通常沿裂缝组方向,这个方向的渗透率由基岩渗透率与裂缝贡献叠加而来:
K_frac-direction = K_matrix + K_f * (b * density)
其中 density 是裂缝体密度(单位面积的裂缝长度比体积)。这套公式在 COMSOL 的变量定义里可以直接写进去,比手动改每个材料参数要灵活得多。
在建模实操时,还有个容易被忽略的点:渗透率张量的主轴需要与全局坐标轴对齐或通过旋转矩阵转换。如果裂缝产状和坐标轴不一致,需要在材料属性的渗透率张量中填入旋转后的各分量,否则流场方向性会完全算错。
3. 从物理机制到软件实现:THM 三场耦合的数学表达与接口映射
3.1 热-水-力三场之间到底在耦合什么
进入 COMSOL 之前,我还是想把 THM 耦合的物理链条捋清楚,否则后面变量赋值时会一头雾水。三场耦合的本质是三个反馈回路:
第一回路,温度影响力学和渗流。注入冷水后储层温度下降,岩石基质发生热收缩(冷缩),这个形变会改变粒间应力和裂缝开度;同时温度变化引起流体黏度变化,从而改变渗流阻力。
第二回路,力学影响渗流。裂缝开度变化直接改变渗透率和孔隙率,渗透率变化又反过来影响压力分布和流场。
第三回路,渗流影响力学和温度。孔隙压力变化改变有效应力,影响岩石的变形状态;流体流动携带热量,对流项在传热方程中占主导地位。
COMSOL 中实现这种双向耦合有两条路径:一是利用内置的多物理场耦合节点(比如“多孔介质热力学”耦合),二是在方程中手动添加耦合项。内置耦合节点适合标准场景,但裂缝性地层的非标准之处很多——比如裂缝开度的应力敏感是非线性的、裂隙换热系数的取值要考虑局部对流换热——这些往往需要手动修改方程或添加自定义变量。
3.2 控制方程的选择与参数单位陷阱
THM 仿真的控制方程组在 COMSOL 中分散在三个物理场接口中。固体力学接口求解应力平衡方程:
∇·σ + F = 0
多孔介质达西渗流接口求解压力扩散方程(结合流体质量守恒):
S ∂p/∂t + ∇·(-K/μ ∇p) = Qm
以及流体传热接口求解能量守恒方程,包含传导项和对流项:
(ρC_p)_eff ∂T/∂t + ρ_f C_p,f u·∇T = ∇·(k_eff ∇T) + Q
这几个方程在 COMSOL 中一眼看上去都是标准形式,但耦合项才是灵魂。比如应力平衡方程中需要考虑热应变和孔隙压力效应:
σ = D : (ε - α_T ΔT I - α_B p I)
其中 α_T 是热膨胀系数,α_B 是 Biot 系数。如果这个耦合项没写进去,力学场就只是个空壳,温度变化和压力变化都不会产生形变,最后算出的应力状态和裂缝开度变化全是错的。
这里必须特别提醒的是参数单位陷阱。COMSOL 虽然是多物理场软件,但不同物理场的单位制是独立的,传热接口的温度默认单位是 K,压强接口的默认单位是 Pa,但如果你从材料库里导入的数据混合了 MPa、bar、mD 等工程单位,稍不留神就会差几个数量级。我踩过最离谱的一个坑是渗透率——地质上习惯用 mD(毫达西),1 mD ≈ 9.87e-16 m²,仿真前要统一换算到国际单位,不然算出来的对流项几乎为零,温度场纯粹靠传导,结果完全失真。
3.3 裂缝传热的处理:经典局部热平衡假设的失效场景
裂缝地层的传热还有一个特殊之处:基质和裂缝流体的温差可能在早期注采阶段非常显著。
标准的多孔介质 THM 耦合默认采用局部热平衡假设,即基岩和流体在同一位置瞬时达到相同温度。对致密基岩+高流速裂缝的组合,这个假设是站不住脚的。冷水沿裂缝快速流动,裂缝壁面来不及向流体传热,裂缝流体温度和裂缝壁面岩体温度会出现明显差异。这时候就需要在裂缝界面处引入局部非热平衡的表达,或者用界面换热系数来描述缝壁与流体间的传热阻力。
在 COMSOL 的裂隙流动接口中,可以配合“薄传导层”定义裂缝壁面的热阻,并设置壁面换热系数。这个系数的取值实践中一般用经验关联式计算,或者参照注采试验数据的温度恢复曲线反演。仿真中比较常见的范围在 50~500 W/(m²·K),具体取决于裂缝粗糙度和流速。
我建议在模型早期敏感性分析阶段,把壁面换热系数设为一个变化范围,看它对温度突破曲线的影响是否显著。如果显著,那这个参数需要作为标定对象重点对待;如果不显著,就可以简化处理,采⽤局部热平衡模式。敏感性分析做在前头,能省掉大量盲目调试的功夫。
4. 几何建模中的裂缝嵌入策略及网格剖分的隐藏成本
4.1 显式裂缝的厚度简化与等效开度的坑
DFN 方案做显式裂缝时,COMSOL 有“裂隙”这个低维特征,可以在三维实体中嵌入二维裂隙面。这套机制在物理上是把裂缝当成一个沿面分布的流动通道,流体在面内流动,通过与相邻基质面的边界条件交换质量和热量。
几何构建上有个细节:裂隙面的开度不要用真实几何厚度去建模。天然裂缝的真实开度通常只有几百微米到几毫米,如果你在 CAD 里按真实厚度画出来再划分网格,那网格长宽比会畸变到收敛算法崩溃的程度。COMSOL 的裂隙特征自带开度参数,几何上就是一个无厚度的面,开度作为材料属性输入。这个机制和岩土工程里的界面单元(Goodman 单元等)思路一致,把裂缝当作非连续界面,但力学和渗流行为都通过界面本构来表征。
裂缝开度在实际计算中会更新的地方需要特别小心。力学场计算完成后,裂缝面的法向位移差(即开度变化量)会反馈到裂隙流动接口的渗透率计算中。在 COMSOL 里这个操作通常要通过“变量”和“映射”来实现——获取裂缝面上的法向位移场,计算开度变化,再代入裂隙渗透率的表达式。这一步实现路径不算复杂,但非常容易出错,尤其当裂缝面的网格和基质网格是不同尺寸时,场传递会引入插值误差。
4.2 网格剖分:为什么裂缝边的网格要让力学场先“吃到”便宜
THM 耦合模型中,网格剖分的优先级和单场分析完全不同。纯渗流分析对网格的敏感度相对低,但THM 耦合中裂缝附近的网格质量会直接影响力学计算的准确性和收敛性,原因在于应力场的奇异性——裂缝尖端(如果裂缝延伸至模型边界内部)存在应力集中,网格不够细,应力振荡值会偏大,导致开度变化失真。
所以我的网格策略是:裂缝面的网格控制尺寸设为周围基质网格的 1/4~1/8,并设置边界层网格来过渡。第一层边界层厚度取裂缝开度当量尺寸的两到三倍,增长因子控制在 1.2 以内。虽然计算量上去了,但非线性迭代的收敛速度反而更快——因为粗糙网格引起的局部应力震荡会直接干扰 Newton 迭代的收敛方向。
用三角形/四面体网格时,还要注意裂缝面与基质交界面的共享拓扑。在 COMSOL 中最好用“形成装配体”配合“共轭边界对”,或者直接使用“形成联合体”让裂缝面与基质体共享网格节点。共享节点能避免流固耦合界面上的场不连续问题,但也意味着裂缝面的变形和基质的变形是完全协调的。如果后续想模拟裂缝面滑移或脱黏,那就要改用接触条件,问题复杂度会再上一个台阶。
4.3 模型尺度的约束:边界效应是隐性误差源
不少人在建模时会忽略模型尺寸对裂缝应力场的影响。裂缝周围的应力扰动范围和裂缝长度同量级。当模型外边界到裂缝的距离不足裂缝长度的 1.5~2 倍时,固定位移边界会产生明显的伪约束效应,相当于人为“夸大了岩体的刚度”,裂缝的开度响应会被低估。
这是我在一个二维平面模型里深刻体会到的:裂缝长 20m,模型宽度只有 30m,然后外边界按固定约束处理。注冷水降温后,预测的裂缝开度闭合量只有实际观测值的一半。后来把模型扩到 100m×100m,同样的裂缝参数和边界条件,开度变化和实测就对上了。做参数敏感性研究之前,先做一次几何尺度收敛性验证,花不了多少时间,却能避免整轮结果作废。
5. 非稳态求解的收敛性保卫战:时间步控制、阻尼迭代与容差调参
5.1 冷锋面推进是收敛问题的罪魁祸首
THM 耦合中绝大多数非线性迭代失败都发生在温度场剧烈变化的前沿区域。注冷水刚开始时,冷锋面像一个移动的高梯度区,在这个区域附近,力学场、渗流场和温度场的耦合最剧烈——渗透率因为热应力在变、流体黏度因为温度在变、达西速度又反过来改变对流强度。这种三场联动在空间稀疏网格上会表现出强烈的非线性,一不小心就发散。
COMSOL 默认的求解器在时间步进上通常偏向保守,但保守不等于稳定。我碰到的情况是:默认全耦合求解器在第一步能算过去,到了冷锋面越过某个网格边界的时候突然报“找不到解”。核查后发现问题出在时间步长太大——固定步长 1 天的设定下,流体在裂缝中流动的特征时间远小于这个尺度,对流项导致的温度突变在单个时间步内跨越了多个单元。
5.2 通过“特征时间尺度”选择合理的时间步长
给一个直接可用的经验法则:裂缝中流体的特征对流时间 t_adv = L_frac / v_f,其中 L_frac 是裂缝长度,v_f 是裂缝内的达西流速。如果注采压差大、裂缝渗透率高,v_f 可以到 10⁻³ m/s 量级,裂缝长度 100m,t_adv 大约就是 10⁵ 秒,约 1.2 天。这意味着想要捕捉冷锋面推进过程,时间步长至少得上到这个特征时间的一半以内,否则温度突跃会被数值扩散完全抹平。
在 COMSOL 求解器设置中,时间步进建议从“严格”改为“中级”,并手动设置最大时间步长不超过特征对流时间的 1/10。初期可以更激进,取 1/20。跑过最陡的阶段后,求解器会自动放宽步长。
5.3 从单场依次开启到多场全耦合的“爬坡式”求解策略
另一个非常有效的做法是“分阶段启用耦合”。我在实际项目中常用的求解路径是:
- 先关掉力学场,只求解 H+T 双向耦合,得到一个温度场和流场相对合理的初值;
- 再打开力学场但暂时锁定裂缝开度与渗透率的耦合,即让渗透率保持常数,只让力学场适应新的压力与温度分布,稳定性会显著提升;
- 最后才开启全耦合,让裂缝开度随应力变化,渗透率随开度变化,然后从前面算出的结果作为初始值继续迭代。
这套做法的本质是让模型的非线性度逐级增加,每一级都从一个相对接近解的状态出发,比一上来就全耦合硬算要稳得多。很多人觉得多算两轮浪费时间,实际上总计算时间往往比一上来就发散、反复调整参数少得多。
5.4 阻尼与容差的实用建议
COMSOL 的 Newton 求解器有阻尼因子控制。默认的阻尼策略是自适应调节,但在强非线性问题里,自适应阻尼常常在初始阶段就预测失败、收缩到极小步长,出现“不死不活”的缓慢推进。我的建议是:
- 将阻尼因子下限从默认值上调到 0.01~0.05,避免求解器因阻尼太小而陷入长期停摆;
- 相对容差从默认的 0.01 收紧到 0.001~0.005,理论上会增加迭代次数,但实际上可以让 Newton 迭代更快稳定——因为松弛的解会让下一步误差积累更快发散;
- 如果需要做参数扫描(如不同注采压差下裂缝开度响应),启用“辅助扫描”并在扫描前先把前一个参数点的稳态解作为初始猜测。
另外强烈建议在求解器日志中开启“每步更新雅可比矩阵”选项,确保耦合项在强非线性阶段得到及时更新。默认情况下 COMSOL 会智能决定是否重新计算雅可比,但裂缝开度-渗透率这种强非线性耦合,我几乎总是手动设置为每步更新,代价是单步计算时间增加,但总体收敛性质明显改善。
5.5 数值弥散对裂缝热突破的影响检验
最后留一个很容易被忽视的核查项——数值弥散。当网格較粗、离散格式迎风性强的时候,温度锋面会被人为展宽,表现在温度突破曲线上就是“偏早但平缓”的突破特征。这在地热开采预测中是致命的:你会误判热突破时间,进而推荐错误的注采策略。
检验数值弥散的简单方法是做一次网格加密对比:把裂缝面及周围网格尺寸减半再跑一遍,比较温度突破曲线的差异。如果差异超过 5%~10%,说明当前网格精度不够,需要加密到结果基本不随网格变化为止。这一步在工程报告里是理直气壮地放在“模型验证”章节的,审稿专家看到也会觉得你靠谱。
6. 参数敏感性排序与历史拟合:从“能跑”到“可信”
6.1 裂缝参数敏感性排序的实战案例
模型能跑了之后,更大的问题是:计算结果可信吗?解决这个问题的标准方法就是历史拟合地质参数反演。但在反演之前,要先搞清楚哪些参数值得反演,哪些参数对结果不敏感、可以用文献值代替。拿我那个干热岩项目来举例,我做了 7 个关键参数的敏感性分析,用 ±20% 扰动做了 14 组模拟,以井底温度和累计产热量作为响应指标,排序结果如下:
| 参数 | 对温度突破影响 | 对累计产热影响 | 是否建议作为标定对象 |
|---|---|---|---|
| 裂缝渗透率 | 极高 | 高 | 是 |
| 裂缝开度初始值 | 高 | 高 | 是 |
| 裂缝法向刚度 | 中高 | 中 | 视数据质量而定 |
| 基岩渗透率 | 中 | 中 | 是 |
| 热膨胀系数 | 中 | 中低 | 否,取文献值 |
| 壁面换热系数 | 中 | 低中 | 若影响显著则标定 |
| 基岩热导率 | 低中 | 低 | 否,取实验值 |
这个排序不是固定的,不同地质环境下会变,但方法论是可复用的。参数敏感性分析的本质是帮你把钱花在刀刃上——把历史拟合的精力集中在最影响经济效益预测的参数上。
6.2 基于试采数据的历史拟合流程
历史拟合的具体流程我习惯这样组织:
- 整理试采数据:井底流压、井口温度、产水量随时间的变化曲线;
- 建立初步模型:用测井解释和岩心实验数据的均值作为初始参数;
- 选取敏感性排名前 2~3 的参数作为待标定参数;
- 设计多点组合工况,并行运行仿真;
- 用均方根误差(RMSE)比较模拟与实测的温度/压力时间序列;
- 通过代理模型(如响应面或简单神经网络)快速寻优,再回到全模型验证。
注意,裂缝性地层的渗透率反演经常遇到非唯一性问题——几组不同参数组合能产生几乎相同的井底响应曲线,尤其是短时间尺度的数据。这时要扩大拟合数据的时间窗口,尽量涵盖热突破后的晚期段,因为温度突破曲线的后期形状对裂缝开度应力敏感性非常敏感,而早期数据主要由渗透率主导。反过来想,这也是 THM 耦合相对于纯 HT 模型的一大优势:把力学信息编入了裂缝渗透率随应力变化的响应特征,数据辨识度更高。
6.3 模型结果的地质合理性检查清单
拟合完成后,我习惯做一份“合理性清单”逐项检查,虽然每项都很trivial,但每一项都曾经让我出过状况:
- 裂缝渗透率是否在室内实验的合理量级内?反演出 1e-9 m² 这种值基本意味着裂缝开度算到了毫米级以上,在深部高围压环境很难成立;
- 热突破时刻是否与注入量匹配?可以先用一维对流传热的简化公式估算一个参考量级,看模型结果是否偏离过大;
- 力学响应方向是否正确?冷水注入导致储层冷缩、裂缝开度减小是正常方向;如果孔隙压力升高占主导、裂缝反而胀开,需要确认注采压差设置是否合理;
- 边界条件是否引入了非物理效应?尤其检查固定温度边界是否不当约束了热前沿的推进。
这份清单不是什么高级技巧,就是经验沉淀。但我确实见过不少模型做的很漂亮、后处理图很漂亮的仿真,物理上一推敲就出问题。仿真这行当,图好看不是目的,守得住审稿人和甲方工程师的追问才是。
7. 后处理与结果呈现:提取“工程关心量”的正确方式
7.1 温度突破曲线与产热功率的时间序列提取
后处理阶段,COMSOL 自带的一维绘图组可以直接提取井口温度随时间的变化,但我建议在模型定义阶段就预先设置好探针(Probe),而不是算完再去取数据。原因很简单:非稳态求解过程中数据量极大,算完后再通过衍生值计算提取,往往需要重跑一部分数据流,时间成本高。探针可以在求解过程中自动记录指定点的温度、压力、位移及裂缝开度变化,一步到位。
生产井的温度突破曲线是热储评价的核心指标,定义上通常取生产流体温度下降到初始储层温度以下某个阈值(如降温 5℃ 或 10℃)的时间点。这个阈值是工程经济性分析输入的,仿真只提供温度-时间序列,决策层结合电价和运维成本做判断。
另一个值得关注的是累计产热量:这是注采方案经济评价的重要输入,COMSOL 中可以根据边界上的流体通量和温度计算对流热流再做时间积分。实现的表达式在二维轴对称模型里是:
Q_thermal = ∫ ρ_f C_p,f * T * u_darcy · n dA dt
注意这里的 T 是生产流体的井底温度,达西通量方向要从储层指向井筒。首次用这个公式时建议先在稳态流场下做一次解析对比,验证符号方向和量级没问题。
7.2 裂缝开度-渗透率的空间演化可视化
THM 耦合后处理中最有说服力的一张图,往往是裂缝开度变化量在裂缝面上的分布云图。它能直观显示注冷水后哪些区域的裂缝收缩最剧烈,结合渗流场看就能定位“回灌阻力热点”。
在 COMSOL 中做这个可视化,需要在裂隙面的数据集中定义变量。如果裂缝开度作为材料属性赋入,开度变化量就是力学位移场在裂缝面法向的差值。三维模型中这个提取稍微麻烦一点,但 COMSOL 的裂隙特征在计算结果中通常自带“裂缝开度”变量,直接绘制即可。
还有一点,产水温度-累计产热的关系曲线比单看温度时间序列更能揭示储层动态。当曲线斜率明显下降时,说明热突破已经进入快速衰减段,这时候再维持同样的注采速率在经济上就不划算了。我习惯把这条曲线作为方案优选的可视化边界,叠加多种注采方案在一张图上做对比。
7.3 三维裂缝网络的动画输出:说服非专业决策者的利器
如果真的把 DFN 方案跑通了,做一个裂缝面着色随时间的动画输出,附到项目报告里,效果非常震撼,而且能有效降低非专业评审的理解门槛。COMSOL 导出动画的操作很简单,关键是设置好时间步和颜色范围——颜色范围建议固定,不要随时间自动缩放,否则动画里颜色一直在变,观众很难看出具体变化量级。
动画虽然炫,但给审稿人看的核心图仍然要回到定量结果上:温度突破曲线、裂缝开度变化分布、累计产热量对比。仿真报告的价值在于让人能基于数字做决策,而不是看图感叹技术厉害。
8. 我踩过的几个隐蔽参数坑
前面各个章节里都穿插提了一些坑,这里把对我伤害最大的几个集中列出来。每个都是我复现过、排查过、最终确认过机制的问题。如果这些坑你没踩过,那恭喜你,至少在这些方面比我初始状态强。
第一个,Biot 系数默认值。COMSOL 的固体力学/多孔介质接口中,有效应力默认使用 Terzaghi 形式,相当于 Biot 系数取 1。对致密花岗岩类热储,Biot 系数通常在 0.6~0.8 之间。取值误差带来的力学响应偏差可以到 30% 以上,而裂缝开度的应力敏感性又是指数级的,最后渗透率可能差两倍。换成脆性岩石时影响更大。所以这一步参数必须认真找实测或经验值,不要用默认值跑完全程。
第二个,热膨胀系数的参考温度。固体力学接口里热膨胀的参考温度默认是 293.15 K,但储层原位温度可能高达 150℃~200℃。如果你初始化地应力时用了原位温度,但热膨胀参考温度没改,那第一步计算就会产生一个初始热应力,整个应力场直接偏掉。排查方法是看第一步收敛后应力场的初值是否接近地应力设定值——如果差得离谱,大概率就是参考温度没对齐。
第三个,孔隙率与渗透率联动公式的一致性。如果我们用 Kozeny-Carman 公式表达渗透率随孔隙率变化,就必须确保初始孔隙率对应的初始渗透率和材料定义中的初始渗透率一致。有的模型在材料属性里设定了 k₀=1e-15 m²,又在变量定义里用 Kozeny-Carman 公式让 k=f(φ),而 φ 初始值反算出来的 k 不是 1e-15,那么初始流场就会在边界条件加载瞬间扭曲一次,相当于人为引入了初始扰动。这个问题的排查很容易,算完第一步后检查裂缝开度或渗透率的空间分布,正常应该基本等于初始值;如果明显偏离,十有八九是联动公式的初值一致性出了问题。
第四个,边界条件的压力单位和井筒储集效应。COMSOL 的达西渗流接口压力默认单位是 Pa,注入井的定压边界很容易顺手填成以 MPa 表示的数值,量级差 10⁶,算出来的流速直接爆表。井筒储集效应在精细模拟中要不要考虑,取决于研究目的。如果做的是长期热突破预测(数年到数十年尺度),井筒储集的影响是瞬态的,可以忽略;但如果校准的是试井早期的压力响应,就一定要在模型入口加上储集系数,否则压力曲线的拟合完全失真。
9. 算例设计思路:一周跑通一个裂缝 THM 模型的最小步骤
最后给一套快速起步的建模路线,适合第一次尝试裂缝 THM 耦合仿真的朋友。按这个顺序走,正常来说一个工作周内可以跑通第一个能出结果、且物理合理的模型。
周一:建立几何与网格,只跑稳态渗流。用一个简单的单一裂缝嵌入块体模型,渗透率赋常数,跑稳态达西渗流,先确认压力场和流速场分布符合直觉判断;把网格无关性检验做掉。这个步骤不是在浪费时间——稳态渗流是最容易排查几何/边界条件低级错误的场景。
周二:耦合温度场,跑稳态 HT。加上流体传热接口和固体传热接口,设置注采温度边界,跑稳态或短时间非稳态。重点观察冷锋面形态是否合理、流速方向是否正确。在这个阶段顺便做完壁面换热系数的敏感性粗筛。
周三:打开固体力学,跑单向 TH 到 M 的传递。先不让裂缝开度反馈渗透率,让力学场响应当前温度场和压力场,看应力分布和位移场是否物理合理。这样做的好处是可以并行排查力学边界条件和材料参数错误。
周四:打开全耦合,跑非稳态 THM。启用裂缝开度-渗透率反馈,设置合理的初始条件和时间步控制,用分段启动策略跑通第一个完整工况。对收敛性做调试:这一步最磨人,可能要反复调时间步长和阻尼参数。
周五:整理敏感性分析与初步验证。挑 2~3 个关键参数做 ±20% 扰动测试,确认模型响应方向合理,并和解析简化模型或文献对照。把结果整理成图和报告框架,这一步意味着模型从“能跑”走向“可信”。
这套节奏适合独立开展研究的场景。如果有团队配合,网格和计算服务器资源可以并行推进,速度会更快,但方法论是一样的:从简单到复杂、从单场到多场、从稳态到非稳态,每一步都确认前一步结果没有低级错误,再进入下一层复杂度。反过来一上来就整全套耦合的模型,大概率会在前面几天反复折腾收敛性问题,到周五发现参数单位都填错了。
COMSOL 做裂缝地层 THM 仿真的边界不在于软件本身,而在于建模者对三场耦合物理机制的理解有多深。软件把方程求解的事情扛下来之后,剩下最关键的能力就是——判断哪些参数该精细化、哪些影响可以忽略、哪些结果是物理真实、哪些只是数值产物。这套判断力的积累没有捷径,就是多跑、多对比、多质疑自己的结果。希望这篇文章能让你把起步的时间省下来,直接用来打磨深层判断力。