地质统计学模拟方法能够模拟空间结构和模式,基于统计模型的选择。过去几十年中,多点统计方法得到了快速发展,它通过训练图像推测统计模型。这种方法能够得到更简单的定量模型,更真实地模拟地质结构。目前已经提出了多种多点地质统计学算法,每种方法都有自己的优缺点。MPSLIB是一个C++类库,它提供了一种框架,可以执行大部分现有基于序贯模拟的多点地质统计学模拟方法。SNESIM方法通过树和列表结构执行,提出了一种新的通用的SNESIM算法,GENESIM,它变现既像SNESIM算法,又像直接采样算法。MPSLIB的目标是很容地在几乎所有平台编译(仅要求标准的C++11),在Open LGPL v3下开源发布,鼓励深入开发。永久代码地址是https://github.com/ElsevierSoftwareX/SOFTX-D-16-00042
地质统计学是统计学的一种,它关注在概率框架内描述地质-空间结构。地质统计模型指选择一个概率分布能够反映特定的地质模型。地质统计模型往往用于表征地下储层模型,用于模拟地下水、碳水化合物和热能的储藏、探勘、开发和管理。地质统计模型描述无限多单一的地质模型,这些模型都具有相同的概率函数,地质模型的变化反映了与统计模型相关的不确定性。相比于单一的,在某种程度上最优的模型,这种不确定性的定量化是利用地质统计模型表征的优点。
地质统计建模包括两个步骤:首先是统计模型的选择或建立,往往通过概率分布f(m)的方式,然后基于这个概率分布通过一定的模拟算法得到实际的实现。 通常,地质统计模拟算法都是基于高斯统计,往往是基于点对模型参数的统计,因此称之为2点地质统计学,这些方法曾经,包括目前也是最常用的方法。但是基于2点统计的方法在反映空间结构是能力有限,多点统计模型的出现,使得更具地质真实性的空间结构模拟成为现实,目前已经有多种多点地质统计学模拟算法。基于多点地质统计的统计模型,往往没有闭合形式的解析表达式f(m),而是,用“训练图像”或“样本模型”预测多点统计事件。多点地质统计方法的目的是从未知的f(m)中采样得到的实现与训练图像具有一致的统计特征
这些提出的多点地质统计学算法在不同形式下执行,这些代码或难以维护,或难以在多平台下执行,或无法开源。
这里提供了一种C++类库,MPSLIB,它专门用于多点统计模拟,而且是开源的。MPSLIB包含了执行基于序贯模拟的多点模拟算法所需的核心函数比如SNESIM和ENESIM,但是不包括基于模式匹配和图像合成的方法。
MPS是一个包含了不同类的命名空间,主要的类是MPSlgorithm,他包括序贯模拟算法三维网格数据的读写方法,读取已知的数据(硬数据和软数据)的方法,建立数据邻居的方法,以及生成控制路径(随机路径)的方法。另外,MPSalgorithm能够执行多重网格和条件化,以及硬数据网格赋值方法。
也定义了两个抽象成员函数,MPSlgorithm::readConfig和MPSAlgorithm::simulate。
这样,为了利用MPS的类,需要一个新的C++类,它需要继承MPSAlgorithm,然后至少执行两个成员函数。MPSAlgorithm::readConfig用于设置模拟所需的所有参数,比如读取参数文件。MPSAlgorithm::simulate应该执行一个方法产生模型实现。就像上文提到的,不同多点地址统计算法的主要区别是这个函数的不同,主要分为两类,一类与ENESIM相似,一类与SNESIM相似。因此,两个通用的类,MPSEnesim和MPSSnesim,用于执行相关模拟的方法,这两个亚类是整个MPSLIB的基础,。