1. 项目概述:为什么我盯上了fracman这套流程
先说结论:搞油气藏数值模拟的人,迟早都会碰上离散裂隙网络(DFN)这个绕不过去的坎。我最初接触fracman,是被一个页岩气区块的模拟任务逼的——当时用连续性介质模型做缝网表征,算出来的产量历史拟合总是差一截,后来发现问题不在模拟器精度,而在“缝网根本没法用连续介质去描述”。那段经历让我彻底理解了:水力压裂形成的人工裂缝和天然裂隙耦合在一起,本质上是离散对象,硬要用等效孔隙度去平均,很多关键流动通道就丢了。
fracman这套体系的核心价值,就是帮我们把“裂隙”这件事从地质概念变成可以计算的数值对象。它能做三件事:一是根据统计分布生成三维离散裂隙网络,二是基于这些裂隙网络计算等效渗透率张量,三是把结果输出给油气藏模拟器做流动模拟。如果和耦合压裂模拟模块一起用,还能评估水力压裂裂缝的延伸范围和导流能力。换句话说,它把“地质不确定性—裂缝形态—渗流响应”这条链路串了起来。
写这篇文章的初衷很直接:网上关于fracman的操作教程零零散散,很多还是英文论坛里几句话带过,中文社区很少有人系统讲清楚这套东西到底怎么落地。我准备用一整篇的篇幅,从原理到实操、从参数设置到坑位排查,把DFN建模再结合水力压裂模拟的完整流程梳理一遍。适合正在做非常规油气藏数值模拟、页岩/致密砂岩产能评价、以及想弄清楚裂隙对注采影响的朋友,哪怕你之前没碰过DFN,顺着思路走也能看懂我们每一步在干什么。
2. 核心思路拆解:DFN建模与水力压裂模拟在项目里扮演什么角色
2.1 为什么不能用传统连续介质模型硬算
传统油藏数值模拟的基础是双孔/双渗或等效连续介质模型,假设储层在网格尺度上存在平均化的孔隙度和渗透率。这套方法在常规砂岩里很好用,因为储层相对均质,裂缝密度低,流体流动可以用达西定律在网格尺度上平滑描述。但到了页岩、致密碳酸盐岩、或者发育天然裂缝的储层,问题就来了:
裂缝的尺度跨越极大,从微米级的天然微裂隙到几十米级的人工缝网,都集中在同一个模拟区域里。裂缝的渗透率可能比基质高出几个数量级,如果把它平均进网格,流体就会在网格尺度上“被均质化”,结果就是导流路径消失,压力响应失真。我试过在某个致密油区块里,把成像测井解释出的天然裂缝量化后平均进连续介质模型,历史拟合时嫩是拟合不出见水时间——因为示踪剂实际上是沿着一两条高渗大裂缝窜过来的,而不是均匀推进的。
这正是DFN派上用场的地方。离散裂隙网络把每一条裂隙当成独立的几何对象,拥有自己的位置、形态、开度和渗透率,再通过连接关系构成流动网络。这样做的好处是:流体优先沿着大缝走还是被基质吸收,是“算”出来的,不是被平均掉后“猜”出来的。
2.2 fracman在整个工作链里的位置
一条完整的非常规油气藏数模工作链大致是这样:
- 地质建模:构造、层序、沉积相(通常在常规地质建模软件里完成)
- DFN建模:在裂缝发育段生成离散裂隙网络(fracman的核心舞台)
- 裂缝/压裂耦合模拟:把DFN导入水力压裂模块,算缝网延伸与导流能力
- 网格与属性粗化:把DFN等效到油藏模拟器的网格系统上
- 流动模拟与历史拟合:用数模软件跑产量、压力,并反演修正
fracman对应的就是第2到第3步,甚至它的输出可以直接衔接第4步。你要是只做天然裂缝储层评价,可以跳过压裂,直接把DFN粗化成传导率场;如果是非常规压裂改造评价,那就要把人工裂缝和天然裂缝的组合网络交给压裂模块去算。
2.3 水力压裂在DFN框架里到底算什么
水力压裂在DFN框架里不只是“算一个裂缝半长”。真实情况是:压裂液泵入后,人工裂缝沿着最大主应力方向起裂扩展,中途遇到天然裂缝会转向、止裂或发生剪切滑移,形成一个树状或网状裂缝系统。这个系统能不能形成有效体积(SRV),取决于天然裂缝的产状与地应力的夹角、缝内净压力、以及天然裂缝的强度参数。
fracman和压裂模块耦合的思路就是:先建立天然裂缝DFN,作为压裂延伸的“路网”;再根据压裂施工参数,让人工裂缝在这个路网里选择激活哪些天然裂缝、压开多宽的缝。算出来的结果,是考虑了天然DFN约束后的复杂裂缝网络,而不是教科书里的一个椭圆SRV。这一步非常关键,因为后续的产能预测、压降分析、注采策略调整,全都立足于这道缝网形态。
3. 技术要点解析:DFN关键参数、压裂耦合机制和参数标定
3.1 DFN的五个核心参数,每一项都不能瞎填
构建离散裂隙网络之前,必须想清楚描述一条裂隙需要一组什么参数。我在实操中总结下来,fracman环境里最核心的是这五个:
| 参数组 | 具体参数 | 对模拟结果的影响 |
|---|---|---|
| 裂隙产状 | 倾向、倾角、方位角 | 决定裂隙网络的各向异性,直接影响渗透率的张量方向 |
| 裂隙尺度 | 半径/长度、纵横比 | 控制裂隙连通度,容易在模型中形成“长程通道” |
| 裂隙密度 | 单位体积的裂隙数P32或单位面积的裂隙长度P21 | 密度过低会形成不连通网络,过高会扭曲压力传播曲线 |
| 开度 | 平均力学开度、水力开度 | 开度与传导率是立方关系,开度差两倍,传导率差八倍 |
| 传导率 | 裂隙面渗透率或导水系数 | 直接量化裂隙对流动的贡献,决定模型里流体优先走哪条路 |
实际操的时候,密度和尺度是最好用成像测井和岩心统计去约束的,传导率则更多依赖试井解释或DFIT(压裂前诊断注入测试)结果反推。开度这个参数最容易迷惑人——它名义上是力学开度,但实际流动等效开度往往远小于岩心上的可视开度,因为粗糙度、充填物都会压缩流动空间。要是按岩心上的肉眼开度给参数,计算出来的裂隙传导率能比实际偏高一个数量级。
另一个容易踩的坑是裂隙组数的设置。有些项目资料里地层有高角度缝、低角度缝、微缝三组,于是直接在模型里设三组。这个方向没错,但不能把每一组都当成同一个随机分布去套。高角度缝往往控制长程导流,低角度缝更多是局部连通作用,它们的尺度、开度、密度参数分布应当分开统计后再赋值,否则生成的DFN看起来数量差不多,连通模式却完全不对。
3.2 水力压裂耦合时,你真正需要盯住的物理量
压裂模拟里,DFN不是单纯被“切开”的,双方是相互影响的关系。要跟踪的核心物理量有:
- 最小水平主应力:人工裂缝会优先在垂直于最小主应力的平面上张开扩展,它是主缝方向的控制因素
- 净压力(缝内压力-最小主应力):净压力高于天然裂缝的临界剪切滑移条件时,天然裂缝才会被激活
- 天然裂缝的摩擦角与黏聚力:这是判断天然裂缝在压力下能否“打开”的门槛值
- 滤失系数:压裂液沿缝壁向基质滤失的快慢,决定缝内压力能否保持
我的经验是:在压裂模块里,天然裂缝的力学参数往往比几何参数更需要仔细标定。很多项目一开始用默认的黏聚力值,算出来的缝网要么完全不激活天然裂缝,要么激活范围夸张得离谱。后来我们用实验室三轴实验的数据做了约束,把摩擦角控制在25°到35°之间,黏聚力取低值范围,才得到了和微地震事件点分布相对吻合的模拟结果。
需要注意的是,fracman里水力压裂的模拟思路并不等同于全三维裂缝扩展模拟器。它更擅长的是快速评估复杂缝网形态和裂缝网络的几何连通性,适合做方案对比和参数敏感性分析。如果你需要精确计算裂缝宽度沿程分布和支撑剂浓度场,那还是得拿专门的压裂设计软件去细算,再把计算结果导回来作为DFN的高导流线段赋值。两种工具是互补关系,“谁替代谁”的思路容易吃亏。
3.3 参数标定没有捷径,但不代表没有章法
做参数标定时,最忌讳一次把所有未知参数丢进历史拟合软件里自动寻优。DFN参数和模拟结果之间往往存在很强的非唯一性,多组不同参数都能产出相近的产量曲线,但对应的缝网形态可能差得很远。
我的做法分三步走:
- 先用岩心、成像测井、露头统计约束几何参数(产状、尺度、密度),这部分是硬数据,尽量不要让拟合软件去随意调整。
- 用示踪剂测试、试井压力导数、微地震事件分布约束流动和几何交叉参数(传导率、激活范围)。
- 最后才用生产曲线做整合性验证,微调开度和局部密度。
这套顺序的逻辑是:先锁定可靠信息,缩小不确定空间,然后让不明确的参数去拟合剩下那部分特征。如果顺序反过来,一上来就拟合产量,大概率会得到一个数值上不错、实际上完全不可外推的模型,换一个井组预测就崩了。
4. 实操全流程:从一个致密气藏案例看DFN建模与压裂模拟落地
4.1 数据准备与DFN生成
我这里用一个典型致密气藏案例来说明流程。某致密砂岩气区块,目的层埋深约3500m,发育两组天然裂缝:一组高角度剪切缝,走向北东向;一组低角度层理缝,密度高但尺度短。手头的基础资料有:
- 成像测井解释的裂缝产状与密度统计
- 全直径岩心的裂缝开度与充填程度描述
- 岩石力学实验得到的内摩擦角、黏聚力和弹性模量
- 压裂施工曲线和微地震事件数据
- 生产测井产气剖面
先在fracman里定义坐标系和模拟范围。模拟范围取的是单井控制区域附近的一个长方体盒子,尺寸1200m×800m×100m,网格化时用的基础网格尺寸50m,DFN内自动加密到5m。盒子大小不能太小,否则边界效应会严重影响缝网延伸范围;也不能太大,否则生成DFN和粗化计算的时间会成倍增长。
定义裂隙组时,我把高角度缝设为DFN Group 1,产状用Fisher分布,倾向均值60°,倾角均值75°,Fisher常数K取8;尺度分布用幂律分布,幂指数2.6,最小半径10m,最大半径80m。低角度层理缝设为DFN Group 2,倾角均值5°,尺度分布用对数正态,中值半径15m,开度普遍偏小。
这里说一个重要细节:尺度分布的幂指数对连通度影响极大。幂指数在2.5左右且最大尺度给得足够大时,网络经常会出现一两组贯穿性大缝,连通性特别好;幂指数调到3.0左右,大缝占比降低,网络连通度断崖式下滑。调整DFN参数时,优先盯连通度指标和单位面积裂隙数量P21的统计值,而不是盯着生成图好不好看。
4.2 生成裂隙网络后的质量检查
DFN生成不是一键完事。生成之后我一般做三件事:
检查每个裂隙组的总表面积和体积密度P32是否落在目标范围。P32低于某个阈值时,网络不连通;高于阈值时,网络极度连通,流体几乎不经过基质。
随机抽取几条裂隙,核对产状统计是否符合输入的Fisher分布。有时软件合成个体会因为截断设置产生“方位偏置”,长度越长越容易落在某个方向上,这在统计上会造成伪各向异性。
计算网络连通度(连通簇占比),如果主簇占比低于80%,说明离散裂隙网络可能是零散的,后续等效渗透率张量的意义就要打问号。
这几个检查做完,DFN才算是可以进入压裂耦合和粗化环节的合格模型。
4.3 耦合压裂模拟的参数设置思路
在压裂模块里,我设置了施工方案的基本参数:注入排量6m³/min,总液量1800m³,压裂液黏度取中等瓜尔胶体系的典型值。关键的是天然裂缝的激活准则。
采用的判据是剪切滑移准则:当缝内净压力导致天然裂缝面上的正应力与剪应力组合超过摩尔-库仑包络线时,天然裂缝才会被激活并参与导流。这个准则需要输入天然裂缝的摩擦角(取了30°)和黏聚力(取了0.5MPa低值,代表被部分充填的裂缝容易重新活动)。
真正计算时,我还设置了一个天然裂缝导流能力的衰减系数。原因是激活后的天然裂缝如果缺少支撑剂支撑,在闭合应力下导流能力会随时间显著下降。如果不加这个衰减,模拟得到的初始产量会偏高,往后递减得也太快。加了这个修正后,产量递减形态与实测生产曲线更为一致。
4.4 粗化与等效渗透率张量的计算
压裂模拟完成后,人工裂缝模型被当作高导流平面叠加进天然DFN,这时候整个裂隙网络已经是混合缝网。接下来的步骤是把DFN属性传递给油藏模拟器网格,这需要做粗化(upscaling)。
fracman里粗化计算等效渗透率的核心方法是对每个网格计算渗透率张量。默认采用Oda方法的话,计算速度快,但它只考虑裂隙的方向和开度,对裂缝的连接性反映不足,算出来的等效渗透率在低连通度网络中通常偏低。更精确的是基于边界条件求解每个网格内流动问题的数值方法,速度和精度兼顾的做法是:先在粗网格边界上施加沿三个方向的压力梯度,分别求解稳态流动,再把流场平均化得到渗透率张量的6个独立分量。
我实际跑下来,这种数值粗化对DFN密集区特别重要。比如在裂缝加密区,Oda方法算出的等效渗透率只有数值方法的20%左右,这会严重影响模拟器对压裂改造区导流能力的描述。粗化网格尺寸的选择也有讲究:网格太小,粗化计算量巨大;网格太大,压裂裂缝的窄缝会被“抹平”。我一般以人工裂缝半长方向为基准,让粗化网格在裂缝方向保持至少3到5个网格的纵向分辨率。
4.5 导入油藏模拟器与生产预测
等效渗透率体导出后,就进入常规油藏数模流程了。我在某个模拟器里重新建了一个双孔模型,基质系统用常规孔隙度和渗透率,裂缝系统的传导率直接采用fracman粗化结果。模拟时,我把井轨迹放在粗化后的高渗透条带上,初始产量、早期压降、见水时间这些动态指标都比纯基质模型真实得多。
以这个案例的预测结果为例,考虑复杂DFN后的单井累产气预测值比简单双孔模型高约35%,主要原因是网络中存在高角度长缝和压裂主缝连接形成的长程通道,气体可以从更远的基质区域沿着裂隙网络汇入井筒。但从实测微地震事件来看,这个预测仍然偏乐观,因为模型中有些裂隙激活范围比实际微地震事件带更宽。这提醒我们:DFN能告诉我们缝网可能的形态,微地震约束的“事件密度”则是校准缝网范围和方向的重要锚点。
5. 常见问题与坑位清单
5.1 生成结果不连通,产量迟迟不来
问题表现:生成的DFN在三维视图里看着一条条裂缝清楚得很,可一算等效渗透率,整个区域几乎没有流通通道,产量模拟低得离谱。
原因:绝大多数情况下是裂隙密度偏低,或者最大裂隙尺度不足。我遇到过最多的场景是,幂律分布的截断尺度取得太小,生成结果缺少“贯通型”长裂缝。数据显示,只要把最大缝长从50m提高到120m,主簇连通度可能从62%跳到95%以上。
排查建议:先看P32统计值,再看最大尺度截断值,最后检查各组裂隙之间的夹角。如果两组裂缝倾角相差较小、走向又接近,那连通度大概率不足,建议增加一组斜交裂缝。
5.2 油藏模拟器中的“传导率飞线”
问题表现:等效渗透率体里出现个别网格渗透率异常高,模拟压力曲线出现锯齿状波动或示踪剂到达时间过早。
原因:DFN粗化时,个别网格恰好包含一条高导流长裂隙,数值方法解得的等效渗透率可能会被局部流动集中效应“拉满”,出现网格级异常高值。
处理方式:在粗化选项中设置渗透率截断上限,例如把单网格渗透率限制在周围网格平均值的特定倍数以内,然后重新求解压力场。经验值是上限设在正常值的20到50倍比较安全,既保留高导流通道,又避免数值振荡。
5.3 天然裂缝不参与激活或者激活面积过头
压裂模拟最让人头疼的问题往往出现在“天然裂缝激活范围”上。激活面积太小,模拟缝网变成简单的双翼缝;激活面积太大,又像把整个储层都泡在压裂液里。
这里我建议优先检查三个参数:
- 天然裂缝黏聚力是否给得过高。部分充填裂缝的黏聚力通常不超1MPa,给到5MPa以上基本就不会激活了。
- 压裂液滤失模型是否合理。滤失系数太低会使净压力虚高,人为扩大激活范围;滤失系数太高则净压力不足,激活范围过窄。
- 最小主应力场施加是否正确。方向不对,人工裂缝路径会完全偏离,天然裂缝的激活区域自然也会错位。
5.4 粗化计算越用越慢
大型DFN的粗化计算真的很吃性能。几万条裂隙在一个精细网格体上做数值粗化,单步可能要跑好几个小时。我的做法是:先做“测试性粗化”,用裂缝数量的一个子集(比如抽取25%的较大裂隙)快速跑一遍流程,确认参数和输出格式无误,再进行全量计算。另外,在确保分辨精度的前提下适当放大粗化网格尺寸,模拟时间能从“一夜”级降到“一顿饭”级。
6. 个人经验补充与后续扩展方向
接触fracman这套流程这几年,我最大的感受是:工具环节并不复杂,真正拉开差距的是对参数含义和储层机理的理解。你可以让软件生成一千个DFN实现,但如果没有成像测井解释数据约束,没有微地震事件点去校准空间范围,这些实现之间的差异依然是“好看的随机性”,而不是“有依据的不确定性”。
一个很实用的习惯是:每次跑DFN前,先形成一张参数清单表,把所有输入的来源、统计方法、置信区间写清楚。等到对比方案或者写报告时,这张表能替你回答很多“为什么这么取值”的追问,也能在模型迭代时快速定位到需要修改的参数量。
再分享一个小技巧:fracman生成DFN时支持按seed值控制随机数,这意味着你可以固定seed快速复现某组参数下的同一套裂缝网络。做敏感性分析时,固定seed、改变单一参数,就能严格隔离参数变化的影响,而不是连随机噪声一起混进来。
后续如果想继续扩展这套工作流,我个人会建议两个方向。一是把DFN直接耦合到生产动态的反演循环里,实现基于生产数据的裂缝参数自动更新,也就是把历史拟合从基质属性扩展到裂缝属性。二是把DFN模型输出给地质力学全耦合模拟器,去评估注采过程中裂缝开启/闭合的动态变化,这对应力敏感型储层的长期产能预测非常有价值。
压裂模拟和DFN建模这个领域还在往前走,工具版本在更新,算法也在向更真实的物理过程靠拢。但底层逻辑不会变:裂缝是离散的,必须用离散的方式去描述它;不确定性是存在的,必须用成体系的方法去管理它。这套思维,远比我用的某个具体工具版本更值得沉淀下来。