微信一键登录

科吉思石油论坛

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

tNavigator-Python API - PythonAction解读

[复制链接]

136

主题

205

帖子

264

积分

中级会员

Rank: 3Rank: 3

积分
264
跳转到指定楼层
楼主
发表于 2020-5-20 17:19:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 乔聪颖 于 2020-5-20 17:23 编辑

夫风生于地,起于青苹之末。
--宋玉《风赋》

记得大学期间,有位室友是位游戏大神,即使玩的是FC模拟器,也会花样百出,引起我们的驻足围观。
很多事情做的时间长了,都会有些乏味,数值模拟也不例外。但是生产动态的自动化控制却很值得玩味,里面的动态化设置就像是在制定一套优化的游戏策略,在规则限定内将自动化地调配资源。由于达到了别人轻易做不到的事情,获得的满足感也会更多。

提到生产动态控制,大家的第一反应应该是Action*+UDQ,灵活、功能丰富,但是常常会被里面的语法结构搞得云里雾里,而且从语法层面而言,有些功能(比如循环等)很难实现。
有没有办法解决这一不足呢?有的。
自动化控制的与编程语言中的控制流程非常相近,倘若在Schedule部分可以直接应用某一门编程语言,那么该功能会得到的极大扩展,易用性很好的Python语言正好合适。但是编程语言无法与数值模拟的计算结果直接对接,即使可以对接,也需要自定义很多的底层实现,这对于没有一定编程基础的建模/数模工程师显然不太现实。倘若由专业的开发人员依据建模/数模工程师的工作需求,预先设置好API接口,软件用户可以轻松掌握调用方式,从而实现特定的功能,则不失为很好的解决方案。
本质上而言,上述思想与编写软件类似,只是增添了更加具有交互性的功能实现。但正是这种交互性,使得建模/数模工作方式、效率上升了一个台阶。

tNavigator中提供了PythonAction接口,满足了上述需求。
PythonAction的特点与优势:
  • Python完善的语法和逻辑
  • 丰富的API
  • 支持标准助记符-Summary
  • 创建和引用自定义曲线
  • 相当于UDQ,但是更优化)
  • 支持第三方库
  • 自定义输出日志信息

当然,想要游刃有余,还需下点功夫。
--------------------------------
【API介绍-函数与数据结构】
PythonAction接口与GraphCalculator接口非常类似,基本上都是以graph为核心的功能,支持大部分Summary关键字,支持第三方库的调用等等,很多函数和属性都是通用的。但是,二者也有不少不同之处,主要体现在:
1)     Graph Calculator中的函数、属性会更复杂、丰富,具有针对model和timestep的对象类型,而PythonAction中没有;
2)     PythonAction具有针对schedule部分关键字(即生产动态控制参数)以及流程控制的特殊对象结构,而GraphCalculator中没有。

【调用方式】
方式一:ModelDesigner-Apply Script rule界面
既然与编程语言Python打交道,自然少不了编写程序代码。敲打代码可以在Model Designer>>Wells Data>>Strategies中Apply Script rule界面(上图)中实现,也可在自己喜欢的编辑器中写好后复制到Apply Script代码框中,指定脚本文件以及函数名称即可。
来个小小挑战:

上述代码的目标:
  • 含水率大于95%的井转注;
  • 每个井组最多不超过3口井转注;
  • 整个油藏范围内不超过10口井转注。

方式二:数模文本调用
与方式一类似,需要将脚本文件名称和所需调用的函数写在ApplyScript关键字中,定义在合适的位置:

说在最后:
如同系列教程中的其它文章一样,本文并未详细介绍PythonAction接口的详细内容,也并未针对案例进行详细解读,内容虽简要,却有一定价值,想要了解PythonAction的功能,本文已足够。
如同我在Python入门中介绍的那样,编程是一门实践性的工作,想要将PythonAction如臂使指,不妨先尝试参考manual,将文中案例吃透。

参考链接:
《tNavigator-Python解释器及第三方库安装指导》
《tNavigator-Python入门(基本数据类型、程序控制结构以及函数式编程)》
《tNavigator-Python API - Graph Calculator解读》

其他参考链接:
《tNavigator-Graph Calcuator-输出统计信息至txt文件》
《tNavigator-Graph Calcuator-自定义任意小层合采曲线》
《tNavigator-Python高级应用汇总》
《智慧油田特色解决方案:定制化的“经济指标优化” (智能历史拟合高级应用)》
《用户案例分享-tNavigator中通过Python接口整合多井信息并在泡泡图中应用》
《tNavigator小技巧20-Python应用之泡泡图调用自定义曲线》
《Graph Calculator - tNavigator实现Python私人定制(应用篇:灵活统计贡献井数)》
《Graph Calculator - tNavigator实现Python私人定制(基础篇)》
《tNavigator 18.1开放Python接口——实现图形输出的“私人定制”》

数模太平淡?来点PythonAction!
End.
------------------------------------------------
更多tNavigator技巧及应用,欢迎加入tNavigator技术交流QQ群:777385939。
更多石油行业前沿资讯与应用,请关注科吉思石油:
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 04:02 , Processed in 0.312500 second(s), 33 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

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