Commits

Anthony Scopatz committed 0fef5e2

attempt at adding z comp.

Comments (0)

Files changed (2)

cylindrical_rays.ipynb

        "output_type": "stream",
        "stream": "stderr",
        "text": [
-        "yt : [WARNING  ] 2012-08-23 16:51:37,725 integer runtime parameter checkpointfilenumber overwrites a simulation scalar of the same name\n"
+        "yt : [WARNING  ] 2012-08-24 11:42:00,573 integer runtime parameter checkpointfilenumber overwrites a simulation scalar of the same name\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stderr",
        "text": [
-        "yt : [WARNING  ] 2012-08-23 16:51:37,725 integer runtime parameter forcedplotfilenumber overwrites a simulation scalar of the same name\n"
+        "yt : [WARNING  ] 2012-08-24 11:42:00,574 integer runtime parameter forcedplotfilenumber overwrites a simulation scalar of the same name\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stderr",
        "text": [
-        "yt : [WARNING  ] 2012-08-23 16:51:37,726 integer runtime parameter nbegin overwrites a simulation scalar of the same name\n"
+        "yt : [WARNING  ] 2012-08-24 11:42:00,574 integer runtime parameter nbegin overwrites a simulation scalar of the same name\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stderr",
        "text": [
-        "yt : [WARNING  ] 2012-08-23 16:51:37,726 integer runtime parameter plotfilenumber overwrites a simulation scalar of the same name\n"
+        "yt : [WARNING  ] 2012-08-24 11:42:00,575 integer runtime parameter plotfilenumber overwrites a simulation scalar of the same name\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stderr",
        "text": [
-        "yt : [INFO     ] 2012-08-23 16:51:37,737 Parameters: current_time              = 8.00057343882e-10\n"
+        "yt : [INFO     ] 2012-08-24 11:42:00,581 Parameters: current_time              = 8.00057343882e-10\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stderr",
        "text": [
-        "yt : [INFO     ] 2012-08-23 16:51:37,738 Parameters: domain_dimensions         = [48 96  1]\n"
+        "yt : [INFO     ] 2012-08-24 11:42:00,582 Parameters: domain_dimensions         = [48 96  1]\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stderr",
        "text": [
-        "yt : [INFO     ] 2012-08-23 16:51:37,739 Parameters: domain_left_edge          = [ 0.     -1.2288  0.    ]\n"
+        "yt : [INFO     ] 2012-08-24 11:42:00,584 Parameters: domain_left_edge          = [ 0.     -1.2288  0.    ]\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stderr",
        "text": [
-        "yt : [INFO     ] 2012-08-23 16:51:37,740 Parameters: domain_right_edge         = [ 1.2288      1.2288      6.28318531]\n"
+        "yt : [INFO     ] 2012-08-24 11:42:00,585 Parameters: domain_right_edge         = [ 1.2288      1.2288      6.28318531]\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stderr",
        "text": [
-        "yt : [INFO     ] 2012-08-23 16:51:37,741 Parameters: cosmological_simulation   = 0.0\n"
+        "yt : [INFO     ] 2012-08-24 11:42:00,588 Parameters: cosmological_simulation   = 0.0\n"
        ]
       }
      ],
-     "prompt_number": 1
+     "prompt_number": 5
     },
     {
      "cell_type": "code",
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 8
+     "prompt_number": 42
     },
     {
      "cell_type": "code",
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 9
+     "prompt_number": 43
     },
     {
      "cell_type": "code",
      "outputs": [
       {
        "output_type": "pyout",
-       "prompt_number": 10,
+       "prompt_number": 44,
        "text": [
-        "[<matplotlib.lines.Line2D at 0x7fa1c8155bd0>]"
+        "[<matplotlib.lines.Line2D at 0x97b3d50>]"
        ]
       },
       {
        "png": "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\n/w+DzqEu27J6qAAAAABJRU5ErkJggg==\n"
       }
      ],
-     "prompt_number": 10
+     "prompt_number": 44
     },
     {
      "cell_type": "code",

cylindrical_rays1.ipynb

+{
+ "metadata": {
+  "name": "cylindrical_rays1"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+  {
+   "cells": [
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "from yt.mods import *\n",
+      "import matplotlib.pyplot as plt\n",
+      "import numpy as np\n",
+      "\n",
+      "pf = load('cylindrical_data/nif2013_hdf5_plt_cnt_0006')"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stderr",
+       "text": [
+        "yt : [WARNING  ] 2012-08-29 13:22:20,156 integer runtime parameter checkpointfilenumber overwrites a simulation scalar of the same name\n"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stderr",
+       "text": [
+        "yt : [WARNING  ] 2012-08-29 13:22:20,156 integer runtime parameter forcedplotfilenumber overwrites a simulation scalar of the same name\n"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stderr",
+       "text": [
+        "yt : [WARNING  ] 2012-08-29 13:22:20,157 integer runtime parameter nbegin overwrites a simulation scalar of the same name\n"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stderr",
+       "text": [
+        "yt : [WARNING  ] 2012-08-29 13:22:20,157 integer runtime parameter plotfilenumber overwrites a simulation scalar of the same name\n"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stderr",
+       "text": [
+        "yt : [INFO     ] 2012-08-29 13:22:20,166 Parameters: current_time              = 8.00057343882e-10\n"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stderr",
+       "text": [
+        "yt : [INFO     ] 2012-08-29 13:22:20,166 Parameters: domain_dimensions         = [48 96  1]\n"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stderr",
+       "text": [
+        "yt : [INFO     ] 2012-08-29 13:22:20,167 Parameters: domain_left_edge          = [ 0.     -1.2288  0.    ]\n"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stderr",
+       "text": [
+        "yt : [INFO     ] 2012-08-29 13:22:20,169 Parameters: domain_right_edge         = [ 1.2288      1.2288      6.28318531]\n"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stderr",
+       "text": [
+        "yt : [INFO     ] 2012-08-29 13:22:20,170 Parameters: cosmological_simulation   = 0.0\n"
+       ]
+      }
+     ],
+     "prompt_number": 128
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "# Ray tracer\n",
+      "E = np.array([0.5, -1.0, 0.0])\n",
+      "F = np.array([1.0, 1.0, 0.75*np.pi])\n",
+      "D = F - E\n",
+      "\n",
+      "Ecart = na.array((E[0]*na.cos(E[2]), E[0]*na.sin(E[2]), E[1]))\n",
+      "Fcart = na.array((F[0]*na.cos(F[2]), F[0]*na.sin(F[2]), F[1]))\n",
+      "Dcart = Fcart - Ecart"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 394
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "tocart = lambda x: np.array((x[...,0]*np.cos(x[...,2]), x[...,0]*np.sin(x[...,2]), x[...,1])).T\n",
+      "\n",
+      "#def intersect(a, b, c, d):\n",
+      "#    r = b - a\n",
+      "#    s = d - c\n",
+      "#    para = (np.cross(tocart(r), tocart(s))).sum(axis=1)\n",
+      "#    t = (np.cross(tocart(c - a), tocart(s))).sum(axis=1) / para\n",
+      "#    return t, a + (t*r[:,np.newaxis]).T\n",
+      "\n",
+      "def intersect(a, b, c, d):\n",
+      "    r = tocart(b) - tocart(a)\n",
+      "    s = tocart(d) - tocart(c)\n",
+      "    para = (np.cross(r, s)).sum(axis=1)\n",
+      "    t = (np.cross(tocart(c) - tocart(a), tocart(s))).sum(axis=1) / para\n",
+      "    return t, tocart(a) + (t*r[:,np.newaxis]).T"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 415
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "rleft = pf.h.grid_left_edge[:,0]\n",
+      "rright = pf.h.grid_right_edge[:,0]\n",
+      "zleft = pf.h.grid_left_edge[:,1]\n",
+      "zright = pf.h.grid_right_edge[:,1]\n",
+      "\n",
+      "a = (Dcart**2)[:2].sum()\n",
+      "b = (2*Dcart*Ecart)[:2].sum()\n",
+      "cleft = (Ecart**2)[:2].sum() - rleft**2\n",
+      "cright = (Ecart**2)[:2].sum() - rright**2\n",
+      "\n",
+      "tmleft = (-b - na.sqrt(b**2 - 4*a*cleft)) / (2*a)\n",
+      "tpleft = (-b + na.sqrt(b**2 - 4*a*cleft)) / (2*a)  \n",
+      "tmright = (-b - na.sqrt(b**2 - 4*a*cright)) / (2*a)\n",
+      "tpright = (-b + na.sqrt(b**2 - 4*a*cright)) / (2*a)  \n",
+      "\n",
+      "tmmright = np.logical_and(~np.isnan(tmright), rright <= E[0])\n",
+      "tpmright = np.logical_and(~np.isnan(tpright), rright <= F[0])\n",
+      "\n",
+      "tmmleft = np.logical_and(~np.isnan(tmleft), rleft <= E[0])\n",
+      "tpmleft = np.logical_and(~np.isnan(tpleft), rleft <= F[0])\n",
+      "\n",
+      "tleft = np.concatenate([tmleft[tmmleft][::-1], tpleft[tpmleft]])\n",
+      "tright = np.concatenate([tmright[tmmright][::-1], tpright[tpmright]])"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 416
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "ind = np.unique(np.concatenate([np.argwhere(tmmleft).flat, np.argwhere(tpmleft).flat, np.argwhere(tmmright).flat, np.argwhere(tpmright).flat,]))\n",
+      "thetaleft = np.zeros(len(ind))\n",
+      "thetaright = np.zeros(len(ind))\n",
+      "thetaleftinv = np.zeros(len(ind))\n",
+      "thetarightinv = np.zeros(len(ind))\n",
+      "for j, i in enumerate(ind):\n",
+      "    if ~np.isnan(tmleft[i]):\n",
+      "        thetaleft[j] = np.arctan((Ecart[1] + tmleft[i]*Dcart[1])/(Ecart[0] + tmleft[i]*Dcart[0]))\n",
+      "    else:\n",
+      "        thetaleft[j] = np.arctan((Ecart[1] + tpleft[i]*Dcart[1])/(Ecart[0] + tpleft[i]*Dcart[0]))\n",
+      "    if ~np.isnan(tmright[i]):\n",
+      "        thetaright[j] = np.arctan((Ecart[1] + tmright[i]*Dcart[1])/(Ecart[0] + tmright[i]*Dcart[0]))\n",
+      "    else:\n",
+      "        thetaright[j] = np.arctan((Ecart[1] + tpright[i]*Dcart[1])/(Ecart[0] + tpright[i]*Dcart[0]))\n",
+      "    if ~np.isnan(tpleft[i]):\n",
+      "        thetaleftinv[j] = np.arctan((Ecart[1] + tpleft[i]*Dcart[1])/(Ecart[0] + tpleft[i]*Dcart[0]))\n",
+      "    else:\n",
+      "        thetaleftinv[j] = np.arctan((Ecart[1] + tmleft[i]*Dcart[1])/(Ecart[0] + tmleft[i]*Dcart[0]))\n",
+      "    if ~np.isnan(tpright[i]):\n",
+      "        thetarightinv[j] = np.arctan((Ecart[1] + tpright[i]*Dcart[1])/(Ecart[0] + tpright[i]*Dcart[0]))\n",
+      "    else:\n",
+      "        thetarightinv[j] = np.arctan((Ecart[1] + tmright[i]*Dcart[1])/(Ecart[0] + tmright[i]*Dcart[0]))\n",
+      "\n",
+      "a = E\n",
+      "b = F\n",
+      "\n",
+      "#c = np.array([rleft[ind], zleft[ind], thetaleft]).T\n",
+      "#d = np.array([rleft[ind], zright[ind], thetaleft]).T\n",
+      "\n",
+      "#c = np.array([rright[ind], zleft[ind], thetaright]).T\n",
+      "#d = np.array([rright[ind], zright[ind], thetaright]).T\n",
+      "\n",
+      "#c = np.array([rleft[ind], zleft[ind], thetaleft + np.pi/2]).T\n",
+      "#d = np.array([rright[ind], zleft[ind], thetaright + np.pi/2]).T\n",
+      "\n",
+      "#c = np.array([rleft[ind], zright[ind], thetaleft]).T\n",
+      "#d = np.array([rright[ind], zright[ind], thetaright]).T\n",
+      "\n",
+      "c = np.array([rleft[ind], zleft[ind], thetaleftinv]).T\n",
+      "d = np.array([rright[ind], zleft[ind], thetarightinv]).T\n",
+      "\n",
+      "\n",
+      "tsec, intsec = intersect(a, b, c, d)\n",
+      "tmask = np.logical_and(0.0<=tsec, tsec<=1.0)\n",
+      "rztheta = intsec[tmask]\n",
+      "s = np.sqrt(((tocart(rztheta) - Ecart)**2).sum(axis=1))\n",
+      "t = s/np.sqrt((Dcart**2).sum())\n",
+      "si = s.argsort()\n",
+      "s = s[si]\n",
+      "t = t[si]\n",
+      "rztheta = rztheta[si]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 417
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "fig = plt.figure(figsize=(8,6))\n",
+      "plt.plot(t, rztheta[:,0], figure=fig)\n",
+      "#plt.plot(t, s, figure=fig)\n",
+      "#plt.plot(thetaleft, figure=fig)\n",
+      "#plt.plot(t, dr_dt, 'g-', figure=fig)\n",
+      "#plt.plot(t, dr/dt, 'ro', figure=fig)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "pyout",
+       "prompt_number": 414,
+       "text": [
+        "[<matplotlib.lines.Line2D at 0x11581d90>]"
+       ]
+      },
+      {
+       "output_type": "display_data",
+       "png": "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\n3769VwUDAADD4xAfPHiwduzYofr162vXrl0aNGiQJGn37t0FPe1LL71UTzzxhLp166YWLVooNjZW\nrVu39k3lAAAEuXO+EwcAAP6r1HdsW7FihaKjoxUZGakJEyac8ZrHHntMERERaty4sTZu3Fiie+3m\nTftq166thg0bKi4uzi9n7Z+vbRs3blSzZs0UGhqqf/7znyW61x940z5/f3bS+ds3c+ZMxcbGKjY2\nVr169VJubm6x7/UH3rQvEJ7fvHnzFBsbq0aNGikpKUnZ2dnFvtcfeNM+f39+xf33z87OVkhIiObO\nnVviewtYpaxRo0bW8uXLrW3btln169e39u7dW+j3mZmZVvPmza39+/dbs2bNspKSkop9rz/wpn21\na9e29u/fX9YlF9v52vbzzz9b2dnZ1ogRI6yxY8eW6F5/4E37/P3ZWdb527d69Wrr4MGDlmVZ1rRp\n06zevXsX+15/4E37AuH5HTlypODr9PR0q2XLlsW+1x940z5/f37F+ff//fffrdatW1tJSUnWnDlz\nSnTv6Uq1J56XlydJatWqlWrVqqX27dsX2RQmMzNTt912m6pWraq77rpLOTk5xb7Xbt607xTLT99m\nFKdtYWFhatKkiSpUqFDie+3mTftO8ddnJxWvfc2aNVPlypUlSUlJSVq+fHmx77WbN+07xenP76KL\nLip0fWhoaLHvtZs37TvFX59fcf/9J0yYoNtuu01hYWElvvd0pRrip28II0kxMTHKyMgodE1WVpZi\nYmIKvg8LC9OWLVuKda/dPG3f1q1bJZn18W3atFHXrl01f/78sim6mLz59w+UZ3cu/vzspJK3b/Lk\nyercubNH99rBm/ZJgfP8PvjgA9WuXVsDBgzQlClTSnSvnTxp3+TJkwt+7s/Przht27Vrl+bNm6fB\ngwdL+t9eKZ48u3OuEy8LlmUV+f+oAmnzlzO175RVq1apRo0aysnJUefOndW0aVNVr169jCuEJwLp\n2S1dulQzZszQ6tWr7S6lVJypfYHy/Lp166Zu3brpnXfeUdeuXbV27Vq7S/Kp09vXrVu3gvY5/fkN\nHz5czz//vFwu1zkzojhKtSceHx9faCLX+vXri6wnT0hI0IYNGwq+37t3ryIiItSkSZPz3ms3b9on\nSTVq1JAkRUdH69Zbb9VHH31UBlUXT3HaVhr3lhVva/TnZycVv33r1q3ToEGDNH/+fFWpUqVE99rJ\nm/ZJgfP8Trnjjju0e/duHTt2LGD+b+fpTm+f5N/Przht+/LLL3XnnXfqmmuu0dy5c3X//fdr/vz5\nnv3vno/e45/VqZf033///Tknfu3bt8+aOXPmGSe2ne1ef+Bp+3755Rfr0KFDlmWZCVQxMTHWjh07\nyrz+cynuv//IkSPPOrHNyc/ulD+2zwnPzrLO377t27dbdevWtTIyMkp8rz/wtH2B8vw2b95snTx5\n0rIsy/r444+tTp06Fftef+Bp+5zw/Ery73/PPfdYc+fO9eheyzLd+FKVnp5uRUVFWXXq1LHGjx9v\nWZZlTZo0yZo0aVLBNY8++qhVu3Zt6/rrr7c2bNhwznv9jaft27JlixUbG2vFxsZabdq0saZOnWpL\n/edyvrb9+OOPVs2aNa1LL73UqlKlinX11Vdbhw8fPuu9/sbT9jnh2VnW+ds3cOBAq2rVqlajRo2s\nRo0aWfHx8ee819942r5AeX4vvPCC1aBBA6tRo0ZW//79rW+++eac9/obT9vnhOdXnFw45Y8hXtJn\nx2YvAAA4VKlv9gIAAEoHIQ4AgEMR4gAAOBQhDgCAQxHiAAA4FCEOAIBD/T8PMQGX3AxQHAAAAABJ\nRU5ErkJggg==\n"
+      }
+     ],
+     "prompt_number": 414
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "np.arctan(np.array([-1.]) / np.array([0.0]))"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "pyout",
+       "prompt_number": 406,
+       "text": [
+        "array([-1.57079633])"
+       ]
+      }
+     ],
+     "prompt_number": 406
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [],
+     "language": "python",
+     "metadata": {},
+     "outputs": []
+    }
+   ],
+   "metadata": {}
+  }
+ ]
+}