280 likes | 457 Views
Soutenance du stage au 27/06/2006 Méthodes de résolution de systèmes linéaires pour un prototype de calcul de l’injection de CO2 dans des milieux poreux. Plan. Stockage des matrices creuses Red and Black (R&B) Compressed Sparse Row (CSR) Résolution des systèmes linéaires
E N D
Soutenance du stage au 27/06/2006 Méthodes de résolution de systèmes linéaires pour un prototype de calcul de l’injection de CO2 dans des milieux poreux
Plan • Stockage des matrices creuses • Red and Black (R&B) • Compressed Sparse Row (CSR) • Résolution des systèmes linéaires • Préconditionnement par factorisation incomplète (ILU(0)) • Méthodes itératives (BICGSTAB) • Résolution du système transformé obtenu par R&B • Tests et résultats • Comparaison de la qualité des résultats sur un exemple • Comparaison de la vitesse de convergence • Conclusion
Red and Black (R&B)(1) • Numérotation des mailles en ordre ascendant: • Numérotation des mailles en échiquier avec lescouleurs rouge et noir:
Red and Black (R&B)(2) • Forme de la matrice A après numérotation par R&B: où B et R sont des matrices bandes par bloc, D1 et D2 des matrices diagonales par bloc:
Red and Black (R&B)(3) • Multiplication de la totalité du système linéaire par une matrice contenant les inverses des blocs diagonaux de D1 et D2: • Il reste à résoudre un nouveau système linéaire: où Id1 et Id2 sont des matrices unités
Compressed Sparse Row (CSR)(1) • Exemple: • Stockage des données en trois parties: • AA: • contient les valeurs non nulles de la matrice A stockées colonne par colonne • taille correspond au nombre des valeurs non nulles • JA: • contient les numéros de colonnes des éléments non nuls de A • taille correspond au nombre des valeurs non nulles • IA: • tableau de pointeurs où le i-ème pointeur pointe sur le numéro de la valeur dans AA et JA qui contient le premier élément non nul de la ligne i dans A • taille correspond au nombre de lignes (=nbln) +1 • IA[nbln+1] indique la fin des valeurs non nulles dans AA et JA
Compressed Sparse Row (CSR)(2) • Adaption du stockage CSR pour profiter de la structure par bloc:chaque valeur du tableau AA contient une matrice de la taille d’un bloc où au moins une valeur est non nulle • Exemple:
Préconditionnement par factorisation incomplète(1) • Préconditionnement:Transformation d’un système linéaire qui permet d’appliquer une méthode itérative <<plus facilement>> • Objectif:Trouver une matrice P <<facile à inverser>> telle queEnsuite: résoudre le système linéaire transformé • Préconditionnement par ILU:Calculation d’une matrice triangulaire inférieure creuse à diagonale unité L et d’une matrice triangulaire supérieure creuse U telles que la matrice résidu satisfasse certaines conditions
Préconditionnement par factorisation incomplète(2) ILU(0): • Les valeurs de la matrice résidu R sont nulles à tous les endroits où la matrice A est non nul • Les matrice L et U sont nulles à tous les endroits où A est nulle • La décomposition de A en L et U n’est pas unique • Le système linéaire est préconditionné par le produit de L et U (P=L*U)
Méthodes itératives (BICGSTAB) • Pour résoudre le système linéaire d’origine ou le système linéaire préconditionné, il faut choisir un solveur qui trouve la solution assez rapidement sans gaspiller trop de mémoire. • Les méthodes de Krylov généralement convergent vite sans être couteuses en temps de calcul. • Pour la résolution de nos systèmes linéaires, on a choisi la méthode du gradient bi-conjugé stabilisé, BICGSTAB. • BICGSTAB normalement converge très rapidement sans utiliser beaucoup de mémoire (en comparaison avec d’autres méthodes de Krylov).
Résolution du système transformé obtenu par R&B(1) • Transformation du système d’origine avec élimination par R&B donne: • Ce système est résolu de la façon suivante:
Résolution du système transformé obtenu par R&B(2) • Finalement, il faut résoudre et ensuite calculer . • La taille du système à résoudre est réduite par 2.
Comparaison de la qualité des résultats sur un exemple(1) • Comparaison des résultats de BICGSTAB, BICGSTAB avec préconditionnement par ILU(0) et GAUSS sur un cas 1D horizontal avec une chimie simplifiée en variant la tolérance de BICGSTAB • Le maillage est divisé en 500 mailles. • Nombre maximal d’itérations de BICGSTAB: 50000 • Nombre d’itérations -1:BICGSTAB s’arrête car l’un des critères nécessaire à la bonne continuation de l’algorithme n’est pas vérifié
Comparaison de la qualité des résultats sur un exemple(3) Conclusion: • BICGSTAB et BICGSTAB avec préconditionnement par ILU(0) donne sur cet exemple des très bons résultats. • Par préconditionnement, le conditionnement est amilioré ce qui entraîne une convergence plus rapide. • Attention:Si la tolérance pour BICGSTAB est trop faible, l’algorithme souvent ne converge pas.
Comparaison de la vitesse de convergence(1) • Comparaison des 5 méthodes suivantes sur plusieurs exemples: • GAUSS • BICGSTAB • BICGSTABpre: BICGSTAB préconditionné par ILU(0) • BICRB: BICSTAB après élimination par R&B • BICRBpre: BICSTAB après élimination par R&B et préconditionnement par ILU(0) • Tolérance pour BICGSTAB: 1.0e-10 • Nombre maximal d’itérations: 99999 • Tests sur un cas 1D horizontal (avec écoulement par différence de pression) sur la minéralogie de l’Alberta. La fin du nom des exemples correspond au nombre des mailles. • Le nombre d’équations par maille est 10
Comparaison de la vitesse de convergence(2) Conclusion: • Comme les matrices des systèmes sont mal conditionnées (p.ex. dans le cas horiz50: K(A) = 9.15766e+13), BICGSTAB ne donne pas de bons résultats. • Les solutions de BICGSTABpre, BICRB et BICRBpre sont très proches de la solution exacte. • Le gain de temps, surtout avec BICRB et BICRBpre, est très grand en comparaison avec GAUSS