{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## 2D Euler Quadrants with PyClaw\n", "## Aron Ahmadia\n", "\n", "This entire notebook is licensed under a Creative Commons Attribution 3.0 Unported License.\n", "\n", "All code in this notebook is usable under the terms of the BSD license.\n", "\n", "\"Creative\n", "\n", "This example demonstrates the interactive properties of PyClaw from a web notebook.\n", "\n", "The data here consists of four constant values in four quadrants chosen so that each pair of data gives a single shock wave in its solution. The interaction at the corner leads to a more complicated wave structure. \n", "\n", "The four fields are:\n", "\n", "* density\n", "* momentum in $u$\n", "* momentum in $v$\n", "* energy\n", "\n", "For more information, see:\n", "\n", "Figure 4 of C. W. Schulz-Rinne and J. P. Collins and H. M. Glaz, Numerical Solution of the {R}iemann Problem for Two-Dimensional Gas Dynamics, SIAM J. Sci. Comput. 14 (1993), pp. 1394-1414\n", "\n", "Figure 6 in R. J. LeVeque, Wave propagation algorithms for multi-dimensional hyperbolic systems, J. Comput. Phys. 131 (1997), pp. 327-353." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "from matplotlib import animation\n", "import numpy as np\n", "plt.rcParams['figure.figsize'] = 10, 10" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 54 }, { "cell_type": "code", "collapsed": false, "input": [ "#!/usr/bin/env python\n", "# encoding: utf-8\n", "\n", "\"\"\"\n", "Solve the Euler equations of compressible fluid dynamics.\n", "\"\"\"\n", "from clawpack import pyclaw\n", "from clawpack import riemann\n", "\n", "Nx=200\n", "Ny=200\n", "\n", "solver = pyclaw.ClawSolver2D(riemann.euler_4wave_2D)\n", "solver.all_bcs = pyclaw.BC.extrap\n", "\n", "domain = pyclaw.Domain([0.,0.],[1.,1.],[Nx,Ny])\n", "solution = pyclaw.Solution(solver.num_eqn,domain)\n", "gamma = 1.4\n", "solution.problem_data['gamma'] = gamma\n", "solver.dimensional_split = False\n", "solver.transverse_waves = 2" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 55 }, { "cell_type": "code", "collapsed": false, "input": [ "# Set initial data\n", "xx,yy = domain.grid.p_centers\n", "l = xx<0.8; r = xx>=0.8; b = yy<0.8; t = yy>=0.8\n", "solution.q[0,...] = 1.5*r*t + 0.532258064516129*l*t + 0.137992831541219*l*b + 0.532258064516129*r*b\n", "u = 0.*r*t + 1.206045378311055*l*t + 1.206045378311055*l*b + 0.*r*b\n", "v = 0.*r*t + 0.*l*t + 1.206045378311055*l*b + 1.206045378311055*r*b\n", "p = 1.5*r*t + 0.3*l*t + 0.029032258064516*l*b + 0.3*r*b\n", "solution.q[1,...] = solution.q[0,...] * u\n", "solution.q[2,...] = solution.q[0,...] * v\n", "solution.q[3,...] = 0.5*solution.q[0,...]*(u**2+v**2) + p/(gamma-1.)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 56 }, { "cell_type": "code", "collapsed": false, "input": [ "def display_q(q):\n", " x = np.linspace(0, 1, Nx)\n", " y = np.linspace(0, 1, Ny)\n", " x,y = np.meshgrid(x,y)\n", " z = q[0,:,:]\n", " cont = ax.contourf(x, y, z, 500)\n", " return cont" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 57 }, { "cell_type": "code", "collapsed": false, "input": [ "fig = plt.figure()\n", "ax = plt.axes(xlim=(0, 1), ylim=(0, 1))\n", "display_q(solution.q)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 58, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nRFgBACQRVgAASYQVAEASYQUAkERYAQAkEVYAAEmEFQBAEmEFAJBEWAEAJBFWAABJhBUAQBJhBQCQ\nRFgBACQRVgAASYQVAEASYQUAkERYAQAkEVYAAEmEFQBAEmEFAJBEWAEAJBFWAABJhBUAQBJhBQCQ\nRFgBACQRVgAASYQVAEASYQUAkERYAQAkEVYAAEmEFQBAEmEFAJBEWAEAJBFWAABJhBUAQBJhBQCQ\nRFgBACQRVgAASYQVAEASYQUAkERYAQAkEVYAAEmEFQBAEmEFAJBEWAEAJBFWAABJhBUAQBJhBQCQ\nRFgBACQRVgAASYQVAEASYQUAkERYAQAkEVYAAEmEFQBAEmEFAJBEWAEAJBFWAABJhBUAQBJhBQCQ\nRFgBACQRVgAASYQVAEASYQUAkERYAQAkEVYAAEmEFQBAEmEFAJBEWAEAJBFWAABJhBUAQBJhBQCQ\nRFgBACQRVgAASYQVAEASYQUAkERYAQAkEVYAAEmEFQBAEmEFAJBk3LDq6emJxsbGaGhoiK1bt151\n3XvvvRdVVVXx6quvpg4IADBTjBlWIyMjsWnTpujp6YnDhw/H9u3b48iRI1dc96Mf/SjWrl0bRVFM\n2rAAANPZmGHV19cX9fX1sXDhwqiuro729vbo7u7+wrqnn346Hnjggbj55psnbVAAgOluzLAaGhqK\nurq60ePa2toYGhr6wpru7u7YuHFjRESUSqVJGBMAYPqrGutkOZH06KOPxpNPPhmlUimKohjnq8De\nS35e+NkLAKDCDvdefF2jMcOqpqYmBgcHR48HBwejtrb2sjXvv/9+tLe3R0TEqVOnYvfu3VFdXR1t\nbW1XuOKqax4YACDdklUXX5/buWVClxkzrFpbW6O/vz8GBgZiwYIFsWPHjti+fftla37/+9+P/rx+\n/fr4xje+cZWoAgD45zZmWFVVVUVXV1esWbMmRkZGYsOGDdHU1BTbtm2LiIjOzs4pGRIAYCYoFVP0\nfISL92ttnoq3AoAKuyWitDHiexHxlUrPwoS0lyb0CClPXgcASCKsAACSCCsAgCTCCgAgibACAEgi\nrAAAkggrAIAkwgoAIImwAgBIIqwAAJIIKwCAJMIKACCJsAIASCKsAACSCCsAgCTCCgAgibACAEgi\nrAAAkggrAIAkwgoAIImwAgBIIqwAAJIIKwCAJMIKACCJsAIASCKsAACSCCsAgCTCCgAgibACAEgi\nrAAAkggrAIAkwgoAIImwAgBIIqwAAJIIKwCAJMIKACCJsAIASCKsAACSCCsAgCTCCgAgibACAEgi\nrAAAkggrAIAkwgoAIImwAgBIIqwAAJIIKwCAJMIKACCJsAIASCKsAACSCCsAgCTCCgAgibACAEgi\nrAAAkggrAIAkwgoAIImwAgBIIqwAAJIIKwCAJMIKACCJsAIASCKsAACSCCsAgCTCCgAgibACAEgi\nrAAAkggrAIAkwgoAIImwAgBIIqwAAJIIKwCAJMIKACCJsAIASCKsAACSCCsAgCTCCgAgibACAEgi\nrAAAkggrAIAkwgoAIImwAgBIIqwAAJIIKwCAJMIKACCJsAIASCKsAACSCCsAgCTCCgAgibACAEgi\nrAAAkggrAIAkwgoAIImwAgBIIqwAAJIIKwCAJMIKACCJsAIASCKsAACSCCsAgCTCCgAgibACAEgi\nrAAAkggrAIAkZYVVT09PNDY2RkNDQ2zduvUL519++eVoaWmJpUuXxl133RWHDh1KHxQAYLqrGm/B\nyMhIbNq0Kfbs2RM1NTVxxx13RFtbWzQ1NY2uWbRoUbz99tsxe/bs6Onpie9+97uxb9++SR0cAGC6\nGfcTq76+vqivr4+FCxdGdXV1tLe3R3d392VrVq5cGbNnz46IiBUrVsSJEycmZ1oAgGls3E+shoaG\noq6ubvS4trY29u/ff9X1zz77bKxbt+4qZ3sv+XnhZy8AgAo73HvxdY3GDatSqVT2xd5888147rnn\n4p133rnKilVlXwsAYMosWXXx9bmdWyZ0mXHDqqamJgYHB0ePBwcHo7a29gvrDh06FB0dHdHT0xNz\n5syZ0DAAADPZuPdYtba2Rn9/fwwMDMT58+djx44d0dbWdtmaP/7xj/Gtb30rfvGLX0R9ff2kDQsA\nMJ2N+4lVVVVVdHV1xZo1a2JkZCQ2bNgQTU1NsW3btoiI6OzsjMcffzxOnz4dGzdujIiI6urq6Ovr\nm9zJAQCmmVJRFMWUvFGpFBGbp+KtAKDCbokobYz4XkR8pdKzMCHtpZhIInnyOgBAEmEFAJBEWAEA\nJBFWAABJhBUAQBJhBQCQRFgBACQRVgAASYQVAEASYQUAkERYAQAkEVYAAEmEFQBAEmEFAJBEWAEA\nJBFWAABJhBUAQBJhBQCQRFgBACQRVgAASYQVAEASYQUAkERYAQAkEVYAAEmEFQBAEmEFAJBEWAEA\n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\n", "text": [ "" ] } ], "prompt_number": 58 }, { "cell_type": "code", "collapsed": false, "input": [ "claw = pyclaw.Controller()\n", "claw.keep_copy=True\n", "claw.tfinal = 0.8\n", "claw.num_output_times = 10\n", "claw.solution = solution\n", "claw.solver = solver" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 59 }, { "cell_type": "code", "collapsed": false, "input": [ "status = claw.run()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "2013-11-17 13:09:37,950 INFO CLAW: Solution 0 computed for time t=0.000000\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2013-11-17 13:09:39,615 INFO CLAW: Solution 1 computed for time t=0.080000\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2013-11-17 13:09:41,297 INFO CLAW: Solution 2 computed for time t=0.160000\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2013-11-17 13:09:43,090 INFO CLAW: Solution 3 computed for time t=0.240000\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2013-11-17 13:09:44,874 INFO CLAW: Solution 4 computed for time t=0.320000\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2013-11-17 13:09:46,675 INFO CLAW: Solution 5 computed for time t=0.400000\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2013-11-17 13:09:48,523 INFO CLAW: Solution 6 computed for time t=0.480000\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2013-11-17 13:09:50,389 INFO CLAW: Solution 7 computed for time t=0.560000\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2013-11-17 13:09:52,302 INFO CLAW: Solution 8 computed for time t=0.640000\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2013-11-17 13:09:54,295 INFO CLAW: Solution 9 computed for time t=0.720000\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2013-11-17 13:09:56,310 INFO CLAW: Solution 10 computed for time t=0.800000\n" ] } ], "prompt_number": 60 }, { "cell_type": "code", "collapsed": false, "input": [ "VIDEO_TAG = \"\"\"\"\"\"\n", "\n", "def anim_to_html(anim):\n", " if not hasattr(anim, '_encoded_video'):\n", " with open('animation.mp4','w') as f:\n", " anim.save(f.name, fps=1, extra_args=['-vcodec', 'libx264'])\n", " video = open(f.name, \"rb\").read()\n", " anim._encoded_video = video.encode(\"base64\")\n", " \n", " return VIDEO_TAG.format(anim._encoded_video)\n", "\n", "from IPython.display import HTML\n", "\n", "def display_animation(anim):\n", " plt.close(anim._fig)\n", " return HTML(anim_to_html(anim))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 61 }, { "cell_type": "code", "collapsed": false, "input": [ "fig = plt.figure()\n", "ax = plt.axes(xlim=(0, 1), ylim=(0, 1))\n", "\n", "def animate(i): \n", " display_q(claw.frames[i].q)\n", " \n", "anim = animation.FuncAnimation(fig, animate, frames=len(claw.frames), blit=False)\n", "print \"created animation\"\n", "display_animation(anim)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "created animation\n" ] }, { "html": [ "" ], "metadata": {}, "output_type": "pyout", "prompt_number": 62, "text": [ "" ] } ], "prompt_number": 62 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }