Solveur et préconditionnement¶
Les solveurs linéaires de FrontISTR sont configurés en choisissant soit une méthode directe, soit une méthode itérative ; les méthodes itératives sont combinées à un préconditionneur pour résoudre les équations linéaires. La méthode de traitement des MPC et l’élimination des degrés de liberté de contact constituent des choix auxiliaires qui déterminent la manière dont est traité un système linéaire contenant des contraintes multipoints ou de contact.
Vue d’ensemble des fonctions¶
Les réglages du solveur et du préconditionnement comprennent les choix suivants. Il faut d’abord sélectionner une méthode itérative ou directe comme solveur linéaire. Un préconditionneur n’est combiné qu’à une méthode itérative.
| Catégorie | Options principales | Rôle |
|---|---|---|
| Méthodes itératives | CG, BiCGSTAB, GMRES, GPBiCG, GMRESR, GMRESREN |
Résoudre de grandes matrices creuses avec une utilisation de mémoire relativement efficace. |
| Préconditionneurs pour méthodes itératives | SSOR, mise à l’échelle diagonale, BILU, AMG, SAINV, RIF | Améliorer la convergence des méthodes itératives. Non utilisés avec les méthodes directes. |
| Méthodes directes | MUMPS, MKL |
Résoudre de manière robuste les équations linéaires par factorisation de matrice. |
| Méthodes de traitement des MPC | Méthode de pénalité, méthode MPC-CG, élimination explicite des DDL | Incorporer les contraintes multipoints dans le système linéaire. |
| Élimination des DDL de contact | Automatique, toujours activée | Contrôler le traitement des degrés de liberté de contact ajoutés par le contact SLAGRANGE. |
| Fonctions auxiliaires | Estimation du nombre de condition, vidage de matrice, journalisation | Aider au débogage, à l’évaluation de la convergence et à l’évaluation des performances. |
Pour l’exécution parallèle, le parallélisme MPI basé sur la décomposition de domaine peut être combiné au parallélisme par threads OpenMP. Les méthodes itératives constituent le choix standard pour les analyses parallèles de grande taille, tandis que les méthodes directes sont utilisées lorsque les bibliothèques requises sont liées et qu’une résolution plus robuste est nécessaire.
Choix du solveur et du préconditionneur¶
Décider d’abord s’il convient d’utiliser une méthode itérative ou directe. Si une méthode itérative est choisie, sélectionner ensuite un préconditionneur.
| Critère de décision | Approche recommandée |
|---|---|
| Taille du problème | Les méthodes directes sont stables et faciles à utiliser pour les problèmes de petite à moyenne taille. Les méthodes itératives utilisent moins de mémoire pour les grands problèmes. |
| Symétrie de la matrice | Envisager CG pour les problèmes symétriques définis positifs. Pour les problèmes non symétriques, envisager BiCGSTAB, GMRES, GPBiCG ou des méthodes similaires. |
| Environnement parallèle | Avec le parallélisme MPI, combiner une méthode itérative avec la décomposition de domaine. Pour le préconditionnement sous parallélisme OpenMP, envisager une implémentation SSOR multicolore. |
| Préconditionneur (avec une méthode itérative) | Essayer d’abord le SSOR par défaut, puis envisager AMG. SSOR est peu coûteux en calcul lorsque la convergence est bonne ; AMG convient aux problèmes complexes de grande taille. |
| Contact et MPC | Dans les analyses comportant du contact ou des contraintes multipoints, le choix de la méthode de traitement des MPC et de l’élimination des DDL de contact influe sur la convergence et la robustesse. |
| Bibliothèques externes | MUMPS, MKL et AMG sont disponibles dans les versions liées aux bibliothèques correspondantes. |
Pour les analyses standard, la tolérance de convergence par défaut, le nombre maximal d’itérations et le coefficient de correction diagonale du préconditionneur sont généralement suffisants. Ce n’est que lorsque la convergence est lente ou que la solution diverge qu’il convient de réexaminer, dans cet ordre, la méthode itérative, le préconditionneur, la méthode de traitement des MPC et l’élimination des DDL de contact. Pour les valeurs des paramètres et la syntaxe, voir la référence du mot-clé !SOLVER.
Méthodes itératives¶
Les méthodes itératives résolvent de grands systèmes creux en mettant à jour de manière répétée la solution au moyen de produits matrice-vecteur et du préconditionnement. FrontISTR fournit les méthodes itératives suivantes.
| Méthode itérative | Application typique | Remarques |
|---|---|---|
CG |
Problèmes symétriques définis positifs | Candidat standard pour les analyses structurales et de conduction thermique. |
BiCGSTAB |
Problèmes non symétriques | Candidat lorsque le contact ou les effets couplés introduisent une forte non-symétrie. |
GMRES |
Problèmes non symétriques | Utilisé avec une taille d’espace de Krylov spécifiée. |
GPBiCG |
Problèmes non symétriques | Utilisé comme méthode améliorée de la famille BiCGSTAB. |
GMRESR |
Problèmes non symétriques, applications avancées | Option utilisant GMRES sous une forme imbriquée. |
GMRESREN |
Problèmes non symétriques, applications avancées | Variante récursive de la famille GMRESR. |
CG suppose que la matrice est symétrique définie positive. Si le contact avec frottement, un traitement non symétrique des contraintes, des effets de couplage ou des facteurs similaires introduisent une forte non-symétrie, envisager BiCGSTAB, GMRES, GPBiCG ou un autre solveur non symétrique. Avec GMRES, l’augmentation de la taille de l’espace de Krylov peut améliorer la convergence, mais augmente également l’utilisation de mémoire.
Lorsque METHOD2 est spécifié, FrontISTR peut basculer vers une autre méthode itérative si CG diverge ou tombe en panne. Cette fonction sert de solution de repli lorsque CG est le solveur principal ; la méthode de remplacement utilise les mêmes réglages restants et les mêmes lignes de données que le solveur principal.
Préconditionnement¶
Le préconditionnement transforme la matrice des coefficients afin d’améliorer la convergence d’une méthode itérative et n’est appliqué que lorsqu’une méthode itérative est sélectionnée. Les méthodes directes n’utilisent pas de préconditionnement. Même pour une même méthode itérative, le choix du préconditionneur peut modifier sensiblement le nombre d’itérations et le temps de calcul nécessaires à la convergence.
| Préconditionneur | Caractéristiques | Application typique |
|---|---|---|
| SSOR | Préconditionneur standard ; prend en charge l’ordonnancement multicolore. | Premier candidat à essayer ; largement utilisé en analyse structurale. |
| Mise à l’échelle diagonale | Préconditionneur léger utilisant les termes diagonaux. | Lorsque l’on privilégie un faible coût de calcul. |
| BILU | Factorisation LU incomplète par blocs. | Candidat pour les problèmes difficiles à faire converger avec SSOR. |
| AMG | Multigrille algébrique utilisant Trilinos-ML. | Candidat pour les problèmes de grande taille ou dominés par des composantes d’erreur hiérarchiques. |
| SAINV | Inverse approché creux. | Option de préconditionnement spécialisée pour les problèmes de contact ou les environnements à mémoire distribuée. |
| RIF | Factorisation incomplète robuste. | Autre option de factorisation incomplète. |
SSOR est le choix standard, et une version à ordonnancement multicolore est utilisée sous parallélisme OpenMP. La mise à l’échelle diagonale est légère, bien que son effet sur la convergence dépende du problème. BILU est implémenté sous forme de factorisation LU incomplète par blocs et prend aussi en charge des matrices possédant un nombre général de degrés de liberté. Pour la famille BILU, un chemin augmente automatiquement le coefficient de correction diagonale SIGMA_DIAG et réessaie lorsqu’une méthode itérative diverge ; voir la référence du mot-clé pour la manière de spécifier la valeur.
AMG utilise Trilinos-ML ; ML doit donc être activé lors de la compilation. Les lisseurs, cycles multigrilles, méthodes de grossissement et autres réglages peuvent être spécifiés, mais se reporter à la référence du mot-clé pour les valeurs détaillées. Lorsque SAINV est utilisé dans une analyse parallèle comportant des contraintes de contact ou MPC, la profondeur de recouvrement utilisée pour la décomposition de domaine peut influencer la convergence.
Méthodes directes¶
Les méthodes directes résolvent les équations linéaires en factorisant la matrice des coefficients. Comme elles ne dépendent pas d’un nombre d’itérations, elles sont robustes et peuvent constituer un choix stable pour les analyses comportant des conditions de contact ou de contrainte. Leur consommation de mémoire augmente toutefois avec la taille du problème.
| Méthode directe | Environnement parallèle | Application |
|---|---|---|
MUMPS |
Parallélisme MPI | Résout les matrices creuses par une méthode directe dans les environnements à mémoire distribuée. |
MKL |
Intel MKL / OpenMP | Solveur direct fondé sur Intel MKL. Intel PARDISO est utilisé en interne. Avec plusieurs processus MPI, le chemin Cluster MKL est utilisé. DIRECTmkl est un alias de MKL. |
Les méthodes directes peuvent être utilisées aussi bien pour les matrices symétriques que non symétriques. MUMPS et MKL exigent que les bibliothèques correspondantes soient liées lors de la compilation. Elles ne peuvent pas être utilisées dans un environnement dépourvu de ces bibliothèques ; se reporter au guide de compilation pour les dépendances et options CMake nécessaires.
FrontISTR contient également un chemin de solveur direct intégré qui n’utilise pas de bibliothèque externe ; toutefois, pour les analyses ordinaires nécessitant une méthode directe, MUMPS ou MKL doivent normalement être envisagés en premier.
Le préconditionnement n’est pas appliqué aux méthodes directes. Même si un préconditionneur est spécifié dans !SOLVER, il n’est pas consulté dans le chemin du solveur direct.
Méthodes de traitement des MPC¶
La méthode de traitement des MPC détermine la manière dont les degrés de liberté reliés par des contraintes multipoints sont incorporés aux équations linéaires. Même avec les mêmes équations de contrainte dans les données d’entrée, la méthode de traitement modifie les propriétés et le comportement de convergence de la matrice des coefficients.
| Méthode de traitement des MPC | Positionnement | Utilisation par défaut |
|---|---|---|
| Méthode de pénalité | Satisfait approximativement les contraintes en ajoutant de grands termes de rigidité aux équations de contrainte. | Valeur par défaut pour les méthodes directes. |
| Méthode MPC-CG | Ancienne méthode qui traite, à l’intérieur du solveur itératif, les produits matrice-vecteur contenant des contraintes. | Déconseillée. |
| Élimination explicite des DDL | Élimine les degrés de liberté contraints et résout le système linéaire réduit. | Valeur par défaut pour les méthodes itératives. |
La méthode de pénalité est utilisée par défaut avec les méthodes directes, tandis que l’élimination explicite des DDL est utilisée par défaut avec les méthodes itératives. La méthode MPC-CG est une option ancienne destinée à la compatibilité et n’est pas recommandée pour de nouvelles analyses ; utiliser normalement l’élimination explicite des DDL ou le traitement par défaut de la méthode directe sélectionnée.
La méthode de traitement des MPC peut être spécifiée explicitement avec MPCMETHOD dans !SOLVER. Pour la signification et la syntaxe de chaque valeur, voir la référence du mot-clé.
Élimination des DDL de contact¶
L’élimination des DDL de contact réduit les degrés de liberté de contact supplémentaires introduits par le contact SLAGRANGE avant de transmettre le système au solveur linéaire. L’élimination de ces degrés de liberté de contact peut améliorer les propriétés du système linéaire traité par une méthode itérative.
Dans le mode automatique par défaut, l’élimination des DDL de contact est activée pour les méthodes itératives et désactivée pour les méthodes directes. Pour les méthodes directes, il existe un chemin qui résout directement le système agrandi contenant les degrés de liberté de contact.
Lorsque CONTACT_ELIM est explicitement spécifié, l’élimination des DDL de contact peut aussi être effectuée avec une méthode directe. Pour le choix du type de contact, de la paire de contact et de l’algorithme de contact côté entrée, voir la page consacrée au contact et à l’inclusion.
Fonctions auxiliaires¶
L’estimation du nombre de condition, le vidage de matrice et la journalisation peuvent être utilisés pour étudier la convergence et les performances du solveur. Ces fonctions ne sont pas nécessaires pour les analyses ordinaires et sont principalement activées à des fins de débogage ou d’évaluation des performances.
| Fonction | Objectif | Remarques |
|---|---|---|
| Estimation du nombre de condition | Produit un indicateur du nombre de condition pour CG et GMRES. |
Disponible dans les versions où LAPACK est activé. |
| Vidage de matrice | Enregistre la matrice et le second membre transmis au solveur. | Prend en charge les formats Matrix Market, CSR et BSR. |
DUMPEXIT |
Termine l’analyse après le vidage de la matrice. | Utilisé lorsque seule la matrice est requise pour une vérification externe. |
ITERLOG |
Produit l’historique de convergence d’une méthode itérative. | Utilisé pour examiner l’évolution des résidus. |
TIMELOG |
Produit le temps de calcul du solveur. | VERBOSE fournit une ventilation plus détaillée. |
STEPLOG |
Produit les informations d’étape. | Utilisé pour examiner la procédure d’analyse. |
Le vidage de matrice permet d’examiner avec des outils externes la matrice des coefficients assemblée par l’analyse. Lorsque DUMPEXIT est activé, l’analyse se termine après l’enregistrement de la matrice et du second membre. L’estimation du nombre de condition est une fonction expérimentale disponible avec CG et GMRES et peut être utilisée pour diagnostiquer le comportement de convergence.
Rubriques connexes¶
- Solveur linéaire (théorie) — Principes mathématiques des méthodes itératives et du préconditionnement.
- Itération non linéaire et intégration temporelle — Cadre des itérations de Newton, des itérations de contact et de l’intégration temporelle qui appelle le solveur linéaire.
- Décomposition de domaine — Analyse parallèle MPI et réglages de la profondeur de recouvrement.
- Contact et inclusion — Choix des types et algorithmes de contact.
- !SOLVER — Valeurs et syntaxe des paramètres de solveur et de préconditionnement.
- Bibliothèques de dépendances requises et facultatives — Dépendances telles que
MUMPS,MKL(Intel PARDISO), Trilinos-ML et LAPACK.