introduction aux éléments finis -...

39
Introduction aux éléments finis Résolution numérique de problèmes de MMC Eléments finis pour des équations elliptiques Quelques problèmes elliptiques Théorie de la meilleure approximation Méthodes d’éléments finis mixtes Eléments finis et problèmes d’advection-diffusion Techniques de résolution de systèmes linéaires creux (Richard Comblen, 2007)

Upload: dangdieu

Post on 06-Feb-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Introduction aux

éléments finis

–  Résolution numérique de problèmes de MMC –  Eléments finis pour des équations elliptiques –  Quelques problèmes elliptiques –  Théorie de la meilleure approximation –  Méthodes d’éléments finis mixtes –  Eléments finis et problèmes d’advection-diffusion –  Techniques de résolution de systèmes linéaires creux

(Richard Comblen, 2007)

Page 2: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Le problème discret

Matrice définie positive

Problème continu elliptique et linéaire Méthode des éléments finis Formulation de Galerkin

Page 3: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Solution du problème de thermoélasticité

Page 4: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Solution du château d’eau

Page 5: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Solution du problème de Stommel ?

Page 6: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Solution du problème instationnaire non-linéaire…

Page 7: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Solution du palier plat…

Page 8: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

A frequent misuse of inv arises when solving the system of linear equations . One way to solve this is with

x = inv(A)*b

A better way, from both an execution time and numerical accuracy standpoint, is to use the matrix division operator

x = A\b

This produces the solution using Gaussian elimination, without forming the inverse.

Comment résoudre le système discret avec Matlab ?

U = inv(A) * B;

On résout un système linéaire, on ne l’inverse jamais…. (J. Meinguet)

A = sparse(n,n); B = zeros(n,1); U = A\B;

Page 9: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

C’est quoi A\b dans Matlab ?

If A is symmetric, or Hermitian, and has positive diagonal elements, then a Cholesky factorization is attempted (see chol). If A is found to be positive definite, the Cholesky factorization attempt is successful and requires less than half the time of a general factorization. Nonpositive definite matrices are usually detected almost immediately, so this check also requires little time. If successful, the Cholesky factorization is

A = R'*R

where R is upper triangular. The solution X is computed by solving two triangular systems,

