摘 要 文章根据射孔完井的渗流特点,利用有限元方法建立了三维单相稳定渗流的数值模型(详见合肥辰工科技官网),数值模拟考虑了孔深、孔径、孔密、孔的相位、污染程度和厚度、压实程度和厚度等射孔参数对油气井产能的影响。有限元方程的求解是在曙光1000 大型并行机上利用区域分解法进行的,针对计算模型进行了并行算法加速比的研究,给出了不同计算结点的并行加速比,结果表明并行算法的计算速度与串行算法的计算速度明显提高;通过各种射孔方案的计算,给出了各种射孔参数对油气井产能影响的曲线,这些成果对于油气田设计射孔方案具有一定的指导意义。
主题词 射孔 射孔参数 并行计算机 有限元法 产能预测
目前,油气田上射孔完井是较为广泛的一种完井方式,射孔参数(孔深、孔径、孔密、孔的相位、污染程度和厚度、压实程度和厚度等) 对油气井产能的影响是一个重要的研究课题。利用数值方法来研究射孔产能的机理起于60 年代〔1〕,较全面地考虑各种射孔参数对油气井产能的影响始于80 年代〔2〕。由于射孔完井采油气时形成的渗流场非常复杂,这就要求人们把渗流区域剖分得很细,才能满足计算精度。由于受计算机内存和计算速度的限制,人们在建立
计算模型时,总是要作一些假设或简化。这次我们在曙光1000 上,利用目前普遍使用的区域分解法〔3〕来求解有限元方程组,取得了比较好的结果。通过各种方案的计算,给出了各种射孔参数对油气井产能影响的曲线,这些成果对于设计射孔方案具有一定的指导意义。
计算模型

  1. 数学模型
    按照射孔完井渗流场的特点,数学模型采用三维单相稳定渗流方程:

式中: p 为地层压力,MPa ; K 为地层***率, ;μ为地层原油气粘度mPa ;Γ1 为已知压力边界;Γ2 为已知流量边界(当q 等于0 时,为不***边界) ; n 为Γ2 的法线方向;Ω 为渗流区域。

  1. 有限元方程的建立
    在三维问题中最基本的单元是四面体单元,记为( e) ,它的四个顶点为有限元剖分的结点,其编号设为 i 、j 、k 、m ,根据里茨变分原理可得第 i 个结点的有限元方程:

同理可写出其他结点的有限元方程,就形成了有限元方程组。

  1. 渗流区域的剖分
    把三维渗流区域直接剖分成四面体单元,不仅难以绘出醒目的图示,而且会使输入的信息数量太大,因此在实际上都采用组合单元,最常用的是六面体单元,每个六面体组合单元又可剖分成五个四面体单元(有两种不同的剖分形式)〔4〕。只要输入组合单元的信息,可由计算机自动剖分成基本四面体单元进行计算(可按两种剖分形式计算系数矩阵取每个系数的平均值) 。
    六面体组合单元的剖分也是有计算机自动完成的,剖分的原则是: ①在平面上以井为中心,径向剖分,夹角为10°。再以井为中心,做不同半径的同心圆剖分,在射孔的顶端比较密,向外向内变得比较疏(图1 - a) ,共有30 层; ②在垂向上,以ΔZ 为步长进行剖分(图1 - b) ; ③根据射孔的设计,在每个射孔处以孔为中心,用四个不同半径的同心圆进行加密剖
    分(图1 - b) 。这样就把整个渗流区域剖分成不同大小的六面体组合单元。
    (a)平面上的剖分图 (b)射孔加密剖分图
    图1  平面上的剖分和射孔加密剖分示意图

有限元方程组的并行求解方法
有限元方程组的求解是在曙光1000 并行机上进行的。根据渗流区域剖分的特点,每一层同心圆上的剖分结点是相同的,比较适合区域分解法的并行算法。具体步骤如下。
有限元方程组形成一个N ×N 的大型稀疏系数矩阵如下:

由于系数矩阵很大,本文模型的剖分结点为36×30 ×20 = 21 600 ,再加上射孔处的加密结点,若按16 个射孔计算加密结点数为16 ×32 ×30 = 15 360 ,则系数矩阵是一个36 960 ×36 960 的矩阵。为了减少计算机内存和计算结点之间的信息传递,在实际形成系数矩阵时,本文仅储存非零元素,用两个指示数组来确定元素的具体位置,用一个N ×1 的一维数组来储存与每个结点有关的结点数;用一个N ×22 的二维数组来储存与每个结点有关的具体结点号,这两个数组可在形成系数矩阵时同时形成。一般剖分成六面体组合单元每个结点周围有26 个结点,但通过四面体建立基本单元后,实际上只有18个结点与其有关,在射孔处有些结点周围有33 个结点,实际有关的结点也仅有22 个结点,所以,系数矩阵变成了一个N ×22 的矩阵。
一维指示数组   二维指示数组   系数矩阵

用超松弛迭代法求解有限元方程组,程序并行化采用部分重叠的区域分解法,具体做法如下:首先按30 层同心圆状剖分不同层上的结点,平均地加载到不同计算结点上。比如加载到4 个计算结点上,1~8 层加载到0 号计算结点上;8~15 层加载到1 号计算结点上;15~22 层加载到2 号计算结点上;22~30 层加载到3 号计算结点上;每迭代一次,就将重叠层上的计算结果相互传递,取算术平均值作下一次迭代的初值,计算中仅需传递重叠层和相邻层,如上
面重叠层(8 、15 、22 层) 和相邻层(7 、9 、14 、16 、21 、23层) 。表1 是不同计算结点数计算时的并行加速比(串行程序计算时间与并行程序计算时间之比) 对比表,表明随着计算结点的增多,计算速度明显加快。
表1  并行计算加速比对比表
计算结点数
1 2 3 4 5 6 8 10 15 30
计算时间
(min)
计算加速比
78.9

1.00 51.6

1.53 35.9

2.20 29.1

2.71 25.7

3.07 22.4

3.52 19.2

4.11 15.9

4.96 13.3

5.93 11.0

7.17