Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Modélisation numérique

Propriétés mathématiques des équations

Nous avons vu que les équations d’Euler régissant l’écoulement adiabatique non visqueux d’un fluide parfait s’écrivent sous la forme vectorielle pour un vecteur d’état W=[Wi]\overrightarrow{W}=[W_i]

Wit+div(Fi(W))=0\frac{\partial W_{i}}{\partial t}+div(\overrightarrow{F_{i}}(\overrightarrow{W}))=0

W=[ρρuρvρwρ(e+12U2)]\overrightarrow{W}=\left[\begin{array}{ccccc} \rho & \rho u & \rho v & \rho w & \rho(e+\frac{1}{2}U^{2})\end{array}\right] est le vecteur d’état, et Fi(W)F_{i}(\overrightarrow{W}) le vecteur flux associé:

Fρ=[ρuρvρw],Fu=[ρu2+pρuvρuw],Fv=[ρuvρv2+pρvw]\overrightarrow{F}_{\rho}=\left[\begin{array}{c} \rho u\\ \rho v\\ \rho w \end{array}\right],\,\overrightarrow{F}_{u}=\left[\begin{array}{c} \rho u^{2}+p\\ \rho uv\\ \rho uw \end{array}\right],\,\overrightarrow{F}_{v}=\left[\begin{array}{c} \rho uv\\ \rho v^{2}+p\\ \rho vw \end{array}\right]\,
Fw=[ρuwρvwρw2+p],Fet=[ρuhtρvhtρwht]\overrightarrow{F}_{w}=\left[\begin{array}{c} \rho uw\\ \rho vw\\ \rho w^{2}+p \end{array}\right],\,\overrightarrow{F}_{e_{t}}=\left[\begin{array}{c} \rho uh_{t}\\ \rho vh_{t}\\ \rho wh_{t} \end{array}\right]

où on a noté et=e+12U2e_{t}=e+\frac{1}{2}U^{2} l’énergie totale par unité de masse, et ht=e+pρ+12U2h_{t}=e+\frac{p}{\rho}+\frac{1}{2}U^{2} l’enthalpie totale par unité de masse.

A ces équations on ajoute l’équation d’état des gaz parfaits:

e=1γ1pρe=\frac{1}{\gamma-1}\frac{p}{\rho}

Analyse dans le cas 1D

Dans le cas d’un écoulement uni-dimensionnel, elles s’écrivent:

ρt+ρux=0ρut+(ρu2+p)x=0t(ρet)+(ρet+p)ux=0\begin{aligned} \frac{\partial\rho}{\partial t}+\frac{\partial\rho u}{\partial x} & = & 0\\ \frac{\partial\rho u}{\partial t}+\frac{\partial(\rho u^{2}+p)}{\partial x} & = & 0\\ \frac{\partial}{\partial t}(\rho e_{t})+\frac{\partial(\rho e_{t}+p)u}{\partial x} & = & 0\end{aligned}

soit sous forme matricielle:

Wt+F(W)x=0\frac{\partial\overrightarrow{W}}{\partial t}+\frac{\partial\overrightarrow{F}(\overrightarrow{W})}{\partial x}=0

En introduisant la matrice jacobienne des flux: i.e. la dérivée du vecteur flux F(W)\overrightarrow{F}(\overrightarrow{W}) par rapport au vecteur d’état W=[ρ,ρu,ρet]\overrightarrow{W}=[\rho,\rho u,\rho e_{t}]

A=FW\mathcal{A}=\frac{\partial F}{\partial W}

cette équation s’écrit sous la forme quasi-linéaire suivante:

Wt+AWx=0\frac{\partial\overrightarrow{W}}{\partial t}+\mathcal{A}\frac{\partial\overrightarrow{W}}{\partial x}=0

Un calcul formel fournit l’expression de cette Jacobienne

A=[010γ32u2(3γ)uγ1u(γ22u21γ1c2)32γ2u2+1γ1c2uγ]\mathcal{A}=\left[\begin{array}{ccc} 0 & 1 & 0\\ \frac{\gamma-3}{2}u^{2} & (3-\gamma)u & \gamma-1\\ u\,(\frac{\gamma-2}{2}u^{2}-\frac{1}{\gamma-1}c^{2}) & \frac{3-2\gamma}{2}u^{2}+\frac{1}{\gamma-1}c^{2} & u\gamma \end{array}\right]

uu est la vitesse du fluide (supposée >0>0), et c=γpρc=\sqrt{\gamma\frac{p}{\rho}} la célérité du son.

Cette matrice possède 3 valeurs propres réelles

λ=[uc,u,u+c]\lambda=[u-c,\,u,\,u+c]

ce qui traduit la présence de 3 courbes caractéristiques le long desquelles se propagent les perturbations.

Ces équations forment donc un système hyperbolique non linéaire. En notant R\mathcal{R} la matrice des vecteurs propres à droite ri\overrightarrow{r_{i}}:

Ari=λiri\mathcal{A}\overrightarrow{r_{i}}=\lambda_{i}\overrightarrow{r_{i}}

la diagonalisation de A\mathcal{A} s’écrit:

A=RΛR1\mathcal{A}=\mathcal{R}\Lambda\mathcal{R}^{-1}

Λ\Lambda est la matrice diagonale des vecteurs propres λi\lambda_{i}. En multipliant l’équation (8) par R1\mathcal{R}^{-1}, on obtient:

R1Wt+ΛR1Wx=0\mathcal{R}^{-1}\frac{\partial\overrightarrow{W}}{\partial t}+\Lambda\mathcal{R}^{-1}\frac{\partial\overrightarrow{W}}{\partial x}=0

On introduit le changement de variable

V=R1W\overrightarrow{V}=\mathcal{R}^{-1}\overrightarrow{W}

et le vecteur V\overrightarrow{V} est appelé “variables caractéristiques”. Le système d’équations transformé est appelé “équations caractéristiques”:

R1RVt+ΛR1RVx=0\mathcal{R}^{-1}\frac{\partial\mathcal{R}\overrightarrow{V}}{\partial t}+\Lambda\mathcal{R}^{-1}\frac{\partial\mathcal{R}\overrightarrow{V}}{\partial x}=0

Dans le cas de petites perturbations, on peut simplifier ce système en considérant que la matrice R\mathcal{R} est constante ainsi que les valeurs propres Λ\Lambda:

Vt+ΛVx=0\frac{\partial\overrightarrow{V}}{\partial t}+\Lambda\frac{\partial\overrightarrow{V}}{\partial x}=0

Ce système caractéristique est un système de 3 équations scalaires indépendantes de type advection:

Vit+λiVix=0\frac{\partial V_{i}}{\partial t}+\lambda_{i}\frac{\partial V_{i}}{\partial x}=0

Cette équation traduit le fait que la composante ViV_{i} est constante le long de la droite caractéristique de pente dxdt=λi\frac{dx}{dt}=\lambda_{i}, i.e.:

Vi(x,t)=Vi(xλit)V_{i}(x,t)=V_{i}(x-\lambda_{i}t)

La solution générale de (16) est donc une combinaison linéaire de ces ondes caractéristiques, soit en revenant aux variables d’état W\overrightarrow{W}:

W=i=13Vi(xλt)ri\overrightarrow{W}=\sum_{i=1}^{3}V_{i}(x-\lambda t)\,\overrightarrow{r_{i}}

Les perturbations de la solution se propagent donc le long de ces directions caractéristiques.

Dans le cas non-linéaire, la matrice R\mathcal{R} n’est plus constante, et l’analyse précédente n’est plus exacte. On peut cependant la considérer comme une approximation au premier ordre et en déduire les propriétés de la solution. Le système hyperbolique (8) possède 3 valeurs propres λi=λi(W)\lambda_{i}=\lambda_{i}(\overrightarrow{W}), qui dépendent de la solution W\overrightarrow{W}. Associées à ces 3 valeurs propres, on a des courbes caractéristiques Ci=Ci(W)\mathcal{C}_{i}=\mathcal{C}_{i}(\overrightarrow{W}) de pente λi\lambda_{i} qui sont aussi fonctions de la solution W\overrightarrow{W}. Le long de ces caractéristiques se propagent les perturbations de la solution sous forme d’ondes non-linéaires.

