Estoy trabajando con la biblioteca OpenFOAM C ++ Computational Continuum Mechanics (puede lidiar con la interacción fluido-sólido, flujos MHD ...) que utiliza mallas arbitrarias no estructuradas. Esto fue impulsado por la idea de utilizar la ventaja de la generación rápida (generalmente automática) de mallas no estructuradas para simular problemas en geometrías complejas.
Sin embargo, recientemente me he encontrado con otro enfoque: mallas cartesianas adaptativas de octree con "corte" de celdas, donde el refinamiento agresivo de la malla se utiliza para describir una geometría compleja.
Desde el punto de vista numérico, las mallas carthesianas son mucho más precisas, por lo que mi pregunta es: ¿alguien tiene experiencia en el uso / implementación de uno o ambos enfoques? ¿Cómo se comparan entre sí?
Estoy desarrollando códigos para el flujo de fluido en dos fases y noté, por ejemplo, que la reconstrucción de los gradientes de campo se puede hacer fácilmente más precisa en las mallas carthesianas, mientras que la malla no estructurada requiere una regresión lineal para cambios abruptos en el campo ...
fuente
Respuestas:
Creo que todas las bibliotecas FEM más modernas (por ejemplo, deal.II, libmesh, ...) usan el esquema basado en octree (o, para ser más precisos: oct-forest, con un árbol que comienza desde cada celda de una malla gruesa no estructurada ) Esto tiene muchas ventajas, principalmente porque conoce la jerarquía de las celdas de malla. Esto implica que puede hacer fácilmente engrosamiento, cuadrícula geométrica, etc., todo lo cual es increíblemente difícil si comienza con una malla fina no estructurada. Además, la partición se convierte en un problema casi trivial. La desventaja del enfoque es que si tiene una geometría complicada, anteriormente solo tenía que describirla al generador de malla, mientras que ahora también tiene que describirla al código FEM porque necesita la geometría al refinar una celda que se encuentra en el Perímetro.
En igualdad de condiciones, creo que el enfoque basado en octree es mucho más flexible y útil que usar una malla desestructurada descomunal.
fuente
También tenga en cuenta que la discretización de tiempo implícita y el método de las líneas son más simples y tienen mejores propiedades para los métodos en los que el número de dofs y la conectividad de la malla no cambian. Además, siempre que la física y la discretización espacial sean continuamente diferenciables, habrá una contigua continua (útil para el análisis de sensibilidad, optimización, cuantificación de incertidumbre, etc.).
La mejor opción depende en gran medida de los problemas, pero para los problemas de CFD con capas límite delgadas, especialmente cuando se utiliza la resolución de pared en lugar de modelado de pared, las mallas conformes no estructuradas o estructuradas en bloques son buenas opciones.
fuente
Las cuadrículas estructuradas permiten una gran cantidad de supuestos que pueden explotarse para el rendimiento, pero generalmente son más difíciles de implementar y menos eficientes de realizar que las cuadrículas no estructuradas en presencia de límites complejos. Las cuadrículas no estructuradas se aproximarán eficientemente a límites complejos sin programación adicional, pero se pueden hacer muy pocas suposiciones sobre la estructura de la matriz. Como siempre, no existe un enfoque mejor que el que mejor se adapte a sus necesidades. El primero a menudo se emplea en el océano, el clima, el modelado cosmo / geo, el último en problemas de ingeniería.
fuente