本文作者:kaifamei

盆地模拟阶段数据处理方法、装置及计算机可读存储介质与流程

更新时间:2025-12-27 12:03:24 0条评论

盆地模拟阶段数据处理方法、装置及计算机可读存储介质与流程



1.本发明涉及计算机技术的软件开发领域,尤其涉及盆地模拟阶段数据处理方法、装置及计算机可读存储介质。


背景技术:



2.盆地模拟是基于物理化学的地质机理,在时间和空间上由计算机定量模拟含油气盆地的形成和演化、烃类的生成、运移和聚集,以揭示盆地油气规律本质。
3.盆地数值模拟技术在近十几年以来发展极为迅速,而且进展也很快。盆地模拟技术的广泛应用使得盆地分析朝着定量化、动态化和绘图自动化方向发展。现今盆地模拟技术已不仅仅是地质过程的表达形式,而且是对各种动力学参数研究的不可缺少的手段。因而,受到盆地分析专家和石油地质学家的广泛重视。
4.作为长期的技术难题,盆地模拟在模拟算法精确求解、对断层和成岩作用等地质因素的考虑、油气运移的间歇式突变过程恢复、古水动力学过程重建等诸多方面面临着困难与挑战。而加强对三维地质属性建模与构造建模技术的应用、实行符合地质规律的油气运聚法则引导下的分关键阶段交互模拟,将是今后盆地模拟技术发展的主要方向。此外,将油气地质学、数学地质、计算机等学科的最新进展和新技术融入盆地模拟,也会大大促进该项技术的进步。
5.国外的盆地模拟软件商品化程度较高,如temispack(法国石油研究院)、 basinmod(美国platteriver公司)、petromod(德国有机地化研究所)等。国内的盆地模拟软件研发于上世纪90年代左右达到鼎盛,研发的相关软件达10 多种,如basims(中国石油勘探开发研究院)、pres(中海油研究中心)、bias(原地球软件公司)、gemdass及pass等。就盆地模拟商品化软件的总体水平来说,国内与国外相比存在着差距,尚须不断努力攻关。
6.国内软件没有与世界上两个最大的石油勘探开发软件公司(geoquest、 landmark)的软件接口,致使盆地模拟的输入数据(地震、测井的解释结果) 不能直接从geoquest或landmark自动输入,影响输入数据的效率和完整性。目前作为一个完整的盆地模拟系统是由如下6个模型有机组成:地史模型, 热史模型,成岩史模型,生烃史模型,排烃史模型(初次运移),烃类运聚史模型(二次运移),相关文献见《盆地模拟技术30年回顾与展望》发表于石油工业计算机应用2009年第3期。盆地模拟软件系统有一维、二维和三维系统,模拟研究内容不仅涵盖了传统的“五史”——地史、热史、生烃史、排烃史和聚集史,还增加了许多非传统的研究内容。相关文献见《盆地模拟技术在油气资源评价中的作用》,发表于中国石油勘探2006第6期。
7.在盆地模拟过程中,由于盆地数据量巨大,在数据存储和计算方面都有很大的开销,所以需要进行一些空间及效率上的优化,以满足模拟需求。盆地模拟各个阶段数据总和可以高达几百gb字节,所以需要尽可能地优化阶段数据存储和加载方法,如何保证内存足够,同时提升数据访问效率,这些对盆地模拟具有重要意义。
8.例如在盆地模拟中,同一个地层的数据会出现在多个阶段,在盆地模拟初始化过
程中,只需将同一个地层的数据初始化后存为多份,对应多个阶段,以避免每个阶段都初始化这个地层,现有技术并没有做到这一点。同时,在模拟到某个阶段时,其他阶段的数据应该进行压缩存放,否则无法同时容纳下所有阶段的数据,在进行有限元计算时,由于计算空间开销大,当前阶段数据也最好进行压缩,计算完成后再恢复,现有技术并没有很好地支持这一点。对于不同的用户需求,如果需要将结果在其他计算机中进行使用,则需要提供文件模式的阶段数据存储,对于只需要在本机查看结果的情景,只需将阶段数据采用压缩内存模式存储以提高读取速度,现有技术没有考虑到这些要求。


技术实现要素:



