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} ,}
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.
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} ,}
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.
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} ,}
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} }
.
Références
(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.
Voir aussi