动态管状网格:高分辨率水平集的有效数据结构和算法 Dynamic tubular grid: An efficient data structure... 论文阅读笔记

本文提出动态管状网格(DT - Grid)这一新型高效数据结构和算法,解决现有水平集方法窄带方案内存占用大、访问和构建时间慢等问题。DT - Grid 存储更紧凑,内存和时间复杂度低,不受底层网络和边界条件限制,可与现有有限差分方案集成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文:

Nielsen, Michael B., and Ken Museth. “Dynamic tubular grid: An efficient data structure and algorithms for high resolution level sets.” Journal of Scientific Computing 26 (2006): 261-299.

引言

水平集方法的鲁棒性和灵活性的代价是必须在维数比实际界面高一维的离散网格上求解瞬态偏微分方程。相关的计算问题可以通过所谓的窄带方案得到有效解决,该方案利用了这样一个事实:求解界面附近的水平集偏微分方程就足以跟踪它。因此,水平集方法的窄带实现具有所需的属性,即计算复杂性随界面的大小(即 3D 中的面积和 2D 中的弧长)而不是其所在的体积(或面积)而变化。

然而,当前所有关于这些窄带方案的论文,要么需要存储完整的计算网格,要么需要将窄带网格点存储在分层树结构中。这会导致内存占用非常大,或者导致访问和构建时间相对较慢的复杂树数据结构。此外,这些窄带方法受到底层计算网格的凸边界的限制,这通常将接口扩展的范围限制在预定义的框内。本文的主要贡献是提出一种不受这些限制阻碍的新型高效数据结构和算法

树会被认为访问时间和构建时间相对较慢?

我们解决这些限制的一般方法是引入一个动态均匀网格,该网格仅在传播界面周围的管状区域中定义。因此,与现有的窄带方法相比,我们不在此动态管之外存储任何信息。此外,由于我们在界面周围应用统一采样,因此我们不会受到与多分辨率技术相关的一些限制(例如分层树的使用)的阻碍。我们的数据结构可以很容易地与为统一全网格开发的所有有限差分方案一起使用。

此外,在非均匀网格单元上插值产生的 Lipschitz 不连续性不是问题。事实上,我们的研究表明,我们的 3D DT-Grid 比最先进的八叉树实现更快、内存效率更高 [12, 33]。最后,我们的数据结构不受接口扩展的任何边界限制,这导致了我们所谓的“开箱即用”水平集模拟。在本文中,我们将我们的方法称为动态管状网格,或简称 DT-Grid

先前的工作

Level Set 的计算复杂性随着界面嵌入的网格的大小而变化,而不是界面本身的实际大小

通过引入所谓的窄带方案消除了这一限制,该方案简单地求解零水平集(即界面)附近的水平集偏微分方程。这个想法首先由 Adalsteinsson 和 Sethian [1] 提出,但数值实现是基于流体界面周围非常宽的频带,以避免频繁且昂贵的重建。后来 Whitaker [39] 提出了一种近似但更快的窄带方案,称为“稀疏场方法”。除了存储完整的网格之外,实际的界面网格点被排列在链表中,水平集偏微分方程仅在这些网格点处求解。然后通过近似 city-block 距离(曼哈顿距离)度量将该解决方案传播到相邻网格点。由此产生的窄带的宽度仅与界面网格点上使用的有限差分模板的尺寸一样宽。此外,通过采用速度函数扩展 [2] 来避免昂贵的重新初始化,该扩展保留了到流体界面的近似符号距离。最后,彭等人。 [27]提出了一种快速窄带方案,可以精确求解界面周围窄带内的水平集偏微分方程。随后,该解决方案通过欧几里得距离度量传播到额外的频带。他们的方法采用基于简单数组的数据结构,而不是[39]中使用的链表。

所有这些窄带方案都有效地解决了原始水平集公式中存在的计算复杂性问题[25]。但是,它们都显式存储完整的笛卡尔网格和附加数据结构来识别窄带网格点。这就导致相关的内存需求随着整个网格的大小而不是流体界面的大小而变化。对于水平集模拟来说,这可能是一个严重的限制因素,水平集模拟需要大网格来解决复杂界面的细节或随着时间的推移发生的大变形。据我们所知,之前发表的唯一试图解决这个严重问题的工作是基于树结构作为底层网格表示的相对较小的工作。对于轮廓,这通常相当于使用四叉树 [6,21,39],最近,这个想法通过八叉树 [16] 扩展到曲面。此外,Milne [20] 和 Sussman 等人。 [29] 探索了与基于补丁的 AMR 结合的水平集

