APP下载

LANDMARK系统岩性层位解释质量控制及调整程序开发

2019-01-22王昭勤钟吉太

石油管材与仪器 2018年6期
关键词:层位工区下层

王昭勤,钟吉太

(大庆钻探工程公司物探研究院 黑龙江 大庆 163357)

0 引 言

当前大庆油田原油要持续稳产,任务非常艰巨,油田公司和管理局无论是开发环节,还是勘探系统都极为重视。对于我们物探公司从事找油、找气的排头兵,也深知自己的重任,作为从事石油勘探一个重要环节的地震资料解释工作,我们不仅要继续发扬传统高精度构造解释优势,而且面临当前的新情况更要注重岩性解释和地震反演工作。从葡萄花油层、扶杨油层寻找突破,在大庆油田寻找更多的可采储量,因此,岩性层位解释的正确与否直接关系到地震资料反演水平和储层预测的精度,以及后续的油田开发环节。

LandMark系统是美国哈里伯顿公司的地震综合解释软件,在全球广泛应用。LandMark系统依靠其特色解释技术(SeisWorks)、相干体技术、可视化技术、属性分析、分频处理等技术领先石油勘探开发行业,成为我们地震资料解释的绝对主流软件。从常规的构造解释,到精细的岩性解释都发挥着重要作用。随着勘探开发周期缩短。为了加快解释进度,提高工作效率,岩性层位解释很多都是在构造解释基础之上进行层位漂移,以及层位间插值或者自动追踪,再进行修改。由于岩性层位彼此之间非常薄,这样就很容易造成岩性层位间存在窜层“打架”情况,如图1所示,这就影响到后续的反演处理和岩性预测精度。如果进行岩性层位人工检查,从平面图上无法甄别,全工区剖面浏览,既费时又费力,难免还有遗漏情况。所以,为了精细解释,高精度进行储层预测和地震反演,特开发了岩性解释层位质量控制及调整程序,目的在于发现岩性层位的质量问题,并进行人工或者自动修正,提高解释的工作效率,减轻解释人员的劳动强度。

图1 岩性层位窜层“打架”情况图

1 实现过程及程序编制

1.1 数据分析及原理

首先针对OpenWorks系统二维/三维岩性层位数据分别进行数据结构分析,通常的层位数据包括x、y、z即可满足资料解释需求,而本程序的要求,需要更多的地震数据信息参与运算,需要包括CDP信息,也就是OpenWorks系统的Single通用格式。程序在设计过程中既要考虑三维工区线、道数不确定性及工区不规则,也要周全二维工区测线长短不一亦即每条线的道数不确定。

其次对“窜层”情况的深入研究,岩性层位窜层通常就是地震数据的某一地震道上的岩性层位,下层的岩性层位漂移到上层岩性层位之上,从T0值上说,下层(H2)时间小于或者等于上层(H1)时间,如图2所示。通过对下层T0值将超出上层(或重合)的部分自动向下漂移适当的时距(△t),实现下层岩性层位自动修正[1],如图3所示。

图2 岩性层位漂移图

用上层加上时距取代原来下层不合理的部分,公式:H2(cdp)=H1(cdp)+△t,同时保持上层数据不变化,下层正常的部分不变化,并产生下层的质量控制记录文件(QC3D_层名或者QC2D_层名)。质量控制记录文件是用来检查窜层的具体线、道位置以及上下层时间和修正后的时间。

图3 岩性层位自动修正

1.2 程序设计

程序采用非常适合科学计算的Visual Fortran语言编写,为了方便运行,利于扩展,既可以运行在Windows操作系统上,也可以运行在Linux操作系统上。程序主要包括三部分,第一、第二部分主要用来对岩性层位的上、下层数据进行整理处理,为后续工作做准备,第三部分程序的核心,又来查找窜层部分,并进行修正处理[2]。程序名称Horizon_QC,流程如图4所示。

图4 程序流程图

1.3 实现过程

1.3.1 二维工区(SORT2D子程序)

