微信一键登录

科吉思石油论坛

搜索
查看: 2286|回复: 0
打印 上一主题 下一主题

tNavigator-Graph Calculator-统计油藏整体分层产量

[复制链接]

136

主题

205

帖子

264

积分

中级会员

Rank: 3Rank: 3

积分
264
跳转到指定楼层
楼主
发表于 2020-9-12 18:26:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 乔聪颖 于 2020-9-15 16:29 编辑

在tNavigator的后处理中,可以轻松统计单井某一小层或部分小层的产量信息,每个射孔网格的产量数据是绘制产液剖面的基础。
不过,对于整个油藏(比如Field级别)而言,这些数据通常并不会分层统计,当我们需要统计整个油藏在某一层位的产量信息时,就会稍显无力。
好在tNavigator的后处理足够强大!
------------------------------------------
【案例描述与分析】
需求:获取所有层位的、独立的、最后时间步(或任意时间步)的累产油数据。
分析:其实基础数据是有的,即单井的各个层位的产量数据,难点在于如何高效地进行统计。

【基础解决方案-Cut】
Cut在tNavigator中的应用灵活、强大、丰富,其实用性超乎想象。
首先,设置Cut,指定想要统计的层位。

再次,将Cut应用到Graph中。

Cut方法快速、直观,当仅仅统计某几个层位的数据时,非常有效,但是在面对层位数量较大的模型时(比如几百个小层),则至少需要操作几百次,顿时累觉不爱。。。
此时,可以考虑用tNavigator中开放的Python API之一-Graph Calculator来解决。

【高级解决方案-Graph Calculator】
主要思路:循环判断,以层位为条件,将所有在该层的射孔网格产量累加在一起,以字典形式保存并输出。
  1. m =get_model_by_name('BLACK_OIL_DEMO')
  2. t_last= get_all_timesteps()[-1]

  3. opt_layer= {}

  4. forlayer in range(1, 128+1):
  5.     opt_layer[layer] = 0
  6.     for c in get_all_connections():
  7.         if c.k == layer:
  8.             opt_layer[layer] += copt[m, c,t_last]

  9.     print("Layer", layer, '累产量:', opt_layer[layer])
复制代码

【拓展与反思】
Cut方案非常有效,但是对批量化的需求时则难以应对;
GraphCalculator方案拓展性很强,比如,可以将统计结果输出至txt/excel文件;可以统计任意时间步的数据;也可以将数据以曲线的形式输出,生成几百条曲线,在界面中直接显示等。鉴于当前的需求较为简单,复杂拓展大家可以自行尝试。

End.
参考链接:
可以参考本论坛置顶帖-导航贴中关于Python应用部分的帖子。
-----------------------------------------
更多tNavigator技巧及应用,欢迎加入tNavigator技术交流QQ群:777385939。
更多石油行业前沿资讯与应用,请关注微信公众号“科吉思石油技术”!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|服务支持:DZ动力|科吉思石油技术咨询有限公司 ( 京ICP备15057753号

GMT+8, 2024-4-23 16:56 , Processed in 0.473632 second(s), 31 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表