Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Initial Value Problems - Project\n",
"\n",
"![Initial condition of firework with FBD and sum of momentum](../images/firework.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We are going to end this module with a __bang__ by looking at the flight path of a firework. Shown above is the initial condition of a firework, the _Freedom Flyer_ in (a), its final height where it detonates in (b), the applied forces in the __Free Body Diagram (FBD)__ in (c), and the __momentum__ of the firework $m\\mathbf{v}$ and the propellent $dm \\mathbf{u}$ in (d). \n",
"\n",
"The resulting equation of motion is that the acceleration is proportional to the speed of the propellent and the mass rate change $\\frac{dm}{dt}$ as such\n",
"\n",
"$$\\begin{equation}\n",
"m\\frac{dv}{dt} = u\\frac{dm}{dt} -mg - cv^2.~~~~~~~~(1)\n",
"\\end{equation}$$\n",
"\n",
"If we assume that the acceleration and the propellent momentum are much greater than the forces of gravity and drag, then the equation is simplified to the conservation of momentum. A further simplification is that the speed of the propellant is constant, $u=constant$, then the equation can be integrated to obtain an analytical rocket equation solution of [Tsiolkovsky](https://www.math24.net/rocket-motion/) [1,2], \n",
"\n",
"$$\\begin{equation}\n",
"m\\frac{dv}{dt} = u\\frac{dm}{dt}~~~~~(2.a)\n",
"\\end{equation}$$\n",
"\n",
"$$\\begin{equation}\n",
"\\frac{m_{f}}{m_{0}}=e^{-\\Delta v / u},~~~~~(2.b) \n",
"\\end{equation}$$\n",
"\n",
"where $m_f$ and $m_0$ are the mass at beginning and end of flight, $u$ is the speed of the propellent, and $\\Delta v=v_{final}-v_{initial}$ is the change in speed of the rocket from beginning to end of flight. Equation 2.b only relates the final velocity to the change in mass and propellent speed. When you integrate Eqn 2.a, you will have to compare the velocity as a function of mass loss. \n",
"\n",
"Your first objective is to integrate a numerical model that converges to equation (2.b), the Tsiolkovsky equation. Next, you will add drag and gravity and compare the results _between equations (1) and (2)_. Finally, you will vary the mass change rate to achieve the desired detonation height. \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. Create a `simplerocket` function that returns the velocity, $v$, the acceleration, $a$, and the mass rate change $\\frac{dm}{dt}$, as a function of the $state = [position,~velocity,~mass] = [y,~v,~m]$ using eqn (2.a). Where the mass rate change $\\frac{dm}{dt}$ and the propellent speed $u$ are constants. The average velocity of gun powder propellent used in firework rockets is $u=250$ m/s [3,4]. \n",
"\n",
"$\\frac{d~state}{dt} = f(state)$\n",
"\n",
"$\\left[\\begin{array}{c} v\\\\a\\\\ \\frac{dm}{dt} \\end{array}\\right] = \\left[\\begin{array}{c} v\\\\ \\frac{u}{m}\\frac{dm}{dt} \\\\ \\frac{dm}{dt} \\end{array}\\right]$\n",
"\n",
"Use [two integration methods](../notebooks/03_Get_Oscillations.ipynb) to integrate the `simplerocket` function, one explicit method and one implicit method. Demonstrate that the solutions converge to equation (2.b) the Tsiolkovsky equation. Use an initial state of y=0 m, v=0 m/s, and m=0.25 kg. \n",
"\n",
"Integrate the function until mass, $m_{f}=0.05~kg$, using a mass rate change of $\\frac{dm}{dt}=0.05$ kg/s. \n",
"\n",
"_Hint: your integrated solution will have a current mass that you can use to create $\\frac{m_{f}}{m_{0}}$ by dividing state[2]/(initial mass), then your plot of velocity(t) vs mass(t)/mass(0) should match Tsiolkovsky's_"
]
},
{
"cell_type": "code",
"execution_count": 617,
"metadata": {},
"outputs": [],
"source": [
"#importing necessary libraries\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"plt.rcParams.update({'font.size': 22})\n",
"plt.rcParams['lines.linewidth'] = 3"
]
},
{
"cell_type": "code",
"execution_count": 618,
"metadata": {},
"outputs": [],
"source": [
"#defining a simplerocket function dependent on the state of the rocet and returing its time derivitives\n",
"def simplerocket(state,dmdt=0.05, u=250):\n",
" derivs = np.array([state[1], (u/state[2])*dmdt, -dmdt])\n",
" return derivs"
]
},
{
"cell_type": "code",
"execution_count": 619,
"metadata": {},
"outputs": [],
"source": [
"#using Euler method as an explicit integration method\n",
"def eulerstep(state, rhs, dt):\n",
" next_state = state + rhs(state) * dt\n",
" return next_state"
]
},
{
"cell_type": "code",
"execution_count": 620,
"metadata": {},
"outputs": [],
"source": [
"#recalling runge-kutta method\n",
"def rk2_step(state, rhs, dt):\n",
" mid_state = state + rhs(state) * dt*0.5 \n",
" next_state = state + rhs(mid_state)*dt\n",
" return next_state"
]
},
{
"cell_type": "code",
"execution_count": 621,
"metadata": {},
"outputs": [],
"source": [
"##using Heun method as an implicit integration method\n",
"def heun_step(state,rhs,dt,etol=0.000001,maxiters = 100):\n",
" e=1\n",
" eps=np.finfo('float64').eps\n",
" next_state = state + rhs(state)*dt\n",
" ################### New iterative correction #########################\n",
" for n in range(0,maxiters):\n",
" next_state_old = next_state\n",
" next_state = state + (rhs(state)+rhs(next_state))/2*dt\n",
" e=np.sum(np.abs(next_state-next_state_old)/np.abs(next_state+eps))\n",
" if e<etol:\n",
" break\n",
" ############### end of iterative correction #########################\n",
" return next_state"
]
},
{
"cell_type": "code",
"execution_count": 622,
"metadata": {},
"outputs": [],
"source": [
"# initializing time array for the function\n",
"t = np.linspace(0,4.1,41) #10 seconds, 10 time steps per second\n",
"dt = 0.1 #time step of 0.1 seconds\n",
"N = 41\n",
"\n",
"#setting initial conditions\n",
"y0 = 0 # initial position\n",
"v0 = 0 # initial velocity\n",
"m0 = 0.25 #initial mass ig kg\n",
"\n",
"#initialize solution array for euler method\n",
"num_sol_euler = np.zeros([N,3])\n",
"\n",
"#Set intial conditions\n",
"num_sol_euler[0,0] = y0\n",
"num_sol_euler[0,1] = v0\n",
"num_sol_euler[0,2] = m0\n",
"\n",
"#initialize solution array for heun method\n",
"num_sol_heun = np.zeros([N,3])\n",
"\n",
"#Set intial conditions\n",
"num_sol_heun[0,0] = y0\n",
"num_sol_heun[0,1] = v0\n",
"num_sol_heun[0,2] = m0\n",
"\n",
"#integrating the simplerocket equation using the eulerstep and heun integration method\n",
"for i in range(N-1):\n",
" num_sol_euler[i+1] = eulerstep(num_sol_euler[i], simplerocket, dt)\n",
" num_sol_heun[i+1] = heun_step(num_sol_heun[i], simplerocket, dt)"
]
},
{
"cell_type": "code",
"execution_count": 623,
"metadata": {},
"outputs": [],
"source": [
"#from the integrated array above, the mass reaches 0.05kg after 4.1 seconds\n",
"u = 250\n",
"v_final_euler = num_sol_euler[40,1] #grabbing the final velocity from the integrated solution\n",
"v_initial_euler = v0\n",
"v_final_heun = num_sol_heun[40,1] #grabbing the final velocity from the integrated solution\n",
"v_initial_heun = v0"
]
},
{
"cell_type": "code",
"execution_count": 624,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#developing velocity and mass variables for euler method\n",
"final_mass_euler = num_sol_euler[:,2]\n",
"initial_mass_euler = m0\n",
"current_mass_euler = final_mass_euler/initial_mass_euler\n",
"current_velocity_euler = num_sol_euler[:,1]\n",
"\n",
"#developing velocity and mass variables for heun method\n",
"final_mass_heun = num_sol_heun[:,2]\n",
"initial_mass_heun = m0\n",
"current_mass_heun = final_mass_heun/initial_mass_heun\n",
"current_velocity_heun = num_sol_heun[:,1]\n",
"\n",
"#creating Tsiokovsky model:\n",
"m0 = 0.25\n",
"dmdt=0.05\n",
"u = 250\n",
"t_T = np.linspace(0,4,100) #time interval\n",
"dt = t_T[2]-t_T[1]\n",
"m_T=np.zeros(len(t_T))\n",
"m_T[0]=0.25\n",
"for i in range(1,len(m_T)):\n",
" m_T[i]=m_T[i-1]-dmdt*dt\n",
"v_T = -u*np.log(m_T/m0)\n",
"\n",
"#plotting to demonstrate convergence\n",
"plt.plot(current_mass_euler, current_velocity_euler,color='k', linewidth = 3, linestyle='-', alpha=0.5, label=\"Euler Solution\")\n",
"plt.plot(current_mass_heun, current_velocity_heun, linewidth = 3, color='b', linestyle='--', alpha=0.5, label=\"Heun Solution\")\n",
"plt.plot(m_T/m0, v_T,linestyle= 'dotted', linewidth = 3, alpha = 0.5,color='r', label=\"Tsiokovsky Solution\")\n",
"plt.title(\"Simplerocket Mass vs. Velocity\")\n",
"plt.xlabel(\"mf/m0 [kg]\")\n",
"plt.ylabel(\"Velocity [m/s]\")\n",
"plt.legend(loc=0,fontsize=15);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As demonstrated by the plot above, both the integrated Euler solution and the Heun solution converges to the mass ratio defied by the Tsiokovsky equation. Because all three methods assume ideal conditions, there is very little deviation in the solution results, except as the velocity increases there is a slight deviation."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"2. You should have a converged solution for integrating `simplerocket`. Now, create a more relastic function, `rocket` that incorporates gravity and drag and returns the velocity, $v$, the acceleration, $a$, and the mass rate change $\\frac{dm}{dt}$, as a function of the $state = [position,~velocity,~mass] = [y,~v,~m]$ using eqn (1). Where the mass rate change $\\frac{dm}{dt}$ and the propellent speed $u$ are constants. The average velocity of gun powder propellent used in firework rockets is $u=250$ m/s [3,4]. \n",
"\n",
"$\\frac{d~state}{dt} = f(state)$\n",
"\n",
"$\\left[\\begin{array}{c} v\\\\a\\\\ \\frac{dm}{dt} \\end{array}\\right] = \n",
"\\left[\\begin{array}{c} v\\\\ \\frac{u}{m}\\frac{dm}{dt}-g-\\frac{c}{m}v^2 \\\\ \\frac{dm}{dt} \\end{array}\\right]$\n",
"\n",
"Use [two integration methods](../notebooks/03_Get_Oscillations.ipynb) to integrate the `rocket` function, one explicit method and one implicit method. Demonstrate that the solutions converge to equation (2.b) the Tsiolkovsky equation. Use an initial state of y=0 m, v=0 m/s, and m=0.25 kg. \n",
"\n",
"Integrate the function until mass, $m_{f}=0.05~kg$, using a mass rate change of $\\frac{dm}{dt}=0.05$ kg/s, . \n",
"\n",
"Compare solutions between the `simplerocket` and `rocket` integration, what is the height reached when the mass reaches $m_{f} = 0.05~kg?$\n"
]
},
{
"cell_type": "code",
"execution_count": 436,
"metadata": {},
"outputs": [],
"source": [
"#defining rocket equation to account for drag and gravity\n",
"def rocket(state,dmdt=0.05, u=250,c=0.18e-3,g=9.81):\n",
" derivs = np.array([state[1], (u/state[2])*dmdt-g-(c/state[2])*((state[1])**2), -dmdt])\n",
" return derivs"
]
},
{
"cell_type": "code",
"execution_count": 438,
"metadata": {},
"outputs": [],
"source": [
"# time array\n",
"t = np.linspace(0,4.1,41) #10 seconds, 10 time steps per second\n",
"dt = 0.1 #time step of 0.1 seconds\n",
"N = 41\n",
"\n",
"#setting initial conditions\n",
"y0 = 0 # initial position\n",
"v0 = 0 # initial velocity\n",
"m0 = 0.25 #initial mass ig kg\n",
"\n",
"#initialize solution array for euler method \n",
"num_sol_euler = np.zeros([N,3])\n",
"\n",
"#Set intial conditions\n",
"num_sol_euler2[0,0] = y0\n",
"num_sol_euler2[0,1] = v0\n",
"num_sol_euler2[0,2] = m0\n",
"\n",
"#initialize solution array for heun method\n",
"num_sol_heun2 = np.zeros([N,3])\n",
"\n",
"#Set intial conditions\n",
"num_sol_heun2[0,0] = y0\n",
"num_sol_heun2[0,1] = v0\n",
"num_sol_heun2[0,2] = m0\n",
"\n",
"#integrating the rocket function using the eulerstep and heun integration method for a more accurate state solution\n",
"for i in range(N-1):\n",
" num_sol_euler2[i+1] = eulerstep(num_sol_euler2[i], rocket, dt)\n",
" num_sol_heun2[i+1] = heun_step(num_sol_heun2[i], rocket, dt)"
]
},
{
"cell_type": "code",
"execution_count": 606,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAE0CAYAAAB5Fqf4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nOydeXwURfbAv4+QAAEChJuA3HKJKOHSRQw3KiiKyKUCAusPEV2v1VVQ1F118RYWEVcBBQQUEFBE5FwPUEARhCigIIhcASKHCeR4vz+qJ5lMZiYzuSaB+n4+/enprlfVr7un+3VVvXolqorFYrFYLEWNEqFWwGKxWCwWb1gDZbFYLJYiiTVQFovFYimSWANlsVgsliKJNVAWi8ViKZJYA2WxWCyWIok1UAWEiAwTEfWypIlIooh8JyKviEjTUOvqCxEZ6eicGmpd8oqIHPK4Dw0DyHODR57lhaGrJXBEpISI7Hfuz/dB5h3gdm9vzUedXnHK3JJfZeYHItLX7XwrhlqfQLAGqvApAVQALgPuBb4XkVGhValoIiIbnIdpagEUH8gL6bYCOK4lH1HVdGC2s3mpiFwaRHbXf+A0sChfFSuGOB/OKiJ/C7UuLqyBKhyuBco7SzTQFngBSAUigKki0i506l1QnHTWfg2UiFQCenvksRRNZrr9DuijQkSqAr2czYWqeibftbLkGWugCockVT3tLCdUdZOqPgT83UkvAdwXQv0uJD4GkoBGInKFH7lbgFLAdiC+MBSz5A5VjQc2O5uDRSSQ99pAoKTz+50CUayIoaofqqo4S2Ko9QkEa6BCy2TA9eXWMZSKXECcBJY4v/19bd/urN8tWHUs+YTLyNQCugQg77r3vwFrCkQjS56xBiqEqGoK8LOzWc2frNMZPFREVojIERE5JyKHRWSZiAwSEcnpeCJSU0T+KSLfiMgxEUkWkb0iskpE7hGR6sGeg4iMc+t4fd6HTDMR+Y+I/Cgip0TkjIjEi8jLIhLjRf45EVGgvbPrTi/OJo8Eq6sbrpfZABGJ8HL8BsCVgHv/hk9EpI6IjBaRpSKyT0TOisifIrJbRGaISGwO+SNE5G4RWSsiCSKSIiLHReQnEVksImNEJNpLvmoi8oyIfCsifzj/iUMiss05bqC1CVd5rznX9qiIhOcg+1dHNl1ELvJIayUib4nITuc6JDuODBude351oDoFwRwgxfntt5lPRJpgmtkBZjn9WN7kqorIUyKySUROOOfxq4i8IyKt86KsiJQU44S0yrnernu3VET6BVhGbedZ2ez8X5JFZI/zjrhLRKp4yHt1khCRD53nrYKz62Uvz1tfEYl2jqEi8nAOupVwngUVkbeDvT4ZqKpdCmABhgHqLHF+5LY5Mof8yFQCPncrz9vyGVDeTxm3An/mUMYLHnlGOvtTvZQnwGtuef/u47j/wPS1+TrmKaCnR57nctBTgUeCvB+HnHxTMU07h53tG73ITnDSVjrbG5zt5T7KTspB1zTgfh95KwCbAjjf3h75WgEJAeQrF8Q1auuWr08OsuscuXUe+2/P4X4rsKmAnrklbv+pSD9y/3TTpbkPmd6Y2ravc0gHHvCR9xVHZouP9GrAxhyu0ZIczmEUkJxDGRM88vR1S6votv/DAP5HfR3Z95zt+BzuRXe3vFfl+p4WxB/FLgoBGCggHNPEp8BqHzICrHQr6w2MB2BloDUw3S1tsY8ybnaT2QeMBhpjDF8DoD8wD3jWI59XA+XoPceVBgz3cdwH3I67EOgGVAeqYDqo1ztpp4EmbvkigHLAN076f51t9yU8yPuRYaCcbddLZKEX2d1O2lBnOycD9T3GqHYHmjv3pr5zjq6HPx3o7CXv8056CsYwtgKqAnWAK5x79TlwrUc+1wvuIOZl1RjjgNMIiAOeAHYShIFyyv3RKXeeH5mLnPNRYJTb/qpkfgR9DVwP1HOuRwuMs9AUX9cxH5459//5YD/P0x78GErgajKN7Cbn+ajjXN92ZL6kFbjZS36fBgoIA75y+0+8BlxKpvOUe9mzA3i3/IJ5ThtinueGwCBgATDOI58vA1Ua80wlOml/J/vzFubIdnMro4Ofe+F6P+zM0z0tiD+KXQI2UPe7yfTzIeP+0D3lQ+YlNxnPF1l54LiTFg9U9aNzSY/tbAYKKAssd/YnAdf7KKsucM6Re9WHTDjwpSPzgZd0l2GYmg/3w9NAxTrbZ4FoN7m/OPvP4LzcycFABXDsV538n3pJ2+6kPRtEeVXd7nfP3Ojkp+xxTrl/AlE+ZB5xZJI9XnT93a6p17wFuWCcWlz/9WU+ZK5yu3b3eEkPw7z0FfgCHx9CwCRHZq+X58afgXJ/L/hqdZjmJtPJI60y5oNOgS1AJT/Xw1MvrwbKLd1loP7mp0xxuz5v+JCpQGarwj/yck9tH1ThUEZEyjlLJRGJFZGJwL+d9JdVdYGPvCOd9QHgaR8yjwHHPORd3I75sgL4q6oe9aWkqvodkCsilYFVQE/gD8zLcYkP8bswBugg8KCP47lqDQA3iEhZf8fPT1R1M7ADU1u7xS3J1X+xSFVP59PhXG7QV3vp83J5kh0IorySbr+DyRcIszAvljLATT5khjjrjzSrN5hLr5OYZrZCRVXPAvOdzR4++lRd9zcVU1vx5HpM7RdgmPMf9cbjThl1MR81geJ6Pndjhpp440GMEXKXd8/vek6Gq+oJXwfK6XnODWos0HRnc4CIlPYiNhBTK0sjjx6S1kAVDsswD+wpzBfeJuAhzJfmNap6v7dMTgf3lc7mYl8Pi6omAR85m57egF2d9S+q+nluT0BE6mC+KNtjaiNXq+r//GTp5qz/B5RyM9BZFjJduEtimi4LE5eH3m0AIlKKTGMVlPeeiHQQkWki8oOInHScB9TpfHa5QJfCvNDc+c5ZPyYi14hIWE7HUtWDmD40MGPoghmcmlPZezG1WvAyVkxEWgGXOJuzPJJdkROqAG+ISM380isIXC/EMExTVwbO/e3vbH7i42PN9b/9BTjk53+bgqk9AbQJRDHn48TlnLFQfThnqOpJ4FNn8yqPZNfzvFVVvyM0zMA0T1YAbvSSPtxZr1DVPH1AWQMVWspiPGZq+EivhGmiA/O174/tzrqqiES67XeF9MlL2JUSmJdWU8yD21FVcwor08RZDyDTOHtb9rvlqZoHHXPDbMyDdqWINMJ0jFfC1PpWBlqIGO/F9Zi+oBaYe+bLq7KCx/Z4zHWogfmQOSIii0TkgRw8xf6Gqen8BRON5BfHc2+EiHgawWBxGZ7OIlLLI81ltI47+magZjySK+rHKOCA42H4mojcLIUQXkdVv8LUTtx1ddEHcOng6wPE9b9tgP//7SlMfx8E/r+tiamxQ+DPcx2RLB66+fE85wlV3Q+scDaHu6eJCd3m8r7NvfeegzVQhUNndQbIAVFAB0znOZiX/hyPP6GL8m6/c2pucm9Scc8X5SU9N7iaCZNzKsupBeSmuc5bc0GB4Txoa53NW8kc+zRHVdMCKUNEhpLZhLkG89XeHPPSckUPcf/Cdm+eQ1V3YfrDZmPa7aMxfQUvAJvFuJq7N0G68s3FOGWswRjZ+sBQjEPJXhFZnQdX6PmY2n0JYLDbuZYgs1YyX1XPeck7Bvg/zAtYgMuBscD7wGHHiPodUpEPuIxPrIg0c9vvat5LJHMsnCeeHxCBEOj/NjfPcxjg/sGZX89zXnnLWXd1WldcuAzWMXxf44CxBqqQUdVTqvo1pn1/obO7M97Hbrj/CcvlULR7+ikvv90fjmBJx3hgnca8fFf7e8k4L/ckZ/Ofmjl6Padlbh50zC2ul9kI4BqPfYEwxlmvAbqq6lxVjVfVBHWih5D51ewVVd2lqrdiPgKuwnhRfYrp47gYmCcid3rJt0pVu2A6zq8DngG+dZI7A1+ISNDNpk6/hqt25F4LiQNc49Y8m/dcedNV9Q1VbYFpzhyE8dzbh7kOQ4EvnWayguIdTO0SMptvK5N5f+c7/VXecBmOlUH8bwONXZeb5zkN47DiWUZenuf8YDFwFGNDboeMD1PXe2y2jw+YoLAGKkQ4nY3/R2actycl++DIE27pzXMosoWzPqqq7n9oV3NHnvp3nP4rl5FqgTFS/po29jjry/Ny3EJgAeYFUBvj1LEtgOZLd1o563nOPfVGy0AKUtWzqvqFqj6vqr0wruO/OMkT/ORLVNVlqvqYqsYCPTA1oDIYj7vc4DLSrUTE9d9yOUfsUdUvveTx1GufY7DHYGp445ykRgQWrDdXOP1oXzibg53WiQGY+wv+O+5d17uVj1aNvHAQ49kKgT/P+zz+V/nyPOcVpz/c9R8Z6qx7YZoxIR+a98AaqJDidNK+6GzWw6MW5XSifuVsXi8iWZqHXDieNK7Apl94JH/mrBuISJ7CKXkxUmv8GClXG3U3Eamdy0O6nEJydBzILap6iszmVgjC68hp8nK99PzpmKuXsfOi/a+zWUNMANtA8n2GGUgL0MyfrB8+xnwgAdzq/MdcEQ5yjK7hRad04Fkya9a51StQXPexLtCJzGfrlxyMq+t/W5XMZypfcGoU3zibN4qPKB8iUh7jKQu+n+dLc1M7zoFgnzdXM19jEfkLmc173wX5kecTa6BCzytkvgge8eLF5foT1Ma4k3vjaYznFMCbHmmz3Mp/w2nq8IovA+hOEDWpSZgmqlLAOx6OG96O3cTLbpfrvGdHfX5zN+aF2Qz4T6CZnJfur87mDd5kROT/yO6J5UorISKNcziMq1P8HE7zjpgQR9lCH7mVG0amt+AxX3L+cF6mLpftwRj3a1f/jNfmPRFp4KUVwJ0YTK0u13oFwXwyjeETmH5fyLn5diGZ3nn/EY8wTp6IyMVB1rQyXur4DhA9kcwmPM/n+W0y43e+LSI++8wCeZ49COp5U9UdmDGCYAbl93HTMX8IduCUXQJbCDDUkSM73k12sEeaZySJ1zHNStGYav5bbmmBRJLYC9yJefFVxNTcbsR8FQcUScJJuwrzwlRMuKZsA4DJ9DRTTISCkZjmnYqYpoC/YPpbNuNlVL/bdUlydKyEcTIoCUiQ9yPLQN0g8/ocqEvWsEzvYJo0Kzv3aBKmD2G7m0wHt7ylMf17KzDNvZdjvtyrYhwnXnHLN9stXy/MS+pdzJiTps7/IQbjhvyJW75RwZ6v23E6upWzx1l/40f+OeB34GXMR0w9517Xd/R0RalIwSPEkHNOrmMFFcbKjz5z3cp0LQ0DyHcVmYPMEzDhui51/n/VnPv0V+c6pxHcQF3PSBKvYNz2ozHONLPddJ3jQ7+hbjK7gTuca1yRzMgw8wkwkoRbuuvYBzDRNKLI4XnD9N26X99k3Aa+5/ke5ldBdsl244a53bS4HGSjyBwB/4Pnn4H8icU3lJxjxgUci89JD8RIjcX0h/g7rgJfeslbGzMg2Jt8rmPx5eJe+jNQ5TEuv77OawtmLJsvA5XTdVFMs1Blt3y9Asz3X18vlgDP2z1qgGvJFn3BTT6QGIrngBFe8haEgbrW49hfBJG3K3AkwPMJ88hbGLH4RpNpRH0tEzzy5GSgrsB3HMW+PvQoR+Y7QPETIis3i23iKwKoGZj3krPZAo/Bb2q8qq7GGL2VGO+ZFMwDtBzTed1DTX+Kr2PMxDQrPA9sxThfJGO+jFdiDMm/feX3UaZ7c98lwCrP5j5VnYSpNT2LGaB8AvPVeQpjjN/CtPV39lL+b5iX+xyMF1ievYLyG+eadwT+hYl9dw7jxrwZeBjTtHTcR95kzMDNRzD3cSfmuqRgDOpyzNfxlarq3iS2BuMI8W9MH8WvmHuZjDEo7wHdVHWkOm+RXJ6bkrU5LxVTK/HFRIwzwjTM+R90zuU05l5PAlqq6ls+S8hfPsVcRxcB9y+q6ipMK8MDmOt9FHP+f2JqLR9gvNeqaYBDEtzKPoIxBn8FVmOa1lIwg68/Bvqr6vWa1dnJs4zXMWO2XsZc21Nk3v9PMTXySUHqtR5jmJdgrluOkSjUeKnOd9uVf817OF9XFovFYrHkBhGZjBlu8RtQV31EyMgNtgZlsVgsllzhhI9yDd6ekZ/GCayBslgsFkvuuQ3j4JFO5pCIfCNYN0SLxWKxXMA4wxgiMF64zzq756vqr75z5fJYtg/KYrFYLIEiIolkjVn4B9DKGqgiSJUqVbRevXqhVsNisVgKhS1btpCWlkZYWBjlypUjJiaGMmXK5JzRg82bNyeoqt9I8LaJL4/Uq1ePTZs2hVoNi8ViKVaISI41LuskYbFYLJYiiTVQFovFYimSFFkDJSLPuKbMFpEH/cgNFpHPReQPETktIptEZIyvSMF5zWexWCyWwqFIvoxFpC0miKhfDw4R+Q8mwGEbTKy6zzATvE0GPvASGTxP+SwWi8VSeBQ5A+WMTJ6BiUu12I9cP+AuTMyoS1W1t6reiIk3F4+JZ3d3fuWzWCwWS+FS5AwU8BRmtsn/w/jX++IfzvphVd3l2qmqhzGRfsHMr+R5jrnNZ7FYLJZCpEi5mYtIe0z04DmqutSp7XiTq42ZL+cc8L5nuqquE5EDmPlxOuDMSpvbfBaLOydPnuTIkSOkpKTkLGyxXICEh4dTrVo1oqKi8lROkTFQzpTSMzFTE9ybg/jlznq7qib5kNmIMTSXk2locpvPYgGMcTp8+HDG4MTgJlO1WM5/VJWkpCQOHDgAkCcjVZSasf6Fmd9krKom5CBb31n7G+i1z0M2L/ksFgCOHDlCTEwMkZGR1jhZLF4QESIjI4mJieHIkSN5KqtIGCgRuRIzPfiHqjovgCzlnPUZPzKnnXX5fMiXBRH5q+OWvuno0aN+Fc2Rw4dhzhz40+fcZJYiREpKSq7CulgsFxplypTJczN4yA2UiJQBpmNmeL0r0GzOOthAgrnNlwVVnaaqbVS1TdWqfkNJ+Wf9enjjDdi5Ez77LC8qWQoRW3OyWHImP56TkBso4BnMGKT7VfVggHlcU5uX8yPjSnOfBj23+QqG6GhId+b32rYN/vDntGixWCwXFkXBSeJGzGRXQ0VkqEdaU2c9WkR6A7tVdSSw19lf10+5dZz1Xrd9uc1XMDRpAs2bw5kz0Ls3VKiQcx6LxWK5QCgKNSgwelztZanupDdwtts429856xZOE6E32nrI5iVfwdG3LwwbBnlpKrRYgmDChAmIiNdl1qxZQZU1bNgw2rRpk7NgHvj111+57bbbuOiiiyhdujR16tThhhtu4H//+19Q5cyYMQMR4fTp0zkLuzF//nxmzJiRbX9cXBw333xzUGVZgiPkNShVrecrTURmAEOBh1T1Bbc8+0XkW6A10B94xyPf1UBtTLSI9XnNV6BERBTKYSwWdypUqMDy5cuz7W/UqFEItPHNiRMn6NChAzVr1uTZZ5+lVq1a7N27lyVLlrB+/Xo6depU4DrMnz+fhIQEhg0blmX/lClTCA8PL/DjX8iE3EDlgWcxg23/LSJfqepuABGpBkxxZJ5T1fR8yld4nD0LYWFQsjjfHktRpmTJknTo0CHUamSQlJTk1Tvygw8+4PDhw3z//fdUq1YtY//w4cMJ9WSrzZs3D+nxLwSKShNf0KjqB8DrQA1gm4gsFZGFwC5MqKQPMcFf8yVfobF7N0yZAkE2X1gs+cnatWsREX744Ycs+wNp1tq3bx8DBw4kOjqayMhIevbsyU8//ZSRvnfvXkSE2bNnc/vtt1OxYkX69OnjtazExEQiIiKIjo7OlubpJTZ//nxatmxJqVKlqFOnDo899hipqal5Osdhw4axYMEC1q1bl9EMOmHCBJ/XYvXq1bRv357SpUtTvXp17rrrrixNiq5jrl27lv79+1OuXDkaNGjAlClTsGSn2BooAFW9CxgCfIvpo+oJ7MYEe+2nqmn5ma/A+eUXmDXLePN98QX8/ntI1LBcGKSmpmZb8srx48fp2LEjP/30E1OnTmX+/PmcOXOGbt26kZSUNXjLgw8+SPny5Xn//fd59NFHvZbXunVrzp49y2233cbmzZtJT/fesLFixQoGDBhA69atWbx4MWPHjuWFF17g7rvzFvd5/PjxdO7cmcsvv5z169ezfv16Ro4c6VV2x44d9OrViypVqrBgwQKefPJJ5syZ49Wgjxo1ilatWrFo0SLi4uIYM2YM33zzTZ50PR8p0m1IqjoMGJaDzBxgTi7KzlW+AqV+fahbF379FUqXtoN3ixFz5szhvffeC0i2Z8+e2V6ckydP5tNPPw0o/6BBgxg8eHDQOrpz7Ngxr/0ne/bsoV69erku9+WXX+bMmTNs2bIlo9bzl7/8hXr16vH2228zZsyYDNkOHTrwn//8x295Xbt25b777uOVV15h7ty5lC9fnu7duzN69Gi6deuWIff4448TFxfHzJkzAejVqxcA//jHPxg3bhy1a9fO1fk0bNiQ6Oho0tPTc2wSfeqpp6hbty5LliwhLMzM2BMdHc2AAQNYv349V1xxRYbsoEGDGDduHGBqYkuXLmXhwoW0a9cuV3qerxTrGtR5h4jx6mvZEsaMgSLWYW05f6hQoQIbN27MttSqVStP5a5cuZLu3bsTFRWVUSsrX748sbGxbNq0KYvsddddF1CZL730Ejt37uT5558nLi6O5cuX06NHD6ZOnQpAWloa3377Lf3798+Sb8CAAaSnp7N+feH4O33zzTfceOONGcYJoF+/fpQsWZIvvvgii2yPHj0yfoeHh9O4cWN+++23QtGzOFGka1AXJJUqQT+vQdwtlnyjZMmSBeIenpCQwIYNG5g3L3vEsq5du2bZrl69ejYZXzRq1IgHH3yQBx98kISEBHr06MGjjz7KnXfeSUJCAikpKdnKc20fP348F2cSPAcPHsymQ1hYGJUrV86mQ8WKFbNsR0REkJycXOA6FjesgbJY8oHBgwfnqdnt7rvvznN/SX5SunRpAM6dO5dl//Hjx6lSpYrPfNHR0Vx//fWMHz8+W1r58lnDW+Y2FE6VKlUYPnw499xzD0eOHKFKlSqEh4dnC0x6+PDhDJ28kdtz9EXNmjWz6ZCWlsaxY8d86mDxj23iKw4kJsJXduYPS+Hh6rOJj4/P2Ld///4s3nje6Nq1K9u3b6dFixa0adMmy9KkSZOg9fAVjHnXrl2UKlWKChUqEBYWRmxsLO+/n3WKt/nz51OiRIksfT/uBHqOgdZu2rdvz6JFi0hLy/SxWrhwIampqXTs2DHH/Jbs2BpUUWfrVvj4YzM2qmJFExrJYskjqampbNiwIdv+OnXqEBMTQ+3atWnbti3jx48nMjKS9PR0nnnmmRxrAvfffz+zZs2iS5cujB07lpiYGA4fPsy6devo2LEjgwYNCkrPmTNnZrijt2rVipSUFFatWsWUKVMYPXp0Ri3oySefpGfPngwfPpyBAweybds2xo8fz6hRo3w6SAR6jk2bNmXx4sV8+OGH1K5dm1q1anntqxs3bhyXX345ffv2ZfTo0fz22288/PDD9OzZ06eRtPjHGqiizu7dxjiBMVSNG4MdvW7JI3/88YfXl+bTTz+d4V02Z84cRo4cya233krt2rWZOHEiL7/8st9yq1SpwoYNG3jssce47777SExMpGbNmnTs2JFLL700aD2vvfZa9uzZw5tvvsn+/fsJCwujYcOGTJo0iVGjRmXI9ejRg7lz5/LPf/6T2bNnU61aNR544AGefPJJv+UHco533XUX3333HXfccQcnTpzgiSeeyBgL5U6LFi345JNPePTRR7npppuIiopi0KBBTJw4Mejzthgk1KOxiztt2rRRT++kfCU5GaZOhRIl4KabIJfuspb8IT4+nmbNmoVaDYulWODveRGRzarq11PH1qCKOqVLw5AhEBUFpUqFWhuLxWIpNKyBKg7YSOcWi+UCxHrxFVfOnTPNfxaLxXKeYg1UceTwYZg2DZYsAduHaLFYzlOsgSpuJCbCm29CQgLs2AGbN4daI4vFYikQrIEqblSsCJddZn6Hh1vHCYvFct5inSSKI716mbFRnTpZBwqLxXLeYg1UcaRkSRtQ1mKxnPf4NFAisjOfjqGqGnwQLovFYrFc0Pjrg2qUj4uloPnzT5gzB/bsCbUmliLOhAkTfEbrHjZsWIFMw5FXfvjhB/r27UvNmjUpU6YM9evXZ+DAgdmma88Jf+fuj2nTpvHhhx9m21+vXj0efPDBoMuzBEZOTXwLgEfyUP6/gRvzkN8SCIcPw3vvGQ+/AwfgzjtN5AmL5Txg9+7ddOjQgXbt2jF58mQqVarErl27eP/999m6dSuXXHJJgeswbdo0LrnkEvr27Ztl/6JFi6hcuXKBH/9CJScDdUpVf85t4SJyKrd5LUFQpgykpJjfZ86YALOtW4dWJ4sln5g+fTqlSpXik08+oZTjtdqlSxfuvPNOQh1L9PLLLw/p8c93/DXxfQxsyWP5W4BleSzDkhNRUdC/P0RGwqBB1jhZ8pV9+/YxcOBAoqOjiYyMpGfPnlnmTFq7di0ikq25LS4ujptvvjlj29V8+Nlnn3HppZdStmxZOnbsyPbt2/0ePzExkYoVK2YYJ3c8Jz2cPHkyjRs3plSpUjRq1CjH6OszZsxARDh9+nSW/e5Nd3FxcWzevJmZM2ciIogIM2bMyCbnYv78+bRs2ZJSpUpRp04dHnvsMVJTU7Mdc9u2bXTv3p2yZcvStGlTFi5c6FfXCxGfBkpV+6jqa3kpXFVfVdU+eSnDEiD16sG990IuJoWzXJikpqZmWzxrJMePH6djx4789NNPTJ06lfnz53PmzBm6detGUlJS0Mfct28fDz30EI899hjvvfceR44c4ZZbbvFbE2rdujW//PIL9957Lzt27PAp9+abbzJ27Fiuv/56li5dSv/+/XnggQd47rnngtbTnSlTptC0aVOuvfZa1q9fz/r167nuuuu8yq5YsYIBAwbQunVrFi9ezNixY3nhhRe8zpY8ePBgrr/+ehYtWkTjxo0ZOHAgv/32W550Pe9QVbvkYYmNjVXLhcOOHTu87p89W7V3b7PMnp09/b//zUxfuDB7+qRJmemffJI9feLEzPS1a/N2Dk888YQCPhf3//S4ceM0Ojpajx07lrHv+PHjGhUVpZMnT1ZV1TVr1iig27Zty3Kcq6++Wvv16wl5GDEAACAASURBVJexPXToUA0LC9OdO3dm7Fu0aJECGh8f71PflJQUveWWWzL0i46O1ltvvVU3btyYIZOWlqa1atXSYcOGZck7evRojYqK0qSkpIxzr1y5ckb69OnTFdBTp05lyVe3bl194IEHMrZjY2N16NCh2XTzlGvfvr3GxcVlkfn3v/+tJUqU0P3792c55ltvvZUhk5CQoGFhYfr666/7vA7FEV/Pi6oqsElzeL/aSBLnM2lpsGoV/PFHqDWxFDEqVKjAxo0bsy29e/fOIrdy5Uq6d+9OVFRURi2rfPnyxMbGkpt50OrVq0fjxo0ztps7M0T7qzmULFmSefPm8f333/P0008TGxvL/PnzueKKK/j4448z8v/+++/0798/S94BAwZw8uRJtm3bFrSuwZKWlsa3337rVYf09HTWr1+fZX+PHj0yfleuXJlq1arZGpQHAQ/UFZG6QCywUVX3u+1vCUwCWgF7gYdVdUU+62kJljNn4P33Ye9e4zQxfDhERIRaK0sRoWTJkl7dyStXrszBgwczthMSEtiwYQPz5s3LJtu1a9egj1uxYsUs2xHOfzI5gMj8l156acasvHv37qVTp06MGzeO6667LkPn6tWrZ8nj2j5+/HjQugZLQkICKSkpAevg7VoEch0uJIKJJPEgcBeQ0ckhIuWBlYAr3k4rYLGItFLV/Broa8kNCQmwb5/5ffAgfPcdtG8fWp3OYwYPNosvRowwiy/uvtssvnjoIbMUNtHR0Vx//fWMHz8+W1r58uUBKF26NADnzp3Lkn78+PFcjTkKhHr16tG/f3+mTJkCQM2aNQE4cuRIFrnDhw8D5jy84Uv3EydOBK1TlSpVCA8PD1oHi2+CaeLrBPyoqrvd9t2KMU7zgabA34FSwD35pqEld9StC66O3C5doF270OpjKZZ07dqV7du306JFC9q0aZNlaeI45NSuXRsw03u72L9/fxZPv7zg+cJ3sWvXrozaSe3atalVqxbvv/9+Fpn58+cTFRVFy5YtvZbhTfevv/6akydPZpELpHYTFhZGbGysVx1KlCjBFVdc4Te/JTvB1KBqAhs99vUE0oG/qeoh4AURGQZ0zh/1LHkiNhZiYqBGjVBrYimm3H///cyaNYsuXbowduxYYmJiOHz4MOvWraNjx44MGjSI2rVr07ZtW8aPH09kZCTp6ek888wz+VZjePrpp/n+++8ZPHgwzZo148yZMyxcuJClS5fywgsvAFCiRAkmTJjAnXfeSeXKlenevTvr1q3j9ddf55lnnsmoKXnSrl07YmJiuOeee3j66ac5fvw4EydOJMpjoHvTpk359NNP+fTTT6lcuTL169f3OkD3ySefpGfPngwfPpyBAweybds2xo8fz6hRozKMoSVwgjFQFQHPeu8VwDbHOLnYjjFclqKANU6WPFClShU2bNjAY489xn333UdiYiI1a9akY8eOGf1BAHPmzGHkyJHceuut1K5dm4kTJ+Y4BilQhgwZwunTp3nxxRc5cOAAkZGRXHzxxbz33nsMHDgwQ27UqFGcPXuWV155hVdffZXatWvz4osvct999/ksOyIigkWLFnHXXXdx880306RJE15//XWGDBmSRW7cuHHs27ePW265hZMnTzJ9+nSGDRuWrbwePXowd+5c/vnPfzJ79myqVavGAw88wJNPPpkv1+JCQzTAkdgicgzYoqpdne2LgR+B11V1jJvce8B1qnpBxNpp06aN5sabKaRs3AgNG4JtEw+a+Ph4mjVrFmo1LJZigb/nRUQ2q6rfwI/B9EFtBf4iIvWd7RGYcQlrPeTqAYewFD3S02HZMvj4Y5g92wSYtVgsliJKMAbqTSAC+FZEvsF49SUAH7kERKQccDmmmc9S1EhIgG+/Nb+PHYPPPw+tPhaLxeKHgA2Uqs4BngFKA22AA0B/VXWPd9IfY8TW5qOOlvyiWjW46Sbzu0ULyMU4FovFYiksgppRV1XHici/gAoejhEu1gBtgV35oZylAGjeHIYNM27oHoE2LRaLpSjhswYlIo84jhBZUNUkH8YJVd2rqptV9aS3dEsRoV49a5wsFkuRx18T3zNAvIhsF5GnRcTO4XA+s2sXFEK8MovFYgkUf018A4CbgGuAx4BHRWQ/sBBYBHyhgfqoW4o2W7bAkiXmd2SkcUG3WCyWEONvPqj3VXUQJpRRH2AGEAn8DeMEcVBE3hCRXiISXgi6WgqCtDT46ivjgp6eDitWmLXFYrGEmBy9+FQ1RVU/VtURQA1MGKP/AGeBUZiZd4+KyCwR6ScikQWqsSV/CQuDW2+FChWgenXzu4SdhcVisYSeYL340oF1znKPiLQF+gF9gcHAICBZRFZgmgGXqGpi/qpsyXeiomDoUNO85yNmmcVisRQ2efpUVtWNqvqIqjYFLgEmADuBG4Dp2KjmxYfoaGucLgBEJMdl7dq1OZbzyCOPBB38NDk5GRHhv//9by61zz+WL1+OiLB79+6chYPk1KlT/OMf/+Diiy+mdOnSVK9enc6dO/POO+8EVc6PP/6IiLBy5cqg8n311Vf885//zLY/N/cs1ARVg/KHqu4AdgBPO+GQbsQM5rUUV44eNX1SN95oaleWYo/7rK5JSUl06dIlY9I/F65Zbv0xZswYBgwYUCA6Fnf69OnDzp07GTduHM2bN+fQoUOsXbuW5cuXc/vttxf48V0Gaty4cVn2F8d7lm8Gyh1V3QO8VBBlWwqJ33+HWbNMvL5Zs+D2220N6zygQ4cOGb9Pnz4NQMOGDbPsD4Q6depQp06dfNXtfGDbtm2sW7eOJUuW0KdPn4z9AwcOJNROz8XxngXdxCciESLSQURuEpHBvpaCUNZSiBw7BklOFKuEBLNtuWA4duwYw4YNo2bNmpQuXZq6desyZkzGpAVem4t27dpFnz59KF++PFFRUdx4443s2bPH73G+++47qlatysiRI0l3vEdzKqd9+/ZeayJ33303jRs3BkBVeeqpp2jQoAGlS5emRo0aXHvttRzz8z+eOXMmERERTJ8+nc2bNyMifP3111lkEhMTKVOmDNOmTfNaRmKi6XKv4WWaG/EYHL9p0ybi4uKIjIykcuXKDB06lISEBJ/6+Woidb8XU6dO5aGHHuLs2bMZTba9evXKJucip2vtOubUqVP5+9//TuXKlalevTr33nsvKSkpPnXNL4KqQYnIg8CjQIUAxOfkSiNL0aBlSzh3DlauNJ59MTGh1shSiIwdO5atW7fy2muvUa1aNfbt25eledATV3NhVFQUb7/9NmDmUIqLi2Pr1q1UqJD9lfHNN9/Qs2dPhgwZwqRJkxCRgMoZOHAgEyZMIDk5OWMiwvT0dBYsWMCIESMAePPNN3nxxReZOHEizZo14+jRo6xcuZKkpKRsegC88cYbjB07lpkzZzJo0CAALrvsMqZPn0779u0z5N577z1ExGdTWfPmzSldujR33303//rXv7jqqqsoVapUNrmDBw/SuXNnLrvsMubOncuJEyd4+OGH2b59Oxs2bKBkydw1bt10003s2LGDN954g3Xr1gFQsWJFr7LB3LNnnnmGnj178t5777F582Yee+wxGjZsyD33FLCbgaoGtGAcHtKd5QeMl967vpZAyy3uS2xsrJ7XnDkTag2KFDt27PCesGaN6hNPmGXNmuzpy5dnpn/5Zfb0JUsy0zdtyp7+wQeZ6Vu35kb1bJw6dUoBnT59era0hg0b6rRp03zmffjhhzUmJiZj++WXX9bw8HDdt29fxr6ff/5Zw8LC9KWXXlJV1aSkJAX0zTff1M8//1zLly+vDz74YJZyAynnt99+UxHRRYsWZcisXr1aAd22bZuqqo4YMUIHDx7sU/9PPvlEAd21a5e+8sorGhERoQsWLMgiM2nSJK1QoYImJSVl7Gvbtq0OGTLEZ7mqqjNmzNDIyEgFNCIiQq+++mp96623ND09PUPm3nvv1cqVK+vp06cz9q1bt04BXbhwoaqqxsfHK6CfffZZtuvnjue9eP7557VUqVLZ9MrLPevevXuWsnr27KlXX3213+ug6ud5UVVgk+bwfg2miW8MkArcoKqXqOqNqnqbryWvhtNSRPDmHHH2LKSmFr4ulkLjsssu49lnn2Xq1KkBebp98803dOjQIUsfR4MGDWjbti1ffPFFFtk1a9bQs2dP7r33Xp5//vmgy4mJiaFjx47MmzcvQ2bevHk0b96cSy65JEP/Dz/8kKeeeopNmzZlNB96MnHiRB555BEWLlzITa5I/w5Dhgzh7NmzLFq0CIAdO3awceNGhg8f7vdaDB06lL179/Lmm2/Sv39/4uPjGTFiBHfccUeW87z22mspW7Zsxr5OnTpRo0aNbNeroAjmnvXo0SPLdvPmzfntt98KXMdgDFRdYJ2qLi0oZSzFgORkeOcdmD/fGqnzmGnTptGrVy8ef/xxGjduTNOmTVm4cKFP+YMHD1K9evVs+6tXr87x48ez7Fu+fDklSpTgttuyf8cGWs7AgQNZunQpf/75J6mpqSxYsCDL9O+jR4/miSeeYPbs2bRt25YaNWrw5JNPZjNUCxYsoGnTpnTu3DnbMStVqsSNN97I9OnTAZg+fTp169alS5cuPq+DC1e/2qxZs9i/fz9DhgxhxowZ/Pjjj0GdZ0ESjA6ezYQREREkJycXqH4QnIE6BNie8guZlBRjnA4cgJ07jZGy4RgNcXEwYYJZ4uKyp/fsmZl+5ZXZ0/v0yUyPjc2e3q9fZnrLlvmltU+io6OZMmUKhw8f5rvvvqNVq1bccsstPmtTNWvW5MiRI9n2Hz58mOjo6Cz7nnrqKdq3b0+3bt3Yt29frsq5+eabSU5O5uOPP2b16tUkJCRk6RcKCwvj73//Oz/99BN79+5l7NixPPnkk9nGIs2bN4+EhARuvPFGzp07l+24I0eOZNWqVezZs4dZs2YxbNiwbM4OOREREcG9994LwE8//RTUeboTHh5OiRIlsumZW4OWGx0Km2AM1GKgo427dwFTsmTWQLJNmthpO85zRITLLruM5557jrS0NHbu3OlVrn379qxfv54DBzKHPu7du5eNGzfSsWPHLLKlSpVi8eLF1KlTh27dunHo0KGgy6lWrRqdO3dm3rx5zJs3j8svv5yLL842OxAAdevWZfz48dSpU4cdO3ZkSatXrx4rV65ky5YtDBw4kLS0tCzpnTt3pm7dutx+++0cPnyYoUOH+r1eJ0+e5OzZs9n279plpshz1Vjat2/PsmXL+PPPPzNkPv/8cw4dOpTterkICwujZs2axMfHZ+xLTU1lzZo1WeQiIiJISUnx2azpIph7FiqCMVATgGRghoh4dwuxnN+IQJcu0KkT9O7t/Uvfcl7Qvn17Xn75ZVasWMGnn37KfffdR1RUFLE+7vlf//pXqlevTq9evfjggw94//33ueaaa4iJicnwrHOnbNmyLFu2jHLlytGjR4+MWkAw5QwYMIBly5axcOHCbF51w4cPZ9y4cSxZsoS1a9fy6KOPsn//fq9NeU2aNOGzzz5j7dq1DB8+PMt4JRHhjjvu4IsvviAuLo769ev7vW5bt26lUaNGPP744yxfvpw1a9bw4osvcvfdd9OuXTvatWsHwEMPPURycjLXXHMNS5cu5Z133mHAgAHExsZmGT/liavJcdq0aXzyySf069cvm0Fs2rQp6enpvPrqq2zcuDHDOHoS7D0LCTl5UbgvQGVgK3AcWA78F5jmZXkjmHKL83Lee/FZsuDPK6m44c+L795779UWLVpo2bJltWLFitqlSxddv359RrqnR5iq6s6dO/W6667TsmXLarly5fSGG27QX375JSPdmxfa0aNHtXnz5tquXTs9efJkQOW4OH78uIaHhyuge/bsyZI2bdo07dChg1asWFEjIyO1VatWOnPmzIx0dy8+Fxs2bNDy5cvr6NGjs5S1bds2BfTdd9/1czUNCQkJ+thjj2mbNm20UqVKGhkZqU2bNtVHH31UT5w4kUX2m2++0U6dOmnp0qW1UqVKetttt+nRo0cz0j29+FRVExMTdfDgwVqxYkWtUaOGPvfcc9nuRVpamt57771avXp1FRHt2bOnqubfPfNVljfy6sUnGmAfgoiUBuYBvYGc2nVUVcOCsJPFljZt2uimTZtCrUboUTXTdrRpA17GfZwvxMfH06xZs1CrYSlEXnrpJZ566il+//13Im3Ir6Dw97yIyGZVbeMvfzCjwZ7GzAt1AjMIdzdwOoj8lvMVVfjoI9i8GXbsMAN7y5QJtVYWS5745Zdf2LlzJxMnTmTkyJHWOIWAYAzUACARuExV9xeQPpbiyN69xjiB8fDbtAmuuiqkKlkseeXRRx9l0aJFdOnShccffzzU6lyQBGOgqgArrHGyZKN+fbjuOvj4Y7j0UigiHkAWS16YO3duqFW44AnGQP1Czn1PlguVtm2hcmWoV8+6nlsslnwhGDfzGUCciFQrIF0sxZ0GDbxPF3/mTOHrUoAE6lhksVzI5MdzEoyBeglYAawSkavzfGTLhcHmzfDaa6af6jwgPDzcZ0Rsi8WSSVJSEuHheYvrEEwT34+YJr4GwGoROQv8jolu7omqapM8aWYp/sTHG+8+VTPp4a23mibAYky1atU4cOAAMTExlClTJuiwNxbL+Y6qkpSUxIEDB7zG+guGYAxUI4/t0hhj5Q3bBmIxfVLlysGpU1CtGtSsGWqN8kxUVBQAv//+e6FM2GaxFEfCw8OpXr16xvOSW4IxUI3zdCTLhUe1anDHHbBsGfTte94M4I2Kisrzg2exWHImYAOlqj8XpCKW85RKlWDIkFBrYbFYiiHBOElYLPnH3r0wd66ZVt5isVi8YA2UpfA5csQYpx9/hOnTTR+VxWKxeODTQInIQhG5Oy+Fi8hYEfE9DaflwuTnn83MvGCMUw7z1lgslgsTf31QfTGx9/JCa+CGPJZhOd+44gqIiIDPPjP9UxUqhFoji8VSBMnJSSJSRGrloXwb/tfindhYaN7cRj23WCw+yclA9XcWiyX/8Wacjh+H77+Hq6/2HjbJYrFcMPgzUL9jB9xaCpPkZJgzBxIS4PBhuOkm0xRosVguSHwaKFWtXZiKWCx8/bUxTgC7d8OxY+dF9AmLxZI7bBuKpehw1VVw5ZXm9w03WONksVzgBBPqyGIpWEqUgB49oGVLa5wsFoutQVmKIN6MU3Iy/O9/kJZW+PpYLJaQYA1UCElOTubw4cOhVqPok54OCxbA6tVm2o4//wy1RhaLpRCwBiqEfPnll4wcOZKHH36Y5cuXc/Lk6VCrVDT54QfYtcv83rMH9u0LrT4Wi6VQsH1QIWT16tUA7Nixgx9++JE77yxJixbCzTdX5bbbWhAeHhZiDYsILVtCYqKpQXXsCE2bhloji8VSCFgDFSLS0tIoVaoUJUqUID09nZMnG5CcHMXmzfDTTye47TY7BC0DEejUyczGW9uOfrBYLhSsgQoRYWFhPP744yQmJvL5558zadKZjLSOHZXw8Ky35ocfDlKqVGkaN65U2KoWHS66KPu+9HQT0++KK8BOImixnFcE3AclIiNFxAZOy2cqVqxInz59+PTTgSxcWIc+fVIZObJBNrnx47/lqqt20qnT/3j33W/tdOMuVq+G9evhjTfMHFMWi+W8QVQDa0oSkXTgBDADmKqquwpQr2JDmzZtdNOmTQV6jGPH/uCyy77j3DkTe7dJk9nExBwhLi6OHj16UL9+/QI9fpHl+HGYPDlzuo4uXUxToMViKfKIyGZVbeNPJhgvvo+AKOA+IF5ElotIHxGRvChpyZnffz/NRRelI6JERJwiKmoPp0+f5qOPPuKee+7hvvvu4+mnN/Lrr2dyLux8IjoabrsNypaFxo1NJAqLxXLeEHANCkBE6gCjgTuAaphgsvuBqcBbqno0V0qIhAOdgGuBvwB1gcrAUWA9MFlV1/rJP9jR61IgDPgRmA68rqo+Z8PLbT53CqMG5WLHjiMsWbKRXbsWcuTIkYz9Z85UZ/v2v1KihBAbm8KSJVdQosQF9N1w8iSULAmRdnYXi6W4EEgNKigD5VZwOHALcBdwBcZQnQM+AKao6vogy+sGfOZsHgI2A2eA5sAlzv6nVfVxL3n/4+iRDKwCUoCuQHlgEdBfVbOFH8htPk8K00C5UFW2bdvGihUr+Oqrr9i9uwuHD7cDoHXrk3zySbdC1afI8sknULEidOhgPAEtFkuRocAMlMdBWgFjgEFkTlC4BfgPMFtVzwZQRheMsXhVVT/3SBsAzMbUcLqo6hq3tH4Yo3gI6OTqFxOR6sAaoBnwN1V91aPMXOXzRigMlDunTp1i6tQtzJ9/hn37onnppUiGDLkki8zkyd8SFlaBoUMbEBl5gbyof/gBPvjA/G7aFG6+2dSyLBZLkaBQDJRzoBjgYeBut90KHAHGqepbeSz/v8AI4G1VHeG2fxMQCwxV1Xc88lwNrMUYoRj3Jrvc5vNGqA2UC1Xlm2/2Eht7ESVLZg7wPXcuhUsuWcMff1SkbNkwxow5xogR7ahYsWIItS1gVOGdd0zUCYBLLoF+/WwtymIpQuS3k4S3A3QTkYXAHkwtKhl4G1ObWobpp5omIvfk5TjAd846Y5SmiNTGGJlzwPueGVR1HXAAqAF0yGu+oo6I0L59/SzGCeD997fwxx/GGCUlJbNq1TSGDRvGc889x9atW8mPD5QihwgMGQLt2xtHij59rHGyWIohQbd5iEgFYDjwf0BjQIB9wOvAm6p63BGdJyLtMX1L9wCv5UHPxs76oNu+y531dlVN8pFvIxDjyH6Vx3zFkjZtYujXbxsrVgilSv1KWNhZ0tJMHMAvv/ySKlUaEhZ2B3fd1YDLLy93/rzHS5aEa64xruelSmVNUzUBZ8uWDY1uFoslIAI2UCLSGtNPNBAogzFMa4FJwGJvTWGq+rWIfAz0y62CIlIDGOZsLnBLcg3++dVPdldUUfeBQrnNVyxp0qQWU6bUIjn5LGvXrmf16mbEx8dnpG/bVo39+5P5+ON4unUrwbvvxoZQ2wLA0zgBbNwIa9aYSRFtXD+LpcgSTA3K1dHyJ/BfYJKq/hBAvjNBHicDESkJzAIqAKtUdalbcjm38n3hCg9ePh/yFWtKly5Fr15x9OoVx759+/jkk09YtWo1R4+2BiA9XWnWLDXEWhYChw/DihWQmgpz58Itt0Dz5qHWymKxeCGYPqi9wENAbVW9M0DjBDAKCA9WMYepGNfv/cCtHmmuxqhgO1Fymy+zAJG/isgmEdl09Giuhn6FlIsuuog777yTmTNnMmFCeZo1+40yZf5k9OiWWeRUlTFjvmbWrCMkJ4dI2fwmJSWzaa9GDbj44tDqY7FYfBKMgWqoqi+qamIwB1BD0NOgisirGM+9Q0BXVT3kIXLKWZfDN660U277cpsvA1WdpqptVLVN1apV/RRTtClTpjTDh/+FtWtvYsOGS6hUKetA16+//pkFC+CBB/bSuvX3rFixntTUYl7Lql0b/u//4NJL4aabrOu5xVKECcZAfSoi9+ckJCL3iciKPOiEiLyIcaw4ijFO3uL+7XXWdf0UVcdDNi/5zmtq1KiSbd/kybtQNRXOlJSfmDTpGe644w5mz55NQkJCYauYf5QpY4xTtWrZ07791sT4s1gsISeYz8duwG8ByDXHNMvlChGZCNwPHAO6q+oOH6Iu1/MWIlLGh0deWw/ZvOS74Bg7ti4lSsTzv/+VpVo10wV54sQJ5s6dy/z586lTpy81a3Zl1Kg6VKt2Hrj/7dsHS5dCeDj07AmtW1v3dIslhBTElO8RQEBx7DwRkecw/VwnMMbpe1+yqrof+NY5Xn8vZV2NGTd1CBPPL0/5LkTat2/OO+/0Y/Pmdtx11+VER0dnpKWnp/Ppp5G89toh2rXbxvTpe0OnaH6Qng6LFxsX9HPnYIev7yKLxVJY5KuBciKbxwJBt/+IyNOYaBSJGOMUSO3lWWf9bxFp5FZWNWCKs/mcFxf43Oa7IKlcOZohQwbx1ltv8cgjj9CyZUuSkqI5edJ44ScnJxEb68WduzhRooSJNlGlCpQubVzQbe3JYgkpfkMdefQldQN+B3x9WpbEDKitBXygqgMCVkLkemCxs7kJ2O5D9EdVfc4j7xRMRPJkYCWZQV+jgA+Bm30Ei81VPk+KSqijwmbPnn28/vomli5Np0aNiqxZkzVA7ZEjibz44glGjqxL48YFUVEvIFJS4MgRiInJnpacbIyXxWLJM3mOxedMUuhCyXTR9sdW4AZV9TcQ1vM4wzDTXOTEOlWN85J/MCbUUksyp814m8Cm2wg6nzsXqoFy8eeff3L8+Elq166RZf+4cat5881ylCoVQadOYbz+ej3Kly/Gw8q2b4dly+C66+y4KYslH8gPA+VydhBgBfAp8IIP8XPAAVX9JRe6FlsudAPljdTUVC69dCXHjpk+q9q1V1Gv3iY6depE7969adiwYYg1DJLTp2HKFBMeCUxsv9jzLOKGxVLIBGKg/Hrxqeoqt8K+xNRgVvnJYrGQkpLC0KHJzJu3k0OH6lK16hbOnTvHypUrWblyJc2aNaN69duIi2tG69Yli35Xzx9/ZI6XqlDBREe3WCwFTr5Mt3EhY2tQvjl37hyrVn3Jp58u5ueff87Yn5paiu+//xthYWVp2rQcs2bVpXr1iBBqGgDJySZEUvPm0KhRzvIWi8UvhTYf1IWMNVA5o6rs3LmTpUuX8uWXX3LgwOX8+msvACpXPs22bXGEhRUjRwpPvvkGwsLsuCmLJQjy1MQnIo86P19X1RNu2wGhqs8EI285fxERmjRpQpMmTRgxYgRz5qzj3Xe3s29fY/r1K53NOG3alMDZsxW54oqSlCjqduvYsczgs9u2Qf/+dhoPiyWf8FmDcjz4FGimqjvdtnMsExOCLyxHyfMAW4PKHampqaxZs4HY2MuIjs4aFrFz54/ZtasmC1RwkwAAIABJREFUjRpF8fjjVenSpUKItAyARYvge2c8ea1aMHIkRd+qWiyhJ69OEs9gDFKCx7bFkmdKlixJ9+4ds+3/7ru9xMdHo5pKfPxxnn32BTZtakCfPn1o2rQpUtSa0Hr3hvLlYcMGuP56a5wslnzEp4FS1XH+ti2WgiAx8RiNG2/nl18aU7r0MUqXPsDnnx/g888/p2HDhvTu3YeIiE5ceWV40QhEHh4O3bpBhw5QzkuA/K1bzZQedoCvxRI01kkij9gmvvwnLS2Nzz//mgULVrN379dZ0hITG/LLL7dTv34F7ryzKrfdFhUiLQPg119h+nRjuHr1ghYtrBOFxeIQSBOfbY+wFDnCwsKIi7uSSZPG8eqrr9K9e3ciIowb+pEjbUlNTWXXrmMsW7YxxJr6IS0NPvrI/D592kSisMbJYgmKgA2UiIwWkXMicp0fmd6OzMj8Uc9yodOgQQPuuecepk+fzu23D6VmzZNERJxCRLnvvuyz4e7Zo5w7FwJFPSlRAjp3Nv1TERFwzTWh1shiKXYE3MQnIp9hYtbV8hWnTkTCgAPAFlXtlW9aFmFsE1/hkpaWxpdffs3q1QeZMKFflrQTJ07Rtu1WqlatxZAhVRgxojxlyoRIURfJyXDoENSrl3W/KuzfDxddFBK1LJZQk+dQRx40Bbb5C6Kqqmkisg0zaaHFku+EhYXRqdOVdOqUPW3y5M2cOhXJqVNH+fe/95KY+DV9+/amRYsWofP+K106u3EC45r+4YfQrJmZHLFixUJXzWIp6gRjoKoC6wKQOwJclTt1LJbc8+OPP1GqVH3Onq1I1aqb+frrL/n66y+pV68effr0oXXrqylXrlToHeqSk+Gzz8zv+HgzB1XXXE9CbbGctwTjJPEHUCcAuRjgdO7UsVhyz7vvjmLu3CiuueZbqlbNbHbdu3cvkyZN4rrrZnL11b/w0ksnOXIkhIqqQuPG5ndUFFxlv+csFm8E0we1HOgMNFfVn33INATigf+pajdvMucbtg+qaPLrr7/y0UcfsWbNGs6ePUtaWjjff/83UlNLIwKTJ1fl5pvrh1bJffvMBIme04+kpJgI6lWqhEYvi6UQyG838xlAOPChiDT2crBGmJlowxxZiyVk1K1blzFjxjBjxgxGjBhB+fKNKFnSzOdUocKf9O2b3TkhKamQlbzoouzGCeCLL8z8UytWmOZAi+UCJZg+qHnArcC1wHYR+QIzAy1AE0y/U0lguarOylctLZZcUq5cOfr27cv111/Pxo2bePPNTTRo0ISSJbOGily8eBtPPVWWfv2iGTy4ole/hkIhMRG+/BLS0+Grr6BaNbjsshApY7GElqAiSYhIBPAyMIrsxi0VeBO4X1XP5puGRRzbxFf8UNVsXn09e37Eli3VAGjVKpF//asSbdq0KXzvv4QEWLLENP/VqgWjRtkBvpbzkvx2M0dVzwFjRORpoCtQ10n6FVilqodypanFUoh4Gp3ffjvA7t0pGdspKYt46qnfqFGjBtdddx3dunWjTJlyhBVGfP4qVWD4cBN5omLF7Mbp1CnTRxUdXQjKWCyhxcbiyyO2BlX8UVW++24L06d/zRdfJBMTsyqLXQgPj+D48ce54oo63H57NE2bhrBSs3ChMV7t2xvvv5CPRLZYcke+16AslvMREaF168tp3fpyDh8+zMcfR/HZZ59x+rQZLXHsWE1+/PEs8fG7Wbw4kk2bWhAZGQIL9dtvJjo6mP6pJk2gbl3/eSyWYkzQwWJFpImI/EdEtotIorNsF5HJItK0IJS0WAqL6tWrc8cddzBjxgzuuece6tevz8mTDTLSmzc/nM04FVojRMmSUMcZitismTVOlvOeYJ0khgGvAxGYmXM9OQfcqaoz80W7YoBt4ju/UVXi4+N5550vWLZMeO21rsTFNcgi8/jj33P0aE2GDatK27ZSsHMWqsKOHVCzZvZ+qIMHTRT12rULUAGLJX8IpIkvmIG6bYGvMLWuRcDbwM8YQ1UfuAO4CUgD/qKqRXguhPzDGqgLhz/++IMKFbJOP3/q1BkuvfRr/vyzHJGRZRg9+jRjx15GmcLuG1KFt982AWibN4cePWx8P0uRJr8H6j7kyN+qqjer6jJV/UlVf1TVT1S1P2acVEngwdyrbbEUTTyNE8CsWd+QlFQWgHPnjrFu3URuv/12Xn/9dfbt21d4yv34ozFOAD/9VIjtjhZLwRGMk0RHYLOqvudLQFXfE5G/AV5iTVss5x+9ezciMfEzFi5MIj39JCVKpJKcnMqyZctYtmwZDRp04NChYQwdWoMuXcIKLlBtjRpwySXwww/Qrh1UqlRAB7JYCo9gmvjOAu//f3t3Hl5VdS5+/PuSACEEwjzPMggSpsgkg0EUwREpXBR7RS3Xil5rbdV67+/X6XpbO1efOrS0OFScQalVUBmEIoMQ5kkIyBBAhpAESAKEJO/9Y+1AcjKQ5OyTnCTv53nOs3P2WmfttRfJedlrr72Wqn77MvnmAFNUtb4P9Qt71sVnADIzM1m6dCkLFizg0KFDF/cfOjSGI0dGUq9eXW64oTEvv1zM1EZ+OnzYBafo6ML7t2+H06dh8GA32MKYKub3MPM0oCx/Xd28vMbUGg0bNuTWW2/llltuYevWrXz88cesXr2Gkyf7ApCdfYHBg0+HviLt2xfdl5PjlvdIT4fVq+Guu9wgC2PCXHkC1CrgdhG5XVX/UVwGEbkVGIYbRGFMrSMi9OvXj379+pGSksL8+Ut4440dnDjRlfvuu6lQXlVlxoyvGD68CxMnNgjd5OWbN7vgBG6Un81CYaqJ8nTxjcQtWJgLzAFeA/YBirtqugc3SCICuFZVV4aiwuHGuvjM5eTk5HDkyBE6BSzv/vHHW7j//nPUqVOHli2b8NpreQwY0MP/+f9yc2H9eli+3M0+MWxY0fQ6dWzOP1OpfB1m7hX4CPAHih/9J7jg9ZiqPl+eilZnFqBMRU2aNJ+VK9sB0KzZTrp3n0vXrl2ZMGECCQkJ/g9Vz852gSjwHtTnn8OePXDdddCtmwUqUyl8D1BeoQOB/JF67XCB6TDu6uo5Vd1YsepWTxagTEV9+ukSZs/eysaNbWnbdiWxsfsupkVFRdG27beJjh7FtGnNiIsLUdzIyoLnnoPz3gIEd999abVfY0IoJHPxeQFoeoVrZYwB4MYbxzJu3HXs2bOHhQuPsXz5YbKzswE4d+4cH30EmZl7eO+9GH7602bcc08b/yuRnOy6+ABatix+AUVjqojNZh4ku4Iyfskfqr5w4UJ27z7H1q0PAhARkcuaNVfSqVOInm06fRpWrHDde717F05LT3fpnYquQGxMMELSxWcKswBl/KaqbN++nTfeWMnChUrXrl344IPxhfIkJX3DU09dYNq0towbV5dGjUJUmfnzYdMmF7zGjXMPBBvjg6C6+ERkVhDHVlX9bhCfN6bWEhH69u3LM8/05amnTnHu3LkieZ59dgtffNGUNWtO0LdvJH/5Syxd/F6n/uRJN0Qd4Ouv3SALYypRafegZgRRrgIWoIwJUmxsbJE5ALOzs1m8OAeAnJxc0tP/wSOPbKRXr16MHz+ekSNHUr9+VPCDKiIjoX9/twZVly5Fu/nye19s1J8JkRK7+ETkO8EUrKqzg/l8dWFdfKaynTt3jnnzFvD66wfZs6cDPXu+RUTEpaub6OhosrMfpVevXkyb1jz4EYCpqW4gRcuWhffv3w+LF8Po0W7knwUqUw52D6oSWIAyVUVV2bJlC59++imrV68mJ8ddVWVnN2Tz5u+jWoeGDaP57LMr6N49BMt/vPYa7POGxo8ZA9de6/8xTI1lS74bU4OJCP3796d///6cOnWKpUuX8umnn7JpU0tU3bP0zZsfo3v3voU+l5fneuciIoI4eHo65C8nUqcO9OsXRGHGFK9CAUpEYoCrgZbAQVX90tdaGWPKJTY2ljvuuIOJEyeyfft23nprDQsW5DB16oAieV94IZH332/JnXe2YOLEhrRuXYEDNmkCjz4Kq1a5yWgDl/fIy3Oj/+LioG7dip2UqfXKO9VRI+D3uHn38n/rXlPV+730mcB/AZNVda3PdQ1L1sVnwlVGRgZ169alfv1LK9+oKoMHf0xycitEhFGjjvDEE22Jj48nIqhLqgBbtsD770PDhq7rb8gQ/8o2NYKvXXwiEg0sAwYCKcAGYFxAts+AF4A7gFoRoIwJVzExMUX2bdr0FceOuftRqkp6+lyefjqdpk2bMnbsWK6//noaNGgf3ITnqvDFF+7nzEwoZpi8MWVRniXff4gLTm8BXVV1fGAGVd0LJAHX+VM9Y4yfevfuyuzZwg03JNKu3RdERbllONLS0pg7dy4PPPCfjBixiTvuOMi8edl44y7KJy8P4uMhNhbq1XOLJAayoGXKoDzLbWwFmgFXqOo5b18e8Gp+F5+37zOgj6p2CEF9w4518Znq6vDhwyxevJglS5aQlubWGD158ir27p0EQPPm2WzbNoI6dSo4fDw3F44dg3btCu8/fx6efdY9VzViBHTsaEPUa6GydPGV5wrqCmBtfnAqRQoQqqXXjDE+ad++PdOnT+eVV17hxz/+McOGDSMnpwl16rjLpjFjtEhwOnw4h8OHy3iAiIiiwQnc2lRnz8KuXfDhh0GehanJyjOK7wJQ/7K5oAOQUbHqGGMqW0REBEOGDGHIkCE8/HA6Cxf+izlzDjJz5uQieWfMWMiePT2Ij4/mRz9qw8CB9cp/wNTUSz9fc41dPZkSlaeLbx0u+HRR1fPevkJdfCLSBDgAbFTVhJDUOMxYF5+piVS1yMq+ycnHGTp0F7m57v+pAwe+xU03dWXs2LH06dOnfCsBnzgBiYlwww1FF1BcuNDduxoyhNDNgmuqmt8P6s4Dfum9flhCnv8FYoD3ylGuMSbMFBds1q/fTePGB0hP7079+ulERu5h0aI9LFq0iNatWzNmzHWcPTuBCROa0r79ZQ7QsiVMmFB0/+nTsG6dG2ixahU88oh75srUSuW5gmoIJAI9gS9wAetZ4HPgbWAKMBbYDgzOv8qq6ewKytQmKSkp/POfK/jkk41kZRVePPvMmY7s3HkvjRo1YtSoaF55pXP5D7BiBSxZ4n7u1Anuv7/0/Kba8n0uPhHpiAtMV+NmLBdvi/fzJuB2VU2uUI2rIQtQpjZSVXbt2sWSJUtYsWIFmZmZ7Nt3CydODARg9Ogs3nsvofwF5+W5wROrVrn7U4ELKB44AEePwoABUL8st8RNuArZZLEicgtwE9ANiACSgYXAPFXNq0Bdqy0LUKa2y87OZu3atcyZs5Ply6NIS+vOrFktuO22HoXyPf30FlTbMHVqS3r2lMuPjVAtOoDijTcgKckFpzvugCuv9PdkTKWx2cwrgQUoYy5JS0tjyZK1TJo0rtAQ9ayss/Tps5KzZxvToEEUDzxwjBkz+tOqVauyF56SAs8/734Wge99r+gcgKbaCHZF3bnAbOATtShmjCmDpk2bMnnyjUX2v/32Js6ebQzAhQvprFz5IqtX59CnTx8SEhIYOXIkdeo0omHDUgpv3Bhuvhm+/BJatCganHJzL01QW68Cw99N2CltwcI83P2lb4DXcMPJkyqxbtWCXUEZc3m7dyfx17+uZtGiXFQz6NTps0LpFy605ODBJxkxogH33NOOUaNKmQFd1U2V1CBgjautW2HePNf9N3IkjBoVgjMxfgl2JomXgDSgHfAU8JWILBeR6d7EscYYUyY9e/bgt7+9hzVr7uK55+KIj4+nTp1LXz/Hj/fh5MnTfPjhMZ5+enXphYkUDU7grqzATaVknT41QoldfKr6sIg8BtwO3A9cD4wCRgJ/EpF3gFdUdVWl1NQYU+1FRUWRkJBAQkIC6enprFixgmXLlrF376Xp02+7rXGRz61YkUqrVk1LHlyh6rr2zp51iynGxxfNs3cvtGlD6f2IJpyU5zmodsB03FpQvbzdCuwGXgZeV9WjoahkOLMuPmOCd+TIEebPX8uHH6bz7rt30rhx1MW03Nxc4uI+ISOjPd26RfPTn0aTkNC++JkrVN0sFYGDL86fh9//3t2nuuoqdy/LhqlXqVAOMx+Ou6qaAjTGBapc3FDzl4GPVDW33AVXQxagjAmtxYu3cffdWQCI5DFw4B/o2rUFo0ePZtSoUbS/7LQVuNkpPv7Y/dyyJTz0kM0BWMX8ns38IlVdrar/AbTFXVUtwz0PdQvwPlDW+Y6NMaZUqalptGu3k4iIbGJj9xIZeZbk5GTeeOMNHnzwQR588EkmTtzF66+n460aUlRsLHTwVgC6+uqiwSklxT0AbMKKb89BicgNwBygJaCq6uP60eHLrqCMCb0LFy7w5ZcbWbx4Ldu2LeP8+UszqR0/Poj9+28GIC4uksWLB5Vc0JEj0KwZREUV3v/++26Z+vbt4cYb3TRLJqT8niy2uAPEAFOBe4FrcNMdgZtZwhhjfFG3bl1GjhzCyJFDOHduBuvWrWPFihUkJiaSmnrVxXxDh2YX+ezBg9k0bVrPTYxe3PpUWVmwY4f7+fBhqFvKEHdTqSoUoERkDHAfMAlogAtM54EPcfegPiv508YYU3FRUVGMGjWKUaNGkZmZydKlibzzzm7WrYvivvuuK5RXVZky5VPS0rpx9dV1eeKJVgwcGDA7+oULbs6/HTugdWto25aAQtzVVe/e9gBwJSvPKL6uuPtN04FOXLpa2gS8AsxR1ZJ6gGss6+IzJjxkZWURHV34Ec2dOw8yZsxh8u849Ov3IvHxbRgxYgTDhw+nRYsWBQuAM2dckCpozx6YM+fSGlXXXx/qU6kVgu7i8x7InYLrwhuFC0qCe4D3TWC2qm7ypbbGGBOEwOAEsHHjARo2PElGRjuio48SFXWS7dtPsn37dmbNmkWPHldx/Pg93H57WyZMaEpM62LmINiwwW2zs90wdVNpSpuLbzYuODXEBaU8YDGuC+8DVS3a2WuMMWFk2rRR3HzzKRYsSGTZsj18841QsNdo7doLJCVlsGhREt26RbJ6dTEDLLp0cc9WnTgBg4pJ37YNoqOha1cbuu6z0q6g7vO2+4BXcbNGHAp5jYwxxkexsbHcdddY7rprLOnp97NmzRpWrlzJli1bSE3tczFfXFxmkc/u25dJ4ysG03zwYDcMvWXLwhny8uCTTyAjw638e889bpSg8UVpAeoN4GVV/byyKmOMMaHUpEkTxo8fz/jx4zl9+jSffLKBefO+Zv36Btx5Z/8i+b/73SXs2tWZq66qw4MPxnDrrVp4BoukJBecwHX/2fL0vrL1oIJkgySMqf4yMjJo2LBhoeCTmppOv36buHDB3Zfq3ftVunTJYujQoQwfPpy+ffsSeeoUrF3rRvnFxxcdQHH8uJvEduBA94yVdQFeFPLnoIwxpiaIiYkpsm/btmQaNUolLa0BkZGZxMQkc/IkLFiwgAULFhAd3ZCUlMcYOrQ7U781mn59IigSfjZsgPXr3WvYMBg/vlLOp6awAGWMMcUYPTqOzZt7sXLlVj77LJkDBxpx5syZi+nHjzdhxw5h27Y03n47hd27hxX+Qs3NdVdW+Xr0KHqQ4pa1NxdZgDLGmBLUq1ePMWPiGTMmntzcb7Njxw7WrFnD6tWrOXSo58V8/fufJzKycKD5ct0RTjS6nrGdk2mQcsiN8itIFV55BZo3h/79oXNnC1YBLEAZY0wZREREEBcXR1xcHDNmzGDXrn28++4uFi/OZNKkXkXy/+GPm1i2rDUNGnTmpgkxPLRjB7179yYiwpum9NgxOHjQvbZtg8cftyVAAtggiSDZIAljjGrh0X0XLlygd+8lnDnjhpx37/4ezZp9RUxMDPHx8QwZMoReR7NotX2Nu2jq1w8mTSpc6Llzrpuwhi6waIMkjDGmEgQunnjq1BkGDz7L+vXHOXOmGbGxewE3WnD58uUsX76c7dseoFv9odzWeQ//Nr43bQILXb8eliyBK66Aa64p2kVYC1iAMsYYn7Vo0Yy33rqD7Oxs1qzZzrZt17N27VpOnjwJwPnzsWRmtWZrFuw43ZR/79WlaCFbtrgHgZOS3CrAtZAFKGOMCZF69eoxevRARo8eyMyZM9m3bx9r167lo48OERmZRU5OND16nKVp0waFPrfs042s/N03DGmTwpVxzejYu3fRwr/80j1bVYOfr7IAZYwxlUBE6NatG926dePOOyElJZX583fSpEnLInnnfXSUdzNuIXb3aa44vJFeP/oR8fHxXH311fTs2ZOIrCw3xZKqGwU4cyZE1ryv85p3RsYYUw20aNGMGTNGFNmvqqxa5ebiPlWnMSdbZbF371727t3Lu+++S0xMDIPO9yQ+5Th9+jShdZfGSGBwqiHPV1mAMsaYMPPOO/HMnbuHpUsziIj4ulBaRkYGH25ryba0GHpu2Efn6Ci+HVjAli2QmAh9+7r7V8XMlFEd2DDzINkwc2NMKGVlZbF582YSExNZv349x4+fZuPGx8nLiyRCc1i8qAt9+l9ayl5V+fiupxkQk0H79tHIjePcKMAwY8PMjTGmmouOjmb48OEMHz4cVSUp6QBvv32AZcvSOH26XqHgBLB7axLbPjrETlXq108lKmY9A+vWJS4ujqioKJdp3z5o0wYaNCjmiOGj1l9Bicg0YCbQD4gAvsItYf+SquZd7vN2BWWMqSq5ubmXZqbwPPPMUv7yx0h65Oyjfd19nByyHoDIyEh69+7NVT36M2hJIj26NyKyZ3eYPNktZ1/J7ArqMkTkBeAh4BywBLgAjAWeB8aKyBRVtTWejTFhKTA4AXTr1pReA4+zc2cXTjRLpaO3Pycnh61bt3JwwVGOJEUQGZlGq7gz3D1tWuVWuhxqbYASkW/hgtNRYLSqJnn7WwOfA3cA/wk8V2WVNMaYcpo6dSBTp8L589ls3BjLjh2xbNy4kf379wOQntmFoxHnaJNzguMtOhf5/NYPVtA2eTctRsfDlVdCfrdgFai1XXwikgjEA9NV9e8BadcCy3DBq31pXX3WxWeMqQ5SU1PZvHkzL7+cxZo10Uh6Ls+92IoJU/oVyvffff6LZgdTiInJIebGrvR97Db69OlDPZ+7AcvSxVcrA5SIdACSgWygiaqeLSbPIaA9MEJVV5VUlgUoY0x1o6okJh6iX7+21K9/qSPtdFo6L3R5ksgcFxfWDcjibLPTF+9f9evXj07ahkE3DCCqRXDL29s9qJIN9LbbiwtOnnW4ADUQKDFAGWNMdSMiDB7cscj+Q9+cYWn3CUTvP0b7vCNkNdmAIBfvX23dvI0hX7Rntc7hQrvmzPjkh7To0ipk9aytASp/WuADpeQ5GJDXGGNqtD59OrJofUdOnszk8893kZLSji1btpCcnAxAw9RGROXkkIfAiTM069A8pPWprQEq/7HqzFLyZHjbRoEJIvIA8ABAp06d/K2ZMcZUsebNGzJ58iBgEODuX23ZsoWVb24ldd9hmmakktOjI3Uii44i9FNtDVD5k1RV6Aacqs4CZoG7B+VXpYwxJhw1a9aMhIQEEhISYBZsW7OPC+ezQ37c2hqgznjb0iaoyk87U0oeY4ypdfoOq5w7H3Uq5SjhZ7+3LfoQwCX5dxD3l5LHGGNMiNTWALXR214lIiVNRjU4IK8xxphKVCsDlKomAxuAesCUwHTvQd0OuAd1V1du7YwxxkAtDVCeZ7ztr0Wke/5OEWkFvOi9/VVZJow1xhjjv9o6SAJVnSsiL+FmMt8qIou5NFlsY2A+btJYY4wxVaDWBigAVX1IRL4AHgau5dJyGy9TxuU2jDHGhEatDlAAqvom8GZV18MYY0xhtXKyWD+JyAlKnzKpNC2AFB+rUxtYm5WPtVf5WHuVTzDt1VlVW5aWwQJUFRKRxMvN5msKszYrH2uv8rH2Kp9Qt1dtHsVnjDEmjFmAMsYYE5YsQFWtWVVdgWrI2qx8rL3Kx9qrfELaXnYPyhhjTFiyKyhjjDFhyQKUMcaYsGQByiciMk1EVojIKRHJEJFEEXlYRMrcxiJSV0TGisjvRWSNiHwjItkiclhE5opIQghPodL50WallP1LEVHv9bgf9a1qfreXiDQQkSdFZJ2IpItIlojsE5H3RGSE3/WvbH62l4h0EJE/icguETkrIudEJElE/iwi3UJR/8oiIr1E5FERmSMiX4lInvd3MznIcoNvf1W1V5Av4AXc6rxngY+AD4DT3r73gYgylnO99xkFvvHKegfYWmD//1T1+YZTm5VQ9mAgB8jzynu8qs833NoL6AokeZ8/BvwDeBdYC2QD/7+qzzlc2gsYCKR5n03GzdM5Hzjk7TsDXFPV5xxEWz1b4Pul4GtyVbd/lTdOdX8B3yoQUHoU2N8a2OGlPVrGsq4D5gKjikmb6n3pKjCmqs87XNqsmLLrA9uBw94fRbUPUH63F9AQ2JP/Hx6gbkB6c6BnVZ93GLXXKu8zswq2FVAXmO2lba7q8w6ivWYAvwH+DbgCWBZMgPL1O7GqG6e6v4BEr8HvKSbt2gL/UHV8ONbfvPJmV/V5h2ubAb/2Pn8r8GoNCVC+thduqRkFXqvqcwv39gKiuHRF0aaY9HYF0qOr+tx9ar9gA5Rv7W/3oIIgIh2AeFyXyHuB6aq6HPc/+TbAMB8Omb+6bwcfyqoSoWwzERkK/BB4U1X/GXxtq57f7SUi9YD/8N7+yr+ahocQ/H7l4nouAKSY9PzndDJx3Vm1mt/tbwEqOAO97XZVLemXc11A3mD08Lbf+FBWVQlJm4lIFPAakAo8WvHqhR2/2yse14WXrKo7ReQab0DJX0Tk5yIyPNgKVzFf20tVLwBLvLc/F5G6+Wnez//rvZ2t3iVCLedr+9f65TaC1NXbljab+cGAvBUiIm2Ae72384Ipq4qFqs1+AfQC7lTVmjQbtd/tFedtk0TkVWB6QPpPRGQe8O+lfMGEs1D8fj0EfIK78pwgIone/sE4nrOfAAAKXklEQVRAU+A54Ily1rOm8rX9LUAFJ8bbZpaSJ8PbNqroQUQkEpgDxAJLqnn3le9tJiLXAN8H5qvqO0HULRz53V7NvO1o3AKdvwP+DJz09r2Iu8l9Gri/vJUNA77/fqnq197v2N+BCRTuYk8E/uVdaRmf29+6+IKT3ycd6kv7P+OWok8Gvh3iY4War20mIg2AV3BfqA/5UWaY8ft3LP9vPhLXLfWEqu5V1XRV/RCY6B1rejV9vsf3v0kvOG0DugO349ZAaolrq6bAPBH5iV/Hq+Z8bX8LUME5421jSsmTn3amlDwlEpHngO8AR4Gxqnq0IuWEEb/b7JdAT+AHqlqd782VxO/2Kpjnr4GJqpoIrMd9NySUobxw42t7iUgT3DNPjYDxqvqhqp5U1RRV/QcwHjc44sci0qO0smoJX9vfAlRw9nvbzqXk6RiQt8xE5PfA94ATuOCUVN4ywtB+b+tXm92BeyB3uogsK/jCfXkAzPT2/a0C9a1q+72tX+1VMM++EvLk729ThvLCzX5v61d73Yy7Wlqjql8HJqrqHuBL3BVpQlkrWYPt97a+tL/dgwpO/rDvq0SkQQk3lQcH5C0TEfkN8APcvYEbVHVHxasZVkLRZnVwz1eUpJv3alLG8sKJ3+21ocDPzXH/+QnUwttmFJMW7vxur07e9lQpedK9bbNS8tQWvra/XUEFQVWTcX/w9YApgekici3uhupRYHVZyxWRX+FGBaXhgtNmXyocBvxuM1XtoqpS3As37BzgCW/fAP/OpHKEoL0O4/7HD+6+ZmB5TYFB3tvEwPRwF4K/ySPeNr7gEPMC5dXFDd2Hkq9Iaw3f27+qn1qu7i9gMpeejO5eYH8r3JQ7Rab1wD3J/xXwTDHlPe19Jg2Ir+rzqw5tVspxXqVmzCTh9+/YrVyag29Agf1RwNteWiLeenHV7eVne3mfyfQ+8zxQv0BafeAlLy0ViK3qc/ep/ZZxmZkkLvP7Ve72L/E4Vd0YNeGFG5qruJul/8RNhnjK2/cBARMjFvjifDVg/21cmjZlnZevuNdTVX3O4dJmlzlGjQhQoWgv4Lde+nngX14Zh719hygwh1p1fPnZXrhnxfLnwTwMfOiVecTbdw6YWNXnHERbDQLWFHjlT+q6u+D+cv5+lav9S3rZPSgfqOpDIvIF8DDuXkgE7n8XLwMvqWpeGYsq2Id9tfcqznKq+TQ1PrZZreB3e6nqEyKyCngE90R/NO4Byj8Av1LV4u5NVRt+tpeqviYiW3HP2o0CxnlJh3GTxf5Bq/c94sbA0GL2V3hUol/tb0u+G2OMCUs2SMIYY0xYsgBljDEmLFmAMsYYE5YsQBljjAlLFqCMMcaEJQtQxhhjwpIFKGOMMWHJApQxPhCRjiLyhogcEZEcEVERebaYfI95afdUQp3qiMjDIpIoIhkickpEVojIXRUoK8Grd8HX5IA8P/P2/8y3kyi5Ps8G1ifUxzSVz2aSMCZIIiLAPNwszTuAz4ELwNpisk/CTZvzUYjrFIGbXuY23NQ1n+HmjhsLvCkiw1X1exUo+hhu+XOowBIyPlrLpcmAA5etNzWEBShjgtcFF5wOAv1VNae4TCLSGrgGWKqqqSGu0/dxwWkHcJ2qHvPq0ANYATwiIkvULbpXHl+p6r2+1rQCVPVN4E0AEbEAVUNZF58xwctfgG1fScHJMxH3N/dBKCvjXT096b2dmR+cANQtevkj7+3/C2U9jAmWBShTqxS8XyEi93r3ZzJF5KiIzBaRll5alIj8XER2i8g5ETkoIr8ouCaQiHTxylru7br2MvdEJuFmc55foIyL921EpIOIvCoi34hIlohsKHifR0RGiMgCETnppX8uIoOLOc5w3NIGh1T1X8Wkv4frghwsIu3L1YAVJCLXikiqiGQHXvGISCsReVFEDnltvcdr6wbeSsgqIgmVUU8TXqyLz9RKIvJrXDfYctw9lWuA+4GrRWQE8CnQ20vfg5uR+b9xy38/4BWTgbsP0ga4kcL3ZwKPFwuMwS1bcKSYLJ2B9V6Zy3GLuo0A3hWRabhlMd4BNgGLgP64JcY/F5FBqrq7QFkDve264uqiqlkish0Y4L0OF5fPLyJyJ255hmzgZlVdVCCtHbAS1016HLc0Q33ge9gS6rWeBShTW03HLda3Ey6uJLsa6Odt04GuqnrKSx+A+8KfISK/UNUDqpoC3Ov97/5GSr8/cytQl5K79+4FngN+qKq53jFn4tbV+S3QELhbVd/z0urg7sFMxXXZfadAWV297YFSzv8gLjh1LSVP0ETkCeDXuMXrbtKiq0O/iAtOC4Epqprpfa4NsAToE8r6mfBmXXymtvpJfnACUNU04M/e2z7AA/nByUvfBCwABHc1VV6TvO37JaQfAJ7MD06eWcBJ3NXUJ/nByatPHu6LH9yVWUEx3jazlPpkeNtGl6l3hYhIhIi8APwGN1BjWGBwEpHOuIEcOcBD+cEJQFWPAo+Hom6m+rAAZWqr4rri9njbAwWDVwFJ3rZdeQ4kItG4K6ytqrq3hGxLVTW74A4vWO0vpb4l1UfyiyhPPX0UjQvED+GG3I9Q1eRi8o3G1XW1qu4PTFTVhUBaCOtpwpx18Zna6lAx+zJKSSuYHlXOY43n0pd2eepTap1UNcM9gkX9gKQz3jaGkuWnnSklT0U9hvtu2QSMDwy8BeQP0LhcV2RTH+tmqhG7gjK10mWWnPZ7ufnLde+V5ZjlqdN+b9u5lDz5Q+P3l5Knoj7GdU0OAH5QhvylXen5/W9hqhELUMaEkDcs/Wbga1XdUkmH3eBtixuCnt/l2Nd7uzEEx9+Euy92DHhGRP6nhHz5oxlLC6SlpZkazgKUMaF1HdCE0q+e/LYaN2S7g4iMLiZ9Cm5E4TpVDckQc1XdirvHdAj4sYj8tphsK3BXT9d4AyYKEZEbgWahqJ+pHixAGRNa+d17IZ09oiBvcEV+QHhJRFrlp3lTHf3Ke/uLENdjNy5I7QMeF5HnvXkL89P34boDI4EXvCu7/Hq2Bn4XyvqZ8GcBypgQ8Z5Vuh33DNDqSj78H3EPvfYBkkTkfRH5J7AF92DxnyowD1+5eUFoFLALeBj4m9cu+WbiBkLcDHwtIu+KyD9wIxQzgDVevpIGWpgazAKUMaEzAmgNzFfVSh3y7V1FTQQewQ2fvxH3/NZ63AO/FZnJvKJ1Oewdeytuto45IhLppR0ChgB/wQ2IuB2IA17Czbze0ismpbLqa8KHVPLfjTG1hoj8ETed0riC0/tUR95sGZ8Dy1U1oZKO2QUXXDOBpiWNvMyf91BVpbh0U33Zc1DGhM5O4Ge4L/aa4koRedX7+XlVTQymMO+eVHxgOSLSEXgdiAD+HhicvPkJxwVzbBP+7ArKGHNZBa6gCpqiqnODLDcSN7P6QeAr3MwRHYFBuAeitwEjC0475X3uWeDRgvvsCqrmsQBljKky3hXU08D1QDfckPzzwG7c0PznVDWj5BJMTWYByhhjTFiyUXzGGGPCkgUoY4wxYckClDHGmLBkAcoYY0xYsgBljDEmLP0f87npiYHvFTEAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#developing velocity and mass variables for euler method\n",
"final_mass_euler2 = num_sol_euler2[:,2]\n",
"initial_mass_euler2 = m0\n",
"current_mass_euler2 = final_mass_euler2/initial_mass_euler2\n",
"current_velocity_euler2 = num_sol_euler2[:,1]\n",
"\n",
"#developing velocity and mass variables for heun method\n",
"final_mass_heun2 = num_sol_heun2[:,2]\n",
"initial_mass_heun2 = m0\n",
"current_mass_heun2 = final_mass_heun2/initial_mass_heun2\n",
"current_velocity_heun2 = num_sol_heun2[:,1]\n",
"\n",
"#plotting to demonstrate convergence\n",
"plt.plot(current_mass_euler2, current_velocity_euler2, color='k', linestyle='--', alpha=0.7, label=\"Euler Solution\")\n",
"plt.plot(current_mass_heun2, current_velocity_heun2, color='b', linestyle='dotted', alpha=0.7, label=\"Heun Solution\")\n",
"plt.plot(m_T/m0, v_T,linestyle= 'dotted', linewidth = 3, alpha = 0.5,color='r', label=\"Tsiokovsky Solution\")\n",
"plt.title(\"Rocket Mass vs. Velocity\")\n",
"plt.xlabel(\"mf/m0 [kg]\")\n",
"plt.ylabel(\"Velocity [m/s]\")\n",
"plt.legend(loc='best',fontsize=15);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As demonstrated above, the rocket solution involving drag and gravidt **DOES NOT** converge to the Tsiokovsky equation. The Tsiokovsky equation assumes ideal conditions and does not account for gravity and drag compared to the rocket model. For the Heun and Runge-Kutta solutions, it is evident that these solutuons approach \"terminal velocity\" as the mass of the system decreases, which deviates from the Tsiokovsky equation."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Answers to problem 2**"
]
},
{
"cell_type": "code",
"execution_count": 626,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Using the simple rocket model, the rocket reaches a height of 597.941m when the mass reaches 0.05kg\n",
"Using the rocket model, the rocket reaches a height of 425.440m when the mass reaches 0.05kg\n"
]
}
],
"source": [
"#grabbing the last number in the height array to find the final height\n",
"final_height_simplerocket = num_sol_heun[-1,0]\n",
"final_height_rocket = num_sol_heun2[-1,0]\n",
"\n",
"print(\"Using the simple rocket model, the rocket reaches a height of %.3fm when the mass reaches 0.05kg\" %final_height_simplerocket)\n",
"print(\"Using the rocket model, the rocket reaches a height of %.3fm when the mass reaches 0.05kg\" %final_height_rocket)"
]
},
{
"cell_type": "code",
"execution_count": 616,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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xHnbGNPcGJNojIk3xjQyxryclUKT03iFjcOHD1OpUqVM7p4rfnwNk1WrVo2hQ4cyZswYKleuTOnSpXn44YcxxvDRRx9Rp04dEhIS6Nq1K4cOHXLHcw3TLF26lJtvvpn4+HguuugiXn311Sxl3bFjB7169aJcuXKULFmSG264gY0bN2aSc9asWfTt25cyZcrQqVMnAFJTU0lOTuaiiy6iePHi1KlTh7fffjtTHl988QVt2rShVKlSlC5dmtatW/Pjj/7n2j/33HOUKFEiQ0/al19+SatWrShZsiTly5fnrrvu4tgxa8lh2rRp3HfffRcv1e8AACAASURBVO4yFhFat26d5bUHyy+//ELHjh1JSEggISGBnj17snv3bre/r2GyQ4cO0atXL+Lj47ngggsYO3YsQ4cOpVq1apnS37p1K9dddx3x8fHUqlWL+fPnu/1at27NmjVrmD59uvvapk2bFrJrU0LL6dOneeCBB9znAwYM4Oqrrw4QQ1EyosqQEjU0bNiQiRMnMn36dA4cOJCtuO+++y7fffcdU6dOZfjw4bzwwgs89NBDjBw5kqeeeopXX32VlStXMmLEiExxBw4cSP369Zk/fz4dOnRgyJAhAeckHTx4kBYtWrBx40ZeffVV5syZw4kTJ2jfvj0pKRm3oRs6dCgJCQnMnTuXf/3rXwA8/vjjPPPMMwwaNIiFCxfSvHlzbr/9dt555x13vBUrVtCuXTtiY2OZPn06s2fP5tprr3VbTPbmqaeeYtSoUSxYsIDOnTsD8NVXX9GuXTsqVarEvHnzGD9+PB999BF///vfAejYsSMPP/wwAKtWrWLVqlW88sorPtP35Ny5c5kOj1FlwM79aN68OadOneKtt95i2rRprFu3jk6dOmUK60n//v1ZtmwZEyZMYPLkySxdupTZs2f7DNu7d286d+7M+++/z2WXXUavXr34448/AHjllVeoVasWN910k/vaOnbsmOW1KZFh/PjxbN68GYDSpUtn6B1WlKAwxuhRCI5GjRqZQKxfv96n+6hRowzWCnaWx1133ZUp/l133RV0/FGjRgWUMSv+97//merVqxvAiIi54oorzMiRI82RI0fcYbZu3WoA8+GHH7rdLr74YnPppZeac+fOud2uvvpqExMTY37//Xe327Bhw0zFihXd58uXL/d53e3btzdNmjRxn/fr1894lv9j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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#defining height arrays of simplerocket and rocket solutions\n",
"height_heun1 = num_sol_heun[:,0]\n",
"height_heun2 = num_sol_heun2[:,0]\n",
"\n",
"plt.plot(t,height_heun1,color='k',linestyle='--',label=\"Simplerocket Height\")\n",
"plt.plot(t,height_heun2,color='b',linestyle='--',label=\"Rocket Height\")\n",
"plt.title(\"Simplerocket & Rocket Height Comparison\")\n",
"plt.xlabel(\"Time [s]\")\n",
"plt.ylabel(\"Height [m]\")\n",
"plt.legend(loc=0,fontsize=15);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As demonstrated above, the simplerocket solution assumes ideal condition and has a faster acceleration than that of the rocket solution since it neglects air resistance and gravity. As time increases, the rocket solution approaches terminal velocity as seen by the linearity of the curve around t=3"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"3. Solve for the mass change rate that results in detonation at a height of 300 meters. Create a function `f_dm` that returns the final height of the firework when it reaches $m_{f}=0.05~kg$. The inputs should be \n",
"\n",
"$f_{m}= f_{m}(\\frac{dm}{dt},~parameters)$\n",
"\n",
"where $\\frac{dm}{dt}$ is the variable we are using to find a root and $parameters$ are the known values, `m0=0.25, c=0.18e-3, u=250`. When $f_{m}(\\frac{dm}{dt}) = 0$, we have found the correct root. \n",
"\n",
"Plot the height as a function of time and use a star to denote detonation at the correct height with a `'*'`-marker\n",
"\n",
"Approach the solution in two steps, use the incremental search [`incsearch`](../notebooks/04_Getting_to_the_root.ipynb) with 5-10 sub-intervals _we want to limit the number of times we call the function_. Then, use the modified secant method to find the true root of the function.\n",
"\n",
"a. Use the incremental search to find the two closest mass change rates within the interval $\\frac{dm}{dt}=0.05-0.4~kg/s.$\n",
"\n",
"b. Use the modified secant method to find the root of the function $f_{m}$.\n",
"\n",
"c. Plot your solution for the height as a function of time and indicate the detonation with a `*`-marker."
]
},
{
"cell_type": "code",
"execution_count": 608,
"metadata": {},
"outputs": [],
"source": [
"#creating a function where dmdt is a variable \n",
"def newrocket(state, dmdt, u=250,c=0.18e-3,g=9.81):\n",
" derivs = np.array([state[1], (u/state[2])*dmdt-g-(c/state[2])*((state[1])**2), -dmdt])\n",
" return derivs\n",
"\n",
"def f_dm(dmdt,m0=0.25, mf = 0.05, c=0.18e-3, u=250, g=9.81):\n",
" \n",
" # time array\n",
" dm = m0-mf\n",
" time = dm/dmdt\n",
" t_sol = np.linspace(0,time)\n",
" dt = t_sol[2]-t_sol[1]\n",
" N = int(time/dt)\n",
" \n",
" #initializing array & initial conditions\n",
" num_solution = np.zeros([N,3])\n",
" num_solution[0,0] = 0 #meters\n",
" num_solution[0,1] = 0 #m/s\n",
" num_solution[0,2] = m0 #kg\n",
"\n",
" #integrating the rocket function using the heun integration method for a more accurate state solution\n",
" for i in range(N-1):\n",
" num_solution[i+1] = rk2_step(num_solution[i], lambda state: newrocket(state,dmdt=dmdt) ,dt)\n",
" \n",
" desired_height = 300 #meters\n",
" predicted_height = num_solution[-1,0] #grabbing the final value for height after final mass is reached\n",
"\n",
" error = predicted_height - desired_height\n",
" return error"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Problem 3 part a)**"
]
},
{
"cell_type": "code",
"execution_count": 610,
"metadata": {},
"outputs": [],
"source": [
"#recalling incsearch function\n",
"def incsearch(func,xmin,xmax,ns=10):\n",
" x = np.linspace(xmin,xmax,ns)\n",
" f = np.zeros(ns)\n",
" #modifying the function to allow an array to pass through the function\n",
" for i in range(ns):\n",
" f[i]=func(x[i])\n",
" sign_f = np.sign(f)\n",
" delta_sign_f = sign_f[1:]-sign_f[0:-1]\n",
" i_zeros = np.nonzero(delta_sign_f!=0)\n",
" nb = len(i_zeros[0])\n",
" xb = np.block([[ x[i_zeros[0]+1]],[x[i_zeros[0]] ]] )\n",
" if nb==0:\n",
" print('no brackets found\\n')\n",
" print('check interval or increase ns\\n')\n",
" else:\n",
" return xb"
]
},
{
"cell_type": "code",
"execution_count": 611,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"using the incremental search method, the range of values for dmdt is between [0.07474747] kg/s and [0.07121212] kg/s\n"
]
}
],
"source": [
"#initializing an array of values for dmdt\n",
"xmin = 0.05\n",
"xmax = 0.4\n",
"x = np.linspace(xmin,xmax)\n",
"roots = incsearch(f_dm,xmin,xmax, ns = 100)\n",
"print(\"using the incremental search method, the range of values for dmdt is between {} kg/s and {} kg/s\".format(roots[0],roots[1]));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Problem 3 part b)**"
]
},
{
"cell_type": "code",
"execution_count": 612,
"metadata": {},
"outputs": [],
"source": [
"#using the modified secant method\n",
"def mod_secant(func,dx,x0,es=0.0001,maxit=50):\n",
" iter = 0;\n",
" xr=x0\n",
" for iter in range(0,maxit):\n",
" xrold = xr;\n",
" dfunc=(func(xr+dx)-func(xr))/dx;\n",
" xr = xr - func(xr)/dfunc;\n",
" if xr != 0:\n",
" ea = abs((xr - xrold)/xr) * 100;\n",
" else:\n",
" ea = abs((xr - xrold)/1) * 100;\n",
" if ea <= es:\n",
" break\n",
" return xr,[func(xr),ea,iter]"
]
},
{
"cell_type": "code",
"execution_count": 613,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"using the modified secant method, the estimated value for dmdt is 0.0747 kg/s\n"
]
}
],
"source": [
"dmdt_results,out= mod_secant(f_dm,0.001,0.1)\n",
"print(\"using the modified secant method, the estimated value for dmdt is %.4f kg/s\" %dmdt_results)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Problem 3 part c)**"
]
},
{
"cell_type": "code",
"execution_count": 614,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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0aRJE44ePRqWmH9t27ZFRFizZo1X47R48eIsY3tyiuPL/eLFiyHndfTXeY4jcjBt2jQA2rRpkyex+CpUqMATT1hT4L344oucPHnSmdasWTNKlCjB7t27nX1xrhw5csTZdOXaTNy1a1cApk6dGnJNTER46623GDNmDDt27KBdu3Zs3bo1i1z37t0BmDVrVkjl5+Te5RWqVpim7du3A1CyZEk+++yzAlVjNEbLUKhwjEEaPHgwS5YsyZJ+4cIF5s6dG5QjRu3atbnlllu4ePEi9913n3NeIbAGy+ZGEFFHrWLLli0h57377rspWbIkSUlJvP76625pq1at4o033gBwm9Qvtxk1ahQ1a9bk1KlTboNV4+LiGDlyJAAPPPAABw8edKalpqZyzz33cObMGdq0aeN0wgAYOXIklStXZvXq1Tz00ENZ+gQPHz7Md99951enl156iQkTJrBnzx7atWvHpk2b3NIfffRRSpYsyTPPPMOUKVO8GqHvv/+ezz//3G1fTu5dXjF9+nQ+/fRT5/Y777xTIMaRuZEdl0Oz5I7LuyHn47RUVV966SWNjo5WQOvXr689e/bUfv36afPmzbVUqVIK6FtvveX1uJ6u7Xv27NEaNWoooJUqVdL+/ftrr169tGTJktqyZUtt2bKlAvrdd9951c/Xefhybf/55581KipKo6Ki9KabbtLhw4friBEjspTvi6+++kqLFSumgDZp0kTvuOMObd++vUZFRSmgEyZMyJInt8ZpOZgxY4ZzXNrx48ed+8+ePatt27ZVQOPj47VXr17av39/rVy5sgJaq1Ytr0MN1q5dqxUqVFBAy5cvr71799b+/ftr8+bNNSYmRkeMGOGU9TZOy8GkSZOcZfz8889uad98842WLl1aAa1SpYreeOONOmDAAG3btq1znNigQYPc8qxbt05FRKOjo7Vr167Oe/f9998HvI558W7YvHmzcxgB4HadIgFmnJYxWoWBcBgtVdVffvlFR4wYoXXq1NHixYtrfHy81qtXT3v16qXvvvuuHjt2zOtxvb0kDx48qH//+9+1SpUqWrRoUa1du7Y++uijeubMGa1Tp44CWQYrZ9doqarOmjVLW7RoofHx8T7Ho/nj119/1cGDB2vVqlU1JiZGy5Ytq926ddMFCxZ4lc9to5Wenu4ckOtpNM+fP6+vvvqqNm3aVOPi4rR48eLa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AwcOHODFF1/k+eefJz8/v8xYq1atmDBhAqNGjVJYiZyCQkukFu3Zs4cZM2Ywc+ZM9u/fX2asZcuWoU9Wp59+ekAVisQXhZZILdi2bRvTp09nzpw5J11n1a5dO8aNG8eDDz6osBKpIoWWSJQ45/jnP//Jn//8Z9566y1KSkrKjKenp5OZmcnIkSNp3LhxQFWKxDeFlkgNHT16lMWLF/P888+zdu3ak8a7devGE088wS233EJSUlIAFYrUHwotkWras2cPc+fO5YUXXjhpJSDAgAEDGDduHP3799dFwSJRotASqQLnHJ999hmzZs1iwYIFHDlypMx448aNGTlyJL/97W+5+OKLA6pSpP5SaIlUws8//8z8+fOZNWvWSfeyAm8l4JgxYxg1ahStWrUKoEKRxKDQEolgw4YNzJkzh9dff50DBw6cNH7FFVcwevRohg0bRnJycgAViiQWhZZIOfv27eONN95gzpw55OTknDSenJzMiBEjGD16NJdddlkAFYokLoWWCFBcXMyKFSt47bXXWLx4MYWFhSfN6dy5M6NGjeLuu+8mLS0tgCpFRKElCcs5R05ODtnZ2cyfP5+8vLyT5iQnJzN06FDuv/9+rrnmGq0CFAmYQksSzvbt23nzzTfJzs5m06ZNFc7p3r07999/P8OHD+eMM86IcYUiEo5CSxLCjh07WLhwIQsWLGDdunUVzmndujUjRozgzjvvpFu3bjGuUEQqQ6El9dbOnTtZtGgRCxYs4LPPPqtwTpMmTbjlllsYOXIk1113HQ0b6q+ESF2mv6FSb5Seo1q6dClLly6tcOUfQMOGDenfvz/Dhw9nyJAhNG3aNMaVikh1KbQkrhUVFbFq1apQUO3cubPCeQ0bNuT6669n2LBhDB48WKv/ROKUQkvizvbt21m2bBnvvfcey5cv59ChQxXOa9SoEf369WPo0KHcfPPNtGjRIsaViki0KbSkzjtw4ACffPIJH374IcuWLePrr78OO7d58+YMGjSIwYMHM3DgQJo1axbDSkWktim0pM45fPgwa9asYfny5axYsYJ169Zx7NixsPM7deoUCqo+ffrQqFGjGFYrIrGk0JLA/fTTT6xZs4bVq1ezatUqPv30U4qKisLOT05Opm/fvtx4440MHDiQ9PT0GFYrIkFSaElMOefYunUra9euDYXUxo0bcc5FPK5r16707duX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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#now that is dmdt is determined\n",
"m0 = 0.25\n",
"mf = 0.05\n",
"dmdt = 0.0747\n",
"dm = m0-mf\n",
"time = dm/dmdt\n",
"t_sol = np.linspace(0,time)\n",
"dt = t_sol[2]-t_sol[1]\n",
"N = int(time/dt)\n",
" \n",
"#initializing array & initial conditions\n",
"num_solution_height = np.zeros([N,3])\n",
"num_solution_height[0,0] = 0 #meters\n",
"num_solution_height[0,1] = 0 #m/s\n",
"num_solution_height[0,2] = m0 #kg\n",
"\n",
"#integrating the rocket function using the heun integration method for a more accurate state solution\n",
"for i in range(N-1):\n",
" num_solution_height[i+1] = rk2_step(num_solution_height[i], lambda state: newrocket(state,dmdt=dmdt) ,dt)\n",
" \n",
"plt.plot(t_sol[1:],num_solution_height[:,0], color='k',label = \"Height of Rocket\")\n",
"plt.plot(t_sol[-1],num_solution_height[-1,0], '*',markersize= 10, label = \"Detonation\")\n",
"plt.title(\"Height of Rocket vs. Time \\n dmdt=0.747\")\n",
"plt.xlabel(\"Time [s]\")\n",
"plt.ylabel(\"Height [m]\")\n",
"plt.legend();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## References\n",
"\n",
"1. Math 24 _Rocket Motion_. <https://www.math24.net/rocket-motion/\\>\n",
"\n",
"2. Kasdin and Paley. _Engineering Dynamics_. [ch 6-Linear Momentum of a Multiparticle System pp234-235](https://www.jstor.org/stable/j.ctvcm4ggj.9) Princeton University Press \n",
"\n",
"3. <https://en.wikipedia.org/wiki/Specific_impulse>\n",
"\n",
"4. <https://www.apogeerockets.com/Rocket_Motors/Estes_Motors/13mm_Motors/Estes_13mm_1_4A3-3T>"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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": 4
}