Commits

Anthony Scopatz committed 5790570

Working version of cylindrical rays.

Comments (0)

Files changed (1)

cylindrical_rays.ipynb

        "output_type": "stream",
        "stream": "stderr",
        "text": [
-        "yt : [WARNING  ] 2012-08-21 15:55:48,384 integer runtime parameter checkpointfilenumber overwrites a simulation scalar of the same name\n"
+        "yt : [WARNING  ] 2012-08-23 15:36:29,721 integer runtime parameter checkpointfilenumber overwrites a simulation scalar of the same name\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stderr",
        "text": [
-        "yt : [WARNING  ] 2012-08-21 15:55:48,385 integer runtime parameter forcedplotfilenumber overwrites a simulation scalar of the same name\n"
+        "yt : [WARNING  ] 2012-08-23 15:36:29,722 integer runtime parameter forcedplotfilenumber overwrites a simulation scalar of the same name\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stderr",
        "text": [
-        "yt : [WARNING  ] 2012-08-21 15:55:48,385 integer runtime parameter nbegin overwrites a simulation scalar of the same name\n"
+        "yt : [WARNING  ] 2012-08-23 15:36:29,722 integer runtime parameter nbegin overwrites a simulation scalar of the same name\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stderr",
        "text": [
-        "yt : [WARNING  ] 2012-08-21 15:55:48,386 integer runtime parameter plotfilenumber overwrites a simulation scalar of the same name\n"
+        "yt : [WARNING  ] 2012-08-23 15:36:29,723 integer runtime parameter plotfilenumber overwrites a simulation scalar of the same name\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stderr",
        "text": [
-        "yt : [INFO     ] 2012-08-21 15:55:48,394 Parameters: current_time              = 8.00057343882e-10\n"
+        "yt : [INFO     ] 2012-08-23 15:36:29,731 Parameters: current_time              = 8.00057343882e-10\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stderr",
        "text": [
-        "yt : [INFO     ] 2012-08-21 15:55:48,394 Parameters: domain_dimensions         = [48 96  1]\n"
+        "yt : [INFO     ] 2012-08-23 15:36:29,732 Parameters: domain_dimensions         = [48 96  1]\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stderr",
        "text": [
-        "yt : [INFO     ] 2012-08-21 15:55:48,395 Parameters: domain_left_edge          = [ 0.     -1.2288  0.    ]\n"
+        "yt : [INFO     ] 2012-08-23 15:36:29,733 Parameters: domain_left_edge          = [ 0.     -1.2288  0.    ]\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stderr",
        "text": [
-        "yt : [INFO     ] 2012-08-21 15:55:48,396 Parameters: domain_right_edge         = [ 1.2288      1.2288      6.28318531]\n"
+        "yt : [INFO     ] 2012-08-23 15:36:29,734 Parameters: domain_right_edge         = [ 1.2288      1.2288      6.28318531]\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stderr",
        "text": [
-        "yt : [INFO     ] 2012-08-21 15:55:48,397 Parameters: cosmological_simulation   = 0.0\n"
+        "yt : [INFO     ] 2012-08-23 15:36:29,736 Parameters: cosmological_simulation   = 0.0\n"
        ]
       }
      ],
       "Ecart = na.array((2.0, 0.0, 1.0))\n",
       "Fcart = na.array((-2.0, na.sin(0.75*na.pi), 1.0))\n",
       "\n",
-      "D = Fcart - Ecart\n",
-      "\n",
-      "zi = np.logical_or(pf.h.grid_left_edge[:,1] == 0.0, pf.h.grid_right_edge[:,1] == 0.0)\n",
-      "r = pf.h.grid_right_edge[zi,0]\n",
-      "dr = pf.h.grid_right_edge[zi,0] - pf.h.grid_left_edge[zi,0]\n",
-      "a = (D**2)[:2].sum()\n",
-      "b = (2*D*Ecart)[:2].sum()\n",
-      "c = (Ecart**2)[:2].sum() - r**2\n",
-      "\n",
-      "tp = (-b + na.sqrt(b**2 - 4*a*c)) / (2*a)\n",
-      "tm = (-b - na.sqrt(b**2 - 4*a*c)) / (2*a)\n",
-      "\n",
-      "tf = np.concatenate([tm, tp])\n",
-      "ti = tf.argsort()\n",
-      "\n",
-      "tf = tf[ti]\n",
-      "r = np.concatenate([r, r])[ti]\n",
-      "c = np.concatenate([c, c])[ti]\n",
-      "dr = np.concatenate([dr, dr])[ti]\n",
-      "\n",
-      "mask = ~na.isnan(tf)\n",
-      "\n",
-      "dt_dr = (2*r/ na.sqrt(b**2 - 4*a*c))[mask]\n",
-      "int_dt_dr = na.cumsum(dt_dr * dr[mask])\n",
-      "\n",
-      "hand_dt_dr = []\n",
-      "for ri, dri in zip(r, dr):\n",
-      "    router = ri + dri / 2.0 \n",
-      "    rinner = ri - dri / 2.0\n",
-      "    \n",
-      "    couter = (Ecart**2)[:2].sum() - router**2\n",
-      "    cinner = (Ecart**2)[:2].sum() - rinner**2\n",
-      "    \n",
-      "    touter = -b + na.sqrt(b**2 - 4*a*couter) / (2 * a)\n",
-      "    tinner = -b + na.sqrt(b**2 - 4*a*cinner) / (2 * a)\n",
-      "    \n",
-      "    hand_dt_dr.append((touter - tinner)/(router - rinner))\n",
-      "hand_dt_dr = np.array(hand_dt_dr)"
+      "D = Fcart - Ecart"
      ],
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 73
+     "prompt_number": 14
     },
     {
      "cell_type": "code",
      "collapsed": false,
      "input": [
-      "#plt.plot(r, c)\n",
-      "#plt.plot(r, tp, 'r+')\n",
-      "#plt.plot(r, tm, 'k--')\n",
-      "#plt.plot(r[mask], int_dt_dr, 'g-')\n",
+      "zmask = np.logical_or(pf.h.grid_left_edge[:,1] == 0.0, pf.h.grid_right_edge[:,1] == 0.0)\n",
+      "r = pf.h.grid_right_edge[zmask,0]\n",
+      "a = (D**2)[:2].sum()\n",
+      "b = (2*D*Ecart)[:2].sum()\n",
+      "c = (Ecart**2)[:2].sum() - r**2\n",
       "\n",
-      "#plt.plot(r, tf, 'r+')\n",
-      "#plt.plot(r[mask], int_dt_dr, 'g-')\n",
+      "tp = (-b + na.sqrt(b**2 - 4*a*c)) / (2*a)  # tp1 = -b/(2*a) + na.sqrt(0.25*(b/a)**2 - c/a)\n",
+      "tm = (-b - na.sqrt(b**2 - 4*a*c)) / (2*a)\n",
       "\n",
-      "plt.plot(r, hand_dt_dr, 'r+')\n",
-      "plt.plot(r[mask], dt_dr, 'g-')"
+      "tpmask = ~np.isnan(tp)\n",
+      "tmmask = ~np.isnan(tm)\n",
+      "t = np.concatenate([tm[tmmask][::-1], tp[tpmask]])\n",
+      "ti = t.argsort()\n",
+      "t = t[ti]\n",
+      "dt = np.gradient(t)\n",
+      "dti = np.where(dt != 0.0)\n",
+      "t = t[dti]\n",
+      "dt = dt[dti]\n",
+      "\n",
+      "r = np.concatenate([r[tmmask][::-1], r[tpmask]])[ti][dti]\n",
+      "dr = np.gradient(r)\n",
+      "dri = np.where(dr != 0.0)\n",
+      "t = t[dri]\n",
+      "dt = dt[dri]\n",
+      "r = r[dri]\n",
+      "dr = dr[dri]\n",
+      "\n",
+      "c = np.concatenate([c[tmmask][::-1], c[tpmask]])[ti][dti][dri]\n",
+      "drsign = np.sign(dr)\n",
+      "dr_dt = drsign*(na.sqrt(b**2 - 4*a*c) / (2*r))\n",
+      "dr = dt * dr_dt"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 15
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "plt.plot(t, r)\n",
+      "plt.plot(t, dr_dt, 'g-')\n",
+      "plt.plot(t, dr/dt, 'ro')"
      ],
      "language": "python",
      "metadata": {},
      "outputs": [
       {
        "output_type": "pyout",
-       "prompt_number": 78,
+       "prompt_number": 18,
        "text": [
-        "[<matplotlib.lines.Line2D at 0x7f673d622c50>]"
+        "[<matplotlib.lines.Line2D at 0x909c550>]"
        ]
       },
       {
        "output_type": "display_data",
-       "png": "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\n"
+       "png": "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\nXn31VXh5eRk7Yo30zS+Z4J5g+mQ/ceIEgoKC0K9fPwCAp6en0XNWR9/XvsSmTZswYsQIY8WrlT75\nmzZtipycHBQVFeHevXtwdnaudbrb4FJPSkqCn59f6b8DAgKQmJho6GKNpq75165di8jISGNE04u+\n+Xft2oV27drhnXfewbp164wZsUb65P/999+xe/duTJw4EYBpbcPRJ7+NjQ0SEhIQEhKC6dOnI+2x\ncwyJok/2/fv3w8bGBs899xwiIyOxf/9+Y8esVl3eu3l5edi/fz9eeeUVY8WrlT75R4wYgeLiYnh6\neqJ3797YuHFjrcvlCb3q4ODBg/j++++RkJAgOkqdvfzyy3j55ZexdetWDB06FKdPnxYdSW/Tpk3D\nvHnzSs9cZ4qj3pp06dIFN2/ehL29Pb777jtMnToV+/btEx1LLwUFBThz5gwOHjyIvLw89O/fH+fP\nn4eTk5PoaHWyd+9e9O7dG25ubqKj1MnKlSuhUChw+/ZtnDt3DhEREbh+/Tpsbasfjxs8Uu/evTsu\nXrxY+u+UlBSEhYUZulij0Td/cnIyJkyYgD179pjUilHX13/48OH4448/kJ+fb4x4tdIn/8mTJ/H6\n66+jffv22LFjByZNmoQ9e/YYO2qV9Mnv6uoKZ2dn2Nvb491330VSUhIKqziBnLHpk71nz54YPHgw\nWrRogaeeegrdunVDfHy8saNWqS7r/pYtW0xq6gXQL398fDzefPNNODs7o0ePHnjiiSdq3VHD4FIv\nmWuOj4/HtWvXEBsbix49elT5taY4wtIn/40bN/DKK69g48aN6NDBtC7UrE/+tLS00tf+xx9/RNeu\nXU1mpKVP/itXruDq1au4evUqXn31VaxevRovvviiiLiV6JP/zp07pa//3r17ERQUBIdqTiBnTPpk\nDwsLQ1xcHPLy8nDv3j2cPn0azz77rIi4lejbPdnZ2YiPj8dLL71k7Ig10id/3759sXfvXmi1Wly5\ncgX37t2rMGVTJTm24KrVasnPz0/y8fGRli1bJkmSJK1Zs0Zas2aNJEmSdPv2balVq1ZSkyZNJDc3\nN6l169ZSTk6OHE8ti9ryv/vuu5K7u7sUEhIihYSESN27dxcZt5La8s+fP1/q3LmzFBISIo0ZM0Y6\nd+6cyLiV1Ja/vNGjR0s7duwwdsQa1ZZ/5cqVUufOnaXg4GDp7bffls6ePSsybgX6vPbR0dGSv7+/\nFB4eLm3evFlU1Crpk3/9+vXSiBEjREWsUW35Hzx4IE2ZMkUKDQ2VBgwYIMXExNS6zAa98hERERkX\nr5VGRGRBWOpERBaEpU5EZEFY6kREFoSlTkRkQVjqREQW5P8DLabiWzkjiDgAAAAASUVORK5CYII=\n"
       }
      ],
-     "prompt_number": 78
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "#print np.unique(tf).shape\n",
-      "#print np.unique(r).shape\n",
-      "#print int_dt_dr.max()\n",
-      "#print np.unique(tf[mask]/int_dt_dr)\n",
-      "print hand_dt_dr"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "[ 69.91033866  69.91033866  69.91033866 ...,          nan          nan\n",
-        "          nan]\n"
-       ]
-      }
-     ],
-     "prompt_number": 61
+     "prompt_number": 18
     },
     {
      "cell_type": "code",