导航:首页 > 源码编译 > 网格算法的原理

网格算法的原理

发布时间:2024-12-19 09:48:09

⑴ 什么是网格算法

网格化是解释流程中构造成图的比较重要的一步,算法种类也比较多。在SMT中就列出了许多种算法供选择,当然每种算法有自己的特点和适应性,所以在真正网格化操作时为了提高预测的精度需要选择合适的算法。如下为SMT中提供的几种算法简单对比。

Collocated Cokriging
协克里金算法
层位、断层、网格、XYZ数据、层段属性、钻井分层(较好用于井数据与地震属性匹配)

Cubic Spline
样条插值
三维的层位、网格、断层、XYZ数据

Flex Gridding
弹性网格化
层位、断层、网格、XYZ数据、层段属性、钻井分层

Gradient Projection
梯度投影
二维、三维的层位、网格、断层、等值线、XYZ数据(较好用于构造数据)

Inverse Distance to a Power
反距离加权
二维、三维的层位、网格、断层、等值线、XYZ数据、层段属性、钻井分层(较好用于速度成图)

Natural Neighbor
自然邻点插值
XYZ数据、层段属性、钻井分层(较好用于非地震类数据)

Ordinary Kriging
普通克里金插值
XYZ数据、层段属性、钻井分层(较好用于渗透率成图)

Simple Kriging
简单克里金插值
XYZ数据、层段属性、钻井分层(较好用于渗透率成图)

Universal Kriging
广义克里金
XYZ数据、层段属性、钻井分层(较好用于渗透率图件和有整体变化趋势的数据)

这里对两种算法做个介绍:

1、SMT8.2版本中新出现的Flex Gridding 弹性网格化算法

该算法利用差分方程系统原理,产生的网格节点处数值需要满足以下两种原则:

. 内插面与实际数据产生的趋势面一致或者很接近;

. 该面的RMS曲率值尽可能小。

如果在一个节点处应用每一种方程都计算差分的话,而且将邻近点都考虑在内的话,其结果会形成一个组合,但越远的点影响越弱、越不直接。因此,在计算时都假设邻近节点为常数,每个方程就会得到一个网格数值。如此重复应用于其它节点处。这样可以解决单个节点的问题,我们将方程称为“调和器”。该方法产生的曲率面会趋于最小,而且逼近实际数据。

由于每个节点在进行调和滤波计算时都需要一个局部的调和器,网格节点多时就会有许多次迭代计算过程。迭代次数差不多为N的e次方(N为数据列/行数)。因此初始网格一般时非常小的。

2、Collocated Cokriging 协克里金插值

协克里金插值与克里金算法原理基本一样,都是通过差异比较来计算网格数值,同时产生方差图,但是该方法假设事件都是多属性的,可以利用第二种协数据(如层位)辅助第一种主数据进行稀疏数据点(如井控制点)的内插。

协克里金插值利用第二种协数据指导主数据的网格化,可以提高克里金插值的准确性。该算法中断层可以参与运算。在使用时用稀疏数据(如井数据)作为主数据,另外一种密集分布数据作为协数据。

在具体计算中网格点处主数据有值的地方都用主数据的值,如果网格点处没有值时则用协数据作为辅助进行计算。并且会同时产生一个方差模型。

最终的协方差网格结果为主数据进行克里金插值,同时受协数据影响。

因此,如果主数据为密集分布的数据,计算产生的网格也会接近主数据。例如,数据中包括测井解释的孔隙度数据(稀疏分布),从地震属性中预测的伪孔隙度数据(密集分布)。数据单位是一致的,但来源可能不一样。

对于这种情况下协克里金插值就是一种很好的网格算法,还可以建立起振幅与孔隙度之间的关系。

在应用时有以下注意事项:

1)在主数据为稀疏分布,协数据伪密集分布时应用效果最好。

2)如果主数据与协数据之间有一定联系的话效果最好。

3)数据类型最好一致。

⑵ 三角曲面求交的网格法

6.1.3.1 网格法的基本原理

由于三角曲面求交运算最终是三角形之间的求交运算,因此,我们在不能漏掉任何可能相交的三角形对的同时,要尽量排除不可能相交的三角形对。网格法的目的就是寻找可能相交的三角形对。该方法先将曲面包围盒的相交区域划分成规则六面体格网,先找到与每个网格单元相交的三角形,再将每个单元内分别来自两张曲面的三角形组成可能相交三角形对,再对可能相交三角形对进行求交运算。网格法的基本过程为:

(1)先在合适的坐标系下分别构造出两张三角曲面的矩形包围盒,求出两个包围盒的交作为新的包围盒;

(2)然后将新包围盒划分成由若干规则六面体组成的格网;

(3)针对每个网格,分别从两张曲面中找到与其相交的所有三角形,并组成可能相交的三角形对;

(4)对所有网格中的三角形对进行整理,删除重复三角形对;

(5)对所有三角形对进行求交运算,计算出交线段;

(6)进行交线追踪,获得曲面交线。

6.1.3.2 格网的构建

为了方便,常常将两张曲面的包围盒的相交区域划分成等尺寸的规则六面体格网。这样,仅仅根据坐标就可以很方便地确定每个结点位于哪个网格内。

