ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基于COMSOL的变渗透率煤体变形与瓦斯抽采耦合数值模拟

基于COMSOL的变渗透率煤体变形与瓦斯抽采耦合数值模拟 1. 这个模拟到底在做什么先把这个项目的价值说透。煤矿瓦斯抽采本质上是往煤层里打钻孔用负压把煤层里的瓦斯抽出来。核心诉求有两个一是降低煤层瓦斯含量与压力消除煤与瓦斯突出的危险性二是在瓦斯治理的同时如果浓度达标还能把抽出来的瓦斯作为清洁能源利用。但问题在于瓦斯抽采不是简单“开个真空泵就完事”煤层是一种典型的双重孔隙介质煤基质里吸附着大量瓦斯裂隙里流动着游离瓦斯而钻孔一开抽周围的有效应力场发生变化裂隙被压缩或张开渗透率不停地在变。如果你用固定渗透率去做设计抽采半径预测、衰减规律计算几乎注定与现场对不上。所以这个课题也就是标题里的“变渗透率模型下的煤体变形与瓦斯抽采耦合研究”解决的痛点非常明确把“煤体受力变形”和“瓦斯流动”放在同一个框架里求解而不是各算各的。COMSOL恰恰是干这个活的合适工具它对多物理场耦合的支持非常直接不需要自己手写有限元求解器把方程搭好、边界设对就能比较准确地回答“钻孔抽采三个月后影响半径到底到了多少米”这类现场工程问题。写这篇东西我默认读者是有一定基础的——比如正在做瓦斯抽采、煤层气开发方向的研究生或者是矿井通风与安全方向的技术人员。你没用过COMSOL的话前两节会比较吃力建议先找官方的中文案例库过一遍基础操作如果你已经用COMSOL算过一些单场问题这篇可以直接跳到第三节“变渗透率模型”看那里是这个项目的灵魂。2. 物理机制拆解为什么必须耦合2.1 煤体变形和瓦斯流动是怎么互相影响的煤层里有瓦斯瓦斯有压力。钻孔一开抽钻孔壁上的瓦斯压力先降下来形成压力梯度远处的瓦斯就往钻孔方向渗流。这时候问题来了瓦斯被抽走孔隙压力降低煤层骨架承受的有效应力增大于是煤体被压缩煤体一压缩裂隙宽度减小渗透率就下降。渗透率下降瓦斯流动通道变窄抽采效率进一步受限。反过来如果瓦斯抽采导致煤体收缩到一定程度裂隙也可能张开渗透率上升——这就是“基质收缩效应”。这个循环不是单向的。更麻烦的是煤对瓦斯有强烈的吸附能力吸附态瓦斯在煤基质中占了总量的百分之七八十以上。抽采过程中孔隙压力一降吸附瓦斯开始解吸解吸又引发煤基质收缩基质收缩影响裂隙开度进而改变渗透率。你要是不把这个过程耦合进去算出来的瓦斯涌出量曲线从第三天起就会明显失真。2.2 从物理过程到偏微分方程组的转化数值模拟第一步是把上述物理过程翻译成数学方程。这个案例里方程体系是明摆着的三组方程不复杂但必须放在一起解变形场方程煤体骨架的力平衡。煤体在外力原岩应力、孔隙压力作用下变形满足有效应力原理。写成张量形式是平衡方程加本构关系。弹性、塑性、粘弹性都有文献讨论工程上先做线弹性或弹塑性就能得到很合理的趋势。渗流场方程瓦斯的流动遵循质量守恒和达西定律。把煤体孔隙率、瓦斯密度、渗透率和压力变化结合在一起得到一个关于孔隙压力的抛物型偏微分方程。吸附/解吸方程描述煤基质中吸附瓦斯含量随压力变化的规律工程上几乎都用 Langmuir 型等温吸附曲线当作解析表达式直接嵌进渗流方程里的源项或汇项。耦合关系则是两条其一孔隙压力变化通过有效应力原理改变煤体的应力状态使煤体发生变形其二煤体变形引起孔隙率和裂隙开度变化通过变渗透率模型反馈给渗流方程。这就是典型的“双向耦合two-way coupling”是我判断一个模型是否合格的分水岭。2.3 为什么选COMSOL而不是自己写程序我也用过自编的有限元程序也用过FLAC3D做这类流固耦合分析。得说句公道话如果你只做一次性的、单几何尺寸的模拟手写代码或FLAC3D都可以但项目一旦进入“参数敏感性分析”“多钻孔联动”“工程方案比选”阶段COMSOL的优势就放大了——它的多物理场模块是原生的变量、方程式都以类似文档的形式摆在界面上跑完一个工况改几组参数再跑下一个非常顺手。而且它的后处理功能很细可以直接导出钻孔处压力衰减曲线、任意截面的渗透率云图这恰恰是写论文和向矿方汇报时最需要的东西。另外COMSOL内置的PDE模式也特别适合这种“书上没有现成模块”的耦合问题。你可以在“数学接口”里直接输入自己的控制方程不用去改任何底层代码。这一点接下来会反复提到。3. 变渗透率模型这个项目的核心命门3.1 常见的变渗透率模型有哪些渗透率不是一个常量它随压力、应力和吸附应变变化。业内常用的模型不多主要下面几种指数型经验公式渗透率随有效应力按指数衰减形式简单参数少适合纯工程快速评估但缺乏对基质收缩的描述。Palmer-Mansoori模型PM模型基于单裂隙几何的解析推导把渗透率变化表达成有效应力增量与煤基质收缩应变之和的函数。很多煤层气模拟都在用适用性较好。Shi-Durucan模型SD模型从裂隙压缩系数出发把渗透率变化与有效应力变化和吸附应变变化关联起来形式上比PM模型更贴近裂隙媒质的实际受力状态。Kozeny-Carman类模型通过孔隙率比值的三次方关系把渗透率和孔隙率联系起来。优点是简单嵌入数值模拟非常稳定缺点是裂隙系统不是简单管道流孔渗关系可能偏离真实情况。我在这个项目里公开用的策略是以PM模型为主辅以一个工程修正项具体见下文。3.2 PM模型在COMSOL里的实现细节PM模型的标准形式为[ \frac{k}{k_0} \alpha \left(1 - \frac{\Delta p}{\Delta \sigma} \frac{\epsilon_s}{\phi_0} \cdot \frac{\Delta p}{\Delta p p_L}\right)^3 ]这里的符号含义分别是( k_0 )初始渗透率mD 或 m²( \Delta p )孔隙压力相对初始状态的变化量MPa( \Delta \sigma )平均总应力相对初始状态的变化量MPa。注意是体积应力的1/3( \epsilon_s )最大基质吸附应变根据瓦斯吸附达到极限时煤体的膨胀应变测定无量纲( \phi_0 )初始孔隙率( p_L )Langmuir 压力常数MPa这个模型的核心逻辑清晰分子有负项有效应力增大导致裂隙压缩有正项基质收缩导致裂隙张开两项竞争的结果就是渗透率到底是增是减。在COMSOL里面我不会把整个过程拆开写成多个变量然后再嵌入“达西定律”接口自带的渗透率表达式——那样也没问题但更稳妥的做法是在“固体力学”接口和“偏微分方程接口”之间手动搭建耦合项。具体步骤如下。3.3 COMSOL中自定义变渗透率变量的操作步骤以 COMSOL 6.x 为例我用的是“通用偏微分方程”General Form PDE承载瓦斯渗流方程“固体力学Solid Mechanics”承载煤体变形场二者通过变量耦合。第一步全局变量定义。在“定义”节点里添加“变量”输入以下量变量名表达式说明epsilon代入固体力学接口输出的体应变solid.evol或用平均应力导出煤体体积应变k_ratio(alpha*(1 - dp/dsigma eps_s/phi0 * dp/(dpPL))^3)渗透率比kkk0*k_ratio当前渗透率S_gLangmuir 吸附量的压力函数吸附气含量注意dp在 COMSOL 里可以直接写成p - p0p是 PDE 求解出的孔隙压力变量p0是初始孔隙压力常数dsigma则由solid.mises或体积应力来计算。平均总应力增量更严谨的做法是提取solid.sxxsolid.syysolid.szz的三分之一再减去初始值。第二步把变量接入渗流方程。瓦斯渗流方程在 General Form PDE 里写为[ \frac{\partial}{\partial t}\left( \phi \rho \right) \nabla \cdot \left( \rho \cdot \frac{k}{\mu} \nabla p \right) Q_s ]其中源项 ( Q_s ) 是解吸释放出的瓦斯量。这里注意( \rho ) 是瓦斯密度在等温条件下按压缩因子计算或者直接按理想气体处理( \mu ) 是瓦斯动力黏度常数。在 COMSOL 里General Form PDE 的守恒通量直接填守恒通量Flux(rho_user*kk/visco)*px的分量形式源项Source解吸项。解吸量通过在吸附等温线上对压力求导再乘密度变化来表达这里不展开所有代码因为COMSOL的PDE设置本质上是填界面上的系数框不涉及手写数百行代码。这也是我推荐它的原因之一耦合逻辑完全透明修改模型时心里有底。第三步把变形场耦合到渗透率。因为在第一步里kk k0*k_ratio而k_ratio里含solid.evol或平均应力所以自动实现了“变形 → 孔隙率 → 渗透率”的传递。反过来PDE 求解的孔隙压力p又通过固体力学接口的“边界载荷”或“初始应力”项影响变形场。这两个方向的依赖就构成了完整双向耦合。3.4 说点模型选择上的心路历程早期我也单纯用固定孔隙率、固定渗透率做过这个模拟算出的抽采半径比现场实测大了将近一倍。教训很深刻。后来再加上 PM 模型趋势对了但绝对值还是偏大因为 PM 模型默认裂隙开度均匀变化忽略了煤层中裂隙分布的随机性。我的工程修正做法是给模型乘一个 0.3~0.6 之间的修正系数 α具体取值用现场放散初速度和抽采流量反演来确定。提醒一句别迷信文献里的参数。同样的 PM 模型参数在山西的晋城矿区适用换到贵州的构造软煤区结果可能差很远。模型参数必须用自己所在矿井的数据去反演至少要用一组现场抽采流量数据来校正渗透率基数。4. 几何建模、边界条件与网格划分的实操要点4.1 几何模型怎么建二维还是三维这类瓦斯抽采模拟最忌讳一上来就建三维大模型。钻孔长度动辄上百米如果全三维去算单元数量爆炸还没等你算完一个工况时间已经耗光了。我的建议分三档快速初步分析建二维平面模型取钻孔横截面关注抽采半径随时间的扩展规律。这个模型计算量小跑参数敏感性分析非常合适。单孔精细分析考虑到钻孔沿轴向的瓦斯流动和煤体应力变化建一个二维轴对称模型钻孔中轴为旋转轴也很快但能体现轴向压力变化。多孔联动或三维局部模型只有当你要分析钻孔间距设计、叠加抽采影响时才上三维而且几何范围要控制别把整个采区建进去。我在这个项目中采用的策略是先做二维平面模型把所有参数调通再用二维轴对称模型复算一个关键工况。这样省时也便于在论文里呈现从简到繁的建模逻辑。4.2 几何尺寸和边界条件模型尺寸没有统一标准但基本原则是模型边界离钻孔足够远远到边界的压力响应在山寨时间内可以忽略。我常用的尺寸是 50m×50m 的矩形钻孔半径 0.1m钻孔位于中心。大于这个尺寸的模型边界影响已经在1%以内了继续扩尺寸浪费计算量。边界条件的设置要注意钻孔壁压力边界等于抽采负压对应的绝对压力。比如地面泵站负压 30kPa井下大气压按 95kPa 计钻孔壁的绝对压力就是 65kPa。别把负压值直接写成压力边界很多新手在这里踩坑。远场边界四周压力固定为原煤瓦斯压力力学边界为固定位移或原岩应力。我建议远场用“常压力法向位移固定”这样最接近现场状态。初始条件整个模型域内孔隙压力初始值等于原煤瓦斯压力位移初始值为 0应力初始场按原岩应力施加。具体来说原岩瓦斯压力取 1.5MPa原岩水平应力取 12MPa垂直应力按上覆岩层厚度估算约 18MPa。这些数值在不同矿井差异很大必须用现场地应力测试数据。4.3 网格划分的尺寸控制与收敛性网格这事是COMSOL模拟里最影响成败也最容易被忽略的环节。瓦斯抽采时钻孔附近几十厘米内压力梯度极大如果网格太粗钻孔壁附近的压力降被抹平你会得到一条看起来平滑但严重偏高的抽采流量曲线。我在这个案例里的经验钻孔壁附近做局部加密最小网格尺寸控制在 0.02~0.05m向外逐步过渡。最大网格尺寸不超过 5m远离钻孔的网格可以粗一点但别超过 10m否则后期求抽采半径时的云图不光滑。用自由三角形网格。虽然很多人习惯用映射网格但在钻孔是圆形的二维模型里自由三角形配合边界层网格才是正道。边界层网格必须加。在钻孔壁周圈加 5 层边界层网格首层厚度 0.005m增长率 1.2。不加边界层的话瓦斯流量计算值会明显偏大因为边界处的数值扩散太严重。网格数量控制在 8~15 万之间比较合适。如果你的电脑内存紧张优先保钻孔附近远处网格放粗对结果影响很小。4.4 陷孔处奇异性怎么处理钻孔是一个点源或者线源在理论解中压力梯度发散数值模拟中会有应力集中和压力梯度陡增。一个实用心得是钻孔半径不要取无限小的点取 0.1m 的圆工程上没啥问题还能有效压制奇异。如果几何是二维平面孔周可以设置一个“塑性区等效范围”在塑性区里降低弹性模量模拟钻孔周围的破坏带这个破坏带的渗透性往往比原煤高得多——有条件的老哥可以把这个也耦合进去效果会更真实。5. 求解器设置与计算流程的心得5.1 瞬态还是稳态用两个阶段很多新手会直接上来算瞬态这是一条弯路。我的标准操作是分两步走第一步先跑一个不考虑渗透率变化的稳态模拟让孔压场、位移场达到一个初步的平衡状态。这样一来检查边界条件、参数单位是否正确非常容易。稳态残差收敛得很快十几秒就能出结果。第二步以稳态解作为瞬态计算的初始条件再开启完整的耦合瞬态模拟。这一步时间步长设置是关键。瓦斯抽采模拟的时间尺度通常是几个月甚至一年用统一的小步长去推一年计算量吃不消。我的做法是用自适应时间步长初始步长设为 ( 10^{-3} ) 天最大步长不超过 10 天。早期压力变化剧烈时求解器自动用小步长后期渐趋稳态时自动拉大步长。你别嫌自动步长保守这是保证收敛最稳妥的办法。另外瞬态求解器里打开“全耦合”同时求解变形场和渗流场虽然每次迭代成本更高但比分离式求解省掉很多麻烦的迭代振荡。5.2 非线性迭代与阻尼变渗透率模型本质上是强非线性问题渗透率随应力指数级变化早期抽采时钻孔附近的渗透率可能骤降一个数量级而基质收缩导致远场的渗透率又可能上升。这种“局部剧烈变化”最容易让牛顿迭代发散。处理手段有三个增大阻尼。COMSOL 默认的阻尼参数比较激进在非线性较强的模型中手动把“非线性方法的阻尼因子”从 1.0 调到 0.5 左右代价是迭代次数增加但稳。限制渗透率的变化范围。在变量定义里钳制渗透率的上下限比如 ( k \in [0.01k_0, 10k_0] )。这不是物理上的硬限制而是数值稳定性的保护。真出现越界说明模型可能哪里设错了先回头检查参数。压力初始值给准。如果初始压力和钻孔壁压力相差太大第一时步的梯度就会巨大求解器在最初的几步最容易崩。5.3 单位制度务必一口咬死COMSOL 里支持国际单位制但工程人习惯用 MPa、mD、cm³/g 这些单位搞混是重灾区。建议在“单位系统”里直接选 MPa、m、d、kg 这一套自定义单位。尤其是渗透率COMSOL 默认单位是 m²1mD ≈ ( 9.87 \times 10^{-16} ) m²转换关系必须写进变量表达式里千万别直接用数值替换。我自己在早期做这个模拟时就因为在密度公式里混用了 g/cm³ 和 kg/m³结果算出来的抽采量整整大了三个数量级。这种错不查上半天根本发现不了调参的时候第一个先查单位换算。5.4 计算时间与硬件配置的一点参考在二维模型、10万网格、90天瞬态模拟的条件下用双路E5或者单块i9的台式机跑完一般在2~4小时。如果网格到30万或者三维模型建议直接上32G内存、6核以上的机器。再一个诀窍是调模型阶段可以把时间缩短到10天几何小一点快速测试耦合逻辑是否正常等确认无误后再跑完整工况。别每次上来就跑90天改个参数就重新跑一天时间全浪费在等待上了。6. 结果分析的维度和工程意义6.1 抽采流量衰减曲线怎么解读瞬态模拟完成之后第一件要做的事是把钻孔壁处的瓦斯流量随时间的变化曲线导出来。你会得到一条典型的衰减曲线初期流量高随后快速下降后期趋于平缓。这条曲线的形状有讲究。如果曲线在早期下降得过陡说明渗透率下降主导钻孔已经进入“抽不动”的阶段如果平缓段维持得比较久说明基质收缩带来的渗透率改善与应力压缩达到了动态平衡。拿这条曲线与现场抽采计量系统的数据进行对比就能验证模型参数的可靠性。实际操作中还可以对曲线做对数变换看看是不是近似线性衰减。很多抽采模型预测的流量衰减在双对数坐标下是一条直线偏差大的地方往往就是模型和现场的差异所在值得深挖。6.2 抽采半径的定义与阈值判据抽采半径没有统一的国际标准国内通常以“残余瓦斯压力降到0.74MPa以下”或者“瓦斯含量降到8m³/t以下”作为抽采达标的判据。在这个模拟里你可以直接把压力的阈值作为一个表达式在后处理中生成“达标边界”这个边界随时间向外扩展的轨迹就是抽采半径的动态演化过程。我在输出结果时一般这样操作定义变量reach_radius if(p 0.74MPa, 1, 0)用等值线显示“达标区”。在“派生值”里用“体积平均”或“二维截线”的方式求出达标边界距钻孔的最远距离。这个距离就是某一抽采时间下的有效半径。把不同时间点的半径列成表拟合出“半径-时间”曲线用于指导钻孔间距设计。6.3 应力场和渗透率云图的联合解读很多文章只画压力云图忽略应力场。但这里恰恰是我认为变渗透率模型最有信息量的一部分。你会看到钻孔附近因为孔压下降有效应力升高渗透率局部可能显著下降而在抽采中后期基质收缩效应开始显现远场的渗透率反而比初始值高。这种“高渗环”、“低渗壳”分布现象直接用固定渗透率模型是模拟不出来的也是你在论文里最可以拿出来讲故事的亮点。我在出图时一般同时出三张压力云图、有效应力云图、渗透率比云图放在同一时刻同一区域对比。这三张图一摆审稿人和矿方技术员都会觉得做得很到位。6.4 与现场数据的对比及参数反演模拟到一定程度光靠模拟自嗨是没意义的必须与现场对照。如果现场给了连续30天的单孔瓦斯抽采流量记录拿模拟曲线去拟合。拟合时优先调整的参数顺序是初始渗透率 ( k_0 ) → PM 模型里最大吸附应变 ( \epsilon_s ) → 吸附平衡时间常数 → 修正系数 α。尽量不要一次动多个参数否则拟合结果没有物理意义。我做过一个矿上的实际案例现场初始渗透率测试值是 1.2mD模拟用 0.8mD 时的流量衰减曲线拟合效果最好。相差的 30% 在正常范围内解释为测试方法差异和钻孔周围应力扰动两种原因都有。这个结果放到论文里非常有用展示了数值模型与实测的相互印证关系。7. 常见问题的排查表和避坑技巧做一个难度中上的耦合模拟不踩坑是不可能的。我把这几年做得多的几类问题整理成下面这个表方便大家对照排查。现象可能原因排查方法初始几步就报不收敛初始条件与边界条件不协调或时间步长过大先跑稳态初始化把初始步长降到 ( 10^{-5} ) 天流量曲线振荡剧烈网格太粗钻孔附近压力梯度数值分辨率不足加密钻孔周边网格加边界层抽采流量异常偏大渗透率单位错误或吸附解吸项符号写反检查 k 的单位换算检查源项正负号渗透率在某局部爆炸有效应力趋近零或孔隙率趋近零公式出现病态在变量定义里钳制渗透率上下限位移云图乱跳远场位移边界约束不足或弹性模量过小检查远场是否加了固定位移检查E取值是否合理计算速度极慢网格过密或求解器设了过小的时间步远程粗化网格最大步长放宽到5天结果对网格敏感钻孔奇异点附近网格变化导致结果突变固定钻孔附近网格不变只变远处网格检查敏感性除了这些我想强调一个很多入门者容易忽略的问题是“解吸附模型与压力历史的耦合”。Langmuir 吸附曲线是瞬态平衡假设但实际煤层中瓦斯解吸有滞后。如果发现模拟的衰减曲线比现场快太多别急着怀疑渗透率可以先检查是不是把瞬态吸附当成了平衡吸附用。更精细的模拟可以用“非平衡吸附模型”也就是加一个吸附时间常数本质上是一个一阶动力学源项COMSOL 里加一个常微分方程接口就能搞定。8. 这个模型还能往哪些方向扩展8.1 从瓦斯抽采到煤层气产能预测把钻孔内边界从定压改成定流量条件或者改成混合边界这个模型就转身变成了煤层气井的产能预测模型。溶洞、压裂裂缝都可以通过修改几何和高渗区来模拟。煤层气开发前期做产能评估这样的数值模拟是很常用的手段。8.2 热流固多场耦合引入温度场煤的吸附能力受温度影响显著温度升高吸附量下降。在煤层注热增产瓦斯的工程场景中需要把温度场方程引进来变成一个三场耦合模型——温度场通过吸附解吸项影响瓦斯源项同时温度变化引起煤体热应变热应变通过总应变影响渗透率。COMSOL 里增加一个“固体传热”接口即可改动工作量不大但物理丰富度提升一个档次。8.3 双孔双渗模型真实煤层的基质和裂隙是两个独立的储渗系统基质渗透率极低裂隙渗透率高二者之间有交换项。常规的“等效单孔介质”模型在这类分析中会高估瓦斯的供给速率。如果要做更精细的研究建议升级为双孔双渗模型两套 PDE两套压力变量中间加一个储层间窜流系数。COMSOL 完全支撑这种结构只是公式推导和变量索引会更绕一点但对论文来说这一升级很有分量。8.4 抽采钻孔群联动分析前面说的都是单孔模型真正的工程设计需要研究钻孔间距怎么布、多长时间能达标。这时候势必要建一个多钻孔模型研究钻孔之间的压力叠加效应。逻辑上不复杂在几何里画多个圆每个圆都加相同的压力边界条件其余设置不变。但要注意多孔模型的网格量和计算时间会成倍增长建议先用二维平面模型跑通思路再考虑三维精细化。钻孔间距、抽采负压、抽采时间的匹配关系是这个模型能给出的最直接工程设计参数。写到最后的一点建议如果你刚开始做这个方向我的建议是先把单孔二维模型的整条链路跑通——从几何建模、PDE设置、变量定义到结果导出——哪怕结果是错的也没关系先把流程走完你会对这个耦合关系产生非常直观的体感。然后再引入变渗透率模型做对比研究固定渗透率 vs 变渗透率两条曲线能差多少。这组对比本身就是一篇论文的核心工作量。另外一个很低调但实用的技巧是把 COMSOL 运行的参数化扫描功能用起来。把初始渗透率、抽采负压、Langmuir 压力常数设为参数扫描对象一次性跑十几组工况输出一张多曲线汇总图。这种图放在论文里比单条曲线有说服力得多也能让你快速看出哪个参数对抽采半径的敏感性最高。最后再提醒一句COMSOL 里所有模型参数一定要记录来源几何尺寸、力学参数、渗透率、吸附常数逐项列出参考文献或现场测试依据。别等到写论文时才回头翻模型文件那时候你很可能已经忘了某个参数是怎么来的。数值模拟这行参数有据可查比算得漂亮更重要。
返回列表