{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Stresses in a disk with diametrally opposite forces" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from sympy import *\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "IPython console for SymPy 1.4 (Python 3.6.9-64-bit) (ground types: gmpy)\n", "\n", "These commands were executed:\n", ">>> from __future__ import division\n", ">>> from sympy import *\n", ">>> x, y, z, t = symbols('x y z t')\n", ">>> k, m, n = symbols('k m n', integer=True)\n", ">>> f, g, h = symbols('f g h', cls=Function)\n", ">>> init_printing()\n", "\n", "Documentation can be found at https://docs.sympy.org/1.4/\n", "\n" ] } ], "source": [ "%matplotlib notebook\n", "init_session()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The stress function for a disk of diameter $d$ with center in the origin, and radial inward and opposite forces $P$ placed at $(0, d/2)$ and $(0, -d/2)$ is given by\n", "\n", "$$\\phi = x\\arctan\\left[\\frac{x}{d/2 - y}\\right] + x\\arctan\\left[\\frac{x}{d/2 + y}\\right] + \\frac{P}{\\pi d}(x^2 + y^2)$$\n", "\n", "We know that the stresses are given by\n", "\n", "\\begin{align}\n", "\\sigma_{xx} = \\frac{\\partial^2 \\phi}{\\partial x^2}\\\\\n", "\\sigma_{yy} = \\frac{\\partial^2 \\phi}{\\partial y^2}\\\\\n", "\\sigma_{xy} = -\\frac{\\partial^2 \\phi}{\\partial x \\partial y}\n", "\\end{align}" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "d, P = symbols(\"d P\", positive=True)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "phi = x*atan(x/(d/2 - y)) + x*atan(x/(d/2 + y)) + P/(pi*d)*(x**2 + y**2)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "Sxx = phi.diff(y, 2)\n", "Syy = phi.diff(x, 2)\n", "Sxy = -phi.diff(x, 1, y, 1)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle 2 \\left(\\frac{P}{\\pi d} - \\frac{32 x^{4}}{\\left(d + 2 y\\right)^{5} \\left(\\frac{4 x^{2}}{\\left(d + 2 y\\right)^{2}} + 1\\right)^{2}} - \\frac{32 x^{4}}{\\left(d - 2 y\\right)^{5} \\left(\\frac{4 x^{2}}{\\left(d - 2 y\\right)^{2}} + 1\\right)^{2}} + \\frac{8 x^{2}}{\\left(d + 2 y\\right)^{3} \\left(\\frac{4 x^{2}}{\\left(d + 2 y\\right)^{2}} + 1\\right)} + \\frac{8 x^{2}}{\\left(d - 2 y\\right)^{3} \\left(\\frac{4 x^{2}}{\\left(d - 2 y\\right)^{2}} + 1\\right)}\\right)$" ], "text/plain": [ " ⎛ 4 4 \n", " ⎜ P 32⋅x 32⋅x \n", "2⋅⎜─── - ──────────────────────────── - ──────────────────────────── + ───────\n", " ⎜π⋅d 2 2 \n", " ⎜ ⎛ 2 ⎞ ⎛ 2 ⎞ \n", " ⎜ 5 ⎜ 4⋅x ⎟ 5 ⎜ 4⋅x ⎟ (d + 2⋅\n", " ⎜ (d + 2⋅y) ⋅⎜────────── + 1⎟ (d - 2⋅y) ⋅⎜────────── + 1⎟ \n", " ⎜ ⎜ 2 ⎟ ⎜ 2 ⎟ \n", " ⎝ ⎝(d + 2⋅y) ⎠ ⎝(d - 2⋅y) ⎠ \n", "\n", " 2 2 ⎞\n", " 8⋅x 8⋅x ⎟\n", "──────────────────── + ───────────────────────────⎟\n", " ⎛ 2 ⎞ ⎛ 2 ⎞⎟\n", " 3 ⎜ 4⋅x ⎟ 3 ⎜ 4⋅x ⎟⎟\n", "y) ⋅⎜────────── + 1⎟ (d - 2⋅y) ⋅⎜────────── + 1⎟⎟\n", " ⎜ 2 ⎟ ⎜ 2 ⎟⎟\n", " ⎝(d + 2⋅y) ⎠ ⎝(d - 2⋅y) ⎠⎟\n", " ⎠" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle 2 \\left(\\frac{P}{\\pi d} - \\frac{8 x^{2}}{\\left(d + 2 y\\right)^{3} \\left(\\frac{4 x^{2}}{\\left(d + 2 y\\right)^{2}} + 1\\right)^{2}} - \\frac{8 x^{2}}{\\left(d - 2 y\\right)^{3} \\left(\\frac{4 x^{2}}{\\left(d - 2 y\\right)^{2}} + 1\\right)^{2}} + \\frac{2}{\\left(d + 2 y\\right) \\left(\\frac{4 x^{2}}{\\left(d + 2 y\\right)^{2}} + 1\\right)} + \\frac{2}{\\left(d - 2 y\\right) \\left(\\frac{4 x^{2}}{\\left(d - 2 y\\right)^{2}} + 1\\right)}\\right)$" ], "text/plain": [ " ⎛ 2 2 \n", " ⎜ P 8⋅x 8⋅x \n", "2⋅⎜─── - ──────────────────────────── - ──────────────────────────── + ───────\n", " ⎜π⋅d 2 2 \n", " ⎜ ⎛ 2 ⎞ ⎛ 2 ⎞ \n", " ⎜ 3 ⎜ 4⋅x ⎟ 3 ⎜ 4⋅x ⎟ (d + 2⋅\n", " ⎜ (d + 2⋅y) ⋅⎜────────── + 1⎟ (d - 2⋅y) ⋅⎜────────── + 1⎟ \n", " ⎜ ⎜ 2 ⎟ ⎜ 2 ⎟ \n", " ⎝ ⎝(d + 2⋅y) ⎠ ⎝(d - 2⋅y) ⎠ \n", "\n", " ⎞\n", " 2 2 ⎟\n", "─────────────────── + ──────────────────────────⎟\n", " ⎛ 2 ⎞ ⎛ 2 ⎞⎟\n", " ⎜ 4⋅x ⎟ ⎜ 4⋅x ⎟⎟\n", "y)⋅⎜────────── + 1⎟ (d - 2⋅y)⋅⎜────────── + 1⎟⎟\n", " ⎜ 2 ⎟ ⎜ 2 ⎟⎟\n", " ⎝(d + 2⋅y) ⎠ ⎝(d - 2⋅y) ⎠⎟\n", " ⎠" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABAkAAABZCAYAAABcxn1lAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2d29HURte2geLoOwIcgU0G2I7AdgbmJQJMBlBEQOEMMBHYkAE4AmxnYHzynxrIgP++9PSSezSSRvuRNHdXabTr7dW9erPU3XP98+fP1/Zurl+//kJpfKW0vt17Wp0+EzABEzABEzABEzABEzABEzABE4CAxsJf6fRcY+H7XYnc6Gpxq/YE5bHi/o0VBFvNQcfbBEzABEzABEzABEzABEzABExgCAGNg9/jTuPi513dX5ejrnY3Z08g7inSf+q4G3A2lwhH2ARMwARMwARMwARMwARMwARMwAQGEtC4+Jac/qPjfpeP53ufSfBKIH62gmBgabIzEzABEzABEzABEzABEzABEzCBTRPQePiTEvBEx6ukMGhNz25nEqTpFD8KyN1WAn5pAiZgAiZgAiZgAiZgAiZgAiZgAjsnoDEys+zfa4zcuj/BLpUESjybM/yt45EA/LLzvHbyTMAETMAETMAETMAETMAETMAETKCVgMbJ38vCGx1fa5z8V5PlvSoJSDibFd5uSrifm4AJmIAJmIAJmIAJmIAJmIAJmMAlEUizCa5prPx1U7p3tyeBEs1mhWhIWHNhYwImYAImYAImYAImYAImYAImYAImcEWAcfI9jZt/bAKyu5kESqxnETTltp+bgAmYgAmYgAmYgAmYgAmYgAlcNAGNmVmaz2yC2v37djWTQIllLwJmEXgfAnLdxgRMwARMwARMwARMwARMwARMwAQOCTzX7VcaPzN2PjK7UhIodbHE4MVRSv3ABEzABEzABEzABEzABEzABEzABEzgt4Qgxs8HRHa13ECakM9KHX/pUDtt4iDlvjEBEzABEzABEzABEzABEzABEzCBCySgsTPL9JlJcFfj5/c5gt3MJFAiY+MFzyLIc9jXJmACJmACJmACJmACJmACJmACJnBIIMbNMY4u3+5mJoGUBK+UKhJ4pAkpU+sLEzABEzABEzABEzABEzABEzABEzCBa00z8fekJGCpwSdNlbjt/DYBEzABEzABEzABEzABEzABEzABE2gmICXBn3p7T8fBh/ZdLDfIlhrEBgzNJPzGBEzABEzABEzABEzABEzABEzABEzgbUJwsORgF0oCJexBShybL9hc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\n", "text/latex": [ "$\\displaystyle - 8 x \\left(\\frac{4 x^{2}}{\\left(d + 2 y\\right)^{4} \\left(\\frac{4 x^{2}}{\\left(d + 2 y\\right)^{2}} + 1\\right)^{2}} - \\frac{4 x^{2}}{\\left(d - 2 y\\right)^{4} \\left(\\frac{4 x^{2}}{\\left(d - 2 y\\right)^{2}} + 1\\right)^{2}} - \\frac{1}{\\left(d + 2 y\\right)^{2} \\left(\\frac{4 x^{2}}{\\left(d + 2 y\\right)^{2}} + 1\\right)} + \\frac{1}{\\left(d - 2 y\\right)^{2} \\left(\\frac{4 x^{2}}{\\left(d - 2 y\\right)^{2}} + 1\\right)}\\right)$" ], "text/plain": [ " ⎛ 2 2 \n", " ⎜ 4⋅x 4⋅x \n", "-8⋅x⋅⎜──────────────────────────── - ──────────────────────────── - ──────────\n", " ⎜ 2 2 \n", " ⎜ ⎛ 2 ⎞ ⎛ 2 ⎞ 2\n", " ⎜ 4 ⎜ 4⋅x ⎟ 4 ⎜ 4⋅x ⎟ (d + 2⋅y) \n", " ⎜(d + 2⋅y) ⋅⎜────────── + 1⎟ (d - 2⋅y) ⋅⎜────────── + 1⎟ \n", " ⎜ ⎜ 2 ⎟ ⎜ 2 ⎟ \n", " ⎝ ⎝(d + 2⋅y) ⎠ ⎝(d - 2⋅y) ⎠ \n", "\n", " ⎞\n", " 1 1 ⎟\n", "───────────────── + ───────────────────────────⎟\n", " ⎛ 2 ⎞ ⎛ 2 ⎞⎟\n", " ⎜ 4⋅x ⎟ 2 ⎜ 4⋅x ⎟⎟\n", "⋅⎜────────── + 1⎟ (d - 2⋅y) ⋅⎜────────── + 1⎟⎟\n", " ⎜ 2 ⎟ ⎜ 2 ⎟⎟\n", " ⎝(d + 2⋅y) ⎠ ⎝(d - 2⋅y) ⎠⎟\n", " ⎠" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(Sxx)\n", "display(Syy)\n", "display(Sxy)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "Sxx_fun = lambdify((x, y), Sxx.subs({P:1, d:2}), numpy)\n", "Syy_fun = lambdify((x, y), Syy.subs({P:1, d:2}), numpy)\n", "Sxy_fun = lambdify((x, y), Sxy.subs({P:1, d:2}), numpy)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "theta, r = np.mgrid[0:2*np.pi:101j, 1e-6:1:101j]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "xx = r*np.cos(theta)\n", "yy = r*np.sin(theta)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/nguarinz/anaconda3/lib/python3.6/site-packages/numpy/__init__.py:2: RuntimeWarning: invalid value encountered in multiply\n", " NumPy\n", "/home/nguarinz/anaconda3/lib/python3.6/site-packages/numpy/__init__.py:2: RuntimeWarning: divide by zero encountered in true_divide\n", " NumPy\n", "/home/nguarinz/anaconda3/lib/python3.6/site-packages/numpy/__init__.py:2: RuntimeWarning: invalid value encountered in multiply\n", " NumPy\n", "/home/nguarinz/anaconda3/lib/python3.6/site-packages/numpy/__init__.py:2: RuntimeWarning: divide by zero encountered in true_divide\n", " NumPy\n", "/home/nguarinz/anaconda3/lib/python3.6/site-packages/numpy/__init__.py:2: RuntimeWarning: invalid value encountered in multiply\n", " NumPy\n", "/home/nguarinz/anaconda3/lib/python3.6/site-packages/numpy/__init__.py:2: RuntimeWarning: divide by zero encountered in true_divide\n", " NumPy\n" ] } ], "source": [ "Sxx_vec = Sxx_fun(xx, yy)\n", "Syy_vec = Syy_fun(xx, yy)\n", "Sxy_vec = Sxy_fun(xx, yy)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support. ' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
');\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.contourf(xx, yy, Syy_vec, cmap=\"RdYlGn\", vmin=-210, vmax=210)\n", "plt.colorbar()\n", "plt.axis(\"square\");" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support. ' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
');\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('