Disección anidada en cuadrícula regular

9

Al resolver sistemas lineales dispersos utilizando métodos de factorización directa, la estrategia de ordenamiento utilizada impacta significativamente el factor de relleno de elementos distintos de cero en los factores. Una de esas estrategias de ordenación es la disección anidada. Me pregunto si es posible idear la disección anidada con anticipación dados solo los parámetros de la cuadrícula (supongamos una cuadrícula de diferencia finita cuadrada M x N con diferencias de primer orden).

Editar Acabo de encontrar que hay un código que hace esto: http://www.cise.ufl.edu/research/sparse/meshnd/

Victor Liu
fuente

Respuestas:

8

Si. Recientemente escribí un código para hacer exactamente esto.

Suponga que tiene una cuadrícula , y que es aceptable tener nodos hoja con 100 vértices. Entonces se puede definir una función recursiva donde los argumentos son:norteX×nortey

  • las dimensiones y las compensaciones de un subdominio rectangular
  • un puntero en una matriz que almacenará el reordenamiento

La rutina simplemente tiene que calcular el producto de las dimensiones locales para decidir si el dominio es aceptablemente pequeño para ser una hoja, y luego, si es así, escribir los índices naturales del nodo de la hoja (digamos norteunatturunal(X,y)=X+ynorteXnorteX×nortey

Jack Poulson
fuente
Supongo que mi pregunta es más: ¿la disección anidada realmente corta recursivamente el espacio en mitades? Además, ¿está ordenando colocar los índices límite antes de cada mitad derecha e izquierda? Nunca he encontrado una explicación simple de lo que está sucediendo.
Victor Liu
1
Sí, la disección anidada es muy sencilla, pero almacena los índices límite después de las mitades izquierda y derecha. El objetivo es garantizar que los dos subdominios no estén conectados directamente, por lo que, para diferencias finitas, es importante tener en cuenta el tamaño de su plantilla al decidir qué tan grueso debe ser el separador. Le recomiendo que lea la descripción general de Liu del método multifrontal y que haga la conexión de que cada separador se trate como un supernodo.
Jack Poulson
Ah sí, me di cuenta de que poco después hice un comentario y luego hice la edición. Gracias por la referencia
Victor Liu