¿Qué nuevas estructuras de datos se utilizan en FEM adaptativo?

9

Muchas bibliotecas FEM adaptativas utilizan estructuras de datos de malla más avanzadas para manejar la adición / eliminación de nodos, bordes, triángulos, tetraedros, etc. Por ejemplo, la biblioteca p4est usa estructuras de datos octree para el refinamiento de malla adaptable; a menudo no encontraría octrees utilizados para los cálculos en una malla estática.

¿Qué cambios en el lado de álgebra lineal para FEM adaptativo?

La forma más contundente que puedo concebir sería reconstruir completamente todas las matrices del sistema cada vez que la malla se refina o engrosa. Si la adaptación de malla es una operación lo suficientemente infrecuente, el gasto de hacerlo se amortiza en última instancia sobre el resto del cálculo. Con este enfoque, se podría aprovechar fácilmente el software de álgebra lineal escasa existente (PETSc, Trilinos, etc.).

¿Es este método contundente el más utilizado o hay bibliotecas que logran reutilizar o modificar la matriz antigua durante el refinamiento? Después de todo, la mayoría de la malla y las matrices correspondientes no cambian durante una adaptación de malla.

Daniel Shapero
fuente

Respuestas:

6

Sí, el enfoque más común es reconstruir. Las estructuras de datos que se pueden modificar en el lugar tienden a ser menos eficientes una vez configuradas, y la reasignación es realmente bastante barata en comparación con el reensamblaje (por ejemplo, debido a la no linealidad), por lo que es realmente una buena solución. Fuera de nichos relativamente raros con soluciones muy fáciles, los intentos de usar estructuras de datos dinámicas en los solucionadores solo harán que su aplicación sea más lenta. Sin embargo, es una percepción común entre quienes olvidan medir o modelar el desempeño.

Jed Brown
fuente
3

Como ya dijo Jed, la reutilización de componentes de álgebra lineal como matrices y vectores no se realiza comúnmente. Tampoco es necesario: configurar estos componentes es comparativamente muy barato en relación con el costo de resolver sistemas lineales.

Si busca cosas que cambian al pasar de mallas estáticas a mallas adaptativas, entonces el mayor obstáculo es lidiar con nodos colgantes. En deal.II , esto es manejado por la clase ConstraintMatrix , que toma varias 1000 líneas de código. Puede encontrar parte de la descripción de lo que hace esta clase en el documento de mí y Oliver Kayser-Herold (vinculado desde mi página de publicaciones ). Ningún otro componente (aparte del manejo de la malla, por supuesto) ha requerido tanta adaptación al pasar de mallas fijas a adaptativas.

Wolfgang Bangerth
fuente