Saltar a contenido

Solucionador y precondicionamiento

Los solucionadores lineales de FrontISTR se configuran eligiendo un método directo o iterativo; los métodos iterativos se combinan con un precondicionador para resolver las ecuaciones lineales. El método de tratamiento de MPC y la eliminación de grados de libertad de contacto son opciones auxiliares que determinan cómo se trata un sistema lineal que contiene restricciones multipunto o de contacto.

Descripción general

La configuración del solucionador y del precondicionamiento se compone de las opciones siguientes. Primero se selecciona como solucionador lineal un método iterativo o directo. Solo cuando se selecciona un método iterativo se combina con un precondicionador.

Categoría Opciones principales Función
Métodos iterativos CG, BiCGSTAB, GMRES, GPBiCG, GMRESR, GMRESREN Resuelven matrices dispersas de gran tamaño con un uso de memoria relativamente eficiente.
Precondicionadores para métodos iterativos SSOR, escalado diagonal, BILU, AMG, SAINV, RIF Mejoran la convergencia de los métodos iterativos. No se utilizan con métodos directos.
Métodos directos MUMPS, MKL Resuelven ecuaciones lineales de forma robusta mediante factorización matricial.
Métodos de tratamiento de MPC Método de penalización, eliminación explícita de GDL Incorporan las restricciones multipunto al sistema lineal.
Eliminación de GDL de contacto Automática, siempre habilitada Controla el tratamiento de los grados de libertad de contacto añadidos por el contacto SLAGRANGE.
Funciones auxiliares Estimación del número de condición, volcado de matrices, registro Ayudan en la depuración, la evaluación de la convergencia y la evaluación del rendimiento.

En ejecución paralela, el paralelismo MPI basado en la descomposición del dominio puede combinarse con el paralelismo por hilos OpenMP. Los métodos iterativos son la opción estándar para análisis paralelos a gran escala, mientras que los métodos directos se utilizan en entornos donde están enlazadas las bibliotecas necesarias y se requiere una solución más robusta.

Elección del solucionador y del precondicionador

Primero decida si utilizar un método iterativo o directo. Si selecciona un método iterativo, elija a continuación un precondicionador.

Criterio de decisión Enfoque recomendado
Tamaño del problema Los métodos directos son estables y fáciles de utilizar en problemas pequeños y medianos. Los métodos iterativos son más eficientes en memoria para problemas grandes.
Simetría de la matriz Considere CG para problemas simétricos definidos positivos. Para problemas no simétricos, considere BiCGSTAB, GMRES, GPBiCG u otros métodos similares.
Entorno paralelo En paralelismo MPI, combine un método iterativo con la descomposición del dominio. Para el precondicionamiento bajo paralelismo OpenMP, considere una implementación SSOR multicolor.
Precondicionador (al utilizar un método iterativo) Pruebe primero el SSOR predeterminado y, a continuación, considere AMG. SSOR tiene un coste computacional bajo cuando la convergencia es buena; el precondicionamiento AMG es adecuado para problemas complejos de gran escala. AMG está disponible como implementación basada en Trilinos-ML y como SA-AMG integrado en HEC-MW; elija según la configuración de compilación.
Contacto y MPC En análisis que contienen contacto o restricciones multipunto, la elección del método de tratamiento de MPC y de la eliminación de GDL de contacto afecta a la convergencia y la robustez.
Bibliotecas externas MUMPS, MKL y AMG (Trilinos-ML) están disponibles en compilaciones enlazadas con las bibliotecas correspondientes. AMG (SA-AMG) está disponible en compilaciones con LAPACK habilitado.

En análisis estándar, el valor predeterminado del criterio de convergencia, el número máximo de iteraciones y el coeficiente de corrección diagonal del precondicionador suelen ser suficientes. Solo cuando la convergencia sea lenta o la solución diverja deben revisarse, por este orden, el método iterativo, el precondicionador, el método de tratamiento de MPC y la eliminación de GDL de contacto. Consulte la referencia de la palabra clave !SOLVER para los valores y la sintaxis de los parámetros.

