中法渤海地质服务有限公司
中图分类号: TE132.1
文献标识码: A
责任编辑:
收稿日期: 2019-04-9
网络出版日期: 2019-06-25
版权声明: 2019 《录井工程》杂志社 《录井工程》杂志社 所有
作者简介:
作者简介 王盼 工程师,1990年生,2013年毕业于长江大学勘查技术与工程专业,现在中法渤海地质服务有限公司湛江分公司从事PreVue随钻压力监测工作。通信地址:524000 广东省湛江市坡头区南油五区物业公司二楼。电话:13326508406。E-mail:wangpan@cfbgc.com
展开
摘要
在现场计算油气上窜速度过程中,由于井身结构以及钻具组合较为复杂,通过解方程的方法计算上窜高度计算量大。为此,介绍了一种油气上窜高度计算方法,考虑钻具排替的影响,采用VB.NET编程语言实现油气上窜速度的计算,将复杂的求解过程交给计算机来处理。经过若干口井的计算结果对比发现,通过程序代码可以更高效而又准确实现油气上窜速度的计算,为现场录井工作人员提供参考和便利。
关键词:
Abstract
In the process of calculating oil and gas upward velocity in the field, because of the complexity of the hole structure and make-up of string, the calculation of upward height by solving the equation requires a large amount of calculation. For this reason, a calculation method of oil and gas upward height was introduced. Considering the influence of drilling tool displacement, VB.NET programming language is adopted to calculate the upward velocity of oil and gas, and the complex solving process is handed over to the computer to deal with. Comparing the calculation results of several wells, it is found that the calculation of oil and gas upward speed can be realized more efficiently and accurately through the program code, which provides reference and convenience for field mud logging staff.
Keywords:
在油气勘探开发领域,尤其在高压井的钻探过程中,在进行长起钻作业之前须通过短起下来明确油气上窜速度[1],进而调整钻井液密度性能,以免井筒钻井液液柱不能有效平衡地层压力导致油气进入井筒量太多而发生井涌或溢流等钻井事故,故油气上窜速度计算结果的准确性对井控安全有重要的指导作用[2,3,4]。
在海上油气勘探开发过程中,对油气上窜速度的影响因素比较多,最大的影响因素是下钻时钻具的排替导致环空静止钻井液出现上返现象[2],故常用“体积法”[5]来计算油气上窜速度。“体积法”计算模型在复杂钻具组合以及多层井身结构存在的情况下求解步骤繁多,手动计算中极易出现错误。为此,将计算模型中的各种情况采用VB.NET编程集成于不同的计算模块之中,有效解决手动计算方法效率低下的问题。
“体积法”是目前较为准确且常用的油气上窜速度计算方法。油气上窜分为两种情况,除了常规起下钻后钻井液长期静止导致的油气上窜(需要考虑钻具排替)外,还有钻具长时间静止不动时钻井液长期静止导致的油气上窜(如地层测试、长时间卡钻无法循环等钻井液长期静止的情况,不需要考虑钻具排替)。下文以常规起下钻后油气上窜速度的计算为例,必须考虑钻具排替[6,7]。计算分以下三个部分进行。
(1)在给定了井身结构数据以后,对于任意深度Hx将对应唯一的井眼体积
(2)在给定了钻具组合数据以后,对于任意钻头深度Hb将对应唯一的钻具闭端排代体积(钻具体积与钻具内容积之和)为
(3)故可以得到任意钻头深度Hb对应的唯一环空体积
为了计算油气上窜速度,必须准确计算任意深度Hx(0<Hx≤Hb)对应的环空体积
(1)对于任意深度Hx对应的钻具排替钻井液等效体积
(2)对于任意深度Hx对应的环空体积
要准确计算
采用从开泵至见气测异常时[4]总泵冲数反推井深Hab对应的环空体积
而开泵至见气测异常时总泵冲数对应的等效钻井液体积Vstk与计算的Vab(Hab)相同,即:
v=
式中:
通过求取Hab,利用上式可计算出油气上窜平均速度v。
在计算油气上窜速度时,常规思路实为“方程式求解法”,即为“直接求解法”求解,求解过程中必须分段计算[7],当油气层与上层套管鞋距离较近时,钻具的排替等效体积(Vdis)分如下两种情况计算(假设油气上窜位置井深不会小于上层套管的顶深)。
第一种情况:油气上窜后位置井深小于套管鞋深。对于钻具排替后又分为:(1)钻具排替致钻井液上返后井深小于套管鞋深;(2)钻具排替致钻井液上返后井深大于套管鞋深。
第二种情况:油气上窜后位置井深大于或等于套管鞋深。而对于钻具排替的情况,在钻具发生排替后分为:(1)底部钻具(其外径异于钻杆外径)顶深大于等于油气上窜后位置井深;(2)底部钻具(其外径异于钻杆外径)顶深小于油气上窜后位置井深,且底部钻具(其外径异于钻杆外径)底深大于或等于油气上窜后位置井深。
如上所述,要想准确计算油气上窜高度,必须考虑井身结构和不同钻具外径对环空体积的影响,而编程语言的便利之处就是可以利用“循环”结构遍历复杂的井身结构与钻具组合对应的所有不同情况,并通过随时对已集成的计算各种体积的“Function”模块的调用轻松完成不同情况下环空体积的求取。
故为了计算
对井身结构可以利用For循环(或Do循环)遍历所有不同截面积井眼对应井段分别计算体积并进行累加计算(对不同钻具组合对应的闭端排代体积原理类似),代码如下(注:Form1为程序主窗体、Grid1为井身结构数据输入表格):
2.2.1 圆柱体体积计算模块
V为圆柱体体积(m3)、D为圆柱体直径(in,1 in=0.025 4 m,下同)、L为圆柱体长度(m)。
Public Function V(ByVal D As String, ByVal L As String) As Single
Return (0.0254 * Val(D)) ^ 2 * Math.PI / 4 * Val(L)
End Function
2.2.2 环形圆柱体体积计算模块
VA为环形圆柱体体积(m3)、ID为环形圆柱体内径(in)、OD为环形圆柱体外径(in)、L为环形圆柱体长度(m)。
Public Function VA(ByVal ID As String, ByVal OD As String, ByVal L As String) As Single
Return Math.Abs((0.0254 * Val(OD)) ^ 2 - (0.0254 * Val(ID)) ^ 2) * Math.PI / 4 * Val(L)
End Function
2.2.3 井眼体积计算模块
程序中VHole为井眼体积(m3)、BitDepth为钻头深度(m)。
Public Function VHole(ByVal BitDepth As Single) As String
VHole = 0
Dim i As Int16
Dim ID As New Queue, L As New Queue
For i = 1 To Form1.Grid1.Rows.Count-2
If i< Form1.Grid1.Rows.Count-2 Then
If BitDepth>= Form1.Grid1(i, 2) And BitDepth< Form1.Grid1(i+1, 2) Then
ID.Enqueue(Form1.Grid1(i, 4))
L.Enqueue(BitDepth - Form1.Grid1(i, 2))
Exit For
Else
ID.Enqueue(Form1.Grid1(i, 4))
L.Enqueue(Form1.Grid1(i+1, 2) -Form1.Grid1(i, 2))
End If
Else
ID.Enqueue(Form1.Grid1(i, 4))
L.Enqueue(BitDepth-Form1.Grid1(i, 2))
Exit For
End If
Next
Dim j As Int16
For j = 0 To ID.Count-1
VHole = VHole+V(ID(j), L(j))
Next
ID.Clear():L.Clear()
End Function
油气上窜位置井深(Hab)可以利用求解方程组得到,也可利用“查找法”间接求得,本文采用“查找法”。在实际应用中有“二分法查找”[8,9,10]和“顺序法查找”[11]两种方法。由于前者的查找计算速度要优于后者[12],故程序设计采用“二分法查找”求解Hab,具体思路如下:
假设Hab已知,则可以计算出Hab对应的环空体积,理论上需要在(0,Hb]范围内“查找”出唯一值Hab满足如下方程组:
鉴于实际查找过程中想要找出一个Hab满足Vstk=
Vstk≈
ΔV=|Vstk-
再利用Hab值结合公式(9)计算出油气上窜速度v。为实现公式(11),只需使公式(12)的ΔV小于0.01即可,即:若
TBoxBitDpeth.Value为钻头深度输入值、TBoxVab.Value为从开泵到见气测异常时总冲数对应体积输入值、TBoxOilDpeth.Value为油气层顶深输入值、DeltaH为油气上窜高度(ΔH)、H为油气上窜后位置井深(Hab)、V为Hab对应环空体积(Vab)。
其核心代码为:
Dim i As Integer=1, H As Single = TBoxBitDpeth.Value, V As Single, DiffHeight As Single
Do
V = VHole(H) - VSOd(TBoxBitDpeth.Value)
‘当ΔV∈[0,0.01)时返回H值,并终止Do循环
If Math.Abs(V - TBoxVab.Value) < 0.01 Then
DeltaH = TBoxOilDpeth.Value -H
Exit Do
End If
采用二分法查找符合要求的H值:
IfV-TBoxVab.Value> 0 Then
H=H-TBoxBitDpeth.Value / 2^i
Else
H=H+TBoxBitDpeth.Value / 2^i
End If
i=i+1
Loop
得出非零有效值ΔH,即可求出油气上窜速度v=ΔH/t(t为钻井液静止时间)。
在实际应用过程中,经过对7口高温高压井的油气上窜速度计算结果数据分析,“二分法查找”求解相对于“方程式”求解更加快捷与高效,下面以L 1井为例进行说明。
在实际钻进过程中,L 1井钻进至某一深度,机械钻速较慢,于是长起钻,检查并更换钻头后下钻到底,开泵循环,钻井液静止时间为20 h,本次长起L 1井的井身结构数据、钻具数据以及钻井液泵参数的录入表格及数据如图4所示。钻头深度为4 320 m,从开泵见气测异常总冲数为5 270冲(已考虑气管线对应冲数),油气层顶深为4 128 m。
为了尽量提高计算精度,计算过程中已经考虑了接箍对钻具排替量的影响。基本参数输入完毕后,运行结果如图5所示。最终,得出按照油气层顶深计算油气上窜速度为15.19 m/h,上窜高度为303.70 m。
由于油气层顶深离套管斜深较近,首先假设油气已经上窜至套管,针对上述参数进行“方程式法”求解(假设油气上窜后位置井深介于4 in钻杆所在井深范围内),求解过程如下:
(1)按公式(2),计算出钻头深度(Hb)对应闭端排代体积
(2)根据开泵循环见气测异常时钻井液泵总冲数为5 270冲,计算出对应的钻井液等效体积Vstk为101.122 868 m3。
(3)依据井身结构数据及公式(7)、(8),可计算出空井时油气上窜后位置井深对应环空体积
0.036 911 727Hab+17.680 944 49-
由此可以求出一个符合实际情况的正解,则有:
Hab=3 827.98 m
此时油气深度为4 128 m,即油气上窜高度为300.02 m,钻井液静止时间为20 h,油气上窜速度为15.00 m/h,与程序计算绝对误差为0.19 m/h,相对误差小于2%。
对于不同井,在复杂程度不同的井身结构与钻具组合情况下,统计程序运行计算耗费时间整体上在10~30 ms之间(测试电脑配置为酷睿i5双核处理器,单通道4G内存),即0.01~0.03 s之内可以完成计算,耗时几乎可以忽略不计,实现了高效而又准确的目的。
油气上窜速度作为井控安全的重要参数之一,提高其准确性是非常必要的。本文利用VB.NET将油气上窜速度计算复杂的求解过程通过计算机语言自动处理,提高了精度和时效。采用“二分法”求解“油气上窜高度”基于常规方程组求解的逆向思维,前提条件是已经明确了“油气上窜后位置对应井深”范围在井口与钻头深度之间,超过这个范围,则求解失败;也正是有这种限制,才能保证求解的高效性和准确性,从而避免由于人为计算错误导致现场决策失误的情况发生。
The authors have declared that no competing interests exist.
[1] |
|
[2] |
循环钻井液气测录井资料校正方法及应用 [J].Calibration method and application of circulating drilling fluid gas logging data [J]. |
[3] |
基于泥浆体积排代法计算油气上窜速度研究 [J].Displacement method of mud volume for calculating oil and gas upward channeling speed [J]. |
[4] |
油气上窜速度计算方法的改进与应用 [J].Improvement and application of the calculation method of oil and gas upward velocity [J]. |
[5] |
油气上窜速度计算方法与影响因素 [J].Calculation method and influencing factors of oil and gas upward channeling speed [J]. |
[6] |
油气上窜速度的精确计算方法 [J].Research on accurate calculation method of oil and gas upward velocity [J]. |
[7] |
钻井液顶替法计算油气上窜速度 [J].Calculation of oil and gas upward velocity by drilling fluid displacement method [J]. |
[8] |
利用高级语言实现数学中的二分法 [J].Using the high-level programming language to realize binary search in mathematics [J]. |
[9] |
改进的二分法查找 [J].Modified Binary Search [J]. |
[10] |
基于系统的查找算法研究 [J].Research on system-based search algorithms [J]. |
[11] |
用C#实现顺序查找算法的动态演示 [J].Realizing the dynamic demonstration of sequential search algorithm using C# [J]. |
[12] |
几种查找算法的比较 [J].The Compares of some searching algorithms [J]. |
/
〈 |
|
〉 |