科吉思石油论坛

标题: tNavigator-PythonAction-顺次开井实现井组产能控制 [打印本页]

作者: 乔聪颖    时间: 2021-2-19 18:10
标题: tNavigator-PythonAction-顺次开井实现井组产能控制
本帖最后由 乔聪颖 于 2021-2-20 11:31 编辑

                          
针对数值模拟中生产动态的自动控制,tNavigator中的PythonAction功能愈发强大。
------------------------------------------------
【案例分析】
目标:顺次开井以达到井组/全区稳产控制。
要解决这个问题需要两点考量:
1.需要理解井组控制;
2.难点在于井组中井的数量太多时如何处理。
关于井组控制可参考网上资料,此处不做详解,可参考后续截图。
当井组中的井数不多时,通过Action+UDQ的方式可以轻松实现,多层嵌套即可。但是当井数达到十几口甚至几十口上百口时,这种嵌套形式显然太过笨拙。
本次以tNavigator中的PythonAction功能来实现该需求,跳出传统框架,更加灵活、强大。

【代码解析】
  1. # open wells subsequently to maintain group production rate

  2. # define well_list containing all the wells which will change
  3. well_list = ['1', '3', '15', '22', '24', '26', '27', '31', '33', '34', '35', '36', '40', '48', '50']

  4. def action_for_specific_wells():
  5.     # get well name
  6.     wlist = [get_well_by_name(w) for w in well_list]
  7.    
  8.     # judge by group oil rate
  9.     g = get_group_by_name('FIELD')
  10.    
  11.     if gopr[g] < 300:
  12.         temp = 0
  13.         for i in range(len(wlist)):
  14.             temp = i
  15.             if wopr[wlist[i]] < 0.00001:  
  16.                 # print(wlist[i].name)
  17.                 add_keyword(
  18.                     """
  19.                     welopen
  20.                     """+wlist[i].name+""" open /
  21.                     /
  22.                     """)
  23.                 print("At",get_current_date().strftime("%d.%m.%Y %H:%M:%S"),
  24.                          "well ",wlist[i].name," was open.")
  25.                 break
  26.         print(temp)              
  27.         if temp == (len(wlist) - 1):
  28.             script_off()
复制代码
红框内容需要重点注意,也是有可能需要修改的地方。

参考链接:
可在科吉思官方微信公众号“科吉思石油技术”以及官方论坛“http://bbs.colchis.cn/“中搜索“Python“”Action“相关内容。

End.
------------------------------------------------
更多tNavigator技巧及应用,欢迎加入tNavigator技术交流QQ群:777385939。
更多石油行业前沿资讯与应用,请关注科吉思石油:






欢迎光临 科吉思石油论坛 (http://bbs.colchis.cn/) Powered by Discuz! X3.2