comsol考虑流-固耦合理论的煤层瓦斯抽采数值模拟 煤岩作为一种多孔介质,具有复杂的宏观裂隙、显微裂隙和孔隙组成。 在高 压水射流扰动后,打破原始储层的原有应力平衡状态,使多孔介质所受有效应力 发生改变,煤岩的孔隙度和渗透率也随时间推移而不断发生改变,煤层中原有瓦 斯运移状态被打破。 煤储层中瓦斯的吸附、解吸过程也会引起煤的膨胀变形和基 质收缩。 因此,研究水射流扰动煤层后的瓦斯运移产出过程,必须要综合考虑应 力场、变形场和瓦斯渗流场三场互相耦合作用。 基本假设 瓦斯在煤储层中的运移产出是一个涉及多学科的及其复杂过程,包括渗流力 学、固体力学、材料力学、岩体力学等,需要引入必要的假设作为建立流-固耦合 偏微分方程的基础。 本文根据前人对流-固耦合理论的不断研究,为建立含瓦斯煤 岩流-固耦合理论模型提出如下假设条件: (1)含瓦斯煤岩可视为各向同性线弹性介质; (2)将煤层视为均质,即煤层中各部分物理性质处处相同,并不随着位置的变 化而变化; (3)煤层温度保持恒定; (4)煤层中所含瓦斯视为理想气体,且服从理想气体状态方程;煤层瓦斯解吸 服从 Langmuir 方程; (5)煤岩的变形属于小变形,含瓦斯煤岩变形所产生的应变与有效应力之间的 关系遵从广义胡克定律; (6)煤层中只有单相饱和的瓦斯饱流体,并且只有游离和吸附两种状态; (7)设模型与外界隔绝,不发生任何形式的能量和物质交换。 求解结果
搞煤层瓦斯抽采数值模拟的朋友都知道,煤岩这玩意儿简直就是个"千层饼"。从肉眼可见的裂隙到显微镜下的孔隙,各种尺度结构相互嵌套。特别是高压水射流介入后,整个储层就像被捅了的马蜂窝——应力场、变形场、渗流场三个大佬开始疯狂互动。这时候不用流固耦合模型,基本等于拿算盘解微分方程。
咱们先看看核心控制方程。固体变形这块,COMSOL的固体力学接口能直接套用修正的Navier方程:
// 固体力学方程 solid = physics.create('solid','SolidMechanics'); solid.prop('Equation').set('PlaneStrain', true); solid.prop('MaterialModel').set('LinearElastic');渗透率可不是固定值,这里有个骚操作——把孔隙度变化和应力应变挂钩。达西定律得这么魔改:
// 达西流参数设置 k = k0*(1 + alpha*(phi - phi0))^3; // Kozeny-Carman关系式 darcy = physics.create('darcy','DarcyLaw'); darcy.prop('Permeability').set(k);瓦斯吸附这茬不能忘,Langmuir方程必须安排:
// 吸附量计算 C_max = 0.05; // 最大吸附量 P_L = 2e6; // Langmuir压力 Q_ads = C_max*P/(P_L + P);网格划分是门艺术。靠近钻孔的位置得加密到0.1mm级别,外围可以放宽到10cm。注意过渡区要平滑,否则计算结果能给你整出抽象派油画的效果。建议用边界层网格:
// 边界层网格设置 mesh.create('boundaryLayer'); mesh.geom('geom1').feature('boundaryLayer').set('thickness', 0.001); mesh.geom('geom1').feature('boundaryLayer').set('growthRate', 1.2);耦合迭代这里有个坑——别直接用全耦合,先让固体场算三步,渗流场跟两步,最后全耦合收尾。这样既省计算资源又不容易发散。设置方法是在研究步骤里玩排列组合:
// 分步耦合求解器 study.create('std1', 'Stationary'); study.feature('std1').set('split', 'user'); study.feature('std1').set('splitsolver', {'solid','darcy'});实际跑出来的结果挺有意思:抽采前10天瓦斯压力降得跟过山车似的,之后进入贤者时间。渗透率变化呈现"蝴蝶效应"——钻孔周边1米范围内的渗透率增幅占全区的80%。最骚的是,最大位移不在钻孔处,而在距离孔壁约30cm的位置,这波操作属实反直觉。
给新手几个忠告:初始渗透率别拍脑袋取整,实测值小数点后三位能救命;时间步长先用1秒试错,别上来就玩day级别;收敛容差调到1e-4足够,追求1e-6纯属跟自己过不去。记住,模拟的本质是用误差换效率,找到那个甜蜜点才是真功夫。