Vous êtes sur la page 1sur 5

PC6 : Résolution numérique d’équations hyperboliques

non linéaires en 1D

17 Juin 2011

Les sources Matlab du TP peuvent être récupérées sur le site du cours MA103 (ru-
brique Programmation détaillée) : :

http://wwwdfr.ensta.fr/Cours/index.php?usebdd=ensta&sigle=MA103&afficher=prog

Nous nous intéressons à une loi de conservation scalaire du type


∂u ∂

f (u) = 0, (x, t) ∈ R × R+ ,

+

∂t ∂x (1)
u(x, 0) = u0 (x), x ∈ R.
On supposera que la condition initiale u0 (·) est L-périodique. La solution de l’EDP
sera alors aussi L-périodique et on pourra restreindre notre étude à un intervalle
[xmin , xmax ] avec L = xmax − xmin . On aura

f (u) = c u, pour l’équation du transport, (I)

(2)

f (u) = 1 u2 , pour l’équation de Burgers,

(II)
2

et on notera a(u) := f 0 (u).


Pour la discrétisation de l’équation nous allons diviser l’intervalle en N segments de
taille h = L/N . Cela nous donne N + 1 points donnés par xi := xmin + i h, i ∈
{0, · · · , N } sur lesquels nous cherchons à approcher la solution du problème :
unj ≈ u(xj , tn ).
Pour ce faire nous proposons des schémas du type :
un+1
j = Hn (unj−1 , unj , unj+1 ), (j, n) ∈ {0, . . . , N } × {1, . . . , NT }, (3)
où, afin de prendre en compte les conditions de périodicité, nous posons
un−1 = unN , n ∈ {0, . . . , NT + 1},

(4)


un = un , n ∈ {0, . . . , N + 1}.
N +1 0 T

Nous allons supposer que u0j , j ∈ {0, . . . , N } est une bonne approximation de u(xj , t =
0) ce qui nous permettra d’initialiser le schéma numérique. Le pas de temps ∆t(n)
sera recalculé à chaque itération par
αh
∆t(n) := .
supj |a(unj )|
où α est un paramètre qu’il faudra fixer au début de la simulation.

1
E XERCICE 1 (L E SCH ÉMA D ÉCENTR É )
Nous introduisons le schéma donné par
∆t(n)

 v − (f (v) − f (u)), si a(v) ≥ 0,


h
Hn (u, v, w) = (5)
(n)
 v − ∆t (f (w) − f (v)), si a(v) < 0.


h

Question 1. Écrire ce schéma dans le cas linéaire (I). Est ce que cela justifie le nom
de schéma décentré ?

Nous rappelons que, dans le cas linéaire, ce schéma est stable sous la condition CFL
α ≤ 1. (6)

Question 2. On se place dans le cas linéaire (I) avec x0 = −2 et x1 = 2. Nous


considérons une condition initiale discontinue de type ”rampe”


 −1/2 −2 ≤ x < −1/2

u0 (x) = x −1/2 ≤ x < 1 (7)


 −1/2 1 < x < 2

Implémenter le schéma décentré dans le fichier Decentre.m et comparer la solution


exacte avec la solution approchée pour α ∈ {0.8, 1, 1.1}.

Question 3. On se place maintenant dans les cas de l’équation de Burgers (2).(II).