9.本发明的目的是提出一种盆地模拟阶段数据处理方法、装置及计算机可读存储介质,能够减少内存占用,提升了数据获取效率。
10.为了实现上述目的,本发明提供了一种盆地模拟阶段数据处理方法,包括:初始化构成盆地模型的多个层叠的地层数据,将初始化后的每层地层数据进行压缩并分别存储为多份,每份对应到参与的模拟阶段;
11.开始进行逐个阶段的地层模拟,每个所述模拟阶段的模拟包括当前模拟阶段的新增地层数据与上一模拟阶段地层数据的叠加模拟;
12.模拟过程中:
13.针对当前的模拟阶段,从存储的所述地层数据中提取并加载对应当前模拟阶段需要的地层数据,并基于前一模拟阶段完成的地层模拟结果进行叠加模拟;
14.所述模拟阶段包括有限元计算,在进行所述有限元计算时,将参与矩阵计算的地层数据相关变量赋值到预先定义的临时结构体中,进行计算,并释放当前模拟阶段所占用的内存,在计算完成后将所述临时结构体中的相关变量赋值回当前阶段数据中;
15.当前模拟阶段结束后,分别存储当前模拟阶段的完整版模拟结果以及简化版的模拟结果,所述简化版的模拟结果包括与最终结果显示相关的数据。
16.作为可选方案,每个地层数据包括点数据和体数据,所述点数据包括顶面点数据和底面点数据,且相邻的两地层,下层的所述顶面点数据和上层的底面点数据为共有重复数据;在加载数据时,对于共有重复数据只加载一次。
17.作为可选方案,定义第一缓存和第二缓存,分别用于存放当前模拟阶段所需的所述点数据和所述体数据。
18.作为可选方案,定义第一指针变量和第二指针变量,模拟过程中,所述第一指针变量用于存储当前模拟阶段不参与计算的所有点数据和体数据,所述第二指针变量用于存储当前模拟阶段不参与计算且只和最终结果显示相关的数据。
19.作为可选方案,初始化后,还包括:
20.对每一地层所有数据进行序列化以及对与显示结果相关数据变量进行序列化;
21.其中,当某一地层在当前模拟阶段不是顶层时,不对该地层的顶面点数据进行序列化;序列化后,对每一地层数据和与显示结果相关数据变量分别进行压缩后存储到相应的模拟阶段。
22.作为可选方案,所述存储为多份的方式包括将数据存储在文件中或将数据存储在内存中;
23.其中所述存储在文件中包括,在存储完第一个文件后,其余文件采用复制的方式完成存储;所述存储在内存中包括,在将第一个文件保存至内存后,将保存有所述第一文件的内存保存至其他模拟阶段的指针变量中。
24.作为可选方案,所述将数据存储在文件中的方式为:使用windows中的非缓存模式进行数据的写入。
25.作为可选方案,针对当前的模拟阶段,将前一模拟阶段完成的地层模拟结果赋值到当前模拟阶段后,释放前一模拟阶段的各个地层的数据。
26.本发明还提供了一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行上述的盆地模拟阶段数据处理方法。
27.本发明还提供了一种盆地模拟阶段数据处理装置,包括:至少一个处理器;以及,
28.与所述至少一个处理器通信连接的存储器;其中,
29.所述存储器存储有能被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的盆地模拟阶段数据处理方法。
30.本发明的有益效果在于:
31.本发明的方法,初始化每层地层数据时,将每层地层数据存储为多份,避免每个阶段都初始化这个地层的数据;在模拟某个阶段时,基于前一模拟阶段完成的地层模拟结果进行叠加模拟,只加载这一阶段的模拟数据,节省了空间;在有限元计算时,将参与矩阵计算的地层数据相关变量赋值到预先定义的临时结构体中,清空当前模拟阶段内存以保证矩阵计算内存开销;在模拟结束后,只保留和结果相关的参数变量,以提升结果数据读取速度;查看结果时切换模拟阶段使用内存重用来减少内存分配时间;输出精简版模拟计算结果以便以后直接查看。
32.本发明具有其它的特性和优点,这些特性和优点从并入本文中的附图和随后的具体实施方式中将是显而易见的,或者将在并入本文中的附图和随后的具体实施方式中进行详细陈述,这些附图和具体实施方式共同用于解释本发明的特定原理。
附图说明
33.通过结合附图对本发明示例性实施例进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显。
34.图1是根据本发明一实施例的一种盆地模拟阶段数据管理方法流程图;
35.图2是根据本发明一实施例的盆地模拟阶段数据结构图;
36.图3是根据本发明一实施例的盆地模拟阶段数据组织方式图;
37.图4是根据本发明一实施例的盆地模拟阶段数据存储和读取相关接口图;
38.图5是根据本发明一实施例的阶段数据压缩格式排列图;
39.图6是根据本发明一实施例的盆地某一模拟阶段数据图;
40.图7是根据本发明一实施例的模拟阶段间数据传递图;
具体实施方式
41.以下结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的
是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以互相结合,所形成的技术方案均在本发明的保护范围之内。
42.另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
43.根据本发明的一个实施例的一种盆地模拟阶段数据管理方法实现流程就是盆地模拟阶段数据组织结构,盆地模拟阶段数据存储和读取,盆地模拟阶段内及阶段间数据获取,盆地模拟过程中阶段数据内存效率控制。
44.根据本发明的一种盆地模拟阶段数据处理方法,包括:初始化构成盆地模型的多个层叠的地层数据,将初始化后的每层地层数据进行压缩并分别存储为多份,每份对应到参与的模拟阶段;
45.开始进行逐个阶段的地层模拟,每个所述模拟阶段的模拟包括当前模拟阶段的新增地层数据与上一模拟阶段地层数据的叠加模拟;
46.模拟过程中:
47.针对当前的模拟阶段,从存储的所述地层数据中提取并加载对应当前模拟阶段需要的地层数据,并基于前一模拟阶段完成的地层模拟结果进行叠加模拟;
48.所述模拟阶段包括有限元计算,在进行所述有限元计算时,将参与矩阵计算的地层数据相关变量赋值到预先定义的临时结构体中,进行计算,并释放当前模拟阶段所占用的内存,在计算完成后将所述临时结构体中的相关变量赋值回当前阶段数据中;
49.当前模拟阶段结束后,分别存储当前模拟阶段的完整版模拟结果以及简化版的模拟结果,所述简化版的模拟结果包括与最终结果显示相关的数据。
50.在一个实施例中,每个地层数据包括点数据和体数据,所述点数据包括顶面点数据和底面点数据,且相邻的两地层,下层的所述顶面点数据和上层的底面点数据为共有重复数据;在加载数据时,对于共有重复数据只加载一次。
51.在一个实施例中,定义第一缓存和第二缓存,分别用于存放当前模拟阶段所需的所述点数据和所述体数据。
52.在一个实施例中,定义第一指针变量和第二指针变量,模拟过程中,所述第一指针变量用于存储当前模拟阶段不参与计算的所有点数据和体数据,所述第二指针变量用于存储当前模拟阶段不参与计算且只和最终结果显示相关的数据。
53.在一个实施例中,初始化后,还包括:
54.对每一地层所有数据进行序列化以及对与显示结果相关数据变量进行序列化;
55.其中,当某一地层在当前模拟阶段不是顶层时,不对该地层的顶面点数据进行序列化;序列化后,对每一地层数据和与显示结果相关数据变量分别进行压缩后存储到相应的模拟阶段。
56.在一个实施例中,所述存储为多份的方式包括将数据存储在文件中或将数据存储在内存中;
57.其中所述存储在文件中包括,在存储完第一个文件后,其余文件采用复制的方式完成存储;所述存储在内存中包括,在将第一个文件保存至内存后,将保存有所述第一文件的内存保存至其他模拟阶段的指针变量中。
58.在一个实施例中,针对当前的模拟阶段,将前一模拟阶段完成的地层模拟结果赋值到当前模拟阶段后,释放前一模拟阶段的各个地层的数据。
59.图1是根据本发明一实施例的一种盆地模拟阶段数据处理方法流程图。参考图1:
60.步骤一,盆地模拟阶段数据组织结构;
61.步骤二,盆地模拟阶段数据存储和读取;
62.步骤三,盆地模拟阶段内及阶段间数据获取;
63.步骤四,盆地模拟过程中阶段数据内存效率控制。
64.步骤一中,输入的基本数据为一组盆地模拟阶段数据,每个阶段数据由上下两个地质层位网格面以及中间的立方体(cube)组成,表示一个地层。模拟阶段数据具体包括:顶面点数据(topvertexes),底面点数据(botvertexes),体数据(cubes)。点数据和体数据结构各自包含若干参数变量,表示盆地模拟中地层面和体相关的地质参数。用第一变量compresscache,第二变量 compresscache_mini来存储当前不参与计算的阶段数据临时压缩。在整体上定义了第一缓存vertexreusemem和第二缓存cubereusemem,用以存放当前阶段数据开辟的内存空间。
65.在步骤二中,在盆地模拟流程中,阶段推进时,需要存储上一阶段数据并读取当前阶段数据,为了加快阶段数据存储和读取过程,设计了一系列内存和效率优化方法,主要包括序列化,压缩解压,存储和读取接口,存储和读取模式。
66.在步骤三中,在盆地模拟过程中,是一个阶段一个阶段进行模拟的,需要用到的操作也主要以阶段为单位来进行,涉及读取当前阶段所有地层数据、保存上一阶段所有地层数据、复制上一阶段地层数据到当前阶段相同地层中等,阶段内数据获取对公共面进行了效率优化,阶段间数据获取采用了阶梯传递数据模式。
67.在步骤四中,对于盆地模拟过程中的阶段数据管理,在若干内存及效率控制实现了以下几个方面:初始默认数据存储到各个阶段,只加载当前计算所需阶段数据,有限元计算时定义精简版临时结构体,结果显示切换阶段时使用缓存空间重用,模拟结果的mini版输出。
68.与现有技术相比,本发明具有如下优点:
69.1、根据本发明所述方法将各个阶段盆地模拟数据进行压缩,同时只加载当前计算所需阶段数据,同时提供了多种简化数据结构和内存重用方法,减少了空间开销并提升了数据获取效率;
70.2、根据本发明所述方法实现了盆地模拟阶段内数据及阶段间数据获取方式的优化,对盆地模拟空间及效率的提升具有价值。
71.下面以一个具体的实施例对该数据处理方法进行描述。
72.步骤s110
73.首先进行步骤s110,输入的基本数据为一组盆地模拟阶段数据,每个阶段数据由上下两个地质层位网格面以及中间的立方体(cube)组成,表示一个地层。
74.如图2所示,上下两个网格表示一个地层在某个模拟阶段的顶面和底面数据,上下网格之间组成若干cube,表示这个地层的体相关数据。模拟阶段数据具体包括:顶面点数据(topvertexes)如e、f、g、h,底面点数据(botvertexes)如a、b、c、d,体数据(cubes),其中顶面点数据和底面点数据具有相同的数据结构。每个模拟阶段数据包括上面三种数据的多个
对象,形成了上下地层网格及中间体数据。点数据和体数据结构各自包含若干参数变量,表示盆地模拟中地层面和体相关的地质参数。
75.由于地质参数变量种类众多,单个点数据和体数据对象的大小可能超过 1m字节,一个阶段数据的总大小超过100m字节,模拟总过程中对应几百个阶段数据,总大小超过几十gb字节,所以在计算过程中需要对当前不参与计算的阶段数据临时压缩,用第一指针变量compresscache,第二指针变量 compresscache_mini来存储。其中compresscache存储了当前模拟阶段的所有点数据和体数据压缩后的数据,compresscache_mini存储了当前模拟阶段的所有点和体中只和最终结果显示相关的变量压缩后的数据。
76.如图3所示,整个盆地模拟流程随着模拟阶段的推进,地层不断沉积,每个地层在每个阶段对应一个阶段数据结构,所以每个模拟阶段包括一组地层对应的一组阶段数据。某地质层位在某阶段的数据结构如图中左下角所示。另外,在最终结果显示时,切换各个模拟阶段是常用操作,为避免内存的频繁申请和释放,在整体上定义了第一缓存vertexreusemem和第二 cubereusemem,用以存放当前阶段数据开辟的内存空间。
77.步骤s111
78.接下来进行步骤s111,进行模拟阶段数据的存储和读取。在盆地模拟流程中,阶段推进时,需要存储上一阶段数据并读取当前阶段数据,为了加快这个过程,设计了一系列内存和效率优化方法。
79.1.序列化
80.如图4所示,首先对盆地模拟阶段数据进行序列化及序列化恢复,序列化是指将数据结构中各个参数值按顺序排成连续内存形式,序列化恢复是指将连续内存恢复成数据结构中的各个参数变量值。将盆地模拟阶段数据中的每个点数据和体数据分别进行序列化,序列化函数为serializedata,另外有迷你版序列化函数serializedata_mini,只序列化结构体中和最终结果显示相关的参数。序列化恢复函数为restoreserializedata,另外有 restoreserializedata_mini,只恢复结构体中和最终结果显示相关的参数。
81.2.压缩/解压
82.对所有点数据和体数据序列化后,将这些数据合起来,然后进行压缩,压缩函数为compress,采用的是较为常见的zlib提供的压缩开源实现。与之相对应的解压函数uncompress,表示将这些压缩数据解压回序列化的点和体数据集合。
83.压缩过程具体的据结构排列如图5所示,序列化后的合集数据包括顶面点个数,底面点个数,体个数,各个顶点序列化后的数据,各个底点序列化后的数据,各个体序列化后的数据。其中,当这个阶段数据所表示的地层在当前阶段不是顶层时,顶面点个数为0,不对顶面点数据进行序列化且不放在集合中。这么做的原因是在各个模拟阶段中,上下相邻的地层顶底面是共有的,所以只需要存一份即可,即所有底面以及最顶层的顶面就够了。
84.对点数据和体数据集合进行压缩,当压缩成功后,数据排列如图中右上方所示,包括面顶面点个数,底面点个数,体个数,压缩成功标识0,压缩前数据长度,压缩后数据长度,压缩后数据,内存补齐字节;当压缩失败时,数据排列如图中右下方所示,包括顶面点个数,底面点个数,体个数,压缩失败标识-1,各个顶面点序列化后的数据,各个底面点序列化后的数据,各个体序列化后的数据,内存补齐字节。
85.对于压缩后的数据,有两种处理方式,一种是通过文件进行存储和读取,通过是否
带“_mini”后缀的文件名来分别存储和读取是否为迷你版的序列化数据;另一种是直接存为内存,即将压缩后的数据保存至阶段数据的 compresscache或compresscachmini。对于文件存储和读取,使用的是 windows中的非缓存模式文件读写,这种方式避免了文件读写时的内存增长,调用相关存取接口时,参数类型去file_flag_no_buffering,另外需要注意的是这种模式存取的数据大小必须为硬盘扇区大小整数倍,如512k字节的整数倍,所以对压缩后的数据需要按照情况填充一部分字节进行补齐;而对于内存模式,内存补齐字节为空即可。
86.解压是根据读取得到的数据,先判断压缩标识是否成功,如果失败则不需要解压,直接就是未压缩的数据,如果是成功则进行解压,解压后得到的是序列化的点体合集数据。
87.3.存储和读取接口
88.对序列化并压缩后的数据进行相应的存储和读取操作,如图4右侧所示,相关接口包括存储、读取、存为多个等。
89.存储分为单一存储(savetofile,savetomem)和存为多个 (savetomultifile,savetomultimem),是由于同一地质层位在各个模拟阶段都要进行计算,例如最底层,会出现在各个阶段中,倒数第二层,会出现在从第二个阶段开始后的各个阶段中等。在给阶段数据赋值一些初始值后,对一个层位的数据存为多套,作为它在各个模拟阶段的初始状态。对于存为多个文件,在存储完第一个文件后,余下的直接采用文件复制的方式即可;对于存为多个内存,在保存完第一个文件后,将这个内存同样保存至其他模拟阶段的compresscache或compresscachmini中。savetofile, savetomem传入的参数包括阶段、层、ismini,其中ismini用来区分是否是mini版,与之对应的文件相应地是否带“_mini”后缀,对应的内存为 compresscach还是compresscachmini;savetomultifile,savetomultimem 传入的参数包括阶段、层。
90.读取分为从内存读取(loadfrommem)和文件读取(loadfromfile)两种,内存读取是读取compresscache或compresscachmini,文件读取是从阶段数据对应的文件中读取数据。loadfrommem,loadfromfile传入的参数包括阶段、层、ismini、reusemem,其中ismini用来区分是否是mini版,与之对应的文件相应地是否带“_mini”后缀,对应的内存为compresscache 还是compresscachmini。reusemem表示是否使用两组缓存vertexreusemem 和cubereusemem,当使用时,读取数据解压后生成的点不新开辟内存空间,而是使用vertexreusemem和cubereusemem。读取时先判断点和体数据是否存在,如果存在则直接返回不需要读取。
91.清除缓存空间(clearmemory)是指清除阶段数据的顶面点数据 (topvertexes),底面点数据(botvertexes),体数据(cubes),用以释放内存。clearmemory传入的参数包括阶段、层、reusemem。当reusemem为真时,表示使用的是内存缓存,此时不做任何操作,否则,释放对应阶段对应地层的点体数据内存。
92.综上,盆地模拟段数据存储和读取接口共有以下几种:savetomem, savetofile,savetomultimem,savetomultifile,loadfrommem, loadfromfile,clearmemory。
93.4.存储和读取模式
94.关于阶段数据的存储和读取共有五种模式,分别为内存模式、文件模式、内存+文件模式、已有文件模式、已有文件+内存模式。在各种模式下的存储和读取调用的接口如表1
所示。
[0095][0096]
表1
[0097]
其中,内存模式指利用compresscache,compresscache_mini来存放压缩后的阶段数据;文件模式是指利用文件来存放压缩后的阶段数据,对于mini和非mini版的压缩数据,文件名用是否带“_mini”后缀来区分,每个阶段数据对应一个文件,在盆地模拟结束后,这些文件中存放了最终的阶段数据,以后可以不经过盆地模拟而直接利用这些文件来查看模拟结果,实现多次利用。
[0098]
文件+内存模式是指优先利用内存模式,再利用文件模式,例如在实现读取功能时,表1中调用的接口为先调用loadfrommem,再调用 loadfromfile,目的是先从内存中读,如果读不到再从文件中读取,接下来有条件的savetomem是指当内存中读不到时,把从文件中读到的数据存入内存的compresscache,compresscache_mini,使得后面再次读取时便可读到。在实现存储功能时,调用savetofile和savetomem,文件和内存全部保存。
[0099]
已有文件模式和已有文件+内存模式是指各个阶段数据对应的文件已经存在并且是最终计算结果,即以前曾经进行过盆地模拟完整过程并将结果保存或者输出成了各个阶段数据文件。此时盆地模拟大部分计算流程均会跳过,主要会调用到的是最后显示时的读取和清除缓存两个功能。其中读取功能与文件模式和文件+内存模式类似。
[0100]
步骤s112
[0101]
在盆地模拟过程中,是一个阶段一个阶段进行模拟的,需要用到的操作也主要以阶段为单位来进行,涉及读取当前阶段所有地层数据、保存上一阶段所有地层数据、复制上一阶段地层数据到当前阶段相同地层中等。
[0102]
一个阶段的地层数据如图6所示,图中表示了4个地层在此阶段的数据,其中地层1顶面和地层2底面为公共面,地层2顶面和地层3底面为公共面,地层3顶面和地层4底面为公共面,此阶段数据的加载方式是先各自加载4个地层的数据,由于地层123不是顶面地层,所以他们的顶面数据按照之前的规则并未加载,接下来,将地层1顶面用地层2底面来赋值,地层2顶面用地层3底面来赋值,地层3顶面用地层4底面来赋值,赋值采用指针引用的方式实现,共享同样的内存,实现各个地层数据的加载。
[0103]
在存储时,各个非顶层地层的顶面也不存储,公共面只存储一次即可。在清除缓存时,非顶层地层的顶面只需要将指针清空,不需要真正释放指针所指的内存,顶层地层则需要清空顶面对应的内存。
[0104]
关于阶段间数据传递,采用阶梯传递机制,如图7所示,随着阶段的推进,不断有新的地层沉积,已有地层不断下沉,在模拟当前阶段时,需要将一些数据从上一阶段获取,即对同一地层,将其上一阶段的数据赋值到当前阶段,从而完成盆地模拟的流程。具体的方法为,首先将本阶段各个地层数据按照上面所述方法加载,然后对于每个非顶层地层,从左侧上一阶段获取数据,即将同一个地层的上一个阶段的点和体数据各个参数值赋值到当前阶段即可。然后将上一阶段的各个地层清除缓存。
[0105]
步骤s113
[0106]
对于盆地模拟过程中的阶段数据管理,在若干内存及效率控制实现了以下几个方面:
[0107]
1.初始默认数据存储到各个阶段
[0108]
初始的各个地层有一些默认数据需要作为初值,以及一些默认初始调用计算函数需要提前执行,由于同一地层可能出现在多个阶段,所以同样的数据需要生成多套存放起来。此时利用了前面的存为多个的接口,对一个层位的数据存为多套,作为它在各个模拟阶段的初始状态。避免了同样的初值赋值过程和同样的初始调用计算函数调用多次。
[0109]
2.只加载当前计算所需阶段数据
[0110]
盆地模拟过程中,进行到某个阶段时,加载当前阶段数据,从左侧相同地层获取上一阶段结果,赋值到当前阶段,释放上一阶段数据。其他非当前所需的阶段数据,存为文件或者压缩内存,节省了内存开销。另外,对于同阶段数据,公共面的部分只分配一次内存,上下两个地层共享这个公共面,使得计算结果可以同步更改,同时也节省了内存空间。
[0111]
3.有限元计算时定义精简版临时结构体
[0112]
在盆地模拟过程中有一个步骤是有限元矩阵计算,需要将所有点数据合在一起形成矩阵,矩阵计算的内存开销很大,因此定义了一个精简版点结构体vertex_basic和体结构体cube_basic,用以存放矩阵计算有关的变量。首先将当前阶段的所有点数据和体数据赋值到vertex_basic和cube_basic,然后将当前阶段的内存释放掉,此时只剩下当前阶段的精简版结构体数据。在计算完毕后,再加载当前阶段数据,然后把计算后的vertex_basic和 cube_basic中相关变量赋值回当前阶段数据。
[0113]
4.结果显示切换阶段时使用缓存空间重用
[0114]
在盆地模拟计算完毕后,进行结果显示,常用的操作时切换模拟阶段,因此需要频繁调用阶段数据加载和清除内存缓存。此时使用之前定义的 vertexreusemem和cubereusemem,用以存放当前阶段数据,不要每次重新开辟内存空间,清除内存缓存时也不需要真正释放内存空间,提高了数据获取的速度。vertexreusemem和cubereusemem为一组指针对象,分别为点指针和体指针,每次需要新的点数据和体数据时,从vertexreusemem和 cubereusemem获取指针,当需要的个数大于当前已有指针数量时,增加新的指针对象并添加到vertexreusemem和cubereusemem中。
[0115]
5.模拟结果的mini版输出
[0116]
对于计算得到的模拟结果,为了方便后续再次利用,提供了模拟数据输出功能。输出调用的是前面的savetofile接口,参数ismini为真,表示输出mini版本,即只输出和结果显示相关的变量数据。下次可以直接使用已有压缩文件或者已有压缩文件及使用压缩内存模式进行盆地模拟,此时会跳过盆地模拟的具体计算,直接进行结果显示。
[0117]
至此,一种盆地模拟阶段数据管理方法实现流程完毕。
[0118]
本发明的方法,初始化每层地层数据时,将每层地层数据存储为多份,避免每个阶段都初始化这个地层的数据;在模拟某个阶段时,基于前一模拟阶段完成的地层模拟结果进行叠加模拟,只加载这一阶段的模拟数据,节省了空间;在有限元计算时,将参与矩阵计算的地层数据相关变量赋值到预先定义的临时结构体中,清空当前模拟阶段内存以保证矩阵计算内存开销;在模拟结束后,只保留和结果相关的参数变量,以提升结果数据读取速度;查看结果时切换模拟阶段使用内存重用来减少内存分配时间;输出精简版模拟计算结果以便以后直接查看。
[0119]
本发明另一实施例提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行上述的盆地模拟阶段数据处理方法。
[0120]
根据本公开实施例的计算机可读存储介质,其上存储有非暂时性计算机可读指令。当该非暂时性计算机可读指令由处理器运行时,执行前述的本公开各实施例方法的全部或部分步骤。
[0121]
上述计算机可读存储介质包括但不限于:光存储介质(例如:cd-rom 和dvd)、磁光存储介质(例如:mo)、磁存储介质(例如:磁带或移动硬盘)、具有内置的可重写非易失性存储器的媒体(例如:存储卡)和具有内置rom的媒体(例如:rom盒)。
[0122]
本发明一实施例还提供了一种盆地模拟阶段数据处理装置,包括:至少一个处理器;以及,
[0123]
与至少一个处理器通信连接的存储器;其中,所述存储器存储有能被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的盆地模拟阶段数据处理方法。该存储器用于存储非暂时性计算机可读指令。具体地,存储器可以包括一个或多个计算机程序产品,该计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。该易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。该非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。
[0124]
该处理器可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元,并且可以控制电子设备中的其它组件以执行期望的功能。在本公开的一个实施例中,该处理器用于运行该存储器中存储的该计算机可读指令。
[0125]
本领域技术人员应能理解,为了解决如何获得良好用户体验效果的技术问题,本实施例中也可以包括诸如通信总线、接口等公知的结构,这些公知的结构也应包含在本公开的保护范围之内。
[0126]
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。

