next up previous contents
Next: Implementation of the Viscous Up: Compressible Viscous Magnetohydrodynamics Simulations Previous: The Constraint

Implementation of the Euler Flux Terms

We now apply the same techniques that we used for the Navier-Stokes equations. We evaluate these fluxes and their derivatives in the interior of the elements and add correction terms for the discontinuities in the flux between any two adjacent elements.

In order to evaluate the Euler flux at an element interface we use a one-dimensional Riemann solver to supply an upwinded flux there. At a domain boundary we expect the user to provide far field conditions and treat the exterior boundary as the boundary of a ``ghost'' element. This way we can use the same Riemann solver at all element boundaries.

We linearize the one-dimensional flux ${\bf F}^{Euler}_x$ in the normal direction to a shared element boundary using the average of the state vector at either side of the element boundary. That is, since ${\bf F}^{Euler}_x$ is a nonlinear function of the state vector we use the average state to form an approximation to the Jacobian of the flux vector Ac.

The Jacobian matrix for the flux vector for the evolution equations expressed in primitive variables is simpler than the conserved form. Thus, we will perform the linearization about the primitive form and transform to the conserved form. The primitive Jacobian matrix Ap has the form:

\begin{displaymath}
\left[\begin{array}
{cccccccc}
u & \rho & 0 & 0 & 0 & 0 & 0 ...
 ...& -(\gamma-1) {\bf u}\cdot{\bf B} & 0 & 0 & u\end{array}\right]\end{displaymath}

The left and right eigenvectors of the primitive Jacobian matrix Ap, due to Powell et al [63], are:

Entropy wave:

Alfven Waves:

Fast waves:

Slow waves:

Where:

We can transform between the primitive and conserved variables with the following transform:

\begin{displaymath}
A_c = \frac{\partial {\bf U}}{\partial {\bf W}} A_p \frac{\partial {\bf W}}{\partial {\bf U}}\end{displaymath}

where:

\begin{displaymath}
{\bf U} = (\rho,\rho u, \rho v, \rho w, B_x, B_y, B_z, E)\end{displaymath}

are the conserved variables and:

\begin{displaymath}
{\bf W} = (\rho,u, v,w, B_x, B_y, B_z, p)\end{displaymath}

are the primitive variables. This gives:

\begin{displaymath}
\frac{\partial {\bf U}}{\partial {\bf W}} = 
\left[ \begin{a...
 ...rho w & B_x & B_y & B_z & \frac{1}{\gamma-1}\end{array} \right]\end{displaymath}

and

\begin{displaymath}
\frac{\partial {\bf W}}{\partial {\bf U}} = 
\left[ \begin{a...
 ...gamma} B_y & -\bar{\gamma}B_z & \bar{\gamma}\end{array} \right]\end{displaymath}

where $\bar{\gamma} = \gamma-1$.

We are now in a position to evaluate the upwinded flux at the element boundaries. We use following formulation for the upwinded flux:

Here the ${\bf l_k}$ and ${\bf r_k}$ are the ordered left and right eigenvectors of the primitive Jacobian matrix. We have to apply the $\frac{\partial {\bf U}}{\partial {\bf W}}$ operator to the right eigenvectors to calculate the conserved flux. The $\lambda_k$ are the wave speeds associated with the eigenvectors.


next up previous contents
Next: Implementation of the Viscous Up: Compressible Viscous Magnetohydrodynamics Simulations Previous: The Constraint
T. Warburton
10/24/1998