申 皓,刘青昆,龚蔚青,胡国栋
(1.辽宁师范大学 计算机与信息技术学院,辽宁 大连 116081;2.中石化石油勘探开发研究院,北京 100083;3.北京华盛海天科技发展有限公司,北京 100191)
三维可视化技术日趋成熟,其在石油勘探领域的应用越来越重要,目前主要常见于国外主流商业化油藏三维地质建模、油藏数值模拟等大型专业软件中,如PETREL和ECLIPSE等[1]。为了能对主流商业软件地质研究成果加以研究和利用,需要能够加载不同软件的模型成果文件。但不同的软件网格描述方式不同,需要分别编写相应的处理程序,增加分析工具的研发成本。同时大规模油藏模型对计算机的存储容量、处理速度、绘制速度等都提出了很高的要求[2-3],当进行旋转、缩放等操作时运算数据量大,会出现速度缓慢、显示不连续等问题。因此,本文提出异种油藏网格模型三维可视化优化方法。该方法能够加载不同描述方式的异种网格模型,同时在不影响油藏模型显示效果的前提下,对网格模型数据进行优化,最大限度地减少原始模型的网格和顶点的数目,进而使得优化后的网格模型能进行快速实时绘制,提高了网格规模的扩展性。
矩形和角点是目前使用较多的结构化网格,可以用I、J、K定义每个网格的位置。矩形网格主要用DX、DY、DZ关键字来描述,角点网格主要用COORD、ZCORN关键字来描述,它们的网格存储格式不同[4-5]。此外,不同软件导出的网格模型可能存在I、J增量方向的差异,其网格排序也不同。本文把不同存储格式、不同排序的网格模型统称为异种网格模型。
将统一网格存储格式的方法定义为两个函数接口,在对各自模型成果文件进行读取时,只需提供这两个接口函数,便可获取各结构化网格模型各网格8个顶点坐标数据。
两个接口函数为:一个是网格顶点坐标获取接口GetVertice(),通过唯一顶点索引index可以得到对应唯一顶点坐标(x,y,z),即不重复的网格顶点坐标都有一个唯一索引标签与之对应;另一个是网格顶点坐标索引获取接口GetHexahedron(),用于获取(i,j,k)网格 8个顶点的坐标索引值,此索引值与网格顶点获取接口参数索引值index相同。
网格排序存在差异是指I、J增量方向不同,如图1、图2所示。进行网格遍历时,I方向,(i+1,j,k)网格相对于当前(i,j,k)网格可能在右或在左,如果(i+1,j,k)网格为无效网格或与(i,j,k)网格相邻面的4个顶点不重合,需保存两个网格相邻面的4个顶点数据。当I增量向右,则保存(i,j,k)网格右平面4个顶点数据;当I增量向左,则保存(i,j,k)网格左平面4个顶点数据。J方向也如此。为了识别网格模型I、J增量方向及方便后续网格模型优化,本文通过设置顶点标记索引和网格顶点相对索引来实现。
定义所有网格 8个顶点的标记索引为 0、1、2、3、4、5、6、7。通过获取I正方向邻接面顶点关系表(I,I+1网格相邻面)、J正方向邻接面顶点关系表(J,J+1网格相邻面),即相邻面 8个顶点标记索引,来判定网格模型I、J增量方向,并设置对应的顶点相对索引。
I、J方向识别算法基本步骤如下:
(1)初始化相对索引数组RI,RI(i)=-1,其中,i=0,1,…,7;
图1 I方向示例图
图2 J方向示例图
(2)获取I正方向邻接面顶点关系表;
(3)获取J正方向邻接面顶点关系表;
(4)判断I方向相邻面顶点标记索引与J方向相邻面顶点标记索引关系,以此确定I、J增量方向;
(5)根据步骤(4)获取的I、J增量方向,设置对应的顶点相对索引数组RI。
针对大规模油藏网格模型会占用大量存储空间、运算量大、降低模型绘制速度的问题,本文实现模型消隐算法对模型网格数据进行优化处理,只绘制表层油藏网格模型。网格模型消隐算法基本步骤如下:
(1)获取相对索引数组RI。
(2)遍历每个单元网格 Girdi,j,k(i=1,…,NX;j=1,…,NY;k=1,…,NZ)。
(3)判断当前网格是否为有效网格。若满足要求,进行下一步;否则跳至步骤(2)。
(4)获取当前网格顶点坐标索引GIi,j,k。
(5)判断相邻网格GirdI,J,K(I=i,i-1或i+1;J=j,j-1或j+1;K=k,k-1或k+1)(判断相邻网格顺序:上方向、下方向、左方向、右方向、前方向、后方向)是否为有效网格。若满足要求,进行下一步;若不满足且当前判断为后方向相邻网格,跳至步骤(2),否则跳至步骤(5),继续判断其他相邻网格。
(6)获取当前网格相邻网格顶点坐标索引GII,J,K。
(7)根据步骤(4)、(6)获得的坐标索引 index判断(i,j,k)网格与其相邻(I,J,K)网格相邻面 4个顶点是否重合。若不满足要求,进行下一步;若满足且当前判断为后方向相邻网格,跳至步骤(2),否则跳至步骤(5),继续判断其他相邻网格。
(8)根据网格顶点坐标索引接口获取当前(i,j,k)网格8个顶点坐标索引数组VI(i),其中,i=0,1,…,7,并根据当前网格相邻面4个顶点相对索引获取4个顶点坐标。
(9)依次判断4个顶点是否已经保存进表层顶点坐标数组SV中。若已经保存,则返回已保存顶点坐标索引,即SV数组下标;否则保存,并返回新顶点坐标索引,进行下一步。
(10)将步骤(9)获取的4个顶点坐标索引保存在表层四边形顶点索引数组SQVI中,如果当前相邻网格为后方向相邻网格,进行下一步;否则跳至步骤(5)。
(11)若 i≤NX,j≤NY,k≤NZ,跳至步骤(2);否则结束。
实验环境为:Inter(R)Core(TM)i5-3450@3.10 GHz CPU,3.48 GB内存,基于 MFC应用程序框架和OSG三维引擎进行编程实现。
实验采用了Eclipse导出的 (NX,NY,NZ)=(20,20,10)规则矩形 网格 模 型和(NX,NY,NZ)=(119,57,10)角点网格模型,两种结构化网格模型在 E-clispe软件中绘制的效果如图3所示,通过本文方法进行网格模型绘制,其效果图如图4所示。
图3 Eclipse绘制的模型图
图4 基于本文方法绘制的模型图
对比图3和图4可知,基于本文方法绘制的模型图与Eclispe绘制的一样,证明了本文方法能够兼容不同格式的网格模型。
实验分别采用 4 000、10万、50万、100万、500万个规则矩形网格模型进行优化前和优化后性能测试,结果如表 1、表 2所示(表中旋转缩放效果好、差分别代表:模型能实时绘制、显示连续顺畅,模型不能实时绘制、显示不顺畅)。
从表1和表2可以看出,优化后的网格模型较优化前的网格模型存在诸多优势,网格规模越大,优化效果越明显,极大地提高了网格规模的扩展性和系统性能需求,充分证明了本方法具有很高的可行性。
针对实时绘制大规模网格模型存在速度慢、效果差以及油藏网格模型存在描述方式不同等问题,本文提出了异种网格模型三维可视化优化方法,并通过不同网格模型、不同规模模型测试对比,证明了该方法是可行的,能够兼容不同软件不同描述格式的地质研究成果,其应用在大规模网格模型实时绘制方面性能有很大提升,且效果显著。
表1 模型消隐前实验值
表2 模型消隐后实验值
[1]ADMIN.石油行业常用软件综合介绍[EB/OL].(2008-09-29)[2014-02-26]www.hipetro.com/shiyouruanjian.html.
[2]何晖光,田捷,张小鹏,等.网格模型化简综述[J].软件学报 ,2002,13(12):2215-2224.
[3]赵新华.大数据量网格模型的建模与简化技术研究[D].长沙:国防科学技术大学,2002.
[4]韩峻,施法中,吴胜和,等.基于格架模型的角点网格生成算法[J].计算机工程,2008,34(4):90-93.
[5]苏丹丹.基于角点网格剖分的三维地质建模的研究与实现[D].西安:西安科技大学,2010.