Métodos iterativos

Los métodos iterativos resuelven grandes sistemas dispersos actualizando repetidamente la solución mediante productos matriz-vector y precondicionamiento. FrontISTR ofrece los métodos iterativos siguientes.

Método iterativo Aplicación típica Observaciones
CG Problemas simétricos definidos positivos Candidato estándar para análisis estructurales y de conducción térmica.
BiCGSTAB Problemas no simétricos Candidato cuando el contacto o los efectos acoplados producen una fuerte no simetría.
GMRES Problemas no simétricos Se utiliza especificando el tamaño del subespacio de Krylov.
GPBiCG Problemas no simétricos Se utiliza como método mejorado de la familia BiCGSTAB.
GMRESR Problemas no simétricos, aplicaciones avanzadas Opción que utiliza GMRES de forma anidada.
GMRESREN Problemas no simétricos, aplicaciones avanzadas Variante recursiva de la familia GMRESR.

CG presupone que la matriz es simétrica definida positiva. Si el contacto con fricción, un tratamiento de restricciones no simétrico, los efectos de acoplamiento u otros factores introducen una fuerte no simetría, considere BiCGSTAB, GMRES, GPBiCG u otro solucionador no simétrico. Con GMRES, aumentar el tamaño del subespacio de Krylov puede mejorar la convergencia, pero también aumenta el uso de memoria.

Cuando se especifica METHOD2, se puede cambiar a un método iterativo alternativo si CG diverge o falla. Esta función es un mecanismo de respaldo para los casos en que CG es el solucionador principal; el método alternativo utiliza los mismos ajustes restantes y líneas de datos que el solucionador principal.

CG, BiCGSTAB, GPBiCG y PipeCG actualizan el vector de residuos mediante una recurrencia. A medida que avanzan las iteraciones se acumulan errores de redondeo y el residuo actualizado de forma recurrente puede desviarse del residuo real. Para evitarlo, el vector de residuos se vuelve a calcular periódicamente a partir del segundo miembro y del producto matriz-vector. RECOMPUTE_RESIDUAL permite especificar este intervalo. Un intervalo más largo reduce el número de productos matriz-vector, pero aumenta el riesgo de que el residuo recurrente se aleje del residuo real y de que una solución que aún no ha convergido se considere convergida. Por el contrario, un intervalo demasiado corto no solo aumenta el número de productos matriz-vector, sino que también puede alterar la relación entre el residuo y los vectores auxiliares mantenida por la recurrencia y empeorar la propia convergencia. El valor predeterminado de cada método equilibra estos efectos; si se modifica, compruebe el historial de convergencia y el residuo relativo final.

Precondicionamiento

El precondicionamiento transforma la matriz de coeficientes para mejorar la convergencia de un método iterativo y solo se aplica cuando se selecciona un método iterativo. Los métodos directos no utilizan precondicionamiento. Incluso con el mismo método iterativo, la elección del precondicionador puede cambiar sustancialmente el número de iteraciones y el tiempo de cálculo necesarios para la convergencia.

Precondicionador Características Aplicación típica
SSOR Precondicionador estándar; admite ordenación multicolor. Primer candidato que debe probarse; se utiliza ampliamente en análisis estructural.
Escalado diagonal Precondicionador ligero que utiliza los elementos diagonales. Cuando se prefiere un coste computacional bajo.
BILU Factorización LU incompleta por bloques. Candidato para problemas que presentan dificultades de convergencia con SSOR.
AMG (Trilinos-ML) Multimalla algebraica que utiliza la biblioteca externa Trilinos-ML. Candidato para problemas de gran escala o dominados por componentes de error jerárquicas.
AMG (SA-AMG) Multimalla algebraica de agregación suavizada integrada en HEC-MW. Mismo ámbito; candidato para utilizar AMG sin añadir una biblioteca externa.
SAINV Inversa aproximada dispersa. Opción de precondicionamiento especializada para problemas de contacto o entornos de memoria distribuida.
RIF Factorización incompleta robusta. Otra opción de factorización incompleta.

