如何将多点数据插入到非结构化网格的单元中心?

计算科学 插值 非结构化网格
2021-11-29 04:10:58

我有多组多点字段数据,每个点数据集都与非结构化网格的单个单元格相关。目标是以最准确的方式直接或间接地将数据插入到单元中心。

如果我使用反距离加权插值,在源和目标(单元中心)之间的距离非常小的情况下,我最终可能会出现浮点异常。

对于结构化网格上的这种插值,使用体积加权插值。这不会直接转化为任意形状的网格单元。

仅当我不引入任何可能导致插值效率低下的测试时,引入 IDW 插值容差以规避 SIGFPE 才有意义。是否为每个权重的分母添加足够小的你知道哪些适合这个问题的插值方法?δ

附加信息:

对于从网格到点的插值,我使用基于质心坐标的插值。网格的每个多面体单元都分解为四面体。使用IDW 插值将单元中心场内插到单元点对每个点进行搜索以找到它所在的四面体,并使用重心插值对值进行插值

对于从点到网格的插值,这是不可能的。以单元格为中心的值是未知的。没有办法组装一个强制的四面体组合,其中是与点P和单元中心C相关的权重。这是因为点配置是任意的。所以,我目前正在为此使用 IDW,以确保我没有得到浮点异常。有没有更适合这个问题的插值方法?pWPC=1WPC

2个回答

用于分散数据插值的各种软件包的链接在我的网页http://www.mat.univie.ac.at/~neum/stat.html#fit


GE Fasshauer, Meshfree Approximation Methods using MATLAB, World Scientific 2007一
提供了最先进的综合技术(截至 2006 年)。

最近关于分散数据插值的几篇论文:http:
//www.stanford.edu/group/uq/pdfs/journals/jcp_scattered_2010.pdf
http://www.math.auckland.ac.nz/~waldron/Preprints/盒样条线/盒样条线.pdf

使用哪种方法很大程度上取决于对生成的插值的使用。克里金方法基于随机模型,因此如果要插值的数据有些嘈杂,则很好。如果(稳定实现)并且想要视觉上令人愉悦的结果(低曲率插值),则首选径向基函数。

下面我将举例说明如何在有限体积网格上从一组点插值到另一组点。

我已经对变量进行了并置排列——我存储在内存中的数据代表了单元中心的值。我存储字段变量及其梯度。梯度是从解决最小二乘问题的周围值中找到的(通过 Householder 反射使用 QR)。

你的安排可能不同,但原则是一样的。

那么如果我正在寻找ϕf- 单元面中心的值我可以从:

ϕnb1+ϕnb1rnb1,f=ϕf

ϕnb2+ϕnb2rnb2,f=ϕf

...

ϕnbn+ϕnbnrnbn,f=ϕf

在哪里,nb指定一个相邻的单元格中心,它们从 1 到 n(通常只有 1 就足够了,我使用 2,即我使用共享面部的相邻单元格)。rnbn,f是从第 n 个相邻单元格的中心到面中心的距离向量f.

然后我写

ϕf=1n(i=1nϕnbi+i=1n(ϕnbirnbi,f))

因此,您需要在这些点上设置一组字段值和梯度。您需要确定哪些周围的点将有助于您的插值点,以及从这些点到我们插值的点的距离向量。

例如:如果存储代表单元格顶点值的数据,则使用此等式查找单元格中心值等,这一切都取决于您的情况。

所以这是基于围绕点的泰勒级数。人们也可以使用二阶导数来推导出更准确的表达式。