用面向对象的程序设计模拟物理系统的方法和程序的制作方法

文档序号:5363642阅读:621来源:国知局
专利名称:用面向对象的程序设计模拟物理系统的方法和程序的制作方法
技术领域
本发明涉及一种用面向对象程序设计模拟物理系统的至少一种特性的方法。一方面,本发明涉及一种模拟流体在物理系统中流动和传输的方法,其包括但不限于至少部分含有烃的形式。此方法特别适用于储层模拟中的并行计算。
储层模拟具有很大的益处,因为其可从储层模型的性能来推定真实含烃储层的性质。储层模拟的典型目的是充足地了解发生在储层中的复杂的化学、物理、和流体流动过程以预测储层的将来性质来最大程度地回收烃。储层模拟通常指储层中流体的流体动力学,但是在更大规模的储层模拟中也指整个的烃系统,其不仅包括储层,而且包括注入井、生产井、地表出油管(flowline)、毗连含水层,和地表处理设备。在这样烃系统中的储层模拟基于流过被模拟的整个烃体系的流体。用变化的精确度来进行计算,这取决于具体模拟研究的需要和所使用模拟软件的性能。
数值模拟的原理是使用计算机数值地求解方程式来描述物理现象。通常地这样的方程式是普通的微分方程和偏微分方程。作为一个数值地求解这样方程的方法,已知的有有限元法、有限差分法、有限容积法等等。不管使用那种方法,将被模型化的物理系统分成单元(一种被称为网格或网的系列),并且在整个模型空间中变化的状态变量由每个单元的一系列值来描述。典型地将每个单元中的储集岩的性质如多孔性和渗透性假定为常数。在单元中在给定点(有时被称作节点)详细说明其他的变量如流体压力和相饱和度。将两个节点间的链接称为“连接”。典型地将在两个单元间的流体流动模拟作沿着它们之间连接的流动。
由于储层模拟能包括许多不同的流体流动环境(例如,多孔岩石、油管、加工设备),一系列单元能包括不同流体环境的多个段。尽管单独的段如生产设备和地表管道段可由单个单元代表,但储层模拟程序时常将这样的段再细分为多个单元。
制定了一系列方程来表示每个单元内的质量、能量、和/或动量的守恒的基本理论,以及单元间质量、能量、和/或动量的运动。这些方程的计数在百万级。对于每个单元,用有限个数的变量值来替代在模型的整个空间内变化的状态变量被称作“离散化”。为了及时地分析现象变化,有必要在离散的时间间隔计算物理量,该间隔称为时间步长,而不用去顾及作为时间的函数的连续变化的条件。因此传输工艺的与时间有关的模拟按时间步长的顺序进行。
在一个时间步长中,在单元间发生各种的传输。通过这种传输,单元可与其它相邻的单元进行质量、动量、或能量的交换。在地下储层的多孔介质中,用Darcy定律来计算质量和动量传输。在井孔中的生产管道中,可使用公知的方法进行质量和动量传输的计算来描述多相湍流。能量可以在运动的流体中对流传输,并可以在储集岩中进行。某些情况下,也要考虑通过辐射进行的能量传输。有时需要考虑在时间步长中,在单元中的化学反应导致质量和能量的产生和消耗。
控制时间步长期间每个单元的行为的方程与质量、动量和能量守恒理论结合起来共同使用来进行传输计算。这些方程可以假设不稳定态或假稳定态传输过程。如果它们假设一个不稳定态过程,可将守恒理论表示为时间步长终了时在单元中的量=时间步长开始时在单元中的量+时间步长中传送至单元的净额+时间步长中单元中产生的净额如果假设是假稳定态,可将守恒理论表示为时间步长中传送至单元的净额+时间步长中单元中产生的净额=0在每一个时间步长,模拟程序必须求解一个或多个矩阵方程,其个数取决于所使用时间步长计算方法的类型。因为矩阵方程很大(至少每个单元一个方程),除了小模型以外迭代地(iteratively)求解它们。
已经提出了各种用于储层模拟的时间步长计算法。两个通常使用的计算法称为“IMPES”和“全隐法”(fullyimplicit)。在源自术语“隐式压力,显式饱和度”的IMPES法中,基于时间步长结束时的压力值和时间步长开始时的饱和度来计算邻近单元间的流动。在IMPES时间步长结束时的压力是相互依赖的并且必须将其同时测定。这种方法称为“隐式的”,因为每个压力都取决于其它的量(例如,在时间步长结束时的其它压力),其仅仅隐式地被得知。基本的步骤是构建矩阵方程,其中仅有压力是隐式的,求解矩阵方程得到压力,然后显式地逐单元使用这些压力来计算饱和度。这样,在及时得到压力后,饱和度被显式更新。计算了饱和度后,可以计算出新的相对渗透率和毛细管压力;这些在下一个时间步长被直接使用。可以将相似的处理用于其它可能的变量如浓度、质量、温度或内能的求解。
全隐法隐式地处理压力和饱和度两者。利用每一时间步长结束时的相压和饱和度来计算流量。流量、压力和饱和度的计算包括用合适的迭代技术对非线性方程的求解。每一次迭代,此方法构建并求解一个矩阵方程,其(压力和饱和度)未知数在迭代过程中改变。由于求解了压力和饱和度,连续使用压力和饱和度的新值来更新这些项。当预定的收敛条件满足后,结束迭代过程。
相对地IMPES每个时间步长消耗较少的计算机时间,但是在一些模拟中其稳定性的限制导致其使用大量的小时间步长。结果计算成本可能很大。全隐法每个时间步长比IMPES消耗更多的计算时间,但是它可以使用更大的时间步长。
在很多储层模拟中,仅一小部分的单元需要隐式计算。已经提出模拟程序来进行IMPES和全隐法计算。当降低每个时间步长的计算成本时,使得利用全隐法的长时间步长变得可能。
关于储层模拟和计算技术的其它信息也可在如下文献中找到(1)美国专利申请序号60/074188(J.W.Watts),题目为″ImprovedProcess for Predicting Behavior of a Subterranean Formation″;(2)Mattax,C.C.和Dalton,R.L.,Reservoir Simulation,Monograph卷13,Society of Petroleum Engineers,1990;(3)Aziz,K.和Settari,A.,Petroleum Reservoir Simulation,Applied Science Publishers Ltd,Barking,Essex,England,1979;(4)D.W.Peaceman,″Fundamentals of Numerical ReservoirSimulation,″Elsevier,New York,1977;(5)J.W.Watts,″Reservoir SimulationPast,Present,andFuture,″SPE 38441 presented at the 1997 SPE Reservoir SimulationSymposium,Dallas,Texas,811 June 1997;和(6)K.T.Lim,D.J.Schiozer,K.Aziz,″A New Approach forResidual and Jacobian Array Construction in ReservoirSimulators,″SPE 28248 presented at the 1994 SPE PetroleumComputer Conference,Dallas,Texas,July 31-August3,1994.
在单机代码中,已经进行了努力以执行变化的储层模拟方法。但是,这样的“通用”模拟系统非常复杂、庞大,这是由于它们被设计成具有一种或多种下述的性能(1)表示多种不同类型的单元(例如,不同的储层区域、井管和地表集储和分布设备、和地表处理设备);(2)使用不同的时间步长计算方法(例如,IMPES,全隐式,顺序隐式,自适应隐式和/或级联法);(3)利用不同的表示储层流体的方式;(4)利用多种计算单元之间的传输的方式;
(5)执行所谓“重质油模型”,其把烃看作由两种组分构成,并且也具有进行组成表示的性能,其中假设烃包含化合物如甲烷、乙烷、丙烷和更重的烃;(6)模拟蒸汽注入或就地燃烧过程,其必须考虑温度随时间的变化,需要能量平衡和相关的计算;(7)利用具体流体性质和传输计算来模拟可混的回收过程;(8)模拟考虑有表面活性剂、聚合物、或其它化学物质注入的烃的回收过程,和这些流体流入储层的流动;(9)模拟互相之间反应、或与储层烃类、储集岩反应的化学物质的注入;和(10)模拟烃和地质沉积物随地质时期的迁移。
大多数储层模拟程序使用所谓的结构网格,其中单元被假设为三维矩形,将其扭曲以尽可能地符合地理特性和流动模式。结构网格不能很好地表示特定的地理特性和模拟位置(modeling situation)。通过使用局部网格加密能部分地克服这个缺陷,其中将所选的单元分成更小的单元和非相邻的连接,其允许在单元间流动,这些单元互相之间物理地邻近但是在数据结构上不相邻。对此问题更有力的解决是利用整个非结构网格提供的灵活性。这需要改造模拟程序存储其数据和进行其计算的方式。
因为在储层模拟中通用的计算需要大量的计算资源,已经提出将模拟模型细分为更小的片段并且在多处理器计算机上进行并行计算。并行计算的主要吸引力是其降低模拟占用时间的能力,理想地n个因式对应n个处理器计算机。并行计算并不理想,这是由于几个因素,包括在线性方程式求解中的递归,各种计算所需的信息传递的相关总开销,并且由于在烃流体的物理过程和特性描述中的不均匀性而加入了不平衡。
过去通用模拟程序使用具有各种连接和单元类型的规则的、结构的单元。这些模拟程序以不同的方式处理这些连接和单元类型,导致无系统的方法和复杂代码。当将局部加密、非相邻连接和并行计算性能加入到这个程序中时,它们将变得特别复杂并且很难使用。这样的程序趋近于无效和不可靠。
对于储层模拟程序在工业上一直都有需要,其能广泛地在并行计算机上利用非结构网格进行多种类型的模拟计算。结果,需要一种降低复杂性并提供计算效率的方法组织并实现模拟计算。


