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 de las funciones

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, método MPC-CG, 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 partició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 partició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; AMG es adecuado para problemas complejos de gran escala.
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 están disponibles en compilaciones enlazadas con las bibliotecas correspondientes.

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, FrontISTR 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.

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 Multimalla algebraica mediante Trilinos-ML. Candidato para problemas de gran escala o dominados por componentes de error jerárquicas.
SAINV Sparse Approximate Inverse. Opción de precondicionamiento especializada para problemas de contacto o entornos de memoria distribuida.
RIF Robust Incomplete Factorization. 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 utiliza Trilinos-ML, por lo que ML debe estar habilitado durante la compilación. Pueden especificarse suavizadores, ciclos de multimalla, métodos de coarsening y otros ajustes; los valores detallados se describen en la referencia de palabras clave. Cuando se utiliza SAINV en un análisis paralelo que contiene contacto o restricciones MPC, la profundidad de solapamiento utilizada en la partició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.
Método MPC-CG Método heredado que trata dentro del solucionador iterativo los productos matriz-vector que contienen restricciones. No recomendado.
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 es una opción heredada por compatibilidad y no se recomienda para análisis nuevos; normalmente utilice la eliminación explícita de GDL o el tratamiento predeterminado del método directo seleccionado.

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 steps. Se utiliza para examinar el procedimiento de análisis.

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