!SOLVER¶
Control del solver
Datos de control obligatorios.
Parámetros¶
METHOD = Método de resolución (CG, BiCGSTAB, GMRES, GPBiCG, CR, DIRECT, DIRECTmkl, MUMPS)
DIRECT : Método directo excepto para análisis de contacto (solo procesamiento serie) (actualmente no disponible)
DIRECTmkl : Método directo mediante Intel MKL
MUMPS : Método directo mediante MUMPS
Cuando se selecciona un método directo, se ignoran las líneas de datos.
Los métodos iterativos para problemas de 3 GDL admiten ejecución paralela por hilos con OpenMP
PRECOND = Método de precondicionamiento para solvers iterativos (1, 2, 3, 5, 10, 11, 12, 22)
1, 2 : SSOR (por bloques) (con ordenación multicolor solo para problemas de 3 GDL)
3 : Escalado diagonal (por bloques)
5 : AMG mediante el paquete de precondicionamiento multigrid ML
10 : ILU(0) por bloques
11 : ILU(1) por bloques
12 : ILU(2) por bloques
22 : AMG mediante el SA-AMG integrado en HEC-MW (AMG de agregación suavizada)
10, 11 y 12 solo están disponibles para problemas de 3 GDL
22 solo está disponible en compilaciones con LAPACK habilitado
Para ejecución paralela por hilos con OpenMP se recomienda SSOR, escalado diagonal, ML o SA-AMG
ITERLOG = Si se genera el historial de convergencia del solver iterativo (YES/NO)(Predeterminado: NO)
TIMELOG = Si se genera el tiempo de cálculo del solver (YES/NO/VERBOSE)(Predeterminado: NO)
LOGLEVEL = Nivel de salida de la información de diagnóstico del precondicionador (entero)(Predeterminado: sin salida)
Se especifica independientemente de ITERLOG y TIMELOG
Con un valor de 1 o superior, se genera la construcción de la jerarquía y otra información de los precondicionadores AMG (PRECOND=5,22)
Con un valor de 2 o superior, se genera información más detallada (como el uso de memoria)
USEJAD = Si se utiliza ordenación para procesadores vectoriales (YES/NO)(Predeterminado: NO)
Solo es válido cuando se utiliza un método iterativo para un problema de 3 GDL
SCALING = Si se escala la matriz para que las entradas diagonales sean 1 (YES/NO)(Predeterminado: NO)
Solo es válido cuando se utiliza un método iterativo para un problema de 3 GDL
DUMPTYPE = Formato de volcado de la matriz (NONE, MM, CSR, BSR) (principalmente para depuración)
NONE : No realizar volcado (Predeterminado)
MM : Formato Matrix Market
CSR : Formato Compressed Sparse Row (CSR)
BSR : Formato CSR por bloques
DUMPEXIT = Finalizar el programa inmediatamente después del volcado de la matriz (YES/NO)(Predeterminado: NO)
MPCMETHOD = Método para tratar restricciones multipunto (1, 3)
1: Método de penalización (predeterminado cuando se utiliza un método directo)
3: Eliminación explícita de GDL (predeterminado cuando se utiliza un método iterativo)
Se ha eliminado el método MPC-CG (2). Si se especifica 2, se emite una advertencia y se utiliza el método predeterminado.
ESTCOND = Frecuencia de estimación del número de condición (experimental)
Estima el número de condición en cada intervalo de iteraciones especificado y al final de las iteraciones
No se realiza ninguna estimación cuando se especifica 0
RECOMPUTE_RESIDUAL = Frecuencia de recálculo del vector de residuos
Solo es válido cuando se especifica CG, BiCGSTAB, GPBiCG o PipeCG para METHOD
Los métodos iterativos actualizan el vector de residuos mediante una relación de recurrencia, por lo que se acumulan errores de redondeo
En cada intervalo de iteraciones especificado, el vector de residuos se recalcula a partir de {b}-[A]{x}
Cuando se especifica 0, se utiliza el valor predeterminado de cada método (CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50)
Cuando se especifica un valor negativo, no se realiza ningún recálculo periódico
El recálculo para confirmar la convergencia cuando se cumple el criterio de convergencia se realiza siempre, independientemente de este parámetro
Un intervalo demasiado corto no solo aumenta el número de productos matriz-vector,
sino que también puede deteriorar la convergencia o incluso impedirla
Si se cambia el valor predeterminado, compruebe el historial de convergencia y el residuo relativo final
METHOD2 = Método de resolución secundario (BiCGSTAB, GMRES, GPBiCG) (experimental)
Solo es válido cuando se especifica CG para METHOD
Si CG diverge, se cambia automáticamente al método secundario y se continúa la resolución
Se utilizan los mismos valores para los demás parámetros y líneas de datos
CONTACT_ELIM = Especifica si se realiza eliminación de GDL en el análisis de contacto (0,1)
0: Realizar eliminación de GDL solo cuando se utiliza un método iterativo (Predeterminado)
1: Realizar siempre eliminación de GDL (también cuando se utiliza un método directo)
** 2.ª línea y siguientes **
| Variable | Tipo | Descripción |
|---|---|---|
| NITER | I | Número de iteraciones (Predeterminado: 100) |
| iterPREmax | I | Número de iteraciones de precondicionamiento Additive Schwarz (Predeterminado: 1) (Valor recomendado: 1; 2 puede resultar eficaz en algunos cálculos paralelos) |
| NREST | I | Número de subespacios de Krylov (Predeterminado: 10) (Solo es válido cuando se selecciona GMRES como método de resolución) |
| NCOLOR_IN | I | Número objetivo de colores para la ordenación multicolor (Predeterminado: 10) (Solo es válido cuando el número de hilos OpenMP es 2 o superior) |
| RECYCLEPRE | I | Número de veces que se reutiliza la información de configuración del precondicionador (Predeterminado: 3) (Solo es válido en análisis no lineales) |
| Variable | Tipo | Descripción |
|---|---|---|
| RESID | R | Error de truncamiento (Predeterminado: 1.0e-8) |
| SIGMA_DIAG | R | Factor de escala aplicado a las entradas diagonales al calcular la matriz de precondicionamiento (Predeterminado: 1.0) (Si se produce división por cero o divergencia con precondicionamiento ILU, el problema puede converger al especificar un valor mayor que 1.0) |
| SIGMA | R | No utilizado (Predeterminado: 0.0) |
Cuando PRECOND=5 (opcional)¶
Si se especifica para PRECOND un valor que no sea 5 ni 22, se ignora la 4.ª línea.
(4.ª línea) ML_CoarseSolver, ML_Smoother, ML_MGCycle, ML_MaxLevels, ML_CoarseningScheme, ML_NumSweep
| Variable | Tipo | Descripción |
|---|---|---|
| ML_CoarseSolver | I | Solver de malla gruesa para ML (1: utilizar un suavizador, 2: KLU (método directo serie), 3: MUMPS (método directo paralelo)) (Predeterminado: 1) (Recomendado: 3 o 2 para problemas difíciles, 1 para problemas ordinarios) |
| ML_Smoother | I | Suavizador de ML (1: Chebyshev, 2: SymBlockGaussSeidel, 3: Jacobi) (Predeterminado: 1) (Recomendado: 1) |
| ML_MGCycle | I | Ciclo multigrid de ML (1: ciclo V, 2: ciclo W, 3: ciclo Full-V) (Predeterminado: 1) (Recomendado: 2 para problemas difíciles, 1 para problemas ordinarios) |
| ML_MaxLevels | I | Número máximo de niveles de ML (Predeterminado: 10) (Para problemas especialmente difíciles, utilice un solver directo de malla gruesa y 2 niveles (o 3 si la memoria es insuficiente); para problemas ordinarios se recomienda 10) |
| ML_CoarseningScheme | I | Esquema de coarsening de ML (1: UncoupledMIS, 2: METIS, 4: Zoltan, 5: DD) (Predeterminado: 1) (Recomendado: 1 o 5) |
| ML_NumSweep | I | Número de barridos del suavizador de ML (grado polinómico para Chebyshev) (Predeterminado: 2) (Recomendado: 2 para Chebyshev, 1 para SymBlockGaussSeidel) |
Cuando PRECOND=22 (opcional)¶
Si se especifica para PRECOND un valor distinto de 22, se ignora la 5.ª línea. La 4.ª y la 5.ª líneas pueden omitirse por completo, y también pueden omitirse los elementos finales de cualquiera de ellas. Se utiliza el valor predeterminado para cualquier elemento especificado como 0.
Los elementos 1 a 7 de la 4.ª línea están dispuestos en el mismo orden que la línea de opciones de PRECOND=5 (ML), por lo que la línea de opciones de ML puede reutilizarse sin cambios. Los elementos 8 a 10 son específicos de SA-AMG.
(4.ª línea) SA_CoarseSolver, SA_Smoother, SA_MGCycle, SA_MaxLevels, (no utilizado), SA_ChebyDegree, SA_CoarseSize, SA_MaxAggSize, SA_GalerkinLowMem, (no utilizado)
| Variable | Tipo | Descripción |
|---|---|---|
| SA_CoarseSolver | I | Solver de malla gruesa (0: automático, 1: utilizar el suavizador, 2: método directo para matrices densas, 3: MUMPS (método directo paralelo)) (Predeterminado: 0) (En modo automático, se utiliza MUMPS en las compilaciones con MUMPS habilitado; en caso contrario, se utiliza el método directo para matrices densas) |
| SA_Smoother | I | Suavizador (0 o 1: Chebyshev) (Predeterminado: 0) (Solo se admite Chebyshev. Si se especifica otro valor, se emite una advertencia y se utiliza Chebyshev) |
| SA_MGCycle | I | Ciclo multigrid (0: predeterminado (ciclo W), 1: ciclo V, 2: ciclo W) (Predeterminado: 0) (No se admite el ciclo Full-V) |
| SA_MaxLevels | I | Número máximo de niveles (Predeterminado: 20) |
| (no utilizado) | I | Posición correspondiente al esquema de coarsening de ML. Dado que SA-AMG utiliza siempre agregación no acoplada, si se especifica un valor distinto de 0 se emite una advertencia y se ignora |
| SA_ChebyDegree | I | Grado polinómico del suavizador de Chebyshev (Predeterminado: 2) |
| SA_CoarseSize | I | Tamaño de corte de la malla gruesa (Predeterminado: 50000 cuando se utiliza MUMPS como solver de malla gruesa; en caso contrario, 100) |
| SA_MaxAggSize | I | Tamaño máximo del agregado (Predeterminado: 96) |
| SA_GalerkinLowMem | I | Método de cálculo de la matriz de malla gruesa (0: normal (prioriza la velocidad), valor positivo: ahorro de memoria) (Predeterminado: 0) (Especifique un valor positivo si la memoria es insuficiente durante la configuración) |
| (no utilizado) | I | Reservado para futuras extensiones |
La 5.ª línea es específica de SA-AMG y ML no la lee.
(5.ª línea) SA_Theta, SA_ChebyAlpha, SA_Safety, SA_TaperK, SA_AggOrder, SA_MinAggSize, SA_Verify, SA_DumpVTK
| Variable | Tipo | Descripción |
|---|---|---|
| SA_Theta | R | Umbral para determinar conexiones fuertes (Predeterminado: 0.0) (Con 0.0, la estructura no nula de la matriz se utiliza directamente como grafo) |
| SA_ChebyAlpha | R | Relación que determina el límite inferior del intervalo de valores propios objetivo del suavizador de Chebyshev (Predeterminado: 20.0) |
| SA_Safety | R | Factor de seguridad aplicado al valor propio máximo estimado (Predeterminado: 1.1) |
| SA_TaperK | R | Coeficiente K de atenuación del coarsening (Predeterminado: 100) (A partir del nivel 2, el coarsening se hace más gradual para que permanezcan al menos aproximadamente K agregados. Un valor negativo deshabilita la atenuación) |
| SA_AggOrder | R | Orden de recorrido de la agregación (0: predeterminado (orden BFS), 1: orden BFS, 2: orden hash de los números de nodo (experimental), 3: orden ascendente del grado (experimental), 4: orden descendente del grado (experimental), valor negativo: orden por número de nodo) (Predeterminado: 0) |
| SA_MinAggSize | R | Tamaño mínimo del agregado (Predeterminado: 3) |
| SA_Verify | R | Si se ejecuta una autocomprobación durante la configuración (0: no, valor positivo: sí) (Predeterminado: 0) (principalmente para depuración) |
| SA_DumpVTK | R | Si se genera la agregación del nivel superior en formato VTK (0: sin salida, valor positivo: salida) (Predeterminado: 0) (principalmente para depuración) |
Ejemplos¶
Utilizar CG con precondicionamiento SSOR y establecer el número máximo de iteraciones en 10000 y el error de truncamiento en 1.0e-8
Utilizar GMRES con precondicionamiento SSOR y establecer el número de subespacios de Krylov en 40 y el número objetivo de colores para la ordenación multicolor en 100
Utilizar CG con precondicionamiento ILU(0) y establecer en 1.1 el factor de escala aplicado a las entradas diagonales al calcular la matriz de precondicionamiento
Utilizar AMG mediante ML como precondicionador de CG
Utilizar AMG mediante ML como precondicionador de CG y MUMPS como solver de malla gruesa (para problemas difíciles)
Utilizar AMG mediante ML como precondicionador de CG y un ciclo W como ciclo multigrid (para problemas difíciles)
Utilizar AMG mediante ML como precondicionador de CG, MUMPS como solver de malla gruesa y establecer el número máximo de niveles en 2 (para problemas muy difíciles)
Utilizar el SA-AMG integrado en HEC-MW como precondicionador de CG
Utilizar SA-AMG como precondicionador de CG y MUMPS como solver de malla gruesa
En un análisis de contacto con fricción, utilizar BiCGSTAB con precondicionamiento SA-AMG y generar la jerarquía del precondicionador AMG