每个关键字都有一个语法,即关键字处理器将接受的确切字符、选项和顺序。 一旦您知道了几个语法规则,您将能够解释CMG手册中使用的每个关键字的形式。 括弧中包含的项是可选的,也就是说,您可以输入该项或不输入该项。不要把这些圆括号放在你的数据中。例如,*RANGECHECK关键字的语法是: *rangecheck(*on|*off) 这意味着以下形式的关键字是可以接受的: *rangecheck *rangecheck “*ON *rangecheck *OFF 竖条“|”表示“或”,并将选项列表中的项分隔开来。 括号{}表示项目列表的任意数量。例如,{well_name}表示引用井名的任意列表。 关键字下面一行的大括号中的项目列表表示任意行的表。如油水相渗曲线表: *SWT { Sw  krw  krow  (Pcow) } 意味着可以输入任意行数量的Sw、krw 和krow(Pcow可选),但要有足够的尺维数。 将分配给网格块的属性将用ARRAY表示。 对于孔隙度, ARRAY:*por 这表明*POR关键字必须与网格数组读取选项一起使用。网格数组的另一种语法是 *POR{grid} 有Continue Reading

*OUTSOLVER矩阵解法输出(可选) 目的: 控制矩阵解法包详细结果的输出。 格式: *OUTSOLVER (*ON | *OFF) 缺省: 缺省为 *OUTSOLVER *OFF。 说明: 输出模拟器使用的块间连接等相关量的实际个数和维度。这些数字可用于创建公共存储,以优化可用存储容量的使用。参见Optimizing Memory Requirements。 同时输出由线性求解器所采取的残差迭代的详细信息。 报告Parasol Class List及分布 当定义*SOLVER *PARASOL时,*OUTSOLVR会在主输出(.out)文件中报告PARASOL class的列表及其在单元格之间的分布。搜索字符串“class”或“Level 1”。由于该报告在运行期间可能会输出多次,因此仅用于数据调试目的,并在生产运行期间禁用该输出。

*INTERRUPT 模型中断后的控制(可选),中断模型计算时输出信息的控制 目的: 在运行STARS模型过程中,有时可能中途终止计算,一般我们是通过直接kill掉Launcher中的作业,或者直接关闭立即计算窗口来操作,但是我们对该时间步计算的输出未定义,或者说使用了缺省定义。使用该关键字,可以明确对该时间步的输出,有利于我们对模型进一步分析和查看。 在检测出中断信号后,确定应采取的动作。 格式: *INTERRUPT (*INTERACTIVE | *STOP | *RESTART-STOP) 定义: *INTERACTIVE 提示用户,选择对应于其余的子关键字。 *STOP 立即终止模拟计算。当前时间步长尚未完成,但关闭了输出文件,以防止文件损坏。 *RESTART-STOP 完成当前的时间步骤,写入*OUTPRN和*OUTSRF指定的所有输出,写入一个重启动记录并停止运行。 缺省: 如果未定义*INTERRUPT,或是已定义*INTERRUPT但没有子关键字,则假设为 *INTERRUPT *INTERACTIVE。 说明: 有两种方式对正在运行的 STARS 程序发送中断信号Continue Reading

*PRNTORIEN,*PRINT_REF网格数组输出的方向(可选择) ,可依据个人喜好选择网格输出的方向 目的: 通常,我们使用CMG软件的后处理模块Results查看3D属性场图,例如温度、压力、饱和度场,无需对网格数组进行输出。如果需要通过第三方软件读入网格属性变量,且对数组方向有严格要求,可以使用该关键字进行定义。 *PRNTORIEN 用于覆盖缺省的网格输出方向。 *PRINT_REF 不输出加密网格。 格式: *PRNTORIEN irotat ijkord *PRINT_REF ( *ON | *OFF ) 定义: irotat 网格变量输出的轴旋转标志,允许的范围是 0 到 6,有效的 irotat 为:              irotat 行号 列号 平面 0 (最紧凑的输出形式) 1 I J K 2 I K J 3 K I J 4 K J I 5 J I K 6 J K I ijkord 打印网格变量的轴反向标志,允许的范围是 0 到 8,有效的 ijkord 为: ijkord 行号 列号 平面 0 (底层处于页面的底部) 1 正常 正常 正常 2 正常 正常Continue Reading

