油藏数值模拟入门.docx
《油藏数值模拟入门.docx》由会员分享,可在线阅读,更多相关《油藏数值模拟入门.docx(19页珍藏版)》请在冰豆网上搜索。
![油藏数值模拟入门.docx](https://file1.bdocx.com/fileroot1/2023-1/29/4fa9f5e4-3c5b-4c14-9eb4-c78792ea150b/4fa9f5e4-3c5b-4c14-9eb4-c78792ea150b1.gif)
油藏数值模拟入门
尝试写一写油藏数值模拟入门指南,希望对那些刚刚开始进入油藏数值模拟领域的工作者有所帮助。
第一:
从掌握一套商业软件入手。
我给所有预从事油藏数值模拟领域工作的人员第一个建议是先从学一套商业数值模拟软件开始。
起点越高越好,也就是说软件功能越强越庞大越好。
现在在市场上流通的ECLIPSE,VIP和CMG都可以。
如果先学小软件容易走弯路。
有时候掌握一套小软件后再学商业软件会有心里障碍。
对于软件的学习,当然如果能参加软件培训最好。
如果没有机会参加培训,这时候你就需要从软件安装时附带的练习做起。
油藏数值模拟软件通常分为主模型,数模前处理和数模后处理。
主模型是数模的模拟器,即计算部分。
这部分是最重要的部分也是最难掌握的部分。
它可以细分为黑油模拟器,组分模拟气,热采模拟器,流线法模拟器等。
数模前处理是一些为主模拟器做数据准备的模块。
比如准备油田的构造模型,属性模型,流体的PVT参数,岩石的相渗曲线和毛管压力参数,油田的生产数据等。
数模后处理是显示模拟计算结果以及进行结果分析。
以ECLIPSE软件为例,ECLIPSE100,ECLIPSE300和FrontSim是主模拟器。
ECLISPE100是对黑油模型进行计算,ECLISPE300是对组分模型和热采模拟进行计算,FrontSim是流线法模拟器。
前处理模块有Flogrid,PVTi,SCAL,Schedule,VFPi等。
Flogrid用于为数值模拟建立模拟模型,包括油田构造模型和属性模型;PVTi用于为模拟准备流体的PVT参数,对于黑油模型,主要是流体的属性随地层压力的变化关系表,对于组分模型是状态方程;SCAL为模型准备岩石的相渗曲线和毛管压力输入参数;Schedule处理油田的生产数据,输出ECLIPSE需要的数据格式(关键字);VFPi是生成井的垂直管流曲线表,用于模拟井筒管流。
ECLIPSEOFFICE和FLOVIZ是后处理模块,进行计算曲线和三维场数据显示和分析,ECLIPSEOFFICE同时也是ECLIPSE的集成平台。
对于初学者,不但要学主模型,也需要学前后处理。
对于ECLISPE的初学者,应该先从ECLISPEOFFICE学起,把ECLISPEOFFICE的安装练习做完。
然后再去学Flogrid,Schedule和SCAL。
PVTi主要用于组分模型,做黑油模型可以不用。
第二:
做油藏数值模拟都需要准备什么参数
在照着软件提供的安装例子做练习时经常遇到的问题是:
虽然一步一步按照手册的说明做,但做的时候不明白每一步在做什么,为什么要这么做。
这时候的重点在于你要知道你一开始做的工作都是为数值模拟计算提供满足软件格式要求的基础参数。
有了这些基础参数你才能开始进行模拟计算。
这些基础参数包括以下几个部分:
1。
模拟工作的基本信息:
设定是进行黑油模拟,还是热采或组分模拟;模拟采用的单位制(米制或英制);模拟模型大小(你的模型在X,Y,Z三方向的网格数);模拟模型网格类型(角点网格,矩形网格,径向网格或非结构性网格);模拟油藏的流体信息(是油,气,水三相还是油水或气水两相,还可以是油或气或水单相,有没有溶解气和挥发油等);模拟油田投入开发的时间;模拟有没有应用到一些特殊功能(局部网格加密,三次采油,端点标定,多段井等);模拟计算的解法(全隐式,隐压显饱或自适应)。
2。
油藏模型:
模型在X,Y,Z三方向的网格尺寸大小,每个网格的顶面深度,厚度,孔隙度,渗透率,净厚度(或净毛比)。
网格是死网格还是活网格。
断层走向和断层传导率。
3。
流体PVT属性:
油,气,水的地面密度或重度;油,气的地层体积系数,粘度随压力变化表;溶解油气比随压力的变化表;水的粘度,体积系数,压缩系数;岩石压缩系数。
如果是组分模型,需要提供状态方程。
4。
岩石属性:
相对渗透率曲线和毛管压力曲线。
如果是油,气,水三相,需要提供油水,油气相对渗透率曲线和毛管压力曲线(软件会自动计算三相流动时的相对渗透率曲线);如果是油,水两相或气,水两相,只需要提供油水或气水两相相对渗透率曲线和毛管压力曲线。
5。
油藏分区参数:
如果所模拟的油田横向或纵向流体属性,岩性变化比较大,或者存在不同的油水界面,这时需要对模型进行PVT分区(不同区域用不同的PVT流体参数表),岩石分区(不同区域用不同的相对渗透率曲线和毛管压力曲线)或者平衡分区(不同平衡区用不同的油水界面)。
另外如果想掌握油藏不同断块的储量或采收率,可以对模型进行储量分区(不同储量区可以输出不同的储量,产量,采收率,剩余储量等)。
6。
初始化计算参数:
油藏模型初始化即计算油藏模型初始饱和度,压力和油气比的分布,从而得到油藏模型的初始储量。
这部分需要输入模型参考深度,参考深度处对应的初始压力,油水界面以及气水界面;油气比或饱和压力随深度的变化;如果是组分模型,需要输入组分随深度的变化。
7。
输出控制参数:
即要求软件在计算时输出哪些结果参数。
比如要求输出模型计算油田的油,气,水产量变化曲线;油田压力变化曲线;单井油,气,水产量变化曲线;单井井底压力变化曲线;单井含水,油气比变化曲线等。
8。
生产参数:
对于已开发油田,这部分的数据量非常大。
包括油田每口井的井位,井轨迹,井的射孔位置,井的生产或注入历史(油,气,水产量,注入量,井底压力,井口压力等),井的作业历史等。
第三:
如何准备各部分参数
上面介绍了做油藏数值模拟所需要的参数,那么这些参数是如何得来的?
又应该如何输入到数模模型中哪?
下面具体介绍各部分数据的来源即处理办法。
1。
油藏模型:
大多数油公司现在都在采用一体化工作流程,数模工程师不再需要自己去建立油藏模型。
地质学家对油田进行详细的油藏描述工作,基于地震解释数据,测井解释数据,岩芯数据以及结合地质家对油田的认识建立三维地质模型。
根据数模工程师的要求,地质家对三维地质模型进行粗化处理,可以直接为数模工程师输出符合数模工程师需要的油藏模拟模型。
如果你不幸工作在一个没有很好地采用一体化工作流程的油公司或学校,那你就需要自己建立油藏模拟模型了。
这时你需要用到数模软件的前处理建模模块(比如Flogrid).如果你从地质家处拿到的是三维地质模型,你的工作量还不是很大,主要是采用前处理建模模块对地质模型进行粗化,生成数值模拟模型。
如果你拿到的是两维数据体,那你的工作量就要大的多。
首先你要确定你必须要得到以下几方面的两维数据体:
*每层的顶面深度
*每层的厚度
*每层的孔隙度分布
*每层的渗透率分布
*每层的净厚度或净毛比分布
*断层数据
有了这些数据体,你就可以在前处理建模模块中建立三维数值模拟模型。
还有更不幸的情况,你有可能工作在软硬件环境都很落后的油田(比如国内的四川油田),你根本连两维数据体也拿不到,你能拿到的只是一张一张的等值线图,或者只是单井井点数据,这时候你首先需要做的是将这些等值线图件用数值化仪数值化为两位数据体,或者根据井点数据生成等值线,然后再建三维模型。
你在开始建三维数模模型时首先需要确定你的模型应该采用什么样的网格类型。
目前数值模拟软件常用的网格有正交网格,角点网格,径向网格,非结构化网格(比如PEBI)和动态网格等。
你需要知道这些网格的不同之处及其优缺点:
A:
正交网格
正交网格是最常见网格,也是最早用来描述油藏的网格类型,目前仍然被广泛应用.由于其计算速度快的特点,一些大型油气田经常采用此网格类型.有研究认为正交网格计算结果比其他网格精确.
正交网格的数学描述也比较简单。
以ECLISPE为例,TOPS描述油藏顶部深度,DZ描述油藏每层厚度,DX描述每个网格X方向长度,DY描述每个网格Y方向长度。
B:
角点网格
角点网格的特点是网格的走向可以延着断层线,边界线或尖灭线,也就是说网格可以是扭曲的。
这样角点网格克服了正交网格的不灵活性,可以用来方便地模拟断层,边界,尖灭.但由于角点网格网格之间不正交,这种不正交一方面给传导率计算带来难度,增加模拟计算时间,另一方面也会对结果的精度有影响.
角点网格的数学模型很复杂,必须由前处理软件来生成。
以ECLISPE为例,COORD用来描述模型网格的顶底坐标线(X,Y,Z),ZCORN描述每个网格八个角点的深度。
C:
径向网格
径向网格比较简单,主要用于单井模拟。
径向网格可以更合理的描述井附近流体的径向流动。
D:
非结构网格(PEBI网格)
PEBI网格源于1908年就产生的Voronoi网格.起主要特点是灵活而且正交.PEBI网格体系提供了方便的方法来建立混合网格,比如模型整体采用正交网格,而对断层,井,边界等采用径向,六边型或其他网格.网格间的传达率可以自动计算.PEBI网格的灵活性对模拟直井或水平井的锥进问题非常有用.另外PEBI网格可以用来精确模拟试井问题.还有PEBI网格降低了网格走向对结果的影响.PEBI网格的缺点是矩阵比其他网格要复杂的多,需要更加有效的解法.
E:
动态网格
动态网格是指网格可以随时间而改变.通常用于动态网格加密或动态粗化.比如说在井生产时采用局部加密而当井关闭时则采用正常网格.
有时候建立全油田整体模型后,对于压力及饱和度变化快的区域,常常需要进行局部网格加密.采用局部加密可以准确的描述井附近流体的细微变化。
网格局部网格可以是正交网格,或是径向网格.Aziz认为(JPT1993年)在正交网格中进行正交网格局部加密,有时并不会对结果有改善.他建议采用混合网格,及在正交网格内采用径向网格加密,这样可以精确地模拟含水和气油比的变化规律.
知道了这几种网格类型,那么在你建立模型时应该选择什么网格类型哪?
你在建立网格时又应该注意些什么哪?
A:
在条件许可情况下尽量采用正交网格,而且尽量使网格保持均匀.尽量避免大网格直接连接小网格,这样会带来严重的收敛问题.
如果你的模型很大,最好采用正交网格。
B:
角点网格已经非常成熟,但在建立角点网格时不要过分扭曲网格,要尽量保持模型的正交性。
如果你的边界与你的主断层相对平行,那么建立的网格系统正交性会比较好。
你在建立网格后可以用前处理软件计算模型正交性。
C:
目前PEBI网格在解法上还不成熟,应避免使用.但相信在五年内它会成为主导网格.
D:
使用局部网格加密要小心,最小的网格不能小于井半径.而且局部网格加密部分要覆盖饱和度变化大的网格.如果是水平井,局部网格加密要覆盖水平段。
E:
网格越多模拟结果就越精确的概念是不对的.可以建立单井模型研究多大网格尺寸足够描述地质上的非均质性.
F:
网格走向会影响计算结果.在天然裂缝油气藏,要使网格走向与主裂缝方向一直.
G:
DX/DY应接近于1,不要大于3。
H:
井之间应有不少于三个网格。
I:
模型的属性分布也很重要。
尤其是数模人员自己插值,属性分布经常不合理。
我见过许多模型,井只是穿过单个的网格,井穿过网格的附近却全是死网格,这时模型计算根本不能收敛。
数模人员如果需要自己建模,最好要找地质人员参谋,或者自己有很好的地质背景。
初学者还有几个基本概念需要掌握:
A:
网格的I,J,K
在做模拟时你需要知道每个网格的位置。
模型每个网格的位置用网格的I,J,K表示。
在ECLISPE软件中,左上角的第一个网格为(1,1,1),在X方向的第二个网格为(2,1,1),在Y方向的第二个网格为(1,2,1),在Z方向的第二个网格为(1,1,2)。
其他类推。
B:
死网格
死网格是模型中不参予流动计算的网格。
通常把模型中的泥岩设为死网格。
模型自动会把孔隙度和净厚度为0的网格设为死网格。
如果你的油藏水体很大,你也不需要把水体都建在模型中。
你可以把水体部分设为死网格,然后用解析水体模拟油藏水体的贡献。
C:
在数值模拟模型中如何正确应用有效孔隙度,净毛比?
要明确区分定义.
总孔隙度:
孔隙体积占总体积的百分数。
有效孔隙度:
连通孔隙体积占总体积的百分数。
毛有效孔隙度:
平均有效孔隙度。
(泥质含量截至值)
净有效孔隙度:
产层平均有效孔隙度(渗透率截至值)
净毛比:
净厚度(渗透率截至值)与总厚度之比。
数值模拟模型中要用净有效孔隙度和净毛比,这样模型的体积计算是正确的.
2。
流体参数
地模网-专业的建模技术交流平台!
回复引用收藏分享举报
phytist
石油专家(Rank:
12)
发贴数82
财富431原油
发短消息
当前离线
发表于2007-08-1223:
19:
131#
2。
流体PVT参数
我们前面讲过,数值模拟模型包括黑油模型,组分模型和热采模型。
对不同的模型类型需要用不同的模拟器。
这些模型类型的区别主要就是在流体的PVT描述方面采用的方法不同。
对黑油模型,流体的PVT属性描述方法是你直接给模型提供油,气,水PVT属性表(油气体积系数,粘度,压缩系数随压力的变化;溶解油气比随压力的变化;水在参考压力下的体积系数,压缩系数,粘度;岩石在参考压力下的压缩系数)。
模型在计算过程中对每一个网格,根据当前时间步的网格压力来查你提供的表得到每个网格当前的PVT属性。
组分模型要复杂的多。
你不是提供PVT表,而是提供状态方程(EOS)参数(每个组分的临界温度,临界压力,临界Z因子,分子量,偏心因子等),模型通过闪蒸计算来得到每个网格当前的油气PVT属性(粘度,体积系数,压缩系数,溶解油气比)。
另外水和岩石的属性还需要单独提供。
黑油模型和组分模型都假定油藏的温度在开采过程中是常数,不随时间变化。
如果油藏温度发生了变化,就需要用热采模型。
对热采模型,最重要的流体属性变化是流体粘度随温度的变化,即大家常说的粘温曲线。
那么你的模型应该采用哪种模型类型?
这一方面取决于你拿到的PVT实验报告,如果你的油藏是凝析气藏,挥发油藏,即你的油藏流体组分在生产过程中会发生明显变化,那你应该用组分模型。
另外如果你的油藏将来会考虑注气混相驱,那你也应该用组分模型。
重油热采用热采模型,其他大多数油气藏都可以用黑油模型。
本部分只介绍黑油模型的PVT属性,对组分和热采模型,希望以后有机会再介绍。
对于黑油模型,在PVT部分需要提供的参数包括:
•油,气,水的地面密度或重度。
•油的体积系数,粘度,溶解油气比随压力的变化。
•气的体积系数,粘度随压力的变化。
•参考压力下水的粘度,压缩系数,体积系数。
•参考压力下岩石的压缩系数。
如果你的油藏在不同部位流体属性不同,那你需要提供多个PVT表,每个表对应于模型的某一部分。
在后面的分区部分我还要做详细介绍。
对于黑油模型,根据不同的流体属性,可以分为以下四种类型:
•死油油藏:
油藏在整个开发阶段压力一直保持在泡点压力以上,在油藏中不会发生脱气。
生产油气比是常数(脱气发生在井筒或地面)。
•活油油藏:
油藏在开发阶段压力会降到泡点压力以下,在油藏中发生脱气,溶解油气比降低,生产油气比增加(自由气会生产出来)。
•干气藏:
气藏压力在生产过程中不会穿过露点线,气藏中没有挥发油产生。
•湿气藏:
气藏压力在生产过程中会穿过露点线,气藏中产生挥发油。
对不同的黑油流体,PVT描述方法也不同,比如对死油油藏,溶解油气比(RS)是常数,不随压力变化而变化。
而对活油油藏,RS随压力降低而降低(泡点压力以下)。
在我平时回答大家的问题时我发现许对人下面油的PVT定义不理解或理解的不对:
溶解油气比泡点压力体积系数粘度
0.2754001.131.17/
0.93820001.1621.11/
1.536001.2430.95
40001.2380.95
44001.2330.95
48001.2280.95
52001.2230.95
56001.2180.95/
1.7244001.2540.94
48001.2660.92
52001.260.92
56001.250.92/
许多人问这个表里面为什么有这么多泡点压力,究竟那个是油藏的泡点压力?
油藏应该只有一个泡点压力,怎么会这么多?
为什么有多条未饱和压力曲线?
其实这比较好理解,油藏开发过程类似于实验室的差异分离实验,你把这个表用差异分离实验来理解。
在开发过程中,当压力低于泡点压力后,有溶解气释放出来,RS降低,油藏由未饱和状态进入饱和状态。
这时在饱和状态下油气分离(相当于差异分离实验中将气派出),此时的油应该理解为与原始的油已经不同,如果此时发生压力增加,由于没有气可以溶进去(油气已经分离),油会进入此时(RS)下的未饱和状态。
以上表为例,如果油藏的泡点压力为4400,对应的RS为1.72.当压力由5600下降到4400过程中,油藏在未饱和状态,没有气的析出,RS不变。
当压力低于4400以后,有气体析出,RS降低,假设当RS降到1.5时压力增加,由于此时油气已经分离,没有气能够溶解到油中,在RS=1.5出的油的泡点压力为3600,PVT变化会沿着RS=1.5的曲线变化。
那么在这个表中究竟那个是我们通常意义上的泡点压力?
是不是最后一个?
答案是不是。
ECLIPSE软件泡点压力在初始化部分用RSVD或RBVD定义。
(各个软件不同)。
另外在提供上面这个表时注意压力和溶解油气比要覆盖整个油藏压力和溶解油气比的变化过程,即不要让软件来进行外插,否则模型计算会不收敛。
另外一个重要的问题是在你为模型提供PVT参数时,应该如何用实验室的报告。
你不能直接用实验室的差异分离实验数据,你应该对差异分离实验体积系数数据进行分离器校正。
校正方程为:
Bo=Bod*(Bofb/Bodb)
Bo:
模型体积系数
Bod:
差异分离实验的体积系数
Bofb:
分离器实验的体积系数
Bodb:
差异分离实验泡点压力下的体积系数
溶解油气比校正方程:
Rs=Rsfb-(Rsdb-Rsd)Bofb/Bodb
Rsfb:
分离器溶解油气比
Rsdb:
差异分离实验泡点压力下的溶解油气比
Rsd:
差异分离实验溶解油气比
地模网-专业的建模技术交流平台!
回复引用收藏分享举报
phytist
石油专家(Rank:
12)
发贴数82
财富431原油
发短消息
当前离线
发表于2007-08-1223:
19:
362#
3。
相渗和毛管压力曲线
这部分你需要提供油水,油气相对渗透率和毛管压力曲线。
实验室有时为你提供的是压汞曲线,你需要用界面张力计算出油水,油气相对渗透率和毛管压力曲线。
比如毛管压力转换方程为:
(Pc)res=(Qres/Qlab)×(Pc)lab
(Pc)res:
油藏条件下的毛管压力。
Qres:
油藏流体的界面张力。
Qlab:
试验室流体界面张力。
(Pc)lab:
试验室毛管压力。
通常你提供的都是两相的相对渗透率曲线。
油水相对渗透率曲线是油水两相流动时的相对渗透率,油气相对渗透率是油气两相在束缚水条件下的相对渗透率。
实验室一般不测量油,气,水三相流动时的相对渗透率曲线,你的模型中如果存在三相流动,软件会根据你定义的STONE1或STONE2方法计算三相流动时的相对渗透率。
你提供的油水,油气相对渗透率和毛管压力曲线在模型中起两方面作用。
首先模型应用你提供的油水,油气相对渗透率和毛管压力曲线进行初始化,计算模型初始的油,水,气饱和度和压力分布。
我将在模型初始化部分详细介绍。
另一方面是应用于流动计算。
在你提供的油水,油气两相相对渗透率曲线时要保证两条曲线的端点值要匹配。
在你提供的曲线中有八个端点值,他们是:
束缚水饱和度:
最小含水饱和度
临界含水饱和度:
水开始流动是的含水饱和度
最大含水饱和度:
曲线中含水饱和度的最大值
束缚气饱和度:
最小含气饱和度
临界含气饱和度:
水开始流动是的含气饱和度
最大含气饱和度:
曲线中含气饱和度的最大值
油水两相残余油饱和度:
油水两相曲线中的含油饱和度最小值
油气两相残余油饱和度:
油气两相曲线中的含油饱和度最小值
在你提供的表中,要满足以下端点值一致性:
束缚水饱和度处对应的水相相对渗透率为0
最大含水饱和度对应的油相相对渗透率为0
束缚气饱和度处对应的气相相对渗透率为0
最大含气饱和度对应的油相相对渗透率为0
束缚水饱和度和束缚气饱和度对应的油相相对渗透率相等
最大含气饱和度应该等于1-束缚水饱和度
束缚气饱和度通常为0
模型中应用的通常是驱替毛管压力和相对渗透率曲线,模型初始化肯定需要用驱替曲线。
如果你还想用自吸曲线,你可以用软件的溶湿滞后功能。
如果你有毛管压力的J函数曲线,在模型中你也可以用J函数,这样你的毛管压力大小与你模型的地质属性分布(孔隙度,渗透率)有关。
当然如果你的模型不同区域岩性不同,你可以在不同岩性区赋不同的相对渗透率和毛管压力曲线。
这部分在分区部分我会详细介绍。
地模网-专业的建模技术交流平台!
回复引用收藏分享举报
phytist
石油专家(Rank:
12)
发贴数82
财富431原油
发短消息
当前离线
发表于2007-08-1223:
19:
563#
4。
分区设置
前面我们说了,你的油藏不同部位可能有不同的流体属性,比如不同断块的油密度,粘度不同,或你的油藏岩性在纵向或垂向有变化,那你就需要在你的模型中设置流体或岩性分区。
通常你可以在你的模型中根据需要设置以下几种分区:
储量分区:
如果你想输出模型不同部位的储量,你需要设置储量分区
流体分区:
如果你的模型不同部位流体PVT属性不同,你需要设置流体分区
岩性分区:
如果你的模型不同部位岩性不同,需要用不同的相渗曲线和毛管压力曲线,你需要设置岩性分区。
平衡区分区:
如果你的模型有不同的油水或油气界面,你需要设平衡区分区。
那么软件如何将你的模型分区与你的属性数据关联起来哪?
我们假设你的模型有东西两个断块,两断块被封闭断层分割。
东断块的油比西断块的油密度重,在你提供油藏流体PVT表时你需要提供两个表,一个是密度重的PVT表,另一个是密度轻的PVT表。
在你的分区部分将东断块的流体分区值设为1,将西断块流体分区值设为2。
软件在计算东断块的流体流动时将自动用第一个PVT表(密度重的PVT表),在计算西断块流体流动时用第二个PVT表(密度轻的PVT表)。
5。
模型初始化
模型初始化就是建立在初始状态(油田还未投入开发)下油田压力和饱和度的分布,原始溶解油气比分布,以及初始泡点压力或露点压力分布。
这部分你需要提供的参数包括:
参考点的深度
在此参考点对应的压力
油水界面
油气界面
油水界面和油气界面处的毛管压力
饱和压力(泡点压力或露点压力)随深度变化或溶解油气比随深度变化
参考点深度和对应压力你可以由RFT,DST,MDT测试结果得到。
油气界面和油水界面通常由地质人员提供,数据来源于测井分析。
油水界面和油气界面处的毛管压力是指你提供的界面是自由水面还是油水界面,如果是自由水面,界面处毛管压力为0。
如果你的油藏有多个油水或油气界面,或多个压力系统,则需要进行平衡区分区。
饱和压力(泡点压力或露点压力)随深度变化或溶解油气比随深度变化由流体实验得到。
软件初始化计算的步骤是这样的:
(1)计算过渡带高度。
由油水界面和油气界面深度以及相渗曲线提供的最大毛管压力计算。
(2)计算每一个网格