1、CMG软件组分模型操作手册组分模型用户指南和相态平衡计算 组分模型GEM使用指南 前 言 GEM 是CMG的高级通用状态方程组分模拟器,它包括诸如状态方程、双孔、CO2、混相气、挥发油、凝析气、水平井、井的管理、复杂相态等等选择。GEM用来模拟一次和二、三次采油过程的油藏流体组分效果。 该用户手册介绍了注气机理、方程和求解技术。该手册面向油藏工程师,帮助设计二、三次采油的注气过程,它需要油藏工程的一些基本知识,也需要对数值模拟有一些了解。 GEM概述 在提高采收率项目,包括注气或注溶解剂中,其过程可以混相或者非混相,它取决于入流体和油藏油的组成,还取决于油藏压力和温度。例如,富气驱、高压气驱、
2、CO2驱和凝析气藏的循环注气。其模拟需要热力学和流体流动的特殊处理。 GEM是一有效的多维状态方程组分模拟器,它可模拟全部混相注气的重要机理,即油的蒸发和膨胀、气凝析、粘度和界面张力降低,通过多次接触形成混相溶解剂段塞。 自适应隐式公式 GEM可以显式、全隐式和自适应隐式三种方式运行。在大多数情形下,只有很少量的网格需要全隐式求解。大多数网格可以显式求解。自适应隐式方法在计算中动态选择网格的隐式度,它对于井筒附近的锥进,或非常薄层的层状油藏非常有用。 使用自适应隐式方式,可以比全隐式节约三分之一到一半计算时间,而时间步可以和全隐式方法一样长。 用户选择全隐式格块,GEM然后进一步动态选择隐式格
3、块。 双孔隙度双渗透率 双孔模型将裂缝油藏的孔隙空间分为两部分:主孔隙和次孔隙。主孔隙(基岩)表示岩块基质中小的粒间孔隙,次孔隙(裂缝)由裂缝、结点、孔洞组成。双孔模型以一个油藏体积由两种介质表示为特征。具有较大存贮性的裂缝,是流体流动的主要通道,而基质则为存贮空间。 在GEM中,可指定简单的双孔模型。每个单元都分一基质和裂缝形状因子。在这种情况下,基质和裂缝之间的交换项处于半稳态流动。 除双孔模型以外,还可指定双渗模型,该模型假定相邻基岩块之间存在流体流动。在基质、基质之间质量交换不能忽略的情况下有用,例如气油重力驱占主要地位的情况。 状态方程 GEM使用Peng-Robinson或Soav
4、e-Redlich-Kwong状态方程预测油相和气相的相平衡组成和密度,应用Jossi,Stiel和Thodos方程预测油和气的粘度。 闪蒸计算 拟牛顿逐次替换法QNSS用于求解闪蒸计算的非线性方程,以Gibbs能量分析为基础的稳定性测试监测单相状态。 复杂油藏 油藏定义关键字用来描述油藏,网格可以是可变厚度可变深度型,也可以是角点类型,断层也是可以定义的。可支持笛卡尔坐标和径向网格。 拟组分选择 拟组分(流动组分)可有效模拟一次接触混相过程和其它单相流体系统。 全隐式井 井可以完善的方式求解,井底流压和完井段的格块变量以全隐式方式求解。如果完井段不止一个层,其井底流压以完全对耦的方法求解,即
5、考虑所有完井段。这个可以解决典型层状油藏中多完井段井的收敛问题。而且在GEM中,复杂的井控制性能是千变万化的。可输入各种约束条件(最大井底或井口压力、最小井底和井口压力、最大产量、最小产量、最大气油比、最小气油比等)。当违反其中一条约束条件时,用户可指定另一新的约束条件。气循环选择允许对组分进行剥离,可附加补充气到循环气流中。 矩阵求解方法 GEM使用AIMSOL,它是一优秀的线性求解程序,基于不完全高斯消去法。AIMSOL尤其针对自适应隐式雅可比矩阵而开发。 油藏初始比 初始油藏条件可给定气油和油水界面深度。流体组成可随深度而改变,油藏温度也可随深度呈线性变化。 水区模型 水层可以另增加仅有
6、水的边界单元,或使用CarterTracy水层模型模拟。前者用于水体大小和位置已知,而附加的水体网格又相对小的情况。后者一般用于水体较大或未知,希望近似计算水侵量,而附加水体网格不可行的情况。 单位:SI或矿场单位 模拟结果文件 GEM产生SRF格式,第二代模拟结果文件*IRF和*MRF文件。结果文件可用于二维和三维可视化软件,也可用于动态曲线图输出。 GEM入门 概述 +-+ | | - .OUT (输出) | | | | - .IRF (索引) 数据文件 - | GEM | | | - .MRF (主) | | | | - .RRF (可回绕) +-+ (可选择)如果希望重启,需要其它几个
7、存在的文件,同时产生另外三个文件,如下: +-+ 数据文件 - | | - .OUT (输出) | | INPUT.IRF - | | - .IRF (索引) | GEM | INPUT.MRF - | | - .MRF (主) | | INPUT.RRF - | | - .RRF (可回绕) (可选择) +-+ (可选择) 关键字输入部分数据组a)七个不同组 b)数据组应遵循确定的顺序 IO控制 油藏描述 组分特性 岩石流体数据 初始条件 数值方法控制 井数据和循环数据 怎样建立数据文件注释a) *TITLE1 b) *TITLE2 c) *TITLE3 d) *CASEID 这四个关键字都
8、必须在输入输出控制部分。 这四个关键字是可选的,并可以去掉。但是,它们对于辨别不同数据文件很有用。至少应使用一行标题。全部标题和标识必须包含在单引号之内。 *TITLE1和*CASEID均在模拟结果文件中使用,该文件用来产生模拟的图形。*TITLE1可以有40个字符,*TITLE2和*TITLE3每个可有80个字符。*CASEID最多8个字符。 也可使用两个关键字标识符即*插入注释,注释可以出现在数据文件任何地方。 例:*TITLE1 Simulation Run 119890123 *TITLE2 Dual porosity problem using the MINC option *TI
9、TLE3 This is a 121210 Cartesian grid system *CASEID Run1 *注释部分 怎样重启 什么是重启文件? 重启文件是一个二进制文件,初始数据和主要变量按用户指明频率写入,写重启文件是可选择的。 为什么需要重启? 有以下几点理由: a)做敏感性分析或历史模拟 b)修改井定义 c)在运行一大的长作业之前,做一短的模拟运行,看结果是否满意。 d)在随后的运行中节约运行时间。例如,当完成一模拟运行而且初步结果看起来不错,则需做预测运行。 因为已经由前次运行创建一重启文件,则可以选取一中间时间步重启运行。模拟器不需从初始日期启动运行,可以在选择的时间步继续
10、运行。 怎样做一重启? 重启记录是可选的。如果需要做重启运行,则要在前次运行时产生。 使用 *WRST 或*RESTART创建重启文件,它们必须位于输入输出控制部分。然而,当井工作制度改变时*WRST可出现在井数据部分,*WRST指示写重启记录的频率。*RESTART表示当前模拟运行是一重启运行。如希望在最后一个时间步开始,则*RESTART后留空,这是缺省值,否则,输入时间步数。 例:*RESTART 30 *WRST 10 当做重启时: a)不改变原始油藏数据,但在输入输出控制部分加一*RESTART关键字。 b)增加最大时间步数,如果必要,删除*MAXSTEPS。 c)需要附加输入文件:
11、输入重启文件和输入模拟结果文件。这些文件在前次运行期间产生。d)需要新的一组输出文件名。 控制输出打印文件内容 控制输出打印文件内容,使用: a)*WPRN b)*OUTPRN 这些关键字可以出现在输入输出控制部分,其参数也可在随后井数据部分修改。 *WPRN表示写网格块数据、井数据和数值方法控制数据的频率。 如果不希望输出网格或井数据,则频率置零。 例如:*WPRN *WELL 0 *WPRN *GRID 0 如果将这两个关键字删除,其缺省选择为每一次井变化时打印。这种打印控制会产生一个非常大的输出打印文件,会很快占满计算机的可用空间。 *OUTPRN限制打印什么样的油藏信息和井信息。 详细
12、的网格信息和流体性质数据可使用 *OUTPRN *RES产生。 控制模拟结果文件内容 模拟结果文件(SRF)是模拟运行期间产生的数据文件。SRF文件由图形和控制系统读入,产生绘图输出。为控制SRF的内容,使用: a) *WSRF b) *OUTSRF 这两个关键字一般首次出现在输入输出控制部分。 *WSRF表示写网格数据和井数据的频率。 如果不希望网格数据或井数据输出,则输出频率置零。 网格系统描述 描述网格系统,使用: a) *GRID b) *KDIR 描述网格长度,使用 c) *DI d) *DJ e) *DK 描述油藏深度和倾角,使用 f) *DEPTH g) *DIP 或 h) *D
13、TOP 在以上关键字中,只有 *KDIR和 *DIP完全可选,并可以从数据集中删除。 上述列出的关键字必须在油藏描述部分。 *GRID必须是这一部分的第一个关键字。 *GRID表示网格系统类型,有四种选择:直角坐标、变深度变厚度、径向井筒和角点网格。其中每个均要求I,J,K方向网格块数目: 例如: *GRID *CART 10 10 6 *GRID *VARI 10 10 6 *GRID *RADIAL 10 1 15 *GRID *CORNER 10 10 6 第一个为标准直角坐标10106,第二个为变深度变厚度网格10106,第三个为径向网格,最后一个为角点网格。 *KDIR定义Z轴的方向
14、,缺省值为 *UP,第一层为最底层。 死结点定义死结点有两种方法 a) *NULL b) *POR 两种关键字都必须出现在油藏描述部分。在数据集中必须有 *POR,但 *NULL可选。 当用 *NULL关键字表示无效网格时,0表示无效网格,1表示有效网格,例如: *NULL *IJK 110 110 13 1 14 13 13 0 第二行覆盖第一行。 *NULL是可选的,如果不出现,则假定全部网格均为有效网格。 *NULL关键字覆盖 *POR关键字。即使给一网格赋予非零孔隙度,而在 *NULL关键字中赋给零值,则该网格在流动计算中也不予考虑。 上述例子也可以下列形式表示: 例如: *POR *
15、IJK 110 110 13 0.3 1 4 13 13 0.0 双孔隙度双渗透率调用双孔双渗选择,可以使用(只能选一个): a) *DUALPOR b) *DUALPERM 除裂缝介质标准网格信息外,还需输入: c) *DIFRAC d) *DJFRAC e) *DKFRAC f) *TRANSFER 在组分性质部分,还可以指定: g) *DIFFUSION 孔隙度值需要对基质和裂缝输入 例: *POR *MATRIX *IJK 110 110 13 10.3 14 13 13 0.0 *POR *FRACTURE *IJK 110 110 13 0.0 8 79 12 0.4 *MOD 8
16、 78 1 0.45 水层选择 水层模型如下: a) *AQUIFER b) *AQPROP c) *AQFUNC 步长过小或运行时间过长问题收敛失败可能由于: a)内迭代收敛失败; b)牛顿收敛失败导致时间步截短; c)物质平衡误差。 如果在输出文件中发现“迭代不收敛”频繁出现,那么可以: 1 减小时间步长。将*DTMAX改小,或用*NORM *PRESS和 *NORM *SATUR减小每个时间步的改变量。 2 用关键字 *ITERMAX增加迭代次数。 3 使用 *SDEGREE增加因子分解度。注意:这个方法增加了存贮需求。如果问题原因是最大改变量,则若出现不频繁,问题不大。如果时间步大量重
17、复出现,那么,应采取以下措施: 4 检查岩石和PVT曲线是否出现非线性,该曲线应当平滑。 5 检查网格和其他性质。 6 检查井的限制。一个有效的办法是对每一注入井总是指定一最大井底压力,对每一生产井总是指定一最小井底压力。 7 如果不收敛由于超过最大牛顿迭代次数引起,使用关键字 *NEWTONCYC,增加牛顿循环次数。如果由于最大改变量振荡引起,达到最大迭代次数,那么,使非线性段平滑,或减小时间步长是最好的解决办法。 8 油藏是否在迭代之间出现在单相油和单相气之间浮动。如果出现浮动,设置适当的 *PHASEID或*REFDEN。 9 置油藏的某些区域或整个油藏为全隐式。缺省开关符, *AIM
18、*STAB检查网格的显式隐式开关,仅当该网格是一隐式格块的相邻格块。如果某些油藏区域变量发生剧烈变化,并且不是井的毗邻区域,或流体前沿运动太快,而在一个时间步扫过两个格块,那么置这些区域为隐式。 例如如下情况: a)当不使用垂向平衡初始化时。在某些情况下,这可能引起初始压力和饱和度发生大的改变,即使全部井关井。当该情况发生时使用全隐式。 b)当出现气顶时。如果出现较强的指进,置气顶的底层为隐式,至少在指进出现的区域。 c)在具有极端高渗透率的格块,压力的微小改变可能引起饱和度很大变化。在这些区域,置格块为全隐式。 物质平衡误差可能由收敛容许误差超过设定的改变量而引起。在大多数情况下,*NORM
19、和 *Converge的缺省值足够。然而,当模拟裂缝油藏或使用裂缝代表水平井时,推荐使用较小的值。对锥进问题,推荐使用小值。 模拟一单相油藏 有两种主要方法模拟气水两相的干气,单相气藏或一次接触混相溶解剂注入。 A)使用饱和压力 使用关键字 *PSAT置饱和压力为一很小的值,例如,1。在这种情况下,所有油藏流体是欠饱和的,并跳过每个格块的闪蒸计算。所有流体性质仍然使用状态方程计算。*PSAT不影响井流动计算。 B)使用拟组分选择 1 使用 *PSEUDO。一般来说,置油藏油为一拟组分,每个注入流体作为不同的单个拟组分。 2 用 *PHASEID将单相标为油或气。一般建议用油,从而流体相对渗透率
20、依据油水相对渗透率曲线计算。 该方法也不做网格闪蒸计算。另外,GEM还将单个组分流动方程分组为较小数目的拟组分流动方程。这个可以大大减少每个网格方程的数目。 水平井水平井可作为一线源(注入井)或汇(生产井)。 GEM使用Aziz等流动图计算液体滞留量,同时也计算井筒摩擦压力降。注意,当前方法并不能解决回流问题。 垂向平衡计算 *VERTICAL控制垂向平衡计算。 处理垂向平衡计算时,使用下列几种方法: A) *VERTICAL *ON 同时使用下列关键字 *DWOC,*REFDEPTH,*REFPRES,*ZGLOBAL and*SWOCB) *VERTICAL *GASCAP及 *DWOC
21、*DGOC *REFDEPTH *REFPRES *ZOIL *ZGAS *SWOC C) *VERTICAL *COMP及 *DWOC *REFDEPTH *REFPRES *SWOC *CDEPTH *ZDEPTH 这些关键字必须位于初始条件部分。 *VERTICAL *ON主要用于欠饱和油藏,而 *VERTICAL *GASCAP可用于饱和油藏,也可用于欠饱和油藏。 对于 *VERTICAL *ON,用重力毛管压力平衡计算全部格块压力和水饱和度。当网格包含油相和气相时,不做特殊处理。因此,在第一个时间步可能出现剧烈的流体变化。 *VERTICAL *GASCAP是更一般的选择。假定气顶与
22、油区处于平衡状态,用重力毛管压力平衡计算全部网格压力和油、气、水饱和度。闪蒸计算用于确定油相和气相组成。油相和气相依饱和度混合,然后计算网格总的组成。因此,油藏中总的组成可能随深度变化。 *VERTICAL *COMP与用户指定的随深度变化的组成一起,用于欠饱和油藏或者饱和油藏的重力初始化。这时,要指定水油界面深度及参考深度下的参考压力。用户必须输入总的组成与深度表。用户还必须输入临界深度。在临界深度以下,单烃相网格为油网格,而在临界深度以上,单烃相网格为气相网格。 如果不做垂向平衡计算,输入 *VERTICAL *OFF及 *PRES *SW *ZGLOBAL 下述第一个例子表示对一饱和油藏
23、做垂向平衡计算的初始条件数据: *INITIAL *VERTICAL *GASCAP *REFDEPTH 900.0 *REFPRES 3000.0 *DWOC 1250.0 *DGOC 788.0 *ZOIL 0.30 0.10 0.20 0.30 0.12 0.08 *ZGAS 0.78 0.19 0.03 0.0 0.0 0.0 *SWOC 1.0 第二个例子表示不使用垂向平衡计算的数据: *INITIAL *VERTICAL *OFF *PRES *CON 3400.0 *SW *CON 0.2 *GLOBAL *CON 0.30 0.10 0.20 0.30 0.12 0.08井的定
24、义 *井使用以下关键字定义,注意严格按照关键字排序 *WELL 井号 井名 井类型定义 *Producer 井号 或者 *INJECTOR 井号 或者 *CYCLPROD 井号 在井类型以下,输入: *PWELLBORE(如果需要计算井筒压力,需要井筒数据) 或 *IWELLBORE *INCOMP(如果定义了注入井时需要,紧接着 *INJECTOR) *OPERATE(至少定义一个工作限制) *MONITOR(监视限制任选) 定义井的位置和射孔,使用: *GEOMETRY(可选的,在完井卡之前) *PERF(必需) 这些关键字必须位于井数据部分。怎样关井?怎样重新打开井? 在关井之前: (1
25、)该井必须用以下方式完全定义: (a)工作约束和任意监视约束 (b)完井关键字 在完全定义一口井以后,该井可以在使用 TIME或 DATE关键字的任一时间关闭。 在关井之后任一时间可打开一口关闭的井。 *WELL 1 water injector *WELL 2 producer *WELL 3 Solvent injector *全部井具有相同的几何因子 * * rad geofac wfrac skin *GEOMETRY *K 0.25 0.34 1.0 0.0 两口注入井初始关井,只有生产井开井。 这种工作制度持续两年。 *INJECTOR 1 *INCOMP *WATER *OPER
26、ATE *MAX *STW 12000.0 *OPERATE *MAX *BHP 10000.0 *PERF *GEO 1 * if jf kf ff 1 1 3 1.0 * 关1号井 *SHUTIN 1 *PRODUCER 2 *OPERATE *MAX *STO 12000.0 *OPERATE *MIN *BHP 1000.0 *MONITOR *GOR 10000.0 *STOP *MONITOR *WCUT 0.8330002 *STOP *PERF *GEO 2 * if jf kf ff 7 7 1 1.0 *INJECTOR 3 *INCOMP *SOLVENT 0.78 0.
27、19 0.03 0.0 0.0 0.0 *OPERATE *MAX *STG 1.2E7 *OPERATE *MAX *BHP 10000.0 *PERF *GEO 3 * if jf kf ff 1 1 3 1.0 * 3号井和1号井在相同网格射孔 * 关3号井 *SHUTIN 3 *TIME 730.000 *OPEN 1 *打开注水井 *TIME 1095.0 *在这个方案中,注水和注溶解剂井在同一网格定义;在打开第二个以前,关闭第一个。 *SHUTIN 1 *关注水井 *OPEN 3 *开注溶解剂井 *TIME 1460 0 *SHUTIN 3 *关注溶解剂井 *OPEN 1 *打开注
28、水井 *TIME 1825 0 *SHUTIN 1 *关注水井 *OPEN 3 *开注溶解剂井 井筒模型 说明井筒模型时,需要: *PWELLBORE 用于生产井,*IWELLBORE用于注入井,位于井类型卡之后。 当要求井口压力时需要使用井筒模型,用于: a)仅是一种信息; b)当井口压力作为一个约束条件时。 例如: 对2号注入井建立井筒模型 *INJECTOR 2 *IWELLBORE * wdepth length rough whtemp bhtemp wr 1100. 1100. .1365 200.3 490.0 .33 工作和监视约束 *OPERATE和 *MONITOR说明一给
29、定井的约束条件。至少要求一个工作约束,监视约束是可选的。 每一口井引入一新的未知变量Pbh(井底流压),要求一约束方程确定该变量。 在工作和监视约束表中第一个工作约束条件为主工作约束。模拟器首先在主工作约束下运行,同时监视其它约束条件。当监视约束之一违反,而且使用CONT关键字,则该约束变为工作约束。如果不止一个工作约束违反,那么使用第一个工作约束: 生产井 对一生产井,应当: a)在产量约束下生产(主工作约束) b)在最小井底流压约束下生产。 如果生产井为产油井,则选一油产量约束。如果生产井为产气井,则选一气产量约束。 对一生产井使用的约束可以是一最小产量。 例如: *PRODUCER 1 *OPERATE *MAX *STO 12000.0 *CONT *OPERATE *MIN *BHP 1500.0 *CONT这个例子表明: a)使用油产量作为油井的主约束 b)使用井底流压作为从约束 如果
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1