propagation d’une perturbation

Figure 1:propagation d’une perturbation

Considérons une perturbation située en x=0x=0 à l’instant tt. Notons ss la vitesse de propagation de la perturbation, WLW_{L} l’état du fluide à gauche (left) et WRW_{R} l’état à droite (right). La solution W\overrightarrow{W} vérifie les équations d’Euler

Wt+F(W)x=0\frac{\partial\overrightarrow{W}}{\partial t}+\frac{\partial\overrightarrow{F}(\overrightarrow{W})}{\partial x}=0

En intégrant cette équation sur un domaine [x0,+x0][-x_{0},+x_{0}] autour de la perturbation, on obtient l’équation:

ddtx0+x0Wdx=F(WL)F(WR)\frac{d}{dt}\int_{-x_{0}}^{+x_{0}}\overrightarrow{W}\,dx=\overrightarrow{F}(\overrightarrow{W_{L}})-\overrightarrow{F}(\overrightarrow{W_{R}})

D’autre part si x0x_{0} est grand devant sdts\,dt, la variation temporelle de W\overrightarrow{W} dans [x0,+x0][-x_{0},+x_{0}] s’écrit:

x0+x0W(t+dt)dxx0+x0W(t)dx=[WL(x0+sdt)+WR(x0sdt)][WLx0+WRx0]\int_{-x_{0}}^{+x_{0}}\overrightarrow{W}(t+dt)\,dx-\int_{-x_{0}}^{+x_{0}}\overrightarrow{W}(t)\,dx=\left[\overrightarrow{W_{L}}(x_{0}+sdt)+\overrightarrow{W_{R}}(x_{0}-sdt)\right]-\left[\overrightarrow{W_{L}}x_{0}+\overrightarrow{W_{R}}x_{0}\right]

d’où:

ddtx0+x0Wdx=s[WLWR]\frac{d}{dt}\int_{-x_{0}}^{+x_{0}}\overrightarrow{W}\,dx=s\left[\overrightarrow{W_{L}}-\overrightarrow{W_{R}}\right]

On retrouve les relations de saut d’Hugoniot:

[F(WL)F(WR)]=s[WLWR]\left[\overrightarrow{F}(\overrightarrow{W_{L}})-\overrightarrow{F}(\overrightarrow{W_{R}})\right]=s\left[\overrightarrow{W_{L}}-\overrightarrow{W_{R}}\right]

qui relie la vitesse de propagation de la perturbation ss à l’état de part et d’autre de la perturbation WL\overrightarrow{W_{L}} et WR\overrightarrow{W_{R}}. Cette vitesse de propagation ss n’est donc pas quelconque. En effectuant une analyse de perturbation au premier ordre, i.e. en développant F(WL)\overrightarrow{F}(\overrightarrow{W_{L}}) au premier ordre au voisinage de WR\overrightarrow{W_{R}}:

F(WL)=F(WR)+F(W)W(WLWR)=F(WR)+A(WLWR)\begin{aligned} \overrightarrow{F}(\overrightarrow{W_{L}}) & = & \overrightarrow{F}(\overrightarrow{W_{R}})+\frac{\partial\overrightarrow{F}(\overrightarrow{W})}{\partial\overrightarrow{W}}(\overrightarrow{W_{L}}-\overrightarrow{W_{R}})\\ & = & \overrightarrow{F}(\overrightarrow{W_{R}})+\mathcal{A}(\overrightarrow{W_{L}}-\overrightarrow{W_{R}})\end{aligned}

ce qui fournit la relation de saut pour une petite perturbation

A(WLWR)=s[WLWR]\mathcal{A}(\overrightarrow{W_{L}}-\overrightarrow{W_{R}})=s\left[\overrightarrow{W_{L}}-\overrightarrow{W_{R}}\right]

Clairement cette relation montre que le saut [WLWR]\left[\overrightarrow{W_{L}}-\overrightarrow{W_{R}}\right] doit être proportionnel à un vecteur propre ri\overrightarrow{r_{i}} de A\mathcal{A}, et que la vitesse de propagation ss est la valeur propre λi\lambda_{i} de A\mathcal{A} associée. Les valeurs possibles de ss sont donc [uc,u,u+c][u-c,u,u+c].

Les relations de saut d’Hugoniot (24) s’écrivent:

ρlulρrur=s(ρlρr)ρlul2+plρrur2pr=s(ρlulρrur)ul(ρletl+pl)ur(ρretr+pr)=s(ρletlρretr)\begin{aligned} \rho_{l}u_{l}-\rho_{r}u_{r} & = & s\,(\rho_{l}-\rho_{r})\nonumber \\ \rho_{l}u_{l}^{2}+p_{l}-\rho_{r}u_{r}^{2}-p_{r} & = & s\,(\rho_{l}u_{l}-\rho_{r}u_{r})\\ u_{l}(\rho_{l}et_{l}+p_{l})-u_{r}(\rho_{r}et_{r}+p_{r}) & = & s\,(\rho_{l}et_{l}-\rho_{r}et_{r})\nonumber \end{aligned}

Ces relations traduisent le bilan de la masse, la quantité de mouvement et de l’énergie dans un repère lié au choc, i.e. se déplaçant à la vitesse ss de propagation de la perturbation. Pour s=0s=0, on retrouve les équations du choc droit stationnaire, qui correspond à la valeur propre uc=0u-c=0 (i.e. une vitesse sonique dans le choc).

Il existe 3 types de discontinuité possible dans ce système d’équations d’Euler:

  1. discontinuité de contact: qui est associée à la valeur propre s=us=u. Dans ce cas le système (27) conduit à ul=uru_{l}=u_{r}et pr=plp_{r}=p_{l}, i.e. il n’y a pas de discontinuité sur la vitesse et la pression. La seule discontinuité possible est une discontinuité sur la masse volumique ρlρr\rho_{l}\neq\rho_{r}. Dans ce cas le fluide à gauche ne se mélange pas avec le fluide à droite (puisqu’on a pas pris en compte de mécanisme de diffusion), et la séparation entre les deux se propage à la vitesse du fluide.

discontinuité de contact

Figure 2:discontinuité de contact

  1. choc de compression: qui est associé aux valeurs propres s=u+cs=u+c ou s=ucs=u-c. Dans ce cas on a une discontinuité de vitesse, de pression et de masse volumique. D’après le second principe de la thermodynamique, seul un choc de compression est possible: i.e la pression du fluide augmente à travers un choc. Le cas d’un choc de détente est théoriquement possible dans le système (27), mais il viole le second principe de la thermodynamique (i.e. dans ce cas l’entropie SS diminue).

choc droit de compression

Figure 3:choc droit de compression

  1. ondes de détente (ou de raréfaction): qui sont associées aux valeurs propres s=u+cs=u+c ou s=ucs=u-c. Le choc de détente étant impossible physiquement, la détente (i.e. une diminution de pression) ne s’opère pas à travers une discontinuité (choc), mais à travers une série d’ondes divergentes qui assure la continuité de la vitesse, pression et masse volumique (on une famille de courbes caractéristiques divergentes).

onde de détente

Figure 4:onde de détente

Dans ce cas les caractéristiques issues de la discontinuité en x=0x=0 sont les courbes x=stx=st (ss variant de sls_{l} à srs_{r}). Dans cette zone, on cherche donc une solution de similarité sous la forme W=W(ξ)\overrightarrow{W}=\overrightarrow{W}(\xi) avec ξ=xt\xi=\frac{x}{t}. Cette solution vérifie les équations d’Euler:

Wt+F(W)x=0\frac{\partial\overrightarrow{W}}{\partial t}+\frac{\partial\overrightarrow{F}(\overrightarrow{W})}{\partial x}=0

qui après le changement de variable en ξ\xi s’écrivent:

ξdWdξ=FWdWdξ\xi\frac{d\overrightarrow{W}}{d\xi}=\frac{\partial\overrightarrow{F}}{\partial\overrightarrow{W}}\frac{d\overrightarrow{W}}{d\xi}

