Skip to main content

Posts

Showing posts from 2014

CMG操作简介

前处理 数据文件的建立 查看数据文件实例 CMG通过读取一个数据文件,利用数据文件中的关键字指示进行相应的数据计算。CMG数据文件主要包括以下几个部分: 输入、输出控制段 这部分内容包括:确定输入、输出文件名;单位标准(国际标准单位、矿场单位、实验室单位);输入、输出内容等等。 油藏描述段 这部分内容主要是把建模输出的静态参数包含进来(include),定义你所应用的坐标系。如果是多个压力系统还要用关键字sector定义每个压力系统 包括的部分。 流体组分性质部分 流体组分模型;高压物性(PVT);油藏温度;岩石压缩系数;原油压缩系数;原始饱和压力;底层原油体积系数等。 岩石—流体性质部分 相对渗透率的定义等。 初始条件数据段 主要包括压力和饱和度的定义。 数值计算方法数据控制段 设置运算限制条件,如最大时间步长、最大时间步数等等,建议用缺省值。 井数据段 井位置的定义(网格定义),井类型的定义,井生产或注入的限制条件,射孔,动态数据等等。 历史拟合 为了取得跟油藏实际动态相一致的一组油藏参数,可以把模拟计算的动态跟实际动态相比较,这种方法叫历史拟合。 历史拟合过程实际是参数校正的过程,在储量拟合的基础上进行单井和井组拟合。根据实测的动态数据,主要拟合以下参数,油藏地层压力及综合含水,单井井底压力的变化,单井见水时间及含水率变化,单井生产指数变化等。 历史拟合的步骤如下: (一)、对数模参数全面检查使模型数据体通过运算 (二)、确定参数的可调范围 首先清楚哪些参数是确定的,哪些是不确定的。然后根据情况确定可调范围。 孔隙度 :此参数由测井解释和岩心分析得出,视为确定参数,允许改动范围在3%,一般不做修改。 渗透率 :渗透率在任何油、气、田都是不定参数。这不仅是由于测井解释的渗透率值和岩心分析值误差大,而且根据渗透率的特点,井间的渗透率分布也是不确定的。因此对渗透率的修

油藏数值模拟简介A Brief Introduction of Numerical Reservoir Simulation