首先对上下层岩性层位数据进行分割处理(cut2d),分割成以线名方式独立存在临时性文件,并记录上下层的线名文件(moni111.dat、moni222.dat)。逐条线进行检查(compare),读取相同线的岩性层位数据,分别赋予不同的一维数组(read_data),逐道判别是否:VAL=T2(I)-T1(I) 小于零,如果是小于零:T2(I)=T1(I)+SF0 (其中T2下层岩性层位时间,T1上层岩性层位时间)。并将这条线此道相关信息记录在QC2d质量控制文件[3-5]。

1.3.2 三维工区(SORT3D子程序)

通过给出的上下层岩性层位数据,确定岩性数据有效值的线道范围(MAX_MIN2d),用作二维数组下标值上限下限。二维数组用于临时存储上下层岩性层位信息,通过逐线(I)逐道(J),对上下层位数值检查,发现是否有窜层情况,即VAL=T2(I,J)-T1(I,J)小于零,如果是小于零T2(I,J)=T1(I,J)+SF0,实现对下层校正,并将此点记录在QC3d质量控制文件,以供检查[6-7]。

1.4 程序部分核心源代码

Main horizon_qc()

PRINT*," This program is for searching Horizons reversal "

PRINT*,"writer:wangzhq Email:wangzhq@cnpc.com.cn"

PRINT*,"wwwwwwwwwwwwwwwwwwwwwwwwwww"

print*," ww"

print*," w 1. Processing Lmk2d horizon data w "

print*," ww"

print*," w 2. Processing Lmk3d horizon data w"

print*," ww"

print*," w 0. exit w"

print*," ww"

print*,"wwwwwwwwwwwwwwwwwwwwwwwwwwww"

print*," "

print*,"Pease input a number(0,1,2):"

read*,nu

end

SUBROUTINE SORT3D()

DIMENSION x1(5000,5000),y1(5000,5000),T1(5000,5000)

DIMENSION MCDP1(5000,5000),LINE1(5000,5000)

DIMENSION x2(5000,5000),y2(5000,5000),T2(5000,5000)

DIMENSION MCDP2(5000,5000),LINE2(5000,5000)

character file1*20,file2*20

print*,’ENTER First Horizon(up) FILE(LandMark Single):’

read*,file1

print*,’ENTER Second Horizon(down) FILE(LandMark Single):’

read*,file2

print*,’Enter A FB value(ms):’

read*,FB0

print*,’Enter A shift value(ms):’

read*,sf0

OPEN(UNIT=11,STATUS=’OLD’,FILE=file1)

READ(11,21)m,n

L0=m

L9=m

K0=n

K9=n

close(11)

CALL MAX_MIN2d(L0,L9,K0,K9,FILE1)

CALL MAX_MIN2d(L0,L9,K0,K9,FILE2)

OPEN(UNIT=11,STATUS=’OLD’,FILE=file1)

C read first horizon

print*," >1111111111111111111111111<"

99 READ(11,200,END=88)Lt,kt,Xt,Yt,Tt

LINE1(Lt,Kt)=Lt

MCDP1(Lt,Kt)=Kt

X1(Lt,Kt)=Xt

Y1(Lt,Kt)=Yt

T1(Lt,Kt)=Tt

GOTO 99

C read second horizon

88 print*," >2222222222222222222222222<"

OPEN(UNIT=12,STATUS=’OLD’,FILE=file2)

999 READ(12,200,END=77)Lt,kt,Xt,Yt,Tt

LINE2(Lt,Kt)=Lt

MCDP2(Lt,Kt)=Kt

X2(Lt,Kt)=Xt

Y2(Lt,Kt)=Yt

T2(Lt,Kt)=Tt

goto 999

77 PRINT*," >3333333333333333333333333<"

