本帖最后由 乔聪颖 于 2020-9-15 16:47 编辑
在上期的解决方案中,我们通过Graph Calculator解决了“统计油藏整体分层产量”的问题,示例中仅展示了输出单一参数,多参数同时输出可以自行拓展。
不过,鉴于写Python代码需要一点编程基础,而且在尝试“多参数输出”时遇到了一点问题,特在此与大家分享。
本文主要内容:
1.通过Graph Calculator实现“统计油藏整体分层产量”多参数输出;
2.讨论当前Graph Calculator能够处理问题的边界-部分参数无法进行统计
3.特定参数统计输出的解决办法
------------------------------------------
【案例描述与分析】 需求:同时获取所有层位的、独立的、最后时间步(或任意时间步)的累产油等多个参数。
客户提出的参数有累产油、累产水、累产气、含水率、地质储量、采出程度。
【Graph Calculator多参数同步输出】 由于累产油、累产水、累产气、含水率等参数的基础数据存在,且属于一类,所以,将上期的代码做下简单修改即可实现,不做赘述:
- m =get_model_by_name('BLACK_OIL_DEMO')
- t_last= get_all_timesteps()[-1]
- stat_layer= {}
- print(m.name,'opt', 'gpt', 'wpt', 'wct')
- forlayer in range(1, 128+1):
- stat_layer[layer] = []
- stat_opt = 0
- stat_wpt = 0
- stat_gpt = 0
- stat_wct = 0
- for c in get_all_connections():
- if c.k == layer:
- stat_opt += copt[m, c, t_last]
- stat_wpt += cwpt[m, c, t_last]
- stat_gpt += cgpt[m, c, t_last]
- stat_wct += cwct[m, c, t_last]
- stat_layer[layer].append(float(stat_opt))
- stat_layer[layer].append(float(stat_wpt))
- stat_layer[layer].append(float(stat_gpt))
- stat_layer[layer].append(float(stat_wct))
- print("layer", layer,stat_layer[layer][0], stat_layer[layer][1], stat_layer[layer][2],stat_layer[layer][3])
复制代码
【Graph Calculator能够处理问题的边界】 在以上的问题中,基础数据均是射孔网格/Connections的数据,这些数据可以在tNavigator中直接获取(可参考上期微文《tNavigator-Graph Calculator-统计油藏整体分层产量》中Cut解决方案):
但是,地质储量、采出程度等数据则不同,它们的基础数据是场图数据/Properties,这类基础数据在Graph Calculator中暂时并不支持调用。
恭喜你,触及到了Graph Calculator能够处理问题的边界。主体上,Graph Calculator可以处理以connection、well、region、model等相关的基础Graph数据,对于以场图数据为基础的Properties数据,暂时还无能为力。
虽然在tNavigator中有了Cut/Map等神器支持对Properties数据进行处理,但是,毕竟与Graphs数据的处理有本质上的区别。值得高兴的是,tNavigator的研发人员正在努力将二者的处理能力融为一体,相信更便捷的功能很快会和大家见面,未来可期!
【特定参数统计输出的解决办法】 虽然我们暂时不能通过Graph Calculator便捷处理地质储量、采出程度等数据,但是依然可以通过其他的手段获取,只是有点繁琐。
方法一:User Arithmetics或者Model Designer中的Workflow
具体实现就不做尝试了,有兴趣的话可以参考文末的链接自行尝试,这里仅给出User Arithmetics的一个示例:
方法二:自定义分区,并计算模型
一般的数模中允许自定义分区,相应的数据统计会随着模拟运算而被计算出来。
重新加载模型并计算后,可以轻松获取前面想要的5个参数:
【分析与总结】 从直观上看,“方法二-自定义分区”似乎最直接、最简单,也最有效,那么为什么还要有其他的大篇幅内容介绍其他方法呢?主要是因为“方法二-自定义分区”需要重新计算模型,或者在模型运算前先做好相关定义;另外,当我们想要统计其他形式的参数时,需要再次定义文本以及运算模型。倘若模型较小,则时间成本或可接受。
而Graph Calculator等其他方法致力于在任意已计算好的模型的基础之上、基于已有的基础数据进行灵活、高效的处理,无需计算模型,且满足多种多样的复杂需求。
也许很快研发人员就能够推出更为优化的解决方案,鱼与熊掌,我们都能得到!
End.
参考链接:
请参考文章顶部专辑“tNav之Python应用”
《tNavigator-Graph Calculator-统计油藏整体分层产量》
http://bbs.colchis.cn/thread-7815-1-1.html
《tNavigator-Arithmetic-统计任意区域内的网格属性》
http://bbs.colchis.cn/thread-7816-1-1.html
《tNavigator-Workflow-批量输出场图的统计数据》
http://bbs.colchis.cn/thread-6158-1-5.html
-----------------------------------------
更多tNavigator技巧及应用,欢迎加入tNavigator技术交流QQ群:777385939。
更多石油行业前沿资讯与应用,请关注微信公众号“科吉思石油技术”!
|