CMG软件的地质力学(Geomechanics)模块,是揭示地下地层 “看不见的运动” 的核心工具 —— 它能将注采过程中地层的应力变化、岩层变形、孔隙演化等微观过程转化为可量化、可视化的结果,为油藏开发方案优化、地质灾害预防提供关键支撑。本讲义从模型选择、网格配置、参数设置到结果分析,全方位覆盖实操细节,同时用通俗语言拆解专业概念,让不同基础的读者都能掌握。
刚接触 CMG 地质力学功能的小伙伴,不用怕复杂!这份指南用最通俗的话把每个核心环节拆明白 —— 从 “为啥要用” 到 “每步怎么操作”,再到 “新手常踩的坑”,帮你稳扎稳打入门,避免走弯路。
一、先搞懂:地质力学到底能解决啥问题?
简单说,地下地层看不见摸不着,但注水采油时,它会 “偷偷变形”—— 可能被压得孔隙变小(影响出油),也可能应力太大裂了(导致出砂)。地质力学功能就是帮你 “算清楚” 这些看不见的变化:比如某口井采油 100 天后,井眼周围地层会收缩多少?会不会因为应力太大开裂出砂?这些结果能直接指导你调整开发方案(比如要不要控压采油、要不要下套管)。
核心逻辑:它不是 “单打独斗”,要和 CMG 的流体模拟器(算油、水、气怎么流动)配合,要么 “流体算完压力传给力学”,要么 “两者互相反馈”,具体看你要的精度。
二、核心本构模型:两种 “计算套路”,别选错!
地质力学功能就靠两个核心模型干活,相当于 “两套不同的计算器”,适配不同场景,新手第一步要先搞懂 “什么时候用哪个”。
(一)塑性与非线性弹性变形模型(通用款,90% 场景用它)
这是 “万能模型”,能模拟地层从 “轻轻变形能回弹” 到 “变形太大开裂” 的全过程,就像观察一块橡皮泥:捏一下回弹(弹性)、捏重了留痕迹(塑性)、再使劲捏裂(失效),它都能算。
- 两大计算模式,按需选:
1. 弹塑性模式(算开裂、出砂必用)
既能算弹性变形(比如注水时地层轻微膨胀,停注后回弹),也能算塑性变形(比如采油时地层收缩,再也弹不回去),甚至能算 “开裂失效”。
o 关键设置 1:选 “屈服准则”—— 就是定义 “地层到多大应力会开始变形失效”。常用两种:
o Mohr-Coulomb (莫尔-库伦)准则:适合砂层、灰岩这类常见岩石,要填 “内聚力”(相当于岩石 “粘合力”,越大越不容易裂)和 “内摩擦角”(相当于岩石颗粒间的 “摩擦力”,越大越抗剪);
o Drucker-Prager (德鲁克-普拉格)准则:适合页岩、泥岩这类软岩,参数和上面类似,但更贴合软岩的受力特点。
o 关键设置 2:加 “防护功能”——
o 应变硬化(关键字*HARDEN):让地层变形越多越结实(比如反复注水的地层,会慢慢 “变硬”);
o 帽模型(关键字*GCAPMODEL):防止地层被无限压缩(比如高压采油时,不会把地层压成 “纸片”)。
o 特殊能力:能模拟 “注采循环”—— 注水时地层加载(应力升高、积累变形),采油时卸载(应力下降、弹性变形回弹),还能算 “剪切扩容”(变形时体积变大)。
2. 非线性弹性模式(只算变形,不算失效,算得快)
只能算地层 “没开裂前” 的弹性变形,速度比弹塑性快,但没法预测出砂、开裂。又分两种细分类型,别搞混:
o 亚弹性(关键字*NLINEAR+ 做功判断):泊松比不变,但体积模量、剪切模量会随应力变化;用 “做功多少(dW)” 判断状态 ——dW 正就是加载,负就是卸载,零就是不加载不卸载;
o 超弹性(关键字*NLINEAR+ 剪应力判断):泊松比和杨氏模量都随应力变化;用 “当前剪应力和参考剪应力对比” 判断 —— 当前大就是加载,小就是卸载。
- 支持的网格类型(“计算的舞台”):
- 2D/3D 笛卡尔网格、角点网格、轴对称径向网格(以井眼为中心的圆环)都能用;
- 3D 径向网格会自动转成角点网格,而且每个网格块的角度不能超过 160 度(不然体积会趋近于零,算不了);
- 还能选 “平面应变(伪 3D)” 模式:比如模拟薄地层时,只算 y-z 或 x-z 平面的变形,忽略垂直平面方向的应变,省计算量。
- 关键规则(别搞反正负!):
压应力算正(比如地层被上覆岩层压着的力),拉应力算负(比如地层被拉着的力);剪应力方向和坐标方向一致时算正(比如 x 方向的剪应力,方向沿 x 轴就是正)。
(二)单井边界卸载模型(单井专用,只算井周问题)
这是 “单井专属计算器”,只能用在 “以井眼为中心的径向网格” 里(比如模拟一口油井的井周情况),专门解决 “砂粒被采到井眼后,井周应力释放” 的问题 —— 比如裸眼井采油时,砂粒被带到井里,井眼周围地层的压力会下降,可能导致射孔附近开裂,这个模型就能算。
- 启用条件(缺一不可):
1. 必须先启用上面的 “塑性与非线性弹性变形模型”(相当于 “基础计算器”);
2. 加两个专属关键字:
- *UNLOADSTR:开启 “边界卸载” 功能(告诉软件 “要算井周应力释放”);
- *WRADIUS:填井眼半径(比如 0.1 米,告诉软件 “从这个半径开始卸载”)。
- 新手必记的 “限制”:
1. 破坏网格不删除:就算井周网格单元开裂、没强度了,也不会从模型里去掉,还会留在里面参与计算;
2. 不算砂粒移除影响:只算 “应力释放”,但不算 “砂粒被带走后地层孔隙的变化”,所以失效单元旁边的计算结果可能有点偏差,需要结合实际数据修正。
三、网格设置:搭建 “计算舞台”,这些坑别踩!
同油藏模拟网格一样,地质力学网格就是把地下分成一个个 “小方块 /小圆环”,计算每个小块的受力变形。有两种网格模式,还有很多 “禁用规则”,新手很容易在这里出错,一定要记牢。
(一)两种网格模式(选一种就行)
- 共用网格(简单,但限制多,适合新手练手)
- 启用条件:不用加*GEOGRID关键字,地质力学网格会和油藏流体模拟的网格 “完全重叠”—— 比如流体网格是 50×30×10 的方块,地质力学网格也一样,单元边角都对齐。
- 特点:模拟时网格能移动(比如地层收缩时,网格会跟着变小),但网格之间的 “一一对应关系” 不变;
- 致命限制(绝对不能碰!):
- 不能用静态局部加密网格(禁用 “油藏描述” 里的*REFINE关键字);
- 不能用动态网格(关键字*DYNAGRID,模拟中不能改网格大小);
- 不能用含断层的网格(断层处受力复杂);
- 不能用 “相邻块角点对不上” 的网格:比如某些角点网格(映射软件生成的)、变厚度 / 变深度的*VARI网格(笛卡尔网格里的 “不规则块”)。
- 独立网格(灵活,限制少,适合复杂场景)
- 启用条件:必须加*GEOGRID关键字,再配合*GDI(I 方向网格数)、*GDJ(J方向)、*GDK(K 方向)定义网格参数;
- 特点:和流体网格不重叠,靠 “映射算法” 传递数据(比如流体网格的压力,会 “对应” 到独立网格的对应位置),对流体网格的限制少(比如流体网格局部加密也能用);
- 唯一限制:模拟中也不能改网格(不能用*DYNAGRID)。
(二)新手必避的网格 “坑”
- *VARI网格(变厚度 / 变深度):
油藏流体模拟网格用不了,会报错 —— 未启用*GEOM3D(3D 模式)时,初始化直接报 “致命错误”;启用*GEOM3D时,要先通过 Builder 工具检查(不然算到一半会崩);
解决办法:加关键字*CONVERT-TO-CORNER-POINT,把*VARI网格自动转成角点网格(转换后每个角点的位置是原来的平均值,网格体积、传导率会有小变化,但总孔隙体积基本不变)。
- 径向网格的 “套管处理”(单井模拟必看,别搞反!)
径向网格分 2D 和 3D,默认的 “套管 / 裸眼” 设置完全相反,新手很容易搞混:
2D 径向网格(nj=1,没有角度方向的划分):
井眼边界在最内层网格(I=1)的下表面;用关键字*PRESCBC控制约束 —— 默认是套管井”(锁死 I=1 的径向位移,井眼不能动);想算裸眼井,必须取消默认(比如*PRESCBC 1 1 1 1 X,X 方向不填数值,就是允许移动),这时井眼流体压力会提供径向支撑(比如快速采油时,井眼压力下降,地层会向井眼收缩)。
3D 圆柱网格(nj>1,有角度方向的划分):
最内层网格(I=1)没有角度分辨率,地质力学网格从 I=2 开始,所以井眼边界对应 I=2;用关键字*PRESCBC3D控制约束 —— 默认是 “裸眼井”(不锁 I=2 的径向位移,井眼能动);想算套管井,必须手动锁(比如*PRESCBC3D 2 2 1 Jmax 1 Kmax X 0,X 方向填 0,就是固定不动);而且输入参数时,I=1 的数据会被忽略,井眼相关参数要填在 I=2。
四、关键字:启用功能的 “钥匙”,必选的别漏!
CMG 所有功能都靠 “关键字” 触发,相当于 “给软件发指令”。地质力学的关键字分 “必选”(少一个都跑不了)和 “可选”(按需求加),新手先记牢必选的,再慢慢学可选的。
(一)必选关键字(核心指令,记死!)
关键字 | 作用(通俗解释) | 注意事项 |
*GEOMECH | 地质力学功能的 “总开关”,没它一切都白搭 | 所有地质力学模拟都必须加,放在关键字最前面 |
*ELASTMOD | 定义 “杨氏模量”(岩石硬软程度,越大越硬) | 超弹性模型不用加(它的杨氏模量随应力变) |
*POISSRATIO | 定义 “泊松比”(横向变形 / 纵向变形,0.2-0.4 常见) | 超弹性模型不用加(同理) |
*STRESS/*STRESS3D | 定义初始应力场(2D 用前者,3D 用后者) | 要填对数值(比如垂向应力 = 岩层密度 × 深度 ×9.8) |
*GEOM3D | 开启 3D 模拟(算 3D 场景必须加) | 2D 模拟不用加 |
*GEOGRID+*GDI/*GDJ/*GDK | 定义独立网格(用独立网格必须加) | 宿主网格不用加这组关键字 |
(二)常用可选关键字(按需求加,别贪多)
- 屈服准则:*MOHRCOUL(Mohr-Coulomb 准则)、*DRUCKER(Drucker-Prager 准则),弹塑性模式必加;
- 多岩性:*GEOROCK+*GEOTYPE(开启多岩性,比如砂岩和泥岩分开算),没加这两个就是默认全地层一种岩性;加了之后,*ELASTMOD、*COHESION等参数要按岩性分别填;
- 边界条件:*PRESCBC/*PRESCBC3D(约束位移,比如锁死外边界)、*DLOADBC/*DLOADBC3D(施加荷载,比如上覆岩层压力);
- 输出控制:*OUTSRF *GRID(输出网格级结果,比如应力、应变)、*PRINTGEO(输出.geo日志文件,存输入数据和计算过程);
- 后处理:*GEOPOSTPRO(用旧的流体模拟结果批量算力学,不用重复跑流体,省时间)。
五、耦合方式:和流体模拟 “配合”,选对精度和速度
地质力学不能单独算,要和流体模拟(算油、水、气怎么流动)“配合”,有两种配合方式,精度和速度不一样,新手按需求选:
(一)单向耦合(快,精度一般,常规油藏用)
- 逻辑:流体模拟先算压力、温度,然后把这些数据传给地质力学模块,地质力学算完变形后,不把结果反馈给流体(相当于 “流体说啥,力学就信啥”);
- 优点:计算快,适合地层变形小的常规油藏(比如普通砂岩油藏);
- 启用:不用额外关键字,默认就是单向耦合。
(二)双向耦合(准,慢,易变形油藏用)
- 逻辑:流体传压力给力学,力学算完变形后,把 “孔隙变化”“传导率变化” 反馈给流体,流体再根据这些变化重新算流动 —— 来回循环,更贴合实际;
- 优点:精度高,适合页岩、稠油、煤层气等易变形油藏(比如页岩气压裂后,裂缝变形会影响产气);
- 启用:必须加关键字*GCOUPLING,还能加*NITERGEO设置 “耦合频率”(比如每 10 个流体时间步耦合一次,平衡精度和速度)。
(三)后处理计算(新手省时间神器)
如果想测试 “不同地质力学参数的影响”(比如试不同杨氏模量对变形的影响),不用每次都跑一遍流体模拟 —— 加关键字*GEOPOSTPRO,让软件读取之前流体模拟的结果文件(比如.out)或重启文件(比如.rst),提取每个时间步的压力、温度,批量算地质力学结果;
- 注意:后处理只支持单向耦合,而且过程中不跑流体计算,完全依赖旧数据。
六、结果查看:读懂 “地层反馈”,别瞎看
模拟跑完后,要会看结果才有用。所有结果都用 CMG 的 “Results” 图形工具查看,文件输出也有讲究:
(一)核心结果看什么?(新手先看这 3 类)
- 力学参数(判断地层稳不稳)
- 应力:看 “最大主应力”“最小主应力”“应力差(最大 – 最小)”—— 应力差太大,说明地层容易裂;
- 应变:看 “弹性应变”(能回弹的)、“塑性应变”(永久的)—— 塑性应变太大,说明地层变形不可逆;
- 位移:看 “径向位移”“垂向位移”——
比如采油时井眼周围径向位移负(向井眼收缩),垂向位移负(地层下沉),都是正常的,但太大就有风险。
- 孔隙度(判断耦合质量好不好)
有三种孔隙度,别搞混:
- 真实孔隙度(关键字*VPOROSGEO):当前孔隙体积 ÷ 当前总体积(地层变形会影响);
- 地质校正孔隙度(关键字*PORDIFF):当前孔隙体积 ÷ 初始总体积(用初始体积当参考);
- 孔隙度差值(关键字*PORDIFF):地质校正孔隙度 – 流体模拟用的孔隙度 —— 差值越小,说明力学和流体模拟 “配合得越好”(一般小于 5% 算合格);
- 注意:地质力学里的孔隙体积都是 “有效孔隙体积”(能装流体的空间),不是 “流体实际占据的体积”。
- 网格变形(直观看地层怎么动)
加关键字*WSRF *GRIDDEFORM,在 Results 里能看 “网格随时间变形的动画”—— 比如采油时网格向井眼收缩,注水时向外膨胀,直观判断变形是否合理。
(二)输出文件怎么看?
- .geo文件:地质力学专属日志,存输入的关键字、网格构建过程、方程求解情况(比如有没有算错),要加*PRINTGEO才会生成;
- .out文件:流体模拟的文本文件,没有地质力学结果(别在这儿找应力、应变);
- SR23文件:二进制结果文件,存*OUTSRF输出的所有参数,必须用 Results 打开。
七、新手必记的 5 个 “避坑指南”
- 3D 模拟别贪多网格:*GEOM3D开启后,存储占用会很大(应力应变方程要在网格块边角求解,每个块的方程数量是流体的 3-5 倍),新手先从少网格(比如 I=20、J=10、K=5)练手;
- 报错先查必选关键字:如果提示 “Missing mandatory keyword”(缺必选关键字),先检查*GEOMECH、*ELASTMOD、*STRESS/*STRESS3D这几个有没有漏,有没有输错;
- 网格无限扩张?加边界约束:如果模拟中网格往外面无限扩张,肯定是外边界没锁 —— 用*PRESCBC(2D)或*PRESCBC3D(3D)把外边界的位移固定(比如*PRESCBC 50 50 1 10 X 0,锁死 I=50 的 X 方向位移);
- 径向网格套管别搞反:2D 默认套管井,3D 默认裸眼井,算之前一定要确认关键字*PRESCBC/*PRESCBC3D的设置,别把 “裸眼井” 按 “套管井” 算,结果会完全错;
- 多岩性别漏关键字:想算多种岩性,必须同时加*GEOROCK和*GEOTYPE,少一个都默认单岩性,而且每种岩性的参数要单独填,别填混。
八、新手实操流程(按这个步骤,准没错)
- 新建项目:CMG Launcher 里选 “New Project”,勾上 “Geomechanics” 模块;
- 建网格:用 Builder 画简单的 2D 径向网格(练手),或导入流体网格(注意*VARI网格要转换);
- 加必选关键字:先加*GEOMECH,再填*ELASTMOD、*POISSRATIO、*STRESS;
- 选模型:练手选 “塑性模式 + Mohr-Coulomb 准则”,加*MOHRCOUL、*COHESION、*FRICANGLE;
- 设边界:加*PRESCBC锁死外边界,按需求设套管 / 裸眼;
- 跑模拟:选 “Run”,看 Job Status 变成 “Completed”(没报错);
- 看结果:用 Results 看应力、位移、孔隙度,判断是否合理。
按这个流程练 1-2 个简单模型,再慢慢加复杂功能(比如 3D、双向耦合、多岩性),很快就能上手!如果某一步报错,先查.geo文件的日志,大部分问题都是关键字漏填或网格不兼容~
