next up previous
suivant: Exemples de simulations

Simulation de la propagation monodimensionnelle d'une onde


On s'intéresse par la suite à la résolution numérique de ce problème lorsque le domaine D est un segment [0 , L].

Ce cas 1-D (une dimension) correspond par exemple à la simulation du mouvement d'une corde (de piano ou de guitare par exemple), ou de l'amplitude d'un champ électrique ou magnétique en polarisation TE ou TM.

Le domaine géométrique dans lequel l'onde peut se propager est le segment [0 , L]. On s'interesse donc à l'amplitude de l'onde f (x, t) pour $ \mbox{$x\in [0,L]$}$  et $ \mbox{$t\in [0,T]$}$ .

Pour approximer les valeurs de l'amplitude de l'onde, nous allons utilisé la méthode numérique dite des différences finies.

On se donne tout d'abord pour cela une ``grille'' régulière de calcul, c'est-à-dire une discrétisation de l'ensemble [0 , L]×[0 , T]: soit les deux suites

$\displaystyle \left.\vphantom{ \begin{array}{l} \{x_k\} =\{ k \delta_x\}_{k=0\...
...{ et, } \{t_k\} =\{ k \delta_t\}_{k=0\dots T/\delta_t}  , \end{array}}\right.$$\displaystyle \begin{array}{l} \{x_k\} =\{ k \delta_x\}_{k=0\dots L/\delta_x}  , \mbox{ et, } \{t_k\} =\{ k \delta_t\}_{k=0\dots T/\delta_t}  , \end{array}$ (3.3)

$ \delta_{x}^{}$ et $ \delta_{t}^{}$ désignent respectivement le pas de la grille en x (espace) et en t (temps).


Cette grille étant donnée, on cherche à calculer les valeurs de f aux noeuds de la grille. On notera

fi, j : = f (xi, tj) .

La deuxième étape est l'approximation des dérivées partielles de f à l'aide des éléments fi, j. Cela s'effectue à l'aide de la formule de Taylor, par exemple pour la dérivée selon x:

$\displaystyle \left.\vphantom{\begin{array}{l}
f(x+\delta_x,t) = f(x,t)+\delta_...
...rac{\partial^2 f}{\partial
x^2}(x,t) + O (\delta_x^3)  ,
\end{array}}\right.$$\displaystyle \begin{array}{l}
f(x+\delta_x,t) = f(x,t)+\delta_x \frac{\partial...
...2}{2} \frac{\partial^2 f}{\partial
x^2}(x,t) + O (\delta_x^3)  ,
\end{array}$

ou, en d'autres termes

$\displaystyle \left.\vphantom{\begin{array}{l}
f_{i+1,j} = f_{i,j} + \delta_x \...
...rac{\partial^2 f_{i,j}}{\partial
x^2} + O (\delta_x^3)  .
\end{array}}\right.$$\displaystyle \begin{array}{l}
f_{i+1,j} = f_{i,j} + \delta_x \frac{\partial f_...
...2}{2} \frac{\partial^2 f_{i,j}}{\partial
x^2} + O (\delta_x^3)  .
\end{array}$

On peut de cette manière approximer les dérivées secondes de f par rapport à x et t (en considérant aussi par exemple le développement de Taylor de f (x - $ \delta_{x}^{}$, t) et en sommant les relations).

On obtient, tous calculs fait:

$\displaystyle \left.\vphantom{\begin{array}{l}
\frac{\partial^2 f_{i,j}}{\part...
...a_t^2}\left[
f_{i,j+1} + f_{i,j-1} - 2 f_{i,j}\right]  ,
\end{array}}\right.$$\displaystyle \begin{array}{l}
\frac{\partial^2 f_{i,j}}{\partial t^2} \sim
...
...1}{\delta_t^2}\left[
f_{i,j+1} + f_{i,j-1} - 2 f_{i,j}\right]  ,
\end{array}$

et,

$\displaystyle \left.\vphantom{\begin{array}{l}
\frac{\partial^2 f_{i,j}}{\parti...
...a_x^2}\left[
f_{i+1,j} + f_{i-1,j} - 2 f_{i,j}\right]  .
\end{array}}\right.$$\displaystyle \begin{array}{l}
\frac{\partial^2 f_{i,j}}{\partial x^2} \sim
\...
...1}{\delta_x^2}\left[
f_{i+1,j} + f_{i-1,j} - 2 f_{i,j}\right]  .
\end{array}$

En combinant ces deux expressions avec l'équation de Helmohltz, on obtient la relation de récurrence:

$\displaystyle \left.\vphantom{\begin{array}{l} f_{i,j+1} = - f_{i,j-1} + \gamma f_{i+1,j} +\gamma f_{i-1,j} -2 (1-\gamma) f_{i,j}  , \end{array}}\right.$$\displaystyle \begin{array}{l} f_{i,j+1} = - f_{i,j-1} + \gamma f_{i+1,j} +\gamma f_{i-1,j} -2 (1-\gamma) f_{i,j}  , \end{array}$ (3.4)

$ \gamma$ = c2$ \delta_{t}^{2}$/$ \delta_{x}^{2}$.


Il ne reste plus alors qu'à initialiser la suite fi, j.

Pour commencer, on pourra prendre g = 0. Cette condition modélise une paroi infiniment dure; l'onde y sera totalement réfléchie.

La fonction h(x) modélise l'état initial de l'onde, à l'instant t = 0. On pourra utiliser la fonction h, infiniment régulière:

$\displaystyle \left.\vphantom{\begin{array}{l}
h(x) = \left\{
\begin{array}{l...
...t\leq d \\
0  , \mbox{ ailleurs} ,
\end{array}\right.
\end{array}}\right.$$\displaystyle \begin{array}{l}
h(x) = \left\{
\begin{array}{ll}
\displaystyl...
...-x_0\vert\leq d \\
0  , \mbox{ ailleurs} ,
\end{array}\right.
\end{array}$

A = exp(1/r2) permet de normaliser h, et où $ \mbox{$x_0\in [0,L]$}$ est le centre de la ``cloche'' h(x) et r > 0 sa largeur.

La fonction $ \tilde{{h}}$ modélise l'''impulsion'', ou la vitesse, initiale donnée à l'onde. On pourra choisir pour commencer $ \tilde{{h}}$ = 0.



suivant: Exemples de simulations

LongPage: h2: 0 - h3: 0