ce qui traduit le fait que dWdξ\frac{d\overrightarrow{W}}{d\xi} est proportionnel à un vecteur propre de la matrice jacobienne des flux A\mathcal{A}, et que ξ\xi est une valeur propre de A\mathcal{A}.

Pour les équations d’Euler en 2D où 3D, il existe un autre type de discontinuité lié à une discontinuité de la vitesse dans la direction perpendiculaire à l’écoulement.

  1. ligne de glissement: c’est la discontinuité de la vitesse, que l’on observe sur les parois où le fluide possède une vitesse de glissement par rapport à la paroi (car on a négligé les effets de viscosité).

Tube à choc

On considère un tube de longueur LL, séparé en son milieu par une membrane avec d’un coté un gaz à haute pression (p0,ρ0p_{0},\rho_{0}) et de l’autre un gaz à basse pression (p1,ρ1p_{1},\rho_{1}).

tube à choc

Figure 5:tube à choc

On enlève la membrane à l’instant t=0t=0. On introduit donc une discontinuité de pression, masse volumique et température dans le tube.

solution initiale dans le  tube à choc

Figure 6:solution initiale dans le tube à choc

Due à la différence de pression, le gaz de la chambre haute pression va se déplacer dans la chambre basse pression. Une zone entre les 2 gaz se met en mouvement avec une vitesse u3>0u_{3}>0 et une pression p3p_{3}: p1>p3>p2p_{1}>p_{3}>p_{2} avec en amont la propagation d’une onde de choc avec une célérité u+c=12(u3+c3+c2)u+c=\frac{1}{2}(u_{3}+c_{3}+c_{2}). En arrière de cette zone se développent des ondes de détente de pente ucu-c: c1<uc<u3c3-c_{1}<u-c<u_{3}-c_{3}. Enfin, si on néglige la diffusion, les deux gaz ne se mélangent pas, et la séparation entre les deux correspond à une discontinuité de contact qui se propage avec la vitesse u=u3u=u_{3}.

On retrouve les 3 ondes pouvant se développer dans les équations d’Euler:

  1. une onde de choc de célérité u+cu+c

  2. des ondes de détente de célérité ucu-c

  3. une discontinuité de contact de célérité uu

La solution des équations d’Euler pour ce problème est donnée sur les figures suivantes à l’instant t=L4c1t=\frac{L}{4c_{1}}, pour un rapport de pression et de masse volumique de 3.

solution à t=\frac{L}{4c_{1}} dans le  tube à choc

Figure 7:solution à t=L4c1t=\frac{L}{4c_{1}} dans le tube à choc

Sur l’animation suivante, on a tracé l’évolution de la trajectoire des particules fluides dans un tube à choc.

tube à choc

Méthodes numériques

Avant d’étudier les méthodes numériques pour les équations d’Euler, nous ferons quelques rappels sur la simulation numérique de problème d’advection linéaire.

Problème linéaire

Considérons l’équation d’advection linéaire suivante:

ut+Vux=0\frac{\partial u}{\partial t}+V\frac{\partial u}{\partial x}=0

Pour calculer une solution approchée uinu_{i}^{n} de la solution exacte u(x,t)u(x,t), on introduit un maillage en espace de pas dxdx et une discrétisation en temps de pas dtdt. Classiquement, on calcule la solution approchée uinu_{i}^{n} par discrétisation différences finies de l’équation exacte. La solution approchée uinu_{i}^{n} est alors interprétée comme l’approximation de la solution exacte au point de maillage x=idxx=idx, t=ndtt=ndt:

uinu(idx,ndt)u_{i}^{n}\approx u(idx,ndt)

On peut cependant donner une autre interprétation de uinu_{i}^{n} (dans un cadre volumes finis). La solution approchée est une approximation de la valeur moyenne de la solution exacte dans la cellule entourant le noeud ii:

uin1dxxidx2xi+dx2u(x,t=ndt)dxu_{i}^{n}\approx\frac{1}{dx}\int_{x_{i}-\frac{dx}{2}}^{x_{i}+\frac{dx}{2}}u(x,t=ndt)dx

C’est cette interprétation que nous utiliserons lors de l’application des schémas à des équations de bilan (équation d’Euler), puisqu’elle va permettre de caractériser les propriétés de conservation du schéma numérique.

Pour étudier la convergence de la solution numérique uinu_{i}^{n} du schéma aux différences finies vers la solution exacte u(x,t)u(x,t) de l’équation, on utilise un résultat d’analyse du à Lax (Richtmyer et Norton 1967):

Schéma explicite centré

Le schéma le plus simple est le schéma explicite centré, qui utilise une discrétisation centrée de la dérivée spatiale. Il s’écrit :

uin+1uindt+Vui+1nui1n2dx=0\frac{u_{i}^{n+1}-u_{i}^{n}}{dt}+V\,\frac{u_{i+1}^{n}-u_{i-1}^{n}}{2dx}=0

C’est un schéma explicite qui calcule la valeur inconnue uin+1u_{i}^{n+1} à l’étape tn+1t^{n+1} en fonction des valeurs connues {uin,ui+1n,ui1n}\{u_{i}^{n},u_{i+1}^{n},u_{i-1}^{n}\} à l’étape tnt^{n}.

Pour étudier la stabilité, on calcule le facteur d’amplification GG du schéma. En introduisant le paramètre sans dimension CFLC_{FL} ou nombre de Courant Fredrich Lewis, dit aussi nombre de Courant:

CFL=VdtdxC_{FL}=\frac{V\,dt}{dx}

le carré du module du facteur d’amplification GG du schéma vérifie:

G2=1+CFL2sin2y>1y\left|G\right|^{2}=1+C_{FL}^{2}\sin^{2}y\,>1\,\,\,\forall y

Le module de GG est donc toujours plus grand que 1 et le schéma est inconditionnellement instable.

Pour comprendre la raison de cette instabilité, nous allons faire l’étude de la consistance de ce schéma. L’erreur de troncature du schéma est la suivante:

ErrT=122ut2dt+16V3ux3dx2+O(dt2,dx3)ErrT=\frac{1}{2}\frac{\partial^{2}u}{\partial t^{2}}\,dt+\frac{1}{6}V\,\frac{\partial^{3}u}{\partial x^{3}}\,dx^{2}+O(dt^{2},dx^{3})

Le schéma est donc bien consistant à l’équation (30), mais instable. Pour comprendre cette instabilité, étudions le premier terme de l’erreur:

122ut2dt\frac{1}{2}\frac{\partial^{2}u}{\partial t^{2}}\,dt

