油田的开发阶段,开发井网已经完成,乃至开发方案已经全面实施,这时已经获得了大量的测井资料、岩心资料、测试资料等。因此该阶段的油藏描述和储层表征应充分重视各种测井信息在油藏研究中的应用。同时,考虑陆相油气藏的特点,加强不同规模油藏或储层静态地质模型的研究。
在这一阶段储层建模的研究思路是:在岩石物理相及油藏渗流地质学理论指导下,以储层非均质性和剩余油分布规律为核心内容,以储层或油藏的定量评价为目的,综合地质、地震、测井、测试资料,充分发挥以地质为主体,多学科定量一体化研究的优势,将沉积微相研究落实到小层;重视关键井研究及多井评价,在对全工区测井资料标准化的基础上,分层、分块、分相带建立精细的测井解释模型。综合应用各种静态、动态资料,深入研究井间砂体及储层参数在三维空间上的分布,以及研究储层与流体的相互作用机理,表征开发过程中储层非均质性及流体性质的变化特征及其对驱油效果和采收率的影响,以建立不同规模的储层地质模型,并在深入研究剩余油分布规律的基础上,最终建立剩余油分布模型。
遵循这一研究思路,结合实际情况和本文的研究目的,采取如下的技术路线:
(1)首先建立两大类数据库,即静态数据库(包括岩心、测井、单井及多井相、岩性及岩石物性等)和动态数据库(包括试井测试、流体动态信息、生产动态资料等);
(2)在静态数据库的基础上,利用岩心、测井、测试和试井资料,应用地质统计学及随机建模技术建立高精度的储层地质模型(即储层预测模型,包括沉积相展布模型、砂体骨架模型、孔隙度预测模型、渗透率预测模型和单砂体三维模型等);
(3)在储层预测模型的基础上,通过对储层非均质性的精细表征和剩余油形成机理的深入分析,应用岩心剩余油测定技术、多测井综合解释技术及数值模拟技术研究剩余油分布规律及分布状况,建立剩余油分布预测模型,并为油田的下一步开发提出合理化建议。
技术流程框图如图6-1所示。
图6-1 开发阶段储层地质建模技术路线流程框图
开发中后期的油藏大多已进入高含水的产量递减阶段。由于储层非均质特征的差异性、屏障性、敏感性及变化的随机性,加之井网的不完善性,可导致油水推进在纵、横向上的不均一性、油层动用程度的差异性和剩余油分布的零散性。同时,在长期水淹的储层中,储层及流体性质都将发生一系列物理的、化学的及机械的变化。凡此种种,致使油藏各方面的非均质性更加突出,特别是储层非均质性,它是控制剩余油分布及进一步调整方案的主要因素。
因而这一阶段的研究以储层非均质性变化特征为基础,以剩余油分布规律为核心,以储层、油藏的定量评价为目的,注重非均质成因机制综合效应的研究及剩余油分布规律综合控制因素的研究。特别是在开发井网条件下,井点储层参数在开发前后的准确标定和求取,以及井点间和无井区储层属性参数变化的内插和外推方法的应用及研究。在研究储层非均质特征的同时,进行油藏地球化学研究,即研究流体在开发过程中与储层间的作用及变化规律,并预测对驱油效果的影响;研究注入剂与油藏流体的配伍,为改善开发效果及三次采油措施方案的优选提供依据。
由此可见,这一阶段的研究内容包括以下6个方面:①井间非均质参数的随机模拟;②储层属性参数的变化及表征;③储层在水驱或注水开发后的变化及非均质特征;④剩余油饱和度、分布特征及储量复算;⑤油藏中流体性质变化及其与储层相互作用等油藏地化特征;⑥油藏目前温压场分布特征、边水及底水体积变化特征等。
在上述内容研究的基础上,分别建立储层结构模型、不同规模的非均质性模型、岩石物理模型及剩余油分布模型。剩余油分布模型将在下一章中介绍。
利用注水井吸水剖面、小层沉积微相和数值模拟三种方法综合研究南区沙二下1-5层系剩余油分布规律。
1注水井吸水剖面法
注水井吸水剖面法是利用历年来注水井吸水剖面资料,将注水井累积注水量分配到小层,再根据室内岩心水驱油试验结果,注入体积倍数与采收率、含水率之间的关系,来确定小层剩余油分布规律。
(1)建立静态数据库,统计小层渗透率分布规律
系统建立南区沙二下1-5层系油、水井静态参数数据库。利用算术平均法和有效厚度加权平均法,分别计算出各小层渗透率平均值。利用概率统计的方法,求出各小层渗透率分布变异系数。
(2)建立吸水剖面数据库,计算小层累积注水量
在静态数据的基础上,建立注水井吸水剖面数据库。利用吸水剖面数据库可以统计出历年单井、小层吸水厚度变化趋势和吸水强度分布规律。利用吸水剖面数据库和注水井单井累积注水量,可以计算出历年小层累积注水量。
(3)建立注入体积倍数与采收率、含水之间关系,计算小层采出程度
根据濮城油田南区濮检1井非稳定流油水相对渗透率、水驱油试验报告和沙二下第446号岩心试验结果,由小层累积注水量计算出小层注入体积倍数,再根据以上关系内插求出各小层的采出程度和含水率。
(4)确定小层驱油效率
根据利用中原油田开发室内试验数据统计出来的驱油效率ED试验公式:
高含水油田剩余油分布研究:以辽河油田欢26断块为例
式中 Ka——空气渗透率(10-3μm2);
μR——油水粘度比。
由于南区沙二下1-5层系各含油小层油水性质基本相同,油水粘度比可以作为一个常数,上式简化为:
高含水油田剩余油分布研究:以辽河油田欢26断块为例
式中 C——常数(据油水粘度水比值确定)。
油层的平均驱油效率不仅取决于油水两相的渗流特点,还与油层的非均质状况有关。油层的非均质性是油藏地质的基本属性。对于注水开发油田,油层的非均质性主要体现在它对油水渗流特点的影响上,而油层岩石性质对油水渗流的主要影响因素又是渗透率这一参数。小层非均质性分纵向非均质性和平面非均质性,根据研究,南区沙二下1-5层系单砂层纵向渗透率分布相当均匀,而平面上变化相当大。因此对驱油效率ED需要进行平面校正。
对驱油效率ED的校正计算公式为:
高含水油田剩余油分布研究:以辽河油田欢26断块为例
驱油效率ED可以做为小层在均质条件下的最终值,驱油效率ED1可以做为小层在非均质条件下油田开发的最终值,或称测算采收率。在油田开发中,驱油效率还受注采井网及工艺技术条件的限制。
(5)计算小层剩余油量
根据小层驱油效率计算出可采储量,再由小层采出程度计算出剩余油量。
2小层沉积相法
通过对濮城油田沙二下段沉积相的研究,认为濮城沙二下段沉积环境为浅水湖泊相和浅水三角洲相,其特点是水下分支河道异常发育,水下河道亚相是沙二下段沉积主体和骨架,河道层序具有对称性,底部粗粒段和顶部细粒段较薄、中间段厚度大且粒度均匀,河道砂体是本区沙二下段主要储集层;南区沙二下长期处于水下河道沉积区,砂层多,分选好,是濮城油田沙二下中的最好储集层。
针对沙二下1-5油层目前开发现状,结合沉积相研究和油水生产剖面的初步分析,得到以下认识:
(1)河道砂是主要的吸水层,也是目前的主要产出层
在油田开发初期,河道砂(包括水下河道主水流线上的SH型砂体,居非主水流线上的H型砂体和居水下河道中的相对高台上的T型砂体)是主要的吸水层,也是主要的产油层。到油田开发中后期,由于油田含水的升高,主产层逐步过渡到主产水层。
根据1987年至1991年注水井吸水状况分类统计,河道砂是注水井的主要吸水层,统计48口注水井的吸水剖面,河道砂的射孔厚度2045m,占总射孔厚度的457%,河道砂的绝对吸水量26922m3/d,占总吸水量的663%。其中1988年至1990年,河道砂射孔厚度占总射孔厚度的53%左右,绝对吸水量的百分数却高达80%以上。1987年至1990年,在射开河道砂厚度相对稳定的情况下,注水井中河道砂体的吸水能力有增大趋势,相对吸水百分数由57%增大到90%。
根据9口生产井产出剖面统计资料(表4-14),河道砂也是目前主要的产出层。统计沙二下1-5层系河道砂射孔厚度451m,占总射孔厚度的401%,河道砂产液量1223m3/d,占总产液量的648%。
(2)河道砂在注水井和生产井之间已经形成地下水道,是主要的产水层
根据濮3-284井环空测井资料分析,射开16层,产出层5个,产出层占313%;射开厚度335m,产出厚度164m,产出厚度占490%。其中主要产水层32小层,2层50m,日产油17m3,日产水197m3,含水921%。
濮3-284井的一线注水井是3-282井,由于濮3-28井处于河流的边滩部位,油层物性差,吸水状况差。根据历次吸水剖面资料解释,射开有效厚度14m,日吸水量只有5m3左右,分析结果一线注水井不是主要的来水方向。
濮3-278井是濮3-284井的二线注水井,根据吸水剖面资料分析,是其主要的来水方向。濮3-278井沙二下32小层,射开吸水厚度32m,日吸水量663m3。根据沉积相分析,濮3-278井和濮3-284井的沙二下32小层处于同一河道砂体,它们之间连通性好、渗透性好,在油田注水开发中已经形成了地下水道。
(3)前缘砂和滨湖砂是目前主要的产油层
前缘砂分布在水道的两侧,滨湖砂距河道砂较远。前缘砂属中渗透砂体,滨湖砂属于低渗透性砂体。
统计沙二下1-5层系主要处于前缘砂和滨湖砂部位的21口生产井,1992年9月份日产油水平289t,井数占全层系开井数的344%,日产油水平占561%。21口生产井平均单井日产水平138t,平均含水370%。其中处于前缘砂亚相的濮3-41井,生产沙二下3-5,射开5层134m,其中有效厚度3层76m,9月份平均日产油16t,含水61%,累积产油709×104t。
统计沙二下32和沙二下52两个典型含油小层,前缘砂232km2,滨湖砂302km2,分别占两小层含油面积的301%和390%。前缘砂和滨湖砂在平面上分布面积比较大,由于油层物性差、渗透率低,目前水驱动用状况差,剩余油量比较大,是今后挖潜的主要方向。
综合以上分析,河道砂是主要的吸水部位,同时也是主要的产出部位,过去是主要的产油层,目前是主要的产水层。含水一般均在80%以上,局部含水达到90%以上。目前剩余油很少,已到水洗油的阶段。大庆的河流过渡相和河漫相部位(濮城的前缘相与滨湖相)是目前主要的剩余油聚集带,也是目前主要的产油层,因此下步调整挖潜的方向应为河床过渡相和河漫相。
3数值模拟法
(1)建立模型
①网格的划分
该模拟区块共有25小层,模型建立纵向上以主力层单独模拟层为原则划分为13个模拟层;平面上选取不等间距的矩形网格系统。整个模型网格总数为13×18×13=7254,其中有效节点4873个,死节点为2381个。
②油藏参数的选取
油藏流体物性参数。
相对渗透率数据:由于没有本区块油藏的相对渗透率数据借用邻近区濮检1井的数据进行了修正。沙二下1-5共选用七条相对渗透率曲线。
PVT数据:南区沙二下1-5层系没有取得PVT数据,故借用与其相近的东区文35井的数据进行了处理修正。
网格节点参数:网格节点数据除网格步长外,其他地质参数均来自每口井的电测解释结果,在工作站上用插值法算得每个网格的数据。
初始化计算结果:濮53块沙二下1-5油藏由于未对每一小层储量进行标定,利用每小层体积百分数来计算每一小层储量。利用三维三相模拟各小层储量结果。
(2)历史拟合
根据生产历史对单井,全油田的压力、含水进行了拟合,均得到了较满意的结果。
游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。Oracle数据库的Cursor类型包含三种: 静态游标:分为显式(explicit)游标和隐式(implicit)游标;REF游标:是一种引用类型,类似于指针。下面我们一一介绍它们的使用。
1隐式游标
1)Select …INTO…语句,DML语句,使用隐式Cursor。此外,还有一种使用FOR LOOP的Implicit Cursor用法。
2)可以通过隐式Cusor的属性来了解 *** 作的状态和结果。Cursor的属性包含:
SQL%ROWCOUNT 整型代表DML语句成功执行的数据行数。
SQL%FOUND 布尔型值为TRUE代表插入、删除、更新或单行查询 *** 作成功。
SQL%NOTFOUND 布尔型与SQL%FOUND属性返回值相反。
SQL%ISOPEN 布尔型DML执行过程中为真,结束后为假。
3) 隐式Cursor由系统自动打开和关闭
例如:
setserveroutputon
declare
begin
updateemployeessetemployee_name='Mike'whereemployee_id=1001;
ifSQL%FOUNDthen
dbms_outputput_line('Nameisupdated');
else
dbms_outputput_line('Nameisnotupdated');
endif;
end;
/
setserveroutputon
declare
begin
fortableInfoin(selectfromuser_tables)loop
dbms_outputput_line(tableInfotable_name);
endloop;
exception
whenothersthen
dbms_outputput_line(sqlerrm);
end;
/
2显式游标
1) 显式Cursor的属性包含:
游标的属性 返回值类型 意义
%ROWCOUNT 整型 获得FETCH语句返回的数据行数
%FOUND 布尔型 最近的FETCH语句返回一行数据则为真,否则为假
%NOTFOUND 布尔型 与%FOUND属性返回值相反
%ISOPEN 布尔型 游标已经打开时值为真,否则为假
2) 对于显式游标的运用分为四个步骤:
a 定义游标---Cursor [Cursor Name] IS;
b 打开游标---Open [Cursor Name];
c *** 作数据---Fetch [Cursor name]
d 关闭游标---Close [Cursor Name]
以下是几种常见显式Cursor用法。
<p>setserveroutputon
declare
cursorcurisselectfromuser_tables;
tableInfouser_tables%rowtype;
begin
opencur;
loop
fetchcurintotableInfo;
exitwhencur%notfound;
dbms_outputput_line(tableInfotable_name);
endloop;</p><p>exception
whenothersthen
dbms_outputput_line(sqlerrm);</p><p>closecur;
end;
/</p>
setserveroutputon
declare
cursorcurisselectfromuser_tables;
begin
fortableInfoincurloop
dbms_outputput_line(tableInfotable_name);
endloop;
exception
whenothersthen
dbms_outputput_line(sqlerrm);
end;
/
还可以使用带参数open的cursor。
<p>setserveroutputon
declare
cursorcur(tblNamevarchar2)isselectfromuser_constraintswheretable_name=tblName;
tableInfouser_constraints%rowtype;
begin
opencur('EMPLOYEES');
loop
fetchcurintotableInfo;
exitwhencur%notfound;
dbms_outputput_line(tableInfoconstraint_name);
endloop;</p><p>exception
whenothersthen
dbms_outputput_line(sqlerrm);</p><p>closecur;
end;
/</p><p></p>
setserveroutputon
declare
cursorcur(tblNamevarchar2)isselectfromuser_constraintswheretable_name=tblName;
begin
fortableInfoincur('EMPLOYEES')loop
dbms_outputput_line(tableInfoconstraint_name);
endloop;
exception
whenothersthen
dbms_outputput_line(sqlerrm);
end
/
可以使用WHERE CURRENT OF子句执行UPDATE或DELETE *** 作。
setserveroutputon
declare
cursorcurisselectfromemployeesforupdate;
begin
fortableInfoincurloop
updateemployeessetsalarysalary=salary11wherecurrentofcur;
endloop;
commit;
exception
whenothersthen
dbms_outputput_line(sqlerrm);
end;
/
3REF CURSOR(Cursor Variables)
REF Cursor在运行的时候才能确定游标使用的查询。利用REF CURSOR,可以在程序间传递结果集(一个程序里打开游标变量,在另外的程序里处理数据)。
也可以利用REF CURSOR实现BULK SQL,提高SQL性能。
REF CURSOR分两种,Strong REF CURSOR 和 Weak REF CURSOR。
Strong REF CURSOR:指定retrun type,CURSOR变量的类型必须和return type一致。
Weak REF CURSOR:不指定return type,能和任何类型的CURSOR变量匹配。
Ref cursor的使用:
1) Type [Cursor type name] is ref cursor
2) Open cursor for
3) Fetch [Cursor name]
4) Close Cursor
例如:
Step1:
createorreplacepackageTESTas
typeemployees_refcursor_typeisrefcursorreturnemployees%rowtype;
procedureemployees_loop(employees_curINemployees_refcursor_type);
endTEST;
/
Step2:
createorreplacepackagebodyTESTas
procedureemployees_loop(employees_curINemployees_refcursor_type)is
empemployees%rowtype;
begin
loop
fetchemployees_curintoemp;
exitwhenemployees_cur%NOTFOUND;
dbms_outputput_line(empemployee_id);
endloop;
endemployees_loop;
endTEST;
/
Step3:
setserveroutputon
declare
empRefCurTESTemployees_refcursor_type;
begin
foriin1020loop
dbms_outputput_line('DepartmentID='||i);
openempRefCurforselectfromemployeeswheredepartment_id=i;
TESTemployees_loop(empRefCur);
endloop;
exception
whenothersthen
dbms_outputput_line(sqlerrm);
closeempRefCur;
end;
/
4BULK SQL
使用FORALL和BULK COLLECT子句。利用BULK SQL可以减少PLSQL Engine和SQL Engine之间的通信开销,提高性能。
1 To speed up INSERT, UPDATE, and DELETE statements, enclose the SQL statement within a PL/SQL FORALL statement instead of a loop construct 加速INSERT, UPDATE, DELETE语句的执行,也就是用FORALL语句来替代循环语句。
2 To speed up SELECT statements, include the BULK COLLECT INTO clause in the SELECT statement instead of using INTO 加速SELECT,用BULK COLLECT INTO 来替代INTO。
SQL>createtableemployees_tmpasselectfirst_name,last_name,salaryfromemployeeswhere0=1;
setserveroutputon
declare
cursoremployees_cur(depIdemployeesdepartment_id%type)isselectfirst_name,last_name,salaryfromemployeeswheredepartment_id=depId;
typeemployee_table_typeistableofemployees_cur%rowtypeindexbypls_integer;
employee_tableemployee_table_type;
begin
openemployees_cur(100);
fetchemployees_curbulkcollectintoemployee_table;
closeemployees_cur;
foriin1employee_tablecountloop
dbms_outputput_line(employee_table(i)first_name||''||employee_table(i)last_name||','||employee_table(i)salary);
endloop;
foralliinemployee_tablefirstemployee_tablelast
insertintoemployees_tmpvalues(employee_table(i)first_name,employee_table(i)last_name,employee_table(i)salary);
commit;
end;
/
以上就是关于 高含水油田储层建模的技术路线全部的内容,包括: 高含水油田储层建模的技术路线、研究方法、数据库里面静态游标包含哪两种类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)