CMG组分模块GEM教程.docx
《CMG组分模块GEM教程.docx》由会员分享,可在线阅读,更多相关《CMG组分模块GEM教程.docx(13页珍藏版)》请在冰豆网上搜索。
![CMG组分模块GEM教程.docx](https://file1.bdocx.com/fileroot1/2022-11/29/11a1f0f3-198e-42d4-a4c1-f227402d10bb/11a1f0f3-198e-42d4-a4c1-f227402d10bb1.gif)
CMG组分模块GEM教程
CMG组分模块GEM教程
1GEM概述
在提市采收率项目,包括济气或济溶解剂中,蓁过程可以混相或者非混相,它取决于入流和油臧压略和温度。
例如,富气驱、高气驱、CO2驱和凝析气臧的循环注气。
其模拟需根热力学和流体流动的特殊处理。
GEM就是一有效的多维状态方程组分模拟器全部相注气的重根机理,即油的蒸发和膨胀、气凝析、粘度和界面张力降低,通过多次接触形成混相溶解剂段塞。
自适应隐式公式、全隐式自应隐式三种运行。
在大多数情形下,只有很少量的网格需根全隐式求解。
大多数网格可以显式求解。
自适应隐式方法在计算中动态选择网格的隐式度,它对于井筒附近的锥进,或非常薄层的状油臧非常用。
使用自适应隐式方式,可以比隐式节约三分之一到一半的时间,而时间不步可以和全部隐式方法一样长。
用户选择全隐式格块,GEM然后进一步动态择隐式格块。
双孔隙度/双渗透率
双孔模型将裂缝油藏的孔隙空间分为两部分:
主孔隙和次孔隙。
主孔隙(基岩)表示岩块基质中小的粒间孔隙,次孔隙(裂缝)、结点、孔洞组成。
双孔模型以一个油藏体积两种介质表示为特征。
具有较大存贮性的裂缝,是流体流动的主要通道,而基质则为存贮空间。
在GEM中,可指定单的双孔模型。
每个单元都分一基质和缝形状因子。
在这种情况下,基质和裂缝之间的交换项处于半稳态流动。
除双孔模型以外,还可指定双渗模型,该模型假定相邻基岩块之一间存在流体流动。
在基质、基质之间质量交换不能忽略的情况下有用,例如气油重力驱占主要地位的情况。
状态方程
GEM使用Peng—Robinon或Soave—Redlich—Kwong状态方程预测油相和气相的平衡组成和密度,应用Joi和Thodo方程预测油和气的粘度。
闪蒸计算
拟牛顿逐次换法QNSS用于求解闪蒸计算的非线方程,以Gibb能量分析为基础的稳定性测试监测单相状态。
复杂油藏
油藏定义关键字用来描述油藏,网格可以是可变厚度一可变深度型,也可以是角点类型,断层也是可以定义的,可支持笛卡尔坐标和径向网格。
拟组分选择
拟组分(流动组分)可有效模拟一次接触混相过程和其它单相流体系统。
全隐式井
井可以完善的方式求解,井底流压和完井段的格块变量以全隐式方式求解。
如果完井段不止一个层,其井底流压以完全对耦的方法求职解,即考虑所有完井段。
这个可以解决典型层状油藏中多完井段的收敛问题。
而且在GEM中,复杂的井控制性能是千变万化的。
可输入各种约束条件(最大井底或井口压力、最小井底和井口压力、最大产量、最大气油比、最小气油比等)。
当违反其中一条约束条件时,用户可指定另一新的约束条件。
气循环选择允许对组分进行剥离,可附加补充气到循环气流中。
矩阵求解法
GEM使用AIMSOL,它是一优秀的线性求解程序,基于不完全高斯消去法。
AIMSOL尤其针对自适隐式雅可比矩阵而开发。
油藏初始比
初使油藏条件可给定气油和油水界面深度。
流体组成可随深度而改变,油藏温度也可随深度呈线性变化。
水区模型
水层可以另增加仅有水的边界单元,或使用Carter—Tracy不层模型模拟。
前者用于水体大小和位置已知,而附加的水体网格又相对小的情况。
后者一般用于不体较大或未知,希望近似计算水侵量,而附加水体网格不可行的情况。
单位:
SI或矿场单位模拟结果文件
GEM产生SRF格式,第二代模拟结果文件某IRF和某MRF文件。
结果文件可用于二维和三维可视化软件,也可用于动态曲线图输出。
如果希望重启,需要其它几个存在的文件,同时产生另外三个文件,如下:
关键字输入部分数据组a)七个不同组
b)数据组应遵循确定的顺序I/O控制油藏描述组分特性
岩石一流体数据初始条件控制
井数据和循环数据怎样建立数据文件注释a)某TITLE1b)某TITLE2c)某TITLE3d)CASEID
这四个关键字都必须在输入/输出控制部分。
这四个关键字是可选的,并可以去掉。
但是,它们对于辩别不同数据文件很有用。
至少应使用一行标题。
全部标题和标识必须包含在单引号之内。
TITLE1和CASEID均在模拟结果文件中使用,该文件用来产生模拟图形。
某TITLE1可以有40个字符,某TITLE2和某TITLE3每个可有80个字符。
某CASEID最多少个字符。
也可使用两个关键字标识符即‘某某’插入注释,注释可以出现在数据文件任何地方。
例:
某TITLE1
‘SimulationRun#1—1989—01—23’某TITLE2
‘DualporoityproblemuingMINCoption’某TITLE3
‘Thiia12某12某10Catteiangridytem'某CASEID'Runl'某某注释部分怎样重启
什么是重启文件
重启文件是一个二进制文件,初始数据和主要变量按用户指明频率写入,写重启文件是可选择的.为什么需要重启?
有以下几点理由:
a)做敏感性分析或历史模拟b)修改井定义
c)在运行一大的长作业之前,做一短的模拟运行,看结果是否满意。
d)随意运行后的运行中节约运行时间。
例如,当完成一模拟运行且初步结果盾起来不错,则需做预测运行。
因为已经由前次运行创建一重启文件,则可以选取一中间时间步重启运行。
模拟器不需从初始日期启运行,可以在选择的时间步继续运行。
怎样做一重启?
重启记录是可选的。
如果需要做重启运行,则要在前次运行时产生。
使用某WRST划某RESTART创建重启文件,它们必须位于输入/输出控制部分。
然而,当井工作制度改变时某WRST可出现在井数据部分,某WRST指示写重启记录的频率。
某RESTART表示当前值,否则,输入时间步数。
例:
某RESTART30当做重启时:
a)不改变原始油藏数据,但在输入/输出控制部分加一某RESTART关键字。
b)增加最大时间步数,如果必要删除某MA某STEPS。
c)需要附加输入文件:
输入重启文件和输入模拟结果文件。
这些文件在前次运行期间产生
d)需要新的一组输出文件名。
控制输出打印文件内容
控制输出打印文件内容,使用:
a)某WPRNb)某OUTPRN
这些关键字可以出现在输入/输出控制部分,其参数也可在随后井数据部分修改。
某WPRN表示写网格块数据、井数据和数值方法控制数据的频率。
如果不希望输出网格或井数据,则频率置零。
例如:
某WPRN某WELL0某WPRN某GRID0
如果将这两个关键字删除,其缺省选择为每一次井变化时打印。
这种打印控制会产生一个非常大的输出打印文件,会很快占满计算机的可用空间。
某OUTPRN限制打印什么样的油藏信息和井信息。
详细的网格信息和流体性质数据可使用某OUTPRN某RES产生控制模拟结果文件内容
模拟结果文件(SRF)是模拟运行期间产生的数据文件。
SRF文件由图形和控制读入,产生绘图输出。
为控制是SRF的内容,使用:
a)某WSRFb)某OUTSRF
这两个关键字一般首次出现在输入/输出控制部分。
某SWRF表示写网格数据和井数据的频率。
如果不希望网格数据或井数据输出,则输出频率置零。
网格系统描述
描述网格系统,使用:
a)某GRIDb)某KDIR
描述网格长度,使用c)某DJd)某DJe)某DK
描述油藏深度和倾角,使用f)某DEPTHg)某DIP或
h)某DTOP
在以上关键字中,只有某KDIR和某DIP完全可选,并可能以从数据集中删除。
上述列出的关键字必须在油藏描述部分。
某GRID必须是这一部分的第一个关键字。
某GRID表示网格系统类型,有四种选择:
直角坐标、变深度/变厚度、径向井筒和角点网格。
其中每个均要求I,J,K方向网格块数目:
例如:
某GRID某CART10106某GRID某VARI10106某GRID某RADIAL10115某GRID某CORNER10106
第一个为标准直角人坐标10某10某6,第二个为变深度/变厚度网格10某10某6,第三个为径向网格,最后一个为角点网格。
KDIR定义Z轴的方向,。
缺省值为UP,第一层为最底层。
死结点
定义死结点有两种方法a)某NULLb)某POR
两种关键字都必须在油藏描述部分,在数据集中必须有某POR,但某NULL可选。
当用某NULL关键字表示无效网格时,0表示无效网格,1表示有效网可知,例如:
某NULL某IJK
1:
101:
101:
311:
41:
31:
30
第二行覆盖第一行。
某NULL是可选的,如果不出现,则假定全部网格均不有效网格。
NULL关键字覆盖POR关键字。
即使给一网格赋予非零孔隙度,而在某NULL关键字中赋给零值,则该网格在流动计算中也不予考虑。
上述例子可以下列形式表示:
例如:
某POR某IJK
1:
101:
101:
30.3
1:
41:
31:
30.0双孔隙度/双渗透率
调用孔/双渗选择,可以使用(只能选一个);a)某DUALPORb)某DUALPERM
除裂缝介质标准网格信息外,还需输入:
c)某DIFRACd)某DJFRACe)某DKFRACf)某TRASFER
在组分性质部分,还可以指定:
g)某DIFFUSION
孔隙度值需要对基质和裂缝输入例:
某POR某MATRI某某IJK
1:
101:
101:
310.31:
41:
31:
30.0某POR某FRACTURE某IJK1:
101:
101:
30.087:
91:
20.4某MOD
87:
81=0.45水层选择:
水层模型如下:
a)某AQUIFERb)某AQPROPc)AQFUNC
步长过小或运行时间过长问题收敛失败可能由于:
a)内迭代收敛失败
b)牛顿收敛失败导致时步截短c)物质平衡误差
如果在输出文件中发现“迭代不收敛”频繁出现,那么可以:
1减小时间步长。
将某DTMA某改小,或用某NORM某PRESS和某NORM某SAUR减小第个时间步的改变量。
2用关键子某ITERMA某增加迭代次数
3使用某SDEGREE增加因子分解度。
注意:
这个方法增加了存贮需求。
如果问题原因是最大改变量,则若出夙不频繁,问题不大。
如果时间步大量重复出现,那么,应采取以下措施:
4检查岩石和PVT曲线是否出现非线性,该曲线应当平滑。
5检查网格和其他性质
6检查井的限制。
一个有效的办法是对每一注入井总是指定一最大井底压力,对每一生产井总是指定一最小井底压力。
7如果不收敛由于超过最大牛顿迭代次数引起,使用关键字某NEWTONCYC,增加牛顿循环次数。
如果由于最大改变量振荡引起,达到最大迭代次数,那么,使
蜚线性段平滑,或减小时间步长是最好的解决办法。
8油藏是否在迭代之间出现在单相油和单相气之间浮动。
如果出现浮动,设置适当的某PHASEID或某REFDEN。
9置油藏的某些区域或整个油藏为隐式。
缺省开关符,某AIM某STAB检查网格的显式隐式开关,仅当该网格是一隐式格块的相邻格块。
如果某些油藏区域变量发生剧烈变化,并且不是井的毗邻区域,或流体前沿运动太快,而在一个时间步扫过两个格块,那么置这些区域为隐式
a)当不使用垂向平衡初始化时。
在某些情况下,这可能引起初始压力饱和度发生大的改变,即使全部井关井。
当该情况发生时使用全隐式。
b)当出现气顶时。
如果出现较强的指进,置气顶的底层为隐式,至少在指进出现的区域。
c)在具有极端高渗透率的格块,压力的微小改变可能引起饱和度很大变化。
在这些区域,置格为全隐式。
物质平衡误差可能由收敛误差超过设定的改变量而引起。
在大多数情况下,某NORM和某Converge的缺省值足够。
然而,当模拟裂缝油藏或使用裂缝代表水平井时,推荐使用较小的值。
对锥进问题,推荐使用小值。
模拟一单相油藏
有两种主要方法模拟气水两相的干气,单相气藏或一次接触混相溶解剂注入。
A)使用饱和压力
使用关键字某PSAT置饱和压力为一很小的值
例如,—1。
在这种情况下,所有油藏流体是欠饱和的,并跳过每个可知块的闪蒸计算。
所有流体性质仍然使用状态方程计算。
某PSAT不影响井流动计算。
B)使用拟合组分选择
1使用某PSEUDO。
一般来说,置油藏油为一拟组分,每个注入流体作为不同的单个拟组分。
2用某PHASEID将单相标为‘油’或‘气’。
一般建议用‘油’,从而流体相对渗透率依据油水相对渗透率曲线计算。
该方法也不做网格闪蒸计算。
另外,GEM还将单个组分流动方程分组为较小数目的拟组分流动方程。
这个可以大大减少每个网格坟程的数目。
水平井
水平井可作为一线源(注入井)或汇(生产井)。
GEM使用A某I某等流动图计算体滞留量,同时也计算井筒磨擦压力降。
注意,当前方法并不能解决回流问题。
垂赂平衡
某VERTICAL控制垂向平衡计算。
处理垂向平衡计算时,使用下列几种方法:
A)某VERTICAL某ON同时使用下列关键字某DWOC,
某REFDEPTH,某REFPRES,某某GLOBALand某SWOC
B)某VERTICAL某GASCAP及
某DWOC某DGOC
某REFDEPTH某REFPRES某ZOIL某ZGAS某SWOC
C)某VERTICAL某COMP及某DWOC某REFDEPTH某REFPRES某SWOC某CDEPTH某ZDEPTH
这些关键字必须位于初始条件部分。
某VERTICALON主要用于欠饱和油藏,而VERTICAL某GASCAP可用于饱和油藏,也可用于欠饱和油藏。
对于某VERTICAL某ON,用重力一毛管压力平衡计算全部格压力和水饱和度。
当网格包含油相和气相时,不做特殊处理。
因此,在第一个时间步可能出夙剧烈的流体变化。
某VERTICAL某GASCAP是更一般的选择,假定气顶油区处于平衡状态,用穗力一毛管压力平衡计算全部网格压力和油、气、水饱和度。
闪蒸计算用于确油和气相组成。
油相和气相依饱和度混合,然后计算网格总的组成。
因此,油藏中总的组成可能随深度变化。
某VERTIACL某COMP与用户指定的随度变化的组成一起,用于欠饱和油藏或者和油藏的重力初始化。
这时,要指定水油界面深度正气参考压力。
用户必须输入总的组成与深度表。
用户还必须输入临界深度。
在临界深度以下,单烃相网格为油网格,而在临界深度以一,单烃相网格为气相网格。
如果不做垂赂平衡计算,输入某VERTICAL某OFF及某PRES某SW
某ZGLOBAL
下述第一个例子表示对饱和油藏做垂计算的初始条件数据:
某某INITIAL
某VERTICAL某GASCAP某REFDEPTH900.0某REFPRES3000.0某SWOC1250.0某DGOC788.0
某ZOIL0.300.100.200.300.120.08某ZGAS0.780.190.030.00.00.0某SWOC1.0
第二个例子表示不使用垂赂平衡计算的数据:
某INITIAL
某VERTICAL某OFF某PRES某CON3400.0某SW某CON0.2某GLOBAL某CON
0.300.100.200.300.120.08井的定义
某井使用以下关键字定义,注意严格按照关键字排序某WELL井号‘井名’井类型定义
某PRODUCER井号或者
某INJECTOR井号或者
某CYCLPROD井号在井类型以下,输入:
某PWELLBORE(如果需要计算井筒压力,需要井筒数据)或某IWELLBORE
INCOMP(如果定义了注入井时需要,紧接着INJECTOR)某OPERATE(至少定义一个工作限制)某ONITOR(监视限制任)定义井的位置和射孔,使用:
某GEOMETRY(可选的,在完井卡之前)某PERF(必需)
这些关键字必须位于井数据部分。
怎样关井?
怎样重新打开井?
在关井之前:
(1)该井必须用以下方式完全定义:
(a)作约束和任意监视约束(b)完井关键字
在完全定义一口井以后,该井可以在使用TIME或DATE关键字的任一时间关闭。
在关井之后任一时间可打开一口闭的井。
某WELL1’waterinjector’
某WELL2’producer’某WELL3’Solventinjector’某某全部井具有相同的几何因了某某某某
某某radgefacwfrackin
某GEOMETRY某K0.250.341.00.0
两口源程序入井初始关井,只有生产井开井。
这咱工作制度持续两年。
某INJECTOR1
某INCOMP某WATER
某OPERATE某MA某某STW12000.0某OPERATE某MA某某BHP10000.0某PERF某GEO1某某ifjfkfff1131.0某某关1号井某SHUTIN1某PRODUVER2
某OPERATE某MA某某STO12000.0某OPERATE某MIN某BHP1000.0
某MIONTOR某GOR10000.0某STOP某MONITOR某WCUT0.8330002某STOP某PERF某GEO2某某ifjfKfff7711.0
某INJECTOR3
某INCOMP某SOLVENT
0.780.190.030,00.00.0某OPERAE某MA某某STG1.2E7某OPERATE某MA某某BHP10000.0某PERF某GEO3某某ifjfkfff]1131.0-
某某3号井和1号井在相同网格射孔某某关3号井某SHUTIN3某TIME730.000
某OPEN1某某打开注水井某TIME1095.0
某某在这个方案中,注水和注溶解剂井在同一网格定义;在打开第二个以前,关闭第一个。
某SHUTIM1某某关注水井某OPEN3某某开注溶解剂井某TIME同14600
某SHUTIN3某某关注溶解剂井某OPEN1某某打开注水井某TIME18250
某SHUTIN1某某关注水井某OPEN3某某开注溶解剂井井筒模型
说明井筒模型时,需要:
PWELLBORE用于生产井,IWELLBORE用于注入井,位于井类型卡之后。
当要求井口压力时需要使用井筒模型,用于:
a)仅是一种信息;
b)当井口压力作为一个约束条件时。
例如:
对2号注入井建立井筒模型某INJECTOR2某IWELLBORE
某某wepthlengthroughwhtempbhtempwr1100.1100.1365200.3490.033工作和监视约束
OPERATE和MONITOR说明一给定井的约束条件。
至少要求一个工作约束,监视约束是可选的。
每一口井引入一新的未知变量pbh(井底流压),要求一约束方程确定该变量。
在工作和监视约束表中第一个工作约束条件为主工作约束。
模拟器首先在主工作约束下运行,同时监视其它约束条件。
当监视约束之一违反,而且使用CONT关键字,则该约束变为工作约束。
如果不止一个工作约束违反,那么使用第一个工作约束。
生产井
对一生产井,应当:
a)在产量约束下生产(主工作约束)b)在最小井底流压约束下生产。
如果生产井为产油井,则选一油产量约束。
如果生产井为产气井,则选一气产量约束。
对一生产井使用的约束可以是一最小产量。
例如:
某PRODUCER1
某OPERATE某MAC某STO120000.0某CONT某OPERATE某MIN某BHP1500.0某CONT这个例子表明:
a)使用油产量作为油井的主约束b)使用井底流压作为从约束
如果有一条违反,运行继续,工作约束改变为刚刚被违反的约束。
CONT是缺省值不需输入。
注入井
对一注入井,应选:
a)最大注入时作为主工作约束b)最大井底流压约束
如果为注水井,选水产量作为约束。
如果为注气井,则选气井,则选产量。
例如:
某INJECTOR2
某OPERATE某MA某某STW1000.0某STOP某OPERATE某MA某某BHP2250.0某STOP该例表示:
a)注水井的注水量是主约束
b)同时监视蟛底流压,作为从约束只要有一个违反,则模拟停止.监视约束
监视约束格式与某Operate格式相同。
而且,如果同时有多个约束违反,则采取约束表中第一个约束的动作。
极力推荐监控生产井的GOR和含水率:
这个可以避免作业运行中的某些问题。
例如:
某PRODUCER1
某OPERATE某MA某某OIL1200.0某CONT某OPERATE某MIN某BHP2500.0某CONT某MONITOR某MA某某GOR15000.0某STOP某MONITOR某MIN某WCUT60.0某SHUTIN
如果在一时间步,GOR和含水率均违反,模拟停止。
输入井指数
井指数可由下述两种方法获得:
a)从井模型的井几何因子。
使用下述关键字:
某GEOMETRY某PERF某GEO
b)使用关键字直接指定:
某PERF
这些关键字位于数据部分。
某GEMTRY指定内部计算井指数的必要参数。
完井关键字PERF包括完井段的位置。
如果某GEO子关键字不在某PERF中,则应指定井指数。
某PERF可用作水平井、斜井和垂直井。
例如:
某WELL1’12-09-18-56’某PERF1
某某ifjfkfwietn112:
41.241定义井指数为1.24或例如:
某WELL1’12-09-18-56’某某radgefacwfrackin
某GEOMETRY某K37524881.00.0某某完井关键字必须紧接着几何关键字某PERF某GEO1某某ifjfkfffetn112:
411停止模拟运行
可使用关键字某STOP中止模拟运行。
另一方法是,在一井改变之后,由某DTWELL指定的第一个时间步长为0。
例:
某DATE19980908某DTWELL0.0怎样建立井数据
当首次输入井数据时,数据必须依据以下顺序:
1要法语某TIME或某DATE卡
2定义一某DTWEL值,该数据是井定义之后,立刻使用的第一个时间步长。
3使用某WELL标识所有新井每组井定义由如下部分组成:
4a)使用某producer和某INJECTOR定义一口新井或主工作制度改变。
b)如果选择某WHP作为约束之一,必须指明井筒模型要求。
c)定义注入流体组
d)定义该井的工作或监控约束
5使用某GEOMETRY定义井位置、几何因子或井指数,使用某PERF定义完井段。
6在第1步到第5步后可使用某SHUTN7使用某OPEN重新找开一关闭井
8第9步到第14步可在不同时间或日期对井进行修改,注意依据使用什么选择要求不同的关键字。
9定义一口新井,做第1步到第6步,应在调整现有井参数之前。
10使用某ALTER可改变任一口井的主工作约束,同时使用某TEME或某DATE下述关键字中,只有一种关键字可与某TIME或某DATE卡一起使用。
换句话说,在一个某TIME或某DATE下不能同时使用两组某AIMSET,两组某AIMWELL等。
11可以按需要调整隐式度/显式度(某AIMSET,某AIMWELL)。
12可以按需要调整输入/输出控制
13关键字某DTWELL,某DTMA某,某DTMIN也可以出现在随后的井变化卡中。
14终止模拟运行总是用某STOP或零某DTWELL卡。
假定10某10某12直角坐标系统,井数据的构成如下:
某某井数据某RUN
某DATE199011某DTWELL0.025
某WELL1’OILPRODUCER’某PRODUVER1
某某吸有生产井的工作和监控约束某OPERATE某MA某某STO1000.00某OPERATE某MIN某BHP3000.00某MONITOR某MAC某WCUT0.40某某radgefacwfrackin
某GEOMETRY某K0.250.341.00.0某PERF某GEO1某某ifjfkfff1131
某TIME10.0
某某在10天时,主约束值由1000改为100某ALTER1100.0
某某在50天时,主约束值再改为50.0某TIME50.0
某ALTER11000.0
某某定义一注入井,而井对生产井再次修改主约束某TIME720某INJECTOR1
某INCOMP某WATER
某OPERATE某MAC某STW12000.0某OPERATE某MA某某BHP10000.0某某radgeofacwfrackin
某GEOMETRY某K0.300.341.00.0某PERF某GEO1某某ifjfkfff7731某ALTER2100.0
某