
Comsol模拟:热-流-固四场耦合增透瓦斯抽采模型及其动态渗透率与孔隙率变化模
型(涉及PDE模块)
最近在搞煤层气抽采数值模拟,被热-流-固多场耦合折腾得不轻。特别是动态渗透率变化这个坑,
试了七八种模型才勉强跑通。今天给大家分享点实战经验,顺便吐槽下COMSOL里那些让人又爱又恨的PDE
设置。
先说动态渗透率模型,这玩意儿直接关系到瓦斯运移效率。我们团队尝试了应力-渗流耦合的指数
模型,代码里大概是这么写的:
```matlab
k = k0 * exp(-alpha*(sigma_eff - sigma0)) * (1 + beta*T)^gamma
```
这里sigma_eff是有效应力,T是温度场。重点是这个指数衰减规律,alpha参数调得我想砸键盘——调
小了渗透率变化不明显,调大了直接数值发散。后来发现用分段函数处理更稳定:
```matlab
if sigma_eff < sigma_critical
k = k0*(1 - 0.5*(sigma_eff/sigma_critical)^2)
else
k = k0*exp(-(sigma_eff - sigma_critical)/sigma_scale)
end
```
孔隙率变化更是个磨人的小妖精。原本用Terzaghi有效应力模型,结果发现实际煤层变形存在滞后
效应。最后在固体力学接口里偷偷加了黏弹性本构,配合达西定律搞了个混合PDE:
```matlab
// 自定义孔隙率演化方程
d(phi,t) = -div(u) + alpha_p*(phi0 - phi) + beta_p*T
```
重点是这个时间导数项div(u),得和固体力学接口的速度场做变量映射。有次忘了设置变量耦合,
程序直接把孔隙率算成负值,瓦斯流速飙到光速级别,COMSOL直接报错"请检查物理合理性",尴尬得想钻
地缝。
四场耦合最要命的是求解顺序。我们的策略是:
1. 先算温度场(影响渗透率)
2. 固体力学计算变形(改变孔隙结构)