ARTICLE DETAIL

资讯详情

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

二维水力压裂模拟中Cohesive单元建模的核心要点与参数调试指南

二维水力压裂模拟中Cohesive单元建模的核心要点与参数调试指南 1. 开篇为什么第二次还要写二维水力压裂做水力压裂模拟的朋友应该都有这种体会Cohesive单元这套东西看着教程觉得挺简单无非是搭几何、赋材料、加注入流量但轮到自己上手从单元选型到收敛每一步都能卡上几天。尤其是二维模型看起来比三维少了几个自由度但坑一点没少。上一篇我梳理了从零开始搭建Cohesive单元水力裂缝模型的基本流程把几何建模、单元选择、载荷设置这些最基础的框架过了一遍。这一篇我想换一个角度不罗列界面操作而是把二维水力压裂模拟里最容易出问题、也最容易被教程一笔带过的核心环节拆开来讲网格怎么切才合理、流固耦合的孔压边界到底怎么给、本构参数标定到什么程度才能让裂缝形态和压力曲线像回事以及遇到不收敛时按什么顺序排查。之所以值得再写一篇是因为二维模型在工程预判和机理研究中仍然不可替代。三维模型动辄几十万上百万自由度一次计算跑几个小时甚至几天不适合做参数敏感性扫参二维模型计算速度快、边界条件容易控制是做单裂缝延伸规律、压裂液效率分析、簇间干扰机理研究的重要工具。而且很多三维模型里遇到的问题本质上都能在一个精心设计的二维模型里先想明白。适合读这篇的朋友是已经跑通过一次简单模型、但对结果质量和参数合理性没有把握的初学者或者从其他软件转到通用有限元平台、想快速对齐Cohesive单元建模习惯的工程师。2. 核心建模思路Cohesive单元在这里到底扮演什么角色2.1 水力裂缝模拟里Cohesive单元解决的是“裂缝怎么张开的”问题先把这个事情说到底。岩石起裂和扩展本质上是一个强不连续问题两条裂缝面之间可以脱离接触形成真实的空隙。常规的连续体单元不允许这种位移不连续所以要么用扩展有限元要么用Cohesive单元提前把可能的裂缝路径“预埋”进去。水力压裂模拟中Cohesive单元的作用就是在它所在的边界上通过牵引-分离关系描述裂纹面的张开过程。当缝内流体压力超过单元的抗拉强度时单元承担的内聚牵引力随张开位移增大逐渐降低直到完全失效这时裂缝就成了一个可导流的开口。这个机制带来的直接结果是你必须在模型里预先知道裂缝会从哪里走。对于单缝压裂通常做法是在射孔位置沿着最大主应力方向预置一条Cohesive层让裂缝沿着这个路径扩展。这是Cohesive方法最大的局限也是它在二维场景中依然非常好用的原因很多机理问题关心的就是一条或几条确定路径上的裂缝行为你不需要它去模拟完全任意的裂缝转向。2.2 模型的三个组成部分缺一不可一个完整的二维水力压裂Cohesive模型必须同时包含以下三类角色岩石基底单元负责模拟储层的弹性响应和孔压扩散。在通用有限元软件里这一部分使用带孔压自由度的固体单元比如二维四节点平面应变孔压单元。Cohesive裂缝单元负责模拟裂缝的起裂和扩展使用同时具备位移和孔压自由度的内聚力单元。二维问题里常见的是四节点或六节点版本。流体流动关系裂缝一旦张开压裂液在缝内流动。这部分由Cohesive单元本身的面内流动本构和滤失系数来描述不需要另外建模管流单元。这三者的关系可以类比成一个水坝系统。基底单元是水库的岩壁和地基它的弹性变形决定了缝内流体压力能“撑开”多大的空间Cohesive层是坝体上的闸门压力足够大才打开、打开之后不再闭合缝内流动是引水渠决定液体进入裂缝之后如何分配、如何把压力传递到缝尖。三者耦合在一起就是水力压裂数值模拟的完整物理。3. 二维模型的操作要点与Cohesive单元嵌入3.1 网格设计的第一原则让Cohesive层附近“密而不乱”我见过很多新手犯同一个毛病就是把全模型切成均匀细网格觉得这样最保险。结果计算慢不说还经常因为过度约束导致裂缝无法正常张开。正确的做法是局部加密在预置裂缝路径两侧一定范围内用密网格远处逐渐过渡到粗网格。道理很简单裂缝缝尖附近存在强烈的应力集中和压力梯度需要足够的网格分辨率才能捕捉而远处是弹性区的钝响应粗网格完全够用。网格尺寸的量级参考对于缝长数十米的二维模型Cohesive单元尺寸控制在0.05米到0.2米之间比较常见。具体取值取决于你对缝宽精度的要求。可以做个简单估算如果岩石杨氏模量是30 GPa缝内净压力是5 MPa那么裂缝在中部的特征张开宽度大概是微米到毫米量级想让单个Cohesive单元宽度的变化对压力场的影响分辨率合理单元尺寸就不能比这个特征宽度大太多。实际操作中先用0.1米试算重点看缝宽曲线是否光滑如果有锯齿状波动说明网格还偏粗再加密。另外有个细节值得提Cohesive单元的嵌入方式会影响初始刚度矩阵。把Cohesive层预置在相邻实体单元之间时软件会额外附加一个很薄的界面刚度这会给整体模型引入一个微小但存在的初始柔度。如果Cohesive层数太多模型整体的“表观模量”会被拉低。处理方式很简单保证Cohesive单元的初始刚度比相邻实体单元刚度高一到两个数量级让裂缝在起裂之前界面几乎不发生相对滑移。3.2 单元类型选择和网格划分的具体做法以通用有限元软件为例二维水力压裂模型常用的搭配是岩石基底单元四节点平面应变单元开启孔压自由度。实体区域网格建议使用扫掠或结构化方法保证单元形状规则。Cohesive单元二维Cohesive单元同时开启位移和孔压自由度必须选用带厚度方向的减缩积分或全积分版本。绝大多数情况下建议厚度初始值为1因为后续断裂能标定里定义的其实是单位面积上的能量厚度值会被本构计算约掉。网格划分时要特别注意Cohesive单元层是否需要独立划分。如果在软件的前处理里直接利用“网格编辑”功能嵌入通常能自动共享节点方便。如果模型需要更复杂的裂缝路径比如多簇射孔或者裂缝非直线扩展手工编辑会非常累这时建议先在实体区域切出细长条区域再给这个细长条区域单独赋予Cohesive截面属性软件会自识别并生成界面单元。这个方法在二维模型里最稳定推荐优先使用。注意不要为了省事把Cohesive单元和实体单元用绑定约束凑在一起。虽然某些情况下也能算但绑定约束会改变界面节点的自由度耦合方式严重干扰孔压自由度的连续传递导致缝内流体压力上不去甚至振荡。4. 流固耦合与注入参数设置4.1 初始地应力与孔压条件二维水力压裂模型中初始应力状态是通过在实体单元上施加初始应力场实现的。这个初始应力在通用有限元里一般用预定义场施加方向与最大主应力对齐。对于二维模型通常只设两个主应力分量但要保证裂缝起裂方向与最大主应力方向一致。若初始应力给的过小模型可能会在注入刚开始时就沿非预期方向张裂。初始孔压也必须在预定义场里同步设定否则软件默认孔隙压力为零会与实际地层条件不一致。孔压初始值一般取储层静压。如果你用的是有效应力原理需要确认材料参数输入时使用的是有效应力参数并且初始孔压和总应力之间的关系满足有效应力方程否则起裂压力计算会漂移。关于注入条件二维模型里通常以质量流量或体积流量形式施加在井点位置也就是Cohesive层起点处的边界节点上。注入的压裂液密度和黏度都要按实际情况取。水的密度约1000 kg/m³黏度约0.001 Pa·s如果模拟的是冻胶压裂液黏度要按实际配方提高一到两个量级。缝内流体压力分布对黏度非常敏感黏度越高缝内压力梯度越大缝宽分布越不均匀。4.2 滤失与缝内流动行为Cohesive单元的流体属性设置里核心是缝内滤失系数和流体切向流动参数。滤失系数代表压裂液向地层渗透的能力数值越大液体越容易从缝壁漏进岩石用于推进裂缝延伸的有效液量就越少。很多初学者不设滤失或设为0这会造成缝内压力偏高、裂缝过度延伸得到的结果偏乐观。滤失系数取值可以参考目标储层的渗透率、孔隙度和压裂液造壁性。实测岩心数据若无工程经验上常取1e-6 到1e-5 m/s^0.5左右量级再结合现场小型压裂测试进行校准。缝内切向流动行为由Cohesive单元的流体本构控制通常选择Newtonian或者Power-law。岩石裂缝面内的流动本质上是两个平行平板间的流动流量正比于缝宽的三次方——这就是经典的立方定律。你在设置里输入流体黏度和幂律指数后软件会自动计算裂缝导流能力随缝宽的变化。这里有一个需要反复验证的地方裂缝宽度在缝尖附近趋近于零立方定律下导流能力衰减很快这一段的数值处理很容易诱发压力振荡。一种通用缓解办法是给失效的Cohesive单元保留一个很小的残余缝宽比如0.01毫米既不会显著影响物理结果又能避免缝尖处的数值病态。很多模型不收敛的问题根源就在这里。5. 本构参数标定牵引-分离关系的关键细节5.1 强度、断裂能、初始刚度怎么配合Cohesive单元的本构行为本质上是牵引-分离曲线应力随张开位移先升后降下降段包围的面积就是断裂能峰值为材料抗拉强度。水力裂缝模拟里这套参数和经验值往往来自对实验室巴西劈裂或三点弯曲试验的拟合。如果手头没有试验数据也要合理估算而不是随便填。抗拉强度直接控制起裂压力。工程上岩石的抗拉强度一般只有抗压强度的十分之一到二十分之一。比如抗压强度60 MPa的砂岩抗拉强度取2到4 MPa是合理的。断裂能决定裂缝延伸的难易程度断裂能越大裂缝越难扩展相同的注入量下裂缝更宽更短。反过来断裂能太小裂缝容易长驱直入缝宽偏薄。粉砂岩、灰岩、页岩的断裂能分布范围很宽页岩一般在几十到几百 J/m²之间。模拟前如果没有实验数据先将断裂能取一个中间量级后续用压力匹配法反演。初始刚度的取值逻辑可以参考2.1节提到的取基底单元刚度的数值量级放大10到100倍当作界面初始牵引刚度。如果取值过低裂缝会在真正起裂前就发生显著相对位移等效于模型里多了一条Soft Inclusion影响应力场分布甚至提前起裂。提示在调试阶段建议先固定抗拉强度和断裂能只调注入速率。每调一次做一次单参数敏感性对比避免参数间相互纠缠否则出了问题你根本不知道是哪个参数在捣乱。5.2 黏性正则化参数到底该不该开通用有限元软件里Cohesive本构通常会提供一个粘性正则化参数用来改善收敛性。它的本质是允许牵引应力在失效过程中有一个微小的超调延时把强非线性的突变软化变得更平滑。这个参数不属于物理参数纯粹是数值层面的窍门。开太高会显著钝化裂缝强度让人误以为岩石更“软”。经验做法是取一个比时间增量步长小一到两个数量级的值比如1e-5到1e-6量级。在模型初步能收敛之后逐步降低该值直到结果不再随其变化这样才算是去掉数值影响。实际迭代中我通常先把黏性参数调得稍微大一点确保第一步能算过去然后每步缩小一个数量级重新试算直到压力曲线不出现可见变化为止。这个过程看起来费时间但对于后续要拿结果做定量分析的场景这一步绝对不能省。6. 常见报错、不收敛原因与排查经验6.1 第一步就发散问题基本出在接触和自由度很多模型的报错日志在第一个增量步就显示“too many attempts made”这时候不要急着去调时间步长先按以下顺序排查检查Cohesive单元是否与实体单元共享节点如果两层中间出现空隙流体压力无法传递裂缝无法张开。检查Cohesive单元的几何厚度或截面厚度是否设成了极大值这会影响初始刚度计算。检查边界条件是否约束了模型刚体位移。二维模型虽然简单但如果忘了在远处边界加约束第一步刚体位移就会导致奇异。还有一个隐蔽问题孔压自由度初值没设导致初始有效应力计算异常。这个可以通过输出初始应力场来诊断如果看到初始孔压全区为0基本就是这个原因。6.2 中途压力振荡、不收敛的常见场景如果你已经迈过第一步问题通常出在裂缝扩展过程中的流固耦合。典型场景有几种我整理成了一张速查表现象常见原因处理思路压力曲线高频振荡Cohesive单元尺寸太大或缝尖网格不足局部加密缝尖附近网格裂缝宽度锯齿状波动Cohesive单元本构软化段太陡、增量步过大减小最大增量步或调整断裂能数值压力一直上不去滤失系数太大或初始缝宽太大检查滤失系数把残余缝宽调小裂缝不扩展但压力一直涨抗拉强度设置过高和室内实验数据比对适当降低抗拉强度增量步越来越小直至中断网格畸变、Cohesive单元反向变形检查模型大变形开关、单元畸变控制策略单独提一下第三种情况压力上不去往往不是注入量不够而是裂缝在起裂之前就已经从Cohesive层两侧漏失。此时的检查重点是初始缝宽和Cohesive单元渗透率。部分软件在Cohesive单元未损伤时也会按完好岩石渗透率参与孔压计算如果此值设得过高会明显抢走注入液体。6.3 一个值得学习的调试顺序我自己反复用的一套调试顺序分享给大家跑一个完全不设Cohesive单元的弹性注压模型确认岩石基底单元和孔压边界条件没有问题。加入Cohesive单元但暂时关闭损伤演化只看初始应力平衡能否完成这一步相当于检验预置路径有没有破坏初始应力状态。打开损伤演化设置一个较保守的大断裂能让裂缝在小范围内稳定扩展确认压力曲线形状是否符合预期。逐步把断裂能和渗透率向目标值靠近每步对比结果变化确认参数敏感性方向符合物理认知。这套顺序听起来慢实际上比直接全参数启动然后对着报错日志瞎猜要快得多。尤其是第二步能帮你排除一大部分“初始应力场被Cohesive层的存在搞坏”的情况。7. 从二维模型结果里能读出什么以及向三维扩展的衔接点7.1 二维模型的经典输出缝宽、缝长与压力曲线怎么配合看二维水力压裂模型最常见的输出是三件套裂缝长度随时间变化曲线、井底压力曲线、剖面上的缝宽分布。这三个量必须放在一起看才完整。井底压力曲线形态反映的是裂缝扩展主导机制。如果压力随注入时间持续上升裂缝可能处于受限扩展状态缝宽在增长但缝长变化不大如果压力先上升后趋于平稳通常对应裂缝已进入自相似扩展阶段注入量主要用于维持恒定缝宽向前推进如果压力出现明显下降段就要怀疑是否发生了穿层、失控扩展或裂缝转向。缝宽分布则能直接反映净压力分布。经典KGD模型预测缝宽在井点处最大向缝尖逐渐收窄。如果算出来的缝宽分布不符合这个基本形态说明Cohesive单元刚度或者流体流动参数有问题。用二维模型做方案比选也很方便。比如对比不同注入排量下的缝长和缝宽排量翻倍缝内压力增加缝宽通常明显增加但缝长的变化幅度取决于断裂能和滤失的相对大小。这类敏感性分析只有二维模型能做到低成本反复试算。7.2 往三维扩的时候哪些经验能带走二维经验向三维迁移时有两个核心变量必须重新审视。第一个是几何约束。二维平面应变模型默认裂缝在第三个方向上无限延伸等价于在垂直于模型平面方向有无限长的缝高这会显著高估裂缝宽度和注入量需求。三维模型里缝高受上下隔层应力差异约束通常远小于无限缝高假设。因此二维模型得到的绝对缝宽不能直接用于工程设计但趋势结论是可靠的。第二个是Cohesive层的空间布置复杂度。二维里一条预置线对应一条缝三维里可能是平面上的一个弱面网格、多条射孔簇之间的一组弱面网格量剧增收敛难度一般会翻倍。好在二维模型练出来的参数标定思路、黏性正则化调整方法和流固耦合设置逻辑是通用的。先在二维把本构参数定到合理范围再迁移到三维模型里微调能省大量试错时间。8. 一些关于参数调试的私人体会做这类模拟最忌讳的就是对着一个参数死磕。我曾经遇到一个模型压力始终比参考值低15%我以为是抗拉强度不够调了十几次都没用后来才发现是初始孔压少给了一个零。我的建议是所有参数必须放进一张表格里每次只动一个记录它对压力曲线、缝长曲线、缝宽分布三个关键输出的影响方向和幅度。几次迭代后你会对模型敏感度产生直觉后面换地层条件、换压裂液参数时甚至能提前预判哪些参数会主导结果。如果你正在做一个需要和现场压裂施工数据对标的研究课题二维Cohesive模型尤其适合做“先拟合后预测”的工作流先用小压测试的压力曲线反推断裂能和滤失系数再用反推参数预测主压裂的缝长缝宽。这个过程哪怕只是二维模型得出的参数量级和规律结论也比纯理论估算可靠得多。最后提一个实用细节模型算完别急着关把缝内压力、缝宽、完全损伤区域的Cohesive单元输出量都存到结果文件里。这些量是排查结果异常时最好的第一手线索而且重跑一次模型的时间通常比重新补充输出再跑一次要贵得多。
返回列表