Didier Cassereau Laboratoire d Imagerie Biomédicale, UPMC CNRS INSERM, Paris, France ESPCI - Promotion 133
Généralisation du problème des équations différentielles plusieurs degrés de liberté en espace (1D, 2D ou 3D) éventuellement un degré de liberté en temps Quelques exemples souvent rencontrés en simulation numérique l équation d onde transitoire 1 2 u c 2 t 2 = 2 u x 2 [ + 2 u y 2 + 2 u z 2 ] l équation de diffusion u t = x ( D u ) x l équation de Poisson 2 u x 2 + 2 u = ρ(x, y) y2 2/35
L équation de Poisson Approche numérique résolution par différences finies généralisation des méthodes d Euler ou RK remplacement des dérivées partielles par développements de Taylor Maillage limité à une portion du plan xy { xi = x 0 + i x 0 i < I y j = y 0 + j y 0 j < J Conditions aux bords du domaine? 3/35
L équation de Poisson Développement de Taylor à l ordre 2 2 u u(x + x, y) + u(x x, y) 2u(x, y) x2 x 2 2 u u(x, y + y) + u(x, y y) 2u(x, y) y2 y 2 en notation discrète 1 x 2 (u i+1,j + u i 1,j 2u i,j ) + 1 y 2 (u i,j+1 + u i,j 1 2u i,j ) = ρ i,j 4/35
L équation de Poisson Réindexation 2D = 1D { 0 i < I 0 j < J = k = ij + j, 0 k < IJ nouvelle formulation de la solution (ε x = x 2, ε y = y 2 ) ε x (u k+j+1 + u k J 1 ) + ε y (u k+1 + u k 1 ) 2(ε x + ε y )u k = ρ k Attention : relations différentes sur les frontières du domaine conditions aux limites sur la solution ou ses dérivées lié directement au problème physique que l on résoud 5/35
L équation de Poisson Condition de Dirichlet : la solution est nulle en dehors du domaine 1 x 2 (u i+1,j + u i 1,j 2u i,j ) + 1 y 2 (u i,j+1 + u i,j 1 2u i,j ) = ρ i,j sur le côté gauche (i = 0) = 1 x 2 (u 1,j 2u 0,j ) + 1 y 2 (u 0,j+1 + u 0,j 1 2u 0,j ) = ρ 0,j sur le côté droit (i = I 1) = 1 x 2 (u I 2,j 2u I 1,j )+ 1 y 2 (u I 1,j+1 +u I 1,j 1 2u I 1,j ) = ρ I 1,j idem en bas (j = 0) et en haut (j = J 1) 6/35
L équation de Poisson Condition de Neumann : la dérivée normale est nulle aux bords 1 x 2 (u i+1,j + u i 1,j 2u i,j ) + 1 y 2 (u i,j+1 + u i,j 1 2u i,j ) = ρ i,j sur le côté gauche (i = 0) 1 x 2 (u 1,j u 0,j ) + 1 y 2 (u 0,j+1 + u 0,j 1 2u 0,j ) = ρ 0,j sur le côté droit (i = I 1) 1 x 2 (u I 2,j u I 1,j ) + 1 y 2 (u I 1,j+1 + u I 1,j 1 2u I 1,j ) = ρ I 1,j idem en bas (j = 0) et en haut (j = J 1) 7/35
L équation de Poisson - exemple Potentiel électrostatique en présence de lignes de charge V 2 x 2 + V 2 y 2 = ρ ε 0 ρ = densité volumique de charges ε 0 = permissivité électrique du vide condensateur, domaine 0 x 1 u.a., 0 y 1 u.a. ligne de charges + : 0.25 x 0.75 u.a., y = 0.4 u.a. ligne de charges : 0.25 x 0.75 u.a., y = 0.6 u.a. conditions de Dirichlet maillage de l espace avec N = 65 points = inversion d une matrice 4225 4225 8/35
L équation de Poisson - exemple Matrice très creuse (sparse matrix) nombre de termes : 17 850 625 (env. 136 Mo) termes non nuls : 20 865 (rapport 855) Méthodes d inversion pivot de Gauss si on a la place en mémoire Jacobi ou Gauss-Seidel + stockage sparse avec éventuellement sur-relaxation x i,k+1 = (1 ω)x i,k + ω b i a ij x j,k+1 a ii j<i j>i a ij x j,k ω : facteur de relaxation à choisir de manière optimale 9/35
L équation de Poisson - résultats 65 65 points, 136 Mo, 51 secondes de calcul 10/35
L équation de Poisson - résultats 131 131 points, 2.2 Go, 57 minutes 11/35
Problème aux valeurs initiales Formulation générale à une dimension (conservation du flux F) u t = x ( F( u) ) Exemple : équation d onde à une dimension Variables intermédiaires r = u x r t = ( ) u t x = u 2 u2 = c2 t2 x 2 u et s = t = ( u x t s t = 2 u t 2 = c2 2 u x 2 = u x ) = s x ( c 2 u x ) = x (c2 r) 12/35
Transformation de l équation d onde 1D r t = ( ) u = t x x s t = 2 u t 2 = c2 2 u x 2 = u x ( u t ) = s x ( c 2 u x ) = x (c2 r) = t ( r s ) }{{} u = x ( 0 1 c 2 0 ) ( r s ) } {{ } F( u) 13/35
Cas particulier de l équation (x, t) d ordre 1 Forme générale de l équation u u = c t x Résolution par différences finies, maillage de l espace et du temps { xj = x 0 + j x u t n = t 0 + n t n,j = u(t n, x j ) approximation d Euler en temps (plus simple) u t u n+1,j u n,j t approximation du deuxième ordre en espace (plus précis) u x u n,j+1 u n,j 1 2 x 14/35
Cas particulier de l équation (x, t) d ordre 1 Relation d itération u n+1,j = u n,j c t 2 x (u n,j+1 u n,j 1 ) Algorithme FTCS (Forward Time Centered Space) schéma explicite (calcul direct au temps n + 1 en fonction de la solution au temps n implémentation très simple reste à définir l état initial u 0,j, j, et les conditions aux bords droit et gauche = Stabilité de l itération? 15/35
Stabilité de l itération Cas particulier des solutions stationnaires monochromatiques u(t, x) = e i2πft v(x) v(x) = v 0 e ikx avec k = 2πf /c (nombre d onde) Solution analytique discrétisée en posant χ(k) = e i2πf t u n,j = v 0 e i2πfn t e ikj x = v 0 χ(k) n e ikj x Analyse de la stabilité - approche de Neumann : comportement de l itération pour une solution de la forme u n,j = χ(k) n e ikj x 16/35
Stabilité de l itération u n+1,j = u n,j c t 2 x (u n,j+1 u n,j 1 ) u n,j = χ(k) n e ikj x = χ(k) = 1 i c t x sin(k x) = χ(k) = 1 + ( c t x sin(k x) ) 2 > 1 k Méthode intrinsèquement instable numériquement 17/35
Algorithme FTCS - première variante On réduit nos ambitions en terme de précision on conserve l approximation d ordre 1 en temps u t u n+1,j u n,j t on se limite à l ordre 1 en espace également = Relation d itération u x u n,j+1 u n,j x u n+1,j = u n,j c t x (u n,j+1 u n,j ) 18/35
Algorithme FTCS - première variante Etude de la stabilité χ(k) = 1 + c t (1 cos(k x)) x } {{ } 1 i c t x sin(k x) = χ(k) > 1 k (exception cos(k x) = 1) Méthode intrinsèquement instable numériquement 19/35
Algorithme FTCS - deuxième variante La dérivée spatiale est calculée à gauche et non à droite on conserve l approximation d ordre 1 en temps u t u n+1,j u n,j t on se limite à l ordre 1 en espace également = Relation d itération u x u n,j u n,j 1 x u n+1,j = u n,j c t x (u n,j u n,j 1 ) 20/35
Algorithme FTCS - deuxième variante Etude de la stabilité χ(k) = 1 c t x (1 cos(k x)) + i c t x sin(k x) = χ(k) 1 avec la condition c t x 1 Condition CFL (Courant-Friedrichs-Lewy) indispensable pour assurer la stabilité numérique (CFL à 1D) c t x 1 21/35
Algorithme FTCS - stabilisation de Lax Variante de l algorithme FCTS on conserve l ordre 1 en temps on conserve l ordre 2 en espace on remplace u n,j par (u n,j+1 + u n,j 1 )/2 = Relation d itération u n+1,j = u n,j+1 + u n,j 1 2 c t 2 x (u n,j+1 u n,j 1 ) 22/35
Algorithme FTCS - stabilisation de Lax Etude de la stabilité χ(k) = cos(k x)) i c t x sin(k x) = χ(k) = cos(k x) 2 + Condition CFL c t x 1 ( c t x ) 2 sin(k x) 2 En général, χ(k) dépend de k, donc de la fréquence 23/35
Les conditions aux bords du domaine Domaine limité en temps on spécifie les conditions initiales on itère sur un nombre fini de pas temporels Domaine limité en espace maillage d une partie seulement de l espace physique conditions aux bord du domaine conditions de Dirichlet : champ nul aux bords du domaine conditions de Neumann : dérivée du champ nulle aux bords du domaine conditions intermédiaires : PML (Perfectly Matched Layer) 24/35
Exemple 1 : propagation d une déformation le long d une corde vibrante Problème physique corde vibrante de longueur L, tendue à chaque extrémité (tension T) µ = densité linéaire de masse : µ = m/ x condition de Dirichlet à droite mouvement imposé à gauche, suivi de condition de Dirichlet densité linéaire de masse non constante µ 1 sur la moitié gauche de la corde µ 2 sur la moitié droite de la corde Equation du mouvement 2 u t 2 = c2 2 u x 2, c = T µ 25/35
Exemple 1 : propagation d une déformation le long d une corde vibrante Développement de Taylor au deuxième ordre u(t + t) u(t) + tu (t) + t2 2 u (t) = u(t t) u(t) tu (t) + t2 2 u (t) 2 u(t, x) t 2 2 u(t, x) x 2 u(t + t, x) + u(t t, x) 2u(t, x) t 2 u(t, x + x) + u(t, x x) 2u(t, x) x 2 26/35
Exemple 1 : propagation d une déformation le long d une corde vibrante Relation d itération maillage spatial avec un pas x, N points maillage temporel avec un pas t u n+1,j = 2u n,j u n 1,j + ( c t x ) 2 [u n,j+1 + u n,j 1 2u n,j ] condition CFL : t = x/c max condition de Dirichlet à droite : u n,j = 0, j N mouvement imposé à gauche : u n,0 = e n ( e(n t)) e(t) fonction temporelle décrivant la vibration imposée 27/35
Exemple 1 : propagation d une déformation le long d une corde vibrante En live..../corde -N1000 -S1./corde -N1000 -S2./corde -N4000 -S1./corde -N4000 -S2 28/35
Exemple 2 : équation de diffusion Problème physique diffusion de la chaleur à 1D u t = D 2 u x 2 état initial u(t = 0, x) = f (x) donné condition de Dirichlet aux bords droit et gauche maillage spatial avec un pas x maillage temporel avec un pas t 29/35
Exemple 2 : équation de diffusion Développement de Taylor u t u n+1,j u n,j t 2 u x 2 u n,j+1 + u n,j 1 2u n,j x 2 = u n+1,j = u n,j + D t x 2 (u n,j+1 + u n,j 1 2u n,j ) Condition de Dirichlet : u n,j = 0, j < 0 (bord gauche) u n,j = 0, j N (bord droit) Schéma explicite FTCS 30/35
Exemple 2 : équation de diffusion Analyse de la stabilité numérique : solution particulière de la forme u n,j = χ(k) n e ikj x = χ(k) = 1 4 D t x 2 sin2 ( k x 2 ) = Condition de stabilité : t x2 2D Problème : relation quadratique entre t et x x x/2 : t t/4 31/35
Exemple 2 : équation de diffusion Régularisation par approche BTCS - méthode implicite on calcule la dérivée spatiale au temps n + 1 et non au temps n = u n+1,j u n,j t = D u n+1,j+1 + u n+1,j 1 2u n+1,j x 2 schéma implicite, plus de calcul direct au temps n + 1 en fonction du temps n = αu n+1,j 1 + (1 + 2α)u n+1,j αu n+1,j+1 = u n,j 32/35
Exemple 2 : équation de diffusion Régularisation par approche BTCS - méthode implicite Conditions de Dirichlet aux bords A = 1 + 2α α 0 0 α 1 + 2α α... 0 0 α...... 0.......... α 0 0 α 1 + 2α = u n+1 = A 1 u n La matrice peut être inversée une bonne fois pour toutes 33/35
Exemple 2 : équation de diffusion Analyse de la stabilité numérique : solution particulière de la forme u n,j = χ(k) n e ikj x = χ(k) = 1 1 + 4 D t ( k x x 2 sin2 2 ) = Méthode inconditionnellement stable 34/35
Exemple 2 : équation de diffusion En live..../diffusion -N100 -T0.15 1./diffusion_implicite -N100 -T0.15 1 Matlab: draw_diffusion./diffusion -N100 -T0.15 2./diffusion_implicite -N100 -T0.15 2 Matlab: draw_diffusion 35/35