!SOLVER¶
Contrôle du solveur
Donnée de contrôle obligatoire.
Paramètres¶
METHOD = Méthode de résolution (CG, BiCGSTAB, GMRES, GPBiCG, CR, DIRECT, DIRECTmkl, MUMPS)
DIRECT : Méthode directe sauf pour l’analyse de contact (traitement série uniquement) (actuellement indisponible)
DIRECTmkl : Méthode directe utilisant Intel MKL
MUMPS : Méthode directe utilisant MUMPS
Lorsqu’une méthode directe est sélectionnée, les lignes de données sont ignorées.
Les méthodes itératives pour les problèmes à 3 DDL prennent en charge l’exécution parallèle par threads avec OpenMP
PRECOND = Méthode de préconditionnement des solveurs itératifs (1, 2, 3, 5, 10, 11, 12, 22)
1, 2 : SSOR (par blocs) (avec ordonnancement multicolore uniquement pour les problèmes à 3 DDL)
3 : Mise à l’échelle diagonale (par blocs)
5 : AMG utilisant le paquet de préconditionnement multigrille ML
10 : ILU(0) par blocs
11 : ILU(1) par blocs
12 : ILU(2) par blocs
22 : AMG utilisant le SA-AMG intégré à HEC-MW (AMG par agrégation lissée)
10, 11 et 12 ne sont disponibles que pour les problèmes à 3 DDL
22 n’est disponible que dans les compilations avec LAPACK activé
Pour l’exécution parallèle par threads OpenMP, SSOR, la mise à l’échelle diagonale, ML ou SA-AMG sont recommandés
ITERLOG = Indique s’il faut produire l’historique de convergence du solveur itératif (YES/NO)(Valeur par défaut : NO)
TIMELOG = Indique s’il faut produire le temps de calcul du solveur (YES/NO/VERBOSE)(Valeur par défaut : NO)
LOGLEVEL = Niveau de sortie des informations de diagnostic du préconditionneur (entier)(Valeur par défaut : aucune sortie)
Spécifié indépendamment de ITERLOG et TIMELOG
À partir de 1, produit la construction de la hiérarchie et d’autres informations sur les préconditionneurs AMG (PRECOND=5,22)
À partir de 2, produit des informations plus détaillées (notamment l’utilisation de la mémoire)
USEJAD = Indique s’il faut utiliser l’ordonnancement pour les processeurs vectoriels (YES/NO)(Valeur par défaut : NO)
Valide uniquement lorsqu’une méthode itérative est utilisée pour un problème à 3 DDL
SCALING = Indique s’il faut mettre la matrice à l’échelle pour que les termes diagonaux valent 1 (YES/NO)(Valeur par défaut : NO)
Valide uniquement lorsqu’une méthode itérative est utilisée pour un problème à 3 DDL
DUMPTYPE = Format de vidage de la matrice (NONE, MM, CSR, BSR) (principalement pour le débogage)
NONE : Aucun vidage (valeur par défaut)
MM : Format Matrix Market
CSR : Format Compressed Sparse Row (CSR)
BSR : Format CSR par blocs
DUMPEXIT = Termine le programme immédiatement après le vidage de la matrice (YES/NO)(Valeur par défaut : NO)
MPCMETHOD = Méthode de traitement des contraintes multipoints (1, 3)
1: Méthode de pénalisation (valeur par défaut lorsqu’une méthode directe est utilisée)
3: Élimination explicite des DDL (valeur par défaut lorsqu’une méthode itérative est utilisée)
La méthode MPC-CG (2) a été supprimée. Si 2 est spécifié, un avertissement est émis et la méthode par défaut est utilisée.
ESTCOND = Fréquence d’estimation du nombre de conditionnement (expérimental)
Estime le nombre de conditionnement à chaque intervalle d’itération spécifié et à la fin des itérations
Aucune estimation n’est effectuée lorsque 0 est spécifié
RECOMPUTE_RESIDUAL = Fréquence de recalcul du vecteur des résidus
Valide uniquement lorsque CG, BiCGSTAB, GPBiCG ou PipeCG est spécifié pour METHOD
Les méthodes itératives mettent à jour le vecteur des résidus par une relation de récurrence, ce qui accumule les erreurs d’arrondi
À chaque intervalle d’itérations spécifié, le vecteur des résidus est recalculé à partir de {b}-[A]{x}
Lorsque 0 est spécifié, la valeur par défaut de chaque méthode est utilisée (CG : 50, BiCGSTAB : 100, GPBiCG : 20, PipeCG : 50)
Lorsqu’une valeur négative est spécifiée, aucun recalcul périodique n’est effectué
Le recalcul destiné à confirmer la convergence lorsqu’un critère de convergence est satisfait est toujours effectué, indépendamment de ce paramètre
Une période trop courte augmente non seulement le nombre de produits matrice-vecteur,
mais peut aussi dégrader la convergence elle-même, voire empêcher la convergence
Après modification de la valeur par défaut, vérifier l’historique de convergence et le résidu relatif final
METHOD2 = Méthode de résolution secondaire (BiCGSTAB, GMRES, GPBiCG) (expérimental)
Valide uniquement lorsque CG est spécifié pour METHOD
Si CG diverge, bascule automatiquement vers la méthode secondaire et poursuit la résolution
Les mêmes valeurs sont utilisées pour les autres paramètres et lignes de données
CONTACT_ELIM = Spécifie si l’élimination des DDL est effectuée dans l’analyse de contact (0,1)
0: Effectue l’élimination des DDL uniquement lorsqu’une méthode itérative est utilisée (valeur par défaut)
1: Effectue toujours l’élimination des DDL (y compris lorsqu’une méthode directe est utilisée)
** 2e ligne et suivantes **
| Nom de variable | Type | Description |
|---|---|---|
| NITER | I | Nombre d’itérations (valeur par défaut : 100) |
| iterPREmax | I | Nombre d’itérations du préconditionnement Additive Schwarz (valeur par défaut : 1) (Valeur recommandée : 1 ; 2 peut être efficace dans certains calculs parallèles) |
| NREST | I | Nombre de sous-espaces de Krylov (valeur par défaut : 10) (Valide uniquement lorsque GMRES est sélectionné comme méthode de résolution) |
| NCOLOR_IN | I | Nombre cible de couleurs pour l’ordonnancement multicolore (valeur par défaut : 10) (Valide uniquement lorsque le nombre de threads OpenMP est supérieur ou égal à 2) |
| RECYCLEPRE | I | Nombre de réutilisations des informations de configuration du préconditionneur (valeur par défaut : 3) (Valide uniquement en analyse non linéaire) |
| Nom de variable | Type | Description |
|---|---|---|
| RESID | R | Erreur de troncature (valeur par défaut : 1.0e-8) |
| SIGMA_DIAG | R | Facteur d’échelle appliqué aux termes diagonaux lors du calcul de la matrice de préconditionnement (valeur par défaut : 1.0) (Si une division par zéro ou une divergence se produit avec le préconditionnement ILU, le problème peut converger lorsqu’une valeur supérieure à 1.0 est spécifiée) |
| SIGMA | R | Non utilisé (valeur par défaut : 0.0) |
Lorsque PRECOND=5 (facultatif)¶
Si PRECOND reçoit une valeur autre que 5 ou 22, la 4e ligne est ignorée.
| Nom de variable | Type | Description |
|---|---|---|
| ML_CoarseSolver | I | Solveur de grille grossière pour ML (1 : utiliser le lisseur, 2 : KLU (méthode directe série), 3 : MUMPS (méthode directe parallèle)) (valeur par défaut : 1) (Recommandation : 3 ou 2 pour les problèmes difficiles, 1 pour les problèmes ordinaires) |
| ML_Smoother | I | Lisseur ML (1 : Chebyshev, 2 : SymBlockGaussSeidel, 3 : Jacobi) (valeur par défaut : 1) (Recommandation : 1) |
| ML_MGCycle | I | Cycle multigrille ML (1 : cycle V, 2 : cycle W, 3 : cycle V complet) (valeur par défaut : 1) (Recommandation : 2 pour les problèmes difficiles, 1 pour les problèmes ordinaires) |
| ML_MaxLevels | I | Nombre maximal de niveaux ML (valeur par défaut : 10) (Pour les problèmes particulièrement difficiles, utilisez un solveur direct sur la grille grossière et 2 niveaux (ou 3 si la mémoire est insuffisante) ; pour les problèmes ordinaires, 10 est recommandé) |
| ML_CoarseningScheme | I | Schéma de grossissement ML (1 : UncoupledMIS, 2 : METIS, 4 : Zoltan, 5 : DD) (valeur par défaut : 1) (Recommandation : 1 ou 5) |
| ML_NumSweep | I | Nombre de balayages du lisseur ML (degré du polynôme pour Chebyshev) (valeur par défaut : 2) (Recommandation : 2 pour Chebyshev, 1 pour SymBlockGaussSeidel) |
Lorsque PRECOND=22 (facultatif)¶
Si PRECOND reçoit une valeur autre que 22, la 5e ligne est ignorée. Les 4e et 5e lignes peuvent chacune être entièrement omises ; les éléments situés à la fin de l’une ou l’autre ligne peuvent également être omis. La valeur par défaut est utilisée pour tout élément spécifié à 0.
Les éléments 1 à 7 de la 4e ligne sont disposés dans le même ordre que la ligne d’options de PRECOND=5 (ML), de sorte que la ligne d’options ML peut être réutilisée telle quelle. Les éléments 8 à 10 sont propres à SA-AMG.
(4e ligne) SA_CoarseSolver, SA_Smoother, SA_MGCycle, SA_MaxLevels, (non utilisé), SA_ChebyDegree, SA_CoarseSize, SA_MaxAggSize, SA_GalerkinLowMem, (non utilisé)
| Nom de variable | Type | Description |
|---|---|---|
| SA_CoarseSolver | I | Solveur de grille grossière (0 : automatique, 1 : utiliser le lisseur, 2 : méthode directe pour matrice dense, 3 : MUMPS (méthode directe parallèle)) (valeur par défaut : 0) (En mode automatique, MUMPS est utilisé dans les compilations où MUMPS est activé ; sinon, la méthode directe pour matrice dense est utilisée) |
| SA_Smoother | I | Lisseur (0 ou 1 : Chebyshev) (valeur par défaut : 0) (Seul Chebyshev est pris en charge. Si une autre valeur est spécifiée, un avertissement est produit et Chebyshev est utilisé) |
| SA_MGCycle | I | Cycle multigrille (0 : valeur par défaut (cycle W), 1 : cycle V, 2 : cycle W) (valeur par défaut : 0) (Le cycle V complet n’est pas pris en charge) |
| SA_MaxLevels | I | Nombre maximal de niveaux (valeur par défaut : 20) |
| (non utilisé) | I | Position correspondant au schéma de grossissement ML. Comme SA-AMG utilise toujours une agrégation non couplée, une valeur différente de 0 déclenche un avertissement et est ignorée |
| SA_ChebyDegree | I | Degré du polynôme du lisseur de Chebyshev (valeur par défaut : 2) |
| SA_CoarseSize | I | Taille seuil de la grille grossière (valeur par défaut : 50000 lorsque MUMPS est utilisé comme solveur de grille grossière ; sinon 100) |
| SA_MaxAggSize | I | Taille maximale d’un agrégat (valeur par défaut : 96) |
| SA_GalerkinLowMem | I | Mode de calcul de la matrice de grille grossière (0 : normal (priorité à la vitesse), valeur positive : économie de mémoire) (valeur par défaut : 0) (Spécifier une valeur positive si la mémoire est insuffisante pendant la configuration) |
| (non utilisé) | I | Réservé aux extensions futures |
La 5e ligne est propre à SA-AMG et n’est pas lue par ML.
(5e ligne) SA_Theta, SA_ChebyAlpha, SA_Safety, SA_TaperK, SA_AggOrder, SA_MinAggSize, SA_Verify, SA_DumpVTK
| Nom de variable | Type | Description |
|---|---|---|
| SA_Theta | R | Seuil de détermination des connexions fortes (valeur par défaut : 0.0) (À 0.0, la structure non nulle de la matrice est utilisée directement comme graphe) |
| SA_ChebyAlpha | R | Rapport déterminant la borne inférieure de l’intervalle de valeurs propres ciblé par le lisseur de Chebyshev (valeur par défaut : 20.0) |
| SA_Safety | R | Facteur de sécurité appliqué à la valeur propre maximale estimée (valeur par défaut : 1.1) |
| SA_TaperK | R | Coefficient K d’atténuation du grossissement (valeur par défaut : 100) (À partir du niveau 2, le grossissement est rendu plus progressif afin de conserver au moins environ K agrégats. Une valeur négative désactive l’atténuation) |
| SA_AggOrder | R | Ordre de parcours de l’agrégation (0 : valeur par défaut (ordre BFS), 1 : ordre BFS, 2 : ordre de hachage des numéros de nœud (expérimental), 3 : ordre croissant du degré (expérimental), 4 : ordre décroissant du degré (expérimental), valeur négative : ordre des numéros de nœud) (valeur par défaut : 0) |
| SA_MinAggSize | R | Taille minimale d’un agrégat (valeur par défaut : 3) |
| SA_Verify | R | Indique s’il faut exécuter un autocontrôle pendant la configuration (0 : non, valeur positive : oui) (valeur par défaut : 0) (principalement pour le débogage) |
| SA_DumpVTK | R | Indique s’il faut produire l’agrégation du niveau le plus élevé au format VTK (0 : aucune sortie, valeur positive : sortie) (valeur par défaut : 0) (principalement pour le débogage) |
Exemples¶
Utiliser CG avec préconditionnement SSOR et fixer le nombre maximal d’itérations à 10000 et l’erreur de troncature à 1.0e-8
Utiliser GMRES avec préconditionnement SSOR et fixer le nombre de sous-espaces de Krylov à 40 et le nombre cible de couleurs pour l’ordonnancement multicolore à 100
Utiliser CG avec préconditionnement ILU(0) et fixer à 1.1 le facteur d’échelle appliqué aux termes diagonaux lors du calcul de la matrice de préconditionnement
Utiliser AMG par ML comme préconditionneur pour CG
Utiliser AMG par ML comme préconditionneur pour CG et MUMPS comme solveur de grille grossière (pour les problèmes difficiles)
Utiliser AMG par ML comme préconditionneur pour CG et le cycle W comme cycle multigrille (pour les problèmes difficiles)
Utiliser AMG par ML comme préconditionneur pour CG, MUMPS comme solveur de grille grossière et fixer le nombre maximal de niveaux à 2 (pour les problèmes très difficiles)
Utiliser le SA-AMG intégré à HEC-MW comme préconditionneur pour CG
Utiliser SA-AMG comme préconditionneur pour CG et MUMPS comme solveur de grille grossière
Pour une analyse de contact avec frottement, utiliser BiCGSTAB avec le préconditionnement SA-AMG et produire la hiérarchie du préconditionneur AMG