diff --git a/Untitled.ipynb b/Untitled.ipynb new file mode 100644 index 0000000..c9a224f --- /dev/null +++ b/Untitled.ipynb @@ -0,0 +1,91 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# First import everthing you need\n", + "import numpy as np\n", + "from matplotlib import pyplot as plt\n", + "from matplotlib import animation\n", + "from mpl_toolkits.mplot3d import Axes3D\n", + "\n", + "# Create some random data, I took this piece from here:\n", + "# http://matplotlib.org/mpl_examples/mplot3d/scatter3d_demo.py\n", + "def randrange(n, vmin, vmax):\n", + " return (vmax - vmin) * np.random.rand(n) + vmin\n", + "n = 100\n", + "xx = randrange(n, 23, 32)\n", + "yy = randrange(n, 0, 100)\n", + "zz = randrange(n, -50, -25)\n", + "\n", + "# Create a figure and a 3D Axes\n", + "fig = plt.figure()\n", + "ax = Axes3D(fig)\n", + "\n", + "# Create an init function and the animate functions.\n", + "# Both are explained in the tutorial. Since we are changing\n", + "# the the elevation and azimuth and no objects are really\n", + "# changed on the plot we don't have to return anything from\n", + "# the init and animate function. (return value is explained\n", + "# in the tutorial.\n", + "def init():\n", + " ax.scatter(xx, yy, zz, marker='o', s=120, c=\"goldenrod\",alpha=1.0)\n", + " return ()\n", + "\n", + "def animate(i):\n", + " ax.view_init(elev=0.1*i+10, azim=i)\n", + " return ()\n", + " \n", + "# Animate\n", + "anim = animation.FuncAnimation(fig, animate, init_func=init,\n", + " frames=360, interval=20, blit=True)\n", + "# Save\n", + "anim.save('basic_animation.mp4', writer='avconv',fps=30, extra_args=['-vcodec', 'libx264'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/finalproject_noho4078.ipynb b/finalproject_noho4078.ipynb new file mode 100644 index 0000000..edb856e --- /dev/null +++ b/finalproject_noho4078.ipynb @@ -0,0 +1,11862 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Final Project: N-Body Simulator\n", + "Noah Holland-Moritz" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#Import important modules\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2) Write Calculation Tools:\n", + "### |1| Functions from Homework E:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def forceGravMag(mass1, mass2, distance):\n", + " '''\n", + " Usage: forceGravMag(mass1,mass2,distance)\n", + " Calculates the gravitaional force due to gravity between\n", + " two objects.\n", + " \n", + " Inputs:\n", + " mass1: The mass of the first object (kg)\n", + " mass2: The mass of the second object (kg)\n", + " distance: The separation distance between\n", + " the two objects (m)\n", + " \n", + " Returns the magnitude of the force on each of the objects\n", + " due to the other (one value)\n", + " '''\n", + " #Include 'softening' of force of gravity for close objects\n", + " AU = 1.496e+11\n", + " epsilon = 0.1*AU\n", + " \n", + " G = 6.67408e-11\n", + " return G*mass1*mass2/(distance**2+epsilon**2)\n", + "\n", + "def getMagnitude(vector):\n", + " '''\n", + " Usage: getMagnitude(vector)\n", + " Calculates the magnitude of a vector of any size\n", + " \n", + " Inputs:\n", + " vector: a numpy array (vector) of any length\n", + " \n", + " Returns the magnitude of the vector\n", + " '''\n", + " sum = 0\n", + " for element in vector:\n", + " sum = sum +element**2\n", + " \n", + " return np.sqrt(sum)\n", + "\n", + "def getUnitVector(pos1, pos2):\n", + " '''\n", + " Usage: getUnitVector(pos1,pos2)\n", + " Returns the unit vector in the direction between two positions\n", + " \n", + " Inputs:\n", + " pos1: The first position's coordinates (any number of dimensions)\n", + " pos2: The second position's coordinates (any number of dimensions,\n", + " but if the dimensions do not match pos1, then the missing\n", + " dimensions are defaulted to zero)\n", + " \n", + " Returns a vector with the same number of dimensions as the inputs\n", + " in the direction between the two points (with magnitude 1)\n", + " '''\n", + " dims = np.max([len(pos1),len(pos2)])\n", + " pos1.resize(dims,refcheck=False)\n", + " pos2.resize(dims,refcheck=False)\n", + " \n", + " return (pos2-pos1)/getMagnitude(pos2-pos1)\n", + "\n", + "def forceVector(mass1,mass2,pos1,pos2):\n", + " '''\n", + " Usage: forceVector(mass1,mass2,pos1,pos2)\n", + " Calculates the vector of the force of the second object on the first.\n", + " This is equal to the negative force vector of the first object on the second.\n", + " \n", + " Inputs:\n", + " mass1: Mass of the first object (kg).\n", + " mass2: Mass of the second object (kg).\n", + " pos1: Coordinate position of the first object \n", + " (any number of dimensions) (meters)\n", + " pos2: Coordinate position of the second object \n", + " (any number of dimensions) (meters)\n", + " \n", + " Returns the vector quantity of the force exerted by the second object \n", + " on the first one.\n", + " '''\n", + " unitVec = getUnitVector(pos1,pos2)\n", + " return unitVec*forceGravMag(mass1,mass2,getMagnitude(pos2-pos1))\n", + "\n", + "def netForceVec(m,p):\n", + " '''Calculates the net force on each particle due to every other.\n", + " \n", + " Inputs:\n", + " m: A list of masses for each particle (numpy array)\n", + " p: a list of positions for each particle. (numpy array)\n", + " Each position is a vector (list) of three numbers; x,y,z\n", + " \n", + " Returns:\n", + " vectors: a list of vectors of the force on each particle.\n", + " Order is the same as order of the inputs. starting position\n", + " of each vector is not included, only the vector itself.\n", + " '''\n", + " totalVec = np.zeros((len(m),3))\n", + " for i in range(len(m)):\n", + " #Calculate the force for each particle\n", + " for j in range(len(m)):\n", + " #The force is the sum of the forces from each OTHER particle\n", + " #Thus, we check to see if the particle we're calculating is the same as in the above loop\n", + " if i != j:\n", + " force = forceVector(m[i],m[j],p[i],p[j])\n", + " totalVec[i] = totalVec[i]+force\n", + " \n", + " return totalVec" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 3.20076995e-28 1.60038497e-28 0.00000000e+00]\n", + " [ -3.20076995e-28 -1.60038497e-28 0.00000000e+00]]\n" + ] + } + ], + "source": [ + "#Test calculate netForceVec using two particles. \n", + "#The forces should be equal and opposite in direction\n", + "\n", + "masses = [20,60]\n", + "pos = np.array([np.array([0,0,0]),np.array([10,5,0])])\n", + "print netForceVec(masses,pos)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### |2| Copy and test updateParticles" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def updateParticles(masses, positions, velocities, dt):\n", + " \"\"\"\n", + " Evolve particles in time via leap-frog integrator scheme. This function\n", + " takes masses, positions, velocities, and a time step dt as\n", + "\n", + " Parameters\n", + " ----------\n", + " masses : np.ndarray\n", + " 1-D array containing masses for all particles, in kg\n", + " It has length N, where N is the number of particles.\n", + " positions : np.ndarray\n", + " 2-D array containing (x, y, z) positions for all particles.\n", + " Shape is (N, 3) where N is the number of particles.\n", + " velocities : np.ndarray\n", + " 2-D array containing (x, y, z) velocities for all particles.\n", + " Shape is (N, 3) where N is the number of particles.\n", + " dt : float\n", + " Evolve system for time dt (in seconds).\n", + "\n", + " Returns\n", + " -------\n", + " Updated particle positions and particle velocities, each being a 2-D\n", + " array with shape (N, 3), where N is the number of particles.\n", + "\n", + " \"\"\"\n", + "\n", + " startingPositions = np.array(positions)\n", + " startingVelocities = np.array(velocities)\n", + "\n", + " # how many particles are there?\n", + " nParticles, nDimensions = startingPositions.shape\n", + "\n", + " # make sure the three input arrays have consistent shapes\n", + " assert(startingVelocities.shape == startingPositions.shape)\n", + " assert(len(masses) == nParticles)\n", + "\n", + " # calculate net force vectors on all particles, at the starting position\n", + " startingForces = np.array(netForceVec(masses, startingPositions))\n", + "\n", + " # calculate the acceleration due to gravity, at the starting position\n", + " startingAccelerations = startingForces/np.array(masses).reshape(nParticles, 1)\n", + "\n", + " # calculate the ending position\n", + " nudge = startingVelocities*dt + 0.5*startingAccelerations*dt**2\n", + " endingPositions = startingPositions + nudge\n", + "\n", + " # calculate net force vectors on all particles, at the ending position\n", + " endingForces = np.array(netForceVec(masses, endingPositions))\n", + "\n", + " # calculate the acceleration due to gravity, at the ending position\n", + " endingAccelerations = endingForces/np.array(masses).reshape(nParticles, 1)\n", + "\n", + " # calculate the ending velocity\n", + " endingVelocities = (startingVelocities +\n", + " 0.5*(endingAccelerations + startingAccelerations)*dt)\n", + "\n", + " return endingPositions, endingVelocities" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "masses = np.array([50.0,40.0,50.0,30.0])\n", + "\n", + "pos = np.array([np.array([ 0.5, 2.6, 0.05]),\n", + " np.array([ 0.8, 9.1, 0.10]),\n", + " np.array([-4.1, -2.4, 0.80]),\n", + " np.array([10.7, 3.7, 0.00])])\n", + "\n", + "#Testing the above function using a small dataset\n", + "time = 2.5*24*60*60 #2.5 days\n", + "\n", + "[positions,velocities] = updateParticles(masses, pos, np.zeros((len(masses),3)), time)\n", + "plotable = np.transpose(pos[:,0:2])\n", + "plotable2 = np.transpose(positions[:,0:2])\n", + "\n", + "#Plotting initial positions as blue, final positions as red, velocities as red arrows\n", + "plt.scatter(plotable[0],plotable[1],color = 'b',s=masses)\n", + "plt.scatter(plotable2[0],plotable2[1],color='r',s=masses)\n", + "plt.quiver(plotable2[0],plotable2[1],np.transpose(velocities[:,0:2])[0],np.transpose(velocities[:,0:2])[1],color='r')\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the above image, blue points are initial positions, red points and arrows are final positions and velocities" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### |3| calculateTrajectories" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def calculateTrajectories(masses, positions, velocities, totalTime, timestep):\n", + " '''\n", + " Continuously evolve particles in time via leap-frog integrator scheme.\n", + "\n", + " Parameters\n", + " ----------\n", + " masses : np.ndarray\n", + " 1-D array containing masses for all particles, in kg\n", + " It has length N, where N is the number of particles.\n", + " positions : np.ndarray\n", + " 2-D array containing (x, y, z) positions for all particles.\n", + " Shape is (N, 3) where N is the number of particles.\n", + " velocities : np.ndarray\n", + " 2-D array containing (x, y, z) velocities for all particles.\n", + " Shape is (N, 3) where N is the number of particles.\n", + " totalTime : float\n", + " Evolve system for a total amount of time totalTime (in seconds).\n", + " timestep : float\n", + " Each leapfrog step has a change in time timestep (in seconds).\n", + "\n", + " Returns\n", + " -------\n", + " times : np.ndarray\n", + " 1-D array containing each time at which particle positions and velocities\n", + " were calculated. It has length nTimes (totalTime/timestep, rounded down)\n", + " positions : np.ndarray\n", + " 3-D array containing the positions of each particle at each corresponding\n", + " time in the times array. (nParticles x nDimensions x nTimes)\n", + " velocities : np.ndarray\n", + " 3-D array containing the velocities of each particle at each corresponding\n", + " time in the times array. (nParticles x nDimensions x nTimes)\n", + " '''\n", + " # \n", + " nParticles, nDimensions = positions.shape\n", + " \n", + " # Create times array. Time zero is designated as the start\n", + " # DOES NOT INCLUDE totalTime!\n", + " times = np.arange(0,totalTime,timestep)\n", + " \n", + " #Initialize 3D arrays:\n", + " pos = np.zeros((nParticles,nDimensions,len(times)))\n", + " vel = np.zeros((nParticles,nDimensions,len(times)))\n", + " pos[:,:,0] = positions\n", + " vel[:,:,0] = velocities\n", + " \n", + " for i in range(len(times)-1):\n", + " [currpos,currvel] = updateParticles(masses,pos[:,:,i],vel[:,:,i],timestep)\n", + " pos[:,:,i+1] = currpos\n", + " vel[:,:,i+1] = currvel\n", + " \n", + " return times, pos, vel" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAEKCAYAAAAGvn7fAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGARJREFUeJzt3X2UXFWd7vHvkzdI0gkEMySGDAlcJzCivBmQKw4UMFwz\nMBB0lAkiCFxGdBQjsgQSZl16OaigwxIG1JEhIIoxYECEwTiQG0quMswQILwlIXFAEolp5EXyhkmn\n87t/nOqkUunudFWdrlN9+vmsVSt1zj61z6+g+undu/apUkRgZmb5MSjrAszMLF0OdjOznHGwm5nl\njIPdzCxnHOxmZjnjYDczyxkHuzWEpFmSbs66DrOBwMFuqZC0XtK60q1D0qayfWdFxNci4lMZ1PVn\nku6V9Kqk1yQtkDSlrP1vJS2X9JaktZJukzSqm+e1XtJWSTeUtQ+X9G1Jv5f0pqRixfmvLZ3395Ku\nqWibJGmRpI2Slko6aTfPpdu+zMo52C0VETEqIkZHxGjgZeDUsn0/yrC0vYGfAlOAccDjpe1OvwKO\ni4i9gAOBocA/djZWPK/xwCbgrrLH/2vpHAcB+wCXdDZIugg4HXgvcChwmqTyX24/Ap4oPe4fgPmS\n3tHVk+hFX2Y7RIRvvqV6A14CTqzYdxXwg9L9ScA24DxgFfA6cBEwFXgaeAO4seLxFwBLS8cuAPav\nsbYxpXOP6aKtBbgd+LduHvtJ4Ndl2wcBfwBaujn+V8CFZdvnA4+W7k8B3gZGlrX/AvhUtX355lvl\nzSN2a6TKz684GngX8LfA9cBs4ETgPcCZkv4CQNJ04ArgDOBPgP9HMtql1H6/pMt6WcPxwO8i4s2y\nxx8r6Q/AOuAjwDe7eey5wPcr6n8Z+HJpeuRpSR8paz+E5BdVp6dL+wDeDbwYERu7aa/UU19mO3Gw\nW1YC+HJEbImIhcBG4EcR8XpErCEJ7yNKx14EfC0iVkTENuAa4HBJfwoQEadFxNd3d0JJE4GbKJsu\nKT3+VxGxN7Af8A2SvyIqHzsJOI5kRN9pIsnUyJvAO4GLgdslHVRqbwHeKjt+XWlfV22d7aPoWk99\nme3EwW5ZerXs/ttAW8V2Z3BNAm6Q9IakN0imY4IkiHtF0p8A/w7cFBF3dXVMRPyudMy8LprPAX4Z\nES9X1LgFuDoitkbEI8DDwP8qtW8ARpcdv1dpX1dtne3ru3kKPfVlthMHu/UHq4GLImKf0m1MRLRE\nxGO9ebCkvUkC+96I2N1qkqEkb6JWOgf4XsW+ZzpPUbavfLrpeeCwsu3DS/s62w6UNLKs/bCy9ko9\n9WW2Ewe7ZUW7P2S7fwFmS3o3gKS9JH20VydJli4+SDLavrKL9o93TumUpluuBhZWHPMBYAIwv+Lh\nj5BM28ySNFjSsUCB5JcIJPPxX5Q0QdJ+wBeB2wAiYiWwBLhK0h6lufn3AHd381S67cuskoPd+kJv\nPuS/8phutyPiXpJ59XmlNzmfAaZ1tkv6maQrujnPh4H3AeeX1qF3rkufWGp/N/CopPUk8/rLgMpl\nhOcCd1e80UlEbAWmA6eSrI75LnBORKwotX8XuB94luTNzvsi4l/LupgBHEUyR/8V4G8i4vXSc/qg\npHVl59pdX2bbKaJ3X7QhaQ7w10BbRBxa2jcGuJNkDvQ3wJkRUfmGkJmZNVA1I/bbgA9V7LsCWBgR\nBwGLgFlpFWZmZrXp9Ygdts9B3l82Yl8OHB8RbZLGA8WIOLhvSjUzs96od45934hoA4iItcC+9Zdk\nZmb1SPvNU38ztplZxobU+fg2SePKpmJe7e5ASQ59M7MaREQ1y4OrHrGLndcf30fyQU6QfEDSTysf\nUC7rD8apvF111VWZ19AfamrWulyTaxoIddWi18EuaS7wKDBF0ipJ55OsLT5Z0gvASaVtMzPLUK+n\nYiLi4900/WVKtZiZWQoG9JWnhUIh6xJ20Yw1QXPW5Zp6xzX1XrPWVa2q1rHXdSIpGnUuM7O8kET0\n8ZunZmbW5BzsZmY542A3M8sZB7uZWc442K1PnDBuKd/Vp3hEx/ENfYkz3rc665LMBgyvirHUnTbo\nAebFmQxjM0PpYDPD2MwenD76FxTfOmL3HZjZdrWsinGwW6p+/UIHex88jrG8vkvbYt7H1FicQVVm\n/ZeXO1rm/vfUpxnGli7bDuUZrrrEX7Bl1tcc7JYqDRmM2NZt+z5jBzewGrOByVMxlqq1a7axdb/9\nmcgrO+3vYBC/5IMcH7/IqDKz/slTMZa58RMGce4ed7GeFjpKL68OBvEG+3D15DkZV2c2MDjYLXWL\n/vgBPnPSSpZzEABtjOOmL/yah156V8aVmQ0MnoqxvnP22TB3LhxwALz4YtbVmPVLnoqx5jJiRPLv\nxo3Z1mE2wDjYre+MHJn8u2lTtnWYDTAOdus7nSP2TZvA03BmDeNgt77TGezbtsHmzdnWYjaAONit\n73ROxcCO6Zj29mxqMRtAHOyWvmuvhSee2DFiB1izBi67DG69Nbu6zAaIIVkXYDk1dSpMmLBj++ij\n4e234emns6vJbIDwOnZL329+k6xdrzR2LLS1wSD/oWjWW5mtY5d0iaTnJD0j6YeShqXRr/VTkyfD\nMcfsuv+EExzqZg1Q90+ZpAnAxcCREXEoyfTOjHr7tX5uRhcvgRNOaHwdZgNQWsOnwcBISUOAEcCa\nlPq1/upjHwNV/PV44onZ1GI2wNQd7BGxBrgOWAW8AvwhIhbW26/1cxMmwPHH77w9ZUp29ZgNIHWv\nipG0NzAdmAS8BcyX9PGImFt5bGtr6/b7hUKBQqFQ7+mtmZ11FhSLyf0TTth1BG9muygWixQ7f25q\nVPeqGEkfBT4UEX9X2j4HeH9EfK7iOK+KGWheew3e+U7YuhXmzIELLsi6IrN+J6tVMauAYyTtKUnA\nScCyFPq1/m7sWDj55OS+59fNGiaNOfb/AuYDTwFPAwJurrdfy4kZM5Llj5MnZ12J2YDhC5Ssb61b\nB7Nmwbe+lXUlZv1SLVMxDnbre2vXwvjxWVdh1i852M3McsZfjWdmZg52M7O8cbCbmeWMg93MLGcc\n7GZmOeNgNzPLGQe7mVnOONjNzHLGwW5mljMOdjOznHGwm5nljIPdzCxnHOxmZjnjYDczyxkHu5lZ\nzjjYzcxyxsFuZpYzDnYzs5xxsJuZ5YyD3cwsZxzsZmY5k0qwS9pL0o8lLZP0vKT3p9GvmZlVb0hK\n/dwA/CwiPiZpCDAipX7NzKxKioj6OpBGA09FxP/YzXFR77nMzAYaSUSEqnlMGlMxBwCvSbpN0pOS\nbpY0PIV+zcysBmlMxQwBjgQ+GxGLJV0PXAFcVXlga2vr9vuFQoFCoZDC6c3M8qNYLFIsFuvqI42p\nmHHAf0TEgaXtDwKXR8RpFcd5KsbMrEqZTMVERBuwWtKU0q6TgKX19mtmZrWpe8QOIOkw4BZgKPAi\ncH5EvFVxjEfsZmZVqmXEnkqw9+pEDnYzs6pltSrGzMyaiIPdzCxnHOxmZjnjYDczyxkHu5lZzjjY\nzcxyxsFuZpYzDnYzs5xxsJuZ5YyD3cwsZxzsZmY542A3M8sZB7uZWc442M3McsbBbmaWMw52M7Oc\ncbCbmeWMg93MLGcc7GZmOeNgNzPLGQe7mVnOONjNzHLGwW5mljOpBbukQZKelHRfWn2amVn10hyx\nzwSWptifmZnVIJVglzQROAW4JY3+zMysdmmN2L8JfAmIlPozM7MaDam3A0mnAm0RsURSAVB3x7a2\ntm6/XygUKBQK9Z7ezCxXisUixWKxrj4UUd8gW9JXgU8AW4HhwCjgnog4t+K4qPdcZmap27IFBg9O\nblX4zj9t5M6rV/L+Mydx7c1j+qg4kEREdDtg7vIxaYatpOOBSyPi9C7aHOxm1hw6OqBYhHnz4KWX\n4KGHQL3Pzkv0Tb7ClbQzlGFs4bt8igvXXU/LqKryt1dqCfa6p2LMzPqFbdvgsceSML/rLmhrS/bf\ncUfvQn3rVti4kTP3Wcj3mM0I/gi8DcCF3MLM0e9lTlzYd/VXIdURe48n8ojdzBotAp56KgnzO++E\nVat2PeYTn4D2dti4ETZt2nGr3G5v7/FUT3AE74snU38KHrGbmQEsXZqE+bx5sHJlz8fecUcqpxzK\n1lT6SYOD3czyZfNmeOEFePNNGDZs98ePGwctLTByJIwYsePWzfZ3LnuJ85nDnmzZ3sVGRnALF/LP\nffi0quGpGDPLt7VrkzdKFy1Kbv/93zu33347nHtulw/tyob1wY2jZ/MFrmcze7AHm/kJZ/Dux3/A\n4VPTHytnviqmxxM52M2sGaxaBQ8/vCPoAVasgOHDq+rmk9PaWPvQswz58z/jgecm9UGhCQe7mVk1\nIpIRfEsLjB+fdTVdcrCbmeVMLcHuz2M3M8sZB7uZWc442M3McsbBbmaWMw52M7OccbCbmeWMg93M\nLGf8WTFWt8LeSzjsrV/wNsPZ/KHp3P7zcVmXZDag+QIlq9mcmzbxpxdP51geZTAddDCYwXTwf/gy\nX4/Lsi7PLBd85ak11K06n7OYx3D+uNP+jYzgTM3ngW1/lVFlZvnhK0+tYb5y+bouQx1gJJuYFV/J\noCozAwe71eihOatoZ2i37VNY0cBqzKycg91qcnBhPMPKvmig0u94ZwOrMbNyDnaryb/MH8siTmRL\nF6P2DYzkOi7NoCozAwe71WH+qd9jFfuznhYAOhjEBkZwNx/h2+vOybg6s4HLq2KsLv93wRZuPuUn\nTGMBGxjFPSPO4f61R9Eyqqo38c2sG17uaGaWM5ksd5Q0UdIiSc9LelbS5+vt08zMalf3iF3SeGB8\nRCyR1AI8AUyPiOUVx3nEbmZWpUxG7BGxNiKWlO5vAJYB+9Xbr5mZ1SbVVTGSJgOHA/+ZZr9mZtZ7\nqX26Y2kaZj4wszRy30Vra+v2+4VCgUKhkNbpzcxyoVgsUiwW6+ojlVUxkoYA/wYsiIgbujnGc+xm\nZlXKbLmjpO8Dr0XEF3s4xsFuZlalTIJd0rHAI8CzQJRusyPi5xXHOdjNzKrkC5TMzHLGn8duZmYO\ndjOzvHGwm5nljIPdzCxnHOxmZjnjYDczyxkHu5lZzjjYzcxyxsFuZpYzDnYzs5xxsJuZ5YyD3cws\nZxzsZmY542A3M8sZB7uZWc442M3McsbBbmaWMw52M7OccbCbmeWMg93MLGcc7GZmOeNgNzPLGQe7\nmVnOpBLskqZJWi5phaTL0+jTzMxqo4iorwNpELACOAlYAzwOzIiI5RXHRb3nMjMbaCQREarmMWmM\n2I8GVkbEyxHRDswDpqfQr5mZ1SCNYN8PWF22/dvSPjMzy8CQRp6stbV1+/1CoUChUGjk6c3Mml6x\nWKRYLNbVRxpz7McArRExrbR9BRARcW3FcZ5jNzOrUlZz7I8D75I0SdIwYAZwXwr9mplZDeqeiomI\nDkmfAx4k+UUxJyKW1V2ZmZnVpO6pmF6fyFMxZmZVy2oqxszMmoiD3cwsZxzsZmY542A3M8sZB7uZ\nWc442M3McsbBbmaWMw52M7OccbCbmeWMg93MLGcc7GZmOeNgNzPLGQe7mVnOONjNzHLGwW5mljMO\n9mpFJDczsyblYK/GsmVwxRVZV2Fm1iMHe29s2ACXXw6HHgpHHw2q6stMzMwayl+N15MImD8fLrkE\nXnkFDj4Ynn8eBvn3oZk1Ri1fjVf3l1nn1vLlcPHFsHDhjn2zZjnUzazpecReaeNGuPpquO46aG/f\nsX/yZFixAoYOzaw0Mxt4PGKvRwTcc08y7bJ69a7tl13mUDezfsEjdoCODvjCF+Cmm7puHz8eXnoJ\n9tyzsXWZ2YBXy4i9rgljSV+XtEzSEkl3SxpdT3+ZGTwYbrwRVq6EqVN3bb/0Uoe6mfUb9b4T+CBw\nSEQcDqwEZtVfUoYWLIDFi3feN2YMfPrT2dRjZlaDuoI9IhZGxLbS5mPAxPpLysidd8LMmcn9sWPh\nM59J7s+cCS0t2dVlZlal1ObYJd0HzIuIud20N+8c+8KFcMopySqYkSPh4YeTVTAHH5xMz+yzT9YV\nmtkA1SerYiQ9BIwr3wUEcGVE3F865kqgvbtQ79Ta2rr9fqFQoFAoVFNr31i8GD784STUhw6Fn/wE\njjoqabv3Xoe6mTVUsVikWCzW1UfdI3ZJ5wF/B5wYEZt7OK75RuwrV8Kxx8Lvf59sz50LZ52VbU1m\nZmUavo5d0jTgS8BxPYV6M9iwPpix1wIuim+zL6/yJEfy4aEPML69FOo33OBQN7NcqGvELmklMAx4\nvbTrsYj4+26OzWzEvmF9MH/0eXyUu2lhIwDbEIMo1TNrFnz1q5nUZmbWk1pG7APiAqW/HvQz5sWZ\n20O93EaGs/636xm/3+AMKjMz61nDL1DqLy6Kb3cZ6gAdDObsA/+jwRWZmfWdARHs43i127ZtDGLU\nlte7bTcz628GRLA/wnFsZliXbXuwhW2HHdHgiszM+s6ACPaHD7mYLV0E+9vsyc+Zxn1L9s+gKjOz\nvjEggv2B5yZxxrAF/I7xrGMUbzF6e6iv/cYdWZdnZpaqAbEqptPaNds4+4BHGbXlddoPOZwHnpuU\naT1mZrvj5Y5mZjnj5Y5mZuZgNzPLGwe7mVnOONjNzHLGwW5mljMOdjOznHGwm5nljIPdzCxnHOxm\nZjnjYDczyxkHu5lZzjjYzcxyxsFuZpYzDnYzs5xxsJuZ5UwqwS7pUknbJO2TRn9mZla7uoNd0kTg\nZODl+stprGKxmHUJu2jGmqA563JNveOaeq9Z66pWGiP2bwJfSqGfhmvG/4nNWBM0Z12uqXdcU+81\na13VqivYJZ0OrI6IZ1Oqx8zM6jRkdwdIeggYV74LCOAfgNkk0zDlbWZmlqGav8xa0nuAhcAmkkCf\nCLwCHB0Rr3ZxvL/J2sysBtV+mXXNwb5LR9JLwJER8WYqHZqZWU3SXMceeCrGzCxzqY3YzcysOTT8\nylNJF0taJulZSdc0+vzdaaaLrCR9vfTfaImkuyWNzrCWaZKWS1oh6fKs6iirZ6KkRZKeL72GPp91\nTZ0kDZL0pKT7sq6lk6S9JP249Hp6XtL7m6CmSyQ9J+kZST+UNCyDGuZIapP0TNm+MZIelPSCpH+X\ntFeT1FV1HjQ02CUVgNOA90bEe4F/auT5u9OEF1k9CBwSEYcDK4FZWRQhaRBwE/Ah4BDgLEkHZ1FL\nma3AFyPiEOB/Ap9tgpo6zQSWZl1EhRuAn0XEnwOHAcuyLEbSBOBikvfjDiVZmTcjg1JuI3ldl7sC\nWBgRBwGLyObnrqu6qs6DRo/YPwNcExFbASLitQafvztNdZFVRCyMiG2lzcdIVhxl4WhgZUS8HBHt\nwDxgeka1ABARayNiSen+BpKg2i/LmmD74OAU4Jasa+lUGtn9RUTcBhARWyNiXcZlAQwGRkoaAowA\n1jS6gIj4JVC50GM6cHvp/u3AGQ0tiq7rqiUPGh3sU4DjJD0m6WFJUxt8/l30g4usLgAWZHTu/YDV\nZdu/pQlCtJOkycDhwH9mWwmwY3DQTG9aHQC8Jum20hTRzZKGZ1lQRKwBrgNWkSyP/kNELMyypjL7\nRkQbJAMIYN+M6+lKr/JgtxcoVWs3FzQNAcZExDGSjgLuAg5Mu4Yqa8rkIqsearoyIu4vHXMl0B4R\ncxtRU38iqQWYD8wsjdyzrOVUoC0ilpSmG5tlddgQ4EjgsxGxWNL1JNMNV2VVkKS9SUbGk4C3gPmS\nPt6kr/Fm+iVdVR6kHuwRcXJ3bZI+DdxTOu7x0puV74iI19Ouozc1lS6ymgw8LanzIqsnJHV5kVUj\naiqr7TySP+1P7Ms6duMVYP+y7c6L0DJV+hN+PvCDiPhp1vUAxwKnSzoFGA6MkvT9iDg347p+S/LX\n6OLS9nwg6zfA/xJ4MSLeAJB0D/ABoBmCvU3SuIhokzQe6NMMqEa1edDoqZh7KRUmaQowtK9DvScR\n8VxEjI+IAyPiAJIfhCP6OtR3R9I0kj/rT4+IzRmW8jjwLkmTSisXZgDNsOLjVmBpRNyQdSEAETE7\nIvaPiANJ/hstaoJQpzStsLr0swZwEtm/ubsKOEbSnqXB1Elk94au2Pmvq/uA80r3PwlkNWjYqa5a\n8iD1Eftu3AbcKulZYDOQ+Yu/QrNcZHUjMAx4KHnt81hE/H2ji4iIDkmfI3lXfhAwJyKyXlVxLHA2\n8Kykp0j+n82OiJ9nWVcT+zzwQ0lDgReB87MsJiL+S9J84CmgvfTvzY2uQ9JcoAC8Q9Iqkumpa4Af\nS7qAZIXcmU1S12yqzANfoGRmljP+ajwzs5xxsJuZ5YyD3cwsZxzsZmY542A3M8sZB7uZWc442M3M\ncsbBbmaWM/8f19LS68Ul5DUAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "[times,positions,velocities] = calculateTrajectories(masses, pos, np.zeros((len(masses),3)), 1.2*time+1, time/10)\n", + "\n", + "# let's plot each time step below; Shouldn't be too many.\n", + "for i in range(len(times)-1):\n", + " currpos = np.transpose(positions[:,0:2,i])\n", + " currvel = np.transpose(velocities[:,0:2,i])\n", + "\n", + " plt.scatter(currpos[0],currpos[1],color = 'b',s=masses)\n", + " \n", + " plt.title(\"Time: {}\".format(times[i]))\n", + "\n", + " \n", + "currpos = np.transpose(positions[:,0:2,len(times)-1])\n", + "currvel = np.transpose(velocities[:,0:2,len(times)-1])\n", + "\n", + "plt.scatter(currpos[0],currpos[1],color = 'r',s=masses)\n", + "plt.quiver(currpos[0],currpos[1],currvel[0],currvel[1],color='r')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the above graph, each particle's positions is changed at each time step. The red particles with arrows are the final positions and velocities for each one. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3) Earth in (circular) orbit around the Sun:\n", + "### |4| Testing the code with initial conditions" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "au = 1.496e11\n", + "masses = np.array([1.989e30,5.972e24])\n", + "pos = au*np.array([np.array([-3e-6,0,0]),np.array([0.999997,0,0])])\n", + "vel = np.array([np.array([0,-8.94e-2,0]),np.array([0,2.98e4,0])])" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "totalTime = 1000*24*60*60+1 #1000 days\n", + "timestep = 0.1*24*60*60 #0.1 day\n", + "\n", + "[times,positions,velocities] = calculateTrajectories(masses, pos, vel, totalTime, timestep)\n", + "# Convert positions to AU and times to days\n", + "positions = positions/au\n", + "times = times/60/60/24" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### |5| Plotting the data" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nSUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(times,positions[1,0,:]);\n", + "plt.title(\"X position of Earth (AU)\");\n", + "plt.xlabel(\"Time (days)\");\n", + "plt.ylabel('X coordinate (AU)');\n", + "plt.xlim([0,1000]);\n", + "plt.ylim([-1,1]);\n", + "plt.show();\n", + "\n", + "plt.figure(figsize=(5,5))\n", + "plt.plot(positions[1,0,:],positions[1,1,:]);\n", + "plt.plot(positions[0,0,:],positions[0,1,:],color='r');\n", + "plt.title(\"Trajectories\");\n", + "plt.xlabel(\"Y coordinate (AU)\");\n", + "plt.ylabel('X coordinate (AU)');\n", + "plt.axis('scaled')\n", + "plt.xlim([-1.1,1.1]);\n", + "plt.ylim([-1.1,1.1]);\n", + "plt.show();\n", + "\n", + "plt.plot(times,velocities[0,0,:]);\n", + "plt.title(\"X velocity of Sun (m/s)\");\n", + "plt.xlabel(\"Time (days)\");\n", + "plt.ylabel('X velocity (m/s)');\n", + "plt.xlim([0,1000]);\n", + "plt.ylim([-1,1]);\n", + "plt.show();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The period of the earth's rotation is roughly 365 days, according to the first plot. This makes perfect sense since our years are 365 days long. \n", + "\n", + "In order to detect an earth-like planet around a sun-like star, we need to be able to measure the radial velocity of the star within 0.1 m/s at least. The sun's x velocity in the third plot above almost never goes above 0.1 m/s, so that's the kind of accuracy you need. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### |6| Changing initial velocities" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#Cut velocities in half\n", + "vel = vel/2\n", + "\n", + "#Redo calculations\n", + "[times,positions,velocities] = calculateTrajectories(masses, pos, vel, totalTime, timestep)\n", + "# Convert positions to AU and times to days\n", + "positions = positions/au\n", + "times = times/60/60/24" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n/weCYMIuWleRegAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nCIKgJH8D0flDHXmJjnEAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nUhERkdT8f1lRDp8PZuXpAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(times,positions[1,0,:]);\n", + "plt.title(\"X position of Earth (AU)\");\n", + "plt.xlabel(\"Time (days)\");\n", + "plt.ylabel('X coordinate (AU)');\n", + "plt.xlim([0,1000]);\n", + "plt.ylim([-1,1]);\n", + "plt.show();\n", + "\n", + "plt.figure(figsize=(5,5))\n", + "plt.plot(positions[1,0,:],positions[1,1,:]);\n", + "plt.plot(positions[0,0,:],positions[0,1,:],color='r');\n", + "plt.title(\"Trajectories\");\n", + "plt.xlabel(\"Y coordinate (AU)\");\n", + "plt.ylabel('X coordinate (AU)');\n", + "plt.axis('scaled')\n", + "plt.xlim([-1.1,1.1]);\n", + "plt.ylim([-1.1,1.1]);\n", + "plt.show();\n", + "\n", + "plt.plot(times,velocities[0,0,:]);\n", + "plt.title(\"X velocity of Sun (m/s)\");\n", + "plt.xlabel(\"Time (days)\");\n", + "plt.ylabel('X velocity (m/s)');\n", + "plt.xlim([0,1000]);\n", + "plt.ylim([-1,1]);\n", + "plt.show();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the new starting velocities, the orbit of the planet becomes much more elliptical. This makes sense, as it does not have the speed necessary to maintain a circular orbit. \n", + "\n", + "What's particularly interesting is how the the sun's orbit becomes much more jagged. This is because when the earth is close, it moves very quickly and pulls much more strongly on the sun. Thus, the jagged point. When the earth is farther away, it has less effect and the sun's orbit is relatively smooth. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## 4) The circumbinary exoplanet Kepler-16ABb:\n", + "### |7| Loading the initial conditions:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "fileData = np.loadtxt('/home/zabe0091/nbody/initialconditions/kepler16.txt')" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "masses = fileData[:,0]\n", + "positions = fileData[:,1:4]\n", + "velocities = fileData[:,4:7]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### |8| Plotting initial positions" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(positions[:,0],positions[:,2],s=5000*(masses/masses.max()));\n", + "plt.quiver(positions[:,0],positions[:,2],velocities[:,0],velocities[:,2],color='r')\n", + "plt.title('Positions and velocities in the x-z plane');\n", + "plt.xlabel('X coordinate (m)');\n", + "plt.ylabel('Z coordinate (m)');\n", + "plt.xlim((-5e10,5e10));\n", + "plt.ylim((-0.5e11,1e11));" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### |9| Calculate trajectories for 500 days" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "totalTime = 500*24*60*60 #500 days in seconds\n", + "timestep = 0.5*24*60*60 #0.5 days in seconds\n", + "\n", + "[times,positions,velocities] = calculateTrajectories(masses,positions,velocities,totalTime,timestep)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### |10| Create animation of particles over time" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "replot = False\n", + "# Set this to false to skip \n", + "# redrawing and saving of the animation.\n", + "# Saves lots of time if you've already run \n", + "# the code once. This cell will redraw and save \n", + "# the animation if the file does not exist anyway\n", + "\n", + "######### BEGIN ANIMATION CODE ############\n", + "\n", + "# First we need to setup imbedded animation tools:\n", + "# Check out this link to see where I got the supporting code:\n", + "# http://jakevdp.github.io/blog/2013/05/12/embedding-matplotlib-animations/\n", + "import os.path\n", + "\n", + "VIDEO_TAG = \"\"\"\"\"\"\n", + "def anim_to_html(anim,name):\n", + " if not hasattr(anim, '_encoded_video'):\n", + " if ((not(os.path.isfile(name))) or replot):\n", + " anim.save(name, writer = 'avconv', fps=60, extra_args=['-vcodec', 'libx264'])\n", + " video = open(name, \"rb\").read()\n", + " anim._encoded_video = video.encode(\"base64\")\n", + " \n", + " return VIDEO_TAG.format(anim._encoded_video)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from IPython.display import HTML\n", + "\n", + "def display_animation(anim,name):\n", + " plt.close(anim._fig)\n", + " return HTML(anim_to_html(anim,name))" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import matplotlib.animation as ani\n", + "\n", + "# First set up the figure, the axis, and the plot element we want to animate\n", + "fig = plt.figure()\n", + "ax = plt.axes(xlim=(-1.5e11,1.5e11), ylim=(-1.5e11,1.5e11))\n", + "plt.suptitle('Orbit of Kepler 16ABb',fontsize=10)\n", + "plt.xlabel('X coordinate (m)')\n", + "plt.ylabel('Y coordinate (m)')\n", + "\n", + "# Initialization of the animation. Scat1 is the scatter of planets. \n", + "# Scat2 is just a circle around the smallest, to hilight it\n", + "def init():\n", + " ax.set_title('',animated=True)\n", + " ax.scat1 = ax.scatter([],[],s=250*(masses/masses.max()))\n", + " ax.scat2 = ax.scatter([],[], s=120, facecolors='none', edgecolors='r')\n", + " return ax.scat1,ax.scat2\n", + "\n", + "# animation function. This is called sequentially\n", + "def animate(i):\n", + " ax.set_title('Day {} of {}'.format(i+1,len(times)),fontsize=8)\n", + " ax.scat1.set_offsets(np.transpose([positions[:,0,i],positions[:,2,i]]))\n", + " ax.scat2.set_offsets(np.transpose([positions[2,0,i],positions[2,2,i]]))\n", + " return ax.scat1,ax.scat2\n", + "\n", + "# call the animator. blit=True means only re-draw the parts that have changed.\n", + "anim = ani.FuncAnimation(fig, animate, init_func=init, frames=len(times), interval=10, blit=True)\n", + "\n", + "# call our new function to display and save the animation\n", + "display_animation(anim,\"Kepler 16ABb.mp4\") \n", + "# Animation is also saved as \"Kepler 16ABb.mp4\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## 5) Choose Your Own Adventure:\n", + "### |11| Loading the initial conditions:" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def tinyCluster(N=20, maximum_mass=0.1):\n", + " '''This function creates N-body initial conditions for \n", + " a (very) cartoon model of stellar cluster.\n", + " \n", + " WARNING: With these initial conditions, it's very easy \n", + " for some of your particles to have very close approaches.\n", + " This means, to properly resolve their motion, you either\n", + " need to:\n", + " \n", + " (a) take very short time steps so you accurately\n", + " capture the accelerations of these close approaches\n", + " \n", + " (b) modify your force of gravity calculation by \n", + " including a \"softening length\". That is, in the \n", + " place where you calculate F = GMm/r**2, you instead\n", + " calculate the magnitude of the force as GMm/s**(2,\n", + " where s = np.sqrt(r**2 + epsilon**2) where epsilon\n", + " is some small number like 0.1 AU. This \"softens\" the\n", + " strong forces that would otherwise result from very \n", + " close approaches.\n", + " \n", + " Inputs:\n", + " N (= 30 by default)\n", + " the total number of particles to create\n", + " maximum_mass (= 0.01 solar masses by default)\n", + " the maximum mass of the particles that can go\n", + " into the cluster; the masses of the particles \n", + " will be random, drawn from a uniform distribution\n", + " with this as the maximum\n", + "\n", + " Outputs:\n", + " this function returns three arrays\n", + " masses [shape is (nParticles)]\n", + " positions [shape (nParticles, nDimensions)]\n", + " velocities [shape (nParticles, nDimensions)]\n", + " \n", + " Example Usage:\n", + " mParticles, initialPositions, initialVelocities = tinyCluster()\n", + " '''\n", + " G = 6.67408e-11\n", + " au = 1.496e+11\n", + " \n", + " maximum_mass = maximum_mass*1.989e30\n", + " \n", + " # set up the masses\n", + " masses = np.random.uniform(0, 1, N)*maximum_mass\n", + "\n", + " # convert to cartesian coordinates\n", + " positions = np.random.normal(0, 1.0, [N,3])*au*5\n", + " radii = np.sqrt(np.sum(positions**2, 1))\n", + " mass_enclosed = np.array([np.sum(masses[radii <= r]) for r in radii]) \n", + " sigma = np.sqrt(G*mass_enclosed/radii)\n", + " \n", + " #directions = np.array([np.cross(np.random.uniform(size=3), positions[i]) for i in range(N)])\n", + " #for i in range(N):\n", + " # directions[i,:] /= np.sqrt(np.sum(directions[i,:]**2))\n", + " \n", + " # calculate velocities for circular orbits\n", + " #velocities = (sigma*np.random.normal(0,1,N))[:,np.newaxis]*directions \n", + " velocities = sigma[:,np.newaxis]*np.random.normal(0,1,[N,3])*0.5\n", + "\n", + " # return them as three separate arrays\n", + " return masses, positions, velocities\n", + "\n", + "masses,positions,velocities = tinyCluster(N=30)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "totalTime = 10000*24*60*60 #500 days in seconds\n", + "timestep = 10*24*60*60 #0.5 days in seconds\n", + "\n", + "[times,positions,velocities] = calculateTrajectories(masses,positions,velocities,totalTime,timestep)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# First set up the figure, the axis, and the plot element we want to animate\n", + "fig = plt.figure()\n", + "ax = plt.axes(xlim=(-10e11,10e11), ylim=(-10e11,10e11))\n", + "plt.suptitle('Orbit of Kepler 16ABb',fontsize=10)\n", + "plt.xlabel('X coordinate (m)')\n", + "plt.ylabel('Y coordinate (m)')\n", + "\n", + "# Initialization of the animation. Scat1 is the scatter of planets. \n", + "# Scat2 is just a circle around the smallest, to hilight it\n", + "def init():\n", + " ax.set_title('',animated=True)\n", + " ax.scat1 = ax.scatter([],[],s=500*(masses/masses.max()))\n", + " return ax.scat1,\n", + "\n", + "# animation function. This is called sequentially\n", + "def animate(i):\n", + " ax.set_title('Day {} of {}'.format(i+1,len(times)),fontsize=8)\n", + " ax.scat1.set_offsets(np.transpose([positions[:,0,i],positions[:,1,i]]))\n", + " return ax.scat1,\n", + "\n", + "# call the animator. blit=True means only re-draw the parts that have changed.\n", + "anim = ani.FuncAnimation(fig, animate, init_func=init, frames=len(times), interval=10, blit=True)\n", + "\n", + "# call our new function to display and save the animation\n", + "display_animation(anim,\"cluster.mp4\") \n", + "# Animation is also saved as \"Kepler 16ABb.mp4\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/finalprojectdraft_noho4078.ipynb b/finalprojectdraft_noho4078.ipynb new file mode 100644 index 0000000..3936a5d --- /dev/null +++ b/finalprojectdraft_noho4078.ipynb @@ -0,0 +1,694 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Final Project: N-Body Simulator\n", + "Noah Holland-Moritz" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#Import important modules\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1) Functions from Homework E:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def forceGravMag(mass1, mass2, distance):\n", + " '''\n", + " Usage: forceGravMag(mass1,mass2,distance)\n", + " Calculates the gravitaional force due to gravity between\n", + " two objects.\n", + " \n", + " Inputs:\n", + " mass1: The mass of the first object (kg)\n", + " mass2: The mass of the second object (kg)\n", + " distance: The separation distance between\n", + " the two objects (m)\n", + " \n", + " Returns the magnitude of the force on each of the objects\n", + " due to the other (one value)\n", + " '''\n", + " G = 6.67408e-11\n", + " return G*mass1*mass2/(distance**2)\n", + "\n", + "def getMagnitude(vector):\n", + " '''\n", + " Usage: getMagnitude(vector)\n", + " Calculates the magnitude of a vector of any size\n", + " \n", + " Inputs:\n", + " vector: a numpy array (vector) of any length\n", + " \n", + " Returns the magnitude of the vector\n", + " '''\n", + " sum = 0\n", + " for element in vector:\n", + " sum = sum +element**2\n", + " \n", + " return np.sqrt(sum)\n", + "\n", + "def getUnitVector(pos1, pos2):\n", + " '''\n", + " Usage: getUnitVector(pos1,pos2)\n", + " Returns the unit vector in the direction between two positions\n", + " \n", + " Inputs:\n", + " pos1: The first position's coordinates (any number of dimensions)\n", + " pos2: The second position's coordinates (any number of dimensions,\n", + " but if the dimensions do not match pos1, then the missing\n", + " dimensions are defaulted to zero)\n", + " \n", + " Returns a vector with the same number of dimensions as the inputs\n", + " in the direction between the two points (with magnitude 1)\n", + " '''\n", + " dims = np.max([len(pos1),len(pos2)])\n", + " pos1.resize(dims,refcheck=False)\n", + " pos2.resize(dims,refcheck=False)\n", + " \n", + " return (pos2-pos1)/getMagnitude(pos2-pos1)\n", + "\n", + "def forceVector(mass1,mass2,pos1,pos2):\n", + " '''\n", + " Usage: forceVector(mass1,mass2,pos1,pos2)\n", + " Calculates the vector of the force of the second object on the first.\n", + " This is equal to the negative force vector of the first object on the second.\n", + " \n", + " Inputs:\n", + " mass1: Mass of the first object (kg).\n", + " mass2: Mass of the second object (kg).\n", + " pos1: Coordinate position of the first object \n", + " (any number of dimensions) (meters)\n", + " pos2: Coordinate position of the second object \n", + " (any number of dimensions) (meters)\n", + " \n", + " Returns the vector quantity of the force exerted by the second object \n", + " on the first one.\n", + " '''\n", + " unitVec = getUnitVector(pos1,pos2)\n", + " return unitVec*forceGravMag(mass1,mass2,getMagnitude(pos2-pos1))\n", + "\n", + "def netForceVec(m,p):\n", + " '''Calculates the net force on each particle due to every other.\n", + " \n", + " Inputs:\n", + " m: A list of masses for each particle (numpy array)\n", + " p: a list of positions for each particle. (numpy array)\n", + " Each position is a vector (list) of three numbers; x,y,z\n", + " \n", + " Returns:\n", + " vectors: a list of vectors of the force on each particle.\n", + " Order is the same as order of the inputs. starting position\n", + " of each vector is not included, only the vector itself.\n", + " '''\n", + " totalVec = np.zeros((len(m),3))\n", + " for i in range(len(m)):\n", + " #Calculate the force for each particle\n", + " for j in range(len(m)):\n", + " #The force is the sum of the forces from each OTHER particle\n", + " #Thus, we check to see if the particle we're calculating is the same as in the above loop\n", + " if i != j:\n", + " force = forceVector(m[i],m[j],p[i],p[j])\n", + " totalVec[i] = totalVec[i]+force\n", + " \n", + " return totalVec" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 5.73069948e-10 2.86534974e-10 0.00000000e+00]\n", + " [ -5.73069948e-10 -2.86534974e-10 0.00000000e+00]]\n" + ] + } + ], + "source": [ + "#Test calculate netForceVec using two particles. \n", + "#The forces should be equal and opposite in direction\n", + "\n", + "masses = [20,60]\n", + "pos = np.array([np.array([0,0,0]),np.array([10,5,0])])\n", + "print netForceVec(masses,pos)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2) Copy and test updateParticles" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def updateParticles(masses, positions, velocities, dt):\n", + " \"\"\"\n", + " Evolve particles in time via leap-frog integrator scheme. This function\n", + " takes masses, positions, velocities, and a time step dt as\n", + "\n", + " Parameters\n", + " ----------\n", + " masses : np.ndarray\n", + " 1-D array containing masses for all particles, in kg\n", + " It has length N, where N is the number of particles.\n", + " positions : np.ndarray\n", + " 2-D array containing (x, y, z) positions for all particles.\n", + " Shape is (N, 3) where N is the number of particles.\n", + " velocities : np.ndarray\n", + " 2-D array containing (x, y, z) velocities for all particles.\n", + " Shape is (N, 3) where N is the number of particles.\n", + " dt : float\n", + " Evolve system for time dt (in seconds).\n", + "\n", + " Returns\n", + " -------\n", + " Updated particle positions and particle velocities, each being a 2-D\n", + " array with shape (N, 3), where N is the number of particles.\n", + "\n", + " \"\"\"\n", + "\n", + " startingPositions = np.array(positions)\n", + " startingVelocities = np.array(velocities)\n", + "\n", + " # how many particles are there?\n", + " nParticles, nDimensions = startingPositions.shape\n", + "\n", + " # make sure the three input arrays have consistent shapes\n", + " assert(startingVelocities.shape == startingPositions.shape)\n", + " assert(len(masses) == nParticles)\n", + "\n", + " # calculate net force vectors on all particles, at the starting position\n", + " startingForces = np.array(netForceVec(masses, startingPositions))\n", + "\n", + " # calculate the acceleration due to gravity, at the starting position\n", + " startingAccelerations = startingForces/np.array(masses).reshape(nParticles, 1)\n", + "\n", + " # calculate the ending position\n", + " nudge = startingVelocities*dt + 0.5*startingAccelerations*dt**2\n", + " endingPositions = startingPositions + nudge\n", + "\n", + " # calculate net force vectors on all particles, at the ending position\n", + " endingForces = np.array(netForceVec(masses, endingPositions))\n", + "\n", + " # calculate the acceleration due to gravity, at the ending position\n", + " endingAccelerations = endingForces/np.array(masses).reshape(nParticles, 1)\n", + "\n", + " # calculate the ending velocity\n", + " endingVelocities = (startingVelocities +\n", + " 0.5*(endingAccelerations + startingAccelerations)*dt)\n", + "\n", + " return endingPositions, endingVelocities" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nhpAAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "masses = np.array([50.0,40.0,50.0,30.0])\n", + "\n", + "pos = np.array([np.array([ 0.5, 2.6, 0.05]),\n", + " np.array([ 0.8, 9.1, 0.10]),\n", + " np.array([-4.1, -2.4, 0.80]),\n", + " np.array([10.7, 3.7, 0.00])])\n", + "\n", + "#Testing the above function using a small dataset\n", + "time = 2.5*24*60*60 #2.5 days\n", + "\n", + "[positions,velocities] = updateParticles(masses, pos, np.zeros((len(masses),3)), time)\n", + "plotable = np.transpose(pos[:,0:2])\n", + "plotable2 = np.transpose(positions[:,0:2])\n", + "\n", + "#Plotting initial positions as blue, final positions as red, velocities as red arrows\n", + "plt.scatter(plotable[0],plotable[1],color = 'b',s=masses)\n", + "plt.scatter(plotable2[0],plotable2[1],color='r',s=masses)\n", + "plt.quiver(plotable2[0],plotable2[1],np.transpose(velocities[:,0:2])[0],np.transpose(velocities[:,0:2])[1],color='r')\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the above image, blue points are initial positions, red points and arrows are final positions and velocities" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3) calculateTrajectories" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def calculateTrajectories(masses, positions, velocities, totalTime, timestep):\n", + " '''\n", + " Continuously evolve particles in time via leap-frog integrator scheme.\n", + "\n", + " Parameters\n", + " ----------\n", + " masses : np.ndarray\n", + " 1-D array containing masses for all particles, in kg\n", + " It has length N, where N is the number of particles.\n", + " positions : np.ndarray\n", + " 2-D array containing (x, y, z) positions for all particles.\n", + " Shape is (N, 3) where N is the number of particles.\n", + " velocities : np.ndarray\n", + " 2-D array containing (x, y, z) velocities for all particles.\n", + " Shape is (N, 3) where N is the number of particles.\n", + " totalTime : float\n", + " Evolve system for a total amount of time totalTime (in seconds).\n", + " timestep : float\n", + " Each leapfrog step has a change in time timestep (in seconds).\n", + "\n", + " Returns\n", + " -------\n", + " times : np.ndarray\n", + " 1-D array containing each time at which particle positions and velocities\n", + " were calculated. It has length nTimes (totalTime/timestep, rounded down)\n", + " positions : np.ndarray\n", + " 3-D array containing the positions of each particle at each corresponding\n", + " time in the times array. (nParticles x nDimensions x nTimes)\n", + " velocities : np.ndarray\n", + " 3-D array containing the velocities of each particle at each corresponding\n", + " time in the times array. (nParticles x nDimensions x nTimes)\n", + " '''\n", + " # \n", + " nParticles, nDimensions = positions.shape\n", + " \n", + " # Create times array. Time zero is designated as the start\n", + " # DOES NOT INCLUDE totalTime!\n", + " times = np.arange(0,totalTime,timestep)\n", + " \n", + " #Initialize 3D arrays:\n", + " pos = np.zeros((nParticles,nDimensions,len(times)))\n", + " vel = np.zeros((nParticles,nDimensions,len(times)))\n", + " pos[:,:,0] = positions\n", + " vel[:,:,0] = velocities\n", + " \n", + " for i in range(len(times)-1):\n", + " [currpos,currvel] = updateParticles(masses,pos[:,:,i],vel[:,:,i],timestep)\n", + " pos[:,:,i+1] = currpos\n", + " vel[:,:,i+1] = currvel\n", + " \n", + " return times, pos, vel" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "[times,positions,velocities] = calculateTrajectories(masses, pos, np.zeros((len(masses),3)), 1.2*time+1, time/10)\n", + "\n", + "# let's plot each time step below; Shouldn't be too many.\n", + "for i in range(len(times)-1):\n", + " currpos = np.transpose(positions[:,0:2,i])\n", + " currvel = np.transpose(velocities[:,0:2,i])\n", + "\n", + " plt.scatter(currpos[0],currpos[1],color = 'b',s=masses)\n", + " \n", + " plt.title(\"Time: {}\".format(times[i]))\n", + "\n", + " \n", + "currpos = np.transpose(positions[:,0:2,len(times)-1])\n", + "currvel = np.transpose(velocities[:,0:2,len(times)-1])\n", + "\n", + "plt.scatter(currpos[0],currpos[1],color = 'r',s=masses)\n", + "plt.quiver(currpos[0],currpos[1],currvel[0],currvel[1],color='r')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the above graph, each particle's positions is changed at each time step. The red particles with arrows are the final positions and velocities for each one. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4) Testing the code with initial conditions" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "au = 1.496e11\n", + "masses = np.array([1.989e30,5.972e24])\n", + "pos = au*np.array([np.array([-3e-6,0,0]),np.array([0.999997,0,0])])\n", + "vel = np.array([np.array([0,-8.94e-2,0]),np.array([0,2.98e4,0])])" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "totalTime = 1000*24*60*60+1 #1000 days\n", + "timestep = 0.1*24*60*60 #0.1 day\n", + "\n", + "[times,positions,velocities] = calculateTrajectories(masses, pos, vel, totalTime, timestep)\n", + "# Convert positions to AU and times to days\n", + "positions = positions/au\n", + "times = times/60/60/24" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 5) Plotting the data" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\njuM4sfH/ATl0g22C/db1AAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nMGPG+ttvuAEuuiiZmGR9qsJLwYwaBcceu/62k0+G++6DVq2SialcrVwJgwbB00+vv/3FF+Hgg5OJ\nSZRAJWaLFsEWW8CKFeltBx4Izz2X/BXySvHll3DAAaFLVUr37jBtGrRrl1xc1UhtoBKL++8PbXWb\nbppOnh9/HNr2Xn5ZyTNObduGC0zuoX8qwPz54e4pM3jiiWTjEyVQyYE7HHlk+NKefnrY9oc/pC+K\n9OmTbHzVYPvt0+93qvvXccet/5lI8akKL1ktXx5KQZmmTg1390jyJkyA3TNuPencOZRQ1e4cP7WB\nSs4WLgwDbKR07Qqffqrqean68stQrc/801+yJGyTeKgNVBq1aFGoEqaS5ze/GfprfvaZkmcpa9s2\nfE51dbDvvmFbhw7hs1y2LNnYKp0SqLBiRfrCEMC3vx1KM88+q9sNy4lZGAClrg4OPTRsS11wWrMm\n2dgqlRJoFXOHbbaBNm3C88MPD9tGjEg2LmkeM3j++ZBI99knbGvVKvuttJI/JdAq9ctfQosWMH06\nbLZZ+LI980zSUUmczODtt9OlzzFjwrZrr002rkqii0hVZuxY6Ncv/fyLL0J7mVS+zz+Hbt3SzydM\nCGOmSuN0EanKrVkTSh+p5PnGG6G6ruRZPbp2DZ/5iy+G57vtFv4m6uqSjaucKYFWgT/8Id038Pzz\nw5cosxQq1eXgg8PfwKmnhuctW8Jf/pJsTOVKVfgKtmhR+so6hKvtG2+cXDxSepYuXb8WsmzZV2+e\nEFXhq84ll6ST54MPhhKHkqdsKNUB//bbw/N27cKQhJIblUArzJdfrj9ST12d+nJKbtasWf820FWr\ndFtoikqgVeDuu9PJc8SIULJQ8pRcbbRR+JtJjYrfujU8+miyMZU6lUArRGaiVMlBmiuzJrP55jBn\nTrLxJE0l0Ao1d246ef7oR6EEoeQpzdW2bfhbOuGE9N/YwoVJR1V6lEDL2O23h1HhASZN0oRkEr9H\nHgl9hiEMMvPww8nGU2pUhS9TO+6YHqVcF4qk0DIvMB1yCLzwQrLxFJuq8BUilSynTIFjjtGFIimO\n1AWmffYJdzKZrT/+aLVSAi0jc+em509/+GHNiSPF9/bb6T6jLVrA4sXJxpM0VeHLRG1telrbmTOh\nV69Ew5EqN2VKaEaCMGvoXnslG0+hqQpfxv7853TyXL1ayVOSt8MOYc4sgL33hr//Pdl4kqISaIk7\n4wy4776wXmEvTSpEqg3+4ovh+uuTjaVQNKlcGdppJ/jgA+jdG2bMSDoakexatAj/4A89NIyGX2lU\nhS8zZiF5nnSSkqeUvro66N8/dG/q3TvpaIpHCbQEpapEP/+5Oi5L+RgzBr773XCRs0WVZJYqeZnl\nI5U8r70Wrr462VhEmuqee8JQitXSP1kJtISk/uBuvhl++tNkYxHJ13XXwdChYb3Sk6gSaIlI/aHd\ncgv8v/+XbCwizXX55XDFFWG9kpOoEmgJSP2BXX99GFFJpBJcdlmYPhvC1NmVSAk0YanRlC69NPSj\nE6kkV14J554Ln30GAwYkHU38lEATdOSR4f72s86C3/0u6WhECuP22+Gww+D11+G885KOJl7qSJ+Q\nyy4LSXOffcIADSKVrmtXWLAgTKH84x8nHU3T6E6kEjJyJBx/fFgvg3BFYpNq7//3v+Eb30g2lqZQ\nAi0RH30E220X1ks8VJGCSCXRuXOhR49kY8mVEmgJWLkSNtkkrGsUealWmaPbr11bHnct6V74EpBK\nngsWKHlK9dpoI5g1K6ynBggvV0qgRZJKmC+/DJtummwsIknr2TM953w5Dz6iBFoEQ4aE5UUXwYEH\nJhuLSKkYNAhOPjkMPjJsWNLR5EdtoAX23nuwxx5hvcRCEykJqdrZjBmlWxrVRaQE1NWl23hKKCyR\nkuKevpBUqhdXdREpAankOX9+snGIlDIzmDYtrJfDFflMZRZu+Ujd1z58eOUOpCASl7594de/Dut/\n+lOysTSFqvAFMGsWbLVVWC+BcETKRqr6vmBBafVWURtoUeMIy1JtzxEpVaV63UBtoEWy995h+c47\nSp4iTdWiRZiYDsKEiqVOJdAYTZgAu+8Oe+4J48cnFoZI2WvfHpYtg08+STeHJUlV+KKcPywr6C0V\nSUwpfZ9UhS+wAw4Iy4kTk41DpFK88kpYnn12omE0KPESqJkdAdxASOZ3uvvVG/z8IOBxIOopxiPu\n/vssx0qkBDpnDmy5ZZie49NPi356kYqVKoV+8QV06JBkHCVYhTezFsAU4FDgU2As8B13n5yxz0HA\nJe5+XA7HSySBllJVQ6SSZN6llOT3q1Sr8P2Aqe4+w91XAyOA4+vZr2SvZ99wQ1g+8kiycYhUIjO4\n+eaw/uCDycZSn6RLoCcB33L3H0bPBwP93P3CjH0OAv4JzAJmAz9z9/ezHK+oJdBS+e8oUumSruWV\nagk0F28Dvd19L2A48FjC8ayT6l6xaFGycYhUupkzw/KQQ5KNY0MbJXz+2UDmAFa9om3ruPvSjPWn\nzOxmM+vi7gvqO+DQoUPXrdfU1FBTUxNnvOssWgSzZ8OOO0KnTgU5hYhEevUKy5deghUr0rM7FEpt\nbS21tbWN7pd0Fb4l8AHhItIc4E3gNHeflLFPD3efF633Ax50962zHK9oVXjdrilSXEne5lmSVXh3\nXwucDzwLTARGuPskMzvPzH4Y7XaymU0ws3GE7k7fTijcdd59NywvvVTJU6RYWrSAM84I66kqfdIS\n7wcap2KVQJNu0BapZkl8/0qyBFqOnn8+LO+7L9k4RKrVNdeE5X/+k2wcoBJoHucIywp620TKTrG/\nhyqBxmDUqLB88slk4xCpdnfcEZZvvZVsHCqBNun4YVlBb5lI2Srm91El0GYaPTosH3882ThEJLjp\nprCcPLnh/QpJJdCcjx2WFfR2iZS9Yn0vVQJthunTw3LYsGTjEJH1XXRRWH7+eTLnVwk0p+OGZQW9\nVSIVoxjfT5VA87RqVVgec0yycYhI/bbbLiyTKOAogTZi553DcuTIZOMQkfq9Hw1uefTRxT+3qvCN\nHjMsK+htEqk4hf6eqgqfh7vuCsvZsxveT0SSlbqt89lni3telUAbPF5YVtBbJFKxCvl9VQm0iZYt\nC8vLL082DhHJzWmnheXatcU7p0qgWWy7LUybptKnSLlIzVF25JHxj1dRktMaxy3OBKrqu0j5KdT3\nVlX4Jpg4MSzffDPZOESkaVLTi8+dW5zzNVoCNbNNgGOAbwBbAsuBCcC/3H1iwSNsgrhKoCp9ipQv\nM9h44zD5XHzHzKMKb2ZXEJJnLWF64fnAJsAOwMHR+iXu/m58oeZPCVRECvH9zZZAG5vW+E13z3Yd\n+noz68760xKXvbFjw/Kjj5KNQ0Ty8+qrsP/+MGMG9OlT2HPpItJXjhGWFfS2iFQdM2jTBr78Mq7j\n5VECNbMngMxU4sBnwEvu/o94QhMRid/y5YU/R2NV+Ovq2dYFGGxmu7n7kALElJhZs8IyVY0XkfL0\nz3/CSSfB0qXQvn3hzpNXFd7MWgJvu/te8YeUv+ZW4Xv3hpkzVX0XqQRmcMQR8NRTcRwr5o70Zja+\n0hKo2j9FKkec3+e8OtKbWZd6HttG3ZtKqg9oc6Xe5J/9LNk4RCQexx5b+HM01g90OuHCUSrzOvA5\noV/o79z9i0IH2BTNKYHecQecey6sWQMtW8YcmIgU3ZIl0LEjvPgiHHxw845ViCp8K3df3byw4tWc\nBKrqu0jliet7Hcu98BYcamZ3ArOaF5KISHnLKYGaWX8zGwbMAB4H/g3sVMjAiin13+kvf0k2DhGJ\n109+UtjjN9YGeiVwCvAJcD/wKPCWu/ctbFj5ybcKf9ddcM45UFeXLvKLSPlbsSLckfTKK+H2znzl\nO5jIfGAKcAPwhLuvNLNp7r5N/qEUTr4JVO2fIpXLDHr0aN4Qd/m2gW4B/B44FvjIzP4OtDGzxu5g\nEhEpGfPmFea4DSZQd1/r7k+7+1nAtsBjwKvAbDO7rzAhJeOoo5KOQEQKoW8BGxzzvZWzIzDI3e+J\nP6T85VOFX7wYOncOw9dtU5INEyLSHC+8AIcd1rw+3vneiTTYzL6yj7t/4e73RHclHZBfSKXht78N\nSyVPkcp06KFheffd8R+7sYtIFwHfJ4xG/zbwX8Io9NsBBxGGthvi7lPjD63p8imB6gKSSOUzC6My\nLVmS7+/neSdSNPLSIcD+hItKy4FJwFPu/kl+4RSGEqiI1Ke533NNa5z1d2DLLWH27AIFJSKJK1QC\n1bTGwKWXJh2BiBTSBRcU5rhVXQKdOTMMovzll+FuBRGpTJ98EiaYW74cNtmk6b+vEmg9br45LJU8\nRSpb72ju4AceiPe4OZVAzawHcCWwpbsfaWa7AAPc/c54w2meppZAO3WCL77QBSSRamAG/frBG2/k\n87vNuIhkZk8BdwO/dvc9o1s5x7n77k0PpXCamkB1BV6kejTn+97cKnw3d38QqAsB+BpgbdPDEBGp\nHLkm0GVm1pVojngz6w8sLlhUIiJlINdRlf4XGAlsa2avApsRxgkteyeckHQEIlIMO+8MkybFe8xc\nE+hEwq2bOxImmPuACrmCf/TRSUcgIsVwzDHxJ9Bck+AYd1/j7hPdfUI0mdyYeEMprlRD8uGHJxuH\niBTHYYfFf8wGS6BmtjnQkzCI8t6kpzfuCLSNP5zi+fDDsOzVK9k4RKQ4Bg4My1WroHXreI7ZWBX+\nW8DZQC/g+oztS4BfxRNCMlJ9wTQHkkh1aN8+LP/zH/j61+M5ZoMJ1N3/BvzNzE5y93/Gc8rS8Pbb\nSUcgIkkYN65ICTTF3f9pZkcDuxLGA01t/208YRTfxIlJRyAiSXj33fiOleu88LcC3wYuILSDngL0\niS+M4ps8OekIRCQJU2Mc/j3Xq/AD3f1MYKG7XwEMAHaIL4zimzkz6QhEJAkffxzfsXJNoMuj5Zdm\ntiWwmjA6fbOZ2RFmNtnMppjZL7LsM8zMpprZeDPbK47zikh1inPw9FwT6Cgz6wxcC7wDfAzc39yT\nRxPWDSdc7d8VOM3MdtpgnyOBbd19e+A84NbmnldEqteyZfEdK9eLSL+LVv9pZqOATdw9jnvh+wFT\n3X0GgJmNAI4HMlsojwfuieJ4w8w6mVkPd58Xw/lFRPKW662cmNlAYOvU70TDOzV3XvieQGZr5CxC\nUm1on9nRNiVQyc/06eFKgm5Dk2bKKYGa2d+BbYHxpIexc6KSYSkZOnTouvWamhpqamoSi0VK1PXX\nh3kdlEAli9raWmpraxvdL9cBlScBuzR5ysvGj9sfGOruR0TPhwDu7ldn7HMr8JK7PxA9nwwcVF8V\nvikDKmswZZHqYwaHHgrPP9/U32vegMoTgM2bdsqcjAW2M7M+ZtYa+A5h2LxMI4EzYV3CXaT2TxHJ\n10Y5N1zmcKwc9+sGvG9mbwIrUxvd/bjmnNzd15rZ+cCzhGR+p7tPMrPzwo/9dnd/0syOMrMPgWXA\n95pzThGpbu3axXesXBPo0PhOuT53f5owzmjmtts2eH5+oc4vItVl003jO1au3Zheju+UpaFt2zAf\nvIhUl+7d4ztWg22gZvZKtFxiZl9kPJaY2RfxhVF8226bdAQikoSiJVB3PyBadnD3jhmPDu7eMb4w\nim+nnRrfR0QqT48e8R2rsRJol4Ye8YVRfHvskXQEIpKErbeO71iNtYG+Tegwb0BvYGG03hn4BOgb\nXyjFte++SUcgIsWU6vO9zTbxHbOxKnxfd98GeB441t27uXtX4BhC16Oytd9+YblmTbJxiEhxzJ8f\nlkVrA83Q392fTD1x96eAgfGFUXyprgya2kOkOqRmoYhzHrRcE+inZnapmW0dPX4NfBpfGMl5+umk\nIxCRYpgwIf5j5ppATwM2Ax4FHonWT4s/nOIbueGNoyJSkd56K/5jNjqYiJm1BK5295/Gf/p4NWUw\nkbB/WGpAEZHKt8MOYRTDfL7veQ8m4u5rgQOafkoRkdIxdSp06xbvMXO9F36cmY0EHiIM6AGAuz8S\nbzgiIoUT9/DAuSbQTYDPgUMytjmhPbRsDRgAY8YkHYWIFEvcCTSnAZXLRVPbQO+9FwYPVhuoSKVz\nhxYtQjV+u+2a/vvNGlDZzHqZ2aNmNj96/NPMejU9jNJyyilh+eGHycYhIoX17rthmU/ybEiu3Zju\nJowMv2X0eCLaVtZatw7La69NNg4RKayHHy7McXOdE2m8u+/V2LakNbUKH34nLFWNF6lcO+4IU6bk\n/z1v7pxIn5vZYDNrGT0GEy4qiYiUvClTQj/QuOWaQL8PnArMjR4nUyFzE/XsmXQEIlIMp58e/zGr\n+io8wKOPwoknQl1dvIMMiEhpWL06XO+YPj3/sUB1FT6LQYPC8qGHko1DRArj0UfDMs6BlFOq+io8\npEudZ5+daBgiUiB/+Uvhjl31V+HD74VlBbVmiEjEDPr2hWnTmnMMXYXP6mtfSzoCESmkiy4qzHFz\nLYH2AW4CBhDugX8NuNDdPylMWPnJtwQ6dWro4jB/Pmy2WQECE5FEzJwJvXvD0qXQrl3+x8lWAq36\nq/Dp34Ujj4Qnn2x8XxEpDz/5Cdx8c/Ob55qVQM3sb8BF7r4oer4p8Cd3/37zwopXcxMoqB1UpJKY\nQatWsGpVc4/TvDbQPVLJE8DdFwJ7Ny+k0tK3bCdoFpGG/Pa3hTt2rgm0RVTqBMDMupD7WKJl4dlo\nkuaPP040DBGJydSpYXn++YU7R65J8E/AGDNLdTc/BfhDYUJKRmqYq4MPDncsiEh5GzIkLNu3L9w5\ncr6IZGa7kB6R/kV3f79gUeWpOW2g4ffDUu2gIuXPDHbZJT0ffPOO1bw2UNz9fXcfHj1KLnnG4Ze/\nDEslUJHylrpodOuthT1Pzgm0Gvz+92F56aXJxiEizTNsWFh+4xuFPY/6gX7lGGFZQW+LSNWJ+3uc\nVxXezHo38LMC5/ZkHHZY0hGISHOkkuZf/1r4czVWha81s5+bWcvUBjPrYWb/AP5c2NCS8cQTYVnI\nEVxEpHDujsaJ+34RbvNpsAof9f28ChgIXATsDvwvcA1wi7vXFT7E3MVRhQ/HCUtV40XKTyG+v9mq\n8A32A43uODrPzC4Cngc+Bfq7+6z4Qis9xxwDo0aFD0Cj1IuUj7Vrw/Lee4tzvsbaQDub2W2E+Y+O\nAB4GnjKzQxr6vXKXGsH64ouTjUNEmuaaa8LytNOKc77GqvDTgJuBG9x9TbRtr2jbDHcvUpi5iasK\nH44VlqrGi5QPM+jSBT6PebTifDvSH+ju16WSJ4C7j3f3gcCL8YZYWm66KSwXLWp4PxEpDfPnh+Uz\nzxTvnOoH2uDxoE0b+PLL2A4pIgVy4IEwenRhao3NvpWzWi1fnnQEIpKL0aPhnHOKe04l0AbMnRuW\nt92WbBwi0rDUVffhw4t7XlXhGz1mWFbQ2yRSccygRYt0N6b4j68qfF7uuCMsNdCySGn68MOwfOed\n4p9bJdCcjhuWFfRWiVSMzp1h8eLCfj9VAm2GI44Iy5Urk41DRNa3bFlInqn734tNJdAcuIf2lXbt\nwvzSIlIaDjsMXnih8LVDlUCbwQzatg3/7Sro/41IWVuzJiTPn/40uRiUQHO0cGFY7rtvsnGISHDm\nmWGZuv89CarCN+n4YVlXp1GaRJJUVwctW8IPf1icftqqwsdg2bKwHDAg2ThEqt2554blLbckG4dK\noE0+R1iqFCqSjDVroFUr+MEPijNtB2QvgSaWQKPR7h8A+gAfA6e6++J69vsYWAzUAavdvV8Dxyx4\nAl25EjbZBHr2hFkVPay0SGk67rgw9c7ataF3TDGUYhV+CPC8u+9IGBrvl1n2qwNq3H3vhpJnsWy8\nMXTrBrNnw4oVSUcjUl2WLAnJc+jQ4iXPhiRZAp0MHOTu88xsc6DW3XeqZ7/pwL7u3ugQqcUogUK6\nX2hqXUSKY9ttYdq04n/vSrEE2t3d5wG4+1yge5b9HHjOzMaa2blFi64BZjB4cFifNi3ZWESqxbRp\n4XHffUlHklbQEqiZPQf0yNxESIiXAv/n7l0y9v3c3bvWc4wt3H2OmW0GPAec7+6vZDlfUUqg6fOF\npUqhIoWX5Pctr1k5m8vdv9lAQPPMrEdGFX5+lmPMiZb/NbNHgX5AvQkUYOjQoevWa2pqqKmpyS/4\nHDz4IJx6Ktx1V3HmoBapVg88EJYTJhTnfLW1tdTW1ja6X5JtoFcDC9z9ajP7BbCpuw/ZYJ+2QAt3\nX2pm7YBngSvc/dksxyxqCTScMyxVChUpjNQ1h512gkmTkomhFNtArwa+aWYfAIcCV0GospvZqGif\nHsArZjYOeB14IlvyTEpqIquePZONQ6RSDRoUluPHJxtHfdSRPgb77QdvvgkffQTbbFP004tUrOnT\nw3fq+uvh4ouTi6PkOtIXQlIJNJw7LCvo7RRJXKl8r0qxCl9RRo8Oy+9+N9k4RCrFkOiKyMyZycbR\nEJVAYz1/WM6dCz16NLyviGQ3bx5svjlccAEMG5Z0NKrCF4XuUBKJR6lU3VNUhS8CM3j55bB+1FHJ\nxiJSrlIXi8phJlyVQAtgyy1hzhx47z3YbbekoxEpHxMnhu/MZZfBFVckHU2aqvBFpnFDRZomNco8\nlE7VPUXwKu+xAAAPHklEQVRV+CJLjRVaCkNuiZSDnaKx2Mpp5lt9vQukZ88wZiHAb36TaCgiJe/W\nW2HqVHj22TB9eLlQFb7AUtX3yZNhxx2TjUWkFE2ZEr4bp51WWkPVZVIbaIJSSXTNmnQbj4jA6tXQ\nunVYL8Gv7jpqA03QvHlhuVFBBw8UKT+p5Ll8ebJx5EsJtAi6d4eHHw7rGmxEJPj2t8PyvffCRI3l\nSAm0SE46KTymT09fXBKpVrfcEgYkv/PO8u4rrTbQIku1hz7/PBx6aLKxiCThtddg//3he98LszmU\nA11EKiGpJDpjBvTunWwsIsU0axZstVUYbGfu3KSjyZ0SaAlZuzZ9QWnZMmjbNtl4RIph6VLo0CGs\nl9sderoKX0JatoSFC8N6u3bhj0mkkq1enU6eK1eWV/JsiBJoQjp3DndeQEioZVBwFsmLe7q70sKF\n6fVKoASaoO22g1dfDeu6Z14qUeYYuTNnhoJDJdHXNmEDB8LIkWG9Uqo1Iimp/p2TJkGvXsnGUghK\noCXg2GPh3nvDupKoVIo2bWDVKnjnnfRIS5VGCbREnH46/N//hXUlUSl3bdrAihUhee69d9LRFI66\nMZWYe++FwYPDepm/FKlCmW2elZQ81Q+0jDz2GJxwQlgvt/5yUr0y+zdX2nQ2SqBlprYWDj44rC9f\nXr6DLUh1WL48fUPItGnQt2+y8cRNHenLTE0NTJgQ1tu0SQ+JJ1Jq5s9PJ8///rfykmdDlEBL2K67\nhj9OgM03hzffTDYekQ299164rx3CbcnduiUbT7EpgZa4zTYLXUEA9tsPhg9PNh6RlPvvhz32COtr\n11bnmA5KoGWgVav0FfkLLoADD0w2HpELLwxd744+ev0r79VGk0yUEfdw59Lo0eHKvK7QS7G5wxZb\nhDb5a66Bn/0s6YiSVaX/N8rXa6+F0bwh/NcvpzEVpbzNnRv+5ubNg1deUfIEJdCy9KMfpUdy2mKL\nMC2CSCGNHBn+1gAWLAgjyov6gZa1urr0NMmdOsGiRcnGI5Vp0CB4/HHo1w9ef706m43UD7QCtWgR\n2qROPx0WLw5/2KrSS1zmzQt/U48/HuYueuON6kyeDVECrQD33hvuO4ZQzfrVr5KNR8rfrbeGvscA\nn34aJoCTr1IVvoJs2J1Et4BKU61YEQY9XrkyTMP98MNJR1QaVIWvAmYhif71r+F5mzZwww3JxiTl\nY8SI8DezciWMGaPkmQuVQCvUqlWw8cbp50uWQPv2ycUjpWvZMujYMVyU7NcvJM9q7RifjUqgVaZ1\n61Aave228LxDB7VjyVdde234x1pXFxLnG28oeTaFSqBVILO7E8Bbb8HXvpZcPJK8CRNg993D+skn\nw4MP6gp7QzQeqPDWW/D1r6ef6yJT9Vm+HPbcM30jxsyZlTnZW9xUhRf23TdU6y+8MDxv0wYGDEg2\nJikO9zAQTdu2IXk++GDYpuTZPCqBVqm6unCRac2a8PznP4err042JimMW26BH/84rJ9zTuiloep6\n06gKL/VasAC6dk0/v/HGdAlVytsjj4S+nBBqH6NHq8kmX6rCS726dAlVuQ8+CM8vuiiUTjRwc/l6\n6KHwGZ50UvjnOH8+jB2r5FkISqACwA47hEQ6blx4fsEF4Uuo20LLx513hs/s1FPD3USzZ8Nnn4VZ\nDaQwVIWXek2aBLvskn7evz+8+qr6CJaatWvh4ovhppvC8549w7gI3bsnG1elURuo5GX+/PSkYSnq\n+pK8efPg8MPh3XfD80MOCaMm6W6zwlAbqOSle/dQtV+9Oj2B2FZbhariH/+YbGzV6J57wnu/+eYh\neV5xRehR8cILSp5JUAlUmuzuu+H7319/2/vvw847JxNPpfv4YzjxxHT7NITmlIEDEwup6qgEKrH5\n3vdCqXTx4nRb2y67hJLRFluErlHSPAsXhoGyzaBv35A8L7wwDBKTmlxQkqcEKnnr2DG0xbmHye4g\njIjftWu6mjlnTrIxlpPPPoOzzgrvXZcuYd71/v3ho4/Ce3zjjWGKaykdSqASiwEDwpfcHR59NGyb\nNw+23DIkBDMYNSrZGEvR66/DPvuE92ezzUIb5y67wPjx4b0cMwa22SbpKCUbJVCJ3aBB6WT6yivp\n7ccem06m22+fHtCimsyYAeeem34fBgwI1fPjj4dp08J7NnFiGPBDSl9iCdTMTjazCWa21sz2aWC/\nI8xssplNMbNfFDNGab79908n06VLQydvgA8/DJ33U4lk441DybWSrgG6w8svh+HiUq9z663hjjvC\nFfNhw9Jtmo89Fto6pbwkdhXezHYE6oDbgJ+6+zv17NMCmAIcCnwKjAW+4+6TsxxTV+HLyNy5cOaZ\n8Nxz9f+8XTu46qpQYsscXb8UrVgBzzwDDzwQ2i431LkzDBkSBvXo0KH48UnzlGxHejN7CbgkSwLt\nD1zu7kdGz4cA7u71jhukBFre6upCG+C556ZHicrmgANg8GA45ZRwwaUYFi8ObZYvvQS1tWH09mwG\nDw7Jsn9/jXxUCco1gZ4EfMvdfxg9Hwz0c/d6xwtSAq1MU6eGqSdSk+XlqlOncGFms81Cz4D27cOA\nGqnJ99xDyXHZMvj883DX1bx5oakhFxttBEcdBcccAyecAN26Nf21SXnIlkA3KvBJnwMybwQ0wIFf\nu/sThTjn0KFD163X1NRQU1NTiNNIEW2/Pdx+e3hsaNWqUCKcNg1mzQr38E+eHDqfL14cHh9+2LTz\ntWkT2iN32AF23TU8dt893CiQOTWKVK7a2lpqa2sb3a/US6D9gaHufkT0XFV4ESm6Ur8TKVsr0Vhg\nOzPrY2atge8AI4sXlohIdkl2YxpkZjOB/sAoM3sq2r6FmY0CcPe1wPnAs8BEYIS7T0oqZhGRTIlX\n4eOkKryIFEKpV+FFRMqOEqiISJ6UQEVE8qQEKiKSp6pOoLl0lK1k1fz69dqrV5yvXwm0ilXz69dr\nr15KoCIiJUAJVEQkTxXXkT7pGESkMpXkcHYiIuVKVXgRkTwpgYqI5KmqEmi1T2RnZpua2bNm9oGZ\nPWNmnbLs97GZ/cfMxpnZm8WOM065fJZmNszMpprZeDPbq9gxFkpjr93MDjKzRWb2TvS4NIk4C8HM\n7jSzeWb2bgP7NP9zd/eqeQA7AtsDLwL7ZNmnBfAh0AdoBYwHdko69phe/9XAz6P1XwBXZdlvGrBp\n0vHG8Hob/SyBI4F/Rev7Aa8nHXcRX/tBwMikYy3Q6z8A2At4N8vPY/ncq6oE6u4fuPtUsg/gDNAP\nmOruM9x9NTACOL4oARbe8cDfovW/AYOy7GdURu0kl8/yeOAeAHd/A+hkZj0of7n+HVfklHfu/gqw\nsIFdYvncK+FLEreewMyM57OibZWgu7vPA3D3uUD3LPs58JyZjTWzc4sWXfxy+Sw33Gd2PfuUo1z/\njgdEVdh/mdkuxQmtJMTyuRd0UrkkJDGRXSlp4PXX176VrQ/b/u4+x8w2IyTSSdF/dKksbwO93f1L\nMzsSeAzYIeGYykrFJVB3/2YzDzEb6J3xvFe0rSw09PqjRvUe7j7PzDYH5mc5xpxo+V8ze5RQHSzH\nBJrLZzkb2KqRfcpRo6/d3ZdmrD9lZjebWRd3X1CkGJMUy+dezVX4apzIbiRwdrR+FvD4hjuYWVsz\nax+ttwMOByYUK8CY5fJZjgTOhHWzwC5KNXOUuUZfe2abn5n1I9xYU0nJ08j+PY/nc0/6almRr8wN\nIrR7LAfmAE9F27cARmXsdwTwATAVGJJ03DG+/i7A89FrexbovOHrB/oSrtiOA94r99df32cJnAf8\nMGOf4YQr1v8hS++Mcnw09tqBnxD+OY4DXgP2SzrmGF/7fcCnwErgE+B7hfjcdSuniEieqrkKLyLS\nLEqgIiJ5UgIVEcmTEqiISJ6UQEVE8qQEKiKSJyVQEZE8KYFKbMxstJkdkfH8FDN7MoE4XkqN92pm\no8ysY57HOd7Mdsrz9y7dYNt4M7svW5zR8z5m9l60vpuZ3Z1P3FI8SqASpx8B15tZ6+h20D8APy7k\nCc2sZUM/d/dj3P2LPA8/CNg1j9/7OXBz6kmUhFsA3zCzNo38rgO4+wSgp5n1yuP8UiRKoBIbd59I\nuMd4CPAb4G/u/nHmPtEo6W9Ho90/F23b1MwejUbBf83Mds+yfbdo++Vmdo+ZvQLcY2abmNkIM5to\nZo8Am2Scb7qZdYlKd++b2e3RrARPm9nG0T4/MLM3o5geio43ADgOuCYarb2vmW1jZk9Fw/y9bGZf\nGbnIzLYHVvj695SfRhh78lmaNrbsKMI97FKqkr5nVY/KegBtgcmE+4tbbfCzboT7kntHz1P34g8D\nfhOtHwyMa2T75YTBMlpHzy8G7ojWdwdWE93bTBhdvwthZPZVwO7R9geA06P1TTNi/B3wk2j9buDE\njJ89D2wbrfcDXqjn9Z8NXLvBtsmE0X6+ScYI8MBLZNyDHcX4bsbzgcDjSX+memR/VNxwdpIsD2NL\nPgAs8TASeqb+wMvu/km076Jo+wHAidG2l6ISY4cs29tHvzPS3VdF6wcCN0b7vWdm/8k4Z+ZoPNPd\n/b1o/W1g62h9DzP7HdAZaAc8s+HrikamGgg8ZGapY7aq5y3YAvhvxu99DfjM3WeZ2RzgLjPrHL32\n+gaiyNw2H9iynn2kRCiBSiHURY/61De8WGOJpD7LGvhZtiHMVmasryVd1b8bOM7dJ5jZWYS5gjbU\nAljo7lknI4wsBzIvWp0G7Ghm06K4OgAnAXcCnwObZuzbBfgs4/km0fGkRKkNVIrpdcKFlD4Q2jij\n7aOBwdG2GkKJbWkD2zf0b+CMaL/dgD2ynD9bYm0PzDWzVqnjRJYQJUN3XwJMN7OT1x3MrL7zTCJM\nXEhUUj0V2M3dt3H3voQLU6dH+9amXl/kLEK1PmUHyncs1qqgBCpF4+6fAT8EHjWzcYSJzgCuAL4W\nVb2vJCQSgKEbbD8zy6FvAdqb2cTod97KPG2W9UyXAW8SEvakjO0jgJ9FF736EpLrOVGXpAmEi0wb\n+jdhNkiAbwCzfP2Bev8N7BwNZnw7sDS6SDaO0HxwXca+BwP/yhKzlACNByoSMzP7M/CEu7/YjGO0\nJpRQD3D3bM0hkjCVQEXidyWhN0Jz9CaMIq/kWcJUAhURyZNKoCIieVICFRHJkxKoiEielEBFRPKk\nBCoikqf/D69ZWVRDHDMXAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(times,positions[1,0,:]);\n", + "plt.title(\"X position of Earth (AU)\");\n", + "plt.xlabel(\"Time (days)\");\n", + "plt.ylabel('X coordinate (AU)');\n", + "plt.xlim([0,1000]);\n", + "plt.ylim([-1,1]);\n", + "plt.show();\n", + "\n", + "plt.figure(figsize=(5,5))\n", + "plt.plot(positions[1,0,:],positions[1,1,:]);\n", + "plt.plot(positions[0,0,:],positions[0,1,:],color='r');\n", + "plt.title(\"Trajectories\");\n", + "plt.xlabel(\"Y coordinate (AU)\");\n", + "plt.ylabel('X coordinate (AU)');\n", + "plt.axis('scaled')\n", + "plt.xlim([-1.1,1.1]);\n", + "plt.ylim([-1.1,1.1]);\n", + "plt.show();\n", + "\n", + "plt.plot(times,velocities[0,0,:]);\n", + "plt.title(\"X velocity of Sun (m/s)\");\n", + "plt.xlabel(\"Time (days)\");\n", + "plt.ylabel('X velocity (m/s)');\n", + "plt.xlim([0,1000]);\n", + "plt.ylim([-1,1]);\n", + "plt.show();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The period of the earth's rotation is roughly 365 days, according to the first plot. This makes perfect sense since our years are 365 days long. \n", + "\n", + "In order to detect an earth-like planet around a sun-like star, we need to be able to measure the radial velocity of the star within 0.1 m/s at least. The sun's x velocity in the third plot above almost never goes above 0.1 m/s, so that's the kind of accuracy you need. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 6) Changing initial velocities" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#Cut velocities in half\n", + "vel = vel/2\n", + "\n", + "#Redo calculations\n", + "[times,positions,velocities] = calculateTrajectories(masses, pos, vel, totalTime, timestep)\n", + "# Convert positions to AU and times to days\n", + "positions = positions/au\n", + "times = times/60/60/24" + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(times,positions[1,0,:]);\n", + "plt.title(\"X position of Earth (AU)\");\n", + "plt.xlabel(\"Time (days)\");\n", + "plt.ylabel('X coordinate (AU)');\n", + "plt.xlim([0,1000]);\n", + "plt.ylim([-1,1]);\n", + "plt.show();\n", + "\n", + "plt.figure(figsize=(5,5))\n", + "plt.plot(positions[1,0,:],positions[1,1,:]);\n", + "plt.plot(positions[0,0,:],positions[0,1,:],color='r');\n", + "plt.title(\"Trajectories\");\n", + "plt.xlabel(\"Y coordinate (AU)\");\n", + "plt.ylabel('X coordinate (AU)');\n", + "plt.axis('scaled')\n", + "plt.xlim([-1.1,1.1]);\n", + "plt.ylim([-1.1,1.1]);\n", + "plt.show();\n", + "\n", + "plt.plot(times,velocities[0,0,:]);\n", + "plt.title(\"X velocity of Sun (m/s)\");\n", + "plt.xlabel(\"Time (days)\");\n", + "plt.ylabel('X velocity (m/s)');\n", + "plt.xlim([0,1000]);\n", + "plt.ylim([-1,1]);\n", + "plt.show();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the new starting velocities, the orbit of the planet becomes much more elliptical. This makes sense, as it does not have the speed necessary to maintain a circular orbit. \n", + "\n", + "What's particularly interesting is how the the sun's orbit becomes much more jagged. This is because when the earth is close, it moves very quickly and pulls much more strongly on the sun. Thus, the jagged point. When the earth is farther away, it has less effect and the sun's orbit is relatively smooth. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Code Check and Revision" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I still do not have questions 7-12 completed. I expect sections 7-9 to be fairly straight-forward. I'll use numpy.loadtxt to load the dataset and manipulate the data as numpy arrays. Once its in a form my code above can use, I just need to run it.\n", + "\n", + "I intend to use our animation homework to help me address question 10, but I don't know how (or even if it's possible) to have an animation appear in the jupyter notebook. I should be able to make an mpeg file fairly easily though. I'll definitly need to go over that homework again. If nothing else, I can always create the mpeg file and submit that along with the final project. \n", + "\n", + "Question 11 shouldn't be very difficult. I'll just need to pick either prewritten data or use one of the generation functions. To do that, I'll have to look at them more to better understand how to use them. Once the data is imported however, it's again fairly easy to use the above code to simulate those data sets for any given amount of time. \n", + "\n", + "Question 12 will be the most difficult I think. What I'd like to do is have a 3d animation in-line in the jupyter notebook that the user can rotate in real time. Unfortunately, I suspect that will not be easy to achieve. Barring that, I'll try to make a movie like in question 10, but this time the movie will have the camera follow a path around the particles, moving slowly enough that you can see the 3d structure evolve over time. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/kepler16.txt b/kepler16.txt new file mode 100644 index 0000000..9a643d0 --- /dev/null +++ b/kepler16.txt @@ -0,0 +1,4 @@ +# mass (kg) x (m) y (m) z (m) vx (m/s) vy (m/s) vz (m/s) ++1.3718e+30 +7.6349e+09 -9.6587e+05 +1.8447e+09 -1.0502e+03 -6.8224e+00 +1.3030e+04 ++4.0287e+29 -2.5998e+10 +3.2889e+06 -6.2813e+09 +3.5760e+03 +2.3231e+01 -4.4368e+04 ++6.3250e+26 +3.7761e+10 -4.0923e+07 +8.1934e+10 -3.6298e+04 -1.0812e+01 +1.7020e+04