黑油模型解剖_第1页
黑油模型解剖_第2页
黑油模型解剖_第3页
黑油模型解剖_第4页
黑油模型解剖_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1黑油模型理论基础1.1 基本假设(1)油藏中渗流是等温渗流;(2)油藏中有油、气、水三相,各相流体的渗流均符合达西定律;(3)模型考虑油组分、气组分、水组分三组分;(4)气组分在油气相、水气相之间发生质量交换;(5)相平衡瞬间完成;(6)水组分只存在于水相中,与油气相之间没有质量交换;(7)油藏岩石微可压缩,各向异性;(8)油藏流体可压缩,且考虑渗流过程中重力、毛管力的影响。1.2 数学模型辅助方程:初始条件:so.Sw.Sg=1PcowPcgo二Po-Pw=Pg-Po(1)(2)p(x,y,z,t)|t=p0(x,y,z)&x,y,z,tt=o=sWx,y,zSox,y,z,ty=

2、s0x,y,z边界条件:Qvx,y,z,t=Qv(t)、(x,y,z)Pwf(x,y,z,t)=Pwf(t)6(x,y,z)2黑油模型程序整体结构图3组员及分工姓名负责程序张敏主程序,CGIN,MF1,INTERP,INTPVT高博主程序,TRAN1,SOLMAT,MATBAL,PRTPS郝延征主程序,TABLE,UINIT1,CODES,NODES徐杨主程序,GRID1,PARM1,QRATE4主程序6.1 主程序主要功能(1)定义运算所需数组;(2)需要调用和生成的文件的打开和关闭;(3)通过调用子程序给模型赋基础数据和初始数据;(4)通过调用子程序给模型的运行确定各种控制;(5)在运行过

3、程中反复读入井点数据(包括产量和注入量、井底流压、流动指数等)以及打印输出控制码;(6)分层计算油气水地质储量;(7)进行井点产量项处理和形成压力矩阵;(8)通过调用子程序求解压力方程;(9)显式计算饱和度;(10)进行过泡点处理;(11)根据压力和饱和度增量控制,自动调节计算时间步长;(12)未饱和网格块饱和度计算;(13)变泡点处理;(14)在每一运算时间步末进行物质平衡检验;(15)打印油井、水井、气井的分层报告和分井报告;(16)通过调用子程序进行计算结果打印输出和形成文件;(17)重启动运行方式的选择和重启动文件的生成和调用;(18)运算终止的控制及错误信息的提示。泡点压力初始比PB

4、OTUJM)二PB。是打开文件1关闭文件1闾I;广程,序UINIT1调用子程序UINU1调用了程序匚。DES±7二.十尊OOIP.0W1P,ODGIP.OFGIP再0就,通定期她用力分布.也相度分而、油吗水,i如地旗,福量、分井外层池片水产量(或注入量)、累飘通气水声量f旺汴入量)、再后初起始时间和时也也,以龙泉始恻和用力等.,初升和动出山胞布H定乐租分初确始布度各层的油.气(自由气和溶解三).水的唇妇地或精量计算TOOIP,1QWIP.2lXiiP.TOFGIP全和翱的油、气(白由气和耐解气)、木的原始地哄懒量计算TOR,TGR,TWR,TOC,TGQTWC整个曲山产油、气、水退度

5、,素积产油、气、水性是a1结束5子程序CGIN功能介绍用不完全LU分解预处理共腕梯度法求解压力方程隐式差分得到的大型稀疏线性方程组。理论基础实践表明,预处理共腕梯度型方法无论是适应性还是计算速度,都远远超过了前面的方法。这类算法的优点是迭代收敛速度不依赖于迭代因子的选取,收敛速度极快,应用范围极广,包括化学驱、混相驱、热力驱等复杂模型和各种难以求解的系数矩阵。例如,可以解决传统的共腕梯度法解决不了的非对称矩阵问题及一般算法难以求解的病态系数矩阵。因此,目前这种类型的算法已成为油藏数值模拟中最先进的求解大型线性方程组的方法。这里,黑油模型的子程序CGIN中运用的是将系数矩阵的不完全LU分解和OR

