Last active
April 20, 2025 09:21
-
-
Save ketch/08ce0845da0c8f3fa9ff to your computer and use it in GitHub Desktop.
An exact Riemann solver for the Euler equations, with interactive widgets.
#riemann-problem #euler-equations
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"metadata": { | |
"name": "", | |
"signature": "sha256:56aeb3b92ef6f93ecdc34162e793c8896811d1a61a12c2b4763a3500ec3ca61b" | |
}, | |
"nbformat": 3, | |
"nbformat_minor": 0, | |
"worksheets": [ | |
{ | |
"cells": [ | |
{ | |
"cell_type": "heading", | |
"level": 1, | |
"metadata": {}, | |
"source": [ | |
"The Riemann problem for the Euler equations" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"This is an exact Riemann solver for the one-dimensional Euler equations of compressible flow. It is based on Sections 14.11-14.12 of [Randall LeVeque's finite volume text](http://depts.washington.edu/clawpack/book.html)." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<a rel=\"license\" href=\"http://creativecommons.org/licenses/by/4.0/\"><img alt=\"Creative Commons License\" style=\"border-width:0\" src=\"https://i.creativecommons.org/l/by/4.0/80x15.png\" /></a><br /><span xmlns:dct=\"http://purl.org/dc/terms/\" property=\"dct:title\">This example</span> by <a href=\"http://davidketcheson.info\">David Ketcheson</a> is licensed under a <a rel=\"license\" href=\"http://creativecommons.org/licenses/by/4.0/\">Creative Commons Attribution 4.0 International License</a>. All code examples are also licensed under the [MIT license](http://opensource.org/licenses/MIT)." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Contents\n", | |
"\n", | |
" - <a href=\"#solver\">Riemann solver</a>\n", | |
" - <a href=\"#examples\">Example Riemann problems</a>\n", | |
" - <a href=\"#sod\">Sod shock tube</a>\n", | |
" - <a href=\"#expansion\">Expansion</a>\n", | |
" - <a href=\"#collision\">Collision</a>\n", | |
" - <a href=\"#interact\">Interactive widget</a>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"%matplotlib inline\n", | |
"import numpy as np\n", | |
"import matplotlib.pyplot as plt\n", | |
"from scipy.optimize import fsolve" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 2 | |
}, | |
{ | |
"cell_type": "heading", | |
"level": 1, | |
"metadata": {}, | |
"source": [ | |
"<div id=\"solver\"></div>\n", | |
"\n", | |
"Riemann solver" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The cell below contains the code for the Riemann solver. In order to be similar to approximate Riemann solvers used in numerical codes, it takes the conserved quantities *(density, momentum, energy)* as inputs. For convenience, it returns the solution in primitive variables *(density, velocity, pressure)*." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"def exact_riemann_solution(q_l,q_r,x=None,t=None,gamma=1.4):\n", | |
" \"\"\"Return the exact solution to the Riemann problem with initial states q_l, q_r.\n", | |
" The solution is computed at time t and points x (where x may be a 1D numpy array).\n", | |
" \n", | |
" The input vectors are the conserved quantities but the outputs are [rho,u,p].\n", | |
" \"\"\"\n", | |
" rho_l = q_l[0]\n", | |
" u_l = q_l[1]/q_l[0]\n", | |
" E_l = q_l[2]\n", | |
" \n", | |
" rho_r = q_r[0]\n", | |
" u_r = q_r[1]/q_r[0]\n", | |
" E_r = q_r[2]\n", | |
"\n", | |
" # Compute left and right state pressures\n", | |
" p_l = (gamma-1.)*(E_l - 0.5*rho_l*u_l**2)\n", | |
" p_r = (gamma-1.)*(E_r - 0.5*rho_r*u_r**2)\n", | |
"\n", | |
" # Compute left and right state sound speeds\n", | |
" c_l = np.sqrt(gamma*p_l/rho_l)\n", | |
" c_r = np.sqrt(gamma*p_r/rho_r)\n", | |
" \n", | |
" alpha = (gamma-1.)/(2.*gamma)\n", | |
" beta = (gamma+1.)/(gamma-1.)\n", | |
"\n", | |
" # Check for cavitation\n", | |
" if u_l - u_r + 2*(c_l+c_r)/(gamma-1.) < 0:\n", | |
" print 'Cavitation detected! Exiting.'\n", | |
" return None\n", | |
" \n", | |
" # Define the integral curves and hugoniot loci\n", | |
" integral_curve_1 = lambda p : u_l + 2*c_l/(gamma-1.)*(1.-(p/p_l)**((gamma-1.)/(2.*gamma)))\n", | |
" integral_curve_3 = lambda p : u_r - 2*c_r/(gamma-1.)*(1.-(p/p_r)**((gamma-1.)/(2.*gamma)))\n", | |
" hugoniot_locus_1 = lambda p : u_l + 2*c_l/np.sqrt(2*gamma*(gamma-1.)) * ((1-p/p_l)/np.sqrt(1+beta*p/p_l))\n", | |
" hugoniot_locus_3 = lambda p : u_r - 2*c_r/np.sqrt(2*gamma*(gamma-1.)) * ((1-p/p_r)/np.sqrt(1+beta*p/p_r))\n", | |
" \n", | |
" # Check whether the 1-wave is a shock or rarefaction\n", | |
" def phi_l(p): \n", | |
" if p>=p_l: return hugoniot_locus_1(p)\n", | |
" else: return integral_curve_1(p)\n", | |
" \n", | |
" # Check whether the 1-wave is a shock or rarefaction\n", | |
" def phi_r(p):\n", | |
" if p>=p_r: return hugoniot_locus_3(p)\n", | |
" else: return integral_curve_3(p)\n", | |
" \n", | |
" phi = lambda p : phi_l(p)-phi_r(p)\n", | |
"\n", | |
" # Compute middle state p, u by finding curve intersection\n", | |
" p,info, ier, msg = fsolve(phi, (p_l+p_r)/2.,full_output=True,xtol=1.e-14)\n", | |
" # For strong rarefactions, sometimes fsolve needs help\n", | |
" if ier!=1:\n", | |
" p,info, ier, msg = fsolve(phi, (p_l+p_r)/2.,full_output=True,factor=0.1,xtol=1.e-10)\n", | |
" # This should not happen:\n", | |
" if ier!=1: \n", | |
" print 'Warning: fsolve did not converge.'\n", | |
" print msg\n", | |
"\n", | |
" u = phi_l(p)\n", | |
"\n", | |
" \n", | |
" # Find middle state densities\n", | |
" rho_l_star = (p/p_l)**(1./gamma) * rho_l\n", | |
" rho_r_star = (p/p_r)**(1./gamma) * rho_r\n", | |
" \n", | |
" # compute the wave speeds\n", | |
" ws = np.zeros(5) \n", | |
" # The contact speed:\n", | |
" ws[2] = u\n", | |
" \n", | |
" # Find shock and rarefaction speeds\n", | |
" if p>p_l: \n", | |
" ws[0] = (rho_l*u_l - rho_l_star*u)/(rho_l - rho_l_star)\n", | |
" ws[1] = ws[0]\n", | |
" else:\n", | |
" c_l_star = np.sqrt(gamma*p/rho_l_star)\n", | |
" ws[0] = u_l - c_l\n", | |
" ws[1] = u - c_l_star\n", | |
"\n", | |
" if p>p_r: \n", | |
" ws[4] = (rho_r*u_r - rho_r_star*u)/(rho_r - rho_r_star)\n", | |
" ws[3] = ws[4]\n", | |
" else:\n", | |
" c_r_star = np.sqrt(gamma*p/rho_r_star)\n", | |
" ws[3] = u+c_r_star\n", | |
" ws[4] = u_r + c_r \n", | |
" \n", | |
"\n", | |
" # Compute return values\n", | |
"\n", | |
" # Choose a time based on the wave speeds\n", | |
" if x is None: x = np.linspace(-1.,1.,1000)\n", | |
" if t is None: t = 0.8*max(np.abs(x))/max(np.abs(ws))\n", | |
" \n", | |
" xs = ws*t # Wave locations\n", | |
" \n", | |
" # Find solution inside rarefaction fans\n", | |
" xi = x/t\n", | |
" u1 = ((gamma-1.)*u_l + 2*(c_l + xi))/(gamma+1.)\n", | |
" u3 = ((gamma-1.)*u_r - 2*(c_r - xi))/(gamma+1.)\n", | |
" rho1 = (rho_l**gamma*(u1-xi)**2/(gamma*p_l))**(1./(gamma-1.))\n", | |
" rho3 = (rho_r**gamma*(xi-u3)**2/(gamma*p_r))**(1./(gamma-1.))\n", | |
" p1 = p_l*(rho1/rho_l)**gamma\n", | |
" p3 = p_r*(rho3/rho_r)**gamma\n", | |
" \n", | |
" rho_out = (x<=xs[0])*rho_l + (x>xs[0])*(x<=xs[1])*rho1 + (x>xs[1])*(x<=xs[2])*rho_l_star + (x>xs[2])*(x<=xs[3])*rho_r_star + (x>xs[3])*(x<=xs[4])*rho3 + (x>xs[4])*rho_r\n", | |
" u_out = (x<=xs[0])*u_l + (x>xs[0])*(x<=xs[1])*u1 + (x>xs[1])*(x<=xs[2])*u + (x>xs[2])*(x<=xs[3])*u + (x>xs[3])*(x<=xs[4])*u3 + (x>xs[4])*u_r\n", | |
" p_out = (x<=xs[0])*p_l + (x>xs[0])*(x<=xs[1])*p1 + (x>xs[1])*(x<=xs[2])*p + (x>xs[2])*(x<=xs[3])*p + (x>xs[3])*(x<=xs[4])*p3 + (x>xs[4])*p_r\n", | |
" return rho_out, u_out, p_out" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 3 | |
}, | |
{ | |
"cell_type": "heading", | |
"level": 1, | |
"metadata": {}, | |
"source": [ | |
"<div id=\"examples\"></div>\n", | |
"\n", | |
"Examples" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's try this solver out on some interesting initial states. Note that the Euler equations are invariant under Galilean transformations, so we can without loss of generality take $u_l+u_r=0$." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"gamma = 7./5." | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 4 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"def plot_exact_riemann_solution(rho_l=3.,u_l=0.,p_l=3.,rho_r=1.,u_r=0.,p_r=1.,t=0.4):\n", | |
" E_l = p_l/(gamma-1.) + 0.5*rho_l*u_l**2\n", | |
" E_r = p_r/(gamma-1.) + 0.5*rho_r*u_r**2\n", | |
" \n", | |
" q_l = [rho_l, rho_l*u_l, E_l]\n", | |
" q_r = [rho_r, rho_r*u_r, E_r]\n", | |
" \n", | |
" x = np.linspace(-1.,1.,1000)\n", | |
" rho, u, p = exact_riemann_solution(q_l, q_r, x, t, gamma=gamma)\n", | |
"\n", | |
" fig = plt.figure(figsize=(18,6))\n", | |
" primitive = [rho,u,p]\n", | |
" names = ['Density','Velocity','Pressure']\n", | |
" axes = [0]*3\n", | |
" for i in range(3):\n", | |
" axes[i] = fig.add_subplot(1,3,i+1)\n", | |
" q = primitive[i]\n", | |
" plt.plot(x,q,linewidth=3)\n", | |
" plt.title(names[i])\n", | |
" qmax = max(q)\n", | |
" qmin = min(q)\n", | |
" qdiff = qmax - qmin\n", | |
" axes[i].set_ylim((qmin-0.1*qdiff,qmax+0.1*qdiff))" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 5 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<div id=\"sod\"></div>\n", | |
"\n", | |
"#1: Sod shock tube" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"First we consider the classic shock tube problem, with high density and pressure on the left, low density and pressure on the right. Both sides are initially at rest. The solution includes a rarefaction, a contact, and a shock." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"plot_exact_riemann_solution(rho_l=3.,\n", | |
" u_l = 0.,\n", | |
" p_l = 3.,\n", | |
" rho_r=1.,\n", | |
" u_r = 0.,\n", | |
" p_r = 1.)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"metadata": {}, | |
"output_type": "display_data", | |
"png": "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\nQmCC\n", | |
"text": [ | |
"<matplotlib.figure.Figure at 0x1071a9310>" | |
] | |
} | |
], | |
"prompt_number": 8 | |
}, | |
{ | |
"cell_type": "heading", | |
"level": 2, | |
"metadata": {}, | |
"source": [ | |
"<div id=\"expansion\"></div>\n", | |
"\n", | |
"2: Symmetric expansion" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Next we consider the case of equal densities and pressures, and equal and opposite velocities, with the initial states moving away from each other. The result is two rarefaction waves (the contact has zero strength)." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"plot_exact_riemann_solution(rho_l=1.,\n", | |
" u_l = -3.,\n", | |
" p_l = 1.,\n", | |
" rho_r=1.,\n", | |
" u_r = 3.,\n", | |
" p_r = 1.,\n", | |
" t = 0.1)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"metadata": {}, | |
"output_type": "display_data", | |
"png": "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\n", | |
"text": [ | |
"<matplotlib.figure.Figure at 0x10730b0d0>" | |
] | |
} | |
], | |
"prompt_number": 11 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Notice that, by symmetry, we must have $u=0$ in the middle state. As we make the initial velocities larger in magnitude, the rarefaction waves increase in strength until the pressure and density at $x=0$ reach zero. In the plot above, the middle pressure is very close but not quite equal to zero.\n", | |
"\n", | |
"For what initial velocity $u_r=-u_l$ does the middle pressure vanish? We can find it by solving the equation that describes the 3- (or 1-) Riemann invariant with $u=p=0$. For $\\rho_r=p_r=1$, this gives $u_r \\approx 5.916$. What happens if the velocities are set to larger than this value in the problem above?\n", | |
"\n", | |
"More generally, cavitation occurs if\n", | |
"\n", | |
"$$u_l + 2\\frac{c_l}{\\gamma-1} < u_r + 2\\frac{c_r}{\\gamma-1}.$$\n" | |
] | |
}, | |
{ | |
"cell_type": "heading", | |
"level": 2, | |
"metadata": {}, | |
"source": [ | |
"<div id=\"collision\"></div>\n", | |
"\n", | |
"3: Colliding flows" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Next, consider the case in which the left and right states are moving toward eachother. This leads to a pair of shocks, with a high-density, high-pressure state in between." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"plot_exact_riemann_solution(rho_l=1.,\n", | |
" u_l = 3.,\n", | |
" p_l = 1.,\n", | |
" rho_r=1.,\n", | |
" u_r = -3.,\n", | |
" p_r = 1.,\n", | |
" t = 0.4)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"metadata": {}, | |
"output_type": "display_data", | |
"png": "iVBORw0KGgoAAAANSUhEUgAABA0AAAF6CAYAAAByYqEzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XuY7GdVJ/rvIjtcIzdBrhmjDKh4BYXh6CCFihORB8bn\n6BFGEGEEPONtlFFuHu0eHwfFUWGGcQYRGK7RI8olCiNRKQ7IDAokGJMwXARJBMIlCCgihLznj6ps\nKt1Vneq9u+r9Vdfn8zz7SXXVr6vXXqletfZ639+vqrUWAAAAgL1u0DsAAAAAYJgMDQAAAIC5DA0A\nAACAuQwNAAAAgLkMDQAAAIC5DA0AAACAuQwN2DhVdd+qenvvOAA2VVWdU1XXVNVp9QFV9cmqOudo\nogIAhsjQgNNSVe+tqk9V1Seq6mNV9adV9biqqlX9zNba61trX74nhm9Z1c8DGKqq+h9VtTvn/odU\n1QdOdyhwfVprX9Bae+/0Z/73qvr5Vf48gCGZ6YM/WVUfrKrnVdXNescFR83QgNPVkjyotXbzJP8k\nyS8meUKS56w5hpUNKQAG7L8nefic+x+R5EWttWvWGw7AVrm2D/6CJPdM8g1Jfmb2gKo60SOwPTGc\n0TsGNpuhAUemtfbJ1tr5Sb43ySOr6u5VdaOq+o9V9dfTCex/raobJ0lVjarqiqr6yaq6sqreX1U/\ncO3zVdUDq+qS6S6GK6rq8TPfd/n09gszGVacP53y/lRV/X5V/chsbFX1F1X1kDWlAmBdXpHkC6vq\nvtfeUVW3SvKdSV5QVU+sqndV1Ueq6renj+1TVXesqldW1Uer6p1V9YMzj92gqp48fZ5PVNWbq+pO\n08euqaq7VNVjk/yrJD89rcWvrKp/V1Uv3fNz/lNVPX0FeQDoqrX2/iSvTvJV09r4b6rqnUn+d5JU\n1YOq6qKZnblffe33VtUTpr3uJ6rq7dfuoK2qe09r7senffSvTO8/2QvPPMd7Z75vp6peWlUvrKqP\nZ9KX36KqnjPtt6+oqp9f9W40jg8vFI5ca+3Pk1yR5Jsz2XnwT5N87fS/d0ryszOH3y7JzZPcMcm/\nTvJfquoW08eek+Sx010MX5nkT+b8rEckeV+mU97W2i8neX5mVt6q6munz/8HR/jXBOiutfYPSf7f\nJN8/c/f/leTtSe6f5CGZ1OI7JPlYkv+y4Kl+K5Naeock353kP1TV/aePPT7JQ5N8x7QePzrJP1w3\njPYbSV6c5JemtfjBSV6U5Nxra/p0te17M6nRAMdFJUlVnZ3kgUkunN7/kCT3SnL3qrpHJn3tY5Lc\nOsmzkryyqs6sqi9L8sNJvmFaY789yXunz/GMJL/WWrtFki9N8tsHxNH2fP3gJL8z/d6XZLIz7TNJ\n7pLkHtOf84OBJRgasCrvz6QoPibJT7bW/ra19ndJnppJ83mtzyb59621z7XWXp3k75J82fSxzyT5\nyqq6eWvt4621C7Oc85PcraruMv36EUl+q7V29Wn+nQCG6PlJvruqbjj9+vun9/1Qkqe01t7fWvts\nkt3pcdd57582ut+Y5Amttc+01t6W5Dfz+UHED06f551J0lr7i9baVQtiOXmqWGvtg0len+R7pned\nm+TDh6jlAENXSV5eVR/LpN6Nk/yH6WNPnfa//5jksUme1Vr78zbxgiT/mOT/SHJ1khtl0vOe2Vp7\nX2vtr6bP8Zkkd62q27TWPtVa+7NDxPbG1torp7dvkeQ7kvxEa+0fWmsfTvL0XLcnh4UMDViVOyU5\nkeSmSd4y3Yr1sUy2bd1m5riP7jnn9lNJzpre/j8zmdi+t6rGVXWfZX5wa+3Tmay8PWJ6QcaHJnnh\naf1tAAaqtfanST6S5Lumw9J7ZbKqdE6Sl83U30szaU5vt+cp7pjkqtba38/c977p/Uly5yTvPsXw\nZnd+PTxqMXC8tCQPaa3dqrV2TmvtR6Z9aJLMnj7wxUkef209ntbkOye5Q2vt3Un+bZKdJFdW1XlV\ndYfp9/3rJHdLcllV/VlVfechYrtiz88/M8kHZn7+f0ty20P+fdlShgYcuaq6VyZDg5dnsoX17tNi\neqvW2i2nW6+uV2vtza21f5lJQXt5JoOAuYfOue/5Sb4vybcl+VRr7U2H/XsAbJAXZLIz4OFJ/kdr\n7UOZ/MP/3Jn6e6vW2k1bax/Y873vT3Lrqjpr5r5/kuRvprcvz+T0suszrxa/IsnXVNVXZXKdhRcv\n/1cC2GizNfF9SX5hTz0+q7X220nSWjuvtXbfTP5x35L80vT+d7XW/lVr7bbT+15aVTdJ8veZLMwl\nOXmhw70DgNmff3kmOxu+cObn36K19tWBJRgacBSuPZfr5lX1oCTnJXlha+0vkjw7ydOr6rbTY+5U\nVd9+vU84Ocfr+6rqFq21zyX5ZJLPLTj8ykzOzzqptfY/MymW/zGTZhrgOHtBkgdkcirBtdcM+G+Z\n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\nqm6b5IKqevt0SnScLfv62Dst3IrX1Yxl/r5vTXJ2a+1TVfUdSV6eyVZJrmsjX0tq8XLU4lOiDi9H\nHT46G/laUoeXow6fMrV4OWrx0TnUa+nAoUFr7QGnGczfJDl75uuzM5lkHCsH5Wl6EYrbt9Y+WFV3\nSPKhBc/xgel/P1xVL8tk+81xL5DLvD72HnPn6X3b5Hrz1Fr75MztV1fVr1fVrVtrV60pxk2wsa8l\ntXg5avEpUYeXow4fjY19LanDy1GHT5lavBy1+Ggc+rV0VKcnLDpv5M1J7lpV51TVDZN8b5JXHtHP\n3BSvTPLI6e1HZjLtuo6qumlVfcH09s2SfHuShVe7PEaWeX28Msn3J0lV3SfJ385sbdsW15unqrpd\nVdX09r2TlOK4zza8ltTixdTi+dTh5ajDR2MbXkvq8GLq8GJq8XLU4qNx+NfSaVyV8bsyORfiH5J8\nMMmrp/ffMckfzBz3HUn+dyZXunzSqf68Tf2T5NZJ/ijJO5K8Jskt9+YpyZdmcvXPi5L85Tblad7r\nI8njkjxu5phnTh9/WxZclfi4/7m+PCX54elr56Ikb0xyn94xd8jReUnen+Qz09r06G14LanFS+dJ\nLV6cG3X4CPKkDqvD6vD15kkdPjg/avER5EktXk0truk3AQAAAFzHqj89AQAAANhQhgYAAADAXIYG\nAAAAwFyGBgAAAMBchgYAAADAXIYGAAAAwFyGBgAAAMBchgYAAADAXP8/TRjIK5adEPEAAAAASUVO\nRK5CYII=\n", | |
"text": [ | |
"<matplotlib.figure.Figure at 0x10730be50>" | |
] | |
} | |
], | |
"prompt_number": 14 | |
}, | |
{ | |
"cell_type": "heading", | |
"level": 2, | |
"metadata": {}, | |
"source": [ | |
"<div id=\"interact\"></div>\n", | |
"\n", | |
"Interactive Riemann solver" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Here you can set up your own Riemann problem and immediately see the solution. If you don't want to download and run the notebook, an online interactive version is [here](http://sagecell.sagemath.org/?z=eJytWNtu47YWfQ-Qf2BnHiLJsmzFGeAgqIsCnfaxOCgGpw-DwJAtOiaOLgwviTJf30VSlKjYSgdog8FEIdfeXPvKLbGat0KRRtf8lRSSNPz6irm1ulC8alXF9hl_NU9mn1fq-uoo2prIA-OvWcsVq9k3Snqho2yrZ3p9dX1V0iOhXXFQO8FoXTTNDltasbaJnnZV-rQTabf9vW1oqtyvx6Kui22e3cX311cEPx8-fPiDKi0aok7U6SJeB1GtXf3D6SZctPuK1uSFqRNhDVOsqIhUhaKSmOPwn8icWvx8geSgiUlyaGuuFS1JoQjsoQS2NiXhLWuUJB2JXk5UUDzUxSvZU1KQ_LP3mRDFazyqnpzBGqglz_SgWiEBpZbzoW0kFc847kkXjQJXkNwDaDZbrSDjwF_FqU11yh-ywSHuAeu7imyNZV_XD25NDyv5wyrc-HXYuO1XRiXC7ohAiV-xSkSgxG8YJW7tI_nF-Y1U9Og8JtjjSTm_IyRUSo3_HJpbGpGN8jLP4iQyxJZknX1KrD0JLEiS29jDxRlcBHABuHDw72IjW40VySkte0IHS6jhmXwSyh2UgOTKkok9RlzACIsRcejNouKnYsJ4Fd1mif2rB-6pGhELixjAgRUnevg_ObaCHIpnBu7IUbfHjjbISxulBblNIpiwAMVQEfmRrO-HJEQQkMLk5pdBFSmpQj7S8gcEtUPuNY_ZzYgXruBMQYbWfSSf6ZE1Ln-hkT4K1NdBI4uldfVJP7YNQ4-o2gPr6fawnYXtcixtSVXU-7IgnNxbW4wVMGIVxjnPlhFfIRJxkkQX3RnHF0_YnJ9gMsacIC6eIP72BG_WDmZpCRtmLfA5cus0JKPamCQkivKls2kA5guTD4lbvXzcZt6c7ztOXDxOxPE0ti7l0OMQXWFDnC9fimdqWmNB5KnFLvJRoCcd0YSHhDQtnp_Yrop4fO8zaMwl5Cv_aQvz7n1avXUn5EY4rSQdkG-TZ0D-W5yF4XzOVcxx3Xw31ymy72YnNo2ld9vSczlvYzUry4r6ZpoSTfavBEVYomRd6dmThaSBeTxlzbFNCaMiJbV8xKnuSo5wUEoiRGNh8-I2S4-6qnbuvtl-EZqmnWorXMB0md_Fns1vcKJUosWZgS9lioZaU3NXyv4A0pjWSk604kO7AosftnnYjv4JPXN2K7brLA-YrgNff8Sli_Aj-LoqSYNudCo4p800zj2pIFGDRvlnIRr4994bVTKnCHf2MxWPNOyVoxgs8fHTMMkH168NvkTwpmEtaSPt_R_c6zts2btvaIJ5tnJtCaVtIcEFPkGLS2jxNhk_-nnHlo0tmvBefJHuyvtGRSujT_Eg9cXNLsrOYUbg3gtgKICMvmCtK0R7GY_ZMznOVp5tEiNPaFwbjdEwGKDxjc5JNHq1m4HC5XiiIDcKrCK3bEt2RBxGR7-53ldzGi0lx-XgYxAept2GlfSh760Tb6y7G6yzc0xvhphaN12ectn01t3NWSfes25Wo154yXO6buowE9EQ5POm1bfE56LSJqnHbt220szNdrreFxLDb9tczj-4rDNd3Mwg93i0JlSskbw40AhXXGr-rde-8oFXI14Bv87-k9RFF0Gu2Muoi-NV8OeLnN5_nbSuTBR4_mnIoOHbUUmeF47L6eHNAcVb0klmHwsv1pmO361U3xbM6BDMGomfHcwMh4eOxX6KW9hx0AptzoTcBBAd7MNFIcQ3H0vHjwc6XwKNeXk1Trpx3y2C2WFQsRnz06vo2FJvpirErApuOOCMxCjJ-5m6V9UjNhYhLGLTT9QTxNjlcAsYPt2P286UYexeGOC2qPupX-k3c7eZD3v5uHfrBV1peMTtiNj0CDFFbEbEnUNshr07L-JfoAxXMmWr57nqWaZ6jqCe46WnrLTnxC9x4vOc-CwnPseJz3HiU07cc-r7RB_c1PktdVSB8Algp7WqxTuyyRLAUjMJdX5yOzIzQfBKZXjCq2aEX5J9o9soX6d3Qy4KVuOSRWVvx1dqt9UUZoDB8s1nexO_3qQ3_6PmHcY-_rd_hb3p4UXn0OuHZNMzwHjE0AjQBJpHGm3CmdKgvzLTOkErK8pyJ_XeWBPl6SZlizxowE_GDs8TQsHIBOusUJc-pWiD9IWV6rTdxFMIXFTRyNoD8VAzWh-Umwb4NFkGaSyzZrpcsuPRvOkbqaVFnRmUSap2rxWro8jsLzGQJVYuNVKL4U_vf_u5CAMyxqKD9B-KcGHUv9mgOdD4twni0KBtOwCfPLszt8n11c925kW3HZNjN_OZydb6Vlbo0QIu_5SayRFCha4U_JfqcXf56c32Ok75u8K25uf2c6NcvK_8PWFAxs9g7vsNn7wlo6jefjcJv9PwyQtvAPZfTcIG-2T1f7W6UjKoTM3BDx4iPEQ4iFVkIGLyTenvb-uhjIF85_OgORKFnhI0BfdhMPySEtQE9A2LQ59Agadd_BeW1ABm&lang=python)." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"from IPython.display import display, HTML\n", | |
"from IPython.html import widgets\n", | |
"from IPython.html.widgets import interact, interactive" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 15 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"interact(plot_exact_riemann_solution,\n", | |
" rho_l=(1.,10.,0.1),\n", | |
" u_l=(-5.,5.,0.1),\n", | |
" p_l=(1.,10.,0.1),\n", | |
" rho_r=(1.,10.,0.1),\n", | |
" u_r=(-5.,5.,0.1),\n", | |
" p_r=(1.,10.,0.1),\n", | |
" t=(0.1,1.,0.1));" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"metadata": {}, | |
"output_type": "display_data", | |
"png": "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\n", | |
"text": [ | |
"<matplotlib.figure.Figure at 0x107c34f90>" | |
] | |
} | |
], | |
"prompt_number": 16 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
} | |
], | |
"metadata": {} | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
There is a bug in this exact Riemann solver. When computing rho_l_star and rho_r_star you need to use
Find middle state densities