news 2026/8/13 1:02:47

含断层油藏流动模拟

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
含断层油藏流动模拟

含断层的油藏 流动模拟

油藏里横着几条断层就像炒菜锅里突然出现裂缝——油气流动轨迹说变就变。搞数值模拟时最怕这种地质构造,常规的矩形网格遇到断层直接抓瞎。咱们今天不整虚的,直接撸代码看看怎么对付这些地质界的"路障"。

先整点基础数据热身。假设咱们有个500m×500m的二维油藏,中间斜插着一条断层,用Python画个示意图:

import numpy as np import matplotlib.pyplot as plt grid_size = 50 X, Y = np.meshgrid(np.linspace(0,500,grid_size), np.linspace(0,500,grid_size)) fault_line = Y > (0.6*X + 100) # 断层线方程 plt.figure(figsize=(8,6)) plt.imshow(fault_line.T, origin='lower', extent=[0,500,0,500], cmap='Greys') plt.colorbar(label='Fault Presence') plt.title('断层分布示意图') plt.xlabel('X方向/m') plt.ylabel('Y方向/m') plt.show()

这段代码生成带斜断层的二值掩膜图,断层带显示为深色区域。注意0.6*X + 100这个参数控制断层走向,实操中得根据实际地质数据调整。

遇到断层最大的麻烦是渗透率突变。假设断层带渗透率骤降为周围岩石的1/1000,咱们得处理这种不连续场。用NumPy搞个渗透率矩阵:

perm = np.ones((grid_size, grid_size)) * 200 # 基础渗透率200mD perm[fault_line] = 0.2 # 断层带渗透率骤降

但这么简单赋值会出问题——实际断层对相邻网格的影响需要特殊处理。这时候得上有限体积法,把断层当内部边界处理。举个压力方程的离散化例子:

for i in range(1, grid_size-1): for j in range(1, grid_size-1): if fault_line[i,j]: # 断层网格特殊处理 trans_x = 0 if fault_line[i+1,j] else 1 trans_y = 0 if fault_line[i,j+1] else 1 coeff_matrix[i,j] = - (trans_x + trans_y)

这里的关键是判断相邻网格是否跨过断层,如果跨过就把传导率设为零。实际开发中得处理更复杂的连接列表,像Eclipse这类商用软件会在预处理阶段生成非相邻连接(NNC)表。

跑个瞬态模拟看看效果。用Scipy解压力方程:

from scipy.sparse import diags from scipy.sparse.linalg import spsolve # 构造系数矩阵 diag = -4 * np.ones(grid_size**2) adj = np.ones(grid_size**2 - 1) A = diags([adj, diag, adj], [-1, 0, 1], format='csr') # 处理断层影响 for idx in np.where(fault_line.flatten())[0]: A[idx, idx] *= 1000 # 放大对角线元素模拟低渗透 # 相邻元素连接调整... # 求解压力分布 pressure = spsolve(A, np.zeros(grid_size**2)).reshape(grid_size, grid_size)

画出来的压力等值线在断层处会出现明显转折,就像水流遇到堤坝产生水位差。有趣的是,当断层部分开启时(渗透率不是完全为零),还能观察到"渗漏"现象——就像破损的水管虽然漏水但还能维持一定压力。

处理这类问题有个坑:过度简化断层为绝对隔挡。实际油藏中断层可能在不同位置呈现开启或封闭状态,得结合地质力学数据动态调整参数。下次如果遇到模拟结果与实际试井数据对不上,不妨查查断层模型是不是太"理想化"了。

最后给个忠告:别跟断层死磕结构网格。现在开源工具像MRST支持非结构网格,用PEBI网格(正交多边形)绕开断层走向,比硬调参数香多了。毕竟,跟地质构造较劲的最好方式,就是换个姿势拥抱它。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/12 15:20:37

23、WinJS控件样式与样式规则定位指南

WinJS控件样式与样式规则定位指南 1. WinJS控件样式介绍 1.1 ViewBox控件 ViewBox 控件能够自适应其父容器的大小,并且在不改变子元素宽高比的前提下,对单个子元素进行缩放以适应 ViewBox 的大小。当用户旋转平板电脑时,ViewBox 会相应地处理其内容的缩放。 以下是一个包…

作者头像 李华
网站建设 2026/8/12 17:57:52

27、Windows 8 应用开发中的 SVG 样式设计

Windows 8 应用开发中的 SVG 样式设计 1. SVG 简介 SVG(Scalable Vector Graphics)即可缩放矢量图形,具有诸多优势,如可嵌入 HTML 中,能通过 CSS 属性对其进行样式设计。SVG 的 CSS 属性包括填充(fill)、描边(strokes)、标记(markers)、滤镜(filters)、遮罩(ma…

作者头像 李华
网站建设 2026/8/12 15:50:33

SAP ABAP拆分交货单数量、批次、存储地点 并过账

案例:将交货单数量拆分到不同批次,一个批次下数量为1,并进行过账。 发布时间:20251218主要逻辑分为两个部分: 拆分和过账,拆分批次时必须写入存储位置,否则过账可能会报错(eg&#x…

作者头像 李华
网站建设 2026/8/12 11:19:20

基于MPC的智能车运动预测和控制算法 Motion predication; Kinemati...

基于MPC的智能车运动预测和控制算法 Motion predication; Kinematic model //. MATLAB coding //. 加入求解步骤进而得到自定义成本函数的可扩展MPC控制器; //. 模型状态空间方程线性化和离散化; //. 可与风险场/人工势场/决策/轨迹跟踪等算法集成; //. 需要用到车辆运动学模…

作者头像 李华
网站建设 2026/8/12 1:56:18

Mathcad的野路子】11kW PFC参数计算书实战拆解

大厂的PFC程序参数变量计算书 11kwPFC mathcad打开某大厂PFC控制程序的计算书,满屏Mathcad公式看得人头皮发麻。今天就带各位手撕这份11kW功率因数校正的参数计算说明书,咱们用最糙的实操逻辑来理解这些看似高冷的公式。先看输入条件:400V三相…

作者头像 李华
网站建设 2026/8/12 14:43:59

STM32学习笔记CAN

1.CAN基础知识1.CAN的介绍高速can,低速can的拓扑图(终端电阻,用于阻抗匹配,减少回波反射)2.CAN的物理层显性电平具有优先权(逻辑0)。3.Can总线制裁2.stm32的can控制器CAN控制器的工作模式有三种:初始化&…

作者头像 李华