常立言,李雅琼
(1.西南石油大学理学院,四川 成都610500;2.中国石化中原油建工程有限公司,河南 濮阳457001)
油藏可采储量计算包括技术可采储量计算和经济可采储量计算,主要解决目前的工艺水平、经济条件允许下,油层中可以开采出来的油量的计算问题。技术可采储量是指依靠现有井网工艺技术获得的总产油量,水驱油藏一般测算到含水率98%、 其他驱动油藏开采到技术废弃产量时的累计产油量。经济可采储量则是在当前已实施的或确定将要实施的技术条件下,按当前经济状况估算的、可经济开采的油藏储量。标定可采储量是制定与调整油田发展规划的基本要素,在开发前期、 初期和中后期等不同阶段,以及不同的油藏类型,可采储量的计算方法也不同。优选可采储量计算方法是储量标定工作的重要内容。
近年来,经过国内外油藏地质专家的探索与研究,形成了数十种用于油藏储量标定的计算方法[1-2]。但是,如何根据勘探开发现场的油藏地质类型、开发指标和阶段,合理选择计算方法并计算出可靠的标定结果,仍然面临很多问题。已有方法多为人工计算,比较复杂,运算量大,不一定能确保计算结果的精度及可靠性,且目前常用的计算软件通用性不够强,因此,开发设计一套覆盖各类计算方法、 计算精度可靠、 操作简单、数据录入方便可靠的油藏可采储量计算软件,是当前储量标定需要解决的迫切问题。
常用储量计算方法主要包括静态法和动态法。其中,静态法一般先利用理论公式、经验公式、类比等方法确定采收率,再结合地质储量计算出油藏可采储量。静态法通常在油田尚未开采或者开采初期使用,这是因为此时尚未获得具有一定规律的开发生产资料,无法利用动态数据进行有效的储量计算。
动态法主要包括水驱特征曲线法、递减曲线法、童氏图版法、数学模型法等[3-10]。与静态法不同,动态法主要依据油藏开采历史动态资料和规律,应用一定算法从而达到计算可采储量和预测开采趋势的目的。因此,在油藏开发的中、晚期多使用动态法进行计算,并且通常会使用数种计算方法来彼此验证,从而提高储量计算的可信度和可靠性。业内普遍认为动态法计算较静态法更为可靠。
本软件使用面向对象的C++语言编写,采用微软的可视化软件开发环境Visual Studio 2010 进行编译与界面设计,选取Oracle作为后台数据库系统,对应运行环境为Windows系列操作系统。基于模块化设计思想,软件程序由数据载入、数据运算、数据传出、图形界面及辅助等5 个大型模块构成,每个大型模块又根据具体的实现功能分为若干小型模块。各模块之间通过传递关键参数互相联系在一起,同时每个模块又具有一定的独立性(见图1),使其既保持了软件功能的完整性,又便于增添和修改单独的模块而不必改动软件的整体框架结构。主干逻辑流程如图2所示。
图1 软件模块构成
数据载入模块是整个运算程序的基础部分,负责载入所选运算函数必须的参数值,将其传递给数据运算模块。为了对应不同的数据源,本模块共有数据库导入、文件导入和交互式实时录入3 种载入方式。数据库导入模块,主要通过Pro*C/C++,在C++语言程序内嵌入SQL语句,对目标Oracle数据库数据进行读取[11-12],并且赋值至程序内部变量。文件导入模块,支持程序从Excel表格中读取数据,借助ODBC (开放式数据库连接)对Excel文件进行连接,把目标Excel视为一个数据库文件,然后查询相应表格并获得数据[13]。交互式实时录入,通过程序界面上的编辑框接收对应的参数值,将其赋值给程序内部的相关运算变量。本模块会对导入参数的基本取值进行合法化判断,对于出现诸如关键数为0 等严重参数非法化传入,能够及时检测并通知用户修正,从而增强程序的健壮性。
数据运算模块是本程序的核心。由于本软件涉及方法数量多、种类广,针对不同类型计算方法所采用的实现算法也不尽相同。例如:对于经验公式等单公式算法,通常直接使用标准数学函数库中的运算函数,将数学公式转换成一个或数个C++语言赋值语句,代入载入模块中提供的参数值,即可计算出目标结果。针对部分可能产生计算机数值计算误差的公式,需要对运算参数和方法进行判断,并相应地进行优化处理,避免因运算参数之间差距过大,造成“大数吃小数”、除数绝对值远小于被除数的除法计算等数值计算误差[14]。对于含有多个公式的方法,比如产量递减法、水驱特征曲线法等,会对选定的多个传入参数组(可以是手动选择,也可以根据不同开发阶段,对某一个区块进行分段选择评价)组成的相关关系式进行线性回归,求得中间变量“截距”和“斜率”等值,并将其代入对应的关系式计算获得运算结果。本模块会对运算产生的结果进行值域合法化判定,当采收率明显不合法时,能够通知用户检查传入参数的正确性。
图2 软件运算逻辑流程
数据传出模块主要负责2部分的处理:一是将计算结果传到程序交互界面模块中,供用户查看;二是根据类型的不同及使用者的需求,把计算结果数据传出保存至Oracle 数据库(Pro*C/C++)/外部Excel 文档(ODBC)/Bmp图片文件(依据Bmp格式准建立位图文件)中[15],方便存储备案及进一步使用,其实现思路近似于载入模块。
图形界面模块主要对程序软件的可视化界面进行管理,接收用户的各种键盘/鼠标操作,将结果数据/图标绘制到对应的位置上,完成对用户操作的反馈。它是用户与程序进行交流的重要部分。程序图形界面基于微软的MFC设计而成,简洁美观,使用方便[16]。
辅助模块对软件使用中的疑问,建立帮助索引系统。用户可以使用主题索引或者指定关键字,通过辅助模块自行查询,解决使用中出现的算法选取、 参数导入、操作流程等各类问题。
1)可采储量计算方法收录范围广,涵盖了诸如水驱砾岩油藏和稠油热采油藏采收率计算等经验公式法、水驱特征曲线法、产量递减法、增长曲线法、童宪章图版法、现金流法等24 种常用的公式模型,可对应不同情况任意选用,又能相互比对验证,扩大软件适用范围,提高计算可靠度。
2)输入、输出方式多样,涵盖了数据库对接、导入导出文档和实时交互反馈3 种方式,既保证了数据来源的便利性与可靠性(可与数据库相连接),又可以灵活录入或导出指定数据(Excel文件、书面数据)。
3)基于MFC的标准Windows图形界面[11],操作简单,减少了计算所需要时间,同时具有一定的参数容错功能。
4)软件生命力强,整个软件采用新颖的模块化设计思想,在测试、使用过程中,即使出现问题也能快速定位至根源模块并迅速解决,且同时具有良好的扩展性,允许在日后的使用中随时添加新的功能模块,满足日益增长的使用需求。
本文主要以油藏技术可采储量计算为例,分别采用静态经验公式法、动态水驱特征曲线法,运用实际生产数据对软件程序的计算过程及结果进行验证。
某油田甲区块新增构造层状砂岩油藏,含油面积8.41 km2,根据其油藏特征及驱动机理选择溶解气驱油藏采收率经验公式,对新增油藏进行采收率标定。数据源选择Excel表格,导入目标Excel后选定甲区块新增油藏作为标定目标,并填充数据至参数设置。检查参数无误后点击开始计算,最终算出采收率为16.836 079%,乘以油藏地质储量后得出该区块溶解气驱部分技术可采储量为90.184 141×104t(见图3),减少有效数字位数后为90.18×104t,结果与储量标定最终报告给出的数据一致。
图4左侧,为某油田处于开采中的B6 区块累计产水量(Wp)与累计产油量(Np)关系图。可以看出,通过选取适当的回归数据段,利用合适的水驱曲线,对该区间内的累计产油量、累计产水量进行一元线性回归,最终求得其直线方程的截距a、斜率b及相关系数r,从而得知当极限含水率为98%的时候,该区块的可采储量为118.278 176×104t,采收率为33.204 620%。
图3 经验公式计算可采储量软件运行界面截屏
图4 水驱特征曲线法计算可采储量软件运行界面截屏
将a,b代入含水率-累计产油量关系式,发现产量关系预测曲线与实际生产数据拟合度很好(见图5)。
图5 含水率与累计产油量关系
通过使用本软件对多组实例数据的计算,其结果与通用的地质研究成果基本一致,证实本软件具有相当高的可靠度。同时,本软件还具有涵盖方法广、对错误参数具有一定辨别能力、 数据源和输出方式支持度强、操作简便运算快速、扩展性良好等特点,与传统方法及同类软件系统相比,能够有效提高计算质量和效率,降低人力物力成本,促进油藏可采储量计算的程序化和自动化。
[1]陈元千.油田可采储量计算方法[J].新疆石油地质,2000,21(2):130-171.
[2]陈元千.预测油气田可采储量方法的优选[J].油气采收率技术,1998,5(2):47-54.
[3]刘小鸿,缪飞飞,崔大勇,等.水驱油田理论含水上升率预测新方法及其应用[J].断块油气田,2013,20(6):736-739.
[4]王胤渊,陈小凡,刘峰,等.开发模型与水驱曲线联解预测方法[J].断块油气田,2014,21(1):59-61.
[5]陈元千,邹存友,张枫.水驱曲线法在油田开发评价中的应用[J].断块油气田,2011,18(6):769-771,779.
[6]陈元千.水驱曲线法的分类、对比与评价[J].新疆石油地质,1994,15(4):348-355.
[7]陈元千.水驱曲线关系式的理论推导[J].石油学报,1985,6(2):69-78.
[8]陈元千,郝明强.Arps递减微分方程的推导及应用[J].断块油气田,2014,21(1):57-58.
[9]俞启泰.七种递减曲线的特性研究[J].新疆石油地质,1994,15(1):49-56.
[10]童宪章.天然水驱和人工注水油藏的统计规律探讨[J].石油勘探与开发,1978,4(6):38-64.
[11]徐璇,姜明新,黄静,等.基于MFC的工程软件界面设计[J].电子设计工程,2011,19(21):11-13.
[12]禹春霞,谢川,刘志峰.VC++环境下访问ORACLE数据库的方法[J].机械设计与制造,2008(8):79-81.
[13]郭小梅.在VC++中实现Excel数据的导出/导入[J].电脑知识与技术,2008,4(3):726-730.
[14]刘平,吕海兵,张峰,等.数值计算误差初步理解及简单分析[J].地理空间信息,2011,9(3):156-158,161.
[15]宋叶未,叶建芳.BMP格式位图文件的分析及显示算法[J].现代电子技术,2011,34(20):5-7.
[16]刘连喜,徐惠民.MFC框架中的设计模式分析[J].计算机应用与软件,2005,22(9):50-52.