双水平井SADG软件井眼轨迹仿真模块设计与实现

2020-04-08 09:30阳万里刘波涛
电脑知识与技术 2020年3期

阳万里 刘波涛

摘要:采用“最小曲率法”对井眼轨迹进行建模,基于pandas进行数值预处理,利用Numpy进行科学计算,使用Matplotlib进行图形可视化,最后利用PyQt完成GUI开发。文中给出了模块设计的原理及算法,阐述了软件模块设计流程图,最后给出了测试实例及结果。经过实际井斜数据的验证表明,软件模块运行稳定,可视化效果良好,能有效指导实际开发过程。

关键词:SAGD;井眼轨迹仿真;python; PyQt; Matplotlib

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2020)03-0267-03

随着当今社会的发展,石油作为当前社会的工业血液,其需求也与日俱增。稠油作为一种非常规油气,储量丰富具有极大的开采潜力,因此稠油开采技术就成为当前石油开发技术研究的重点问题之一[1]。目前,稠油开采技术方案较多,如表面活性剂开采技术、改进的蒸汽法开采技术、微生物强化开采技术、井下催化反应法开采技术等[2]。其中,应用较为广泛的是蒸汽辅助重力泄油(Steam Assisted G ravity Drainage.以下简称SAGD)技术[3],且多以双水平井蒸汽辅助重力泄油技术[4]为主。双水平井SACD有预热和生产2个不同的开发阶段,开发双水平井SACD软件,去揭示不同开发阶段过程中油藏的不同发育形态,可以指导SAGD开发策略,具备极大的实际应用价值。在双水平井SACD软件中,温度场与产量的计算都离不开井眼轨迹的计算和仿真,准确的井眼轨迹对于SACD的预热阶段温度场扩展,生产阶段蒸汽腔发育的状态,都有很大的影响。

对于SACD数值模拟软件来说,如CMG start,Eclipse500热采模拟器等,其主要面对的是国外海相油藏,而中国国内多是陆相油藏,有一定参考价值但略显不足。同时,该类软件售价高昂,学习成本也不低,开发SACD软件就有实际价值与意义。以下,以笔者研制的双水平井SADG软件井眼轨迹仿真为例,阐述设计思路与实现。

1 软件设计原理及算法研究

双水平井SAGD的井眼轨迹包括生产井井眼轨迹与注入井井眼轨迹,其实际上是两条三维空间的曲线,而实际油藏开发过程中,井眼轨迹数据并不是直接的三维空间数据坐标,必须经过算法转换、数值建模,才能将井眼轨迹数据转为三维空间数据,最后用以可视化显示[8]。

1.1 井眼轨迹仿真理论

井眼轨迹使用的坐标系为地理坐标系,包含正东(E),正北(N),正西(E),正南(S)和海拔高度(H)。井眼轨迹主要参数有很多,如井深,井斜角,井斜方位角,狗腿角,降斜点,增斜段等[6]。实际井眼轨迹数据是测量仪器在不同测点测量的数据,井眼轨迹在每个测点的参数包含3个,分别是测深,井斜角,井斜方位角[7],如图1所示,A为上测点,C为下测点,0为上测点的垂线与下测点水平面的交点,下测点所在的平面为平面COD,其中,OD平行于N方向。

1.2 井眼轨迹仿真算法模型

井眼轨迹附近因蒸汽注入形成的三维温度场,在时间与空间上都影响三维蒸汽腔发育状态,所以三维井眼轨迹模型较为适用。三维井眼轨迹仿真模型[7]常用方法包括正切法、平衡正切法、最小曲率法、曲率半径法等。为了计算精确的井眼轨迹模型[8],通常将井眼轨迹看作空间上连续的曲线或圆弧。笔者采用最小曲率算法计算井眼轨迹坐标[9]。

井轨迹空间状态一般以O-NED坐标系来描述(见图2)。其中原点0为井口,N是正北方,E是正东方,D是井垂直深度。

根据井眼轨迹测点数据,计算出每个测点在NED的偏移量,获取井眼轨迹在坐标内的真实坐标。由于测量数据是不连续的,为得到较为连续的井眼轨迹,因此需对不连续的井眼轨迹坐标进行插值处理[10]。

2 井眼轨迹仿真模块的设计与实现

井眼轨迹仿真模块属于双水平井SADG软件的一部分,其中包括GUI用户交互、数据预处理、数值计算、计算结果可视化等。主要运用Python语言,需要的工具库:CUI用户交互(Py-Qt);井眼轨迹数据的预处理(Pandas);井眼轨迹坐标的数值计算(Numpy);图形化展示(Matplotlib)。

2.1 模块的流程框图