*NOLISTLIM 网格数据组输出行数控制(可选) ,控制输出到out文件的网格属性等关键字的行数 目的: 大家在运行CMG文件时可能注意到,*.out文件的开头和*.dat是一样的,是的,out文件会复制dat的信息。对于矿场规模的模型,有时out文件较大,除了使用OUTPRN和WPRN控制的输出,还有例如网格角点、孔、渗、饱这样较大的数据体,对于此类数据的输出,软件默认仅输出20行,其他未读入信息并不影响计算,但是会影响文件的大小。建议仅在调试数据时使用关键字*NOLISTLIM,并在实际模拟时删除该关键字。 格式: *NOLISTLIM 定义: *NOLISTLIM  删除对每个网格数组关键字的输出数据行数的限制。 缺省: 如果未定义*NOLISTLIM,网格矩阵关键字数据输出上限为20行。 说明: 读取输入数据文件中的数据行时,将它们复制或输出到文本输出文件中(如果未定义关键字*NOLIST)。对于矿场规模的网格模型,与网格和储层定义相关的数据线的数量可能非常大,特别是对于由其他软件包(如地质图件)生成的角点网格和属性。 为了将输出文件保持在合理的大小,默认操作是将每个基于网Continue Reading

*OUTSRF 模拟结果文件的项目(可选) 目的: *OUTSRF标识写入摸拟结果文件的信息内容,OUTSRF中,OUT代表输出,SRF=Simulation Results File。结果输出的设置,包括输出频率(WSRF 控制)和输出内容(OUTSRF 控制)。 油藏数值模拟的最终,是需要出一些生产曲线图、2D、3D图、等值面、流线、流动向量、泡状图等等,表征对应开发方式的机理以及开发效果等等,这就是涉及结果输出的设置,通过OUTSRF可以输出井、网格等的各类信息。 鉴于*OUTSRF涉及的参数非常多,参数列表请查看STARS手册。 更多详情,请参考《第61期:定制 STARS模拟结果文件的输出》,链接如下:http://learncmg.cn/?p=6821 格式: *OUTSRF *WELL { comp_unit | *DOWNHOLE | *BLOCKP         | *COMPONENT ( *NONE | *ALL | comp_list )         | *LAYER ( *NONE | *ALL | well_list )} *OUTSRF *GRID Continue Reading

*PAYDEPTH有效厚度中心深度 目的: *PAYDEPTH表示在油藏中每个有效厚度网格中心深度 可以用于修改角点网格垂向深度 用于定义带有效厚度网格的深度 格式: *PAYDEPTH 条件: 对于*GRID *CART,*GRID *VARI, 或者 *GRID *RADIAL必须表示为*DEPTH,*DTOP, *DEPTH-TOP 或者 *PAYDEPTH之一。 *PAYDEPTH可以用于角点网格。这些关键词可以覆盖从角点网格位置”z”中计算的深度。 如果此关键词用于*GRID *CART,每个层的深度(网格有相同的K)必须一致,层间深度的区别必须与总厚度一致(*DK)。 说明: 这个关键词定义的深度是每个网格有效厚度的深度。所有的数组符号和数组可读选项要求定义ni * nj * nk 个值。 这个数值的测定是向下从水平参考面到网格的中心,这个其中有效厚度假定位于有利位置。这个值可能是正或者是负值,这个取决于参考面在油藏中的位置,通常是正的,单位是 (m | ft | cm). 由于假定有效厚度位于网格中心,*PAYDEPTH数组的深度直接赋值给每个网格Continue Reading

