# Problema di Riemann

Un problema di Riemann, così chiamato dal nome del matematico e fisico tedesco Bernhard Riemann, è un problema ai valori iniziali che consiste in una legge di conservazione e da una condizione iniziale composta da due stati costanti separati da una singola discontinuità. Il problema di Riemann è particolarmente utile alla comprensione e risoluzione di sistemi iperbolici come le equazioni di Eulero, poiché alcune proprietà come le onde di shock e di rarefazione, analizzabili nel contesto di un problema di Riemann, compaiono naturalmente nella loro soluzione sotto forma di caratteristiche.
In analisi numerica, i problemi di Riemann figurano all'interno dei metodi numerici dei volumi finiti: per questo sono ampiamente usati in gasdinamica e fluidodinamica computazionale, nell'ambito delle quali i problemi di Riemann vengono risolti per mezzo di appositi solutori.

## Il problema di Riemann in gasdinamica

Come esempio si investigano le proprietà del problema di Riemann monodimensionale applicato alla gasdinamica. Esso è costituito dalle leggi linearizzate della dinamica dei gas (in cui $\rho \left(x,t\right)$ e $u\left(x,t\right)$ sono rispettivamente la densità e la velocità delle particelle del gas, $\rho _{0}$ è un valore di densità di riferimento e si assume $a\geq 0$ senza perdita di generalità):
    ${\begin{aligned}{\frac {\partial \rho }{\partial t}}+\rho _{0}{\frac {\partial u}{\partial x}}&=0\\[8pt]{\frac {\partial u}{\partial t}}+{\frac {a^{2}}{\rho _{0}}}{\frac {\partial \rho }{\partial x}}&=0\end{aligned}}$
corredate dalla seguente condizione iniziale:
    ${\begin{bmatrix}\rho \\u\end{bmatrix}}={\begin{bmatrix}\rho _{L}\\u_{L}\end{bmatrix}}=U_{L}{\text{ per }}x\leq 0\qquad {\text{e}}\qquad {\begin{bmatrix}\rho \\u\end{bmatrix}}={\begin{bmatrix}\rho _{R}\\u_{R}\end{bmatrix}}=U_{R}{\text{ per }}x>0{\text{.}}$
Il punto $x=0$ separa i due differenti stati iniziali, definiti sinistro e destro rispettivamente. Il sistema di equazioni differenziali può essere riscritto in forma conservativa:
    $U_{t}+A\cdot U_{x}=0$:
dove
    $U={\begin{bmatrix}\rho \\u\end{bmatrix}},\quad A={\begin{bmatrix}0&\rho _{0}\\{\frac {a^{2}}{\rho _{0}}}&0\end{bmatrix}}$
e il pedice indica la derivazione parziale rispetto a $x$ o $t$.
Gli autovalori della matrice $A$, $\lambda _{1}=-a$ e $\lambda _{2}=a$, rappresentano le velocità di propagazione delle onde all'interno del mezzo. La struttura del problema di Riemann in esame consiste quindi in due impulsi che si propagano a partire dall'origine del sistema di riferimento ($x=0$), il primo con velocità pari a $-a$, il secondo con velocità pari ad $a$. Nel piano cartesiano $x-t$ queste onde seguono le cosiddette curve caratteristiche del sistema, che in questo caso sono due rette di pendenza pari a $-a^{-1}$ e $a^{-1}$: $t=-x/a$ e $t=x/a$. A sinistra della caratteristica $t=-x/a$ si conserva lo stato iniziale sinistro $U_{L}$; a destra della caratteristica $t=x/a$ si mantiene lo stato iniziale destro $U_{R}$. Nel dominio compreso tra le due caratteristiche si genera uno stato costante incognito $U_{\star }$. Gli autovettori corrispondenti a $\lambda _{1}$ e $\lambda _{2}$ sono
    $\mathbf {e} ^{(1)}={\begin{bmatrix}\rho _{0}\\-a\end{bmatrix}},\quad \mathbf {e} ^{(2)}={\begin{bmatrix}\rho _{0}\\a\end{bmatrix}},$
e rispetto a questi possono essere decomposti gli stati iniziali: per qualche valore di $\alpha _{1}$, $\alpha _{2}$, $\beta _{1}$, $\beta _{2}$ si può quindi scrivere
    $U_{L}={\begin{bmatrix}\rho _{L}\\u_{L}\end{bmatrix}}=\alpha _{1}\mathbf {e} ^{(1)}+\alpha _{2}\mathbf {e} ^{(2)}\qquad {\text{ e }}\qquad U_{R}={\begin{bmatrix}\rho _{R}\\u_{R}\end{bmatrix}}=\beta _{1}\mathbf {e} ^{(1)}+\beta _{2}\mathbf {e} ^{(2)}.$
Risolvendo queste due equazioni si ottengono i valori delle quantità $\alpha _{1}$, $\alpha _{2}$, $\beta _{1}$, $\beta _{2}$:
    $\alpha _{1}={\frac {a\rho _{L}-\rho _{0}u_{L}}{2a\rho _{0}}},\quad \alpha _{2}={\frac {a\rho _{L}+\rho _{0}u_{L}}{2a\rho _{0}}},\quad \beta _{1}={\frac {a\rho _{R}-\rho _{0}u_{R}}{2a\rho _{0}}},\quad \beta _{2}={\frac {a\rho _{R}+\rho _{0}u_{R}}{2a\rho _{0}}}.$
Lo stato incognito $U_{\star }$ si ottiene infine in funzione degli stati iniziali:
    $U_{\star }={\begin{bmatrix}\rho _{\star }\\u_{\star }\end{bmatrix}}=\beta _{1}\mathbf {e} ^{(1)}+\alpha _{2}\mathbf {e} ^{(2)}=\beta _{1}{\begin{bmatrix}\rho _{0}\\-a\end{bmatrix}}+\alpha _{2}{\begin{bmatrix}\rho _{0}\\a\end{bmatrix}}={\begin{bmatrix}{\frac {1}{2}}(\rho _{L}+\rho _{R})-{\frac {1}{2}}(u_{R}+u_{L}){\frac {\rho _{0}}{a}}\\{\frac {1}{2}}(u_{L}+u_{R})-{\frac {1}{2}}(\rho _{R}+\rho _{L}){\frac {a}{\rho _{0}}}\end{bmatrix}}$
e la soluzione completa (costante a tratti) del problema di Riemann nel dominio $t>0$ è:
    $U(x,t)={\begin{bmatrix}\rho (x,t)\\u(x,t)\end{bmatrix}}={\begin{cases}U_{L},&0<t\leq -x/a\\U_{\star },&0\leq |x|/a<t\\U_{R},&0<t\leq x/a\end{cases}}.$