Pr´eparation `a l’agr´egation externe Universit´e de Grenoble
Option calcul scientifique 2008/2009
Sch´ emas num´ eriques pour les EDP
Discr´etisation du Laplacien :
On consid`ere l’op´erateur Laplacien ∆ = ∂xx2 sur C2((0,1)). La discr´etisation par ´el´ements finis est de la forme suivante. Le segment (0,1) est discr´etis´e en n + 1 points x0 = 0, x1 = δx, . . ., xn+1 = 1 avec δx = 1/n. La discr´etisation du Laplacien est principalement une matrice tridiagonale A, mais il faut faire attention aux conditions aux bords. Les cas homog`enes classiques sont :
Dirichlet u(0) =u(1) = 0 A= δx12
−2 1 0 . . . 0 1 −2 1 . .. ...
0 1 . .. ... 0 ... ... ... ... 1 0 . . . 0 1 −2
Neumann ux(0) =ux(1) = 0 A= δx12
−1 1 0 . . . 0 1 −2 1 . .. ...
0 1 . .. ... 0 ... ... ... ... 1 0 . . . 0 1 −1
Periodique u(0) =u(1) etux(0) =ux(1) A= δx12
−2 1 0 . . . 1 1 −2 1 . .. ...
0 1 . .. ... 0 ... . .. ... ... 1 1 . . . 0 1 −2
Exercice : r´esoudre num´eriquement une ´equation du type ∆u = f avec diff´erentes conditions aux bords. Comment g´erer le cas de conditions non-homog`enes u(0) = 1 et u(1) = −2 ? Comment g´erer le cas de conditions de Robin u(0) +αux(0) = 0 et u(1) +αux(1) = 0 ?
1
Discr´etisation d’´equations paraboliques : On regarde une ´equation de r´eaction-diffusion
ut(x, t) =uxx(x, t) +f(t, x, u(x, t)) (x, t)∈(0,1)×R+
avec des conditions aux bords (Dirichlet homog`ene par exemple). En reprenant la discr´etisation pr´ec´edente du Laplacien et un sch´ema en temps type Euler, on aboutit `a deux discr´etisations possibles :
• le sch´ema explicite Un+1 =Un+δt(AUn+f(tn, x, Un))
• le sch´ema semi-implicite Un+1 = Un + δt(AUn+1 + f(tn, x, Un)) i.e. Un+1 = (Id − δtA)−1(Un+δtf(t, x, Un)).
Observer la stabilit´e des sch´emas pour diff´erentes valeurs de δt/δx2. Comment expliquer les diff´erences constat´ees ?
Discr´etisation des ´equations de transport :
On consid`ere l’´equation de transport la plus simple qui soit
∂u
∂t(x, t) +c∂u
∂x(x, t) = 0 et u(x,0) = u0(x) , o`uc est une vitesse constante.
Quelle est la solution th´eorique ? Quelles sont les conditions aux bords `a mettre pour que l’´equation soit bien pos´ee ?
Suivant la discr´etisation envisag´ee pour la d´eriv´ee spatiale, on aboutit `a trois principaux sch´emas :
• sch´ema amont (ujn+1−ujn)/δt+c(uj+1n −ujn)/δx= 0,
• sch´ema aval (ujn+1−ujn)/δt+c(ujn−uj−1n )/δx= 0,
• sch´ema centr´e (ujn+1−ujn)/δt+c(uj+1n −uj−1n )/2δx = 0.
Tester pour des conditions aux bords p´eriodiques u(0) = u(1) les sch´emas amont, aval et centr´e pour diff´erentes valeurs dec. On observera en particulier ce qui se passe en fonction du signe de cet de sa position par rapport `a δx/δt.
Equation des ondes : on consid`ere l’´equation des ondes ∂2f
∂t2(x, t) = ∂∂x2f2(x, t)
f(0, t) = f(1, t) = 0 , f(x,0) =f0(x) et ∂tf(x,0) = 0 . (1) Utiliser la discr´etisation de la d´eriv´ee seconde sous la forme un+1+uδxn−21+2un pour simuler l’´equation des ondes. Consid´erer la stabilit´e du sch´ema en fonction du rapport dx/dt.
Observer comment les ondes se r´efl´echissent sur les bords pour la condition de Dirichlet et pour la condition de Neumann.
2
M´ethode de descente :
On souhaite r´esoudre sur un rectangle Ω l’´equation ∆u = λu +f, avec λ > 0 et des conditions aux bords de type Dirichlet. On note que u est le minimiseur de l’´energie E(u) =R
Ω|−→
∇u|2+λ|u|2+f u. On discr´etise le probl`eme en rempla¸cantupour une matrice de valeurs Ui,j. Quelle est la discr´etisation de l’´equation ? De l’´energie ? La m´ethode de relaxation `a pas optimale pour ce probl`eme consiste `a modifier une par une les valeursUi,j par la valeur donnant l’´energie la plus petite, les autres valeurs Ui′,j′ ´etant fix´ees. Puis on recommence en parcourant ainsi plusieurs fois la matrice. Programmer l’algorithme correspondant.
M´ethode de Galerkin (m´ethode spectrale) :
On reprend l’´equation des ondes (1). En d´ecomposant la fonction f(x, t) sous la forme f(x, t) =X
n≥1
cn(t) sin(nπx) ,
r´esoudre explicitement l’´equation des ondes. En ne consid´erant que les premiers modes de Fourier, pr´esenter une simulation approch´ee de (1).
M´ethode particulaire :
On consid`ere l’´equation de transport ∂u∂t +c(x)∂u∂x = 0. On d´ecoupe l’intervalle [0,1] en petits sous-intervalles Ij = [xj, xj+1] et on note ujn la quantit´e de particules se trouvant `a l’instant tn dans l’intervalle Ij. A chaque instant tn, on bouge les particules de l’intervalle Ij dans l’intervalle Ik en suivant le d´eplacementc((xj+xj+1)/2)δt. Programmer le sch´ema obtenu.
3