X = R\(R'\B)

If A is sparse, a symmetric minimum degree preordering is applied (see symmmd and spparms). The algorithm is:

perm = symmmd(A); % Symmetric minimum degree reordering R = chol(A(perm,perm)); % Cholesky factorization y = R'\B(perm); % Lower triangular solve X(perm,:) = R\y; % Upper triangular solve

Page 10: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Three distinct steps

Partial Differential Equations

Algebraic System of Discrete Equations

Discretisation by Finite Elements

Linear Solver

Mathematical Modeling

Discrete Solution

Physical Process to Analyze

Page 11: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Aller simple vers le monde de l’algèbre linéaire…

Utilisation des notations habituelles de l’algèbre linéaire

Page 12: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Deux grandes classes de méthodes de résolution

Solveurs directs (Elimination gaussienne)

Solveur de Gauss Solveur de Gauss bande

Solveur de Gauss « skyline » Solveur de Gauss frontal

Solveur de Gauss « Nested dissection »

Solveurs itératifs

Méthode de la plus grande pente Méthode des gradients conjugés

Méthode de GMRES

Les méthodes de la plus grande pente et des gradients conjugés ne sont utilisables que

pour une matrice définie positive

Page 13: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Les éléments finis produisent une matrice creuse…

Page 14: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

La résolution de systèmes triangulaires est facile…

Backward substitution

Triangulation

Page 15: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Triangularisation par élimination gaussienne

Page 16: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Cela ne date pas d’hier, et pourtant…

Issaï Schur (1875 – 1941)

Karl Friedrich Gauss (1777-1855)

Page 17: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

C’est facile à implémenter…

double *matrixSolve(double **A, double *B, int size)

{ int i, j, k;

/* Gauss elimination */ for (k=0; k < size; k++) { if ( A[k][k] == 0 ) Error("zero pivot"); for (i = k+1 ; i < size; i++) { factor = A[i][k] / A[k][k]; for (j = k+1 ; j < size; j++) A[i][j] = A[i][j] - A[k][j] * factor; B[i] = B[i] - B[k] * factor; }}

/* Back-substitution */ for (i = (size)-1; i >= 0 ; i--) { factor = 0; for (j = i+1 ; j < size; j++) factor += A[i][j] * B[j]; B[i] = ( B[i] - factor)/A[i][i]; } return(B); }

Elimination effectuée « en place » Ok, si tous les pivots sont non-nuls pendant les processus

Oui, si la matrice est définie positive

Coût calcul : O(n3)

Page 18: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Résolution par factorisation LU

Factorisation de A en LU (effectuée par élimination gaussienne) Résolution de Lz = b par substitution directe Résolution de Ux = z par substitution arrière

Même coût qu’une élimination gaussienne, Il suffit juste de conserver L Très utile, si on souhaite traiter plusieurs cas de charges ! Mais plus gourmand en mémoire : facteur critique..

Page 19: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Matrice symétrique définie-positive : Méthode de Cholesky

A = BBT

Plus intéressante que l’élimination gaussienne en termes d’opération, Mais valable que pour des matrices symétriques définies positives

Page 20: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Factorisation de matrices creuses : Problème du fill-in

Page 21: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Fill-in et renumérotation des variables dans le projet !

Yannakakis, Computing the minimum fill-in is NP-complete, SIAM J. Algebraic and Discrete Methods, Vol. 2, 1981, 77-79.

Page 22: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Quel est le vrai facteur critique pour des simulations de grande taille ?

Précision du résultat Faut-il pivoter ? Comment minimiser la propagation des erreurs d’arrondis ? Simple ou double précision ? Matrices sym. déf. pos. : il n’est pas requis de pivoter !

Temps de calcul « cpu » Heuristiques de rénumérotation Utilisation des outils BLAS et LAPACK

Espace mémoire requis Stockage de U ou LU Calcul en simple ou en double précision ? Stokage en simple ou en double précision ?

Aujourd’hui

Hier

Page 23: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Heuristiques de renumérotation

Reverse Cuthill-McKee

Mimimum Degre Ordering

Page 24: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Solveur de Gauss pour matrices bandes

Concept de largeur de bande

Zéro logique traité comme un zéro numérique

La numérotation des inconnues est cruciale

Coût calcul : O(nβ2)

Page 25: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Solveur de Gauss frontal

Matrice active stockée sur la mémoire à accès rapide

Le reste est stocké sur la mémoire secondaire

La méthode frontale est cependant plus générale et peut s’appliquer à une matrice non-bande ! On effectue l’élimination et l’assemblage de manière simultanée :

ce sera la numérotation des éléments qui sera critique

Coût calcul : O(nβ2)

Page 26: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Exemple Seule, la numérotation des éléments est cruciale !

Page 27: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Calcul de l’élément de disparition

Page 28: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Factorisation symbolique

Calcul de la taille requise pour la matrice active

Page 29: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Méthodes itératives Matrice définie positive

Page 30: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Méthode du gradient (méthode de la plus grande pente)

(i) Calcul de la plus grande pente

Page 31: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Méthode du gradient (méthode de la plus grande pente)

(ii) Calcul du pas optimal

Page 32: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

La méthode de la plus grande pente est une méthode lente !

Analyse de la convergence

Page 33: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Un peu d’algèbre linéaire

Choix d’un pas acceptable

Page 34: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Et pratiquement alors ?

C’est très mauvais ! Proportionnel à O(h-2) pour une discrétisation d’un problème elliptique

Page 35: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Méthode de gradients conjugés

La convergence est nettement meilleure !

Page 36: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Préconditionnement : salut, les copains !

y = Ex

Page 37: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Ah bon, et à quoi cela sert-il ?

Le nouveau problème serait plus gentil… (meilleur conditionnement)

…et donc, ce schéma convergerait plus vite !

Page 38: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Aahhh, et comment trouver C ? ou les propriétés du bon préconditionneur

C= A est le choix optimal C = I est le pire choix

C= A est le pire choix C = I est le choix optimal

C = factorisation incomplète de Cholesky, est un bon compromis entre les 2 propriétés souhaitées.

Page 39: Introduction aux éléments finis - perso.uclouvain.beperso.uclouvain.be/vincent.legat/teaching/documents/meca2120-cours... · C’est quoi A\b dans Matlab ? If A is symmetric, or

Les éléments finis, c’est fini pour 2008-2009 !