资讯动态

GoCAD三维构造建模全流程:断层、层面与SGrid网格生成实战

发布时间:2026/9/18 4:30:25 来源:尧图企业网站定制
做地质建模的朋友应该对GoCAD不陌生这软件在构造建模、三维可视化、网格生成这些方面的底子是真的厚。上篇操作记录发出去后不少同行在后台留言说正好对上手提需求有帮助挺多人在等下面的内容。这篇就把后半程的操作继续整理出来重点是断层模型怎么搭、层面模型怎么解算、SGrid怎么生成以及最容易被忽略的模型质量检查。这篇适合正在从剖面解释往三维构造建模过渡的工程师、做油藏描述的地质师以及刚接触GoCAD想走通完整流程的研究生。默认你已经完成了上篇的内容工区建立、钻孔和测井数据导入、剖面解释和层面散点的初步整理。下面所有步骤都建立在“数据已经准备好了”这个前提下。1. 下篇内容定位从剖面解释走向三维构造实体1.1 上篇都做了什么下篇接在哪一步上篇我们把基础工作做完了建工区、导入井位和测井曲线、做剖面解释、提取层面散点。这个过程相当于把二维的解释工作完成也就是在地震剖面或者地质剖面上把断层、地层界面给“画”出来。但画出来之后这些解释成果还是离散的、零散的。一个断层可能出现在多个剖面上解释点分布也不均匀某些区域密某些区域稀。地层的顶面解释点可能来自十几条剖面上百个散点这些点在空间上没有构成连续的面。下篇要解决的就是从“二维解释”到“三维实体”的这一步把剖面解释成果变成真正可以用于储量计算、井轨迹设计的三维构造模型。我个人的经验是这一步是整个GoCAD工作流里最考验耐心的环节很多模型后期出现的断层切错、层面穿层、网格畸变问题根源都在这个阶段的某个参数没设对。1.2 为什么构造建模是整个流程的核心地质体本质上是三维的但我们的解释工作基本都在二维剖面上进行。一张剖面只能看到那个切面位置上的构造形态两个剖面之间的区域是什么情况需要靠插值和三维空间推理。构造模型就是把这些二维切片上的认识通过数学方法变成三维连续的几何体。它承担了两个关键任务一是确定断层的空间几何形态和相互切割关系二是确定地层的空间叠置关系。这两个关系一旦确定错了后面所有的属性建模、储量计算都会跟着错。打个比方剖面解释是在画施工图纸构造建模就是搭建筑骨架后续的属性模型是砌墙和装修。图纸上画得再精细骨架搭歪了后果是灾难性的。GoCAD里面有多种建模路线我下面讲的是最常用的“面模型驱动体模型”流程先建断层再建层面然后用面和断层共同约束生成SGrid体网格。2. 搭建断层模型从断面到断距控制2.1 断层建模前必须先做的几件事千万不要一上来就急着生成断面。我在实际项目中栽过跟头在这里多花半小时后面能少熬两个夜。第一件事检查断层多边形Fault Polygon是否闭合。断层多边形是剖面解释时沿着断层迹线圈出来的一条闭合折线。如果多边形没闭合后面生成断面的时候会出现边缘撕裂或者断面范围异常。检查方法是直接在三维窗口里把断层多边形全部显示出来逐个缩放检查首尾点是否重叠。第二件事统一断层命名规范。GoCAD项目里的对象一多命名乱套是常态。我见过项目里出现“F1”“F1_1”“F1旧”“F1最终版”这种混乱命名到后面做断层关系定义时完全分不清谁是谁。建议按照“F主断层序号_次级断层序号”的方式来命名比如F1_1表示F1断层的第一分支。第三件事补齐断层的几何属性。在断层属性表里把倾向、倾角、断距这些参数填好。有些参数可能暂时拿不准但至少要把倾向和倾角填上因为后续断面解算时这些参数会作为重要约束条件参与计算。2.2 用断层段Fault Segment构建断面断层多边形整理好之后下一步是创建断层段Fault Segment。断层段是GoCAD中描述断层空间位置的核心对象它由一系列三维点构成点在空间上连成折线用来表示断层在某一个位置的空间展开。创建断层段的操作不算复杂但要注意细节。选中断层多边形后从工具栏调出断层段创建工具然后沿着断层迹线逐点拾取。拾取的时候要特别注意断层上下盘的关系GoCAD允许你在创建断层段时指定上下盘方向。如果这个方向弄反了后面生成的断层面的法向会颠倒层面模型在断层附近的处理会全部错乱。一组断层数据往往对应多条断层段。比如一条主断层在浅部和深部的产状明显不同这时候就应该拆成两段来创建分别设置各自的产状参数而不是强行用一条断层段去拟合。实测下来分段的断层段在后期解算断面时吻合度远高于不分段的。2.3 断层关系处理相交、截切与合并断层关系是构造建模里最核心、也最容易出错的环节。地质上断层之间往往存在复杂的切割关系新断层切割老断层、主断层带动次级断层、两条断层交汇后截断等。在GoCAD中这种关系需要在断层段之间显式定义。GoCAD里定义了上下盘、左右盘等关系属性核心的操作是设置断层之间的优先级。点击断层关系设定功能把所有断层列出来逐对指定谁切割谁。这里有一个原则年代较新、断距较大的主断层优先级高次级断层优先级低。优先级高的断层会在相交处截断优先级低的断层。实际项目中大量遇到的问题是断层相交线的生成失败。这通常不是参数问题而是两条断层的断层段在空间上并未真正相交存在一个极小的间隙。排查方法是在三维窗口中把两条断层段都显示出来沿着相交部位逐点检查如果发现确实不相交可以手动调整断层段的端点或者用GoCAD提供的延伸功能把其中一条断层段延伸到交切位置。3. 构建层面模型从离散点到位面骨架3.1 层面数据的准备与质量控制断层的架子搭好之后开始构建层面模型。层面数据就是我们上篇从剖面解释中提取的层面散点Horizon points这些散点的质量直接决定层面模型的好坏。在进入解算之前必须做一次系统的质量检查。第一步是剔除飞点。所谓飞点就是明显落在地层界面以外、可能是解释错误或者数据录入失误产生的孤立点。筛选时可以用层面散点的Z值范围来过滤也可以用剖面位置约束来检查。实际操作中我习惯把层面散点和原始剖面叠在一起显示逐个剖面翻一遍视觉上不和谐的点直接删掉。这个方法土是土了点但最靠谱。第二步是检查层面点的分布密度。解算层面的算法一般要求点在空间上相对均匀分布。如果某一块区域点特别密集另一块区域几乎没有点生成的面就会在该稀疏的地方出现异常的波浪形。处理的方法是在点密集区域适当抽稀保留代表性的点在稀疏区域需要补充解释点或者用允许插值的参数来弥补。3.2 层面解算的方法选择GoCAD里层面解算的方法有好几种最常用的有两个Bezier插值和DSI离散光滑插值。这两个方法各有适用场景我分别说下。Bezier插值适合层面形态比较简单、控制点密度高的数据。它用贝塞尔曲线或曲面来拟合散点生成的层面比较光滑计算速度快。缺点是控制点不足时会出现局部过拟合或震荡不适合断层多、构造复杂的情况。DSI是GoCAD的招牌算法由Jean-Laurent Mallet提出全称是Discrete Smooth Interpolation离散光滑插值。它的核心思想是在满足约束点散点的同时让解算面尽量光滑。这是通过迭代计算实现的每一步迭代都在尝试减少层面的粗糙度同时不偏离约束点太远。DSI参数里有几个关键项迭代次数、初始光滑度、约束权重。第一次做的时候迭代次数从100次起步如果层面对比强烈就增加到300次。初始光滑度从0.2到0.5之间尝试取值越大生成的层面越光滑但可能丢失细节。约束权重一般设成1表示散点严格约束如果你发现层面在某处穿过了约束点之间的空白区域出现明显褶皱可以把约束权重调到0.8让算法更灵活一些。实际项目中我经常先跑一版默认参数看层面形态再根据形态微调参数。但有一点要注意DSI计算是迭代过程参数变了以后必须重新解算不要指望旧结果上叠加参数调整。3.3 多界面组合与地层层序约束构造模型里不可能只有一个层面。一个完整的地质模型通常包含地表、多个目的层顶底面、若干断层面搞不好还有不整合面。这些面之间的关系必须符合地层层序否则就会产生“下层穿到上层上面去”的问题。处理不整合面是这里面的难点。不整合面上下地层可能是平行不整合也可能是角度不整合。对于角度不整合上下界面的倾向倾角差异很大。在GoCAD中我们要把不整合面作为独立的界面参与建模并且在层面组合时显式指定它与上下层的接触关系。实操中经常要手动编辑不整合面边缘的散点让它与上覆或下伏层面相交位置的接触关系符合地质认识。把顶面、底面、断层面组合成一个三维地质体的操作GoCAD里叫“闭合地质体”或“生成地质单元”。选中所有相关层面指定每个面的上下方向选择断层作为侧边界GoCAD就会自动生成一个闭合的壳。这个壳就是后续SGrid网格的边界基础。4. 生成SGrid网格与属性模型4.1 为什么要从面模型转到体网格虽然面模型在三维显示和剖面出图上表现很好但它只能描述地质界面没法存储内部的属性。到了储量计算、数值模拟这一步我们需要的是一个填充了属性值孔隙度、渗透率、饱和度的三维体网格。SGridStratigraphic Grid是GoCAD中专用的地层网格结构。它不同于普通矩形网格SGrid的网格线可以跟随地层层面弯曲也可以沿断层边界错断。这样生成的网格与地质构造高度吻合不会因为强制使用矩形网格而产生大量的锯齿状阶梯。SGrid沿三个方向定义I方向通常对应地质体的走向方向J方向对应倾向方向K方向对应垂向地层厚度方向。在使用SGrid生成的时候难点在于K方向网格的划分要兼顾地层的厚度变化和计算效率。4.2 SGrid生成流程与关键参数SGrid生成从前面的闭合地质体出发。第一步是选择边界即选择之前生成的地质体壳。第二步是设置三个方向的网格单元数。关于I、J方向单元数一般是根据构造尺度来确定。比如我的工区沿走向长度是12公里如果想让网格单元大致在250米左右I方向就设48个单元。J方向同理。K方向需要单独考虑目的层附近应该加密顶底板附近可以适当放宽。GoCAD支持在指定深度范围内设置加密比如我在目标油层上下各50米范围内K方向细分成2米一个单元这样网格总数可控目的层又能保证精度。某一次实际建模中我算了一笔账整个地质体大约2000米高K方向如果统一按5米划分需要400层但其中1000米是盖层不需要那么密于是我把盖层部分调整为15米一层目的层部分保持2米一层。这样K方向总层数从400降到了220网格总数减少了接近一半而目的层精度反而更高了。这就是SGrid参数设置的思维方式不追求均匀而是把网格资源用到关键位置。4.3 属性模型的建立与粗化SGrid建好之后就可以往里填属性了。这个过程叫属性建模。首要是把井上的离散属性值孔隙度、含水率这些重采样Resampling到SGrid的网格节点上。重采样时需要注意井曲线数据的分辨率。测井曲线通常有0.125米或0.5米的分层数据而SGrid在K方向的厚度可能是2米甚至更粗。重采样算法内部会做加权平均实测下来算法的选择对最终结果有影响。在数据波动较大的层段普通平均会抹掉尖峰影响后续精度这时候最好选择“保持峰值”模式的重采样。完成重采样后用插值算法把井点属性扩展到整个网格空间。常见的算法有克里金、最近邻、DSI和距离反比加权。克里金在数据点比较多、变差函数拟合较好的情况下插值效果最好但它需要一定的地质统计基础。DSI在构造模型里用得比较多因为它和别人一样能利用层序界面做约束。属性模型建好后很多时候还需要粗化Upscaling。比如储层建模常用细网格百万级而数值模拟只能用粗网格十万级以下。粗化的本质是体积守恒的属性聚合把细网格单元中的属性按体积加权汇总到粗网格单元中。这里最重要的原则是检查粗化后属性分布的直方图与细网格是否一致如果出现明显的“拖尾”或“截断”说明粗化算法或者粗网格层位的对齐方式有问题需要回头检查。5. 模型质量检查与成果输出5.1 三维模型的视觉化检查模型建完不是终点质量检查才是。我见过太多项目在建模阶段就停滞不前就是因为匆匆忙忙出图后被审查方一眼看出低级错误。第一个检查动作是沿剖面切任意切片。在三维窗口中任意生成一个剖面观察层面在这个任意方向上的连接关系是否合理。如果发现在某些角度上层面出现不自然的“V”形尖角通常意味着层面散点在那个区域有交叉或者层面边界约束存在问题。第二个检查动作是透明化显示断层。把整个模型半透明化单独把断层面高亮显示沿着断层的延伸方向转一圈观察断层面和层面的相交关系。标准的构造模型断层面应该像一把刀一样干净地把层面的切割出来如果发现某个层面在跨过断层面时仍然连续穿过那说明断层与层面的拓扑关系定义出了问题。第三个检查动作是看层面颜色渲染。GoCAD支持按高程给层面着色颜色变化应该平滑连续如果一块区域内颜色出现明显跳变多半是该区域层面有褶皱或者存在未处理的异常点。5.2 数值化检查指标视觉检查可以发现大部分问题但有些细微的问题肉眼看不出来必须用数值指标来量化。网格畸变检查是必须做的。SGrid生成后每个单元体都有体积值。正常情况下相邻单元之间的体积变化应该是连续的。如果某个单元的体积明显大于或小于周围单元甚至出现负体积那这个网格在计算时绝对会出问题。负体积网格是GoCAD里常见的计算报错根源排查时逐一走查所有负体积单元的位置通常是该处的层面翻转了方向导致网格折叠。断距一致性检查也很重要。在断层两侧的对应层位上断距应该与断层属性表里设置的断距值接近。如果模型中断距显示与输入值差距过大很可能是断层段或层面解算时选错了参数导致断层在模型中的等效断距被错误放大或缩小。5.3 常见问题与排查技巧实录这个表格是我整理项目中经常遇到的问题基本都遇到过放这里方便大家对照排查。问题现象常见原因处理方式断面生成后边缘破碎断层多边形未闭合或点密度不均检查多边形闭合性加密断层边缘点断层相交线无法生成两条断层段无真实交点手动延伸/移动断层段端点至交切位置层面解算后穿断层层面约束点的控制范围设得过大缩小约束半径增加断层附近约束点网格出现负体积层面局部翻转或叠置检查该处层面方向重新生成局部层面SGrid生成失败地质体壳未闭合或边界定义错误检查闭合地质体确认所有边界由层面/断层围合属性插值结果定向条纹数据点空间分布方向性过强增加各方向变差函数分析或改用DSI方法还有一个独家技巧每完成一个关键步骤就用GoCAD里的“版本标记”功能存一个快照。我在项目中会给每个版本加注释比如“F1断层段创建完成”“SGrid v2 加密目的层”。这样一旦后面的操作把模型搞坏了可以直接回退到上一个正常版本不用从头再来。这个习惯让我在好几次紧张的项目周期里保住了头发。另外如果发现层面模型与输入的井分层数据系统性不匹配比如所有井的某一层位都偏离了层面模型20米以上先不要急着改模型参数而是检查当初输入的井分层数据本身是否准确。这种做法能帮你快速定位数据链路中真正出问题的环节避免在错误的模型上反复调试浪费时间。最后再分享一个我个人的体会GoCAD建模这件事三分靠建模七分靠检查。不要以为模型生成出来就万事大吉我在实际项目里经常要做三轮甚至更多轮的迭代检查。每做一次三维浏览检查都能发现那些肉眼没注意到的细节问题比如某个区域的断层落差突变、某个层面的细微穿层这些都会在后续的属性建模和储量计算里被无限放大。花在检查上的时间永远比花在重新建模上的时间少得多。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价