Solveur linéaire : Options standards

Informations générales sur les solveurs linéaires

Un système linéaire de n équations et n inconnus peut être écrit sous la forme matricielle suivante :

AX=B

où :

  • A est une matrice carrée de taille n x n (avec n lignes et n colonnes) ;
  • X est un vecteur de taille n, représentant les inconnues du système ;
  • B est un vecteur de taille n, avec des composantes connues.

Pour trouver la solution, c’est-à-dire le vecteur X, un solveur linéaire doit être utilisé. Deux types de solveurs peuvent être distingués : les solveurs directs et itératifs.

Les solveurs directs suivent un processus qui mène à une solution très précise, mais au prix de plusieurs opérations coûteuses en termes de mémoire (RAM).

Les solveurs itératifs suivent un processus itératif qui approxime une solution à chaque itération. Habituellement, le processus tend à fournir une solution plus proche de la solution réelle du système linéaire d’une itération à l’autre. Le processus requière un critère d’arrêt (ou seuil de précision) et un nombre maximal d’itérations, permettant ainsi d’arrêter le processus itératif en cours de calcul lorsqu’un ou les deux critères sont satisfaits. Ainsi, le solveur itératif peut conduire à des solutions plus rapidement au prix d’une certaine inexactitude définie via le seuil de précision.

Quel solveur utiliser ?

Pour modifier le solveur linéaire utilisé dans Altair Flux, Résolution > Options de résolution > Editer(voir la Figure ci-dessous) :



Une fenêtre devrait apparaître comme dans la Figure suivante :



L’utilisateur peut choisir entre trois solveurs linéaires :

  • Solveur automatique,
  • Solveur direct,
  • Solveur itératif.
Comme brièvement discuté dans la section précédente, les solveurs directs sont connus pour leurs énormes besoins en termes de capacité mémoire, ainsi la résolution de gros problèmes (avec un grand nombre d’inconnues) nécessitera une plus grande quantité de mémoire (ou RAM) que celle nécessaire pour les solveurs itératifs. D’autre part, pour les problèmes suffisamment petits pour tenir dans une quantité de mémoire donnée, il peut être très pratique d’utiliser les solveurs directs pour assurer l’obtention de meilleurs résultats. En outre, il est très difficile de prédire le nombre d’itérations nécessaires pour atteindre un seuil de précision donné, ainsi l’utilisation du solveur direct peut conduire à une résolution plus rapide. C’est ce dilemme que le solveur automatique tente de résoudre. De plus, les solveurs direct et itératif utilisés sont parallélisés et peuvent ainsi profiter de tous les processeurs mis à disposition. Un résumé des avantages et défauts de ces deux types de solveur est fourni dans le tableau ci-dessous :
Précision Mémoire Temps Parallélisé
Nombre de nœuds Quelconque Quelconque < 500 000 > 500 000 Quelconque
Solveur direct +++ --- ++ + Oui
Solveur itératif ++ - + ++ Oui

Le solveur automatique choisit d’utiliser le solveur direct ou itératif suivant le type d’application et le nombre d’inconnues, tel que résumé dans le tableau ci-dessous :

Dimension 2D 3D
Application Quelconque Autres Magnéto Statique – Méthode Intégrale Magnéto Harmonique
Nombre de nœuds Quelconque < 500 000 > 500 000 Quelconque Quelconque
Solveur utilisé Direct Direct Itératif Itératif Direct

Lorsqu’un utilisateur souhaite sélectionner manuellement le solveur en tenant compte de ses propres ressources de calcul, nous pouvons vous conseiller à l'aide des directives suivantes :

  • Pour le matériel de type HPC (High Performance Computing) ou les ordinateurs ayant une grande capacité de RAM, l’utilisation du solveur direct est recommandée dû au fait qu’il soit parallélisé et à sa scalabilité.
  • Pour les ordinateurs avec une faible quantité de RAM, il serait judicieux d’utiliser le solveur itératif pour sa faible consommation de mémoire.
  • Pour les problèmes 2D, leurs nombres d’inconnues sont relativement faibles, le solveur direct devrait donc fournir de meilleurs résultats en termes de temps de résolution quelque soit vos ressources.

Réglages des paramètres des solveurs linéaires

Cette section cible les utilisateurs avancés afin de les aider à comprendre les paramètres de chaque solveur.

Tout d’abord, nous allons discuter des options de solveur accessibles à tout utilisateur. En mode standard, les options de solveur sont simplifiées comme l’illustre la Figure suivante :

L’option du solveur direct disponible consiste à utiliser le disque dur pour la résolution en plus de la RAM. Cette option est très utile car elle permet d’étendre la quantité de mémoire RAM utilisable. Toutefois, l’utilisation du disque dur implique des opérations plus lentes puisque les disques sont sensiblement plus lents à effectuer des opérations d’entrée/sortie.

Sur la figure de droite, deux options sont disponibles pour le solveur itératif : le niveau de précision (ou seuil) et le nombre maximal d’itérations. Vous pouvez choisir entre quatre précisions : automatique, élevée, moyenne et basse. Le choix d’un niveau pour ce paramètre dépend uniquement de votre exigence sur la qualité des résultats, pour les simulations de préconceptions un utilisateur pourrait se permettre un faible niveau de précision par exemple. Plus le niveau est bas, plus le temps de résolution devrait être faible. Le nombre maximal d’itérations permet de définir une limitation sur le temps de résolution. Cependant un nombre faible d’itérations peut conduire à des solutions très inexactes.

Les options mentionnées ci-dessus sont des options générales qui s’appliquent au solveur direct et itératif par défaut. Les utilisateurs avancés qui veulent sélectionner manuellement le solveur à utiliser et pas seulement le type de solveur doivent changer leur mode utilisateur. Plus d'informations sur ces options avancées sont disponibles au chapitre suivant : Les options avancées du solveur linéaire.