Calculer la solution exacte du problème avec la condition initiale ”rampe” (7) pour
t < 3 (voir l’exercice 3 de la PC5). Comparer cette solution (en rouge) avec celle obte-
nue par le schéma numérique (en bleu) avec α = 0.8. Est ce que la vitesse de l’onde
de choc numérique en x = 1 est correcte ? La solution numérique converge-t-elle
vers une solution faible ?
E XERCICE 2 (S CH ÉMAS CONSERVATIFS )
On dira qu’un schéma est conservatif lorsque
∆t(n)
Hn (u, v, w) = v − (g(v, w) − g(u, v)) . (8)
h
Nous considérons le schéma de Murman-Roe caractérisé par
f (u), si ã(u, v) ≥ 0,
(
g(u, v) =
f (v), si ã(u, v) < 0,

 f (u) − f (v) , si u 6= v,

avec ã(u, v) = u−v


 0
f (u), si u = v,
et qui est linéairement stable sous la même condition CFL (6). On appellera g le flux
associé au schéma.

2
Question 1. Expliquer en quoi le schéma de Murman-Roe est une variante du schéma
décentré.

Question 2. Montrer qu’il est équivalent d’utiliser le schéma


f (u), si a? (u, v) = 0 ou 1,
(
g(u, v) =
f (v), si a? (u, v) = −1,

signe(f (u) − f (v))signe(u − v), si u 6= v,


(
avec a? (u, v) =
signe(f 0 (u)), si u = v,
Ce schéma à l’avantage d’éviter la division hasardeuse par u-v. En effet, u-v peut
être trés proche de 0 et donc la division provoquerait des phénomènes d’instabilités
numériques.

Question 3. Implémenter le schéma de Murman-Roe dans le fichier MurmanRoe.m.

Question 4. Utiliser ce schéma numérique pour résoudre (1) avec le flux de Bürgers
(II), la condition initiale de type ”rampe” (7) et α ∈ {0.5, 1, 2}. La condition de Rankine-
Hugoniot semble-t-elle être bien approchée ?

Question 5. On répète la même expérience avec une condition initiale de type ”créneau”


 −1/2 −2 ≤ x < −1/2

u0 (x) = 1 −1/2 < x < 1/2 (9)


 −1/2 1/2 < x ≤ 2

Est ce que la solution obtenue semble approcher une solution entropique ? Observe-
t-on une onde de détente à x = − 21 ?

E XERCICE 3 (S CH ÉMAS MONOTONES )


Un schéma est dit monotone si et seulement si
unj ≤ vjn , ∀j =⇒ un+1
j ≤ vjn+1 , ∀ j.
Nous rappelons qu’un schéma monotone est aussi entropique. Une condition nécessaire
et suffisante de monotonie pour le schéma (3) est que la fonction H(·, ·, ·) soit crois-
sante par rapport à chacun de ses arguments.
On considère le schéma de Lax-Friedrichs caractérisé par
1 ∆t(n)
Hn (u, v, w) = (u + w) − (f (w) − f (u)) .
2 2h

Question 1. Montrer que le schéma de Lax-Friedrichs est conservative (c.f. (8)).


Quelle est l’expression de la fonction g(·, ·) correspondante ?

3
Question 2. Montrer que le schéma de Lax-Friedrichs est monotone sous la condi-
tion CFL (6).

Question 3. Implémenter le schéma de Lax-Friedrichs dans le fichier LaxFriedrichs.m.

Question 4. Calculer la solution approchée du problème (1) avec le flux de Bürgers


(II), une condition initiale de type ”créneau” et α ∈ {0.5, 1, 2, 3}. Conclure.

E XERCICE 4 (L E SCH ÉMA DE G ODUNOV )


Dans cette section nous introduisons un schéma populaire pour la résolution de (1).
La construction de ce schéma est originale : elle repose sur la résolution exacte de
problèmes de Riemann locaux. Lorsqu’on satisfait la condition

 ∆t(n) 1
sup | a unj | ≤ , (10)
j h 2

la solution du problème de transport revient à la résolution des problèmes de Rie-


mann à deux états locaux sur chaque interface xj+ 1 = (j + 1/2)h (cela est dû à la
2
propagation à vitesse finie). Si on dénote

w(x/t; ug , ud ),

la solution entropique du problème de Riemann à deux états donnés par ug (à gauche)
et ud (à droite), le schéma s’écrit

∆t(n)  
un+1
j = unj − f (w(0; uj , uj+1 )) − f (w(0; uj−1 , uj )) ,
h

ce qui montre qu’il s’agit d’un schéma conservatif. Par ailleurs, le schéma est mono-
tone sous la condition (10).

Question 1. Donner une expression explicite du flux f (w(0; u, v)) (associé au schéma
de Godunov pour la résolution de (1) avec le flux de Bürgers (II).

Question 2. Implémenter le schéma de Godunov dans le fichier Godunov.m.

Question 3. Calculer la solution approchée pour une donnée initiale de type ”créneau”
(9) et α ∈ {0.4, 1, 2, 3}. Conclure.

Question 4. Répéter la même expérience numérique pour une condition initiale de


type ”rampe” (7) et α ∈ {0.4, 1, 2, 3}. Conclure.

4
Lexique des commandes Matlab. En matlab il est préférable de considérer la plu-
part des inconnues comme des vecteurs. On donne ici les opérations nécessaires
pour faire le TP (U et V sont des vecteurs de même dimension).
– U = V . Affecte à U toutes les cvaleurs de V .
– U +V, U −V, U.∗V, U./V . Addition soustraction, multiplication et division terme
à terme.
– U == V, U >= V, U <= V, U > V, U < V . Retourne un vecteur de même taille
dont la i-ème composante vaut 1 si la relation est vrai entre la i-ème compo-
sante de U et V , 0 sinon.
– U + a. Retourne un vecteur dont chaque composante est incrémentée de a.
– sign(U ). Retourne un vecteur de même taille que U et V dont la i-ème compo-
sante vaut 1 si U(i) est stricement positif, 0 si U (i) est nul, -1 sinon.
– and(U, V ). Retourne un vecteur de même taille que U et V dont la i-ème com-
posante vaut 1 si U (i) et V (i) valent 1, 0 sinon

Vous aimerez peut-être aussi