具有不同网格密度的 Eikonal 方程求解器

计算科学 非线性方程 波传播
2021-12-05 20:51:57

快速行进法快速迭代法快速扫描法是在离散网格上求解Eikonal 方程的三种方法,本质上只是从初始点扩展的波前,例如:

在此处输入图像描述

这个想法是我们想要计算时间T(x,y)在哪个波前,以速度函数穿过场F(x,y),到达网格中的每个点,例如:

在此处输入图像描述

墙壁等将用F(x,y)=ϵ对于一些非常小的ϵ.

这很好,这些方法在实践中效果很好,但是它们都适用于固定大小的网格。

在许多应用中,最好用某种树来表示速度场,比如四叉树或八叉树。具有代表它们的较大树单元的区域将简单地具有相同的速度,尽管某种插值甚至可能是可能的。这可以解释为,我们希望在树木密度较高的某些区域获得“高分辨率”结果,而在树木密度较低的某些区域获得“较低分辨率”结果。无论哪种方式,是否有可能应用这些方法(或类似的方法)来解决T(x,y)使用用某种树表示的速度场F(x,y)

简单地说,我知道你可以简单地找到你的树的“最低分辨率” - 即最小的单元格 - 然后在算法运行时将每个较大的单元格转换为这些较小的单元格,但这似乎远不是最优的,并且有点击败首先是一棵树的点。因此,有没有更好的方法来做到这一点?

似乎很清楚,目标是拥有一个字段,该字段也表示在与相同的树中,以给出相似的密度结果,但是我没有不知道这是否是最好的考虑方式。更具体地说可能最终会成为某种形式,其中内部点(如果我们试图重新创建固定大小的离散网格)是树网格角之间的插值,但这也本质上是什么无论如何,它都是为了将​​离散网格答案映射到连续网格答案,所以我觉得这不是一个太大的问题。T(x,y)F(x,y)T(x,y)

确实,这个问题的动机只是因为 Eikonal 方程求解器的当前实现很慢,原因有两个:

  1. 每个网格单元对其邻居结果的依赖关系。诸如快速迭代方法之类的东西使它们基本上不那么“捆绑在一起”,因此可以进行某种程度的并行化,但是我想知道是否有某种方法可以进一步将工作分解为独立的网格单元,这些单元可能会根据它们得出结果最终将被计算的邻居值。这是一种旁注,但我觉得树方面可能与它有关,因为“低密度”结果必须通过“高密度”邻居平滑地近似。这就进入了第二点:

  2. 当前方法为网格中的所有点计算相同的精度。在许多情况下,只有地图的特定部分才需要良好的准确性,因此如果可以将工作“拆分”为所需的高分辨率结果部分和所需的低分辨率结果部分,那就太好了。不过,使用某种树来解决这个问题似乎并不那么简单。

1个回答

这可能不是您的最终解决方案,但无论如何您需要更改离散化方法,将连续 Eikonal 方程替换为网格上的一些离散数值方案。快速行进法等经典方法主要基于Rouy-Tourin方案。

在 Gibou 和 Min 的工作中,您可以找到水平集方程的四叉树或八叉树数据结构的离散化方法,我的快速搜索给了我:

http://www.math.lsa.umich.edu/~psmereka/LEVELSET/LSPAPERS/min_gibou.pdf

在那篇论文中,他们为所谓的重新初始化目的求解了 Eikonal 方程,但他们没有使用任何类型的快速方法。也许你可以学习如何在你的网格上获得数值方案,然后可以应用快速扫描方法。

至少这可能是寻找问题解决方案的方向。