四叉树和八叉树网格的可视化

计算科学 可视化
2021-12-19 03:01:01

所谓的四叉树八叉树网格对于需要自适应网格细化的应用非常有吸引力。例如,它们在GerrisParamesh中使用。是否有人知道此类网格的良好文件格式并支持可视化软件?另请参阅Gerris 常见问题解答中的此答案我目前知道的唯一潜在候选人是 VTK HyperOctree类,但似乎几乎没有文档。

作为网格的一个具体示例,考虑一个稀疏细化的八叉树网格,由框组成,每个框包含单元。我目前在 Visit/Paraview 的策略是:1048×8×8=512

  1. 将网格写为非结构化的 VTK 文件。这对于较大的数据集来说是昂贵的,并且没有利用四叉树/八叉树的“结构化”。
  2. 将树中的相邻“盒子”收集成更大的块,并编写一个块结构的网格。这涉及到相当多的额外代码,并且丢失了嵌入在四叉树/八叉树中的连接信息。

更新如果目前没有直接编写和可视化八叉树网格的可行格式,我将不胜感激有关可用于将八叉树编写为块结构网格的文件格式的建议。理想情况下,这种格式:

  1. 具有相对简单的定义/实现,理想情况下是开源的并且具有 C/Fortran 兼容性。
  2. 可以有效地处理大量的网格块(例如 1000 个或更多)。
  3. 允许轻松指定网格块的连通性,特别是在细化边界处。

我目前正在为此目的使用Silo,但我正在寻找在上述三点上得分更高的东西(更小、更快、更简单)。

1个回答

就我而言,当我进行多级细化时,我曾经分别编写不同级别的网格文件。通常,级别 0 是保持固定的基本粗网格。对于 1 级及更高级别,我为不同的补丁使用不同的文件。假设您在级别 1 上有 5 个精细补丁,我的策略是在程序末尾编写五个不同的文件,例如 Level_1_Patch_1,Level_1_Patch_2... 可以在 C 中动态完成(从未在 Fortran 中工作)。

        char filename1[64];
        sprintf(filename1, "Patch%d.dat", patch_number);
        
        FILE *file;
        file= fopen(filename1, "wb");

我应该在这里提到我使用了一个有限差分的结构化网格系统。

因此,一旦我拥有了所有级别及其 .PLT 或 .DAT 文件。我将它们全部导入 TecPLOT。例如,当我在级别 1 上编写带有几个精细补丁的两级代码时,您的网格在 Tecplot 中应该是这样的。

在此处输入图像描述

我不太熟悉处理非结构化网格,但结构化网格在 Tecplot 中处理得很好