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:
- 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.
- 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:
- Tiene una definición / implementación relativamente simple, idealmente de código abierto y con compatibilidad C / Fortran.
- Puede manejar eficientemente una gran cantidad de bloques de cuadrícula (por ejemplo, 1000 o más).
- 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).
fuente
Respuestas:
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).
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.
No estoy muy familiarizado con el manejo de cuadrículas sin cortes, pero las estructuradas se manejan bien en Tecplot
fuente