十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

Comsol多物理场耦合水力压裂模拟:从建模到参数分析详解

Comsol多物理场耦合水力压裂模拟:从建模到参数分析详解 做非常规油气开发的人基本都绕不开水力压裂这四个字。低渗透率储层不改造井打了也白打而压裂设计的核心就三个问题裂缝起不起得来、朝哪个方向走、能延伸多远。要回答这些问题数值仿真几乎是最划算的验证手段但真上手做的时候很多人第一个遇到的坎就是——该用什么模型、选什么模块才能把高压流体注入地层导致岩石开裂这个过程描述清楚。Comsol做这件事的好处我在实际项目中体会最深的一点是它把固体力学和达西定理这类多物理场耦合放在同一个界面里不需要像其他有限元工具那样自己写一大堆耦合单元模型结构调整起来也快。这篇文章就以固体力学达西定理这个耦合方案为主线把水力压裂模拟从建模思路、控制方程、参数设置到后处理分析完整走一遍适合正在做相关方向课题的研究生以及想快速评估压裂参数影响的现场工程师参考。我会尽量按实际踩坑的思路来讲不写流水账重点放在为什么这么建模和实际操作中会遇到什么问题上。1. 项目整体设计与建模思路拆解1.1 水力压裂物理过程到底是什么水力压裂的本质是高压流体注入地层后岩石在拉应力作用下发生断裂的流固耦合过程。压裂泵车把高压流体从井筒泵入储层流体克服地层最小主应力后在井壁附近形成应力集中当局部有效拉应力超过岩石抗拉强度时岩石起裂随后流体持续进入裂缝高压驱动裂纹向前方和上下两个方向扩展。裂缝一旦张开又为流体提供了高导流通道渗流和应力两个场始终咬合在一起谁也不能单独决定最终裂缝形态。在数值模型里我们需要同时体现三个机制第一流体在孔隙介质中的渗流也就是达西流动它决定压裂液滤失和孔隙压力重分布第二岩石骨架的应力应变响应包括弹性形变、可能出现的塑性或损伤区第三裂缝自身的打开与扩展需要用断裂力学或损伤力学来描述。只做其中一项视角都是不完整的这也是为什么固体力学达西定理的耦合会成为这类仿真的标配。1.2 为什么选固体力学达西这条耦合路线很多初学者一上来就想直接模拟裂缝扩展但裂缝扩展是强非线性问题对网格和算法要求都高。我自己的经验是稳妥的路径是先把固体力学和达西耦合的地基打牢再逐步加裂缝扩展机制否则模型一跑就发散根本分不清问题出在哪个物理场上。达西定理负责描述流体在孔隙岩层中的流动跟纳维-斯托克斯这类自由流方程相比它忽略了惯性项只考虑压力梯度驱动的渗流计算量小得多对储层尺度的问题也足够用。固体力学模块负责给出岩石的应力应变状态。两场通过有效应力原理耦合流体压力升高骨架上的有效应力降低岩石更容易拉伸破坏反过来岩石体积变形又会改变孔隙体积和渗透率影响流体流动。这种双向耦合正是水力压裂的典型特征。相比完全解耦的渗流模型这套耦合方案能捕捉到一个非常关键的现象注入高压流体后裂缝周围会出现明显的应力重分布也就是常说的应力阴影这直接关系到多段压裂时缝间距的设计。只算渗流是看不到这个效应的而把这个效应算明白恰恰是很多现场方案优化所依赖的核心。1.3 三套可选的建模方案与适用场景基于Comsol做水力压裂根据研究目标不同一般有三个层次的建模方案。第一层不考虑裂缝扩展的固定裂缝路径分析。模型里预设一条或几条裂缝路径注入期间只考虑孔隙压力扩散和应力分布适合研究应力阴影、诱导应力、缝间干扰这类问题。优点是稳定、快适合先跑通模型逻辑。第二层损伤或者内聚力模型追踪裂缝扩展。沿预设裂缝路径定义内聚力本构或损伤本构流体到达后满足断裂准则的区域刚度退化裂缝逐渐延长。适合研究裂缝扩展长度、缝宽和注入参数的关系是工程研究里最常见的做法。第三层结合移动网格和断裂力学理论的动态扩展模型。裂缝尖端用应力强度因子或能量释放率判断扩展网格随裂缝尖端更新尽量逼近真实物理过程但实现复杂对网格和时间步长极度敏感通常建议前两层走通了再考虑。这篇文章侧重前两层尤其是把固体力学和达西耦合这一步做扎实。大多数人做压裂仿真问题往往不是出在裂缝扩展算法而是出在基岩段耦合本身没设对这是我最想提醒的一点。2. 控制方程、力学基础与关键参数2.1 达西定理从渗流方程到压力扩散达西定理是1856年通过砂柱实验总结出的经验规律形式非常简洁v -(k/μ)∇p。v是达西流速矢量k是渗透率张量μ是流体动力黏度∇p是压力梯度。在Comsol的达西定律接口中求解的实际是把这个公式代入连续性方程后得到的压力扩散型方程在饱和多孔介质、无源汇的简写形式大概是这样的ρS ∂p/∂t ∇·(ρv) Qm其中S是储水系数ρ是流体密度Qm表示注采源汇项。需要注意的是达西定理的适用前提是低速、层流状态雷诺数通常在1以下常规储层压裂液滤失速度基本满足这个范围。如果压裂液是高黏的幂律流体就需要考虑黏度随剪切速率的变化达西形式要做相应修正。另外k如果不是标量而是跟应力状态相关的函数比如裂缝附近渗透率因张拉开裂而升高就不能用固定值需要定义应力依赖渗透率的关系这在压裂后评估阶段尤其常见。2.2 固体力学控制方程与有效应力原理在Comsol固体力学接口中核心求解的是动量守恒方程。在忽略惯性项的准静态条件下就是应力平衡方程∇·σ F 0其中σ为总应力张量F为体积力。本构关系默认用线弹性模型σ C:εC是四阶弹性张量跟杨氏模量、泊松比对应。水力压裂模拟的很多研究场景线弹性假设已经能满足需求毕竟地层深度大、温度稳定短时间注浆的流变效应通常不明显。关键在于有效应力公式。工程上普遍采用Biot有效应力σ_eff σ - αpIα是Biot系数取值在0到1之间p是孔隙压力I是单位张量。α反映了孔压对骨架变形的贡献度高孔隙度岩层α偏大致密岩石α偏低。在Comsol多物理场中Poroelasticity耦合节点会自动完成这个换算不需要手写但你必须理解它在物理上意味着什么否则参数填错了都不自知。2.3 起裂与扩展准则裂缝什么时候起裂工程上最常用的判据是最大拉应力准则当任意方向的有效最大主应力达到岩石抗拉强度时材料起裂。压裂过程中压力足够大时井壁附近往往会先形成张性破坏所以水力裂缝通常都是张性裂缝。裂缝扩展方向有一个经验法则裂缝总是沿垂直于最小主应力的路径扩展。因为裂纹尖端应力强度因子在垂直于最小主应力的方向上最大裂纹最容易朝着阻力最小的方向走。这个规律在现场微地震监测数据里也有验证裂缝形态基本都是垂直于水平最小主应力这也是水平井分段压裂时裂缝会尽量垂直于井筒的原因。如果要定量追踪扩展可以用应力强度因子K_I当K_I达到断裂韧性K_IC时裂缝拓展。在Comsol里也可以通过内聚力模型实现沿预设裂缝路径设置牵引-分离本构断裂能G_c是控制参数之一。内聚力模型的好处是不需要额外引入奇异单元裂纹尖端有一个过程区应力分布比纯断裂力学方法更平滑实际实现也更稳定。2.4 材料参数与边界条件整理整理一个比较常用的参数表单位按国际单位制方便直接往Comsol里填。注意如果你的工程资料里给的是毫达西mD和兆帕MPa记得先换算。参数符号典型取值说明杨氏模量E10-50 GPa致密砂岩偏高页岩偏低泊松比ν0.15-0.3影响闭合力与裂缝形态Biot系数α0.6-0.9高孔岩层取大值渗透率k0.1-10 mD约1e-16~1e-14 m²页岩可低至1e-18 m²孔隙度φ0.05-0.15渗流体积占比流体黏度μ1-100 mPa·s滑溜水低、冻胶高抗拉强度σt1-8 MPa需要实验室测定原地水平最小主应力σh20-40 MPa由储层深度决定原始孔隙压力p015-30 MPa可用压力梯度估算注入压力p_inj高于σh实际由泵压决定边界条件是这个项目里最容易出问题的地方。井筒位置建议给定注入流量或注入压力不要直接加在所有外部边界上。远场边界用辊支承或指定位移代表周边无限大地层孔压边界在远场保持原始地层压力裂缝路径上则允许流体进入孔隙空间。对称边界如果利用得好模型尺寸能减半计算速度大幅提升这也是我下面实操部分会优先采用的做法。3. Comsol模型搭建实操3.1 几何建模与对称简化一个常用做法是建立二维平面应变模型取水平截面把整个地层简化为矩形区域长度方向取100 m到200 m宽度方向取50 m到100 m井筒位于区域中心或者放在左边界具体看你要研究单翼缝还是双翼缝。双翼缝更接近实际页岩水平井压裂形态利用左右对称性可以只建一半模型计算量直接减半。我第一次跑模型的时候没有做对称处理网格数量多了一倍求解时间翻了不止一倍后来改了对称条件收敛性也明显变好。裂缝路径在几何中预置为一条很窄的矩形条带或一条线。线的话在后续网格阶段注意细化。为什么要预置因为标准Comsol中默认不会自动产生新的几何边界裂缝作为一种高渗透、低刚度区域嵌入模型比强行模拟真正的裂纹尖端点更容易收敛。几何里留一条宽0.01 m左右的裂缝条带赋给它更高的渗透率和较低的刚度就能模拟张开裂缝的导流能力。这个方法实际用下来很稳尤其是做参数扫描的时候不会因为网格变形导致中途发散。3.2 物理场接口与耦合节点设置在Comsol Model Wizard中空间维度选二维物理场选择结构力学模块下的 Solid Mechanics固体力学流体流动模块下 Porous Media and Subsurface Flow → Darcys Law达西定律添加物理场之后记得在多物理场节点中创建 Poroelasticity 耦合把固体力学的应力方程和达西定律的孔压方程自动关联起来。Comsol会自动生成由Biot系数参与的应力-孔压耦合项这一步相当于把前面第2章里的理论公式装进了软件。两个物理场的因变量分别是位移场u,v和压力场p如果做了对称简化在对称轴上设置对称条件即位移法向分量为零、法向流动为零。需要特别注意先在固体力学中设定材料本构线性弹性模型下输入E和ν在达西定律中设定渗透率k、孔隙度φ和流体属性Poroelasticity节点中单独设置Biot系数α。很多人习惯在一个材料节点里把参数全填了但不同物理场对材料的依赖路径不同建议按物理场分别确认避免出现材料定义存在但没被当前接口引用的情况。3.3 网格剖分策略网格是压裂模拟中收敛性最大的变量之一。裂缝条带和井筒附近一定要细化单元尺寸建议控制在裂缝宽度的5-10倍以内比如裂缝宽0.01 m该区域网格边长取0.05 m左右。远离裂缝的区域可以放到2-5 m。地层尺度大、网格从密到疏的过渡用自由三角形网格即可不要强行用结构化四边形除非你的几何特别规整否则会花大量时间在网格质量修复上。一个更细化的技巧在裂缝尖端附近布置局部加密区因为应力奇异性就集中在尖端附近网格加密后K_I计算结果会更稳定。网格太粗应力集中会被抹平裂缝扩不出来。网格太细单元数量急剧膨胀瞬态求解时间步变短计算时间和内存增长得也很夸张。这个度需要调试我一般先跑一个粗网格看趋势确认物理行为合理后再加密做最终版本。3.4 求解器配置与时间步长控制瞬态求解器建议先用BDF向后差分公式方法阶数自动或1-2阶为宜过度追求高阶对于多物理场耦合问题没有意义反倒容易振荡。线性求解器直接选PARDISO这类多物理场矩阵一般是非对称的带参数化扫描时PARDISO的鲁棒性很好。我试过迭代求解器在强耦合条件下经常不收敛换PARDISO就正常了所以对于这类问题不要犹豫直接上直接求解器。时间步长是整个瞬态分析中最容易出问题的环节。注入初期压力波传播快必须用小步长比如0.001 s起步进入拟稳态后可以慢慢放大到几秒甚至几十秒。Comsol的BDF求解器带有自适应步长控制设置合理的相对容差默认0.01通常够用追求精度可以降到0.001后交给求解器自行调整即可不建议手动固定时间步长除非你要做严格的时间收敛性验证。3.5 参数化扫描与工况设计参数化扫描建议重点关注四类变量注入压力或流量、注入时间、岩石弹性模量、渗透率。通过扫描可以发现哪些因素对裂缝延伸距离的敏感性最高这对压裂设计参数优化很有意义。在Comsol中可以直接在全局参数节点定义扫描参数列表研究节点里选择Parametric Sweep。扫描结束后后处理端可以用一维绘图组观察不同参数下裂缝中心线处的孔隙压力曲线、位移曲线。如果需要批量输出多组曲线可以考虑用Parametric Sweep配合导出数据集把结果整理成表格直接放到报告里。这样一次性把几十组工况跑完比手动一个一个改参数高效得多也更容易发现参数之间的交互效应。4. 结果分析与现象解读4.1 孔隙压力扩散形态模拟结果里比较直观的是孔隙压力云图。注入井周围会出现一个高压扩散区随时间推移等压线逐渐向外推移。如果地层渗透率低压力扩散慢裂缝附近会形成局部的高压包这个高压包就是维持裂缝张开背后的流体压力来源。对比不同渗透率条件你会看到高渗地层里压力扩散得更快更容易把能量散溢到远处而低渗致密储层中压力积聚明显迫近井筒区域的压力梯度很大有利于维持有效裂缝宽度但也会增加滤失控制难度。这个结果跟现场认识是一致的——页岩气压裂要用滑溜水大排量注入就因为基质渗透率太低必须靠高压维持缝内净压力才能造出足够长的裂缝。4.2 裂缝张开度与应力阴影裂缝条带法向位移差就是张开度。观察位移场云图裂缝条带两侧的位移会出现明显突变差值就是裂缝宽度的数值近似。沿裂缝长度方向提取这段宽度可以看到典型的近井端宽、尖端窄的分布特征与现场经验相符。应力阴影效应在结果里也很显眼。注入后裂缝两侧的水平主应力被局部抬高尤其是垂直于裂缝面方向最小主应力数值上发生变化形成阴影区。在多段压裂设计时如果缝间距太近相邻裂缝会被阴影区内的应力抬高作用压制导致扩展不对称或者被压缩变窄。这正好解释了为什么现在很多设计强调拉链式交替压裂而不是一段接一段顺序压裂。我在参数扫描里把缝间距从50 m缩到20 m后一条裂缝的缝宽明显下降这个变化直接影响了现场射孔方案的调整。4.3 与经典解析解KGD/PKN的对比验证验证数值模型对不对最踏实的办法就是跟经典解析模型比。上世纪五六十年代发展起来的KGD模型和PKN模型给出了裂缝长度、宽度与注入参数之间的解析关系。两者区别在于裂缝形态假设KGD模型假设裂缝高度不变、宽度沿缝长均匀更适合短而宽的裂缝PKN模型假设裂缝在水平面上呈长而窄的椭形能量主要耗散在裂缝长度方向更适合长裂缝。实际选取哪个做对比取决于你研究储层的缝高约束条件。在低渗、缝高受限的储层中可以用KGD模型估计半缝长随注入时间的变化。数值解与解析解的曲线趋势一致偏差在合理范围内说明模型的物理行为是合理的。如果偏差很大优先检查边界条件是否把远场限制得太近或者材料参数是否正确。我在第一次验证时裂缝长度比解析解偏短了将近30%排查后发现是远场边界距离井筒只有30 m应力约束太强后来把模型区域扩大到100 m之后偏差降到5%以内。这个教训让我记住了远场边界要离得够远这条准则。4.4 参数敏感性分析从实际扫描经验看影响缝长的第一敏感性参数是注入流量和注入时间其次是弹性模量和地应力差。渗透率对缝长的影响不如前几个参数那么大但会显著改变滤失量。这些结论反过来验证了现场设计里大排量、低砂比、长时间策略的物理基础——流量和时间的乘积直接决定压裂液总能量而滤失项决定了有效能量比例。做敏感性分析时建议把结果整理成归一化对比曲线横坐标是参数倍数纵坐标是目标量相对基准工况的百分比这样放到汇报材料里也一目了然。5. 常见问题与排查经验5.1 不收敛问题多物理场瞬态仿真中不收敛大概率不是求解器不行而是模型本身有问题。最常见的几个原因网格在应力梯度大的区域太粗时间步长过大压力跳跃导致应力场振荡材料参数出现量级不合理比如渗透率填成了毫达西而不是m²导致整个方程病态还有一种是边界条件互相矛盾比如井筒处既给定压力又限定位移双约束把方程锁死。排查时先把边界条件里的约束逐个释放测试再检查参数量级这是最有效的排查顺序。5.2 网格依赖水力压裂对网格的依赖几乎是所有仿真问题里最强的之一。裂缝宽度、扩展长度都跟网格尺寸直接相关。如果发现网格粗一倍缝长结果差30%以上说明你的几何和本构设置有问题要先稳定网格无关性再谈参数研究。比较实用的做法是固定物理参数跑三套网格尺寸2倍粗、标准、2倍细比较关键响应量裂缝长度、井底压力的变化率误差在5%以内才算网格收敛。很多时候差得离谱是裂缝条带网格太粗导致的压力不连续加密后问题自然消失。5.3 负孔隙压力与振荡解负孔隙压力很常见尤其是在远场边界压力设得不对时或者时间步长过大导致数值振荡。遇到这个情况先检查边界条件确认远场是不是维持原压再看求解器容差把相对容差从默认的0.01调到1e-3到1e-4重新求解。我遇到过一种特殊情况裂缝条带渗透率设得比基岩高出几个数量级导致局部流动速度过快压力场出现锯齿状振荡后来限制了裂缝渗透率倍率后振荡消失结果也合理了。5.4 裂缝路径控制预设裂缝路径的方法有一个副作用裂缝只能沿预先画好的路径扩展无法自动拐弯。这不完全是坏事因为宏观水力裂缝的方向基本可由地应力方向预判预置路径带来的误差有限。但如果想研究天然裂缝对裂缝扩展的影响就要在路径中嵌入多个不同角度的天然裂缝段或者采用损伤模型让裂缝可以在更宽松的空间中寻路。后者实现难度明显更大但对复杂缝网的研究几乎是绕不开的路径。我的建议是先用直线路径把整个模拟流程跑通再逐步加分支和角度变化一步一步逼近真实地质条件。结语我做这类模拟最大的体会是Comsol最大的优点不是某个求解器有多强而是把物理问题压缩成选模块、设参数、看分布三个动作的时间成本很低这让你可以把更多的精力放在理解物理过程上。耦合收敛问题的根源几乎都出在人对控制方程的理解上而不是软件本身。如果你正在做水力压裂方向的课题我的建议是先别急着追复杂的三维模型把一个二维耦合模型做透结果能跟解析解对上再往裂缝扩展、三维模型、温度场耦合逐层加码这条路会顺畅得多。另外记得每一组参数跑完都留好模型文件和参数记录表格不然过两个月再想复现某个工况只能对着屏幕发呆。
返回列表