阳光石油网|石油技术交流|石油人论坛

 找回密码
 欢迎注册
查看: 1565|回复: 0

[tNavigator] tNavigator 18.1开放Python接口——实现图形输出的“私人定制”

[复制链接]
  • TA的每日心情
    开心
    2022-2-6 18:28
  • 签到天数: 1492 天

    [LV.10]以坛为家III

    发表于 2018-5-18 08:20:15 | 显示全部楼层 |阅读模式

    马上注册,下载丰富资料,享用更多功能,让你轻松玩转阳光石油论坛。

    您需要 登录 才可以下载或查看,没有账号?欢迎注册

    x
    本帖最后由 sniper 于 2018-5-18 09:12 编辑

    tNavigator 18.1开放Python接口——实现图形输出的“私人定制”

    乔聪颖

    12.jpg
    我个人很关注Python。Why?因为Python是现在做数据统计、大数据分析最热门的语言。作为引领新一代GPU级高效精准数值模拟技术,tNavigator与技术前沿紧密结合,在18.1版本中,Python不仅可以应用在后处理中,也可以应用在AHM & Uncertainty(辅助历史拟合及敏感性分析)及ModelDesigner GUI(模型设计交互界面)中。
    本次将与大家分享Python在图形输出方面的应用。
    3.jpg
    Graph Calculator操作界面示例
    well、group、connection、model、temestep、graph和global,这里定义了几类对象,每类对象都有自己的属性和方法,接触过python的小伙伴是不是很熟悉?!
    Graph Calculator可以将对象的属性/方法和关键字直接应用到代码块中。为了方便编程,tNavigator设计者将其直接放置在界面的右侧及下方,非常贴心!
    左上部分是代码输入窗口及调试窗口,输入好代码后,只需轻轻按下Calculate……看到输出框中的Complete了吗?!可以小小的高兴一下了!
    Tips:所有执行后的程序都会保存在当前模型中。
    4.jpg
    执行Python代码后的输出展示
    而在常规的操作中,则较为繁琐:
    • 需要3处设置,sum、param、对应的层位
    • 查看不同的井时,需要重新勾选!

    5.jpg
    常规操作的输出展示
    Python一段代码就可以省却频繁的选项操作!
    说明:代码的含义是计算单井在70≤k<100层的产油量之和。
    这个例子来源于tNavUserGuideEnglish-Graph Calculator中三个例子中最简单的那个,稍加改动(原例中计算的是70≤k<100层的产油量之和占单井产量的比例,这个功能在现有情况下无法直接呈现)。
    原始代码如下:
    tmp = graph(type='well', default_value=0)
    for c in get_all_connections():
    if c.k in range(70,100):
    tmp[c.well] += copr[c]
    wopr_layer2 = tmp/wopr
    ---------------------------------------------
    Python的应用可以使我们完成常规操作无法实现的功能!
    接下来可以看第二个例子(只作验证、说明):计算某个子集的油井(名称以'3'开头)的平均产油量,并将其与历史数据进行比较,二者之差的平方可以作为拟合的目标函数。
    注意:此处示例需要一个额外的文件-历史数据,经过对sch部分的处理可以得到,如下图所示:
    6.jpg
    依据历史数据整理的文件
    7.jpg
    结果展示
    原始代码如下:
    s=','.join ([x.name for x inget_wells_by_mask ('3*')])
    obs = wopr.avg (objects = s)
    inpf =open('C:/Users/Administrator/Desktop/well.txt', 'r')
    arr = [(line.split()[0],float(line.split()[1])) for line in inpf ]
    hist = create_table_vs_time(arr)
    fuobj = (obs - hist)**2
    验证:
    8.jpg 9.jpg
    10.jpg
    结果验证
    --------------------------------------------
    这是非常好的尝试!编程正在“全民化”,数模(包括其他行业)与编程的结合不仅简化了工作流程和强度,带来更多的可能性,如同手握刀尺的工匠,随心所欲去打造自己的作品!相信随着tNavigator版本的不断更新,这部分的内容会更加完善和强大!

    附:
    有时间我们会推出Python在AHM & Uncertainty及ModelDesigner GUI中的应用。
    若是需要定制Python代码,从而实现某项操作复杂却又重复性较多的功能,或者想实现某些常规操作无法实现的功能,可以联系我们一起交流!也欢迎您将自己的应用实例分享出来!


    1.png


    原文链接:https://mp.weixin.qq.com/s/jlkj8p8kFfgy8p6IOf0H-w
    您需要登录后才可以回帖 登录 | 欢迎注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|阳光石油网 ( 鲁ICP备2021003870号-1 )

    GMT+8, 2024-5-29 15:40 , Processed in 0.064415 second(s), 23 queries .

    Powered by Discuz! X3.4 Licensed

    Copyright © 2001-2021, Tencent Cloud.

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