COMET3软件手册.docx
《COMET3软件手册.docx》由会员分享,可在线阅读,更多相关《COMET3软件手册.docx(21页珍藏版)》请在冰豆网上搜索。
COMET3软件手册
COMET3软件手册
1、应用程序与软件假设条件:
COMET3软件是一个全三维的,三组份,两相、单孔、双孔、或三孔隙度模拟器可以用来模拟受解析作用控制的气水两相流动(煤层气和页岩气储层),该模拟器也可以用于黑油模型的油气系统类型的问题。
对于煤层气的建模和气水生产而言,COMET3软件是以WarrenandRoot的双孔理想化模型为基础。
气水两相流是发生在裂缝或cleatsystem(煤层的割理,煤的内生裂缝系统中)。
裂缝系统是假设为井提供连续流动路径。
气体的通过扩散作用从不连续的基质岩块流入到裂缝系统中。
这两个系统在基质-煤割理面通过解吸作用被耦合在了一起。
对于triple-porosity或dual-permeability模型选项,基质孔隙度和渗透率术语已添加到含气页岩和低级别的“多孔”煤层气通过一个双渗透率网络释放和传输机制的解吸,扩散和达西流建模过程中。
对于传统的双孔隙度,双渗透油气藏(例如,天然裂缝性碳酸盐),也可以关掉解吸/扩散力学选项来建模。
三组份气体吸附功能定义为自由气体和吸附多组份气体混合物(甲烷,氮和二氧化碳)之间的非线性关系,并利用扩展Langmuir等温吸附曲线方程作为的甲烷浓度的函数。
利用COMET3建模,这里有几个独特的功能,这可能会影响天然气产能:
1)孔隙体积压缩率考虑与应力有关的孔隙度与渗透率,2)煤基收缩shrinkage特征)3、气体readsorption,重复吸附作用)4、增强煤层气采收率模型5、carbonsequestration(碳封存)。
此外,在重力作用和水中的溶解气的影响,都经过严格的考虑。
针对多井问题,COMET3利用笛卡尔(XYZ)和径向(R-θ-Z)两套坐标系统进行描述。
单井问题也可以使用笛卡尔或径向几何坐标。
例如,一个单一的垂直裂缝井最好的描述办法是利用一个笛卡尔坐标系中的对称象限模拟。
对于有限或无限导流裂缝,根据有限差分网格和井处理方法也可以得到模拟。
井类型可以是垂直井也可以是水平井。
我们将在在第4节中详细讨论这些选项和其他选项,在第7节的例子中也会对这些问题给予说明。
在COMET3软件中的一个实用的功能是用户可以在指定最大产水量约束和井底压力控制,或最低井底压力约束和产水量控制,这些控制和约束条件之间在comet软件中可以相互切换。
这对于有限的排液能力的煤层气井建模是非常有用的。
在单井(RZ)模型中,可以使用一个全隐式井筒算法,该算法容许定义井筒流液面深度和井口压力或指定的总产水量。
当需要模拟关井状态下的井筒气水续流特征时,此功能非常有用,详细请见7.6节的例子。
虽然主要是为双重或三重的孔隙度模型设计的软件,COMET3软件也可以用于作为一个常规的气水模拟器。
在单一的孔隙率模式,几乎所有的常规天然气藏都可以模拟。
还包括溶解气模型,溶解气模型可以通过指定水中油的属性,用来作为一种通用的3-D气锥模型。
为了使COMET3作为一种通用的模型,在其发展过程中,很少有限制的假设,其使用的基本假设包括以下几点:
(1)、储层或煤层的温度是恒定的。
(2)、在煤层割理中或断裂系统的气体和水的流动是遵循达西定律和相对渗透率定律。
(3)、有限差分网格块内所有的网格块是均质的,但是,从一个网格块到另一个网格块的大小、和吸附时间有可能是不同的。
(4)、在基质和裂缝之间随时都存在拟稳定流动状态。
同时这也是是经典的WarrenandRoot模型的假设,也就是模型中的每一个网格块的浓度是以相同速度下降的。
由于非常接近煤层面与煤层次级节理的特征,对于煤层而言,这个假设是非常合理的。
2、RUNNINGCOMET3(运行comet3模拟器):
2.1ModelExecution(执行模拟)
COMET3批处理命令文件结构如图2-1所示。
第一步是模拟运行是使用comet3编辑器创建一个输入数据文件。
在第3.2节中我们会包含一个SIM卡输入文件。
在任何时候,SIM卡文件都可以通过comet3的编辑器来进行编辑修改。
2.2SimulatorOutput(输入模拟结果文件)
一共有10个文件可以通过模拟器进行输出,见图2-1所示:
概要文件fname.REC当中包含了统计方便的初始流体的储量信息(包括吸附气,游离气,溶解气,总气量和总的水的储量)以及每一层所对应的累积产量和采收率。
fname.SCR文件中包含的信息,会在运行模拟器的时候在屏幕上实时显示出来。
它允许用户在模拟器执行时,查看运行结果。
这些信息可以帮助用户跟踪运行的进度或调试运行。
fname.SCR内容是受数据输入参数KWSCR控制的(3.5节有详细介绍)。
根据KWSCR参数所设置的数字,没有或有一组下列参数的组合,可能会出现在屏幕上。
参数设置
详细描述
STEPNo.
时间步的个数
CUMTIME
累计模拟时间,天
DELT
当前时间步大小,天
I,j,k
网格块(X,Y,Z)或(r,θ,z)
PG
气相在网格块(I,j,k)处的压力,psia
PWF
网格块(I,j,k)处的井底流动压力,psia
SG
网格块(I,j,k)处的气相饱和度
QW
网格块(I,j,k)处的水产量,STB/day
QWT
总产水量,STB/Day
QG
网格块(I,j,k)处的气产量,Mscf/day
QGP
总的气田产气量,Mscf/day
QWP
总的气田产水量,STB/day
MCF
总气田累计产气量,Mscf
BBLS
总气田累计产水量,STB
WHP
井口压力,psia
WL
动液面数据,feet
NEWTNCYCLE
模拟器设置的牛顿迭代数
PGCGITER
预处理广义共轭梯度迭代求解器所使用的个数
DPWMX
网格中最大压力变化数值,psia
DSWMX
网格中最大饱和度变化数值,fraction
M.B.E.Gas
气相物质平衡计算误差
M.B.E.Water
水相物质平衡计算误差
列表文件fname.OUT包含更详细的信息,如当前流体的储量,物质平衡计算误差,压力和饱和度图形、气体浓度和解析率图形等。
ISKIP参数和数组写代码的讨论将在第第3.3和3.5节分别进行详细讨论。
这些代码,连同在周期性质数据(3.18节将详细介绍)中使用的TCHG一起,用于自定义输出文件的大小,或者只在指定的时间内详细输出结果。
输出文件fname.PRD文件在周期性数据中,包含了每个时间步长所对应的总的产量数据,和每个节点组中的每一个时间步的总产量。
这是分析在多井项目中来分析各个单井的特征是非常有用的。
该文件还包含对每口井的每个节点的每个时间步的产量数据。
这个数据对于多层射孔完井的井或者或在任何情况下,穿透多个节点或网格块的井的生产特征分析是非常有用的。
文件fname.GDD,fname.DAM和fname.DAI 这些文件是COMET2类型文件,这些文件是用来进行后处理成图用的,比如压力等值线图、含气饱和度图等。
这些文件可以单独输入到surfer软件中进行成图。
二进制文件fname.RRO包含了重新启动记录,该文件被fname.RST输入数据集所使用。
文件fname.TSS包含一个完整的时间步长,并总结了产量、物质平衡误差和重启记录信息。
文件fname.FLP包含了有限的初始化数据,如PVT,相对渗透率,和等温吸附曲线等在模拟中需要使用的基础数据。
2.3RestartRuns(重启计算)
COMET3软件的2.0版支持重启计算。
此功能允许用户做模拟检查结果,然后继续运行,在模拟结束或在运行中间进行重启计算。
重启计算的一个典型的用途是就是在历史拟合结束后进行未来产量的预测,并可以进行多种敏感性的重启计算,而并不需要从零时间开始重新计算。
当IRST设置为1或2时(见RecurrentData第3.19节),模拟器就可以创建重启记录了。
重启记录只能在recurrentinterrupts(TCHG)中进行创建。
重启记录输出文件对于大的油气藏问题可以是很大的,在这之前,用户必须保证有足够的磁盘空间来存储重启文件。
“重复写”选项(IRST=2),则表示重启记录文件的大小会明显减小,如果选择这种方式的时候,模拟器只保留最后一个重启记录数据,COMET3软件的重启记录是被保存在fname.RRO文件中的。
我们往往是通过comet编辑器方便的创建一个重启文件。
重启文件数据文件可以扩展为*.RST文件,这个类似一个正常的数据文件(SIM卡)。
重新启动运行的数据输入在第3.21-3.27节会进行描述。
用户可以通过菜单运行执行一个重启计算文件,用户可以选择菜单下的restart菜单输入并查看在我们选定的*. RST重启文件。
具体操作见后面章节的重启实例。
3、DESCRIPTIONOFINPUTDATAFILES(描述模拟输入文件):
COMET3软件中一共有有两个输入文件, FNAME.SIM包含所有模拟计算所需的有数据。
FNAME.HIS包含了油气田和油气井的生产动态数据。
用户可以使用comet3软件的后处理编辑器来对历史数据和模拟的拟合数据进行对比分析。
COMET3.SIM所有输入数据读取方式都是使用列表控制的FORTRAN read语句。
因此,生产数据可以以任何形式进行输入,需要注意的就是产量数据只要按照正确的顺序由一个或多个空格隔开即可。
输入文件是通过“header”记录,记录可能包含任何所需的信息。
此外,分隔符号可以提高文件的可读性和文件组织之间的相关性。
这些记录通常由带有一个“C”在第一列,然后,后面用虚线隔开,表明他们是“备注”而并不包含任何数据,这是非常重要的。
一个网格20 gridblocks在x方向的系统可能需要两或三行数据来读所有的网格尺寸,这取决于终端屏幕的宽度,字符大小或数据间距。
必须区分实数和整数数据之间的区别。
整数输入数据一定不包括小数点。
而RealVales是包含有小数点的数据。
实际中RealVales可能不包含小数点也可能包含小数点,但是,为了和输入的整数区别开来,是建议所有实数值均需要包含小数点。
当一个参数不需要在模拟器中使用的时候,它仍然必须输入到模拟器文件中去。
用户应该在不需要输入的参数中输入“0.0”,或”-1“来表示未被使用的小数或整数。
为方便起见,对于数据准备,*.SIM卡文件设置,我们会在第3.1至3.27节的输入记录顺序编号中做详细说明。
3.1、RunIdentificationInformation(运行标识信息)
3.2、MajorOptions(主要选项)
7、MCODE(模型控制关键字):
主要用于控制模拟的相态是否单,双或三孔隙度和单或两种气体组分系统。
详细说明如下:
MCODE=0(单孔-单渗模型-单组份吸附相态);MCODE=1(双孔-单渗-单组份吸附相态);
MCODE=2(三孔-双渗-单相组份吸附相态);MCODE=3(三孔-双渗-单相组份吸附相态)页岩气常用该模型;
MCODE=4(双孔-单渗-两相(CH4-N2)组份吸附相态);
MCODE=5(双孔-单渗-两相(CH4-CO2)组份吸附相态);
MCODE=6(双孔-单渗-三相(CH4-N2-CO2)组份吸附相态);
MCODE=7(双孔-单渗-两相(CH4-H2-CO2)组份吸附相态);
KUNIT:
用于定义系统单位制定:
KUNIT=0(表示输入为英制单位,输出也为英制单位);
KUNIT=1(表示输入为米制单位,输出为米制单位);
KUNIT=2(表示输入为英制单位,输出为米制单位);
KUNIT=3(表示输入为米质单位,输出为英制单位);
KPHASE:
用于定义两相流体系统:
KPHASE=0(表示为气-水两相流体);KPHASE=1(表示为气油两相流体);
KPHASE=2(表示为油-水两相流体);
KSHAPE:
用于定义基质元素的形状因子
KSHAPE=1(圆柱与圆柱的半径基质元素,并用圆柱体的半径a来表示平均裂缝间距)
KSHAPE=2(球状基质元素,用球半径表示平均裂缝间距)
KSHAPE=3(Kazemi提出的板状裂缝储层,也用a表示平均裂缝间距)
KELEV:
(用于定义网格块的海拔数据类型):
KELEV=0(表示:
输入的海拔是相对海平面的,z方向是向上的。
负数意味着输入的海拔参数是低于海平面的)
KELEV=1(表示:
输入的海拔参数是相对于地面的海拔,z方向是向下的)
注意:
如果这里定义了负数的海拔类型的话,那么在后面的气水界面参数输入和网格Z方向深度定义的时候,都是以负数形式表示的:
如果这里定义了正的海拔类型的话,那么在后面的气水界面参数输入和网格Z方向深度定义的时候,都是以正数形式表示的:
KGRAV:
(针对三孔系统设定基质与裂缝系统之间的流体输送类型是否考虑重力的影响
注意:
只有当前面模型选择MCODE=2或3时候,也就是说模型类型选择三孔类型的时候,才会激活该选择,其他类型模型情况下,该选项都是灰色不可选的。
(0=OFF,1=ON)
KRSW:
(溶解气开关选项(0=无气体的溶解度,1=使用表输入,2=使用默认COMET3产生的二氧化碳的溶解度曲线))
IDES:
(气体重复二次吸附开关控制):
IDES=0(表示用户可以选择no-readsorption选项),只有当MCODE=1或3的时候可以选择no-readsorption选项。
其他类型模型的时候,该选项为灰色不可用状态。
IDES=1(表示容许重复吸附作用,但是吸附时间τa(adsorptiontime)不等于解析时间
τd(desorptiontime)。
IDES=2(表示表示容许重复吸附作用,吸附时间τa=解析时间τd)。
只有当MCODE=4或5的时候可选。
KWBA:
(切换为全隐式井筒算法选项)(0=OFF,1=ON)
KAQF:
(开关水体影响功能)(0=OFF,1=ON)
备注:
1、COMET3软件中的单位转换制度
●st–标准状况下;res–储层条件下
2、如果KPHASE=1,说明用户选择了油-气两相流体模型,那么所有的输入水属性的地方必须更换相应的油属性数据。
如果KPHASE=2,即用户选择了油-水两相流模型,然后所有的输入气体性质的数据必须更换成相应的油的属性。
(见第4.15节)。
3、KELEV=1(所有海拔高程都是正数表示)提供了一个简单的方法来输入海拔高程相关数据,以便用于良好的模拟井的瞬态压力。
4、KSHAPE关键字,结合了裂缝间距和解吸时间(见第3.8节),仅用于不同形状的基质元素的扩散系数的计算。
它不影响最终的模拟结果。
5、KGRAV只有在MCODE=2或3的时候才会被激活,如果KGRAV=1,将会考虑重力作用。
(见第4.5节)。
6、关于readsorption(重复二次吸附)选项,软件一共提供了3种不同的选择。
CASE1:
IDES=0,说明任何情况下都不存在重复吸附作用。
只有当MCODE=1-3的时候才会被激活。
CASE2:
IDES=1,说明Readsorption是允许的,但是受表面积的限制。
作出的假设条件是在煤层(页岩)割理的自由气体是均匀分布的。
因此,起到吸附作用的有效的表面积是由于当前的含气饱和度所降低的。
也就是说,起到吸附作用的面积是总表面积乘以割理当中的含气饱和度。
该模型对比了割理压力和与当前天然气浓度有关的平衡压力。
如果气体运动是从割理到基质(即吸附过程),那么天然气流量的降低就和目前的含气饱和度有关。
应该注意的是:
实际上,我们使用了一个比较大的t来描述重复二次吸附作用:
τa=τd/Sg(τa(adsorptiontime)吸附时间、τd(desorptiontime)解析时间)。
τd(desorptiontime):
解析时间(天);τa(adsorptiontime)吸附时间(天);
Sg:
当前含气饱和度;
需要注意的是,上述readsorption方法也适用于两相气体组份系统。
然而,对于两相气体组份模型而言,在上面的描述中,gassaturation应该用在节理中的每一种气体的摩尔分数乘以生产气体的含气饱和度来代替,气体压力要用各个气组份对应的分压力代替,吸附时间也应该用各个气组份对应各自的吸附时间。
CASE3:
IDES=2;容许两相气体组份系统中的每一个组份气体都存在重复吸附作用,吸附时间和解析时间是相等的。
只有当MCODE=4或5的时候才会被激活。
7、全隐式井筒算法(KWBA=1),可以在任意坐标系下中使用(X-Y-Z,R-θ-Z),对单井模拟没有任何限制,KWBA=1情况下,也并不要求需要有不同的周期性数据。
8、需要注意的是KWBA=1,只是激活了全隐式井筒算法,并不能将该功能用于实际井的计算过程,用户还需要定义KWBAW=1(No.133),只有针对每一口井定义了KWBAW=1之后,软件才会在模拟计算的时候,使用到全隐式计算方法。
9、
9、COMET3软件中,一共有3种水体可以用于模拟计算,一种是Hurst稳态水体,另一种是Fetkovich拟稳态水体,最后一种是Carter-Tracy的非稳态水体。
(具体间第3.17节)
3.3、RunControlParameters(模拟运行控制参数)
NMAX:
模拟运行的最大时间步个数;TMAX:
最大的模拟时间(天)
ISKIP:
控制时间步输出的变量。
压力、饱和度、气体组份的分布,油气井产量、和其他时间步长都依赖于打印的每一个ISKIP时间步长。
对于特定的时间段的输出,只有在ISKIP>NMAX的情况下并使用中断条件才能够实现(见RecurrentData,第3.19节)。
IRTMX:
牛顿迭代计算容许的最大时间步(IRTMX=15,是软件缺省设置值)
13.CONVERGENCETOLERANCES&SOLUTIONALGORITHMPARAMETERS(收敛容许误差与求解算法参数)
EPS:
牛顿迭代收敛的压力容许误差,单位psi,kpa.
ESS:
牛顿迭代收敛的饱和度容许误差,单位小数
EYI:
牛顿迭代收敛的甲烷组份容许误差,单位摩尔分数(只有当MCODE=4或5时候才会激活)。
KSOL:
模拟计算方法选择开关,0:
表示广义预处理共轭梯度求解方法(PGCG)。
1:
表示BlockD4求解方法。
IMXSOL:
每一个牛顿循环所容许的PGCG迭代周期允许的最大数量(软件推荐IMXSOL=100)
RESTOL:
PGCG算法的迭代收敛误差(软件推荐RESTOL=1.0E-5)
备注说明:
1、除了NMAX参数以外,模拟器本身运行的时间步长数没有限制。
但是,后处理器(图形包)只能处理一定的时间步长,主要是由于PC机内存的限制。
2、TMAX必须要小于或等于“RecurrentData”中的TCHG关键字设置
3、EPS/ESS/EYI是在牛顿循环迭计算中能容许的压力、饱和度、甲烷组份的最大变化量。
4、我们建议的压力收敛误差范围是EPS=0.1至1.0psia[0.6895~6.895Kpa]。
在某些情况下,一个较低的值(0.01至0.05psia[0.06895~0.3447kpa])可能会要求气相在裂缝中获得比较低的物质平衡误差,然而,即使在这些情况下,压力误差范围从EPS=0.1 psi[0.6895kpa]到EPS=0.01psi[0.06895kpa],油气井的产量的变化量通常不超过0.1%。
因此,即使裂缝中的物质平衡误差比较高(3%~5%),但是井的生产仍然是没有什么影响,因为总气体的物质平衡误差是非常小的。
(即0.1%或更低)。
5、ESS(饱和度收敛误差),一般应设置在0.001。
在某些情况下,还可能需要设置一个更底的值,如0.0001。
6、EYI(甲烷摩尔组份收敛误差),一般应设置在0.001。
在某些情况下,还可能需要设置一个更底的值,如0.0001。
7、为了模拟压力恢复测试,或井的关井生产情况,我们建议使用一个比较小的EPS/ESS和EYI参数。
(EPS=0.001psia[0.006895kPa],ESS=0.0001andEYI=0.0001)。
8、设置EPS,ESS,EYI参数的原则是:
模拟越复杂的问题的时候,就要将EPS,ESS,EYI参数设置的越小。
9、PGCG是一种迭代求解方法,通常情况下,与直接求解法(D4求解法)相对比,该方法需要较少的内存存储和计算工作。
因此,它是特别适用于3–D问题。
然而,由于一个迭代过程的收敛问题取决于用户研究的问题的复杂程度,这种方法的执行时间,有时是不可预测的。
另一方面,在半带宽的雅可比矩阵(导数矩阵)(小于或等于60)的情况下,BLOCKD4(直接求解法),是首选计算方法。
半带宽M定义如下:
1-D:
M=NEQ*2-1
2-D:
M=NEQ*[MIN(NX,NY)+1]-1,forx-yplan
M=NEQ*[MIN(NX,NZ)+1]-1,forr-zgeometryorx-zcross-section
M=NEQ*[MIN(NY,NZ)+1]-1,fory-zcross-section
3-D:
M=NEQ*[MIN(NX*NY,NX*NZ,NY*NZ)+1]-1
NEQ是每一个网格中的变量个数(MCODE=0or1,NEQ=2;MCODE=2or3,NEQ=4;MCODE=4or5,NEQ=3),),NX/NY/NZ表示x,y,z方向上的网格个数。
10、D4求解方法,可以应使用所有的1-D和大多数的2-D问题。
对于3D问题,它取决于用户的判断,在COMET3软件中,因为有限的PC机内存,最大允许使用D4求解的半带宽限制为168个,如果超过168个的限制时,模拟器将自动转换为PGCG求解方法(即KSOL=0),并给出用户一个警告信息。
11、IMXSOL和RESTOL这两个关键字只有当KSOL=0时,即选择PGCG计算方法的时候,才能使用。
对于非常复杂的问题,将IMXSOL增加到200,将RESTOL减小到1.E-6对复杂模型的运行计算是很有用的。
(IMXSOL软件缺省为100,RESTOL软件缺省为1.E-5)
11、当IRTMX和IMXSOL参数超过用户定义的最大数值,软件模拟的时间步就会截断timestepcutback(见3.19节)。
在任何情况下,软件最多容许5次时间步的截断,如果发生了第6次时间步的截断,那么这个时候,软件模拟就会终止。