1、什么是油藏数值模拟 2、油藏数值模拟软件介绍 3、油藏数值模拟目的 4、油藏数值模拟研究步骤 1、什么是油藏数值模拟 油藏数值模拟就是用数值的方法来解油藏中流体(相或组分)渗流的偏微分方程组。 所谓数值方法是一种近似的解法,即用离散化的方法把连续函数转变成离散函数,用计算机来求解。通常用的方法为有限差分法,也可用有限元法和谱分析方法。 油藏模拟就是把油藏在三维的空间里分为许多离散的单元,并且模拟油藏及流体在空间及一系列离散的时间步里的发展变化。与物质平衡方法一样的是,系统遵循物质守恒原理。 建立油藏模拟软件,一般包括: 质量守恒原理 能量守恒原理 运动方程(达西定律) 状态方程 辅助方程(如饱和度方程,毛管力方程等) 按模型功能可以分为以下模拟: 黑油模型 状态方程的组分模型 双重介质模型 热采模型 聚合物驱模型 三元复合驱模型 水平井模型 2、油藏数值模拟软件介绍 三大应用软件系列 黑油模型软件 三次采油软件 3、油藏数值模拟目的 (1)初期开发方案的模拟 评价开发方式;如:枯竭开采、注水开发等 选择合理井网、开发层系、确定井位 选择合理的注采方式、注采比 对油藏和流体性质敏感性研究 (2)对已开发油田历史模拟 核实地质储量,确定基本的驱替机理(如:是天然驱,还是注水开发) 确定产液量和生产周期 确定油藏和流体特性 提出问题、潜力所在区域 (3)动态预测 开发指标预测及经济评价 评价提高采收率的方法(如:一次采油、注水、注气、化学驱等) 剩余油饱和度分布规律的研究,再现生产历史动态 潜力评价和提高采收率的方向 专题和机理问题的研究 4、油藏数值模拟研究步骤 (1)油藏模拟计划的拟定 确定油藏工程问题 制定模拟策略 工作量估计和经费概算 (2)模拟器的选择 天然裂缝油气藏的模拟应用双重介质的裂缝模型 凝析油气田开发以及注气油田开采应用组份模型 视油、气田含富气或平气大小可采用组份或黑油模型 稠油开发用热采注蒸汽模型 注各种化学剂的三次采油应用化学模型 而对一般油藏,模拟可选用常规油气田开发的黑油模型 (3

Fortran关键字write的用法

Fortran关键字: write的一般用法是: write(unit = 5,format = 100) x unit = 5表示输出内容写入到设备号为5的文件,format = 100 表示使用标号为100的格式。 其实也可以理解成将变量x的值使用标号为100的格式输出到5号设备上。 那么如果不是输出到5号“设备”上呢,比如: character :: getchar(12) write(getchar, format = 100) 'Hello world!' 上面语句的作用是:将'Hello world!'字符串按照标号100的格式赋值给getchar变量。当然他们之间的字符数量最好一致。如果不一致还是会报一点小错误的。 至于为什么用这种方式赋值,我想大概是因为想统一格式吧。 *************************************** 原来这种给关键字赋值的方法叫做“内部文件”。 选择好的参考书还是很重要的。 ************************************** 总结:write不仅可以用来输出,而且可以用来赋值。

Fortran的字符串处理

声明:     (1)长度为20个字符的字符串   character(20) :: a     (2)长度为20个字符,数组大小为3的字符串数组    character(20) :: a(3)                                                character(20),dimension(3) :: a 赋值调用:     (1)整体赋值   a = "*********"        字符串中的单个字符    a(2:2) = "*"    !不能使用a(2)调用单个元素                              IF(a(i:i) == ' ') a(i:i)='*'     (2)单个数组元素   a(1) = "*********"        单个元素中的单个字符     a(2)(2:2) = "*"     (3)字符变量使用前要明确其大小,需要显示声明。或者子程序接受参数传递得到其大小。     SUBROUTINE HELLO(C)         CHARACTER (LEN = *) :: C(*) !没有声明大小,接受传递         C(2)="JEFFHUGH"         C(3)="INGRESS"         DO I=1,3             PRINT *,C(I)         ENDDO     END SUBROUTINE HELLO     PROGRAM MAIN         CHARACTER(LEN = 11) :: HI(3) !必须声明大小         HI(1) = "HELLO WORLD"         CALL HELLO(HI)         PAUSE     END PROGRAM MAIN

Fortran77到Fortran90的注意之处

1. Fortran 77是固定格式,每行前六个字符不写代码。Fortran 90是自由格式,每行前没有限制。 2. Fortran 77每行以C,c或*开始则为注释行。Fortran 90以!引导注释。 3. Fortran 77每行第6列若不是空格和0,则该行为上一行的续行。Fortran 90以&符号作为续行符,标识在上一行的末尾或者待续行的开始。 4. Fortran 77每行第7-72列为代码区。Fortran 90的前132列为代码区。 5. Fortran 77对应的文件扩展名为.for或.f。Fortran 90对应的文件扩展名为.f90。 6. Fortran 77的变量名或程序名最多为6个字符。Fortran 90的变量名或程序名最多为31个字符。 7. 字符串表示中Fortran 77用''表示,Fortran 90既可以用'',也可以用""。 8. 逻辑运算符表示不一样:        ==      /=       >     <     >=     <=         !Fortran 90用法       .EQ.    .NE.     .GT.  .LT.  .GE.   .LE.       !Fortran 77用法 已经有一些开源的程序可以将Fortran 77程序自动转换为Fortran 90,转换程度已相当好。 (1) https://bitbucket.org/lemonlab/f2f/      f2f is a Perl script which does much of the tedious work of converting Fortran 77 source code into Fortran 90/95 form. There seems to be a lot of Fortran hate in the world, and I think this comes from people who have been forced to use Fortran 77 at some time or another. Hopefully, this program will mak