1. Introduction#

Le mot clé SOLVEUR “MATR_DISTRIBUEE” indique si la matrice du problème linéaire à résoudre est complète sur tous les processeurs (MATR_DISTRIBUEE=”NON”), ou bien répartie sur ces processeurs (MATR_DISTRIBUEE=”OUI”). Dans les deux cas, le vecteur second membre est complet sur tous les processeurs.

La répartition des mailles par processeur est définie dans le modèle. Il y a plusieurs façons possibles d’effectuer cette répartition: c’est le mot-clé PARALLELISMEqui sélectionne le type de distribution.

Chaque processeur assemble les contributions élémentaires des degrés de liberté qu’il possède, c’est à dire des degrés de liberté qui appartiennent à des mailles qui lui ont été affectées. Comme on a partitionné des mailles (et non des degrés de liberté), un degré de liberté peut être possédé par plusieurs processeurs.

Chaque processeur assemble donc un bloc de la matrice totale. Chaque degré de liberté possède un indice local (sur ce processeur) et un indice global (dans le modèle global).

Lorsqu’on utilise un solveur PETSc, on lui passe un objet de type Mat, qui est une matrice distribuée avec le modèle de distribution attendu par PETSc. Cette distribution est une distribution par blocs de lignes de matrice. On effectue donc une nouvelle répartition des valeurs de la matrice entre les processeurs disponibles pour le calcul de façon à construire une matrice répartie de type PETSc. Chaque degré de liberté possède donc en plus de son indice local et de son indice globale (dans le modèle Aster) un indice global dans la matrice PETSc.

L’objet de cette documentation est d’expliciter ces différentes numérotations à partir d’un exemple simple. Elle complète la documentation [D4.01.03].