SSOR es la opción estándar y, en paralelismo OpenMP, se utiliza una versión con ordenación multicolor. El escalado diagonal es ligero, aunque su efecto sobre la mejora de la convergencia depende del problema. BILU está implementado como una factorización LU incompleta por bloques y también admite matrices con números generales de grados de libertad. Para la familia BILU existe una ruta que aumenta automáticamente el coeficiente de corrección diagonal SIGMA_DIAG y vuelve a intentarlo cuando un método iterativo diverge; la especificación del valor se describe en la referencia de palabras clave.

AMG (multimalla algebraica) tiene dos implementaciones: una utiliza la biblioteca externa Trilinos-ML y la otra es SA-AMG, integrado en HEC-MW. Ambas son independientes y difieren en la configuración de compilación requerida y en las opciones disponibles.

AMG mediante Trilinos-ML requiere que ML esté habilitado durante la compilación. Pueden especificarse el suavizador, el ciclo de multimalla, el esquema de engrosamiento y otros ajustes; consulte la referencia de palabras clave para los valores detallados.

SA-AMG es un precondicionador de multimalla algebraica de agregación suavizada y no requiere Trilinos-ML. Sin embargo, utiliza LAPACK internamente, por lo que requiere una compilación con LAPACK habilitado; si se selecciona en una compilación sin LAPACK, el programa termina antes de iniciar el análisis. Para resolver la malla gruesa, puede utilizarse MUMPS en compilaciones con MUMPS habilitado; de lo contrario, se utiliza el método directo denso integrado.

SA-AMG está orientado principalmente a sistemas simétricos definidos positivos (CG), pero también admite sistemas reducidos no simétricos generados por contacto con fricción (BiCGSTAB, GMRES, etc.). Admite 1 (conducción térmica), 2 (plano), 3 (sólido) y 6 (lámina) GDL por nodo, pero no matrices cuyo número de GDL varíe entre nodos. Pueden especificarse el solucionador de la malla gruesa, el ciclo de multimalla, el grado del suavizador y otras opciones, aunque los valores predeterminados son adecuados para análisis estándar. Consulte la referencia de palabras clave para los valores y la sintaxis. En compilaciones con GPU (OpenACC) habilitada, la fase de aplicación del precondicionador se ejecuta en la GPU.

Cuando SAINV se utiliza en un análisis paralelo que contiene contacto o MPC, la profundidad de solapamiento utilizada en la descomposición del dominio puede afectar a la convergencia.

Métodos directos

Los métodos directos resuelven ecuaciones lineales factorizando la matriz de coeficientes. Como no dependen de un número de iteraciones, son robustos y pueden constituir una opción estable para análisis que contienen contacto o condiciones de restricción. Sin embargo, su consumo de memoria aumenta con el tamaño del problema.

Método directo Entorno paralelo Aplicación
MUMPS Paralelismo MPI Resuelve matrices dispersas mediante un método directo en entornos de memoria distribuida.
MKL Intel MKL / OpenMP Solucionador directo basado en Intel MKL. Internamente se utiliza Intel PARDISO. Con varios procesos MPI se utiliza la ruta Cluster MKL. DIRECTmkl es un alias de MKL.

Los métodos directos pueden utilizarse tanto con matrices simétricas como no simétricas. MUMPS y MKL requieren que las bibliotecas correspondientes estén enlazadas durante la compilación. No pueden utilizarse en entornos sin esas bibliotecas; consulte la guía de compilación para conocer las dependencias y opciones de CMake necesarias.

FrontISTR también incluye una ruta de solucionador directo integrada que no utiliza bibliotecas externas, pero para análisis ordinarios que requieran un método directo, normalmente deben considerarse primero MUMPS o MKL.

El precondicionamiento no se aplica a los métodos directos. Aunque se especifique un precondicionador en !SOLVER, no se consulta en la ruta del solucionador directo.

Métodos de tratamiento de MPC