*DK K方向的网格尺寸 目的: 对于直角坐标网格表示K方向网格厚度 对于径向网格表示轴向厚度 可以作为油层厚度敏感性分析调参对象 格式: *DK 条件: 所有网格类型都需要此关键词,除了*GRID *CORNER。 对于*GRID *CART和*RADIAL网格类型同一层具有不同的厚度是允许的,除非用*DIP。 如果考虑尖灭,网格的厚度可以设置为0。 说明: 这个关键词定义K方向 网格尺寸。单位是(m | ft| cm),对于 R-θ-Z 圆柱网格类型(*GRID *RADIAL),用 *DK来表示在(Z)轴方向上的网格尺寸。 对于K方向网格步长可接受的数值范围是10-4m ~109m。 最常用的子关键词是*CON (对于均匀网格)和*KVAR(对于非均匀网格)。 例子 a)当K方向网格尺寸为 20, 20, 25, 40, 15, 45, 45 and 45,其中 nk=8 ,使用 *DK *KVAR 2*20 25 40 15 3*45 b)当每个网格K方向尺寸都为22,使用 *DK *CON 22 c)当网格 (3,5,8)尺寸为10,不等距加密尺寸为2.5, 7.5,使用 *Continue Reading

*DEPTH-TOP每个网格顶部深度 目的: *DEPTH-TOP表示油藏中每个网格顶部深度 可以用于定义多层煤层合采,煤层间可以镂空,只需要在不同煤层定义不同的网格顶部深度即可。 可以用于修改角点网格垂向深度。 格式: *DEPTH-TOP 条件: 对于*GRID *CART,*GRID *VARI,或者 *GRID *RADIAL必须由*DEPTH, *DTOP *DEPTH-TOP或者 *PAYDEPTH其中之一。 *DEPTH-TOP可以用于角点网格。 *DEPTH-TOP值将会覆盖从角点位置”z”中计算得来的深度值。 如果用于*GRID *CART,每个层的深度值必须是一样的,层间的深度差必须是一致的(*DK)。 说明: 此关键词定义每一个网格的深度。必须要定义ni * nj * nk数值。 这个深度值是从网格顶部的水平参考面向下测量的。这个值可以是正的也可以是负值,这取决于参考面在油藏中的位置,但是正值是最常见的。单位是 (m | ft | cm)。 当用于角点网格时,顶部深度值会覆盖从角点位置”z”中计算得来的深度值。如果*Continue Reading

*DJ J方向的网格步长 目的: *DJ在直角坐标系下表示J方向的网格长度 在径向网格坐标系下表示角度 格式: *DJ 定义: *OFF 在所有三个面上采用5点差分。 *IJ 用于直角坐标网格,允许层的深度和厚度变化。I-J平面采用9点差分,J-K和 I-K平面采用5点差分。此选项不能用于*GRID *RADIAL。 *IK 在I-K 平面采用9点差分,J-K和I-J平面采用5点差分。 说明: 所有网格类型都需要此关键词,除了*GRID *CORNER。 关键词*DJ表示为J方向的网格步长,单位是 (m | ft | cm)。 对于J方向网格步长可接受的数值范围是10-4m ~109m。 对于径向坐标R-θ-Z网格类型 (*GRID *RADIAL),关键词*DJ表示的网格步长为θ,单位是角度。J方向的步长总和不超过360°。 当nj大于1,步长总和为360°(整圆),注意最内侧的网格(I=1)角度不能被细分。 最常用的子关键词是*CON (对于均匀网格尺寸) 和 *JVAR (对于非均匀网格尺寸)。 举例 a)当I方向网格尺寸ni=10对于 2000,2000,2500,4000,1Continue Reading