基于树的方法确实减少了相关接口表示的内存占用。然而,一个问题似乎是在接口传播期间数据结构的访问和修改相对较慢。与基于完全均匀笛卡尔网格的常规窄带方案相比,这可能会导致性能显着降低,请参阅第 4 节和例子 4。然而,本文的审稿人向我们指出 Lossasso et al. [11] 正在提交的工作,它建议使用统一的网格,其中每个单元格都是它自己的八叉树。这应该消除大部分缓慢的访问,并且可以通过简单地添加统一的网格单元来轻松地在空间中扩展网格,而不需要修改其他单元中的八叉树或其深度结构。然而,我们缺乏实施细节来针对 DT-Grid 测试这些改进

虽然树数据结构允许多分辨率表示,但所有实用的树方法似乎都在界面附近使用统一的分辨率[6,16,21,39]。部分原因在于,很难设计可靠的“细化预报”,以保证在流体界面及时传播时不会因采样不足而遗漏任何精细功能。在界面附近进行均匀细化并仅将这些网格点存储在八叉树中(正如我们在第 4 节中出于评估目的所做的那样)可以在空间中使用标准高阶有限差分方案,例如 ENO [26] 或 WENO [17]以及 TVD Runge-Kutta 方法 [34]。然而,非均匀离散化使得准确地使用这些有限差分格式变得非常重要。基于树的方法通常使用半拉格朗日方案[36],该方案严格限于双曲线问题,例如外部速度场中的平流。虽然对于 CFD 中常见的问题非常有效,但目前尚不清楚如何将这种方法扩展到抛物线问题,例如基于曲率的界面流。此外,由于半拉格朗日方法在非均匀网格上使用插值,因此还必须明确解决 Lipschitz 连续性等重要问题 [21]。然而,正如 Losasso et al. [16] 所做的一种简单的自适应插值方案,就像[40]中描述的那样,当高精度不是主要问题时,效果很好。

Losasso et al. [16] 就是那个八叉树的泊松方程构造时只考虑两个点自己的压力,其他点都不考虑了

所谓的抛物线型问题,我脑中还没有概念

据我们所知,唯一与我们直接相关的工作是 Bridson [4] 和 Houston et al [14]。

Bridson [4] 建议将水平集存储在稀疏块网格中,该网格是一个粗糙的均匀网格,在与界面相交的粗网格单元中嵌套有更精细的均匀网格。这种方法允许更高的分辨率,但内存使用量与界面的大小不成正比。 Bridson 还提出了一种基于哈希表的解决方案,以允许网格扩展,但没有进行演示。

Houston et al [14] 最近在图形会议上中的技术草图(一页摘要)中描述了他们的方法,其中我们同时总结了 DT-Grid [3] 的主要特征。他们的工作主要集中在流体模拟上,并提出了一种基于游程编码的数据结构,它将元素的存储与实际编码分离。虽然我们没有足够的细节来重现他们的评估方法,但我们根据抽象和私人交流列出了以下特征。在 3D 中,他们的方法需要 O ( M X M Y + M 3 ) O(M_X M_Y + M_3) O(MXMY+M3) 存储,其中 M X M_X MX M Y M_Y MY M 3 M_3 M3 分别是边界框和窄带的 X 和 Y 维度中的网格点数量。因此它们的内存使用量与接口不成正比。顺序访问时间为 O ( M X M Y M 3 + 1 ) O(\frac{M_X M_Y}{M_3}+1) O(M3MXMY+1),而随机访问时间和模板访问时间是每条扫描线中运行次数的对数。他们的方法维护一个动态调整大小的边界框,允许级别集动态增长。然而,如果存储需求中的 M X M_X MX M Y M_Y MY 依赖性占主导地位,他们的方法就不允许进行开箱即用的水平集模拟。我们的方法 DT-Grid 的特征将在下一节中概述

“分别是边界框和窄带的 X 和 Y 维度中的网格点数量”原文是 are the number of grid points in, respectively, the X and Y dimensions of a bounding box and the narrow band,还真的没

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值