{ "cells": [ { "cell_type": "code", "execution_count": 62, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "# Configure Jupyter so figures appear in the notebook\n", "%matplotlib inline\n", "\n", "# Configure Jupyter to display the assigned value after an assignment\n", "%config InteractiveShell.ast_node_interactivity='last_expr_or_assign'\n", "\n", "# import functions from the modsim.py module\n", "from modsim import *\n", "import math" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "kilogram" ], "text/latex": [ "$\\mathrm{kilogram}$" ], "text/plain": [ "" ] }, "execution_count": 63, "metadata": { }, "output_type": "execute_result" } ], "source": [ "m = UNITS.meter\n", "s = UNITS.second\n", "kg = UNITS.kilogram" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "ename": "NameError", "evalue": "name 'Params' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mparams\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mParams\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mG_const\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m6.67408e-11\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mm\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkg\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0ms\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mm_e\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m5.972e24\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mkg\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mm_s\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m1.989e30\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mkg\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# system\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mNameError\u001b[0m: name 'Params' is not defined" ] } ], "source": [ "params = Params(G_const = 6.67408e-11 * m**3/(kg*s**2), m_e = 5.972e24 * kg, m_s = 1.989e30 * kg) # system" ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "def make_system(params):\n", " \"\"\"Makes a System object for the given conditions.\n", " \n", " params: Params object\n", " \n", " returns: System object\n", " \"\"\"\n", " G_const, m_e, m_s = params.G_const, params.m_e, params.m_s\n", " \n", " r_init = 149.6e9 * m\n", " v_init = 0 *m/s\n", " init = State(r=r_init, v=v_init)\n", " t_end = 3600 * 24 * 100 * s\n", " dt = t_end / 100\n", " \n", " return System(params, G_const=G_const, init=init, t_end=t_end, dt=dt)" ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
values
G_const6.67408e-11 meter ** 3 / kilogram / second ** 2
m_e5.972e+24 kilogram
m_s1.989e+30 kilogram
initr 149600000000.0 meter\n", "v 0.0 meter / s...
t_end8640000 second
dt86400.0 second
\n", "
" ], "text/plain": [ "G_const 6.67408e-11 meter ** 3 / kilogram / second ** 2\n", "m_e 5.972e+24 kilogram\n", "m_s 1.989e+30 kilogram\n", "init r 149600000000.0 meter\n", "v 0.0 meter / s...\n", "t_end 8640000 second\n", "dt 86400.0 second\n", "dtype: object" ] }, "execution_count": 66, "metadata": { }, "output_type": "execute_result" } ], "source": [ "system = make_system(params)" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "def slope_func(state, t, system):\n", " \"\"\"Compute derivatives of the state.\n", " \n", " state: position, velocity\n", " t: time\n", " system: System object\n", " \n", " returns: derivatives of y and v\n", " \"\"\"\n", " r, v = state\n", " G_const, m_s = system.G_const, system.m_s\n", " \n", " accel = (G_const * m_s) / r**2\n", " \n", " drdt = v\n", " dvdt = - G_const * m_s / r**2\n", " \n", " return drdt, dvdt" ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(0.0 ,\n", " -0.00593147909577054 )" ] }, "execution_count": 68, "metadata": { }, "output_type": "execute_result" } ], "source": [ "slope_func(system.init, 0, system)" ] }, { "cell_type": "code", "execution_count": 69, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "def event_func(state, t, system):\n", " r, v = state\n", " return r" ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
values
successTrue
messageA termination event occurred.
\n", "
" ], "text/plain": [ "success True\n", "message A termination event occurred.\n", "dtype: object" ] }, "execution_count": 70, "metadata": { }, "output_type": "execute_result" } ], "source": [ "results, details = run_ode_solver(system, slope_func, events=event_func)\n", "details" ] }, { "cell_type": "code", "execution_count": 71, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
rv
0.0149600000000.0 meter0.0 meter / second
86400.0149577860872.90463 meter-512.4797938745746 meter / second
172800.0149511436937.47714 meter-1025.263098836451 meter / second
259200.0149400688842.6613 meter-1538.6543818132357 meter / second
345600.0149245550867.2312 meter-2052.960096377744 meter / second
\n", "
" ], "text/plain": [ " r v\n", "0.0 149600000000.0 meter 0.0 meter / second\n", "86400.0 149577860872.90463 meter -512.4797938745746 meter / second\n", "172800.0 149511436937.47714 meter -1025.263098836451 meter / second\n", "259200.0 149400688842.6613 meter -1538.6543818132357 meter / second\n", "345600.0 149245550867.2312 meter -2052.960096377744 meter / second" ] }, "execution_count": 71, "metadata": { }, "output_type": "execute_result" } ], "source": [ "results.head()" ] }, { "cell_type": "code", "execution_count": 72, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
rv
5.270400e+0636542038776.296616 meter-74090.6292983068 meter / second
5.356800e+0629769553538.081444 meter-84496.11754051299 meter / second
5.443200e+0621910002441.51194 meter-101602.72652695786 meter / second
5.529600e+0612099386348.186493 meter-140936.47367582278 meter / second
5.596778e+060.0 meter-578088.5928502546 meter / second
\n", "
" ], "text/plain": [ " r v\n", "5.270400e+06 36542038776.296616 meter -74090.6292983068 meter / second\n", "5.356800e+06 29769553538.081444 meter -84496.11754051299 meter / second\n", "5.443200e+06 21910002441.51194 meter -101602.72652695786 meter / second\n", "5.529600e+06 12099386348.186493 meter -140936.47367582278 meter / second\n", "5.596778e+06 0.0 meter -578088.5928502546 meter / second" ] }, "execution_count": 72, "metadata": { }, "output_type": "execute_result" } ], "source": [ "results.tail()" ] }, { "cell_type": "code", "execution_count": 75, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 75, "metadata": { "needs_background": "light" }, "output_type": "execute_result" } ], "source": [ "def plot_position(results):\n", " indexes = results.index / (60 * 60 * 24)\n", " radii = results.r / 1e9\n", " plot(indexes, radii)\n", " decorate(xlabel='Time (Days)',\n", " ylabel='Position (1 billion meters)')\n", " \n", "plot_position(results)" ] }, { "cell_type": "code", "execution_count": 74, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "64.77752403749415" ] }, "execution_count": 74, "metadata": { }, "output_type": "execute_result" } ], "source": [ "get_last_label(results) / (3600 * 24)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "# PART 2" ] }, { "cell_type": "code", "execution_count": 113, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "def make_system2(params):\n", " \"\"\"Makes a System object for the given conditions.\n", " \n", " params: Params object\n", " \n", " returns: System object\n", " \"\"\"\n", " G_const, m_e, m_s = params.G_const, params.m_e, params.m_s\n", " \n", " r_init = Vector(0, 149.6e9) * m\n", " v_init = Vector(30000, 0) * m/s\n", " init = State(r=r_init, v=v_init)\n", " t_end = 3600 * 24 * 365 * s\n", " dt = t_end / 100\n", " \n", " return System(params, G_const=G_const, init=init, t_end=t_end, dt=dt)" ] }, { "cell_type": "code", "execution_count": 114, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
values
G_const6.67408e-11 meter ** 3 / kilogram / second ** 2
m_e5.972e+24 kilogram
m_s1.989e+30 kilogram
initr [0.0 meter, 149600000000.0 met...
t_end31536000 second
dt315360.0 second
\n", "
" ], "text/plain": [ "G_const 6.67408e-11 meter ** 3 / kilogram / second ** 2\n", "m_e 5.972e+24 kilogram\n", "m_s 1.989e+30 kilogram\n", "init r [0.0 meter, 149600000000.0 met...\n", "t_end 31536000 second\n", "dt 315360.0 second\n", "dtype: object" ] }, "execution_count": 114, "metadata": { }, "output_type": "execute_result" } ], "source": [ "system = make_system2(params)" ] }, { "cell_type": "code", "execution_count": 115, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "def slope_func2(state, t, system):\n", " \"\"\"Compute derivatives of the state.\n", " \n", " state: position, velocity\n", " t: time\n", " system: System object\n", " \n", " returns: derivatives of y and v\n", " \"\"\"\n", " r, v = state\n", " G_const, m_s = system.G_const, system.m_s\n", " \n", " drdt = v\n", " dvdt = G_const * -r.hat() * m_s / r.mag**2\n", " return drdt, dvdt" ] }, { "cell_type": "code", "execution_count": 116, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(array([30000., 0.]) ,\n", " array([-0. , -0.00593148]) )" ] }, "execution_count": 116, "metadata": { }, "output_type": "execute_result" } ], "source": [ "slope_func2(system.init, 0, system)" ] }, { "cell_type": "code", "execution_count": 117, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "def event_func2(state, t, system):\n", " r, v = state\n", " return r.mag" ] }, { "cell_type": "code", "execution_count": 118, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
values
successTrue
messageThe solver successfully reached the end of the...
\n", "
" ], "text/plain": [ "success True\n", "message The solver successfully reached the end of the...\n", "dtype: object" ] }, "execution_count": 118, "metadata": { }, "output_type": "execute_result" } ], "source": [ "results, details = run_ode_solver(system, slope_func2, events=event_func2)\n", "details" ] }, { "cell_type": "code", "execution_count": 119, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 119, "metadata": { "needs_background": "light" }, "output_type": "execute_result" } ], "source": [ "def plot_position2(results):\n", " indexes = results.index / (60 * 60 * 24)\n", " x = results.r.extract('x') / 1e9\n", " y = results.r.extract('y') / 1e9\n", " plot(indexes, x)\n", " plot(indexes, y)\n", "\n", " decorate(xlabel='Time (Days)',\n", " ylabel='Position (1 billion meters)')\n", " \n", "plot_position2(results)" ] }, { "cell_type": "code", "execution_count": 121, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 121, "metadata": { "needs_background": "light" }, "output_type": "execute_result" } ], "source": [ "def plot_orbit(results):\n", " indexes = results.index / (60 * 60 * 24)\n", " x = results.r.extract('x') / 1e9\n", " y = results.r.extract('y') / 1e9\n", " plot(x, y)\n", "\n", " decorate(xlabel='Time (Days)',\n", " ylabel='Position (1 billion meters)')\n", " \n", "plot_orbit(results)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 0 }