报告井组*REPORTING-GROUP 目的: *REPORTING-GROUP允许用户设置一组井,这些井有不同的权重,仅为用于井组控制(查看*GROUP,*GCONP和相关关键字)的分级井组输出数据。报告井组不能设置井组控制,但是报告井组中对井的资格也没有限制。一口井可以是任意多个报告井组中的一员,并且可以在报告井组中拥有任意非负的权重。 说明: CMG模拟器中有两种表示时间的格式,可以用绝对时间(*DATE),也可以用相对时间(*TIME)。 用户需要在不同的模拟场景下使用不同的时间表示方法。一般情况下,在矿场模拟时使用绝对时间(*DATE),在室内实验模拟时使用相对时间(*TIME)。 格式: *REPORTING-GROUP ‘reporting_group_name’ well_list weight_list 定义: reporting_group_name 最多16个字符的字符串。字符串‘Default-Field’和‘Default-Group’不能作为报告井组的名称,因为已经留作内部使用。报告井组名必须与井组名区别开。如果‘reporting_group_name’Continue Reading

*DI I方向的网格步长 目的: *DI在直角坐标系中表示I方向网格长度。 *DI在径向网格坐标系中表示半径。 格式: *DI 定义: *OFF 在所有三个面上采用5点差分。 *IJ 用于直角坐标网格,允许层的深度和厚度变化。I-J平面采用9点差分,J-K和 I-K平面采用5点差分。此选项不能用于*GRID *RADIAL。 *IK I-K 平面采用9点差分,J-K和I-J平面采用5点差分。 说明: 所有网格类型都需要此关键词,除了*GRID *CORNER。 关键词*DI定义I方向的网格步长,单位是(m | ft | cm)。通常用的子关键词*CON(网格尺寸是一致的)和*IVAR(网格尺寸是非均匀的)。 对于I方向网格步长可接受的数值范围是10-4m ~109m。 举例 a)当I方向网格尺寸为ni=10这一情况1000,1000,1500,400,400,400,400,400,1000和1000时,用 *DI *IVAR 2*1000 1500 5*400 2*1000 b)当I方向每个网格尺寸都是1200是,使用 *DI *CON 1200 c)当网格(3,5,8)尺寸为10非Continue Reading

井头压力模拟方法 *HEAD-METHOD 目的: *HEAD-METHOD用于确定使用井头压力计算方法。 格式: *HEAD-METHOD (well_list) method 其中method 是 *GRAVITY 或 *GRAV-FRIC (*HEADRROUGH rrough) (*HYRADIUS hedrad) (*DUKLER-BANKOFF) 或 *GRAV-FRIC-HLOS (*HEADRROUGH rrough) 定义: well_list 该定义适用的一个或多个井名。如果没有输入well_list,则用于当前和未来所有井。 *GRAVITY 井层之间的压头是基于流度加权的密度计算的。 *GRAV-FRIC 井层之间的压头是利用考虑了流体密度、摩阻影响、动能影响的公式计算的。 *GRAV-FRIC-HLOS *GRAV-FRIC加上井筒和油藏之间的热传导。 岩石和相的导热系数来自岩石类型1,并且必须是独立的数,而不是饱和水的岩石的某个平均值。具体可以查看*PHWELLBORE下面关于摩阻压降和热损失的计算说明。传热只发生在*PERF定义的网格上。 *HEADRROContinue Reading

井底流压初始化频率 *WELLINIT 目的: *WELLINIT 允许用户为全部或部分井进行设置,允许井底流压在每个时间步或每个牛顿循环之前再次初始化。这些井的约束条件可以是定产量、压差或者隐含的井口压力。有两种初始化频率,一种是特定井的初始化频率,用于列表中的特定井或一组井,另一种是全局的初始化频率,用于没有设置特定初始化频率的井,这两种都可以使用*WELLINIT。 格式: 用于设置全局初始化频率,即用于所有井,输入 *WELLINIT (*CHANGE) (*TIMESTEP) 为用户选择的列表中的井设置特定的初始化频率,输入 *WELLINIT well_list (*CHANGE) (*TIMESTEP) 定义: CHANGE 表明对于约束条件不是井底流压的井,其井底流压只在约束条件发生变化时才重新初始化。 TIMESTEP 表明对于约束条件不是井底流压的井,其井底流压在每个时间步的开始,并且下一个时间步的新的井头压力值算出之后就重新初始化。 well_list 一组井名或井序号;见下面。井列表的出现或未出现是告诉模拟器要 使用全局的初始化频率还是特定的初始化频率。 welContinue Reading

