本帖最后由 乔聪颖 于 2020-9-15 16:29 编辑
在tNavigator的后处理中,可以轻松统计单井某一小层或部分小层的产量信息,每个射孔网格的产量数据是绘制产液剖面的基础。 不过,对于整个油藏(比如Field级别)而言,这些数据通常并不会分层统计,当我们需要统计整个油藏在某一层位的产量信息时,就会稍显无力。
好在tNavigator的后处理足够强大!
------------------------------------------
【案例描述与分析】 需求:获取所有层位的、独立的、最后时间步(或任意时间步)的累产油数据。
分析:其实基础数据是有的,即单井的各个层位的产量数据,难点在于如何高效地进行统计。
【基础解决方案-Cut】 Cut在tNavigator中的应用灵活、强大、丰富,其实用性超乎想象。
首先,设置Cut,指定想要统计的层位。
再次,将Cut应用到Graph中。
Cut方法快速、直观,当仅仅统计某几个层位的数据时,非常有效,但是在面对层位数量较大的模型时(比如几百个小层),则至少需要操作几百次,顿时累觉不爱。。。
此时,可以考虑用tNavigator中开放的Python API之一-Graph Calculator来解决。
【高级解决方案-Graph Calculator】 主要思路:循环判断,以层位为条件,将所有在该层的射孔网格产量累加在一起,以字典形式保存并输出。
- m =get_model_by_name('BLACK_OIL_DEMO')
- t_last= get_all_timesteps()[-1]
- opt_layer= {}
- forlayer in range(1, 128+1):
- opt_layer[layer] = 0
- for c in get_all_connections():
- if c.k == layer:
- opt_layer[layer] += copt[m, c,t_last]
- print("Layer", layer, '累产量:', opt_layer[layer])
复制代码
【拓展与反思】 Cut方案非常有效,但是对批量化的需求时则难以应对;
GraphCalculator方案拓展性很强,比如,可以将统计结果输出至txt/excel文件;可以统计任意时间步的数据;也可以将数据以曲线的形式输出,生成几百条曲线,在界面中直接显示等。鉴于当前的需求较为简单,复杂拓展大家可以自行尝试。
End.
参考链接:
可以参考本论坛置顶帖-导航贴中关于Python应用部分的帖子。
-----------------------------------------
更多tNavigator技巧及应用,欢迎加入tNavigator技术交流QQ群:777385939。
更多石油行业前沿资讯与应用,请关注微信公众号“科吉思石油技术”!
|