图1B示出具有36个单元的二维无结构的网格的实例。
图2A是与图1A实例相似的三维结构网格系统的简化实例,不同的是如图2B所示部分网格系统被细分为附加的单元。
图3是一个二维的不规则的网格系统的简化实例,其具有在模型内终止的行。
图4示出了一个表示含烃系统的三维示意图,可由使用本发明方法的通用储层模拟器表述。
图5A示出了一个与图1A的实例相似的三维结构网格的简图,其被分为如图5B和5C示出的两个域。
图6概括地示出了面向对象程序设计中的继承概念。
图7概括地示出了面向对象程序设计中的包含(containment)概念。
图8A示出了8-单元模拟模型并且图8B示出了按照图8A的单元和连接的排列。
图9示意地示出单元-组和连接-组的实例,其由图8B的单元和连接制成,能够用于本发明的方法中。
图10示出了五个单元-组类,其派生自单个基类。
图11是一个简图,示出了基于面向对象程序设计理论的连接-组类中的继承关系。
图12是一个简图,示出了本发明所用的四种类型对象的类的关系。
图13A示出了一个二维网格系统,其被细分为编号为100-103的四个域。
图13B示出了可从域100得到的四个单元-组。
图13C示出了图13B域100的单元-组和域101、102和103的单元-组。在域100中的连接计算包括虚线中的单元-组。
图13D示出了域100的单元-组,用箭头表示连接域100内的单元-组的单元的连接-组。
图13E示出了域100的单元-组,其用箭头表示连接域100内的单元-组的单元的连接-组。
图13F示出了域100的单元-组和域101和102的单元-组,用箭头表示连接域101和102的单元-组的单元的连接-组。
图14是一个高级方框图,其示出了并行计算系统的实例,此系统在本发明的实际操作中使用面向对象的程序设计。
附图不是意在排除本发明的由这些具体实施方式
正常和预期修改而得到的其它实施方式。
发明的详细描述本发明提供了一种模拟物理系统的新方法,其由偏微分方程数值地表示。可将此方法用于模拟二-和三-维域,将该域离散成结构网格、非结构网格或两者的组合。此方法也可用在计算近似得到具有超过三维的拓扑结构,如发生在模拟通过裂缝孔隙介质的流体流动。本发明特别适用于模拟其中发生传输现象的物理系统的特性。在本说明书中使用的术语“传输现象”广义地用于包括动量传输(粘性流)、能量传输(热传导、对流和辐射)和质量传输(扩散)。本发明可以广泛地用于不同的领域如物理、岩石鉴定、晶体学、电工学、生物学、数学、流体力学和石油工程学。例如,本发明可用于模拟从储集岩中去除烃,其利用多种补充开采技术,例如但不限于热基开采法如蒸汽驱操作、水驱操作和基于气驱的方法,其可在可混合的和不能混合的的条件下操作。本发明也可用于模拟通过地层的污染物的迁移。本发明特别地适用于非结构网格系统上进行通用储层模拟,并且特别地适用于含烃系统的并行计算机模拟,其不仅能包括储层,而且包括注入井、生产井、地表出油管、毗连含水层,和地表处理设备。
本发明的模拟方法以新的方式存储计算数据和组织计算。本发明基于使用两种类型的利用“面向对象程序设计”理论的软件程序设计“对象”;一种对象包含一组单元,另一对象包含一组连接。本发明可选择地包括附加对象,如含有整个模型的对象和含有整个模型一部分的其它对象。在本发明说明书中对象的四种类型分别是指“单元-组”、“连接-组”、“模型”和“子模型”。
每个单元-组包含全部或基本上全部数据,其需要在其包含的单元上进行计算。这些单元都必须具有某种公共特性。例如,一个单元-组能包含在其上进行全隐式计算的储层单元,而其它单元-组则含有在其上进行IMPES计算的储层单元。
每个连接-组包含全部或基本上全部的为其所含有的连接计算所必需的数据。需以同样的方式计算通过全部的这些连接的流动。非限制的例子包括在一个连接一组中全部连接上使用Darcy’s定律,在另一连接-组中全部连接上使用机械多相湍流计算,并且在另一连接-组中全部连接上使用基于预先定义的水力表格的多相流体流动计算。而且,在连接-组中每个连接应该从在单元-组中的一个单元到在相同单元-组中的另一个单元,或从在单元-组中的一个单元到在特定其它单元-组中的另一个单元。
子模型包含一个或多个单元-组和零个或多个连接-组,其将一个特定的单元-组的单元相互连接或将一个特定单元-组中的单元连接到其它子模型单元-组中的单元上。一个模型含有一个或多个子模型和零个或多个连接-组,其将这些子模型相互连接。
例如,如果模拟模型包括两个单元-组,一个含有IMPES单元和一个含有全隐式单元,该模型可具有至少三个连接-组,如下1.IMPES单元-组中单元之间的连接;2.全隐式单元-组中单元之间的连接;3.IMPES单元-组中单元和全隐式单元-组中单元之间的连接。
模型和子模型对象特别地适用于进行并行模拟计算。
与现有技术的模拟程序(其在单元上迭代进行)相反,本发明的方法在单元-组对象上迭代。在进行本发明的方法的迭代时,每个单元-组对象调用一个合适的迭代方法,其在它的单元上迭代并且在每个单元上进行所需的计算。相似地,以前在连接上迭代进行的计算现在通过在连接-组对象上迭代而进行,每个连接-组调用其方法,其在它的连接上迭代并且在每个连接上进行所需的计算。
每个连接-组对象“知道”(即,有详细信息说明)它所连接的两个单元-组或它将一个单元-组连接到其本身。相似地,每个连接-组的连接知道它所连接的两个单元,一个在第一个单元-组中而另一个在其连接的第二个单元-组(其与第一个相同)中。
单元-组或连接-组对象提供一种以这样的方式用于组织软件的新方法中,其在一个简单、恒定的结构之内正常地进行复杂计算。有很多单元-组和连接-组类型需要进行所需类型的计算。加入新的单元-组和连接-组不会增加程序整个结构的复杂性。进行新的单元-组和连接-组的计算所需的方法被封装在它们的软件“类”中。
模型和子模型对象提供一种方式来组织进行与并行处理相关的具体计算。这些对象使以这样方式进行的并行处理变得可能,其最小化和防止额外带来的复杂性。相对于过去所用的模拟程序,本发明可实际上不损失计算效率而得到其优点。
在进一步详细描述之前,先对构建单元和连接、并行计算和面向对象程序设计的基本理论进行介绍以帮助读者理解本发明。
单元和连接在实施本发明的方法中,将模拟的物理系统细分成多个体积单元。这些单元的数目从低于100到数百万。利用有限差分、有限体积、有限元或相似的方法进行离散化,这些方法基于将模拟的物理系统分成更小的单元。本发明的说明书主要指有限差分法。本领域的普通技术人员能够认识到本发明也能使用有限元法或有限体积法。当应用有限元法时,单元变成有限元,而当应用有限体积时,单元变成有限体积。在此专利中,为了简化描述,使用术语“单元”,但是应该理解如果一个模拟模型使用有限元法,术语“元”将代替用于说明书和权利要求书中的术语“单元”。无论使用什么方法,离散化将偏微分方程减少为代数方程的有限维系统。
在本发明的实际使用中,单元可以是任何几何形状,如平行六面体(或立方体)或六面体(典型地具有四个近似垂直的角边,其可在长度上改变)或四面体、偏菱形、梯形或三角形。网格包括组织在规则的结构模式(图1A示出了一个实例)中的矩形单元。因此结构单元具有相似的形状和相同数目的边或面。最常用的结构网格是笛卡尔坐标系的或极坐标的,其中每个单元在两维上有四条边或在三维上有六个面。网格也包括各种形状的布置在一个不规则的、非结构的模式中的单元,或网格包括一些结构和非结构模式。当其由具有形状、尺寸和一定数目边或面的多边形(三维多面体)组成时,其从一个位置改变为另一个位置(二维非结构网格实例在图1B中示出,下面将进一步讨论细节),则称该网格是灵活的或非结构的。完全非结构的网格可以结合起来假定任何形状。优选但不是必须的全部单元沿其它单元的边界排列,因此避免了单元的任何边与两个其它单元的边相接触。
典型地常规储层模拟模型假定多数的表示储层的单元排布在结构的笛卡尔网格中。图1A示出了储层三维域的常规表示实例。这种表示能够通过一系列索引如(i,j,k)识别每个单元。笛卡尔网格系统的实例在图1A中示出。参照图1A,使用索引系统(i,j,k),单元(3,4,4)可用这种方式在计算机中表示。在笛卡尔的网格上定义的数据可用常规的可用于大多数程序语言的数组表示;本领域的普通技术人员可以用这样数组表示适用于这些单元的数量。例如在单元(i,j,k)的压力在FORTRAN程序设计语言中可以表示为P(I,J,K),其中P是具有适当维数的浮点数组。这种方法具有容易知道单元的邻近单元的方便特性。例如,在每个单元(i,j,k)的六个邻近单元分别是P(I-1,J,K)、P(I+1,J,K)、P(I,J-1,K)、P(I,J+1,K)、P(I,J,K-1)和P(I,J,K+1)。其它单元定义的数值以相同方式处理。
如果流体可以直接传输到两个单元之间,则认为该单元是“连接的”,并且将流体表示为流过它们之间的连接。为这些单元的连接定义数量,正如定义单元本身那样。将数量存储在与包含在与单元定义量相同维数的数组中。例如,在单元(i,j,k)和单元(i+1,j,k)间i-方向可传输性可表示为TI(I,J,K),应理解TI(NI,J,K)(其中NI是i的最大值)实际是不存在的,因为它将单元与模拟模型外的单元相连接。这与设定TI(NI,J,K)=0具有相同的效果。相似地,有j-方向的可传输性,TJ(I,J,K)在单元(i,j,k)和单元(i,j+1,k)间,和k-方向的可传输性,TK(I,J,K)在单元(i,j,k)和单元(i,j,k+1)间;其储存在类似形式中。
在FORTRAN语言中,按照每个索引的允许最大尺寸限定三维数组。例如,当提到P(I,J,K)时,前述讨论的压力数组限定尺寸为P(NI,NJ,NK),其中NI,NJ和NK分别是I,J和K所允许的最大值。FORTRAN在存储器中排列数组元素,以使I值连续的元素彼此相邻,J值连续的元素被NI个元素分开,并且K值连续的元素被NI*NJ个元素分开。P(I,J,K)的值中存储在P数组的第IJK元素上,其中IJK=I+(J-1)*NI+(K-1)*NI*NJ。
虽然结构网格容易使用,但它们在适应储层和井几何的变化时缺乏灵活性并且不能有效地处理储层中岩石和流体物理性质的空间变化。这种不灵活性限制了结构网格所能有效表达的烃系统的类型。已经提出了试图克服这些缺陷的各种改进。例如,常需要对储层一部分详细地表示而对储层其余部分粗略地表示。这可以通过局部加密性能来完成。这是可以实现的所以单元的矩形组由更小单元的网格所代替。例如,参照图2A中示出的粗略网格系统,在间隔(i=3,4,5;j=1,2;k=2,3)的单元可由图2B中所示的更小单元的6×4×6网格来代替。与粗略网格(图2A)相似,这个局部精细网格(图2B)也是结构的。
结构网格在储层中表示“尖灭”或消失的地质层时有困难。图3示出了单元层50至55的两维表示,其中单元层52和53由于尖灭而消失,其在单元层51和54间允许直接地流动。表示尖灭的一种方式是在在模拟网格中对应层也在这些位置消失。当此发生时,在单元间就创建了连接,其正常情况下相互没有通讯。已经提出了模拟程序,其通过通常所述的特别或非-邻近单元间连接来处理这种尖灭的问题。
通常,对包括明显不同的流体流动环境的含烃储层的模拟系统不能方便地通过结构、矩形网格来处理。为了进行这样的模拟,必须提供不同流体环境间的连接。
图4示出了非限制性的包含含烃岩层11的简化的三维含烃系统的示意图,该岩层11被多个井12a至12p(在图中仅示出了一个井12a,通过上覆岩层18进入岩层11)穿透。每个含有管道(未示出)的井提供了地表10和岩层11间的流体窜槽。从岩层11产生的流体经过井12a-p,通过地表集输管线14到达泵单元13a,13b,和13c,再通过其它集输管线15a,15b和15c,进入地表处理设备16a和16b,其为常规的油-水分离器(为了表示简单,在井间和泵间的多条地表集输管线中仅有三条用标号14表示)。从处理设备,油通过管线17a而水通过管线17b用于进一步加工和/或处理。储层模拟包括模拟在岩层11,通过井12a-p,通过地表集输管线14和15a-c和通过泵单元13a-c,和通过处理设备16a和16b的流体流动和组合。
为了进行含烃系统的模拟,模拟典型地假设储层计算处在不稳定的状态并且设备处在假-稳定状态。两个假设之间的不同在于一个时间步长之间通过单元的流体流动的单元体积数目。典型地在储层单元中,在一个时间步长之间进入或流出单元的流体量仅仅是单元体积的一小部分。但是在地表系统中,一个时间步长中很多单元量经过一个单元。结果,表面系统的时间常数的阶比储层的更小。在典型的时间步长期间内地表系统达到有效的稳定状态。
已经提出了将可变化(flexible)的网格用于结构网格无效的情况。非结构网格比结构网格更容易符合流体流动环境广泛地变化,并且因为这个原因已经提出将非结构网格用于模拟含烃系统。
用于本发明的方法和模型中的一种类型的可变化的网格是Voronoi网格。将Voronoi单元定义为空间区,其比接近任何其它节点都更接近其所包含的中心节点,并且Voronoi网格就是由这样的单元制成。每个单元与节点和一系列相邻节点有关。在几何意义上Voronoi网格局部性地正交;也就是说,对于连接在每个边界的两侧上的节点的线来说单元边界是垂直的。由于这个原因,更通常地将Voronoi网格称作垂直对分(PEBI)网格。在一些情况中,矩形网格(笛卡尔网格)是PEBI网格的特别实例。PEBI网格具有表示储层的广泛地几何变化的灵活性,因为能自由地选择节点的位置。由在给定的域中分配节点位置产生PEBI网格,然后以这样的方式产生单元边界,即每个单元含有与该单元所包含的节点位置比与其它节点位置更接近的全部的点。
由于PEBI网格中的节点之间的连接被单元边界垂直地等分,这明显地简化了各向同性渗透性(即,渗透性在各方向都相同,虽然其可以在空间上改变)情形的流动方程的求解。在这种情况下,将这样的网格称为“k-正交的”。对于k-正交的网格,在两个单元之间的传输仅取决于两个单元和它们之间的连接的性质。对于各向异性渗透性,k-正交的条件更复杂,但通常可以形成满足它的网格。即使当这实际上不能操作时,从k-正交得到的偏差通常仍很小。在这种情况下,误差也很小并且不需改变计算。如果从k-正交得到的偏差大,可以使用多点通量近似。当使用多点通量近似时,两单元间的传输取决于这两个单元的性质并还取决于特定相邻单元的性质。为了简明,下述讨论假定k-正交,但是本领域普通技术人员能通过基于本发明的教导将本方法扩展到处理多点通量近似。
图1B示出了二维PEBI网格的实例。点40表示单元节点,实线41表示单元边界,并且连接节点的虚线42表示单元间的连接。典型地,两个节点间的流体流动和其它传输现象被模拟为沿着它们之间连接的流动。如果仅通过三角形构成,通过连接相邻PEBI单元的节点形成网通常被称为Delaunay网。在一个两维的Delaunay网中,将储层分成三角形,其中节点位于三角形的各顶点,这样用三角形添满储层。当经过三角形的各顶点(外心)的圆不含有任何其它的节点在其中时,这样的三角形划分就是一个Delaunay网。在三维中,将储层区域分解成四面体,这样储层体积完全被添满。当经过四面体各顶点(外接球心)的球面不含有任何其它的节点在其中时,这样的三角划分就是一个Delaunay网。为了更详细地描述PEBI网格的产生,参见Palagi,C.L.和Aziz,K.“在储层模拟中PEBI的使用”,在第66届技术年会和展览会,Dallas,TX(1991年10月6-9日)发表的论文第SPE22889页。
在非结构网格上的计算使用基于单元和连接的数据结构。例如参见K.T.Lim,D.J.Schiozer,K.Aziz的论文,“A New Approachfor Residual and Jacobian Array Construction in ReserviorSimulators”,在1994 SPE石油计算机会议,Dallas,Texas,1994年7月31日到8月3日,提出了单元和连接的使用。将压力数组的维数设定为等于单元数,在单元n的压力被写为P(N)。将前述的这三个可传性数组合并成一个单个数组,其维数大到足以包含全部的可传性。伴随这个数组,也必须有两个整数数组指示给定的可传性所连接的两个单元。例如,单元保持它们在前边讨论的结构网格实例中相同的顺序。在新的数据结构中,P(N)对应于P(I,J,K),其中N=I+(J-1)*NI+(K-1)*NI*NJ。如果T(M)对应于TK(I,J,K),那么这两个整数具有值IL(M)=N和IR(M)=N+NI*NJ。
本发明方法和程序是不限于特定维数的模拟。预测程序可以被构造为物理域的一维(1-D),二维(2-D)和三维(3-D)模拟。在储层模拟应用中,1-D模型很少用于储层研究中,这是由于其不能模型面积和垂直扫描。预测置换效率的1-D注气模型不能有效地表示垂直于流动方向的重力影响。但是能将1-D注气模型用于调查储层动态对工艺参数变化的灵敏性和解释实验室置换试验。
当面流模式在储层动态中占主导时,可使用2-D面流体注入模型。例如通常地将平面模型用于比较可能的布井模式或评估平面不均匀性储层对储层动态的影响。当在垂直截面在储层动态中占主导时,能使用2-D截面和径向气体注入模型。例如,通常地将截面或径向模型用于模拟重力占主导的进程,如顶部注气或注气到具有高垂直渗透性的储层中,并且评估垂直不均匀性对储层动态的影响。
可能需要用3-D模型有效地表示复杂储层的几何形状或复杂的流体力学。例如模型可以是包括PEBI网格层的3-D模型,其在石油工业中有时称为2-D。层状的PEBI网格在平面向上是非结构的而在垂直上是结构的(层状的)。层状的3-D网格的结构描述在(1)Heinemann,Z.E.,等人“modeling Reservoir Geometry With Irregular Grids”SPE储层工程,1991年5月和(2)Verma,S.等人“A Control VolumeScheme for Flexible Grids in Reservoir Simulation”SPE37999,SPE Reservoir Simulation Symposium,Dallas,TX,1997年6月。
并行计算为了减少模拟计算所需的时间,可能需要在并行的几个中央处理器单元(CPU)上进行模拟。在单个单元中这些CPU能共享存储器或在连接在网络中的几个CPU每个都有其自己的存储器。这两种类型的系统分别使用所谓的共享存储器和分布式存储器。而且,可将几个多CPU单元连接在网络中,形成混合分布式-共享存储器系统。
不管是共享还是分布式存储器,在模拟计算中必须以相同的方式达到并行性。通常将模型细分的计算单元称作“域”。例如,如果两个CPU可用,在图5A中的网格模型可被分成两个域,如图5B和5C所示。典型地这种划分使所有的域含有尽可能相同数目的单元。在图5A示出的实例中,两个域(图5B和5C)含有恰好相同数目的单元。将各个域分配至两个CPU中的一个,并且每个CPU进行与该域相关的几乎所有的计算。在计算中的某步,域间的数据传输是必要的,并且因此,在CPU之间也是如此。使用了有时被称为“信息传送”来实现这点。在模型中,各个单元被分配到两个域中的一个。在相同域中单元间的各个连接也被分配到那个域中。在不同域中单元间的连接可看作是属于其中一个域、属于两个域或两个都不属于。在本发明中,优选认为域间的连接不属于域但是被两者使用。在任何情况下,域间连接需要不同于域内连接的处理。
面向对象程序设计实现本发明的方法和模型是使用面向对象程序设计(“OOP”)技术实现的。最常用的OOP程序设计语言是Simula,Eiffel,C++,Smalltalk,Objective-C或其变化。但是,本发明的实施不限于特定的OOP语言。OOP的设计是本领域普通技术人员公知的,因而将只做概述。面向对象程序的设计和操作更详细的描述在“What EveryProgrammer Should Know About Object-Oriented Design”,作者Meilir Page-Jones,Dorset House出版,New York,1995。
在面向对象程序中,首要地应注意数据而其次是访问该数据的函数,而不是首要地关心函数而其次是它们所需要的数据。与主要由过程描述的程序(其中对各个过程输入和输出数据)相反(如用FORTRAN或COBOL编写的程序),面向对象程序围绕“对象”组织。对象是数据结构和一系列能访问该数据结构的操作或函数。典型地OOP系统包含大量对象。每种访问数据结构的操作(函数)被称为“方法”。各个对象是“类”的成员。这样一个对象就是类的一个“例子”,其为该类的一个成员。类定义了与对象相关的信息(其数据)和它可以执行的操作(其方法)。OOP使得对象可以模拟真实世界的实体,通过数据表现其特征,而通过使用该数据的可执行的操作表现其行为。这样,对象能模拟具体的事物如储层模拟中的单元和如数这样的抽象概念。对于本发明的目的,OOP的优点来自于三条基本原理封装、多态性和继承。
对象隐藏或封装了它们的数据的内部结构和它们的函数所用的算法。尽管没有暴露实施细节,对象呈现的接口清楚地表明了它们的概要,而没有无关的信息。接口仅允许有限数目的外界和对象之间的交互作用。C++程序设计中,多数这些交互作用包括对象调用方法。通过调用对象的方法,外界能告知对象作一些事,但是对象怎样进行这个动作的细节对外界是不显示的。实际上,对象封装其数据和方法并且对外界隐藏它们。
多态性使封装更进一步。一个软件的部件可以请求另一个部件,而不确切知道那个部件是什么。该部件收到请求并解释它并且根据其变量和数据决定怎样执行此请求。
继承允许开发者再使用已经存在的设计和代码。通过创建对象的新的超类和子类,继承使以前写的程序变宽。新的对象通过用它们与已经存在的对象如何不同来描述,而不需要编写整个新程序来处理新的类型的数据或函数。通用的数据和方法属于“基”类。更特定的类“继承”这些数据和方法并定义它们自己的数据和方法。这些特定的类“派生自”基类。
可用实现三种多边形的类来说明继承的一个例子。例如,多边形可以为三角形、矩形或六边形。参照图6,这三个多边形可用称作多边形20的基类和三个派生的称作三角形21、矩形22和六边形23的三个派生类来实现。在图6中用小三角形说明在其下边的类从其上边的类继承得到。
在这个实例中,多边形可以是三角形、矩形或六边形。不论其是哪种,它都有“面积”和“颜色”。因此,基类多边形包含称为面积和颜色的数据项。所述的三个派生类(三角形、矩形和六边形)从基类继承了这些数据项。而且,与三个派生类相同的方法也可能出现在基类中。例如,基类方法可以定义数据项“面积”和“颜色”,为它们分配存储器并且对其初始化。但是,对于三种多边形中每种的面积计算是不同的,所以每个派生类必须为这个计算提供自己的方法。这样,三角形、矩形和六边形每个都有一个方法称为compute_area,其需要进行计算面积的操作,而不管这些操作是什么。外界可包含例如多边形对象的数组,其中一些是三角形对象,一些是矩形对象而一些是六边形对象。其能通过请求compute_area得到这些对象的各个面积。为了获得特定的多边形面积,外界不必知道其怎么计算出它的面积。实际上,外界不需要知道其为何种类型的多边形。
对象能包含其它的对象。例如,图能包含多边形。参照图7,将图实现为对象,其为一个称为图25类的例子。这个对象可以包含多边形26对象。在图7中,菱形27说明上类的对象图25,包含未定义的数目的下类的对象的多边形26。在这个例子中,允许的多边形对象的数目为零或更多,由于图不必需含有多边形。
对于一个对象,外界是应用程序的更高级代码,其使用对象完成其目的。封装、多态性和继承允许高级代码处理在类型上相似但不相同的对象,就仿佛它们在实际上在类型上是相同的一样。这大大地简化了高级代码,使其比起用过程语言来,能够用来编写执行更复杂操作的代码。单元和连接计算能将在每个时间步长进行的大多数模拟计算分成三大类1.流体和传输性质测定;2.组合一个或多个矩阵方程;和3.求解该矩阵方程。
在单元上定义流体性质并且由此在单元上迭代测定。将传送性质赋予连接,尽管一些能定义在单元上。总的说来,结合在单元和连接上的迭代用来测定传输性质。矩阵方程包含定义在单元上的数量和定义在连接上的数量。因此,它的组合在单元和连接上的迭代的结合来进行。
组合矩阵方程后,必须对其求解。本领域普通技术人员知道有很多方法求解矩阵方程。典型地,这些需要在单元的连接上、在单元上、和有可能在所有的连接上进行迭代。因此,求解需要附加的信息-各个单元的连接列表。列表可以采用不同的形式,例如矩阵的一行上的非对角线系数(off-diagonal coefficient)的索引的列表和各列的列表。无论其列表的形式如何,该列表应当有效地确定各单元之间的连接。单元-组对象和连接-组对象本发明的一个具体实施方式
使用至少两个对象的类,其基于面向对象程序设计的原理进行定义一个类的例子含有一个或多个单元,而另一个类的例子含有一个或多个连接。在其它的具体实施方式
中,也可使用附加对象,例如,但不限于,含有整个模型的对象和/或含有整个模型的一部分的对象。
图8A和8B说明了单元和相关的连接的简化实例。图8A示出了编号为0到7的8个单元的二维表示。单元0、1、4和5表示第一个模拟域的单元并且单元2、3、6和7代表第二个模拟域的单元,其与第一个域相邻。图8B示出了图8A八个单元和在单元间的10个连接。示出了这10个连接(由字母a,b,c,d,e,f,g,h,i和j表示)。每个连接都用正方形和连到该连接所连接的两个单元的线表示。例如,连接“a”表示单元0和单元1之间的连接,连接“g”表示单元0和单元4之间的连接。
图9示出了依照本发明实践,图8B的单元和连接如何成为组的实例。参照图9,单元-组20包含单元0、1、4和5;单元-组21包含单元2、3、6和7。连接-组30含有连接a、g、h和d;连接-组31含有连接b和e;并且连接-组32含有连接c、i、j和f。单元-组20和21由在同一个域中的单元形成。同一域中的连接来形成连接30和32并且形成连接-组31以表示连接第一个域的单元和第二个域的单元的一系列连接。
本发明使用面向对象程序设计理论,其包含各种类型的单元来实施计算。通过指定至少三个特性-其物理类型、其计算方法和其流体表达式(fluid representation)来决定每个单元的类型。
对于储层模拟,每个单元均可为下列非限制性物理类型的实例中的一种
1.储层。这是最普通单元类型。
2.裂缝。这个单元例如可表示裂缝性储层的双孔隙度-双重渗透率。
3.井。在生产井中,流体流动从储层进入这个单元。井包含单个井单元或多井单元。在前者的例子中,从储层进入单元的流体离开单元流到地表集输设备。在后者的例子中,流体从一个井单元流到下一个,直到井单元连接到地表集输设备。从这个井单元,流体进入地表集输设备。
4.管道。管道单元表示管道的一段。这个管道可在地表集输系统,或其可以表示井管道系统,其将采出液传输至地表。
5.分离器。单个流体流动进入分离器,并且有两个或更多的物流离开。典型地分离器将从烃中分离水或从蒸气烃中分离液态烃。
其它类型的单元是可能的并且本发明不限于上边列出的实例。本领域普通技术人员可以开发其它的适于特定的模拟应用单元类型。
图10示出通过方框61、62、63、64和65表示五个类,其基于上述列出的五个单元类,其派生自单个基类(表示为CellGroup 60)。CellGroup 60含有对五个派生类61、62、63、64和65共用的数据和过程。每个派生类(如类61,储层单元组)包含那个类特有的数据和方法。在图10中的三角形66表示作用面向对象程序设计术语的继承。这意味着对于五个派生类(61-65)都相同的数据和方法仅仅需要在基类-CellGroup 60中定义。
必须为每个单元选择计算方法。计算方法的非限定例子包括1.IMPES。
2.全隐式。
可用对于前述五个派生类相同的方式实施计算方法。结果,将计算方法和其所需的数据置于基类-CellGroup 60中。五个派生类(类61-65)中都从CellGroup 60继承计算方法。
根据存在哪些成分、是否包含能量和怎么计算属性来定义单元的流体表达式。一部分模拟模型可以用一系列成分来表示储层流体,而另一部分用第二系列成分来表示。可选择地,在一部分模型而不在另一部分中进行能量平衡计算。对于给定的组件系列,可以以不同的方式计算性质。下面列出非限制的性质计算1.油-水重质油。
2.油-气重质油。
3.气-水重质油。
4.油-气-水重质油。
5.油-水热量的(thermal)。水可以在液相或在气相中(例如蒸汽)。
6.油-气-水热量的。
7.状态方程组合的(compositional)。
8.平衡值组合的。
9.状态方程组合的热量的。
10.平衡值组合的热量的。
象在前边讨论的计算方法,在图10的基类-CellGroup 60中实施流体性质计算。
每个单元-组对象包含从每个单元特性的三大类中的一个选择。例如,假定单元-组对象的物理类型是“井”,其计算方法是“全隐式”,并且其流体表达式使用油-气-水重质油。因此其含有全隐式井单元,其中用组分“油”、“水”和“气”通过重质油计算来测定流体性质。
对于其组成而言上边列出单元-组的前6种类型是特定的,其为六种类型使用的组成。后四种不是特定的;将它们的组成定义为部分模拟模型的输入数据。对于后四种单元-组类型,组成数和它们的含义随单元-组变化,但是必须将它们固定在一个给定的单元-组中。
在前述的例子中,可有5×2×10或100种可能的物理单元类型、计算方法和流体表示法的组合,但是仅需要一个基类和五个派生类实施它们。而且,由于使用了继承,派生类仅需要实施它们特有的特性。
所有的单元组类均源自单一的基类使得可以多态性地处理它们。例如,在C++中,含有单元-组的高级代码可以通过指针数组使其访问基类-CellGroup 60。这允许高级代码使用对象而不用知道它们是什么特定种类的单元-组。
假定使用多单元-组对象,也要使用多连接-组对象。必须将在模拟模型中每个连接都放在连接-组的一个中。各个连接-组连接两个单元-组或一个单元-组与它自己。每个连接-组进行某种类型的传输计算。连接-组的各个类型仅与某种类型单元-组相连接。例如,由一个多相湍流连接连接两个储层单元是不对的。另外,可将给定类型的连接-组连接几种类型的单元-组上。例如,一个多相湍流连接可将井单元-组连接至地表集输单元-组上,将地表集输单元-组与其自己相连,或将地表集输单元-组和分离器单元-组相连。
通过指定至少三种属性来决定每个连接-组类型(1)其如何计算流体传输,(2)其所连接的单元-组的计算类型,和(3)其是否连接在利用不同组件设置的单元-组上。
如何计算出传输的基础的非限制性实例如下,全部涉及物理单元类型1.使用表格查阅法的没有滞后的Darcy定律。例如适用于在储层中单元间的流动。
2.使用表格查阅法的没有滞后(hysteresis)的Darcy定律。例如适用于在储层中单元间的流动。
3.使用幂律方程的Darcy定律。例如适用于在储层中单元间的流动。
4.裂缝至裂缝流动。
5.储层至裂缝流动。
6.机械多相湍流。例如适用于井至井,井至管道,管道至管道和管道至分离器的流动。
7.用表格计算的多相流动。例如适用于井至井,井至管道,管道至管道和管道至分离器的流动。
8.储层至井流动。
9.裂缝至井流动。
相连的单元-组的计算类型的非限定性实例包括1.IMPES-IMPES。
2.全隐式-全隐式。
3.IMPES-全隐式。
基于用于连接的单元-组中的流体表达式,在单元-组中的流体表达式可表示如下1.用于两个单元-组中相同流体的表达式;或2.用于两个单元-组中不同流体的表达式。
图11图解地说明了为实施前面所列出的九种物理单元类型的九种流动可能性所需的类和所得到的这些类的继承关系。在图11中用框70表示的并称为ConnGroup的基类可以包含用于下述三个类的共用数据并执行共用函数1.全部储层-储层,储层-裂缝和裂缝-裂缝流动。称这为ResResConnGrop类,其在图11用框71表示。
2.储层-井和裂缝-井流动。称这为ResWellConnGroup类,其用框72表示。
3.在设备网络中流动。称这为FacFacConnGroup类,用框73表示。
参照图11,需要ResResConnGrop(框71)的三种形式;一种形式进行全隐式-全隐式计算(框74),另一种进行IMPES-IMPES计算(框75),和再一个进行IMPES-全隐式计算(框76)。ResWellConnGroup类(框72)需要两种形式全隐式-全隐式(框77)和IMPES-全隐式(框78)。在设备网络中(框73),只进行全隐式计算,这是由于IMPES方法的稳定性限制。结果,FacFacConnGroup类仅需要隐式-隐式形式。三角形80、81和82说明下面的类继承上面的类。
而且,如果计算热效应,必须进行能量传输计算。可将能量的对流看作是与质量对流相似。因为能量也能通过传导来传输,如果需要也可包含传导计算,特别是对于那些储层内的连接类型。在其它的连接类型中,对流能量传输占优势并且包括传导计算是不实际的。对流能量传输通常被认为非常类似于对流质量传输,不必单独处理。需要将传导能量传输分开处理,由此上述列出的九种传输计算类型的每一种原则上都需要进行传导计算;但是实际上,通常地仅在储层中需要进行传导计算。
本发明的方法也包括考虑化学反应的计算。在没有化学反应的情况下,质量守恒意味着化合物守恒。在有化学反应的情况下,由于可生成和破坏化合物,质量守恒意味着元素的守恒。化学反应也产生或消耗能量。包含化学反应不会改变本发明的方法。其仅有的影响是加入新型的单元-组和连接-组,本领域普通技术人员在基于本说明书的教导下可进行这样的加入。
本发明前面的说明中,仅使用了两个对象类型单元-组和连接-组。在本发明的另一个具体实施方案中,本方法也可以包含一个或多个子模型对象和一个或多个模型对象。将这些对象作为单元-组和连接-组的容器。子模型对象含有一个或多个单元-组对象和零个或多个连接-组对象。子模型中任何连接-组使一个子模型单元-组中的单元和相同单元-组中的其它单元相连,或使一个子模型单元-组中的单元和其它子模型单元-组中的单元相连。一个模型对象含有一个或多个子模型对象和零个或多个连接-组对象,该连接组对象的每一个均使模型的一个子模型的一个单元-组和模型的另一个子模型中的一个单元-组相连。在子模型内部的连接-组对于模型来说是不可见的。
图12为简化示意图,其图示了称为Model 85、SubModel 86、CellGroup 87和ConnGroup 88的类的包含关系。菱形符号89、90、91和92表示在面向对象程序设计中所使用的术语“包含”。参照图12,Model 85含有一个或多个SubModel 86。如果仅有一个SubModel86,将没有Model 85直接包含的ConnGroup 88。如果有两个或更多SubModel 86,并且它们之间有连接,模型85将含有一个或多个ConnGroup 88。每个SubModel 86将至少含有一个CellGroup 87。SubModel 86不需要含有任何ConnGroup 88。
图13A说明了被分成四个空间域100、101、102和103的物理域。每个域含有单元和连接数据。在储层模拟方程的公式制定中,制作了三种计算的基本类型只有单元、只有连接和单元-连接-单元。只有单元和只有连接的计算是自给的(self-contained)的并且可以不共享信息而并行执行。沿着两个域之间边界的单元-连接-单元计算需要两个域的信息。例如,一个单元到另一个连接的单元的压力差是连接量并且可按如下计算dp(连接)=p(″左″单元)-p(″右″单元)需要连接两侧的单元数据,所以这是单元-连接-单元计算。给连接指定“左”和“右”侧。指定从左向右的流动为正。象这样的单元-连接-单元计算可通过在连接-组的连接中迭代而方便地进行。如果连接的一侧的单元数据不包含在当前域中,则该单元数据必须得自相邻的域。
因为包含在计算中仅有的单元是相连的两个,前面一段中的讨论假定K-正交网格。如果使用多点通量近似,能将其它邻近单元包括在计算内。连接-组必须知道对于其每个连接来说这些其它的邻近单元是什么,和其必须包含的其它信息。在本专利的教导下,本领域的普通技术人员将会熟悉那些为包含这种附加信息所需的对本发明的扩展。这样的扩展引入了连接可以包含超过两个单元-组的可能性。这意味着,对于包含在一种连接计算中的各个特有系列的单元组,可以有至少一个的多点通量近似连接组,而不是对于每个对连接的单元组均有至少一个连接组。
基于这些需要,可将域分为单元数据和连接数据的组。某种连接的计算需要邻近域的单元信息。对于图13A中示出的实例而言,假定仅在域100和101,100和102,101和102,102和103之间有连接,但是在域100和103之间和域102和101之间没有单元连接。
在一个域内,将单元和连接划分进不同的单元-组中。单元组由对于特定系列的域的连接计算所涉及的全部单元组成。可将域100划分进四个单元-组100a、100b、100c和100d中,其在图13B中表示出。例如在域100中,单元-组100a是仅连接于其它域100的单元的所有的单元的集合。单元组100b是仅连接于域101的单元的所有的单元的集合。单元组100c是一系列仅连接于域102的单元的所有单元的集合。单元组100d是连接于域101和102的所有单元的集合。一个单元只属于一个单元-组。图1 3C表示对于四个域100、101、102和103的四个单元组(域100的单元-组100a、100b、100c、100d;域101的单元-组101a、101b、101c、101d;域102的单元-组102a、102b、102c、102d;和域103的单元-组103a、103b、103c、103d)。在域100中的连接计算包括全部域100的单元-组和域101和102的一些单元-组。对于域100的单元-组示出在图13C的虚线110中。
为了进行域内连接的计算,将连接划分进一系列连接-组。对于与特定域相关的各个单元-组,有相应的连接-组将单元-组中的单元连接至相同单元-组中的(假定存在这样的连接)其它单元。对于域100,这些可在图13D中用箭头200、201、202、和203表示。
其它连接-组连接一个单元-组的单元和其它单元-组的单元,其在图13E中用箭头204、205、206和207表示。
另一些连接-组连接一个域的单元-组和另一个域的单元-组。如在图13F中用箭头表示,将域100的单元-组100b和101d连接至域101的单元-组101b和101d,其由箭头208和209表示并且将域100的单元-组100c和100d连接至域102的单元-组102c和102d,其由箭头211和210表示。
图13A的整个网格表示域可由图12中的Model 85表示。Model85含有四个SubModel86,每一个表示四个域中的一个(100、101、102和103)。Model85还含有八个ConnGroups88两个将域100连接至域101,两个将域100连接至域102,两个将域101连接至域103,和两个将域102连接至域103。每个SubModel86含有四个CellGroup。对于域100,将这些子组示出在图13B中。组100a中单元仅与域100中的其它单元连接,组100b中单元与域101中的单元和域100的单元相连,组100c中单元与域102中的单元和域100的单元相连,和组100d中单元与域101和102中的单元和域100的单元相连。在组100b、100c和100d中单元是那些域101和/或102需要其数据的组。域100需要域101和102中相似的单元-组的数据。这些是图13F中阴影区域。
图14图示本发明操作的硬件和软件系统。此系统包括一个或多个计算单元200和201,显示终端203,和非易失性数据储存装置204。每个计算单元包括两个易失性存储装置205和206,典型地为随机存储器(RAM),为面向对象程序207,现役数据和中间结果(将其安装在两个计算部件205和206中)提供工作存储,和一个或多个中央处理器(CPU)以执行一个或多个域的计算。为了图示的目的,对于计算单元200仅示出了两个计算域208和209并且对于计算单元201示出了两个计算域210和211。在图14中,示出了与计算单元200相关的两个CPU217和218,和与计算单元201相关的两个CPU219和220。计算单元200和201可为大型计算机、小型计算机、工作站或个人计算机。当本发明中使用超过一个计算单元时,通过高速连接将计算部件连接在一起,其在图14中符号地表示为编号225的连接。非易失性数据存储装置204用于面向对象程序207和数据的永久储存。其正常地包括直接存取存储装置(DASD),并且其可包括磁带机,可擦写光盘驱动器,或其它已知设备。显示终端203可包括屏幕或其它显示器,和键盘。
本发明能以软件或软硬件组合来实施。当实施全部或部分软件时,发明能永久地或暂时地驻留于任何存储器或存储介质上,包括但不限于RAM、只读存储器(ROM)、一个或多个磁盘、特定应用集成电路(ASIC)、可编程只读存储器,等等。
已经描述了本发明的原理和应用该原理的最佳方式。明显地本领域普通技术人员可对上述具体实施方式
进行各种改变而不背离在下列权利要求中本发明的精神和范围。因此,可以理解本发明不限于所述明和描述的特定细节。
权利要求
1.一个使用面向对象程序来预测含流体的物理系统中至少一种流体的性质的方法,所述方法包括制定模拟对象的类,所述模拟对象的类包括单元-组类和连接-组类,并且在计算机上运行该程序以确定该物理系统中至少一种流体的作为时间的函数的性质。
2.权利要求1的方法,其中物理体系包括含烃的地下岩层。
3.权利要求1的方法,其中物理体系包括与来自地下含烃岩层的烃的生产相关的含流体装置。
4.权利要求1的方法,其中物理体系由单个模型对象表示。
5.权利要求4的方法,其中物理体系由多个子模型对象表示,每个子模型对象表示一部分的物理体系。
6.权利要求1的方法,其中单元-组的全部单元具有共同的性质。
7.权利要求1的方法,其中相同地处理对于连接-组的全部连接的所有传输现象。
8.权利要求1的方法,其中将物理体系分成多个域并且程序包括单元-组对象和与每个域中单元和连接相关的连接-组对象,和与一个域的单元与另一个域的单元之间的连接相关的连接-组对象。
9.权利要求1的方法,其中单元在非结构网格中。
10.权利要求1的方法,其中多个单元中的单元仅属于一个单元-组对象。
11.权利要求1的方法,其中单元是PEBI网格单元。
12.权利要求1的方法,其中单元是三维的。
13.权利要求1的方法,其中单元的网格是平面上非结构和垂直上结构的。
14.权利要求1的方法,其中进一步包括在连接在一起的多个计算单元上运行程序。
15.权利要求1的方法,其中进一步包括使用多个CPU在多个域上运行程序。
16.一种使用面向对象程序来模拟复杂系统特性的方法,包括步骤a)将物理系统离散化为多个体积单元;b)产生多个表示单元对单元传输现象的连接;c)产生多个对象来定义该复杂的系统,所述的对象包含单元-组和连接-组;和d)在面向对象模拟程序中使用对象来模拟复杂体系的一个特性。
17.一种在含烃储层和与其相关的井和设备中模拟流体流动的方法,所述的方法包括a)将物理体系离散化为多个体积单元;b)根据所选择的单元特性将所述的体积单元形成组;c)构造一个与各组单元相关的单元-组对象,所述的单元-组对象含有与其相关的一组单元所需的信息;d)定义在其中各对单元之间的流体可以流动且能量可以传输的连接;e)汇集一系列控制在该连接中各对单元之间流体流动和能量传输的方程;f)将所述的各对单元间的连接形成组,各组均连接一对单元-组对象;g)构造一个与各组连接相关的连接-组对象,所述连接组对象包含与其相关的各组连接所需的信息;h)用所述的单元组-对象和连接组-对象模拟流体流动和能量传输,来计算各单元所含流体的性质并计算通过该连接的流体的流动和能量的传输;和i)使用步骤(h)的模拟结果来模拟含烃储层和与其相关的井和装置之中的流体流动。
18.权利要求17的方法,其中单元是PEBI网格单元。
19.权利要求17的方法,其中单元是三维的。
20.权利要求17的方法,其中单元形成了一种平面上非结构而垂直上结构的网格。
21.一种模拟在含烃储层及其相关的井和装置中流体流动的方法,所述方法包括a)将物理系统离散为多个体积单元;b)将所述体积单元形成域;c)根据所选择的单元特征,将各个域中的体积单元形成组;d)构造一个与各组单元相关的单元-组对象,所述单元-组对象包含与其相关的各组单元所需的信息;e)定义在其中各对单元之间的流体可以流动且能量可以传输的连接;f)汇集一系列控制在该连接中各对单元之间流体流动和能量传输的方程;g)将所述的各对单元间的连接形成组,各组均连接一对单元-组对象;h)构造一个与各组连接相关的连接-组对象,所述连接-组对象包含与其相关的各组连接所需的信息;i)构造一个与各体积单元域相关的子模型对象,所述子模型对象包含属于该域的单元-组和连接-组,该连接-组(1)将属于该域的特定单元-组的单元连接至相同组的其它单元,或(2)将属于该域的特定单元-组的单元连接至属于该域的其它单元-组的单元上;j)构造一个模型对象,其包含(1)所述的子模型对象和(2)将特定子模型对象的单元连接至其它子模型对象的单元上的连接-组对象;k)用所述的单元-组,连接-组,子模型和模型对象模拟流体流动和能量传输,来计算所含在各单元中流体的性质,并计算通过连接的流体的流动和能量的传输;和l)使用步骤(k)的模拟结果来模拟含烃储层及与其相连的井和装备中的流体流动。
22.权利要求21的方法,其中单元是PEBI网格单元。
23.权利要求22的方法,其中单元的网格是平面上非结构和垂直上结构的。
24.权利要求22的方法,其中单元是三维的。
25.一种模拟在含流体的物理系统中的至少一种流体的随时间变化性质的计算机实现方法,包括步骤a)在计算机的存储器中接收和存储一系列对象,至少一些对象表示多个单元-组和多个连接-组;b)对于特定的模拟时间段中,在模拟器中使用所述对象来模拟该特理系统中至少一种流体的性质;和c)生成表示该随时间变化的性质的值的输出数据。
26.一种有形地表现计算机可执行指令的程序的计算机可读取介质,用来执行一种使用面向对象的程序设计来预测含流体的物理系统的至少一种流体的性质的方法,所述方法包含单元-组对象和连接-组对象。
27.权利要求26的计算机可读取介质,其中所述介质包括RAM、ROM、磁盘、ASIC和PROM中的至少一种。
28.用于执行使用面向对象程序预测含流体的物理系统的至少一种性质的模拟的计算机系统,该系统包括a)中央处理器(CPU);b)用户接口,其包括帮助用户选择工作时间模拟参数的装置;c)用于存储数据和面向对象程序代码的存储库,与CPU一起来简化存储于其中的程序代码的执行,该存储库存储一系列的对象和该面向对象的程序,所述对象包含多个单元-组和多个连接-组;和d)使用所述的一系列对象,来执行预测至少一种流体的性质的模拟的装置。
29.权利要求28的系统,其中该一系列模拟对象被组织成类。
30.权利要求29的系统,其中所述的类包含模型和一个或多个子模型。
31.权利要求30的系统,其中所述的类还包含一个或多个单元-组和一个或多个连接-组。
全文摘要
本发明涉及一种面向对象的方法,其用来模拟在含有流体的物理体系(图4,11)中至少一种流体的性质,其中由多个体积单元和多个单元间的连接表示物理体系。此方法在模拟中使用单元-组对象(图12,87)和连接-组对象(图12,88)。本发明能可选择地包括额外的对象,如含有整体模拟模型的对象和包含部分整体模型的其它对象。
文档编号E21B43/00GK1415090SQ00817849
公开日2003年4月30日 申请日期2000年11月21日 优先权日1999年12月3日
发明者J·W·瓦茨三世, G·O·小莫雷尔 申请人:埃克森美孚上游研究公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1