模块整体流程如图3所示。由图可知,该流程主要分为六大步,分别是加载数据、显示数据、计算坐标、插值处理、显示数据。

2.2 模块的实现

为方便具体的用户使用,整个井眼轨迹仿真模块主要的功能实现由三个子模块实现:子模块一实现井眼轨迹数据的加载与录入功能;子模块二根据1.2章节最小曲率算法模型,实现井眼轨迹坐标的计算与插值处理;子模块三实现在桌面显示井眼轨迹与和用户交互的功能。

2.2.1 子模块一的实现

假設井眼轨迹控制类名称为main_frame,实现如下:

obtain_we11_3D_coordinate_by_well_deviation(listReadedDa -ta1。

该函数的作用是将入读的井斜数据listReadedData转为真实的空间坐标。

2.2.2 子模块二的实现

实现如下:

1) get_all_coordinate_point_3d(row_well_arr)。第一个参数为3*N的井眼轨迹的数据,包含井深,井斜角方位角。根据最小曲率算法,计算出相关的井眼轨迹每个点的空间坐标。

2) hole_trajectory_interpolation(well_coordinate, point_times)。该函数有两个参数,well—coordinate代表插值的坐标数,point_times代表将点插值的倍数。

2.2.3 子模塊三的实现

实现如下:

1) draw_2d_well_by_data(well_datas. tab_canvas. is_scatter=True。x_label=N,y-label=TVD,axes_title=None)。该函数包含6个参数,well_datas井眼轨迹坐标数据,tab_canvas代表要绘制的画布类,is_scatter代表的是绘制散点还是直线图,true绘制散点图,false绘制连续曲线图,x_labe代表x轴的标签,默认值为“N”,y_label代表ylabel的标签,默认值为“TVD”(true verticaldepth),axes_title代表当前图像的标题。返回绘制完成之后的画布。

2) draw_3d_well_by_data(well_datas. tab_canvas. is_scatter=True,x_label=N,y-label=TVD,axes_title=None)。该函数包含6个参数,well_datas井眼轨迹坐标数据,tab_canvas代表要绘制的画布类,is_scatter代表的是绘制散点还是直线图,true绘制散点图,false绘制连续曲线图,x_labe代表x轴的标签,默认值为“N”,y_label代表ylabel的标签,默认值为“TVD”(true verticaldepth),axes_title代表当前图像的标题。返回绘制完成之后的画布。

3 实例与分析

点击井眼轨迹仿真模块,输入生产井井斜数据,注入井井斜数据之后,点击绘制井眼轨迹,可观察图形化结果。对现场生产井与注入井3101、310P数据进行应用,软件具体运行结果如下图4所示。

由图可知,蓝色曲线为注入井,红色曲线为生产井,曲线较为光滑,双水平井的井眼轨迹空间状态展示良好,能反映实际情况。

4 结论

(1)基于最小曲率算法建立了双水平井SACD的井眼轨迹仿真模型。

(2)系统地给出了设计与实现双水平井SACD软件井眼轨迹仿真模块的开发思路,功能模块流程图,基本运行界面。

(3)应用研制的软件模块对现场注入井3101与生产井310P进行了应用,应用结果显示,该软件模块具有很好的使用价值。

参考文献:

[1]王陆新,潘继平,娄钰.近十年中国石油勘探开发回顾与展望[J]国际石油经济,2018,26(07):65-71.

[2]贾学军.高粘度稠油开采方法的现状与研究进展[J].石油天然气学报(江汉石油学院学报),2008(02):529-531+537.

[3]王大为,周耐强,牟凯,稠油热采技术现状及发展趋势[J].西部探矿工程,2008(12):129-131.

[4]边晓强.双水平井SAGD超稠油生产优化研究[D].成都:西南石油大学, 2017.

[5]何亮亮.超稠油SAGD蒸汽腔扩展研究[D].成都:西南石油大学,2018.

[6]陈刚,杨雪,潘保芝,蒋必辞.井眼轨迹计算及可视化研究现状[J]世界地质,2015,34(03):830-841.

[7]徐堪社.井眼轨迹计算及可视化系统研究与开发[D].西安:西安石油大学,2012.

[8]沙林秀,邱顺,何雪.三维井眼轨迹可视化研究现状与发展趋势[J]石油机械,2019,47(02):33-39+48.

[9]曹传文,薄珉,最小曲率法井眼轨迹控制技术研究与应用[J].石油钻采工艺,2012,34(03):1-6.

[10]李文燕.复杂井眼轨迹的多目标优化技术研究[D].西安:西安石油大学。2019.

[11]魏佳,段友祥,李卿,孙歧峰,李洪强,面向地质导向的三维井筒可视化[J].计算机系统应用,2017,26(04):9-15.