PLUTO
4.4-patch2
|
Implementation of the Roe Riemann solver for the MHD equations. More...
#include "pluto.h"
Functions | |
void | Roe_Solver (const Sweep *sweep, int beg, int end, double *cmax, Grid *grid) |
Solve the Riemann problem for the adiabatic and isothermal MHD equations using the linearized Riemann solver of Roe. The implementation follows the approach outlined by Cargo & Gallice (1997).
The isothermal version is recovered by taking the limit of for
which gives (page 451)
where
X
is defined as in the adiabatic case. This follows by imposing zero jump across the entropy wave (first of Eq. 4.20, page 452) giving . Then all the terms like
.
When the macro HLL_HYBRIDIZATION is set to YES, we revert to the HLL solver whenever an unphysical state appear in the solution.
The macro CHECK_ROE_MATRIX can be used to verify that the characteristic decomposition reproduces the Roe matrix. This can be done also when BACKGROUND_FIELD is set to YES.
On input, this function takes left and right primitive state vectors stateL->v
and stateR->v
at zone edge i+1/2; On output, return flux and pressure vectors at the same interface i+1/2
(note that the i
refers to i+1/2
).
Also during this step, compute maximum wave propagation speed (cmax) for explicit time step computation.
Reference:
Solve Riemann problem for the adiabatic MHD equations using the Roe Riemann solver of Cargo & Gallice (1997).