En dérivant l’équation (30) par rapport au temps, nous pouvons en déduire (en utilisant à nouveau l’équation (30) que la solution u(x,t)u(x,t) vérifie:

2ut2=V2utx=V22ux2\frac{\partial^{2}u}{\partial t^{2}}=-V\frac{\partial^{2}u}{\partial t\partial x}\,=V^{2}\frac{\partial^{2}u}{\partial x^{2}}\,

d’où l’expression du premier terme (37) de l’erreur de troncature:

V222ux2dt\frac{V^{2}}{2}\frac{\partial^{2}u}{\partial x^{2}}\,dt

Par définition de l’erreur de troncature, qui est l’écart entre l’équation approchée EqhEq^{h} et l’équation exacte EqEq, calculée pour la solution exacte u(x,t)u(x,t), on a donc:

EqhEq=V222ux2dt+O(dx2,dt2)Eq^{h}-Eq=\frac{V^{2}}{2}\frac{\partial^{2}u}{\partial x^{2}}\,dt+O(dx^{2},dt^{2})

Avec ce schéma explicite centré, on ne résout donc pas l’équation exacte, mais l’équation équivalente suivante (en notant κ=v2dt2\kappa=-v^{2}\frac{dt}{2}):

Eqhut+Vuxκ2ux2=0Eq^{h}\approx\frac{\partial u}{\partial t}+V\,\frac{\partial u}{\partial x}-\kappa\frac{\partial^{2}u}{\partial x^{2}}=0

C’est une équation de convection-diffusion classique, mais avec un coefficient de diffusion négatif (κ<0)(\kappa<0), qui au lieu de diffuser l’énergie de la solution, apporte indéfiniment de l’énergie au système. En effet, en décomposant la solution initiale en série de Fourier:

u0(x)=kCkeIωkxu_{0}(x)=\sum_{k}C_{k}e^{I\omega_{k}x}

on vérifie que la solution de l’équation (41)s’écrit:

u(x,t)=kCkeIωk(xVt)eκω2tu(x,t)=\sum_{k}C_{k}e^{I\omega_{k}(x-V\,t)}e^{-\kappa\omega^{2}t}

Pour κ=0\kappa=0, on retrouve la solution générale de l’équation de convection pure (30), qui est convectée sans déformation. Si κ>0\kappa>0, la solution est convectée mais décroît exponentiellement (problème de convection diffusion classique). Par contre si κ<0\kappa<0 la solution est convectée mais croit exponentiellement. Ce dernier cas correspond à la solution numérique du schéma explicite centré (33), qui croît exponentiellement et est instable.

Schéma explicite d’ordre 2 avec diffusion numérique

Le schéma explicite (33) étant instable parce qu’insuffisamment diffusif, on peut le rendre stable en ajoutant un terme de diffusion numérique qui va compenser le premier terme de l’erreur de troncature (39), responsable de l’instabilité. Pour cela, il suffit de retrancher à l’équation (33) la discrétisation du premier terme de l’erreur de troncature (39):

V222ux2dtV2dt2ui1n2uin+ui+1ndx2\frac{V^{2}}{2}\frac{\partial^{2}u}{\partial x^{2}}\,dt\approx\frac{V^{2}dt}{2}\,\frac{u_{i-1}^{n}-2u_{i}^{n}+u_{i+1}^{n}}{dx^{2}}

Le schéma ainsi obtenu s’écrit:

uin+1uindt+Vui+1nui1n2dxV2dt2ui1n2uin+ui+1ndx2=0\frac{u_{i}^{n+1}-u_{i}^{n}}{dt}+V\,\frac{u_{i+1}^{n}-u_{i-1}^{n}}{2dx}-\frac{V^{2}dt}{2}\,\frac{u_{i-1}^{n}-2u_{i}^{n}+u_{i+1}^{n}}{dx^{2}}=0

C’est un schéma de Lax-Wendroff. Ce schéma est à la base de nombreux schémas utilisés en mécanique des fluides pour traiter les problèmes à convection dominante.

C’est un schéma explicite qui calcule la valeur inconnue uin+1u_{i}^{n+1} à l’étape tn+1t^{n+1} en fonction des valeurs connues {uin,ui+1n,ui1n}\{u_{i}^{n},u_{i+1}^{n},u_{i-1}^{n}\} à l’étape tnt^{n}

L’analyse de stabilité fournit le carré du module du facteur d’amplification GG du schéma, en posant z=cosyz=\cos y:

G2=(CFL4CFL2)(z1)2+1\left|G\right|^{2}=(C_{FL}^{4}-C_{FL}^{2})(z-1)^{2}+1

C’est un polynôme de degré 2 en zz, que l’on étudie pour z[1,1]z\in[-1,1]. En z=1z=1, ce polynôme vaut 1 et sa dérivée s’annule. La condition de stabilité G2<1z[1,1]\left|G\right|^{2}<1\,\,\forall z\in[-1,1] impose donc que sa valeur en z=1z=-1 soit plus petite que 1:

Gz=12=4(CFL4CFL2)+1=(12CFL2)2<1\left|G\right|_{z=-1}^{2}=4(C_{FL}^{4}-C_{FL}^{2})+1=(1-2C_{FL}^{2})^{2}<1

ce qui impose la condition de stabilité classique sur le nombre de Courant:

CFL<1C_{FL}<1

L’erreur de troncature, qui s’écrit, en tenant compte de la propriété (38) :

ErrT=(163ut3)dt2+16V3ux3dx2+O(dt3,dx3)ErrT=\left(\frac{1}{6}\frac{\partial^{3}u}{\partial t^{3}}\right)dt^{2}+\frac{1}{6}V\,\frac{\partial^{3}u}{\partial x^{3}}\,dx^{2}+O(dt^{3},dx^{3})

On le vérifie numériquement en calculant la convection d’une tache gaussienne

u0(x)=e(xx0σ)2u_{0}(x)=e^{-\left(\frac{x-x_{0}}{\sigma}\right)^{2}}

convectée par un champ de vitesse constant V=1V=1. La solution exacte est u(x,t)=u0(xVt)u(x,t)=u_{0}(x-V\,t).

solution numérique Lax Wendroff

Figure 9:solution numérique Lax Wendroff

Erreur solution Lax Wendroff

Figure 10:Erreur solution Lax Wendroff

Sur la figure Figure 9, on a tracé la solution numérique pour différents CFLC_{FL} à t=0.5t=0.5. On constate la très bonne coïncidence entre la solution numérique et la solution exacte pour tous les CFL1C_{FL}\leq1. Pour faire une analyse plus fine, on a tracé sur la figure Figure 10 l’erreur entre la solution exacte et la solution numérique. On constate que l’erreur est très faible (<6<6%). Cette erreur croît lorsque le CFLC_{FL} décroît pour atteindre une limite (obtenue dès CFL=0.1C_{FL}=0.1 puisque les courbes pour CFL=0.1C_{FL}=0.1 et CFL=0.001C_{FL}=0.001 sont indiscernables). Cette erreur est liée à l’erreur de discrétisation spatiale, et décroît lorsque l’on augmente NN.

Pour CFL=1C_{FL}=1, l’erreur est nulle, et on obtient dans ce cas la solution exacte. En effet l’équation (45) conduit pour CFL=1C_{FL}=1 à:

uin+1=ui1nu_{i}^{n+1}=u_{i-1}^{n}

qui est la solution exacte car les deux points (i,n+1)(i,n+1) et (i,n)(i,n) se trouvent sur la même trajectoire, puisque:

idxV(n+1)dt=(i1)dxVndtidx-V(n+1)dt=(i-1)dx-Vndt

Schéma explicite décentré d’ordre 1

Une autre façon de stabiliser le schéma explicite (33), est d’utiliser une discrétisation décentrée du terme convectif VuxV\,\frac{\partial u}{\partial x}. Ce terme représente la convection de uu par le champ de vitesse VV, et si V>0V>0 la convection transporte du scalaire uu de la gauche vers la droite (et inversement si V<0V<0). D’où l’idée d’utiliser une discrétisation décentrée de ce terme qui, si V>0V>0, fait intervenir les valeurs de uu aux noeuds amonts i1i-1 et ii :

VuxVuiui1dx siV>0V\,\frac{\partial u}{\partial x}\approx V\,\frac{u_{i}-u_{i-1}}{dx}\,\,\mbox{\, si\,}V>0

et, si V<0V<0 , les valeurs de uu aux noeuds avals i+1i+1 et ii:

VuxVui+1uidx siV<0V\,\frac{\partial u}{\partial x}\approx V\,\frac{u_{i+1}-u_{i}}{dx}\,\,\mbox{\, si\,}V<0

Le schéma ainsi obtenu s’écrit pour V>0V>0:

uin+1uindt+Vuinui1ndx=0\frac{u_{i}^{n+1}-u_{i}^{n}}{dt}+V\,\frac{u_{i}^{n}-u_{i-1}^{n}}{dx}=0

C’est un schéma explicite qui donne la valeur inconnue uin+1u_{i}^{n+1} à l’étape tn+1t^{n+1} en fonction des valeurs connues {uin,ui1n}\{u_{i}^{n},u_{i-1}^{n}\} à l’étape tnt^{n}. On note que la valeur aval ui+1nu_{i+1}^{n} n’intervient pas dans ce cas pour le calcul de uin+1u_{i}^{n+1}.

L’analyse de stabilité fournit le carré du module du facteur d’amplification GG du schéma, qui s’écrit:

G2=2(CFLCFL2)(z1)+1\left|G\right|^{2}=2(C_{FL}-C_{FL}^{2})(z-1)+1

C’est une fonction affine de zz que l’on étudie pour z[1,1]z\in[-1,1], qui vaut 1 en z=1z=1. La condition de stabilité G2<1z[1,1]\left|G\right|^{2}<1\,\,\forall z\in[-1,1] impose donc que sa valeur en z=1z=-1 soit plus petite que 1:

Gz=12=(12CFL)2<1\left|G\right|_{z=-1}^{2}=(1-2C_{FL})^{2}<1

ce qui conduit à la condition de stabilité classique:

CFL<1C_{FL}<1

L’erreur de troncature s’écrit:

ErrT=122ut2dt12V2ux2dx+163ut3dt2+16V3ux3dx2+O(dt3,dx3)ErrT=\frac{1}{2}\frac{\partial^{2}u}{\partial t^{2}}dt-\frac{1}{2}V\,\frac{\partial^{2}u}{\partial x^{2}}\,dx+\frac{1}{6}\frac{\partial^{3}u}{\partial t^{3}}\,dt^{2}+\frac{1}{6}V\,\frac{\partial^{3}u}{\partial x^{3}}\,dx^{2}+O(dt^{3},dx^{3})

soit en tenant compte de la propriété (38) :

ErrT=12V22ux2dt12V2ux2dx+163ut3dt2+16V3ux3dx2+O(dt3,dx3)ErrT=\frac{1}{2}V^{2}\frac{\partial^{2}u}{\partial x^{2}}dt-\frac{1}{2}V\,\frac{\partial^{2}u}{\partial x^{2}}\,dx+\frac{1}{6}\frac{\partial^{3}u}{\partial t^{3}}\,dt^{2}+\frac{1}{6}V\,\frac{\partial^{3}u}{\partial x^{3}}\,dx^{2}+O(dt^{3},dx^{3})

Le terme d’ordre 1 de l’erreur de troncature est donc un terme de diffusion:

κ2ux2-\kappa\frac{\partial^{2}u}{\partial x^{2}}

Le schéma explicite décentré est donc équivalent à l’équation de convection diffusion:

Eqhut+Vuxκ2ux2=0Eq^{h}\approx\frac{\partial u}{\partial t}+V\,\frac{\partial u}{\partial x}-\kappa\frac{\partial^{2}u}{\partial x^{2}}=0

avec un coefficient de diffusion numérique κ\kappa:

κ=12(VdxV2dt)=Vdx2(1CFL\kappa=\frac{1}{2}(V\,dx-V^{2}dt)=\frac{V\,dx}{2}(1-C_{FL}

Mais c’est un schéma diffusif. La solution numérique est convectée, mais décroît exponentiellement proportionnellement à un coefficient de “diffusion numériqueκ\kappa (63) si la condition de stabilité (58) est vérifiée. Si la condition de stabilité (58) n’est pas vérifiée, la solution numérique croît exponentiellement puisque ce coefficient κ\kappa devient négatif, ce qui explique pourquoi le schéma devient instable.

On le vérifie numériquement sur le problème de la convection de la gaussienne.

solution numérique schéma décentré

Figure 11:solution numérique schéma décentré

Sur la figure Figure 11, on a tracé la solution numérique pour différents CFLC_{FL} à t=0.5t=0.5. On constate l’importante diffusion numérique de la solution, qui augmente lorsque le CFLC_{FL}diminue pour atteindre une limite (correspondant à un coefficient de diffusion numérique κ=Vdx2\kappa=\frac{Vdx}{2}). On note aussi le cas particulier CFL=1C_{FL}=1, où la solution numérique coïncide avec la solution exacte, puisque dans ce cas particulier le coefficient de diffusion numérique κ\kappa est nul.

Propriétés de dispersion

Nous avons vu dans les paragraphes précédents que la faible diffusion numérique d’un schéma permet d’assurer que la solution numérique est convectée sans être trop amortie. Pour les équations hyperboliques (équation de convection pure), il faut aussi que la solution numérique soit convectée à la bonne vitesse avec très peu de déphasage par rapport à la solution exacte. Pour étudier cette dispersion numérique, nous allons considérer le cas de la convection d’une onde u0(x)=eIωxu_{0}(x)=e^{I\omega x}. La solution exacte de l’équation de convection pure (30) s’écrit:

u(x,t)=u0(xVt)=eIωxeIωVtu(x,t)=u_{0}(x-V\,t)=e^{I\,\omega x}e^{-I\,\omega V\,t}

On note que cette solution initiale correspond justement à la perturbation ϵin\epsilon_{i}^{n} dans la méthode de stabilité de Neumann. L’étude de stabilité fournit le coefficient d’amplification GG du schéma, qui permet de calculer ϵin\epsilon_{i}^{n} en fonction de la perturbation initiale ϵi0\epsilon_{i}^{0}:

ϵin=Gϵin1=(G)nϵi0\epsilon_{i}^{n}=G\,\epsilon_{i}^{n-1}=(G)^{n}\epsilon_{i}^{0}

La solution numérique uinu_{i}^{n} pour la convection d’une onde peut donc s’écrire en fonction de la solution initiale u0u_{0} au noeud ii du maillage:

uin=(G)nu0(idx)=(G)neIωidxu_{i}^{n}=(G)^{n}u_{0}(idx)=(G)^{n}e^{I\omega idx}

Le facteur d’amplification GG est un nombre complexe d’amplitude AA et de phase ϕ-\phi:

G=AeIϕG=Ae^{-I\phi}

et la solution numérique uinu_{i}^{n} s’écrit sous la forme:

uin=(A)neInϕeIωidxu_{i}^{n}=(A)^{n}e^{-In\phi}e^{I\omega idx}

En comparant cette expression à la solution exacte au noeud ii:

u(idx,ndt)=eInωVdteIωidxu(idx,ndt)=e^{-In\omega V\,dt}e^{I\omega idx}

on note que AA, qui est le module de GG, nous donne l’amortissement de l’onde et la différence φ=Vωdtϕ\varphi=V\omega dt-\phi sa dispersion. En notant que ϕ\phi dépend de ωdx\omega dx , on pose y=ωdxy=\omega dx et on a Vωdt=CFLyV\omega dt=C_{FL}y. La dispersion φ\varphi est la fonction de yy suivante:

φ=CFLyϕ(y)\varphi=C_{FL}y-\phi(y)

Pour un maillage de N+1N+1 points, les modes possibles de la solution numérique correspondent à des pulsations ω=kπL\omega=\frac{k\pi}{L} (kk de 1 à N1N-1) et donc yy varie de 0 à NπLdx=π\frac{N\pi}{L}dx=\pi. On trouve pour le schéma décentré et le schéma explicite d’ordre 2, en utilisant Maple pour le calcul de φ\varphi:

  1. schéma 1: décentré d’ordre 1 (55):

    φ=CFLyarctanCFLsiny1+CFL2(cosy1)\varphi=C_{FL}y-\arctan\frac{C_{FL}\sin y}{1+C_{FL}^{2}(\cos y-1)}
  2. schéma 2: Lax-Wendroff explicite d’ordre 2 (45):

    φ=CFLyarctanCFLsiny1+CFL(cosy1)\varphi=C_{FL}y-\arctan\frac{C_{FL}\sin y}{1+C_{FL}(\cos y-1)}
dispersion des schémas

Figure 12:dispersion des schémas

On a tracé sur la figure Figure 12 les courbes de φ\varphi pour différentes valeurs du CFLC_{FL}.

On constate sur cette figure que le schéma décentré est moins dispersif que le schéma d’ordre 2. Pour valider cette analyse, nous avons effectuer la simulation numérique de la convection d’une onde.

Le champ initial est une onde sinmπxL\sin\frac{m\pi x}{L} (lignes 10 à 11). Les schémas étudiés sont des schémas explicites du type:

uin+1=c1ui1n+c2uin+c3ui+1nu_{i}^{n+1}=c_{1}u_{i-1}^{n}+c_{2}u_{i}^{n}+c_{3}u_{i+1}^{n}

Le schéma numérique étant explicite, la solution s’obtient simplement à chaque itération par multiplication matricielle:

Un+1=CUnU^{n+1}=\mathcal{C}U^{n}

Pour ce calcul, il faut introduire des conditions aux limites. La longueur L=πL=\pi du domaine est un multiple de la longueur d’onde de l’onde initiale Lmπ\frac{L}{m\pi}. La solution vérifie donc des conditions de périodicité en x=0x=0 et x=Lx=L:

u(0,t)=u(L,t),ux(0,t)=ux(L,t)u(0,t)=u(L,t)\,\,\,,\,\,\,\frac{\partial u}{\partial x}(0,t)=\frac{\partial u}{\partial x}(L,t)

Pour le noeud i=0i=0, le schéma aux différences (73) fait intervenir la valeur u1nu_{-1}^{n}, que l’on calcule avec la condition de périodicité : u1n=uN1nu_{-1}^{n}=u_{N-1}^{n}. Pour le noeud i=Ni=N, on impose la condition uNn=u0nu_{N}^{n}=u_{0}^{n}.

On a tracé sur la figure Figure 12 la solution obtenue avec le schéma décentré d’ordre 1 (55) et le schéma d’ordre 2 (45). On constate bien la dispersion du schéma d’ordre 2 (décalage des courbes), mais aussi la très forte diffusion du schéma décentré (mais qui a une dispersion plus faible).

Pour interprèter l’apparition de cette dispersion dans le schéma d’ordre 2 (45), on transforme l’erreur de troncature (49) en dérivant l’équation exacte pour remplacer 3ut3=V33ux3\frac{\partial^{3}u}{\partial t^{3}}=-V^{3}\frac{\partial^{3}u}{\partial x^{3}} :

ErrT=V6(dx2V2dt2)3ux3+O(dt3,dx3)ErrT=\frac{V}{6}(dx^{2}-V^{2}dt^{2})\,\frac{\partial^{3}u}{\partial x^{3}}+O(dt^{3},dx^{3})

L’équation aux différences pour le schéma explicite d’ordre 2 est donc équivalente à l’équation de convection dispersion suivante:

Eqhut+Vux+φ3ux3=0Eq^{h}\approx\frac{\partial u}{\partial t}+V\,\frac{\partial u}{\partial x}+\varphi\frac{\partial^{3}u}{\partial x^{3}}=0

avec φ=Vdx26(1CFL2)\varphi=\frac{Vdx^{2}}{6}(1-C_{FL}^{2}). La solution exacte, pour une condition initiale u0(x)=eIωxu_{0}(x)=e^{I\omega x}, s’écrit:

u(x,t)=eIωxeIωVteIφω3t=eIω(x(Vφω2)t)u(x,t)=e^{I\,\omega x}e^{-I\,\omega V\,t}e^{I\varphi\omega^{3}t}=e^{I\omega(x-(V-\varphi\omega^{2})t)}

L’onde initiale est donc transportée avec une vitesse de convection Vφω2V-\varphi\omega^{2}, qui dépend de la fréquence de l’onde. Les ondes sont donc dispersées (i.e. ne se propagent pas toutes à la même vitesse comme dans l’équation exacte (30), avec une dispersion d’autant plus grande que l’onde est à haute fréquence. On note aussi que, pour le cas particulier CFL=1C_{FL}=1, le schéma (45) n’est plus dispersif, ce que l’on vérifie bien numériquement.

Convection d’une discontinuité

La capture des chocs nécessite des schémas numériques qui propagent correctement les discontinuités. Nous allons donc étudier numériquement le problème d’advection suivant:

ut+Vux=0u(x,t=0)=u0(x)\begin{aligned} \frac{\partial u}{\partial t}+V\frac{\partial u}{\partial x} & = & 0\\ u(x,t=0) & = & u_{0}(x)\end{aligned}

où la condition initiale u0(x)u_{0}(x) est discontinue en x=x0x=x_{0}

u0(x)={1xx00x>x0u_{0}(x)=\left\{ \begin{array}{ll} 1 & x\leq x_{0}\\ 0 & x>x_{0} \end{array}\right.

dont la solution exacte est

u(x,t)=u0(xVt)u(x,t)=u_{0}(x-V\,t)
schéma d’ordre 1: convection d’une discontinuité avec N=101

Figure 13:schéma d’ordre 1: convection d’une discontinuité avec N=101N=101

schéma d’ordre 1: convection d’une discontinuité avec N=1001

Figure 14:schéma d’ordre 1: convection d’une discontinuité avec N=1001N=1001

Sur la figure Figure 13, nous avons comparé la solution exacte avec la solution approchée calculée sur un maillage de 101 points (dx=0.01dx=0.01).

On constate que la solution numérique avec le schéma décentré d’ordre 1 (upwind) présente une forte diffusion, et la discontinuité se trouve étalée sur une vingtaine de mailles. Avec le schéma d’ordre 2 de Lax Wendroff, la discontinuité est mieux captée (i.e. l’étalement du front est inférieure à 10 mailles). Si on raffine le maillage, les mêmes conclusions peuvent être tirées, comme le montre la figure Figure 14 où on a tracé la solution numérique sur un maillage 10 fois plus fin (dx=0.001)(dx=0.001).

La convergence de la solution numérique est dégradée au voisinage de la discontinuité. La méthode décentrée d’ordre 1 converge en O(dx)O(\sqrt{dx}) au lieu de O(dx),O(dx),et la méthode d’ordre 2 converge en O(dx2/3)O(dx^{2/3}) au lieu de O(dx2)O(dx^{2}).

schéma d’ordre 2: convection d’une discontinuité avec N=101

Figure 15:schéma d’ordre 2: convection d’une discontinuité avec N=101N=101

schéma d’ordre 2: convection d’une discontinuité avec N=1001

Figure 16:schéma d’ordre 2: convection d’une discontinuité avec N=1001N=1001

Le comportement de la solution décentrée s’explique par la forte dissipation numérique du schéma upwind. Celui de la solution d’ordre 2 est lié à la dispersion numérique du schéma de Lax Wendroff, qui ralentit les ondes hautes fréquences. Or la convection d’une discontinuité correspond à la convection d’une infinité d’ondes basses et hautes fréquences (décomposition en série de Fourier), qui se propagent toutes à la même vitesse. Le schéma Lax Wendroff ralentit les ondes hautes fréquences, et donc la discontinuité n’est plus reconstituée exactement, et une oscillation haute fréquence apparaît à l’arrière de la discontinuité comme le montrent les figures Figure 15 et Figure 16 (la fréquence de l’oscillation augmente avec le nombre de points du maillage).

Problème non linéaire

En plus des difficultés numériques exposées précédemment pour une équation linéaire d’advection, la résolution numérique de problème non-linéaire se heurte à de nouvelles difficultés:

  1. la solution numérique peut devenir “non-linéairement instable”, i.e. même en respectant les conditions de stabilité du schéma linéarisé, la solution non-linéaire devient instable.

  2. la solution numérique peut converger vers une solution qui n’est pas solution du problème exact, ou qui est physiquement inacceptable (i.e. qui viole la condition d’entropie).

A titre d’exemple, considérons l’équation non linéaire de Burgers

ut+uux=0\frac{\partial u}{\partial t}+u\frac{\partial u}{\partial x}=0

avec une condition initiale u(x,t=0)=u0(x)u(x,t=0)=u_{0}(x) discontinue

u0(0)={ulxx0urx>x0u_{0}(0)=\left\{ \begin{array}{ll} u_{l} & x\leq x_{0}\\ u_{r} & x>x_{0} \end{array}\right.

La solution exacte est un choc qui se propage avec la célérité ss, et qui vérifie la relation de saut d’Hugoniot

F(ul)F(ur)=s[ulur]F(u_{l})-F(u_{r})=s\,[u_{l}-u_{r}]

F(u)=12u2F(u)=\frac{1}{2}u^{2}est la fonction flux de l’équation de Burgers (82), qui s’écrit sous forme conservative:

ut+x(12u2)=0\frac{\partial u}{\partial t}+\frac{\partial}{\partial x}(\frac{1}{2}u^{2})=0

La relation de saut (84) fournit la valeur de la célérité ss

s=12(ul+ur)s=\frac{1}{2}(u_{l}+u_{r})

L’extension naturelle du schéma aux différences finies décentrées (55) à l’équation de Burgers (82) peut s’écrire:

uin+1uindt+ui1nuinui1ndx=0\frac{u_{i}^{n+1}-u_{i}^{n}}{dt}+u_{i-1}^{n}\frac{u_{i}^{n}-u_{i-1}^{n}}{dx}=0

en utilisant une vitesse de convection décentrée ui1nu_{i-1}^{n}, ou

uin+1uindt+uinuinui1ndx=0\frac{u_{i}^{n+1}-u_{i}^{n}}{dt}+u_{i}^{n}\frac{u_{i}^{n}-u_{i-1}^{n}}{dx}=0

en utilisant une vitesse de convection centrée uinu_{i}^{n}.

solution numérique  avec les 2 schémas décentrés  et  pour N=101

Figure 17:solution numérique avec les 2 schémas décentrés (87) et (88) pour N=101N=101

solution numérique  avec les 2 schémas décentrés  et  pour N=1001

Figure 18:solution numérique avec les 2 schémas décentrés (87) et (88) pour N=1001N=1001

Sur les figures Figure 17 et Figure 18 , on a comparé la solution exacte avec la solution numérique calculée avec les 2 schémas décentrés (87) et (88) pour deux maillages de N=101N=101 et N=1001N=1001 points. On constate que les deux solutions numériques ne convergent pas vers la solution exacte, et donnent une célérité ss 20% trop petite avec le schéma upwind1 (87) et 20% trop grande avec le schéma upwind2 (88)

Pour éviter ce comportement, il faut imposer une condition supplémentaire au schéma numérique. Il faut que le schéma soit conservatif, i.e. soit écrit sous une forme conservative.

On part de l’équation exacte sous forme conservative:

ut+F(u)x=0\frac{\partial u}{\partial t}+\frac{\partial F(u)}{\partial x}=0

Un schéma conservatif par différences finies s’écrit:

uin+1=uindtdx[Fi+12Fi12]u_{i}^{n+1}=u_{i}^{n}-\frac{dt}{dx}\left[F_{i+\frac{1}{2}}-F_{i-\frac{1}{2}}\right]

Fi+12F_{i+\frac{1}{2}} est un flux numérique en x=xi+dx2x=x_{i}+\frac{dx}{2}. Cette discrétisation correspond à l’approximation par volumes finis de (89) obtenue en intégrant l’équation en espace sur la cellule [xidx2,xi+dx2][x_{i}-\frac{dx}{2},x_{i}+\frac{dx}{2}] et en temps entre tnt^{n} et tn+1t^{n+1}:

xi1/2xi+1/2u(x,tn+1)dx=xi1/2xi+1/2u(x,tn)dx[tntn+1F(u(xi+1/2,t))dttntn+1F(u(xi1/2,t))dt]\begin{aligned} \int_{x_{i-1/2}}^{x_{i+1/2}}u(x,t^{n+1})dx & = & \int_{x_{i-1/2}}^{x_{i+1/2}}u(x,t^{n})dx\\ & - & \left[\int_{t^{n}}^{t^{n+1}}F(u(x_{i+1/2},t))dt-\int_{t^{n}}^{t^{n+1}}F(u(x_{i-1/2},t))dt\right]\end{aligned}

La valeur approchée uinu_{i}^{n} est donc une approximation de la valeur moyenne sur la cellule:

uin1dxxi1/2xi+1/2u(x,tn)dxu_{i}^{n}\approx\frac{1}{dx}\int_{x_{i-1/2}}^{x_{i+1/2}}u(x,t^{n})dx

et la valeur du flux numérique Fi+12F_{i+\frac{1}{2}} une valeur approchée du flux physique entre tnt^{n} et tn+1t^{n+1}:

Fi+12=1dttntn+1F(u(xi+1/2,t)dtF_{i+\frac{1}{2}}=\frac{1}{dt}\int_{t^{n}}^{t^{n+1}}F(u(x_{i+1/2},t)dt

Ainsi le schéma explicite décentré conservatif pour l’équation de Burgers s’écrit:

uin+1=uindtdx[12(uin)212(ui1n)2]u_{i}^{n+1}=u_{i}^{n}-\frac{dt}{dx}\left[\frac{1}{2}\left(u_{i}^{n}\right)^{2}-\frac{1}{2}\left(u_{i-1}^{n}\right)^{2}\right]
solution numérique  avec schéma conservatif   pour N=101

Figure 19:solution numérique avec schéma conservatif (94) pour N=101N=101

solution numérique  avec schéma conservatif   pour N=1001

Figure 20:solution numérique avec schéma conservatif (94) pour N=1001N=1001

Sur les figures Figure 19 et Figure 20, on a comparé la solution exacte de l’équation de Burgers (82) et (83) avec la solution numérique calculée avec le schéma conservatif décentré (94) pour deux maillages de N=101N=101 et N=1001N=1001 points. On constate qu’avec ce schéma conservatif, la solution approchée converge vers la solution exacte et fournit la bonne vitesse de propagation s=ul+ur2s=\frac{u_{l}+u_{r}}{2}.

Système d’équations hyperboliques

Soit le système de nn équations hyperboliques écrit sous forme conservative:

Wt+F(W)x=0\frac{\partial\overrightarrow{W}}{\partial t}+\frac{\partial\overrightarrow{F}(\overrightarrow{W})}{\partial x}=0

En notant A=FW\mathcal{A}=\frac{\partial\overrightarrow{F}}{\partial\overrightarrow{W}}, la matrice jacobienne des flux, ce système s’écrit sous la forme non conservative:

Wt+AWx=0\frac{\partial\overrightarrow{W}}{\partial t}+\mathcal{A}\frac{\partial\overrightarrow{W}}{\partial x}=0

En diagonalisant la matrice A\mathcal{A}, on obtient un système de n équations d’advection dont les vitesses d’advection sont les valeurs propres λi\lambda_{i} de A\mathcal{A}. Pour construire un schéma numérique décentré, il faut donc tenir compte du signe des valeurs propres de A\mathcal{A} lors du calcul des flux à l’interface.

Considérons tout d’abord le cas linéaire (i.e. A\mathcal{A} est indépendant de WW). En notant Λ\Lambda la matrice diagonale des valeurs propres λi\lambda_{i}, la diagonalisation de A\mathcal{A} s’écrit:

A=RΛR1\mathcal{A}=\mathcal{R}\Lambda\mathcal{R}^{-1}

Soit Λ+=max(λi,0)\Lambda^{+}=max(\lambda_{i},0) la matrice diagonale des valeurs propres positives de A\mathcal{A} et Λ=min(λi,0)\Lambda^{-}=min(\lambda_{i},0) la matrice diagonale des valeurs propres négatives. On note

A+=RΛ+R1 et A=RΛR1\mathcal{A}^{+}=\mathcal{R}\Lambda^{+}\mathcal{R}^{-1}\,\mbox{ et }\,\,\mathcal{A}^{-}=\mathcal{R}\Lambda^{-}\mathcal{R}^{-1}

qui sont deux matrices vérifiant:

A=A++A et A=A+A\mathcal{A}=\mathcal{A}^{+}+\mathcal{A}^{-}\,\mbox{ et }\left|\mathcal{A}\right|=\mathcal{A}^{+}-\mathcal{A}^{-}

Pour calculer le flux F(W)=AWF(W)=\mathcal{A}W à l’interface xi+1/2x_{i+1/2}, on peut utiliser un flux numérique centré:

Fi+1/2c=12[F(Wi)+F(Wi+1)]=12A(Wi+Wi+1)F_{i+1/2}^{c}=\frac{1}{2}\left[F(W_{i})+F(W_{i+1})\right]=\frac{1}{2}\mathcal{A}(W_{i}+W_{i+1})

Ce flux numérique conduit à un schéma centré, qui est instable. Pour stabiliser le schéma, on décentre le flux suivant le signe des valeurs propres de A\mathcal{A}:

Fi+1/2d=F+(Wi)+F(Wi+1)=A+Wi+AWi+1F_{i+1/2}^{d}=F^{+}(W_{i})+F^{-}(W_{i+1})=\mathcal{A}^{+}W_{i}+\mathcal{A}^{-}W_{i+1}

Le schéma conservatif explicite décentré s’écrit alors:

Win+1=Windtdx[A+(WiWi1)+A(Wi+1Wi)]W_{i}^{n+1}=W_{i}^{n}-\frac{dt}{dx}\left[\mathcal{A}^{+}\left(W_{i}-W_{i-1}\right)+\mathcal{A}^{-}\left(W_{i+1}-W_{i}\right)\right]

En utilisant les propriétés (99) de A\mathcal{A}, le flux décentré s’écrit aussi sous la forme:

Fi+1/2d=12A(Wi+1+Wi)12(A+A)(Wi+1Wi)=Fi+1/2c12A(Wi+1Wi)\begin{aligned} F_{i+1/2}^{d} & = & \frac{1}{2}\mathcal{A}\left(W_{i+1}+W_{i}\right)-\frac{1}{2}\left(\mathcal{A}^{+}-\mathcal{A}^{-}\right)\left(W_{i+1}-W_{i}\right)\\ & = & F_{i+1/2}^{c}-\frac{1}{2}\mathcal{\left|A\right|}\left(W_{i+1}-W_{i}\right)\end{aligned}

et le schéma décentré (102) s’écrit:

Win+1=Windt2dxA(Wi+1nWi1n)+dt2dxA(Wi+1n2Win+Wi1n)W_{i}^{n+1}=W_{i}^{n}-\frac{dt}{2dx}\mathcal{A}\left(W_{i+1}^{n}-W_{i-1}^{n}\right)+\frac{dt}{2dx}\left|\mathcal{A}\right|\left(W_{i+1}^{n}-2W_{i}^{n}+W_{i-1}^{n}\right)

ce qui correspond à un schéma centré avec un terme supplémentaire de dissipation qui stabilise le schéma centré.

La condition de stabilité de ce schéma est une condition de type CFLC_{FL} basée sur les vitesses d’advection du système, i.e. sur les valeurs propres de A\mathcal{A}:

CFL=Max(λi)dtdx<1C_{FL}=\frac{Max(|\lambda_{i}|)\,dt}{dx}<1

Pour un problème non-linéaire, la matrice A\mathcal{A} dépend de la solution WW. L’analyse précédente doit être modifiée. Pour cela on considère un état intermédiaire W^\widehat{W} pour calculer la valeur A^\mathcal{\widehat{A}} de A\mathcal{A} intervenant dans le calcul du flux décentré (101). Pour obtenir un schéma conservatif, la matrice A^\mathcal{\widehat{A}} doit vérifier:

A^(Wi+1Wi)=F(Wi+1)F(Wi)\widehat{\mathcal{A}}\left(W_{i+1}-W_{i}\right)=F(W_{i+1})-F(W_{i})

et doit tendre vers la jacobienne exacte FW\frac{\partial F}{\partial W}. En effet le problème linéarisé s’écrit:

Wt+A^Wx=0\frac{\partial\overrightarrow{W}}{\partial t}+\mathcal{\widehat{A}}\frac{\partial\overrightarrow{W}}{\partial x}=0

et correspond à un flux linéarisé F^(W)=A^W\widehat{F}(W)=\widehat{\mathcal{A}}W. Pour être conservatif, la solution doit vérifier les relations de saut (23) et (24):

ddtx0+x0Wdx=F(WL)F(WR)F^(WL)F^(WR)=F(WL)F(WR)A^(WLWR)=F(WL)F(WR)\begin{aligned} \frac{d}{dt}\int_{-x_{0}}^{+x_{0}}\overrightarrow{W}\,dx & = & \overrightarrow{F}(\overrightarrow{W_{L}})-\overrightarrow{F}(\overrightarrow{W_{R}})\\ \widehat{F}(\overrightarrow{W_{L}})-\widehat{F}(\overrightarrow{W_{R}}) & = & \overrightarrow{F}(\overrightarrow{W_{L}})-\overrightarrow{F}(\overrightarrow{W_{R}})\\ \widehat{\mathcal{A}}\left(\overrightarrow{W_{L}}-\overrightarrow{W_{R}}\right) & = & \overrightarrow{F}(\overrightarrow{W_{L}})-\overrightarrow{F}(\overrightarrow{W_{R}})\end{aligned}

Schéma de Roe

Pour les équations d’Euler, on peut utiliser pour W^\widehat{W}, l’état de Roe, qui est la moyenne de Roe entre WiW_{i} et Wi+1W_{i+1}

W^=[ρiρi+1ρiui+ρi+1ui+1ρi+ρi+1ρihti+ρi+1hti+1ρi+ρi+1]\widehat{W}=\left[\begin{array}{l} \sqrt{\rho_{i}\rho_{i+1}}\\ \frac{\sqrt{\rho_{i}}u_{i}+\sqrt{\rho_{i+1}}u_{i+1}}{\sqrt{\rho_{i}}+\sqrt{\rho_{i+1}}}\\ \frac{\sqrt{\rho_{i}}ht_{i}+\sqrt{\rho_{i+1}}ht_{i+1}}{\sqrt{\rho_{i}}+\sqrt{\rho_{i+1}}} \end{array}\right]

La matrice Jacobienne des flux de Roe s’écrit:

A^=[010γ32u^2(3γ)u^γ1u^(γ22u^21γ1c^2)32γ2u^2+1γ1c^2u^γ]\mathcal{\widehat{A}}=\left[\begin{array}{ccc} 0 & 1 & 0\\ \frac{\gamma-3}{2}\widehat{u}^{2} & (3-\gamma)\widehat{u} & \gamma-1\\ \widehat{u}\,(\frac{\gamma-2}{2}\widehat{u}^{2}-\frac{1}{\gamma-1}\widehat{c}^{2}) & \frac{3-2\gamma}{2}\widehat{u}^{2}+\frac{1}{\gamma-1}\widehat{c}^{2} & \widehat{u}\gamma \end{array}\right]

Sa décomposition en valeurs propres s’écrit:

A^=R^Λ^R^1\mathcal{\widehat{A}}=\mathcal{\widehat{R}}\widehat{\Lambda}\mathcal{\widehat{R}}^{-1}

avec

Λ=[u000u+c000uc]\Lambda=\left[\begin{array}{ccc} u & 0 & 0\\ 0 & u+c & 0\\ 0 & 0 & u-c \end{array}\right]
R=[111uu+cuc12u2h+u+chu+c]\mathcal{R}=\left[\begin{array}{ccc} 1 & 1 & 1\\ u & u+c & u-c\\ \frac{1}{2}u^{2} & h+u+c & h-u+c \end{array}\right]
R1=[112r2r11v214r212uc12r1+12c12v214r2+12uc12r112c12v2]\mathcal{R}^{-1}=\left[\begin{array}{ccc} 1-\frac{1}{2}r_{2} & r_{1} & -\frac{1}{v_{2}}\\ \frac{1}{4}r_{2}-\frac{1}{2}\frac{u}{c} & -\frac{1}{2}r_{1}+\frac{1}{2c} & \frac{1}{2v_{2}}\\ \frac{1}{4}r_{2}+\frac{1}{2}\frac{u}{c} & -\frac{1}{2}r_{1}-\frac{1}{2c} & \frac{1}{2v_{2}} \end{array}\right]

avec h=12u2+1γ1c2h=\frac{1}{2}u^{2}+\frac{1}{\gamma-1}c^{2}, v2=1γ1c2v_{2}=\frac{1}{\gamma-1}c^{2}, r1=uv2r_{1}=\frac{u}{v_{2}}, r2=u2v2r_{2}=\frac{u^{2}}{v_{2}}.

Le flux de Roe s’écrit alors

Fi+1/2Roe=12[F(Wi+1)+F(Wi)]12A^(Wi+1Wi)F_{i+1/2}^{Roe}=\frac{1}{2}\left[F(W_{i+1})+F(W_{i})\right]-\frac{1}{2}\mathcal{\left|\widehat{A}\right|}\left(W_{i+1}-W_{i}\right)

Ce schéma de Roe est à la base de nombreux schémas numériques pour la simulation des écoulements compressibles.