显然,不与任何一个相同网格相交的两个三角形是不可能相交的。网格法可以排除很多不相交的三角形对,也不会漏掉任何相交的三角形对。网格的大小是影响计算效率的关键。如果网格单元尺度太大,则会得到更多的可能相交三角形对,降低了不相交三角形对的排除效率;如果网格单元尺度太小,内存就会开销增大,而且三角形与格网相交计算量也会增大。一般情况下,可以使网格边长与三角网格的平均边长相当。

6.1.3.3 三角形与格网的相交判断

由于曲面上有数量众多的三角形,如果直接判断每个三角形与每个网格单元是否相交,则计算效率非常低。下面介绍一种判断一个三角形与格网相交的方法,算法思路如下:

(1)在格网所在坐标系下,将三角形与格网分别投影到xoy面上(图6.3(a))。格网的投影为一个平面格网,而三角形的投影为三角形或一条线段。如果三角形的投影为线段,则选择xoz或yoz为投影面。为了叙述简便,这里只介绍在xoy面上的投影为三角形的情况。

(2)计算投影三角形的边与平面网格线的交点,并计算过每个交点的xoy面的垂线与三角形的交点,将这些交点与三角形的顶点合并组成点集Ω。

(3)利用Ω中的点在xoy面上的投影坐标直接判断每个点所在的格网单元(包括位于格网单元内部或边界上),找到同属一个格网单元内的点组成子集(一个点可以位于多个格网单元内)。

(4)针对每个Ω的子集Ф及投影所在的格网单元g(图6.4(b)),将原三维格网中平面投影为g的所有格网单元组成列G。找到子集Φ中点的最小与最大z坐标,从最小到最大z坐标所跨越的G中的网格单元即为与该三角形有相交的格网单元。

(5)删除由上述方法所得的重复记录的格网单元,就可得到与该三角形相交的所有格网单元。

图6.4 三角形与格网求交示意

6.1.3.4 网格法曲面求交算法

网格法三角曲面求交算法如下:

三维地质建模方法及程序实现

⑶ 技术分享|正交体网格生成算法

在流体力学问题的求解过程中,有限元法或有限体积法通常需要将求解区域划分为网格。体网格,作为一种用于划分三维空间的网格,相较于表面网格,它覆盖整个物体内部。体网格的生成方式多样,包括四面体网格、六面体网格以及多面体网格,根据生成方法又可分为结构化与非结构化网格、贴体与非贴体网格等。

生成四面体网格常用的方法有Delaunay法和波前法。六面体网格生成算法包括映射法、扫掠法和正交切割单元法(Cartesian cut-cell)。映射法和扫掠法适用于特定几何模型,而正交切割单元法则具有较强的普适性,仅需输入表面网格即可自动生成六面体为主的多面体网格。本文重点介绍正交切割单元法。

正交切割单元法要求输入面网格满足以下条件:纯三角形、水密性、流形条件。算法流程包括初始化、切割和细分,最终形成体网格,包含完全位于模型内部的单元与与表面相交的单元。体网格的数据结构由节点坐标列表、切割面列表和网格单元列表组成,切割面和网格单元分别存储以避免数据重复。

在切割过程中,通过计算每条三角形边与正方体平面的交点来生成节点列表,并将节点有序插入。之后,将生成的节点组装成平面多边形(切割面),存储在列表中并记录在对应的网格单元中。对于混合边的处理,需要记录其在平面上的交点和节点顺序,避免重复计算。

为了展示正交切割单元法的成果,本研究使用自定义代码生成了多面体网格,并将结果转化为Paraview可读格式。通过Paraview中的clip filter工具可视化模型内部单元的形状和分布。由于未进行细分,显示的仅为使用均匀背景网格切割得到的结果。

本文参考了相关文献,包括Owen与Steven的“自动网格生成算法简介”、Aftosmis、Berger与Melton的“自适应立方体网格生成”以及Tao、M.等人的“Mandoline:任意三角形网格的鲁棒切细胞生成”。

⑷ 什么是网格搜索法如何用它来优化学习算法

网格搜索法是指定参数值的一种穷举搜索方法,通过将估计函数的参数通过交叉验证的方法进行优化来得到最优的学习算法。
即,将各个参数可能的取值进行排列组合,列出所有可能的组合结果生成“网格”。然后将各组合用于SVM训练,并使用交叉验证对表现进行评估。在拟合函数尝试了所有的参数组合后,返回一个合适的分类器,自动调整至最佳参数组合,可以通过clf.best_params_获得参数值

阅读全文

与网格算法的原理相关的资料

热点内容
25匹压缩机铜管 浏览:570
单片机单灯左移05 浏览:150
买服务器练手什么配置 浏览:783
服务器被毁该怎么办 浏览:937
python私有库 浏览:512
Python有中文吗 浏览:736
麦块的服务器为什么都进不去 浏览:474
新买的服务器如何打开 浏览:35
安卓软件游戏怎么开发 浏览:319
用扑克摆爱心解压神器怎么摆 浏览:70
松下制冷压缩机 浏览:275
pdf里怎么修改文字 浏览:686
已保存文档加密如何设置 浏览:413
怎样判断加密货币是牛是熊 浏览:948
初二多项式乘法速算法 浏览:455
android多个布局文件 浏览:629
奔跑程序员 浏览:468
服务器如何搭建类似github 浏览:292
明日之后安卓太卡怎么办 浏览:503
如何使用命令方块找到村庄 浏览:767