6、THOMIN加速法结合的预处理共腕梯度法。迭代求解的基本原理设有方程组:AX-B(5)并设M为非奇异矩阵,则可以构造迭代公式:MXkt)=:M-AXkB(6)或写成:MXk1=B-AXk(7)式中,&xW)=xW)-x6,表示两次迭代之间的增量。式就是通常所用的迭代公式。如果迭代是收敛的,则当k足够大时,X*kx(k,AX*k0,式就成为(5)。构造迭代方法的关键问题之一是如何选取矩阵M,使之能以最少的迭代次数得到满足要求的解。显然,矩阵M越接近于系数矩阵A,则达到收敛标准所需要的迭代次数越少,但相应的,求解方程(7)所需要的时间就要增加。在前面所讲的简单迭代法中,M为对角矩阵,其元素

7、为矩阵A主对角线上的相应元素,这是构造矩阵M的最简单的方法。高斯-赛德尔迭代法中,矩阵M为矩阵A的下三角部分。在直接解法中,矩阵M为矩阵A本身,这时式(7)完全等价于(5),只要一次迭代就可以求得式(5)的解。在黑油模型的子程序CGIN运用的预处理共腕梯度法中,矩阵M为矩阵A进行不完全LU分解后得到的近似矩阵。矩阵的不完全LU分解把大型矩阵A直接分解成L与U的乘积而进行求解所需要的计算工作量大,而且由于在油藏数值模拟中求解的大多是含有大量零元素的稀疏矩阵,这种分解常使矩阵A中大量本来为零的元素在L+U中变为非零元素,增加了内存占用量。即使是带状矩阵,如果矩阵的阶数很大,在带状区域内,这种由零变

8、为非零元素的数量也仍然很大。因此,在油藏数值模拟中,当线性方程组的阶数很大时,实际上一般不采用高斯消元法或相应的LU分解方法。矩阵的不完全LU分解就是为了解决这一问题而提出的。这种方法可以尽量保持矩阵A原有的稀疏性质,从而节约了内存,减少了计算工作量。充填级次越大,分解后的矩阵就越接近于原矩阵,对于足够大的充填级次,这种不完全LU分解实际上可以等价于矩阵的完全LU分解。而矩阵的零级不完全LU分解的非零元素全部位于原矩阵中非零元素所在的位置上。这里,黑油模型的子程序CGIN中运用的就是系数矩阵A的零级不完全LU分解。ORTHOMIN加速法有了矩阵的不完全LU分解之后,令M=D-ED,D-F(8)

9、式中,-E和-F是矩阵A的严格下三角矩阵和严格上三角矩阵。D是待求解的对角阵。则迭代公式可写成:D-ED'D-FXk1=Rk(9)式中,R)=B-AX(k因此,式(5)的求解过程变为:(D-E)Xi=R(k)(10)D,X2=X1(11)D-F:Xk1)=X2(12)Xk1=XkXk1(13)因为D-E,D,D-F分别为下三角矩阵、对角阵、上三角矩阵,所以上述公式的求解是非常容易的。但是如果没有特殊的加速收敛措施,上述迭代过程的收敛速度非常慢。如果系数矩阵是对称的,则共腕梯度法是一种很有效的加速方法。但是,对于非对称矩阵,常规的共腕梯度法就不能使用了,而在这种方法的基础上发展起来的OR

10、THOMIN方法却能非常有效的解决非对称矩阵的问题。ORTHOMIN方法所采用的加速措施有两个:一是正交化,二是极小化。所谓正交化是指如果把iXt+唐成N维空间的一个向量,则它在N维空间中就确定了一个方向,在大多数迭代方法中,对XC的修正都是沿着该方向进行的。而ORTHOMIN方法不是采用AXU瓶方向作为修正方向,而是以AXC*)与本次迭代以前的各次迭代修正量qS构造一个新的向量qC,1使Mq("巧以前各次迭代的Mq()正交,并以q(«酌方向为本次迭代对X。)的修正方向。而极小化是指在确定了对XC的修正方向q(k*)后,其修正值要再乘上一个4k巧而成为小b”),其中仁产成为

11、极小化因子,它白选取使新的余量|R(k)f”Mq巧之为最小,以保证新的余量不大于(一般是小于)以前的所有余量而加速收敛整个ORTHOMIN方法的迭代过程为:Xk1=M'Rkkqk1=;Xk1-a力igXk1=Xk.k1qk1Rk1=Rk-k1Aqk1其中:)=©1MiMq”MqO一Rf)Mq(力1心=一5、.(19)MqfMqt巧式中,a”的正交化系数,其目的是让所有的Mq(屏正交。实际应用上述方法时,并不需要使Mqt书归以前所有迭代的Mq()都正交。根据式(15),当迭代次数k增加时,每次迭代所需计算的求和项增加,不但增加了工作量,而且增加了计算中的舍入误差。实践表明,只要

12、使Mq”打其前面的有限个(成为NORTH个)Mq()正交就可以了。这样,式(15)可以重新写为:kqk1=,Xk1-'、,aj'qi(20)i士_NORTH其中,NORTH值的选取随研究问题的规模、难易程度及所需要的分解方法而异。例如对于黑油模型,NORTH值以510为宜,而对热采问题,在1015左右为宜。还有一种处理方法不是每次迭代都做NORTH次正交化,而是采取所谓重启动的方式,即在进行了NORTH+1次迭代后,再重新从头开始正交化。这样,在进行了NORTH次迭代后,每次迭代所进行的正NORTH交化次数平均只有次,从而减少了工作量。实际计算表明,前述两种正交化处理方2法在收

13、敛速度上并无明显差异,因此目前大多采用后一种方法。为了将这两种方法加以区别,一般称前一种方法为非重新启动型ORTHOMIN方法,而称后一种处理方法为重新启动型ORTHOMIN方法。最后,将前面介绍的不完全LU分解与ORTHOMIN加速法相结合,就是黑油模型的子程序CGIN中运用的预处理共腕梯度法。这种方法可用于求解常规迭代法难以求解的各种复杂的系数矩阵方程,甚至是病态的系数矩阵方程等。另外,这种方法具有适应性强、计算速度快、收敛速度快等优点,已成为目前油藏数值模拟中求解大型线性方程组的最有效的方法,在许多数值模拟软件中都被广泛应用。主要变量说明A:压力方程七对角系数矩阵;PVEC:网格块压力;

14、QVEC:压力方程右端向量;UL1:系数矩阵下三角最右边的一条对角线,与主对角线紧邻,是与(I,J,K-1)网格块压力有关的系数;UL2:系数矩阵下三角中间的一条对角线,是与(I,J-1,K)网格块压力有关的系数;UL3:系数矩阵下三角最左边的一条对角线,是与(I-1,J,K)网格块压力有关的系数;U1:系数矩阵上三角最左边的一条对角线,与主对角线紧邻,是与(I,J,K+1)网格块压力有关的系数;U2:系数矩阵上三角中间的一条对角线,是与(I,J+1,K)网格块压力有关的系数;U3:系数矩阵上三角最右边的一条对角线,是与(I+1,J,K)网格块压力有关的系数;DE:主对角线;DEE:系数矩阵不

15、完全LU分解中D-1对角元;KNK:共腕梯度法中正交化次数的限定;NMAX:总网格数;NN1:Y方向和Z方向网格数的乘积;NZ:Z方向网格数;EFC:误差限。不完全LU分解预处理共钝梯度法黑油模型的子程序CGIN中运用的不完全LU分解预处理共腕梯度法的迭代过程如下:Xk1=M'Rkkqk1Xk1-'a'"i=k-KNKXk1二Xk.k1qk1Rk1=Rk-k1Aqk1其中,SMR(WaiRi,MRi1k1_RkMRk1AQk1,Qk16子程序MF1功能介绍利用系数矩阵的不完全LU分解,求出两次迭代之间的增量主要变量说明X:两次迭代之间的增量;Y:上一次迭代的残

16、余量;N:总网格数;NN1:Y方向和Z方向网格数的乘积;NZ:Z方向的网格数;DEE:系数矩阵不完全LU分解中D-1对角元。算法说明系数矩阵A的不完全LU分解,M=(D-E)D/(D-F),目的是求X=M/Y,即MXY可分如下几步:(DE)R=Y,(D-E住下三角矩阵;D,S=R,D是对角矩阵;(D-F)X=S,(D-F)是上三角矩阵;7子程序INTERP功能介绍与泡点压力无关的参数插值。主要变量说明INTERP(X,Y,N,XO,YO)X:PVT列表中的压力值;Y:已知的与泡点压力无关的参数;N:PVT列表中压力值的数目;XO:各网格块的压力;YO:待求参数。声明变抗定义数组X(25),Y(25)YO=Yl-lHXO-X(hlB*(Yl)-Ykl)/(XlhX(l-l)8子程序INTPVT功能介绍与泡点压力有关的参数插值主要变量说明INTPVT(BPT,RM,X,Y,N,XO,YO)BPT:泡点压力;RM:斜率;X:PVT列表中的压

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论