El método de tratamiento de MPC determina cómo se incorporan a las ecuaciones lineales los grados de libertad conectados mediante restricciones multipunto. Incluso con las mismas ecuaciones de restricción en los datos de entrada, el método de tratamiento modifica las propiedades y el comportamiento de convergencia de la matriz de coeficientes.

Método de tratamiento de MPC Posición Uso predeterminado
Método de penalización Satisface aproximadamente las restricciones añadiendo términos de gran rigidez a las ecuaciones de restricción. Predeterminado para métodos directos.
Eliminación explícita de GDL Elimina los grados de libertad restringidos y resuelve el sistema lineal reducido. Predeterminado para métodos iterativos.

El método de penalización es el predeterminado para métodos directos, mientras que la eliminación explícita de GDL es el predeterminado para métodos iterativos. El método MPC-CG, que antes podía seleccionarse, se ha eliminado; las entradas que especifican MPCMETHOD=2 generan una advertencia y se procesan con estos valores predeterminados.

En la eliminación explícita de GDL, las masas concentradas utilizadas en el análisis modal y el análisis dinámico explícito también se reducen mediante la misma transformación que la matriz de rigidez. Como la matriz de masa reducida no suele ser diagonal, se utilizan las sumas de sus filas como masas concentradas. En las restricciones de acoplamiento o interpolación cuyos coeficientes en la ecuación de restricción suman 1, la masa del grado de libertad esclavo se distribuye entre los grados de libertad maestros en proporción a los coeficientes.

El método de tratamiento de MPC puede especificarse explícitamente con MPCMETHOD en !SOLVER. Consulte la referencia de palabras clave para conocer el significado y la sintaxis de cada valor.

Eliminación de GDL de contacto

La eliminación de GDL de contacto reduce los grados de libertad de contacto adicionales introducidos por el contacto SLAGRANGE antes de pasar el sistema al solucionador lineal. Eliminar estos grados de libertad de contacto puede mejorar las propiedades del sistema lineal tratado por un método iterativo.

En el modo automático predeterminado, la eliminación de GDL de contacto está habilitada para métodos iterativos y deshabilitada para métodos directos. Para los métodos directos se proporciona una ruta que resuelve directamente el sistema ampliado que contiene los grados de libertad de contacto.

Cuando se especifica explícitamente CONTACT_ELIM, la eliminación de GDL de contacto también puede realizarse cuando se utiliza un método directo. Para la selección del tipo de contacto, el par de contacto y el algoritmo de contacto en la entrada, consulte la página Contacto y elementos embebidos.

Funciones auxiliares

La estimación del número de condición, los volcados de matrices y el registro pueden utilizarse para investigar la convergencia y el rendimiento del solucionador. Estas funciones no son necesarias para los análisis normales y se habilitan principalmente para depuración o evaluación del rendimiento.

Función Finalidad Observaciones
Estimación del número de condición Genera un indicador del número de condición para CG y GMRES. Disponible en compilaciones con LAPACK habilitado.
Volcado de matrices Guarda en un archivo la matriz y el lado derecho pasados al solucionador. Admite los formatos Matrix Market, CSR y BSR.
DUMPEXIT Finaliza el análisis después de volcar la matriz. Se utiliza cuando solo se necesita la matriz para una verificación externa.
ITERLOG Genera el historial de convergencia de un método iterativo. Se utiliza para examinar la evolución del residuo.
TIMELOG Genera el tiempo de cálculo del solucionador. VERBOSE genera un desglose más detallado.
STEPLOG Genera información de los pasos. Se utiliza para examinar el procedimiento de análisis.
LOGLEVEL Genera información de diagnóstico, como la construcción de la jerarquía de los precondicionadores AMG. Se especifica independientemente de ITERLOG y TIMELOG. Los valores mayores aumentan la cantidad de salida.

El volcado de matrices permite inspeccionar con herramientas externas la matriz de coeficientes ensamblada por el análisis. Cuando DUMPEXIT está habilitado, el análisis finaliza después de guardar la matriz y el lado derecho. La estimación del número de condición es una función experimental disponible con CG y GMRES, y puede utilizarse para diagnosticar el comportamiento de convergencia.

Temas relacionados