This notebook illustrates some features of the exact solution to the 1-dimensional Euler equations of compressible gas dynamics.
The notebook can be found in the clawpack apps respository:
%matplotlib inline import matplotlib.pyplot as plt import numpy as np from IPython.display import FileLink
The next cell imports a module containing a function that takes a Riemann problem (left state, right state, and approximate solver), and computes the Riemann solution, as well as functions to plot the solution in various forms.
#from clawpack.riemann import riemann_tools # the version from clawpack.riemann needs updating, # for active development use the version in this repository instead: import sys sys.path.insert(0,'..') import riemann_tools
We can compute the exact solution to the Riemann problem for the Euler equations.
import Euler_exact_Riemann_solver FileLink('Euler_exact_Riemann_solver.py') # Link to examine the exact Riemann solver
gamma = 1.4 in_vars = 'primitive' # so components of q are (rho,u,p) q_l = np.array((3.,0.,3.)) q_r = np.array((1.,0.,1.)) states, speeds, riemann_eval = Euler_exact_Riemann_solver.exact_riemann_solution(q_l ,q_r, gamma, in_vars=in_vars, out_vars='primitive')
Note that we specified
out_vars = 'primitive' above, so that the states returned are in terms of the primitive variables (density, velocity, pressure). This allows us to confirm that the pressure and velocity are constant across the 2-wave (contact discontinuity) and only the density has a jump discontinuity.
Since the phase space is 3-dimensional, we show two different projections, to density-velocity and to density-pressure:
fig = plt.figure(figsize=(8,3)) ax = plt.subplot(1,2,1) riemann_tools.plot_phase(states, ax=ax, i_h = 0, i_v = 1, label_h='density', label_v='velocity') ax = plt.subplot(1,2,2) riemann_tools.plot_phase(states, ax=ax, i_h = 0, i_v = 2, label_h='density', label_v='pressure')
In both cases we see that the variable on the vertical axis is constant between the two middle states.
We can also see this in the solution plotted below.