无效网格中的射孔 *NULL-PERF 目的: *NULL-PERF 设置如何处理无效(空的或尖灭的)网格中的射孔。 格式: *NULL-PERF well_list (*STOP-SIM | *CLOSED) 定义: well_list 该定义适用的一个或多个井名。 *STOP-SIM 如果模拟器检测到试图在无效网格中射孔,就会打印出关于该井和网格的错误提示,并终止模拟。 *CLOSED 如果模拟器检测到试图在无效网格中射孔,就会打印出警告信息,并将射孔改为CLOSED状态。在CLOSED状态下,在该层中不会有流体流入或流出油藏,但是该层保留在井中,并进行井头计算。 缺省: 缺省是 *CLOSED。 条件: 该关键字必须位于井和动态数据(WELL AND RECURRENT DATA)关键字组。 说明: 该关键字用于设置射孔在无效(空的或尖灭的)网格上的情况的处理方法。这种射孔可以认为是错误的,导致模拟终止,也可以造成该层射孔状态为*CLOSED。 关闭的层可以当做该井的参考层(用于定义该井的井底流压的层)。 应用案例: *WELL 1 ‘Producer1’Continue Reading

回流模型  *XFLOW-MODEL 目的: *XFLOW-MODEL 用于确定对某些指定的井进行回流和层间窜流模拟时使用的方法。 格式: *XFLOW-MODEL (well_list) (*FULLY-MIXED | *ZERO-FLOW) 定义: well_list *WELL关键字定义过的一个或多个井名。可以是采油井,也可以是注入井。如果没有输入井名列表 well_list, 则用于当前和未来所有的井。 *FULLY-MIXED 井筒内的回流和层间窜流模拟时,假设井筒体积为零,完全混合(Coats et al, SPE 29111, 1995)。 *ZERO-FLOW 回流和层间窜流模拟时,设置层流速为零。该层没有明确关闭,如果压力变化导致向前流动,那么该层的流动继续。 缺省: 对于没有使用*XFLOW-MODEL的井, 缺省使用*ZERO-FLOW。如果*FULLY-MIXED和*ZERO-FLOW都没有出现在*XFLOW-MODEL well_list之后,那么该列表中的所有井都用*FULLY-MIXED。 *FULLY-MIXED 和*ZERO-FLOW是相互排Continue Reading

岩石-流体中的岩石类型定义*RPT 目的: 岩石类型在数模中主要体现在相渗曲线和毛管压力曲线,不同的岩石类型应用不同的相渗曲线和毛管压力曲线,如果油藏岩性变化大,就需要进行岩性分区,使用不同的相渗曲线和毛管压力曲线。关于岩石类型*RPT,具体可应用于: 油藏模型初始化; 相渗曲线分区进行历史拟合; 多种岩石类型之间相渗插值; 双重介质模型中裂缝和基质分别使用不同的相渗曲线; …… 格式: *RPT  nrock  (*COPY  old_nrock)  (midcalc_opt)  (wet_opt) 数组: *KRTYPE 或 *RTYPE *KRTYPE_VERT 定义: nrock 岩石-流体数据的岩石类型编号。初始值为1,不需要明确指定。后续岩石类型以此+1,例如1,2,3等等。 *COPY old_nrock 采用复制的形式,快速创建一个新的岩石类型,当不同的岩石类型除了少数性质外都是相同的时候,这是有用的。 midcalc_opt 指定中间相相对渗透率的计算方法。 wet_opt 定义润湿相的选项。 *KRTYPE, *RTYPE 为所有的网格指定一个岩石类型。当仅有一套岩Continue Reading