技术特征:


1.一种盆地模型模拟阶段数据处理方法,其特征在于,所述方法包括:初始化构成盆地模型的多个层叠的地层数据,将初始化后的每层地层数据进行压缩并分别存储为多份,每份对应到参与的模拟阶段;开始进行逐个阶段的地层模拟,每个所述模拟阶段的模拟包括当前模拟阶段的新增地层数据与上一模拟阶段地层数据的叠加模拟;模拟过程中:针对当前的模拟阶段,从存储的所述地层数据中提取并加载对应当前模拟阶段需要的地层数据,并基于前一模拟阶段完成的地层模拟结果进行叠加模拟;所述模拟阶段包括有限元计算,在进行所述有限元计算时,将参与矩阵计算的地层数据相关变量赋值到预先定义的临时结构体中,进行计算,并释放当前模拟阶段所占用的内存,在计算完成后将所述临时结构体中的相关变量赋值回当前阶段数据中;当前模拟阶段结束后,分别存储当前模拟阶段的完整版模拟结果以及简化版的模拟结果,所述简化版的模拟结果包括与最终结果显示相关的数据。2.根据权利要求1所述的盆地模拟阶段数据处理方法,其特征在于,每个地层数据包括点数据和体数据,所述点数据包括顶面点数据和底面点数据,且相邻的两地层,下层的所述顶面点数据和上层的底面点数据为共有重复数据;在加载数据时,对于共有重复数据只加载一次。3.根据权利要求2所述的盆地模拟阶段数据处理方法,其特征在于,定义第一缓存和第二缓存,分别用于存放当前模拟阶段所需的所述点数据和所述体数据。4.根据权利要求1所述的盆地模拟阶段数据处理方法,其特征在于,定义第一指针变量和第二指针变量,模拟过程中,所述第一指针变量用于存储当前模拟阶段不参与计算的所有点数据和体数据,所述第二指针变量用于存储当前模拟阶段不参与计算且只和最终结果显示相关的数据。5.根据权利要求2所述的盆地模拟阶段数据处理方法,其特征在于,初始化后,还包括:对每一地层所有数据进行序列化以及对与显示结果相关数据变量进行序列化;其中,当某一地层在当前模拟阶段不是顶层时,不对该地层的顶面点数据进行序列化;序列化后,对每一地层数据和与显示结果相关数据变量分别进行压缩后存储到相应的模拟阶段。6.根据权利要求1所述的盆地模拟阶段数据处理方法,其特征在于,所述存储为多份的方式包括将数据存储在文件中或将数据存储在内存中;其中所述存储在文件中包括,在存储完第一个文件后,其余文件采用复制的方式完成存储;所述存储在内存中包括,在将第一个文件保存至内存后,将保存有所述第一文件的内存保存至其他模拟阶段的指针变量中。7.根据权利要求6所述的盆地模拟阶段数据处理方法,其特征在于,所述将数据存储在文件中的方式为:使用windows中的非缓存模式进行数据的写入。8.根据权利要求1所述的盆地模拟阶段数据处理方法,其特征在于,针对当前的模拟阶段,将前一模拟阶段完成的地层模拟结果赋值到当前模拟阶段后,释放前一模拟阶段的各个地层的数据。9.一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储
计算机指令,该计算机指令用于使计算机执行权利要求1-8任一所述的盆地模拟阶段数据处理方法。10.一种盆地模拟阶段数据处理装置,其特征在于,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有能被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-8任一项所述的盆地模拟阶段数据处理方法。

