Visualización de cuadrículas quadtree y octree

10

Las llamadas cuadrículas quadtree y octree son bastante atractivas para aplicaciones que requieren refinamiento de malla adaptativa. Por ejemplo, se usan en Gerris y Paramesh . ¿Alguien sabe de un buen formato de archivo para tales cuadrículas y el software de visualización compatible? Vea también esta respuesta en las preguntas frecuentes de Gerris. El único candidato potencial que conozco actualmente es la clase VTK HyperOctree , pero parece que casi no hay documentación.

Como un ejemplo específico de una malla, considere una cuadrícula de octree escasamente refinada, que consta de cajas, cada una con celdas. Mis estrategias actuales en Visita / Paravista son:104 48×8×8=512

  1. Escriba la cuadrícula como un archivo VTK no estructurado. Esto es costoso para conjuntos de datos más grandes y no explota la 'estructura' del quad / octree.
  2. Recoja 'cajas' vecinas en el árbol en bloques más grandes y escriba una cuadrícula estructurada en bloques. Esto implica bastante código extra y pierde la información de conectividad incrustada en el quad / octree.

Actualización Si actualmente no hay un formato viable para escribir y visualizar directamente una cuadrícula de octree, agradecería sugerencias para un formato de archivo que pueda usarse para escribir octree como una cuadrícula estructurada en bloques. Idealmente, este formato:

  1. Tiene una definición / implementación relativamente simple, idealmente de código abierto y con compatibilidad C / Fortran.
  2. Puede manejar eficientemente una gran cantidad de bloques de cuadrícula (por ejemplo, 1000 o más).
  3. Permite especificar fácilmente la conectividad de los bloques de cuadrícula, en particular en los límites de refinamiento.

Actualmente estoy usando Silo para este propósito, pero estoy buscando algo que obtenga mejores puntajes en los tres puntos anteriores (más pequeño, más rápido, más simple).

Jannis Teunissen
fuente
1
¿Por qué la malla no estructurada crea demasiados datos? Solo serían 5 millones de células. Ese es un conjunto de datos bastante pequeño para que visualice en Visita o Paravista.
Wolfgang Bangerth
Debido a que las coordenadas y la conectividad se especifican por celda, en lugar de solo una vez por casilla (que contiene, por ejemplo, 512 celdas). Para conjuntos de datos más grandes (por ejemplo, 20 millones de celdas o más), la visualización se vuelve mucho más lenta que con una malla estructurada en bloques, en particular si partes significativas de la cuadrícula están en el mismo nivel de refinamiento.
Jannis Teunissen
Quizás la lista de formatos de archivo admitidos en Visit sea útil para esta pregunta: visitusers.org/…
Jannis Teunissen
1
¿Quizás también vea lo que CHOMBO, SAMRAI, etc. hacen para la visualización?
Abhilash Reddy M
1
Agregue BoxLib a la lista. Han desarrollado un paquete llamado AMRVis para visualizar los datos de AMR. El código está disponible en el sitio web de LBL.
Abhilash Reddy M

Respuestas:

2

En mi caso, cuando hacía el refinamiento multinivel, solía escribir archivos de cuadrícula en diferentes niveles por separado. Por lo general, el nivel 0 es una malla gruesa base que permanece fija. Y para el nivel 1 y superior, utilicé diferentes archivos para diferentes parches. Digamos que si tiene 5 parches finos en el nivel 1, mi estrategia fue escribir cinco archivos diferentes al final de mi programa, algo como Level_1_Patch_1, Level_1_Patch_2 ... que podría hacerse dinámicamente en C (nunca funcionó en Fortran).

        char filename1[64];
        sprintf(filename1, "Patch%d.dat", patch_number);

        FILE *file;
        file= fopen(filename1, "wb");

Debo mencionar aquí que utilicé un sistema de cuadrícula estructurada de diferencia finita.

Entonces, una vez que tuve todos los niveles y sus archivos .PLT o .DAT. Los importo todos en TecPLOT. Por ejemplo, cuando estaba escribiendo mi código de dos niveles con un par de parches finos en el nivel 1, su malla debería verse así en Tecplot.

ingrese la descripción de la imagen aquí

No estoy muy familiarizado con el manejo de cuadrículas sin cortes, pero las estructuradas se manejan bien en Tecplot

Tanmay Agrawal
fuente
Es interesante leer sobre su enfoque, pero esto no parece viable para un gran octree, entonces tendría que escribir y leer miles de archivos, que generalmente es bastante lento.
Jannis Teunissen
1
@JannisTeunissen: Si está buscando una solución estructurada en bloques, para Tecplot, todos los bloques se pueden escribir en el mismo archivo como "Zonas" separadas (terminología de tecplot). No tienen que ser archivos separados. Sin embargo, la E / S paralela no está allí. Grandes conjuntos de datos se ahogarán. Sin embargo, los archivos tecplot se pueden cargar en ParaView (Tecplot es propietario). El formato ASCII es muy sencillo. Con un poco de esfuerzo, también podría escribir directamente archivos binarios en formato tecplot. Hay una biblioteca oficial llamada TecIO que puede vincular su código para crear los archivos más fácilmente.
Abhilash Reddy M
No creo que funcione mejor que mi enfoque actual con Silo, que (lo más importante) es de código abierto. Tenga en cuenta que los archivos ASCII no son realmente viables para este problema.
Jannis Teunissen