油-水相对渗透率表*SWT 目的: 油水相对渗透率曲线是油水两相渗流特征的综合反映,是油田开发参数计算,动态分析以及油藏数值模拟工作最基础的资料之一,在油藏数值模拟中是影响产油量和含水率的重要因素。它可直接应用于: 计算油井产量,水油比和流度比; 分析油井产水规律; 确定油水在储层中的垂向分布; 确定自由水面; 计算驱油效率和油藏水驱采收率; 判断油藏润湿性等。 格式: *SWT  ( *SMOOTHEND  (*LINEAR | *QUAD | *CUBIC) )  (*PCGW) { Sw  krw  krow  (Pcgw )  ( Pcow  ( Pcowi ) ) } 定义: *SMOOTHEND (*LINEAR | *QUAD | *CUBIC) 可选关键字,定义相渗曲线的平滑方法。使用子关键字*LINEAR进行线性插值计算,使用子关键字*QUAD进行二次方程插值计算,使用子关键字*CUBIC 进行三次方程插值计算,缺省值的是线性插值。 *PCGW 指定*SWT表的第4列为气/水毛细管压力Pcgw。 Sw 含水饱和度。允许的范围是0到1。表格中的 Sw 必须是递增的。相邻Continue Reading

定义相渗插值所涉及的多套相渗曲线*KRINTRP 目的: 定义相渗插值所涉及的多套相渗曲线。相渗插值是针对不同的客观因素,使得某网格的相渗曲线具有可变性,在STARS中,可以根据温度、毛管数、组分浓度(摩尔分数)、润湿性以及泡沫强度等的不同,在同一岩石类型下对相渗曲线进行插值,来模拟各相流度的变化。 以经验法模拟泡沫驱为例,根据FM值的不同,相渗曲线发生了变化,在设置相渗曲线时,针对RPT 1可设置多套插值曲线,如KRINTRP1、KRINTRP2及KRINTRP3等, 格式: *KRINTRP  nset  (*COPY  old_rock  old_set )  ( wet_opt) 定义: *KRINTRP nset 设置相渗曲线套数,确定当前使用的岩石流体类型。每个新岩石类型的相渗曲线套数从1开始,每增加一套,其数值加1。例如,岩石类型#1 可能包含两套相渗曲线,设置为1和2,岩石类型#2可能包含三套相渗曲线,设置为1,2和3。 *COPY  oldContinue Reading

插值组分*INTCOMP 目的: 指定插值组分,作为相渗插值的依据。 格式: *INTCOMP  comp_name  phase *INTCOMP2  comp2_name 定义: comp_name 插值组分的名称 phase 子关键字指示插值组分存在的相: 子关键字 插值参数 *WATER 水(水相)摩尔分数 *OIL 油(油相)摩尔分数 *GAS 气相摩尔分数 *GLOBAL 总摩尔分数 *MAX 油、气及水相中最大的摩尔分数 *ADS 吸附相,最大的摩尔分数 comp2_name 第二个插值组分名称该组分存在的相是通过子关键字*IFTTABLE指定:*2CMPW(水相),*2CMPX (油相)或者*2CMPY(气相)。 缺省: 如果*INTCOMP缺省,则不进行相渗插值。 如果不使用关键字*INTCOMP2并且存在子关键字*2CMPW, *2CMPX 或*2CMPY 中的任何一个(详见关键字*IFTTABLE),那么缺省的第二个插值组分由以下表格定义: *2CMPW 水相中组分个数NUMW *2CMPX 油相中组分个数NUMX *2CMPY 气相中组分个数NUMY 条件: 如Continue Reading