蜚线性段平滑,或减小时间步长是最好的解决办法。
8油藏是否在迭代之间出现在单相油和单相气之间浮动。如果出现浮动,设置适当的*PHASEID或*REFDEN。
9置油藏的某些区域或整个油藏为隐式。缺省开关符,*AIM *STAB检查网格的显式隐式开关,仅当该网格是一隐式格块的相邻格块。如果某些油藏区域变量发生剧烈变化,并且不是井的毗邻区域,或流体前沿运动太快,而在一个时间步扫过两个格块,那么置这些区域为隐式
a)当不使用垂向平衡初始化时。在某些情况下,这可能引起初始压力饱和度发生大的改变,即使全部井关井。当该情况发生时使用全隐式。
b)当出现气顶时。如果出现较强的指进,置气顶的底层为隐式,至少在指进出现的区域。
c)在具有极端高渗透率的格块,压力的微小改变可能引起饱和度很大变化。在这些区域,置格为全隐式。
物质平衡误差可能由收敛误差超过设定的改变量而引起。在大多数情况下,*NORM和*Converge的缺省值足够。然而,当模拟裂缝油藏或使用裂缝代表水平井时,推荐使用较小的值。对锥进问题,推荐使用小值。 模拟一单相油藏
有两种主要方法模拟气水两相的干气,单相气藏或一次接触混相溶解剂注入。 A) 使用饱和压力
使用关键字*PSAT置饱和压力为一很小的值
例如,—1。在这种情况下,所有油藏流体是欠饱和的,并跳过每个可知块的闪蒸计算。所有流体性质仍然使用状态方程计算。*PSAT不影响井流动计算。 B) 使用拟合组分选择
1使用*PSEUDO。一般来说,置油藏油为一拟组分,每个注入流体作为不同的单个拟组分。
2用*PHASEID将单相标为‘油’或‘气’。一般建议用‘油’,从而流体相对渗透率依据油水相对渗透率曲线计算。
该方法也不做网格闪蒸计算。另外,GEM还将单个组分流动方程分组为较小数目的拟组分流动方程。这个可以大大减少每个网格坟程的数目。 水平井
水平井可作为一线源(注入井)或汇(生产井)。
GEM使用AXIX等流动图计算体滞留量,同时也计算井筒磨擦压力降。注意,当前方法并不能解决回流问题。 垂赂平衡
*VERTICAL控制垂向平衡计算。
处理垂向平衡计算时,使用下列几种方法: A)*VERTICAL *ON 同时使用下列关键字 *DWOC,
*REFDEPTH, *REFPRES, *XGLOBAL and *SWOC
B)*VERTICAL *GASCAP及
*DWOC *DGOC
*REFDEPTH *REFPRES *ZOIL *ZGAS *SWOC
C)*VERTICAL *COMP及 *DWOC *REFDEPTH *REFPRES *SWOC *CDEPTH *ZDEPTH
这些关键字必须位于初始条件部分。
*VERTICAL ON主要用于欠饱和油藏,而VERTICAL * GASCAP可用于饱和油藏,也可用于欠饱和油藏。 对于*VERTICAL *ON ,用重力一毛管压力平衡计算全部格压力和水饱和度。当网格包含油相和气相时,不做特殊处理。因此,在第一个时间步可能出夙剧烈的流体变化。
*VERTICAL *GASCAP是更一般的选择,假定气顶油区处于平衡状态,用穗 力一毛管压力平衡计算全部网格压力和油、气、水饱和度。闪蒸计算用于确油和气相组成。油相和气相依饱和度混合,然后计算网格总的组成。因此,油藏中总的组成可能随深度变化。
*VERTIACL *COMP与用户指定的随度变化的组成一起,用于欠饱和油藏或者和油藏的重力初始化。这时,要指定水油界面深度正气参考压力。用户必须输入总的组成与深度表。用户还必须输入临界深度。在临界深度以下,单烃相网格为油网格,而在临界深度以一,单烃相网格为气相网格。 如果不做垂赂平衡计算,输入 *VERTICAL *OFF 及 *PRES *SW
*ZGLOBAL
下述第一个例子表示对饱和油藏做垂计算的初始条件数据: **INITIAL
*VERTICAL *GASCAP *REFDEPTH 900.0 *REFPRES 3000.0 *SWOC 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 井的定义
*井使用以下关键字定义,注意严格按照关键字排序 *WELL 井号 ‘井名’ 井类型定义
*PRODUCER 井号 或者
*INJECTOR 井号 或者
*CYCLPROD 井号 在井类型以下,输入:
*PWELLBORE(如果需要计算井筒压力,需要井筒数据) 或*IWELLBORE
INCOMP(如果定义了注入井时需要,紧接着INJECTOR) *OPERATE(至少定义一个工作限制) *ONITOR(监视限制任) 定义井的位置和射孔,使用:
*GEOMETRY(可选的,在完井卡之前) *PERF(必需)
这些关键字必须位于井数据部分。 怎样关井?怎样重新打开井? 在关井之前:
(1) 该井必须用以下方式完全定义: (a)作约束和任意监视约束 (b)完井关键字
在完全定义一口井以后,该井可以在使用TIME或DATE关键字的任一时间关闭。 在关井之后任一时间可打开一口闭的井。 *WELL1’water injector’
*WELL2’ producer’ *WELL3’Solvent injector’ **全部井具有相同的几何因了 ** **
** rad gefac wfrac skin
*GEOMETRY *K 0.25 0.34 1.0 0.0
两口源程序入井初始关井,只有生产井开井。 这咱工作制度持续两年。 *INJECTOR 1
*INCOMP *WATER
*OPERATE *MAX *STW 12000.0 *OPERATE *MAX *BHP 10000.0 *PERF *GEO 1 **if jf kf ff 1 1 3 1.0 **关1号井 *SHUTIN 1 *PRODUVER 2
*OPERATE *MAX *STO 12000.0 *OPERATE *MIN *BHP 1000.0
*MIONTOR *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.19 0.03 0,0 0.0 0.0 *OPERAE *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 *TIME730.000
*OPEN 1 **打开注水井 *TIME 1095.0
**在这个方案中,注水和注溶解剂井在同一网格定义;在打开第二个以前,关闭第一个。
*SHUTIM 1 **关注水井 *OPEN 3 **开注溶解剂井 *TIME 同1460 0
*SHUTIN 3 **关注溶解剂井 *OPEN 1 **打开注水井 *TIME 1825 0
*SHUTIN 1 **关注水井 *OPEN 3 **开注溶解剂井 井筒模型
说明井筒模型时,需要:
PWELLBORE用于生产井,IWELLBORE用于注入井,位于井类型卡之后。 当要求井口压力时需要使用井筒模型,用于: a)仅是一种信息;
b)当井口压力作为一个约束条件时。 例如:对2号注入井建立井筒模型 *INJECTOR 2 *IWELLBORE
**wepth length rough whtemp bhtemp wr 1100. 1100. 1365 200.3 490.0 33 工作和监视约束
OPERATE和MONITOR说明一给定井的约束条件。至少要求一个工作约束,监视约束是可选的。
每一口井引入一新的未知变量pbh(井底流压),要求一约束方程确定该变量。 在工作和监视约束表中第一个工作约束条件为主工作约束。模拟器首先在主工作约束下运行,同时监视其它约束条件。当监视约束之一违反,而且使用CONT关键字,则该约束变为工作约束。
如果不止一个工作约束违反,那么使用第一个工作约束。 生产井
对一生产井,应当:
a)在产量约束下生产(主工作约束) b)在最小井底流压约束下生产。
如果生产井为产油井,则选一油产量约束。如果生产井为产气井,则选一气产量约束。
对一生产井使用的约束可以是一最小产量。 例如:
*PRODUCER 1
*OPERATE *MAC *STO 120000.0 *CONT *OPERATE *MIN *BHP 1500.0 *CONT 这个例子表明:
a)使用油产量作为油井的主约束 b)使用井底流压作为从约束
如果有一条违反,运行继续,工作约束改变为刚刚被违反的约束。CONT是缺省值不需输入。 注入井
对一注入井,应选:
a)最大注入时作为主工作约束 b)最大井底流压约束
如果为注水井,选水产量作为约束。如果为注气井,则选气井,则选产量。 例如:
*INJECTOR 2
*OPERATE *MAX *STW 1000.0 *STOP *OPERATE *MAX *BHP 2250.0 *STOP 该例表示:
a)注水井的注水量是主约束
b)同时监视蟛底流压,作为从约束 只要有一个违反,则模拟停止. 监视约束