Problème de Riemann

En mathématiques, un problème de Riemann, du nom de Bernhard Riemann, désigne un problème à donnée initiale composé d'un système d'équations d'évolution hyperboliques et d'une donnée initiale constante par morceaux n'ayant qu'une seule discontinuité. Les problèmes de Riemann fournissent des solutions explicites à des équations non linéaires complexes, comme les équations d'Euler, et sont ainsi très utiles pour comprendre le comportement général des solutions de telles équations.

En analyse numérique, les problèmes de Riemann apparaissent de façon naturelle dans l'application de la méthode des volumes finis et pour les lois de conservation, et en particulier dans le schéma de Godounov, en raison du caractère discret du maillage d'approximation. Elle est donc largement utilisée dans les calculs numériques pour la dynamique des fluides et la magnétohydrodynamique.

Définition

On considère un système de lois de conservation (ici pour simplifier en dimension un) :

t u ( t , x ) + x f ( u ( t , x ) ) = 0 , ( t , x ) R + × R , {\displaystyle {\frac {\partial }{\partial t}}\mathbf {u} (t,x)+{\frac {\partial }{\partial x}}\mathbf {f} (\mathbf {u} (t,x))=0,\qquad (t,x)\in \mathbb {R} _{+}\times \mathbb {R} ,}

u : R + × R R m {\displaystyle \mathbf {u} \colon \mathbb {\mathbb {R} } _{+}\times \mathbb {R} \to \mathbb {R} ^{m}} est l'inconnue et f : R m R m {\displaystyle \mathbf {f} \colon \mathbb {R} ^{m}\to \mathbb {R} ^{m}} est donnée. On ajoute à ce système une condition initiale :

u ( t = 0 , x ) = g ( x ) , x R , {\displaystyle \mathbf {u} (t=0,x)=\mathbf {g} (x),\qquad x\in \mathbb {R} ,}

g : R R m {\displaystyle \mathbf {g} \colon \mathbb {R} \to \mathbb {R} ^{m}} est donnée.

Si la fonction g est constante par morceaux, c'est-à-dire qu'il existe x 0 R {\displaystyle x_{0}\in \mathbb {R} } , ainsi que ( g G , g D ) R m × R m {\displaystyle (\mathbf {g} _{G},\mathbf {g} _{D})\in \mathbb {R} ^{m}\times \mathbb {R} ^{m}} tels que

