Vous êtes sur la page 1sur 8

TP de Méthodes & Outils numériques :

Résolution d'équations hyperboliques par schéma TVD

Fait par :
Ziad Abdallah
Manal Zeroual
Justo-Roman Quispe-Layme

Présenté à :
M. Remy Benjamin
Introduction

Dans ce TP nous allons chercher à résoudre une équation hyperbolique. L’équation à


résoudre est l’équation de Burger définie comme :
∂u ∂ f ( u)
+ =0 (1)
∂t ∂x
Où f représente le flux et a présente l’amplitude du flux.
u2
La fonction f sera prise dans le cas linéaire sous la forme f (u)=a . u et f (u)=a . dans le
2
cas non linéaire.
Le but de ce TP est de savoir si notre schéma est diffusif ou dispersif ou les deux. Pour ce
faire, nous allons appliquer un paquet d’ondes sous plusieurs fréquences. Nous allons tester
plusieurs schémas :
 Schéma classique
 Schéma de Lax Friedrich
 Schéma Upwind
I. Implémentation des schémas classiques dans le cas linéaire :
Pour résoudre l’équation(1), nous avons mis en œuvre la méthode des volumes finis.
l'intervalle d'étude est [–6 ; +6] d'un unique créneau, d'amplitude unitaire et initialement
situé entre les abscisses x 1 = –2 et x2 = –3.La condition initiale associée à cette équation
s'écrira alors :

u=1 pour [ – 2 ; – 3]
{u=0 pour R [ – 2; – 3 ¿
¿

1. Modèle classique : schéma centré 


1
xi +
2
1
Le principe est d’introduire la valeur moyenne Ú i= ∫ u ( x ,t ) dx sur n nombres de
∆x 1
x i−
2
volumes selon le schéma suivant :

Ui−1
U i +1
X i−1 Xi X i +1

Tel que :
a∆t
U ni +1=U ni − .(f −f )
2 ∆ x i+ 12 i− 12

Et avec:
U i+1−U i
f 1 =U 1 =
i+
2
i+
2 2

U i−U i−1
f 1 =U 1 =
i−
2
i−
2 2

A travers un code décrit en annexe, nous allons tout d’abord modéliser notre équation grâce
à un schéma centré classique. Le schéma s’écrit sous la forme :
a∆t
U ni +1=U ni − .(U in+1−U ni−1 ) que nous pouvons la représentée sous la forme numérique
2∆ x
suivante :

[B]={U }n+1 =[ A ]{U }n


Avec
[ B ] =I d

[ A ] =I d −a ∆ t
∆x

Nous avons tracé l'allure de la solution {Un} calculée pour n = 500 puis n = 1000 itérations de ce
schéma, et nous avons obtenu les graphes ci-dessous :
Figure 1:la condition initial Figure 2:Allure et position du créneau après 1000 itérations

Figure 3: Allure et position du créneau après 500 itérations

On constate alors que l’augmentation du nombre des itérations, le créneau d'entrée est fortement
déformé et très peu déplacé. Il y a donc divergence de ce schéma, ce qui est cohérent avec le résultat
théorique qui présente ce schéma classique comme inconditionnellement instable. Il est donc
nécessaire de mettre en œuvre d'autres schémas si nous voulons obtenir une solution acceptable.

II. Implémentation des schémas classiques dans le cas non linéaire :


1) Modèle classique : schéma centré 

∂u ∂u
Il s'agit alors de résoudre l’équation de Burgers + au =0.
∂t ∂x
Comme la partie précédente, nous souhaitons mettre en œuvre la méthode des volumes finis dont le
principe a déjà été décrit.

La schéma numérique à implémenter se met alors sous la forme :

∆t
U ni +1=U ni − .( f n −f n )
∆ x i + 12 i− 12

Avec :
1
f n 1= ¿
i+
2
2

1
f n 1= ¿
i−
2
2

En implémentant ce schéma sur Matlab on obtient les courbes suivantes :


Figure 1: allure de la condition initial Figure 2:position du créneau après 1000 itérations du schéma centré

Comme dans le cas linéaire ce schéma est


instable et on a divergence de la solution .

Implémentation de schéma Lax Friedrich:


∂u ∂u
On cherche à résoudre le problème de Burger +u =0 avec la condition initiale suivant pour la
∂t ∂x
vitesse u:

1−3< x ←2
{
uO ( x)= 0−2< x <+2
−1+2< x <+3

On a une détente en x=-3 (rampe de 0 à -1) et en x=3 (rampe de -1 et 0)

On a un choc en x=2 et x=-2

La vitesse de detente u sera donné par :

x +3
u(x )=
u={ t
x−3
t
u=

Pour un choc stationnaire x=0 ; t=4,5

∂u ∂ f ( u)
Nous cherchons à résoudre l’équation : + =0 avec f une fonction non lineaire que dans le
∂t ∂x
u2
cas present : f (u)= , nous nous limiterons à l’intervalle [-6 ;6]
2
Le schéma numérique à implementer a la forme suivante :
∆t n
uni +1=uni −a ( f i+ 1/2 −f ni−1 /2 )
2∆ x
1 n
On remplace uni par la demi somme de ( ui +1−unI−1 )
2
Ce shéma est stable pourvu que la condition suivante soit satisfaite :

Le schema Lax Friederich est un schema conservatif qui peut etre posé de la façon suivante :

^f n 1 = 1 (f (uni )+ f (u ni+1))−a ∆ t ( uin−uni+1 )


i−
2
2 2∆ x

^f n 1 = 1 ¿
i+
2
2

Ce schema est stable mais très diffusif et dispersisf.

Sur Matlab on a choisi a=1 m2 /s (diffussivité thermique), un pas de espace dx=0,005 et un pas de


dx∗nu
temps dt = avec nu=0,5 viscosité cinématique.
a
Evolution des ondes de chocs par le schéma Lax Friederich
Figure 3 : schéma Lax Friederich à t=1,5 en haut à gauche, t=2,5 en haut à doirte et t = 4,5 en bas.
Commentaires : Notre traceur se déplace vers l’intérieur et on fait disparaitre le phénomène de
dissipation, il reste conservatif, en revanche sur les frontières il est diffusif. On voit que l’onde de
détente (ligne inclinée) se rapproche de l’onde de compression (ligne verticale). Cela se produit en
x=-1 et x=1 après quoi le déplacement suit une évolution en racine de t.

Plus on s’approchera de sa condition de stabilité et plus les solutions données par ce schéma seront
proches de la solution exacte.

Implémentation de schéma Up Wind

La formulation générale s’écrit :

∆t
unj +1=unj− ¿¿
∆x
Avec :
(a ,0) a +IaI
+ ¿= ¿ ¿
2
a
a−IaI
−¿=inf (a , 0)= ¿
2
a

Evolution schéma Up Wind


Figure 4 : Schéma Up Wind à t=4,5 à droite et t=2,5 à gauche

Commentaires:

Ce schéma d’ordre 1 en espace et 1 en temps est conditionnellement stable.

Conclusions

Vous aimerez peut-être aussi