OPEN(UNIT=13,STATUS=’UNKNOWN’,FILE=’lmk_’//file2)

OPEN(UNIT=14,STATUS=’UNKNOWN’,FILE=’QC3d_’//file2)

WRITE(14,203)’LINE’,’CDP’,

2 ’FirstTime’,"SecondTime","TOP+",sf0

DO 10 I=L0,L9

DO 20 J=K0,K9

IF ((X1(I,J).NE.0).AND.(X2(I,J).NE.0)) THEN

VAL=T2(I,J)-T1(I,J)

IF (VAL.LT.FB0) THEN

A=T2(i,j)

T2(I,J)=T1(I,J)+sf0

WRITE(14,105)i,j,T1(I,J),A,T2(i,j)

ENDIF

fline=LINE2(I,J)*1.0

fmcdp=MCDP2(I,J)*1.0

WRITE(13,201)fline,fmcdp,X2(I,J),

1 Y2(I,J),T2(I,J)

ELSE

IF (X2(I,J).NE.0) THEN

fline=LINE2(I,J)*1.0

fmcdp=MCDP2(I,J)*1.0

WRITE(13,201)fline,fmcdp,X2(I,J),

1 Y2(I,J),T2(I,J)

ENDIF

ENDIF

20 CONTINUE

1.5 程序运行说明

运行平台为Linux操作系统平台,运行Horizon_QC,主菜单如图5所示。

图5 程序主菜单

在第一级菜单下输入“1”,二维工区岩性层位处理;输入“2”是三维工区岩性层位窜层处理。在二级菜单下按程序提示,需要输入上层和下层岩性层位文件以及时移量(大于0,但不要太大),程序运行后在当前目录下产生新的下层岩性文件文件(lmk_原下层文件名)和质量控制文件(QC2d_原下层文件名或QC3d_原下层文件名)[8-9]。

2 应用实例

程序编制后在多个LandMark工区进行了应用,下面以肇源南三维工区为例说明本程序的应用效果。该工区共有7个岩性层位,其中葡萄花油层有p0、p1、p2,扶余油层f0、f1、f2、f3。在用户完成阶段对比后,应用Horizon_QC进行质量检查。f0、f1是两个连续岩性层位,运行Horizon_QC,按提示提交上、下层岩性文件名(f0.dat和f1.dat)以及时移量(2.0 ms),程序自动生成f1层质量控制文件(QC3d_f1.dat)和新的下层岩性文件(lmk_f1.dat)。检查QC3d_f1.dat文件,如图6所示,发现其中line432、cdp564处有窜层现象,如图7所示,直观很难分辨,局部放大后才能看清f0、f1在cdp564有粘连,从控制文件获悉下层f1比f0只高出0.01ms。图8所示是利用本程序f1层自动修正后的情况。

图6 f1层质量控制文件

图7 f1在cdp564窜层情况

图8 修正f1在cdp564窜层情况

3 建议及结论

通过程序的编制及实际解释工区的应用,弥补了LandMark软件的不足之处,解决了实际的生产问题,获得了很好的效果,满足了用户解释要求,提高了解释人员的工作效率。对于岩性层位的质量监控起到了非常好的作用,具有很好的推广应用前景。

1)在地震属性参数提取前,应用本程序(Horizon_QC)进行岩性层位的质量检查,通过查看质量控制记录文件QC3D.dat(QC2D.dat),无问题了再进行后续工作;

2)在为地震反演提供岩性约束层位时,应用本程序Horizon_QC,以新产生的层位文件取代原文件参与地震反演过程。

猜你喜欢

层位工区下层
基于样本选取和多种质控的地震层位智能拾取
关于铁路编组站减速顶工区标准化建设研究
涡北煤矿综采放顶煤运输巷层位布置的探讨分析
精确发现溢流研究及在西北工区现场应用
耀眼的橘红色——河南省焦作市公路局养护工区养护机械队速写
积雪
陕西横山罗圪台村元代壁画墓发掘简报
卡拉麦里山前石炭系火山岩序列层位归属及分布研究
煤层气排采产气效果影响因素分析:以延川南工区谭坪构造带排采井为例
顶板走向高抽巷层位布置的合理选择