g ( x ) = { g G , x < x 0 , g D , x > x 0 , x R , {\displaystyle \mathbf {g} (x)={\begin{cases}\mathbf {g} _{G},&x<x_{0},\\\mathbf {g} _{D},&x>x_{0},\end{cases}}\qquad x\in \mathbb {R} ,}

alors on dit que le système d'équations ci-dessus avec g pour condition initiale est un problème de Riemann.

Cas de la dynamique linéaire

Le cas de la dynamique linéaire est particulier au sens où le problème est résoluble directement à l'aide de la méthode des caractéristiques.

Par exemple, pour une loi de conservation linéaire

t u ( t , x ) + c x u ( t , x ) = 0 , ( t , x ) R + × R , {\displaystyle {\frac {\partial }{\partial t}}u(t,x)+c{\frac {\partial }{\partial x}}u(t,x)=0,\qquad (t,x)\in \mathbb {R} _{+}\times \mathbb {R} ,}

u : R + × R R {\displaystyle u\colon \mathbb {\mathbb {R} } _{+}\times \mathbb {R} \to \mathbb {R} } est l'inconnue scalaire et c R {\displaystyle c\in \mathbb {R} } un paramètre, alors la solution est une propagation de la condition initiale g ( x ) = u ( t = 0 , x ) {\displaystyle g(x)=u(t=0,x)} à la vitesse c, sans déformation :

u ( t , x ) = g ( x c t ) . {\displaystyle u(t,x)=g(x-ct).}

La situation est similaire pour un système de lois de conservation linéaires hyperboliques

t u ( t , x ) + A x u ( t , x ) = 0 , ( t , x ) R + × R , {\displaystyle {\frac {\partial }{\partial t}}\mathbf {u} (t,x)+A{\frac {\partial }{\partial x}}\mathbf {u} (t,x)=0,\qquad (t,x)\in \mathbb {R} _{+}\times \mathbb {R} ,}

u : R + × R R m {\displaystyle \mathbf {\mathbf {u} } \colon \mathbb {\mathbb {R} } _{+}\times \mathbb {R} \to \mathbb {R} ^{m}} est l'inconnue et A une matrice diagonalisable à valeurs propres réelles. Nous donnons un exemple simple inspiré de la dynamique des gaz (en) :

ρ t + ρ 0 u x = 0 , u t + a 2 ρ 0 ρ x = 0 , {\displaystyle {\frac {\partial \rho }{\partial t}}+\rho _{0}{\frac {\partial u}{\partial x}}=0,{\frac {\partial u}{\partial t}}+{\frac {a^{2}}{\rho _{0}}}{\frac {\partial \rho }{\partial x}}=0,}

avec une condition initiale constituée de deux états :

[ ρ u ] = [ ρ G u G ]  si  x 0 , et [ ρ u ] = [ ρ D u D ]  si  x > 0. {\displaystyle {\begin{bmatrix}\rho \\u\end{bmatrix}}={\begin{bmatrix}\rho _{G}\\u_{G}\end{bmatrix}}{\text{ si }}x\leq 0,\qquad {\text{et}}\qquad {\begin{bmatrix}\rho \\u\end{bmatrix}}={\begin{bmatrix}\rho _{D}\\-u_{D}\end{bmatrix}}{\text{ si }}x>0.}


Le système précédent peut se réécrire sous forme conservative t u + A x u = 0 {\displaystyle \partial _{t}\mathbf {u} +A\partial _{x}\mathbf {u} =0} avec:

u = [ ρ u ] , A = [ 0 ρ 0 a 2 ρ 0 0 ] . {\displaystyle \mathbf {u} ={\begin{bmatrix}\rho \\u\end{bmatrix}},\quad A={\begin{bmatrix}0&\rho _{0}\\{\frac {a^{2}}{\rho _{0}}}&0\end{bmatrix}}.}

Les valeurs propres du système sont ses caractéristiques : λ 1 = a , λ 2 = a {\displaystyle \lambda _{1}=-a,\lambda _{2}=a} . Les vecteurs propres sont

e ( 1 ) = [ ρ 0 a ] , e ( 2 ) = [ ρ 0 a ] . {\displaystyle \mathbf {e} ^{(1)}={\begin{bmatrix}\rho _{0}\\-a\end{bmatrix}},\quad \mathbf {e} ^{(2)}={\begin{bmatrix}\rho _{0}\\a\end{bmatrix}}.}

L'état gauche u G {\displaystyle \mathbf {u} _{G}} se décompose sur la base des vecteurs propres par

u G = [ ρ G u G ] = α 1 [ ρ 0 a ] + α 2 [ ρ 0 a ] , {\displaystyle \mathbf {u} _{G}={\begin{bmatrix}\rho _{G}\\u_{G}\end{bmatrix}}=\alpha _{1}{\begin{bmatrix}\rho _{0}\\-a\end{bmatrix}}+\alpha _{2}{\begin{bmatrix}\rho _{0}\\a\end{bmatrix}},}

où les coefficients α 1 {\displaystyle \alpha _{1}} et α 2 {\displaystyle \alpha _{2}} se calculent par identification :

α 1 = a ρ G ρ 0 u G 2 a ρ 0   ,   α 2 = a ρ G + ρ 0 u G 2 a ρ 0 {\displaystyle \alpha _{1}={\frac {a\rho _{G}-\rho _{0}u_{G}}{2a\rho _{0}}}\ ,\ \alpha _{2}={\frac {a\rho _{G}+\rho _{0}u_{G}}{2a\rho _{0}}}}

L'état droite u D {\displaystyle \mathbf {u} _{D}} se décompose de façon similaire

u D = [ ρ D u D ] = β 1 [ ρ 0 a ] + β 2 [ ρ 0 a ] , {\displaystyle \mathbf {u} _{D}={\begin{bmatrix}\rho _{D}\\u_{D}\end{bmatrix}}=\beta _{1}{\begin{bmatrix}\rho _{0}\\-a\end{bmatrix}}+\beta _{2}{\begin{bmatrix}\rho _{0}\\a\end{bmatrix}},}

avec les coefficients

β 1 = a ρ D ρ 0 u D 2 a ρ 0   ,   β 2 = a ρ D + ρ 0 u D 2 a ρ 0 {\displaystyle \beta _{1}={\frac {a\rho _{D}-\rho _{0}u_{D}}{2a\rho _{0}}}\ ,\ \beta _{2}={\frac {a\rho _{D}+\rho _{0}u_{D}}{2a\rho _{0}}}}

Le système peut ainsi se réécrire comme deux équations découplées scalaires telles que traitées précédemment, la première avec vitesse de propagation c= - a et condition initiale α 1  si  x 0 ,   β 1  si  x > 0 {\displaystyle \alpha _{1}{\text{ si }}x\leq 0,\ \beta _{1}{\text{ si }}x>0} , et la seconde avec vitesse de propagation c=a et condition initiale α 2  si  x 0 ,   β 2  si  x > 0 {\displaystyle \alpha _{2}{\text{ si }}x\leq 0,\ \beta _{2}{\text{ si }}x>0} .

Ainsi, nous obtenons la solution finale

u ( t , x ) = [ ρ ( t , x ) u ( t , x ) ] = { u G , 0 < t a x u , 0 a | x | < t u D , 0 < t a x {\displaystyle \mathbf {u} (t,x)={\begin{bmatrix}\rho (t,x)\\u(t,x)\end{bmatrix}}={\begin{cases}\mathbf {u} _{G},&0<t\leq -ax\\\mathbf {u} ^{*},&0\leq a|x|<t\\\mathbf {u} _{D},&0<t\leq ax\end{cases}}}

où la solution dans le domaine compris entre les caractéristiques est définie par

u = [ ρ u ] = β 1 [ ρ 0 a ] + α 2 [ ρ 0 a ] . {\displaystyle \mathbf {u} ^{*}={\begin{bmatrix}\rho ^{*}\\u^{*}\end{bmatrix}}=\beta _{1}{\begin{bmatrix}\rho _{0}\\-a\end{bmatrix}}+\alpha _{2}{\begin{bmatrix}\rho _{0}\\a\end{bmatrix}}.}

Cet exemple permet de comprendre les propriétés basiques du problème de Riemann, et en particulier la décomposition de la solution en différents domaines de l'espace-temps déterminés par les caractéristiques.

Exemple de dynamique non linéaire

On considère ici qu'on a affaire avec une équation scalaire et non un système (ici m=1), ce qui permet d'assurer une théorie d'existence et d'unicité de solutions faibles non régulières (en particulier acceptant des discontinuités) : les solutions entropiques. On considère donc

t u ( t , x ) + x f ( u ) ( t , x ) = 0 , ( t , x ) R + × R , {\displaystyle {\frac {\partial }{\partial t}}u(t,x)+{\frac {\partial }{\partial x}}f(u)(t,x)=0,\qquad (t,x)\in \mathbb {R} _{+}\times \mathbb {R} ,}

u : R + × R R {\displaystyle u\colon \mathbb {R} _{+}\times \mathbb {R} \to \mathbb {R} } est l'inconnue et f : R R {\displaystyle f\colon \mathbb {R} \to \mathbb {R} } est donnée. On suppose pour simplifier que f est de classe C 2 {\displaystyle {\mathcal {C}}^{2}} et uniformément convexe, ce qui garantit la monotonie de la dérivée de f. Par exemple, f ( u ) = u 2 / 2 {\displaystyle f(u)=u^{2}/2} correspond à l'équation de Burgers sans viscosité.

Afin d'avoir un problème de Riemann, on considère la condition initiale (ici x 0 = 0 {\displaystyle x_{0}=0} )

u ( t = 0 , x ) = { u G , x < 0 , u D , x > 0 , x R , {\displaystyle u(t=0,x)={\begin{cases}u_{G},&x<0,\\u_{D},&x>0,\end{cases}}\qquad x\in \mathbb {R} ,}

avec ( u G , u D ) R × R {\displaystyle (u_{G},u_{D})\in \mathbb {R} \times \mathbb {R} } donnés.

Contrairement au cas linéaire, la méthode des caractéristiques ne permet de définir de manière unique la solution que sur une partie de l'espace-temps R + × R {\displaystyle \mathbb {R} _{+}\times \mathbb {R} } , et il reste à déterminer la solution dans les cas où les caractéristiques liées aux deux valeurs de la condition initiale se croisent, ou au contraire ne remplissent pas tout l'espace-temps.

  • Si u D < u G {\displaystyle u_{D}<u_{G}} , cela correspond au cas où les caractéristiques se croisent. L'unique solution entropique est alors de type choc, donnée par
u ( t , x ) = { u G , x / t < σ , u D , x / t > σ , ( x , t ) R + × R , {\displaystyle u(t,x)={\begin{cases}u_{G},&x/t<\sigma ,\\u_{D},&x/t>\sigma ,\end{cases}}\qquad (x,t)\in \mathbb {R} _{+}^{*}\times \mathbb {R} ,}
σ est la vitesse de propagation du choc donnée par les relations de Rankine-Hugoniot :
σ = f ( u G ) f ( u D ) u G u D . {\displaystyle \sigma ={\frac {f(u_{G})-f(u_{D})}{u_{G}-u_{D}}}.}
  • Si u D > u G {\displaystyle u_{D}>u_{G}} , cela correspond au cas où les caractéristiques ne remplissent pas tout l'espace-temps. L'unique solution entropique est de type onde de détente, donnée par
u ( t , x ) = { u G , x / t < f ( u G ) , g ( x / t ) , f ( u G ) < x / t < f ( u D ) , u D , x / t > f ( u D ) , ( x , t ) R + × R , {\displaystyle u(t,x)={\begin{cases}u_{G},&x/t<f^{\prime }(u_{G}),\\g(x/t),&f^{\prime }(u_{G})<x/t<f^{\prime }(u_{D}),\\u_{D},&x/t>f^{\prime }(u_{D}),\end{cases}}\qquad (x,t)\in \mathbb {R} _{+}^{*}\times \mathbb {R} ,}
g = ( f ) 1 {\displaystyle g=(f^{\prime })^{-1}} , la réciproque de la dérivée de f.

Dans les deux cas, la solution est autosimilaire, c'est-à-dire qu'elle est déterminée uniquement par le rapport x / t R {\displaystyle x/t\in \mathbb {R} } .

Références

  • (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Riemann problem » (voir la liste des auteurs).
  • (en) Eleuterio F. Toro, Riemann Solvers and Numerical Methods for Fluid Dynamics, Berlin, Springer Verlag,
  • (en) Randall J. LeVeque, Finite-Volume Methods for Hyperbolic Problems, Cambridge, Cambridge University Press,
  • (en) Lawrence C. Evans, Partial Differential Equations, American Mathematical Society,
  • Jean-François Coulombel, « Equations hyperboliques non-linéaires  », sur le serveur de cours en ligne C.E.L.

Voir aussi

  • icône décorative Portail de l'analyse