On considère la propagation d'une onde sonore plane dans tube de longueur contenant un milieu au repos de densité et de pression . Le milieu est perturbé à l'instant initial par une fluctuation de pression ne dépendant que de la direction spatiale et sans vitesse initiale (i.e. ). La densité , la pression et la vitesse du milieu perturbée sont solutions des équations de conservation d'Euler, qui décrivent la dynamique d'un gaz non visqueux. En supposant que les perturbations sont faibles (hypothèse de l'acoustique), l'équation de conservation de la masse s'écrit au premier ordre:
De même l'équation de conservation de la quantité de mouvement s'écrit au premier ordre:
Les fluctuations étant faibles, on peut supposer l'écoulement isentropique, i.e.:
De ces relations on en déduit un système d'équations hyperbolique sur et :
0 | |||
0 |
En dérivant la première équation par rapport à t et la seconde par rapport à x, on obtiens par différence l'équation des ondes pour la fluctutation de pression :
Si les deux extrémités du tube sont ouvertes, on peut considérer que la pression y est constante et égale à . La fluctuation de pression vérifie alors une condition de Dirichlet homogène en et . Dans le cas d'extrémités fermés (parois solides), la fluctuation de vitesse y est nulle, et la fluctuation de pression vérifie une condition de Neumann en et (car si ).
Pour un tube ouvert, la fluctuation de pression est solution de l'équation des ondes, avec les conditions aux limites et initiales suivantes:
Cette équation décrit la propagation d'ondes de pression avec une célérité . Le problème modèle associé s'écrit:
En effectuant le changement de variables et , l'équation (3.45) s'écrit:
dont la solution est . La solution générale de l'équation des ondes (3.45) s'écrit:
qui est la somme d'une onde progressive qui se propage avec la célérité et d'une onde régressive qui se propage avec la célérité . Les fonctions et sont déterminées par les conditions initiales et aux limites du problème. Nous étudierons plus particulièrement les deux cas suivants:
On suppose que la perturbation à l'instant initiale est un créneau de largeur centré en , qui peut être définie mathématiquement sous la forme:
Les fonctions et doivent donc vérifier à l'instant initial les deux équations:
dont les solutions, à une constante additive près, s'écrivent:
La solution :
décrit la propagation dans des directions opposées de deux créneaux de hauteur égale à la moitié de la hauteur initiale. Cette solution vérifie les conditions aux limites tant que les créneaux n'ont pas atteint les frontières, i.e. pour . Lorsque le créneau sort du domaine à , la solution (3.46) ne vérifie plus les conditions aux limites puisque et . Pour que ces conditions soient vérifiées, il faut qu'une autre onde de signe opposé rentre dans le domaine en et , de telle sorte que et . Cela correspond à la réflexion de l'onde initiale sur la frontière. Cette onde entrante s'écrit:
Elle correspond à la propagation de deux ondes d'amplitude qui traversent le domaine et ressortent à . A nouveau pour que la solution vérifie les conditions aux limites, il faut qu'une onde de signe opposé rentre dans le domaine. Cette onde s'écrit:
Elle correspond à la propagation de 2 ondes d'amplitude , qui traversent le domaine et qui à se rencontrent pour reformer l'onde initiale . Le processus est ensuite périodique.
La solution est donc une solution périodique, de période , qui correspond à la somme de ces 3 ondes pour :
On a tracé sur la figure (3.23) l'évolution temporelle de cette solution sur une période. On observe bien la réflexion des ondes sur les parois du domaine.
Le programme Maple (3.5.2) permet de tracer l'animation temporelle de cette solution en utilisant la fonction Maple animate.
> restart: with(plots): # Solution exacte equation des ondes: cas 1 > delta:=1/10; > w:=x->Heaviside(x+delta)*Heaviside(delta-x); > u(t,x)=1/2*(w(x-c0*t)+w(x+c0*t))-1/2*(w(x+2*L-c0*t)+ w(x-2*L+c0*t))+1/2*(w(x+4*L-c0*t)+w(x-4*L+c0*t));sol:=rhs(%): > animate(subs(c0=1,L=1,sol),x=-1..1,t=0..4,numpoints=200,frames=100); # Solution exacte equation des ondes: cas 2 > m:=3;Tf:=4*L/c0/(2*m+1); > u(t,x)=cos((2*m+1)*Pi/2*x/L)*cos((2*m+1)*Pi/2*c0/L*t);sol:=rhs(%): > animate(subs(c0=1,L=1,sol),x=-1..1,t=0..4/7,numpoints=200,frames=100);
Dans le cas d'une solution initiale harmonique, i.e. de période multiple de :
la solution s'écrit d'après (3.46):
qui après transformation trigonométrique donne:
C'est une onde stationnaire de période , dont on a tracé la représentation sur la figure (3.24) pour . Le programme Maple (3.5.2) permet de tracer l'animation temporelle de cette solution.
On peut montrer, en utilisant la méthode de séparation de variables, que la solution générale de l'équation des ondes (3.45) est une combinaison linéaire d'ondes stationnaires:
Les coefficients sont alors les coefficients de Fourier de la solution initiale . Ainsi la solution du créneau (3.47) peut aussi s'écrire sous la forme d'une combinaison d'ondes stationnaires (3.49), mais dans ce cas le nombre d'ondes stationnaires à considérer est très grands (infinie en théorie), car la série de Fourier associée converge très lentement.
La discrétisation de l'équation des ondes (3.45) par un schéma de différences finies explicite centré s'écrit:
C'est un schéma explicite qui donne la valeur inconnue à l'étape en fonction des valeurs connues à l'étape et comme indiqué sur le diagramme (3.25).
L'étude de la stabilité se fait classiquement avec la méthode de perturbation de Neumann. L'évolution temporelle d'un mode de Fourier d'une perturbation vérifie l'équation aux différences, soit après simplification par :
En notant le facteur d'amplification du schéma, la relation de récurrence à 2 niveaux précédente conduit à l'équation du second degré suivante:
dans laquelle on a introduit le nombre de Courant :
Le mode de Fourier est donc une combinaison linéaire des racines et de cette équation (3.51):
Si cette perturbation ne croît pas au cours du temps, le schéma est stable. Il faut donc:
D'après l'équation (3.51), le produit des racines est égal à . Donc si les racines sont réelles, l'une des racines est en module supérieure à et le schéma est instable. Par contre si les racines sont complexes conjuguées, leur module est égale à 1 et le schéma est stable. Pour que l'équation (3.51) ait des racines complexes, il faut que son discriminant soit négatif, i.e. que:
soit:
ce qui conduit à la condition classique de Courant:
Le schèma explicite est donc conditionnellement stable avec une condition de stabilité donnée par la condition de Courant (3.54).
Pour étudier la consistance de ce schéma, nous utiliserons le programme Maple (3.5.3).
> restart;with(plots): # Etude de l'equation des ondes > diff(U(t,x),t$2)-c0^2*diff(U(t,x),x$2)=0;eq:=%: # Schema discret D.F. > (U[n+1,i]-2*U[n,i]+U[n-1,i])/dt^2= c0^2*(U[n,i+1]-2*U[n,i]+U[n,i-1])/dx^2; eqh:=%: # Consistance > Uex:=(p,q)->U(t+(p-n)*dt,x+(q-i)*dx); > subs(U[n,i]=Uex(n,i),U[n-1,i]=Uex(n-1,i), U[n,i+1]=Uex(n,i+1),U[n,i-1]=Uex(n,i-1), U[n+1,i]=Uex(n+1,i),lhs(eqh)-rhs(eqh)); rel3:=%: > expand(simplify(rel3-lhs(eq)));rel4:=%: # Develt en serie de Taylor > U(t+dt,x)=convert(mtaylor(U(t+dt,x),[dt],6),diff);S1:=%: > U(t-dt,x)=convert(mtaylor(U(t-dt,x),[dt],6),diff):S2:=%: > U(t,x+dx)=convert(mtaylor(U(t,x+dx),[dx],6),diff):S3:=%: > U(t,x-dx)=convert(mtaylor(U(t,x-dx),[dx],6),diff):S4:=%: # Erreur de tronacture > simplify(subs(S1,S2,S3,S4,rel4)); > ErrT:=collect(%,dt); # transformation a l'aide de l'equation > eq;diff(U(t,x),t$4)=c0^4*diff(U(t,x),x$4); > simplify(subs(%,ErrT));
Le programme fournit l'erreur de troncature suivante:
que l'on peut transformer en dérivant 2 fois l'équation (3.45), et en introduisant le nombre de Courant (3.52):
Le schéma explicite est donc consistant à l'équation des ondes. Il est d'ordre 2 en espace et en temps.
On peut montrer que pour la valeur particulière , l'erreur de troncature est exactement nulle, et la solution exacte est alors solution de l'équation discrète. Pour (limite de stabilité), le schéma explicite fournit donc la solution exacte de l'équation des ondes.
D'après ce calcul d'erreur de troncature, l'équation aux différences finies (3.50) est donc équivalente à l'équation suivante:
avec un coefficient égal à :
C'est une équation d'ondes avec dispersion dont la solution élémentaire s'écrit:
Cette solution correspond à la propagation d'une onde avec une célérité fonction de la pulsation . Dans notre cas est négatif (car ) et les ondes hautes fréquences sont donc ralenties par le schéma numérique.
Pour étudier les propriétés de la solution approchée, nous allons utiliser la même démarche que dans le paragraphe c3disp. Pour cela nous allons considérer le problème de la convection d'une onde , vérifiant les conditions aux limites (i.e. avec ). La solution exacte de l'équation des ondes (3.45) s'écrit:
Cette solution initiale correspond justement à la perturbation dans la méthode de stabilité de Neumann. La solution numérique peut dans ce cas se calculer à partir de la relation (3.53). Elle s'écrit en fonction de la solution initiale au noeud du maillage :
et sont les 2 racines complexes de l'équation 3.51:
en notant . Ce sont deux nombres complexes conjugués de module unité et de phase :
La solution discrète s'écrit sous la forme:
qu'il faut comparer à la solution exacte:
Ces deux expressions décrivent la propagation de l'onde initiale: la première avec la célérité et la seconde avec la célérité .
En effectuant un développement limité de par rapport à , on montre que:
La solution approchée converge vers la solution exacte à l'ordre 2. L'erreur entre la solution exacte et la solution approchée provient essentiellement d'une erreur de dispersion: i.e. la solution numérique se propage sans dissipation, mais avec une célérité légèrement différente de la célérité exacte . Nous avons tracé sur la figure (3.26) la célérité (multipliée par ) de l'onde pour la solution exacte et la solution approchée en fonction de la pulsation . On note que pour les petits nombres d'ondes (i.e. les basses fréquences) l'écart est minime, et que cet écart croit avec le nombre d'onde (i.e avec la fréquence).
La dispersion numérique du schéma augmente donc avec la fréquence. Les ondes hautes fréquences sont ralenties par le schéma numérique puisque leur célérité est plus petite que , comme prédit par l'analyse de consistance.
La résolution numérique du schéma explicite (3.50) nécessite l'initialisation de la solution à et à . Disposant de deux conditions initiales (3.45), la valeur est donnée par la solution initiale :
La valeur de est obtenue à partir d'un développement limité en temps à l'ordre 2 de la solution au premier pas en temps :
La valeur de est fournie par la seconde condition initiale, et on utilise l'équation exacte pour calculer en fonction de , que l'on discrétise ensuite par différences finies centrées:
On obtiens ainsi la valeur de avec une précision , identique à celle du schéma:
Le programme Matlab (3.5.4) implémente ce calcul pour les 2 conditions initiales étudiées: le créneau (lignes 14 à 15) et l'onde stationnaire (lignes 18 à 19). L'initialisation des champs utilise les relations précédentes (3.55) et (3.56) (lignes 22 à 24). Dans les itérations en temps (lignes 27 à 30), on utilise l'équation aux différences (3.50) pour les noeuds internes en utilisant la programmation matricielle Matlab (ligne 27) . Les conditions aux limites fournissent la valeur aux noeuds frontières et (ligne 28).
% resolution equation des ondes clear; L=1; c0=2; N=201; dx=2*L/(N-1); CFL=0.8 dt=CFL*dx/c0; Tf=4*L/c0; nit=round(Tf/dt); X=[-L:dx:L]; % noeuds internes I=[2:N-1]; Ip1=[3:N]; Im1=[1:N-2]; % C.I. cas=1; if (cas==1) % C.I. cas 1 delta=0.05; W=(X<=delta).*(X>=-delta); else % C.I. cas 2 m=20; W=cos((2*m+1)*pi/2*X/L); Ue=W; end % initialisation du calcul Un0=W; Un(I)=W(I)+CFL^2/2*(W(Im1)-2*W(I)+W(Ip1)); Un(1)=0; Un(N)=0; % iteration en temps for it=2:nit Un1(I)=2*Un(I)-Un0(I)+CFL^2*(Un(Im1)-2*Un(I)+Un(Ip1)); Un1(1)=0; Un1(N)=0; Un0=Un; Un=Un1; end;
On a tracé sur la figure (3.27) la solution numérique de la propagation d'un créneau (cas 1) pour les deux valeurs et du nombre de Courant . En comparant ces solutions avec la solution exacte sur la figure (3.23), on constate que pour on obtiens la solution exacte. Pour , des oscillations hautes fréquences apparaissent à l'arrière du créneau pour (i.e. avant réflexion sur la frontière). Cela confirme la dispersion numérique des hautes fréquences par le schéma pour . En effet la solution initiale exacte possède un nombre infinie de modes de Fourier. La solution initiale discrète contient donc des grands nombres d'onde, qui se propagent numériquement avec une vitesse plus faible que . Cela explique l'apparition d'oscillations hautes fréquences à l'arrière du créneau avant la réflexion (figure 3.27a). Après la réflexion sur les frontières (figure 3.27b), ces oscillations ont été réfléchies et ont polluées tout le domaine.
Sur la figure (3.28), on a tracé la solution numérique avec pour une onde stationnaire de petit nombre d'onde ( ) comparée à la solution exacte à deux instants sur une période. On constate que la solution numérique est très proche de la solution exacte (les courbes coïncident), ce qui montre que la dispersion numérique est très faible pour les ondes à base fréquence.
Par contre, pour une onde stationnaire avec un plus grand nombre d'onde ( ), on a comparé sur la figure (3.29) la solution numérique et la solution exacte à un instant , calculée avec les mêmes paramêtres que précédemment. On note sur cette figure le déphasage introduit par la dispersion de la solution numérique, caractérisé pour une onde stationnaire par une amplitude déphasée.