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 .
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} ,} où 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} ,} où 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.
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} ,} où 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} ,} où 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.
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} ,} où 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} ,} où σ 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} ,} où 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} } .
(en) Eleuterio F. Toro , Riemann Solvers and Numerical Methods for Fluid Dynamics , Berlin, Springer Verlag, 1999 (en) Randall J. LeVeque , Finite-Volume Methods for Hyperbolic Problems , Cambridge, Cambridge University Press , 2004 (en) Lawrence C. Evans , Partial Differential Equations , American Mathematical Society, 1998 Jean-François Coulombel, « Equations hyperboliques non-linéaires », sur le serveur de cours en ligne C.E.L.