# Roe Riemann solver for perfect gas mixture

I have working program for solving one-component 1D Euler equations with Roe's approximate Riemann solver constructed according to this pdf. My implementation of the algorithm is as follows ($$\rho$$ is density, $$u$$ is velocity, $$h=\frac{e+p}{\rho}$$ is total specific enthalpy, $$c$$ is speed of sound):

First, we compute Roe average values between the states:

$$\rho = \sqrt{\rho_l\rho_r} \\ u = \frac{\sqrt{\rho_l}u_l + \sqrt{\rho_r}u_r}{\sqrt{\rho_l}+\sqrt{\rho_r}} \\ h = \frac{\sqrt{\rho_l}h_l + \sqrt{\rho_r}h_r}{\sqrt{\rho_l}+\sqrt{\rho_r}} \\ c = \sqrt{(\gamma-1)(h-u^2/2)}$$

Then the right eigenvectors of the Jacobian matrix:

$$\left( \begin{matrix} r_0 & r_1 & r_2 \\ \end{matrix} \right) = \left( \begin{matrix} 1 & 1 & 1 \\ u-c & u & u+c \\ h-uc & u^2/2 & h+uc \end{matrix} \right)$$

Absolute values of wave speeds: $$|\lambda_0| = |u-c|, \; |\lambda_1| = |u|, \; |\lambda_2| = |u+c|$$ and apply some entropy fix to them (not relevant here).

Wave amplitudes (coefficients of the jump between states decomposition by eigenvectors): $$\alpha_0 = \frac{(p_r-p_l) - \rho c (u_r-u_l)}{2c^2} \\ \alpha_1 = (\rho_r - \rho_l) - \frac{(p_r-p_l)}{c^2} \\ \alpha_2 = \frac{(p_r-p_l) + \rho c (u_r-u_l)}{2c^2} \\$$

Flux values of the states: $$F_l = \left(\begin{array}{c} \rho_l u_l \\ p_l+\rho_l u_l^2 \\ (e_l+p_l)u_l \end{array}\right), \quad F_r = \left(\begin{array}{c} \rho_r u_r \\ p_r+\rho_r u_r^2 \\ (e_r+p_r)u_r \end{array}\right)$$

And finally flux values of the middle state: $$F = \frac{1}{2}(F_l+F_r) - \frac{1}{2} \sum\limits_{p=0}^2 |\lambda_p| \alpha_p r_p$$

The problem is how to generalize this algorithm for equilibrium multi-component perfect gas mixture?

I'm already able to calculate the eigenvectors for this case, here is an example for 3 components, corresponding to $$(u,u,u,u+a,u-a)$$ eigenvalues: $$\left( \begin{matrix} r_0 & r_1 & r_2 & r_3 & r_4 \\ \end{matrix} \right) = \left( \begin{matrix} 1 & 0 & 0 & \frac{\rho_0}{\rho} & \frac{\rho_0}{\rho} \\ 0 & 1 & 0 & \frac{\rho_1}{\rho} & \frac{\rho_1}{\rho} \\ 0 & 0 & 1 & \frac{\rho_2}{\rho} & \frac{\rho_2}{\rho} \\ u & u & u & u+c & u-c \\ u^2-\frac{1}{\gamma-1}\frac{\partial p}{\partial \rho_0} & u^2-\frac{1}{\gamma-1}\frac{\partial p}{\partial \rho_1} & u^2-\frac{1}{\gamma-1}\frac{\partial p}{\partial \rho_2} & h+uc & h-uc \end{matrix} \right)$$ where $$\frac{\partial p}{\partial \rho_i} = \frac{R_0 T}{\mu_i} - (\gamma-1)(h_{0i}+c_{vi}T - u^2/2)$$ and $$T$$ is temperature, $$R_0$$ is universal gas constant, $$\mu_i, h_{0i}, c_{vi}$$ are molar mass, heat of formation and heat capacity of $$i$$-th gas component.

These formulas are derived from this paper by discarding of vibrational terms.

The questions are:

1. How to correctly apply Roe averaging to gas mixture? I.e. how to calculate $$\rho_i, u, \gamma, T, h, c$$ for the matrix above?

2. How to calculate $$\alpha_i$$ for this case?

• I would suggest taking a look at Abgrall, R. & Karni, S. Computations of Compressible Multifluids. Journal of Computational Physics 169, 594–623 (2001). It has a good review of the literature up until then with a nice statement of what the issues are. – Kyle Mandli Oct 22 '18 at 17:14
• You definition of Roe average $h$ is not correct. It should be similar to Roe average $u$ value. – cfdlab Oct 23 '18 at 14:23
• @PraveenChandrashekar Thanks! The formula is correct for enthalpy $h = (e+p)$, which is used in my program. But in this context specific enthalpy ($\frac{e+p}{\rho}$) is used instead so that averaging should be $h = \frac{\sqrt{\rho_l}h_l + \sqrt{\rho_r}h_r}{\sqrt{\rho_l}+\sqrt{\rho_r}}$, as you said. – omican Oct 24 '18 at 6:03