技术总结


本发明公开一种盆地模拟阶段数据处理方法、装置及计算机可读存储介质,其中方法包括:初始化多个地层数据,将初始化后的每层地层数据存储为多份,对应到参与的模拟阶段;模拟过程中:针对当前的模拟阶段,从存储的地层数据中提取并加载对应当前模拟阶段需要的地层数据,并基于前一模拟阶段完成的地层模拟结果进行叠加模拟;在进行有限元计算时,将参与矩阵计算的地层数据相关变量赋值到预先定义的临时结构体中,进行计算,并释放当前模拟阶段所占用的内存,在计算完成后将临时结构体中的相关变量赋值回当前阶段数据中;当前模拟阶段结束后,分别存储当前模拟阶段的完整版模拟结果以及简化版的模拟结果。以及简化版的模拟结果。以及简化版的模拟结果。


技术研发人员:

彭成 盛秀杰 金之钧

受保护的技术使用者:

中国石油化工股份有限公司石油勘探开发研究院

技术研发日:

2021.09.03

技术公布日:

2022/12/12


文章投稿或转载声明

本文链接:http://www.wtabcd.cn/zhuanli/patent-1-39666-0.html

来源:专利查询检索下载-实用文体写作网版权所有,转载请保留出处。本站文章发布于 2022-12-15 14:27:13

发表评论

验证码:
用户名: 密码: 匿名发表
评论列表 (有 条评论
2人围观
参与讨论