{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "# Configure Jupyter so figures appear in the notebook\n", "%matplotlib inline\n", "\n", "# Configure Jupyter to display the assigned value after an assignment\n", "%config InteractiveShell.ast_node_interactivity='last_expr_or_assign'\n", "\n", "# import functions from the modsim library\n", "from modsim import *\n", "\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import math" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "Question: How does the presence of a adjustable shutter vent affect temperature stability within a greenhouse? This is both a design and an explanatory questions. We are explaining a vents role within the system, which in turn helps for making design decisions. It's an important question, because all over the world people living in cooler climates want to continue gardening during the colder seasons. But, when it warms up it is equally important to make sure there is proper ventilation so that the plants do not overheat." ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "Methods: In order to answer the question we used various equations representing heat flowing into and leaving the greenhouse. The main heat going in is solar radiation. The outflows of heat are from conduction loses and air infiltration loses. We measured the temperature inside the green house at each timestep. We also changed the value for c which represents opening and closing of the vent at various angles when it started to get too warm inside of the green house." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "def make_system(Tout):\n", " init = State(Tin= 75)\n", " t_0 = 0\n", " t_end = 24 # in hours\n", " p = 0.8\n", " l = 60\n", " r = 1.43\n", " v = 1550\n", " a= 624\n", " Q = 0\n", " c = 1\n", " Tout = Tout\n", " dt = 2/60 #every 2 minutes\n", " \n", " return System(init=init,Tout=Tout,Q=Q, c=c, t_0=t_0, t_end=t_end, dt= dt, p=p, l=l, r=r, v=v ,a=a)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
values
initTin 75\n", "dtype: int64
Tout55
Q0
c1
t_00
t_end24
dt0.0333333
p0.8
l60
r1.43
v1550
a624
\n", "
" ], "text/plain": [ "init Tin 75\n", "dtype: int64\n", "Tout 55\n", "Q 0\n", "c 1\n", "t_0 0\n", "t_end 24\n", "dt 0.0333333\n", "p 0.8\n", "l 60\n", "r 1.43\n", "v 1550\n", "a 624\n", "dtype: object" ] }, "execution_count": 3, "metadata": { }, "output_type": "execute_result" } ], "source": [ "\n", "system = make_system(55)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "def update_func(state, dt, d, time, system):\n", " Tin = state.Tin\n", " \n", " Tout, c, p, l, r, v, a= system.Tout, system.c, system.p, system.l, system.r, system.v, system.a\n", " \n", " if time < 12:\n", " if Tin>79: \n", " c= 3\n", " if Tin> 82:\n", " c = 3.82\n", " if Tin>84:\n", " c = 5\n", " if time > 18:\n", " if Tin>79: \n", " c= 3\n", " if Tin> 82:\n", " c = 3.82\n", " if Tin>84:\n", " c = 5\n", " \n", " if time > 13:\n", " dqdt = 18416000 - ((Tin - d)*((a/r)+(p*l)+(0.02*v*c)))*1055.06\n", " else:\n", " dqdt = 15679143 - ((Tin - d)*((a/r)+(p*l)+(0.02*v*c)))*1055.06\n", " \n", " dt = system.dt\n", " \n", " q = dqdt * dt\n", " \n", " x = (q / (53.03 * 1000)) + Tin\n", " \n", " return State(Tin = x)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "def run_simulation(system, update_func):\n", " t_0, t_end, dt = system.t_0, system.t_end, system.dt\n", " \n", " frame = TimeFrame(columns=system.init.index)\n", " frame.row[t_0] = system.init\n", " ts = linrange(t_0, t_end, dt)\n", " temperature = TimeSeries() \n", " for t in ts:\n", " time = t\n", " temperature[t] = (8 * math.sin (math.radians(15 * t))) + 50\n", " d = temperature [t]\n", " res = update_func(frame.row[t], dt, d, time, system)\n", " frame.row[t+dt] = res\n", " return frame" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "def run(system, update_func):\n", " change = SweepSeries()\n", " for change in linrange (1, 3, 0.5):\n", " results = run_simulation(system, update_func, change)\n", " plot(results.Tin, label='Temperature')\n", " decorate(xlabel='Time (hours)',\n", " ylabel='Temperature (F)')" ] }, { "cell_type": "raw", "metadata": { "collapsed": false }, "source": [ "result = run(system, update_func)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdd3zU9f3A8dfdZQ9CJgEChPlhj7ARFZWqYLWOqnVbZxVtf7a2tVYtautotVWrddVRJ87WPXAie4UNHyAQCJBNCJCdu/v98b07LiHjktzO+/l45AG5+97lncv3vu/7fD7vz+djstvtCCGEEMHGHOgAhBBCiJZIghJCCBGUJEEJIYQISpKghBBCBKWIQAfgLUqpaGAyUAhYAxyOEEKIpixAb2CV1rrOkweETYLCSE4/BDoIIYQQbToRWOzJgeGUoAoBXn/9dTIzMwMdixBCCDdFRUVcdtll4LhWeyKcEpQVIDMzk6ysrEDHIoQQomUeD8FIkYQQQoigJAlKCCFEUJIEJYQQIihJghJCCBGUJEEJIYQISpKghBBCBKVwKjMXAWaz2dlXcoSSihoOV9UTFWkmITaSAZk9SO4RE+jwhBAhRhKU6JJGq401W4v5Zk0B63eUUVXT0OJx6cmxTB/dm1kTsxjaL9nPUQohQpEkKNEpVquNb9fs482FmpKD1a7b03rGkpWRQI/4KKxWO4eO1rH7QCWlFTV8+MMuPvxhF+OGpnHpGcMZOTA1gL+BECLYSYISHbb7QCVPvJXLzn2VAPRNj+f0qQOYOa4vGSlxxx1vs9nZUVDBotz9LFy5l/U7yli/YzE/mtKfn589isS4KH//CkKIECAJSnjMbrfz0eJdvPTRZhqtdtJ6xnLl3BGcNCELi9nU6uPMZhNqQApqQAqXnK743/d5vPftThau3Evu9lJ+f+Ukhg9I8eNvIoQIBZKghEcaGq08+c56vlldAMCc6dlc/eORxMVEduh5EuKiuHzOCGZNzOKxBbnoPRXc8eRibv7pOE6fOsAXoYtuTinV5v1ff/11WK3fmZeXx9y5c1m8eDHp6emBDqdLJEGJdtXWN/Lgy6tYq0uIjrLwq4sncOL4vl16zqyMRB68eSYvf7KZDxft4p9vr6PicC0XzR6GydR6a0yIjlq8+NjODi+++CK5ubn885//dN2WkhI6rff6+nqiovzTJe7Pn9UamQfVjVmtNp54K5cl6w+0ekx1bQPzn1/OWl1CUkIUD8+b2eXk5BQZYeb6n4zh5gvGYjLBa59v47XPt3nluYVwSk9Pd33FxcURGRnZ5DaLxQLACy+8wKmnnsq4ceO46KKLWLt2res53nzzTc4880zeffddTjzxRCZNmsTzzz9PTU0Nv/vd75gwYQLnnHMO27dvdz3mkUce4dprr+XJJ59k6tSpTJ06laeeeqpJbKWlpdx2221MnDiR6dOnc8cdd3D48GHX/RdddBH/+Mc/uP3225kwYQLPPvssxcXFzJs3jxkzZpCTk8MVV1zh+rl1dXXMnTsXgJkzZ6KU4rnnnqOurg6lFOvWrXM9d15eHkopSktLm/yO77zzDrNmzWLOnDkAVFVVcc899zB16lQmT57MvHnzKC4u9uafqFWSoLqx5ZuLWLhyLw+9sqrF+61WGw/9ZxWbd5WT0iOGB2+eyeCsnl6PY86MgfzuikmYzSbe/mo773y9vdVj//vdThbl7vN6DKJ7e/3113nnnXe4//77+fjjjznzzDO57rrrXBdvMPYzWrJkCS+//DK///3veeSRR7jllluYPHky77//Pn379mX+/PlNnnft2rXs3r2bN954g3vuuYfnn3+ezz//HDDGdOfNm0dsbCwLFizgpZdeori4mLvuuqvJc7z66quMHj2aDz74gAsuuICamhpmzJjByy+/zLvvvkv//v2ZN28eDQ0NREdH8/rrrwPw4YcfsnjxYi6//HKPX4eioiIWLlzIM888w7PPPgvAnXfeSUlJCS+++CILFiwgNjaWefPmYbfbO/NSd4h08XVD2/dW8NQ76xme3fZ8pOc/2ETu9lKSEqJ4aN5MeqfF+yymmeP60mi18/c31vDKp1tJ6RHDaZP7Nzmm7FANL360GYCTJoTPmEG4uPffy1m91T+frCeN6MWfrpvmted7+umnefTRR5k6dSoA11xzDV9//TWffPIJV199NQCNjY3cd999JCYmMnjwYJ5++mmSkpK48MILAfj5z3/OVVddRWNjIxERxqXVYrFw//33ExcXx+DBg9m0aROvv/46Z555JkuWLKG8vJwFCxZgNhtthfvuu4/Zs2dz+PBhevToAcCUKVNcMThlZ2e7/n/vvfeSk5PD1q1bGTt2LMnJxvs6JSXFNQZVV+fRDuvU19fzwAMPkJaWBsCuXbv4/vvvWbZsGbGxsQD85S9/YeLEiWzbto0RI0Z05GXuMElQ3dDDr66m5GA1uw5Uum6rqWskNvrY6fDJ4l18smQ3ERYzf7x6qk+Tk9OsnCyqahp45v0NPPnOenqnxTeZK1XfcGyfs+v+spAfzxzIuScP8XlcIrxVVFRQWlrKjTfe2GT8s76+vskFODMzk8TERNf3qampDB48uMn3NpuNyspKUlON83bIkCHExR2bejFmzBg++ugjALZv305hYSETJ048LqaCggJGjRoFcFwSqK+v54knnuCrr76itLQUm81GfX09hYWFjB07tisvBRkZGa7kBLBjxw5qa2uZMWNGk+MaGxspKCiQBCW8o77Byl9fXc3uwsNNJtY6lVfWkJVhvPnW6hKe+2ATAL+8eDwjBvpvEPmsEwayr+QIHy/ezQMvr+TvvzrZNbeqzi1BFR+s5oUPN1NeWcs1Z4+Swoog4M0WjT9VVxvvh6eeeuq4aj73hORsFTmZTCYiI4+vYrXZbB7/3GHDhvH4448fd1/v3r1d/3e2XJyefvppPv30U+6880769+9PdHQ05513Ho2Nja3+LOf7w71brqXjY2KaLklWXV1NcnIyCxYsOO5Y90TmK5KguolFuftZsbmo1fsLy6rIykikoPgID7+yCpvNzoWnDeWUif38GKXhunNGs7/kKLnbS/nra6t5aN5MIixmauuO3yn6f9/ncdrk/mT37uH3OEV4yMzMpGfPnhQVFXHCCSd49bl37txJTU2NK8ls3LiRgQMHAjB8+HBeeuklkpOTXd15nsjNzeXss89m9uzZgNHaqqqqct3vTJruiTIqKoqEhATKyspct7kXdLRm+PDhVFRUYDab6dfP/9cCKZLoBhoarTz+Vm6bx+wsOETl0True2E51bWNzBjbm8vP9G3zvTUWi5nfXjGJtKQY9J4K3vjCqOyrrW/5E+Irn27hsQVrOVxV788wRZiwWCxcf/31/O1vf+ODDz6goKCADRs28NRTTzWp5OsMq9XKPffcQ15eHp9++ikLFizg0ksvBWDWrFlkZWVxyy23sHbtWgoKCli0aBH33ntvm8/Zv39/vvnmG7Zt28bGjRu58847m5SDp6enExkZyZIlSzh48CC1tbUATJ48mRdffJGdO3eybNkynnvuuXbjHzFiBCeddBK33HILy5Yto6CggOXLl3PPPfe4nteXJEGFKbvd7rqgt1VG7vTt2n3c98JyisqrGZyVxG0/y8HcxuoQvpYYF8Xtl0/CbIJ3v9nBuu0l1NYf34ICWLWlmK9XFXDZPZ/RaPWse0UId9dddx233nor//rXv5gzZw4333wzWusuT3TNyckhKyuLSy65hPnz53PNNde4yrcjIiJ46aWX6N27NzfddBNnnXUWDz30kKvIoTW33nor6enpXHzxxdx2221cdtllTVpgsbGx3H777Tz66KNMnz6dV155BYA//vGPmM1mLrjgAh599FFuvfVWj36Hxx57jMmTJ/Pb3/6WuXPnctddd2GxWI7r8vQFkz9KBZ2UUj2BR4GzgARgA3CH1nqRUmoW8FtgChAFrAZ+q7X26COMUiob2B1us8I742hNA0++s44l6w/w/J2zuf6Brzx+bK+UOB6+ZSapSbHtH+wHb36xjTe+1KQlxXDh7GE8/d6GNo//xfljOeuEgX6KTojWPfLII2zdupUXXngh0KEEhX379nHaaacBDNRa53vyGH+3oP4OTAR+AowDVgIfK6WSgOnAcozkNRnIA75QSsmS1x1QebSOS+761NVq8iQ5jchOITM1jrFD0vjLTScETXICuOhHiqH9elJWWcuz77ednACeeX8DR6vr2bK7HKu0poQIaf4ukpgKPK21XgGglLob+BUwVGv9oPuBSqmbgJ8BJwAf+jnOkFRUXsVXK/d2+HGzJmYxd0ZwtjosZhO/ungC//eP72i0etbav+q+L6lvsHLR7GGcPKEv/TOlgEKIUOTvBLUMOE8p9SZwCLgG2AdsaeHYOCDWcZxoR219Y4e68txFR1q8HI13Dejdg4tOG8YbX2qPjnfOl3r7q+28/dV2nvjNLAb2SfJliEIc5/bbbw90CCHP3118twKVQBlQB9wBnKW1Pn5iDswHdgJL/RZdCFu6obDTj00Loi691vz0tGGdfqzeU+HFSIQQ/uLvBPV/QDYwG2OcaQHwoVKqSdmKUupa4FrgZ1rr1mefCZeFK/d06Pic4Rm8cf8c7r1hOmOG+H7CXVdFRph56ren8KMp/ds/uJmoSClWFSIU+a2LTykVC9wLzNJaO1tFuUqpszDGmp52HHcR8BjwY631en/FF8oOlB1lU155hx5z7/XTAchRGb4IySf6Z/bglxdP4LIzh7NqSzEf/pBHQfHRdh93uKqeHQUVDOqThMUiyUqIUOHPMahIx1fzySw2HC05pdTZwEvAhVrr7/0YW0hzbiLYnid+M4slGw4wfXTv9g8OYqlJsZw5PZtZOVlceOcn7R7/wofGArPjhqZx3w0zAjq/SwjhOb8lKK31YaXUEuAxpdSvgIMYRRLZwEKl1GnAO8DvgLVKqUzHQ49qrdv/mNxN2Wx2vl3T/vYTk0b0YmCfpLAqFoiJjuDkCVk0WK389NSh/PqxRW0ev35HGd+tLeDUSR3vJhRC+J+/+zsuBvKBj4B1GGNR52qttwNXANHA40Ch25eUwrRhy+5ySg5Wk9Yzln69Elo97rZLcvwYlf/cfvlE/nDVFIb2S6Zfr8RWj8tMNRacfe3zbTI/SogQ4dcyc631fuCSVu67Grjan/GEA2f33ikTs/hh3f4m95nNJmblZHHBKUPoER/YrZv94XdXTOLWR75t8b4bzh3Dvz/YxIGyKlZtLWZaiHdzCtEdyIhxCKutb2SxY8WIUyb2o67ZWnUP3HQCt12S020mqmb37kFGcssl8/16JTJnRjYAny3N919QQohOkwQVwlZsKqKmrpFh/XvSr1dik/2SXp1/JqMGdb9Von596fGbvwGkJhk79EZGmFmrSygqr2rxOCFE8JAEFcK+WWN0753q2LPJZju2FFDPxOiAxBRoowal8sHfzuE3l+YwdVSm6/bICAuJcVHMHNcHgG89rHwUQgSOJKgQdfBwLet0CREWEzPH9wXgD1dPITEuMmR3NvUWs9nErIn9mmwX7+TcgPHbNfvw50r+QoiOkwQVor5fuw+b3SgfT0owWks5KoPX75vDpBG9AhxdcDhtcj/6psdz9VkjXbeNHZpOSo9oCsur0HtlCSQhgpkkqBC1yFGxNyun6TbMJpNMQnVKSojmmTtmc8GpQ123WcwmTppg7Bf2nQfzx4QQgSMJKgQdKDvKzoJDxEZbmDRSWksd5ezmW5S7n4ZGmRMlRLCSBBWCnPOdpo7uHfRbZQSjgX160D8zkSPV9eTqkkCHI4RohSSoEPRDrpGgTnIUR4iOMZmMCcxgjOUJIYKTJKgQs6foMHuKjpAQG8n4YaGzEnmwOdGR3FduKWoyf0wIETwkQYUYZ/fejLF9iIyQP19nZabGM7RfT2rrrazZWhzocIQQLZArXAix2+2u7r0Tx/cJcDShb+Y4oxXlXC5KCBFcJEGFkLz9lRwoq6JnQjRjBgf/LrjBzrmqxMotRdTWy8bNQgQbSVAhxNl6OmFcH9kZ1gsyUuIY1r8ndfVW1mwNz2q+/32/kyvmf87/vs8LdChCdJhc5UKEzWbnh/XO7j2p3vMWZzef87UNJ5VH63j54y0cOlLHCx9uIr/wcKBDEqJDJEGFiB0FFZRW1JCaFMOI7JRAhxM2ThhrdPOt2lJMbV14dfNt3lWO1W0B4S+W5wcuGCE6QRJUiFi6oRAwqvfMZlnOyFsyUuJQA5Kpb7CyKsyq+fQeY61B56ru363ZR72U1IsQIgkqBNjtdpZtdCSoMbITrLc5u/mWhFk1X/HBasDoEh7UJ4mjNQ1s2FkW4KiE8JwkqBCQX3iYwnKjem9EC1tIiK5xdfNtLaYmjLr5Sg8ZCSo9OZapo41W1MotRYEMSYgOkQQVApzde1NHZ2KR7j2vS0+OZbijm2/NtvDp5iutqAEgvWcckx2LCq/aUiz7YImQIQkqBCzbaHQ9zRgjk3N9ZbrjtV2+MTxaGI1WGxVH6jCbIKVHNIP79iQ5MZqyQzVSzSdChscJSik1QCl1ilJqrlJqslKqe+4p7mf7S4+yp+gI8bGRjBkik3N9ZdoYowts9daisNiC42h1AwDxsVFYLGbMZpNrI8tVW8KnlSjCW5sJSinVRyl1n1JqF7AL+Br4GFgBHFJKfaqUOscPcXZbSzcYracpI3vJ2ns+1CctgQGZiVTVNrIxDAoJjtbUA5AQF+m6zZmg1soWIyJEtHrFU0rdD2hgKvBXYBLQC0gCBgIXAluAp5VSq5RSY30fbvfjrN6bLt17PjfNUSG5bFNhgCPpuqM1RgsqIfZYgho3NB2z2cS2/INUOe4XIphFtHFfP2CM1jq/hfuOAHuAj5VSvwMuAyYAG7weYTdWUlHNjoJDREdZyBkuW2v42vTRvXlr4XZWbCrkpvPHhvR8M2cXn3uCio+NZPiAZLbsPsiGnaXyoUcEvVYTlNb6ak+eQGttA171VkDimOWO1tOk4b1k51w/GNQ3iYzkWEoqati+t4LhIbxih6sFFRfV5PYclcGW3QdZqyVBieDX3hjUWKWUDHwEyFLn5NyxMjnXH0wmE9NGO7r5NoZ2N19VtWMMyq0FBTBBGS3xtbpEys1F0Gsv+eQCrtIxpdQnSim5WvrB4ap6tu4uJ8JiYuLwXoEOp9twH4cK5Qt4Va0x4Ti+WYIaktWTHvFRlBysZn/p0UCEJoTH2ktQzTvhTwJifRSLcLN6azE2O4wenHbcRUb4zsiBqfSIj6KwrIq9xUcCHU6nOfe3iolq2jVsNpsYPywdkGo+Efyk+y5IOZekmTIyM8CRdC8Ws8m1uOryEO7mq3MsChsddfzYZY6jmy9Xl/o1JiE6ypMEFbr9HCGqodHK2m3Gp9spoyRB+Zuzm295CJeb19U7E9TxdVDOcagNO8tkdXMR1NoqM3d6UClV7fh/FPAnpVSl+wFa6196PbJubGNeOTV1jWT37kGvlLhAh9PtjB+aTnSUhZ37KimvrCE1KfR6tV0JqoXqz5QeMQzs04PdBw6zZXc544fJFAYRnNprQa0ERgGTHV9rgWFu30/GmMArvGjVZkf3nrSeAiIq0sL4ocY4zeoQ3SOqrS4+ONbNt1a6+UQQa7MFpbWe5q9AhMFut7PCMf40VRJUwEwe2YsVm4tYubmYM6ZlBzqcDnO2oJoXSTjlDM/gvW93snZbMdecPcqfoQnhMSmSCDL5hYcpraghOTGaIVk9Ax1Ot+Vct27djlJXaySUOKv4WpvgPSI7lZgoC3uKjlBeWePP0ITwWFtr8d2slPJkjAql1Ail1I+8F1b3tcLRvTd5ZGZIL7UT6lKTYhmSlUR9gzUkF49tr4svMsLsWh3fWZAjRLBpqwX1EyBPKTVfKTW++YoSSqk0pdQFSqkPgEWArMXjBSs3S/desJjsKPF3/k1CSVtFEk4T3VaVECIYtZqgtNZnADcDMzGKI44opXYrpbYqpYqBYuBfwGZguNb6c38EHM7KK2vYUXCIqEgLY4fK3k+B5pyDtmpLUcitKlHrGoNqvRNkgmMB4nXbS7HaQuv3E91De0USnwCfKKUyMVaRGIixkkQpRtJapbVu9HmU3YRzI7nxQ9PbvLAI/xjUN4mUHtGUVdaSX3iYgX2SAh2Sx5wtqKg2WlB90hLITI2jqLyaHQUVDB8QuovjivDk0VVQa10EvO3jWLo91+oR0r0XFIxdaDP5csUeVm4uCqkE1Wh1Jqi266ByVAafLs0nd1uJJCgRdKSKL0jUNVhZv92YkzJ5pCwOGyycf4tQ2ya9odHosmtvF+YcGYcSQUwSVJDYlFdGfaONwVlJpPSICXQ4wmH80HQiI8xsL6ig4khtoMPxiN1up9FqA8BibvstPmZIGhEWE9v3VnDUsUWHEMFCElSQWOMo9ZWtNYJLTHQEY4ekYbfDmhBZVaLRarSeIiymdqcqxMVEMiI7FZvdmPMlRDDxa4JSSvVUSr2glCpSSh1VSi1VSp3kdv9UpdRqpVStUmqLUmqOP+MLJOfFb6Js7R50XOXmIdLN19BojD9FWDx7e09Qju03ZD5Ut2O12vjziyv46IddgQ6lRf5uQf0dmIgxx2ocxlp/HyulkpRSqcBnwBIgB2Mb+f8qpYb6OUa/O1B2lANlVcTHRqL6Jwc6HNGMcxxq3fYSGhptAY6mfcdaUJ69vZ2tdtllt/tZs62EFZuLeO5/G9s8bq0u4a5nllBSUd3mcd7mcYJSSs1QSr2hlFqllOrruO1KpdTMDvy8qcC/tdYrtNZ5wN1AIjAUuAw4DPyf1nqL1vpBjAR2YweePySt2Wp8cp0wLB2LhxcV4T8ZyXH0z0ykps7K1vzyQIfTLmcLqr0CCafs3j3omRhNeWVtSG/SKDrOOVbZnve/3cH6HWXkHzjs44ia8ugMVkr9GPgWY2+oMUC0465k4I4O/LxlwHlKqVSllAW4BtgHbAGmAN9qrd0/wn2NkdTC2pptRteRc/03EXxcrYxWusEqj9bxzPsb2Fvk3zdwS1wtKA8TlNlsYoJjl91cqebrNh56ZRV/e211u8c1NNrYml8BwND+/l0f1NOP6/dgtGwuAxrcbl+M0R3nqVuBSqAMqMNIbmdprauBDKD5u6PUcXvYqnNb6y1Hxp+ClnNZoDWtJKhn3t/AJ0t2c9s/vvdnWC1ytaA60BrPcSTg1n4/EV7sdjtL1h9wfZhpS96+Q9Q3WMnKSCA50b8Vxp6ewSOBlpYyKgc6Mrvv/4BsYDbGXlILgA+VUslA2K2M+tXKvfzfP77j0JG6Vo9xLy/39x9feG7koBRioizkFx5ucfXvA2VVANQ32tr8e/tDR1tQYHQvm0yweVe5ayV0Eb46srLVxjzjA/Towf5ffs3TM/gwLbdkxgAe7YutlIoF7gVu0Vp/rbXO1VrfBtQDP8NY26/5z0jn+FZVyHj8rVzy9lXy5pfbWj1GystDQ2SEhbFDWq92i7Ac+3x1xfzPWbx+v99ia66jY1AASQnRDO6bREOjjc27gn+cTXSNzXb82FNr6zFucpwPowel+jSmlnh6Bv8XuM+RZADsSqnBwEPAOx4+R6Tjq/nmOjZHHCuBWc3uOxVY4eHzBxX3aqiautY/ka6W8vKQ4eyCbakbrPmE2IdfWc0PuYFJUo2NHavic8ppZ5xNhLZDR+pc1yLnWo3uGlrY98xqtbF1tyNBDQ7eBHUHkIDRmonDKAXXGGNEf/LkCbTWhx2Pe0wpNUUpNUQp9QBGl99C4HUgSSn1mGN/qd9jFEg824HfJyis3FLEJXd96vq+tX7eA2VHKSyrIkHKy0PCRNfq3yVYm1U/WSzH91D/1YMBaF9wVmZ1pAUFsuxROKuubeCK+Z9zyV2fsn1vBZfc/dlxx7S0MWfe/kpq6qz0TosnNSn2uPt9zaMzWGt9BGPbjQsxEtIzwDnAKVrrjmzHeTGQD3wErMMYizpXa71da10OzAVOdNx3NXC+1npHB54/YKw2O+9+s4MdBRXc/8IKqmqPtZpaK+V0lZerDCkvDwGZqfH0TY+nqrYRvbeiyX0R7Swp5E/OuVodbUGpAcnERkewr+QoJQf9O99F+FZJhXGZttrsvPmlbvGY+objr1Ob8gLXvQcerGaulIoEvgJucOz51Ol9n7TW+4FL2rh/OcZE3pDz/dp9/OeTLS3e19rkTmd5uXTvhY6c4b3YX7qLtdtKGDnw2Ju2pRZUoHS2BRVhMTN+WDrLNhayVpdw5vRsH0QnAsH97DSbWj5X6xuPb0Ft2uUskAhMgmr3DNZaNwCjASntaUNReVWr97XUgpLy8tA00TUO1XTZo9ZaK6sDsH5fZ1tQYLTmQbr5ws373+10/d+5rU9z9c26+Kw2O1tcBRKB2UDV0zP4XeAiXwYSzlpKUFJeHppGD04jKsLMzn2VTcrJW2tB3fvv5ewvPeqv8ABo6GQLCo6NQ63fUerxKgMiuNntdr5ZXdDucc0TVP6BSqpqG8lIjiUjJc5X4bXJ021b9wO/V0pNB1YBTZoLWuu/ezuwUFJT19hqvy6AtYUiiWPVe1JeHkqiIy2MHpzGWl1C7vYSTpnYD2h7DKq4vJq+6Qn+CpHGDi4W665XShx90xPYX3oUvaeCUQEaexDe01r5eHPNx6Bc5eUBmP/k5OkZfBNQgzG59mbgt25ft/smtNDRXndIQwt9u85S5UmSoEKOq5tv67G/u7mNMagd+yp45LU1LU7w9QXnBakzCQqOdTnLskfhoa3hB3fNq/g2OSfoBvBDiqdbvvf2dSChrL3h8eZl5u7l5cMGSHl5qMkZngEfGB9MrDY7FrOpzRbUa58ZE7W/z93H+w//mMgIi0/jcyYoSzt7QbUmR2Xw0Q+7WKtLuHzOCG+GJvzgaHU9CXFRru9vevgbjx5XXXtsFTubze6asB0KLSjRhiUbDrR5f/O+/Cbl5Z28iIjA6ZueQK+UOI5U15O37xAAdjzrRvlwke/33Tm2m27nzq3Rg1KJjDCzc98hKo8Gdtkm0THfrC7gkrs/471vOj47x31qTEHxEY5UN5CaFENmamDGn8DDFpRS6l9t3a+1vtk74YSeQ0fqWNTOigHNBx9Xu1YvlxP1DoAAACAASURBVOq9UGQymcgZnsFnS/NZs62EYf2TPe7nz/fDauc2RyxtdTu2JSY6glEDU1m3o5R120s5OSfLm+EJH/r3B5sAePmTLVxw6tAO7e9VXXOsBbV+p7G78uhBaZhaKUv3B09bUGOafeVgzGe6FKMEvdsoqajmw0V5rgU13ZvFrXFf6qi2vpFNjvJyZ0mvCD0Thh1bVQJaLoRpyXdr9nl0znSFM5bmyy91hHMcSsrNQ4utWUK67wXPV4qrcjsvN+wwrlHjhgauew88H4M6sfltSqk44D/Ap8c/Inzd/vgiKo7UcfBwLVf/eFSLy4M0V+3WdN6UV059o40h/XpKeXkIGzskDbPZhN5TQXVtA9YWFt9szZcr9nLuyYN9FtuxIonOf/LNURm8+NFmch277AbyU7TwXPNFYDsyD6/K0YKyWm2uFczHDU33XnCd0OmPWI49nO7D2Cuq26hwzH3ZUWCMPfzy0e/afYzVZnc1tdc4Thip3gtt8Y71E602Oxt3lnncgoJjXXC+4kxQ5i6Mb/bPTCQ1KYaKI3XkFwZ+E0bRtpKD1fywbn+T87CtRapb4vwgnbe/kuraRnqnxgds/pNTV4skYunYflBhw2I2dah/t6auEbvd7hp/mijjTyFvvGMX2nXbSz0egwL4z6dbsNvtNFptHCjz/iReZ2uuK118JpPJNWk3EKthiPZZbXb0noM0Wm1c+5eF/PXV1dS7Lav2m8cXdej5jjpaUOt3GONPYwPcvQeeF0mc3+wmE9AHuAVjV91ux2Ixd+gTypHqBg4erqWovJrEuCiG9pPy8lA3YVgGb36pyd1eQkay5580bTY7ek8Fby7UrN1Wwvzrp3l1wrati2XmTpNHZrJw5V5WbC7iwtOGeSM04UULvtQsWKiZMyO7xfsLio906PkOVxm9Q84EFejuPfB8JYl3W7itEmMR2f/zXjjBzX0jtwiLiavu/cLjx1YerWNr/kHA6N+X8vLQN6x/T+JiIthfWkUHhqAAozvFue/S92v3eTVBHSuS6No5NmFYOpERZrbvraDicC3JPWTMNJj893tjfb3PluZ75fnKDtVQ12Bl627jOjV2SOBbUJ72AcQ2+4rWWidrrS90rFAe9ux2O3c8dayxuHxTEbUtbPrVmuKD1SzbaGw+PGmkjD+FA4vFzBjHJMZCD2frOx2prnf9/9s1+/hieb7X4nJN1O3iCusx0RGMG5qO3Q4rt0g3X7BpadPBrqg4UsfqLcVGEVdWEkkJ0V59/s7wNEH9BLBrrescXw1gbMWhlOoWi8h2deHMjXllbNldTlSEmSmSoMJGZ6cKPPL6mibfP/nOem+EAxwbg+pKkYTT1FGZAKzc3PIK2CJ82O3w8RJjIvm0McGxeJCnCepNoGcLt/dw3Be2cnUJjy/IpfJoffsHt+GzpfnY7UbrKS4m0kvRiUCbMCzw/fTNHVvqqOsLxUx2fJhat73ENfdPhC/nBoUzxvQJcCQGT89gE7S4lks64N+9BPykuraB79fu457nlvHVqr38/P4vvfK8p03q75XnEcGhd1o8Gcne2wr7i+X53PjgVxR3YUdbbxVJAKQmxTK0X0/qG22s317a5ecTXVdd28Cfnl/m1eeMjzlWjjAkK4l+vRK9+vyd1WaRhFLKOQnXDryplHJvRliAUcBSH8UWUA+/stprs+iH9uvJjoJDjMhOYdII6d4LJyaTiQkqgy+W7+nyc5UdqnF19X2+LJ+rzhrZqefxVpGE09RRmewoOMSKzUVMHR0cXT/d1eqtxXy4KI9cL39YOGVSP75ds4/aukauPmuUV5+7K9qr4nOWrZmACqDW7b564AfgWR/EFXDeXOLlvhumk6tLmTgiwyvjAiK4jB+W7pUE5d5KT+lCxVyjcx6Ul7ahnzIqk9c+38aqLcXYbHY5h/2sqLyKR19fwymT+vH0ext88jPiYyN57g+zqalrpFeAJ+e6azNBaa2vAFBK7QP+rLXuWKmSACAhLooTJ/QNdBjCR8YOScdkMgaZvSU+1tMZIMezWZ0rSXhns4Ls3j3ISI6lpKKG7QUVDB/QLefmB8zdzy6lqLyabXsqfPYzKo/W0yM+ih7xUe0f7EcencFa6z9IchKiZT3io5g+prdX39wdWTrpuMd6cQwKjG7MKVLNFxB2u52i8s6PR3oqWLdV8fhjmlLqYozVywcATd6JWuvOdZYHqYbGrpWUi+7nD1dNwWqzU3m0jgiLmX++ncvyTZ2/mHdk6aTjH2ucv11ZLLa5qaMy+XjxblZsLuLKuWH1dg9qHV0NorNGBXDX3LZ4utTRLcDDwKvAmcArwFBgPPC0z6ILEOeSH12VMzwjKMuQhW9YzCbX2FFnt1t3ar5tQkd4s8zcadSgNOJiIthbdITCsip6p8V77blF65ZtKvTp8998wVgS46OYFqTFL56ewfOAm7TWv8AojnhQaz0Lo0Ai8NONvezQkc4lqL7pCa7//+riCdx7/XTOPXmIt8ISIaSry8RYrXby9h1yrYvWocd6YTXz5iIjzK7lmFZs9u1FUxyzdIPvXuv5109jzoyBzBzXt8sfqHzF06gGAN87/l8HOIvkXwAu93ZQgdaZSbmx0RFNPlXOniLznbqz06dlc+XcEa7vzzlpUIcev3PfIW5/4gfuemYpHy/u2DbxNi+XmTtNG22MQzmX7BK+VVRexa79lT57/lAYyvA0QZUBSY7/78fYVRcgg3BsQXVqwNDORY4Vn8+bJa2m7s5iNnH61AGu789w+78nvlld4Fpe640vdIcuJt5ai6+5SSN6ERlhZmv+QSoO17b/ANElyx3de7HRFq8833U/abr5eUND+CSoxcBsx//fAR5TSr2EsczRQl8EFkid6eI7b9ZQRgxM4e0HzuKas4NnopsInOioYxeWHvHRnDqpX6ee50h1PbkdmJfnjf2gWhIXE8mEYRnY7b4fGxHHuvdOGOudKSpRkU0TXbCVlLfE0zP4lxiJCeBB4HGgL/A/4AYfxBVQnSm5vHi20XqKje78/BURXqLdLghms6lTXW7nO1rj36/d5/FjvF1m7m7GWGMwfemGA15/bnHMwcO1bNtzkMgIM1NGdX31GbPZRITb+XDVWSODYkPC9rR7NVVKRQLnAJ8CaK2twP0+jiugOtPFJ7PrRXMm07FzIirSzCWnD2fhyr0ePz42OoK5Jwzk/e92smprEY1Wm0eD2b4oknCaMioTi9nExrxyDlfVh8Sn8FC0YlMhdruxd1x8bNcXl37y9lMorahxff/TU4d2+Tn9od2z3bG1xlOE4VhTazraghrar6WF3oWAf95+Co/88kRioiJIT45lcFZS+w9y6JUSR6+UOPr1SqCmzor2cCUBXxVJACTGRTFmSBo2m52VUs3nM0sdhSjTx/TGbOr637Ffr0QmqHQumj2Me66d2uXn8xdPu/hygRHtHhUmOpqg7rl2mo8iEaEuu3cPlNvSQPYOjEun9TRWSZ8wzNhzytNxKNcYlI9Kh2eMNbZiWOLDEuju7Eh1PRt3lmE2Gyt4eKslbDKZuGLOCCaPzPTK8/mDp2fwfOBvSqnzlVL9lFIp7l8+jC8gDnWwzLxnYrdpXIouOjnH8wHvpASj+8y5KWLudk8TlKOLz0e9ztNGZ2IywbrtpVTXNvjmh3RjKzcXYbXZGTs4jcS4qC63hB+8+QQvReZ/niaozzG21ngXyAdKm32Flaoaz990c2Zk+y4QEXZ+0oGJ24lxRoIaPSiVCIuZHQWHmmwV3xqbD8egAJITYxg5MJVGq022gvcB5zyz6Y6ClK7+HUcPDv5iiNZ4WnI2x6dRBBGbzU5NnWc7h5pNcNP5Y30ckQgnFrMJs9nkSiJtSYgzBsdjoiMYOTCFDTvL2LCzjBPGtr3bqXOZJF8W7swY25vNu8pZtvEAs3KyfPZzupvq2gbW6hJMJmP9Q6BLY1AjB4Z2B5dHCUpr/YWvAwkWniSn6CgLf7puGv17JTap1BLCE3HRERz1oJXubEEBjBmSxoadZWzK8yRBGf96Y3C9NTPG9OH5/21i9dYSausaiZHpFV6xfFMRDY02Rg1KJTXJGIPs7AeNuJgIHrx5pjfD8zuPR1GVUgOVUg8opd5RSvVy3DZHKRVWs1Kra9tPUGYTjBmcRlKCjD2Jjpt/vWdFNYmxxxLUaMdq05vyyls73MXVxefDBJXWM5bhA5Kpb7CySrr5vOaHdfsBOMlt/7jOjEG99Ze5vHbvnJCf/uJRglJKTQc2ASdjzIlyLjqXA/zJN6EFhieDvhc6ljQSojOUhxv+Obv4AIb1TyYqwkx+4eF2q0x9PQbl5NyEc9E6zycRi9Y5Vwwxm4wWqlNn/o5xMZFERgTnArAd4elv8BDwV631CRirmTt9DYRVjbWzBdXah89bLhwfMpPcRGiLiznWbRYVaWF4tpHYtuxuuxVl98MYFMDMcX0xmWD11pIOFRaJli3bWGhU7w1Nb1IZHOqtoK7wNEGNB15r4fZCjAVjw0aVowXl3v/vrl+vBBl3El2WlWFszTJnenarx8RENR3XcXbzbWynm89ZJOHr0zSlRwxjBqfRaLXJCude8EOu0b134vimUxF82VUb7DxNUPVAQgu3DwHa7xQPITWOFlRiXMvLi3TnTzPCe/78ixlc/5PR/LyNhYXdF5sFGO3YY2rjzrI2n9sfY1BOzrES59iJ6JyKI7Vs2FlKhMXE9DFNNw/09qK/ocTT3/wL4Ldu39uVUj2B+4CPvR5VANXWGwmqtfWvZDFY4Q2pSbGcc9JgYqMjGD+05V2Xmyco1T+ZyAgze4oOtzkfylnF54uljpqbPqYPFrOJdTtKO7XIsjAs3VCIzQ7jh2Uc13vTjfOTxwnqt8AUpdROIAZ4C9gNpAB3+ii2gKittwLGIGNzF88exoDMHv4OSYS5+26c3uKeP827+KIiLagBydjtbVfzOVtQ/uiK7hEfxQSVgc1mZ4mscN5pLVXvOXXnXhtP50EVKqUmAFcAkzAS28vAf7TWVZ48h1IqH2Nn3uamaq1XKqWuBW4HsoEijN16/6K1bn9GoxfVNRgJKr5Zgho/NJ3L53Sb5QiFH5lMpha746Ijj09aYwansSmvnE15Zcd1BTn5Y6Kuu5Mm9GX11mIW5e5n7oyBfvmZ4aTsUA1bdpcTGWF2Tc5150lX7eVzhjN7cn8WLNzO6VPDZzdvj/urHInomS78rMmA+ztuHvBzYLVS6iTgaeA6YBEwDngVY/fel7rwMzusztGCinH7RPvK/DPoES9znoTvNLawskRLCWbM4DTeRLMxr/VxKLufysydpo7KJCrCzOZd5ZQdqnEtcis8s3j9Aex2Y8filnpu2lr099IzhjNnerar6m/eT8f5LM5A8DhBOSbk/goY6bhpC/C41nqzJ4/XWjdZs08pdTbwutbappSaCmzQWr/iuDtfKbUQmIifE5RzDCoy4liCSk6M8WcIohuyWj3rKBg2IJkIizEf6kh1fYvVpq4WlJ96huJiIpk0shdLNxSyeP1+zu3AeoMCvltbALTcvQdt/x1TekSH9WLVnk7U/SmwHmNi7lqM7TdygHWO+zpEKTUao5XkTEjLgeFKqRmO+0cCM4AvO/rcXeXs4ouJOr57RQhfufUi45OvGpDc5nHRbuNQm3e1PA7lj6WOmjtpgrEe33cd2PlXwJ6iw+TtqyQ+JoIprWyD0VZLONxL0D1tQT0IPKq1/r37jUqphzAm8b7bwZ97JZDrbH1prX9QSt0MfKOUsmB0Bf5Ba/1hB5+3y5xdfAMyE5k9uT+9UuP8HYLohk6d1J/pY/rw3ZqCdjcmHDM4jc27ytmYV8a00cePQ/mzSMJp8ohexMdGkrevkj2FhxnQW4qJPPHtaqP1NHN8X6JaGHOEtsvMLZbwTlCeVvFlAf9u4fYXgLZXrmxGKWUGLuVY6wml1BjgAeCXGC2zy4DfdKZ11lXOBBUdFcGvfjaBn/1I+TsE0U3FRkfQw4P1HUcPdqzLt/P4FpT7Kun+rP6KirS4Jph+7bjoirZZbXZXi/PUSf1aPa47t6A8TVDLMbrkmhsPrO7gzzwN6AW86Xbb74FPtdbPaa03aq3fBB6j6dwrv3B28TWfgyKEP0wf3ZuLZg/jz7+Y0eoxw7NTiLCY2V1YydFm86H8tcxRS05zXGS/W1OA1dqBrYO7qY07SymvrCUzNY4R2a2vz9jWnzJneC8fRBY8PO3iewb4u1JqCEayAmMNvpuA3ymlcpwHaq3XtvNcVwJfaq3dl0COA440O85GB1Zb9xZXC6qV5rYQvmQ2G9tytyU60sKw/j3Zsvsgm3eVM9Wtm8/fBRLu1IBk+qTFc6CsinU7SpkY5hfPrvrG0dI8ZWK/NrtjW7pv7JA05l8/rUkxVzjyNEE5WzsPtHKfHTA5/m31FVNKxQPnYZSTu/sUeFwp9QOwDBgN/Bp40sP4vMZZxSdFEiKYjRmcxpbdB9nULEFZ/bjMUXMmk4lTJ/Xjtc+38c2qAklQbaipa3StX3jKxNa791pjNpvCPjmB5wnKWzNUzweswAfuN2qt/+1YOmk+0A9jou7zGMUZflXv6OJrbcBSiGAwZnAab321/bj5UHZnBV+AVh84ZaKRoJZvKqSqpqHVJcO6u2UbC6mttzIiO4XeafHtP8DBZDL+xjPHdWjoP2R5upKE9sYP01q/ijEBt6X7HgEe8cbP6YqGRqPvPBz2UhHhS2UnE2ExsXt/JUdrGkhwJIJAVPC5y0iJY6xj99/F6/dzxrTsgMQR7L5ZvRdouziiJX/+xQzMJhMjB6b6Iqyg05GJuokYq0Fk0GxsSGv9hpfjCpgGqzNBSQtKBK+YqAiG9ktma/5Btuwud82h8fcyRy05ZWI/Nuws4+tVBZKgWlBYVsX6HWVERVqYOb7lybmtSYyLYmCfJB9FFnw8naj7Y2Av8BXwBsbeUM6vFltEoUpaUCJUuMrN3RaO9edWG605YVwfYqIsbM0/SEFx89onsXDlHsDopkvoYBdod+sy9fQq/A/gbaCP1trc7CusmhqSoESoGDPYsT+U2zjUsRZUQEICjPlcJ+cYK0t8sXxP4AIJQlarja9WGt17p09tae3slt1x1WRuOHcMGcnda+EAT0/jTOBhrXWRL4MJBg2OIonINhZoFCIYjMhOwWI2sWvfIaodO0EHQwsK4IxpxsX3m9V7XYVHAlZtLabiSB1ZGQmMHNj63KfmThjbh7NPHOTDyIKTp1fhTzHmPYU1u93uNgYlCUoEt5joCIb264nNDlt2HwQCX8XnNCSrJ4P6JnGkuoGlsh28i7NFefrUAQErZAklnhZJ/AJ4XSk1FtgINLjfqbV+29uBBYLVZsduN97cbS1xL0SwGD04jW17KtiUV8akEb0CXsXnZDKZOHPaAP713ga+WJ7PLEeXX3dWdqiGtduKibCYOly91115ehU+EZgJ/A6jKGKB29ebbTwupMj4kwg1zcehgqGKz+nknCxioixsyitnX4kUSyxcuRebHaaN7k2SB2suCs8T1OMY27z3B6KASLev4zekCVGuBCWtJxEihmcnYzab2LmvkuraBleCsgRB91FcTKRrG47uXixhtdld1XsdKY7o7jzt4ksHHtJah/VmLw2NjgIJaUGJEBEXE8nQrJ7ovRVszT9IrxSjyisI8hNgFEt8uWIPX68q4Io5I7rtCi0rNxdRWlFD79R4xg1ND3Q4IcPTK/HnGJN0w5p08YlQ5D4fKliKJJyG9nMWS9SzKHd/oMMJmI8X7wLgrJkDg+ZvEwo8bUEtBB5x7Nu0geOLJN73dmCBIAlKhKLRg9N479udbMwrcxUjBMtF0GQycfbMQTz+Vi4f/bCL0ya3vXJ3ONpbdJgNO8uIjrJw2uT+gQ4npHiaoJ52/PuHFu5rcwXzUHIsQYXFryO6iZEDU4xxqIJDVNcaq/EHeh6Uu5Mm9OXlTzaz60Alm3aVuwo7uouPl+wG4NSJ/Tq8ckR352lTIbaNr7CZ2ixjUCIUxcVEMrhvElabnc27jWWPgilBRUVaOHN6NgAf/bArsMH4WVVNg2tb97NmDgxwNKHH09XM63wdSDCQLj4RqsYMTmNHwSE27CgFwBRkp/DcGQN575sdrNhUSPHBalcxR7j7atVeauutjB2SxoDMHoEOJ+R4fBorpS5RSi1TSpUopbIdt/1aKXWOz6Lzs0bHKhIRUmYuQoyzUGKzY0WJYGpBAaT0iGHm+L7Y7McKBsKd1WrjQ0eL8cczu98yRd7g6WrmV2Ns+/4NkOD2uErgVz6JLAAarUYJVIS0oESIGTkwFbPp2IabwVIk4e4cx1pyC1fsoaauMcDR+N6SDQcoOVhNn7R4pozKDHQ4IcnTK/GvgRu11n/E2BHXaTXG9uxhwdmCsgThm1uItsTHRjKo77F9goKtBQUwtF8yI7JTqKptZOGK8J64a7fbee/bnQCcN2uIXFM6ydMENQRY1sLtR4Cw2T3L6mxBSRefCEGj3arjgrEFBXD+KUMA+O93O11jvuFow44ydu2vpGdCtKy71wWeXolLgJZKUKYC+V6LJsCkBSVCmXv5djC2oACmjMykX69Eyipr+W5NQaDD8Zn3vt0BwNknDuq2q2d4g6cJ6nWMiboDMOY9RSilTgUeBv7jq+D8zWqTFpQIXSMHpbqWOArS/ITZbOLC04YCxkXc+Z4LJ7v2V5K7vZSYKAtzZ2QHOpyQ5umVeD6wE9iNUSSxBWN1iUUYSSosWJ0tKEuQvruFaEOC2zhUsHbxAZw0vi8ZKXHsL61ieRjuFbVgoQbg9GkDSIgLm7W0A8KjBKW1btBa/wwYAVwJXAOM0VpfrrUOm47kRmlBiRA3epDRzRfMCcpiMXP+LGMs6u2vt2O3h08ratf+SpZtLCQqwswFpwwNdDghr82JukqpXcBkrXU5gNZaA9ofgQWCVcagRIiboNL5YFFe0C+pM3tKf95aqNm1v5Llm4qYPqZ3oEPyije/3AbAmTOySekRE+BoQl97TYVswmSdPU80ShWfCHE5KoM/XDWZa84eFehQ2hQdaeHC04YB8NrnW8NiLCpv3yGWbyoiKsLMT6X15BVyJXZzbAxKXhYRmkwmEzPG9iE1KTbQobTrzOkDSE+OZW/REX7IDf2t5t780uhcmjNjIMnSevIKT9biy1JKtflqa633eimegGq0OZc6ki4+IXwtMsLCJT9SPPH2Ot74QjNzfN+Q7b3Qew6yYnMRUZEWLnDM9RJd58nZsAqjeq+lr3zHv2HBOVHXYg7NN4kQoebUSf3omx5PYXkVX60Mzc+5drudFz7cDBjLOUnryXs8aUGdCxz0dSDB4NhisdKCEsIfLBYzl50xgr++tpo3vtjGSRP6EhcT3AUezS3bWMjW/IMkJUS55ngJ7/AkQa3QWpf4PJIg4GpBhWg3gxCh6IRxfVCLktF7K3jn6x1cddbIQIfksYZGGy9/sgWAS04fHnLJNdi1dyUO/dKaDpAxKCH8z2w2cf25xprT//s+j8KyqgBH5LnPlu2msKyKvukJnDFtQKDDCTvtJahudaWWMSghAkMNSOHUSf1otNp48aNNgQ7HI4eO1PHGF0bl3s9/PDJkCzyCWZuvqNba3F2690DGoIQIpCvnjiAmysLyTUXkhsBl58WPNlFV00COypD9nnxEUr4bGYMSInBSk2K5aLYxefdf762ntj54NzXcsLOUb9fsIyrCzC/OH4spWFfnDXFyJXbjHIOSpY6ECIxzTx5Cdu8eFJVXu7rPgk19g5V/vbsBgIt+NIzeafEBjih8SYJyIy0oIQIrMsLMrReNx2yCD77fyfa9FYEO6TivfraV/aVHycpIcC16K3xDrsRurFLFJ0TADeufzDknDcZmh8cW5AZVV9/GvDI+WJSH2WzitktyiIzoNkuVBoQkKDdSxSdEcLjszOFkZSRQUHyEFx2rNARadW0Dj725FrsdLjxtKMP6Jwc6pLAnV2I3UsUnRHCIiYrgt5dPIsJi5rNl+SzbeCCg8djtdp54ax0lFTUMzkri4tkqoPF0F5Kg3DiX/JcWlBCBN6hvElf/2FhV4vG31nGg7GjAYvlgUR5LNhwgNjqC2y+bSGSEXCP8QV5lNzZXgpIWlBDB4JwTBzF1VCZVNQ38+cUVVNU0+D2GTXllvPSxsZzRr342gayMRL/H0F1JgnLjbEEF83bZQnQnJpOJX1+aQ//MRAqKj/LI62v8urlhQfERHnh5JTabnfNnDeGEsX389rOFJKgmbJKghAg6cTGR3H3NVBLjoli9tZh/vp3req/6UnllDX96fhlHqhuYPLIXV84d4fOfKZqSBOVGuviECE6ZqfHcdc0UoqMsfL2qgGf/uwG73XdJquJILX96bhmlFTWoAcn87opJMj8yADzZbsMrlFL5QEvL/U7VWq9USiUADwAXAUnATuAyrfUGf8VotUsLSohgNXJgKnf9fAr3vbCCT5fmYwduPG+s1z9QllfW8Menl7om4959zVRiovx2qRRu/PmRYDLQ2+3rz8B+YLVSygT8FxgN/BQYCfwaOOzH+I518cm6WkIEpfHDMrjjqslERpj5bGk+D768kto6703k3VlwiNsfX8T+0qNk9+7BgzfPJCkh2mvPLzrGbx8LtNal7t8rpc4GXtda2xz/nwhka62dScnvW8m7uvhkHpQQQWvKyEzuv3EGf35xBSs2F3HbY99zx5WTGdC7R6ef0263s3DlXp59fwP1jTZGZKdw97XGuJcInIB0qiqlRgPjgFccN50FrAHuVUoVKaU2KKV+4e+4rNKCEiIkjBqUyl9vPZF+vRLZV3KU2x77nje/1NQ3WDv8XEXlVdz3wgr++fY66htt/GhKf/5y0wxJTkEgUB2rVwK5WmvnGibZwEnAQYxkNRr4l1LqoNb6bX8FJVV8QoSOfr0S+fuvTuK5/21k4cq9vPHFNhau3MO5Jw/mR1MGEBvd9uWtoPgI+vMsYgAAC3JJREFUHy/exZcr9tBotRMfG8mN541hVk6WbJ8RJPyeoJRSZuBS4BG3m81AA3CN1roKWKOUGg9cC/g9QUkVnxChISY6gl9ePIFTJvXj2fc3sKfoCM//bxP/+XgLE1QGIwem0j8zkbiYCOx2OFhZy64DlazfUcqOgkMAmExw6qR+XDl3BKlJsQH+jYS7QLSgTgN6AW+63VYM7HMkJycNnOHPwKSKT4jQNGZwGk/85hRWbC7ig0V5bN5VzorNRazYXNTqY2KiLJw0IYtzThzUpfEr4TuBSFBXAl9qrYvdblsOnKuUitVa1zhuGwLs9WdgUsUnROgym01MH9Ob6WN6U15Zw+qtJezaf4gDpVXU1jdiB1KTYuidGs/owWmMGpTabjegCCy//nWUUvHAecB1ze56HfgT8LRS6kGMMagbgKv9GZ9U8QkRHlKTYjlj2gBannopQoW/q/jOB6zAB+43aq0PYXTnDQPWYUzYvV1r/b4/g5MWlBBCBA+/tqC01q8Cr7ZyXy4ww5/xNCeLxQohRPCQxaXc2OxSxSeEEMFCEpQbm83YUVdaUEIIEXiSoNw4dnyXMSghhAgCkqDcSBWfEEIED0lQblxdfNKCEkKIgJME5WC323Fu0iljUEIIEXiSoBycyclkQhaKFEKIICAJysHZvScl5kIIERwkQTnIXlBCCBFcJEE5yF5QQggRXCRBOTjHoKSLTwghgoMkKAerVVaREEKIYCIJysEmmxUKIURQkQTlINu9CyFEcJEE5SBVfEIIEVwkQTlIFZ8QQgQXSVAOx/aCkpdECCGCgVyNHaxWZwsqwIEIIYQAJEG5SBWfEEIEF0lQDuk9Y0lOjGb4gJRAhyKEEAKICHQAwSIuJpKX7j4di0VythBCBAO5GruR5CSEEMFDrshCCCGCkiQoIYQQQUkSlBBCiKAkCUoIIURQkgQlhBAiKEmCEkIIEZTCaR6UBaCoqCjQcQghhGjG7dps8fQx4ZSgegNcdtllgY5DCCFE63oDeZ4cGE4JahVwIlAIWAMcixBCiKYsGMlplacPMNkdi6QKIYQQwUSKJIQQQgQlSVBCCCGCkiQoIYQQQUkSlBBCiKAkCUoIIURQkgQlhBAiKEmCEkIIEZQkQQkhhAhKkqCEEEIEpXBa6qjLlFJ/AG4FegJfAjdorUsCG5X/KaVeBq5qdvNtWuvHAhCO3ymlzgfmAZOAHlprU7P7pwJPAaOBXcBvtNaf+T1QP2rrNVFKzQK+bfaQ9Vrr8f6L0H+UUn8ELgSGAhXA+8CdWuujbsd0q3Okvdeks+eItKAclFI/B+7EeBPOwEhSbwY0qMB6G2PdLOfXc4ENx6/igG+Ah5rfoZRKBT4DlgA5wKvAf5VSQ/0aof+1+pq4cT9fTvNHUAEyA/grxt//UuB04J/OO7vpOdLma+KmQ+eItKCOuRX4u9b6vwBKqWuAPKXUaK31psCGFhA1WutuuXeJ1vo1cH3qa+4y4DDwf1prO7BFKTUHuBG43W9B+lk7r4nzmG5xvmitz3L/Vil1N/Cs223d7hzx4DVxHtehc0QSFKCUigbGAbc5b9Na71JK5QNTge6YoM5RSpVirA7/JvA3rXVjgGMKBlOAbx0XHqevgdkBiidoON4vZmAp8Dut9d6ABuQ/acAht+/lHDn+NQE6fo5IF58hFeO1aD7eVApk+D+cgPsUo5l+KvB34NfAfQGNKHhkIOdJc4XAtcBPMMYuM4BvlVKxAY3KD5RSSRitohfdbu7W50grr0mnzhFpQRlM7R/SfWit33b7dqNSygo8rZT6Y7NPhd2RnCvNaK01oJ3fK6VWA3uBHwPvBCouX3P0vLyHUQThPjbXbc+R1l6Tzp4j0oIylAE2jv+Ek87xn4S6o7VAPEazvbsrRs6TNmmtjwA7gewAh+IzSqkIYAGQCJzXrPu7W54j7bwmTXh6jkiCArTWdcB64BTnbUqpgRgv3ooAhRVMRgPVGIm8u1sJzGp226nIeeLi6LYZBOwJdCy+oJQyA68AQ4A57uXlDt3uHPHgNWl+vEfniHTxHfMk8JhSKhfIB/6BMdDZ7QoklFJ/B97C+CSYgzEO9Wx36d5TSqUA/THebCilnHM1tgCvA/OVUo9hVCmdg1FIc10AQvWbdl6Tq4EiYDPG9Iw/AUcxxjLD0XMYCWguEKWUynTcXqq1ttI9z5E2XxOl1A104hyRBOWgtX5RKdULeAZIAhYCNwQ2qoAZCXwM9MDoJ34WeDigEfnXOcBLbt/nOv4dqLXOV0rNxZiEeRNGX/v5Wusdfo7R31p9TYBIjA8xWUAlxvyf09r7FB3CrnX8m9vs9oFAvta6vBueI22+JnTyHDHZ7d3iQ7EQQogQI2NQQgghgpIkKCGEEEFJEpQQQoigJAlKCCFEUJIEJYQQIihJghJCCBGUJEEJ4UYp9Z1S6t8BjuGfSqkngymmtiilBiilypRSvQMdiwgvMlFXdAtKqfYm/O3RWmcD5wMB21ZEKaWAn+NYsSEUaK33KKXeBu4nvFdLEH4mLSjRXbjv5PkTx21T3G6bDKC1Pqi1PhyQCA2/BD4Nls3/lFJRHh76b+BypZQsKCy8RlpQoltwv+ArpQ46/lvaPBEopb4Ddmqtr3P7Pg9jP5sbgCiMJWzuBu4C5mF80HtOa/1Ht+eJcNx/FUYCzAOe0Foft8uo22PMwCXALa3cf7fj50UBHwLztNZVjvtMwG+AmzGWkykA/qm1fszt8fnAv7XWf3a77d/AEK31rGa/7wGM1lAEkK6U+gkwH1BAPbAduFFrnfv/7d1PiFVlGMfx7yI3jgkOtFFKDOShpglFNw6mMEGgtAgaWrRoE1TMEJHCZDNLxWYQwYXMgDnislHQFkVZLUYXRVNTKUHzOIGSSlNC0EBRDlmL5712OHPuPXO9I3OQ3wcu554/733fs5h5eN/znvcBcPdvzOwXoIdYLkykZepBiZTrIdYS204kbxwg1ipcBTxFJGcbSGm9a44Tw4WvAo8RCR+Hzexl6usE1hCrYRe1oZ1YkPNF4DmgP3O+lxhiGwI6gEPAUEl99bxApId4GuhOC3+eJjIrdwDbgCMsHAr9kkxGAJFWqQclUu6Ku7+Vvl82s73Aw+6+O3NsD/EP/aOUquUl4HF3n679Rnq+9DowVqeeDWl7o+DcT+7+Zvo+bWbvAc8Qq0ID7CN6TMfS/kyqb7BBffX8DPS6+20AM9tMBOhT7n41XfNDQbnrRMAWWRIKUCLlLub2Z9Mnf6yWpG4rkVX164gRdzwA/NOgnlr6678Lzn2X279BBCjMbDUxrHchd8154A0zW+nufzaoN2+qFpySS8A54Hsz+xSYAM64+7Vcub8y9yDSMg3xiZSbz+3/W+dY7e+ptu0CNmU+TwBPNqjnZtquKTh3q0F92WNZ+dTjtwuOrSio64/sTspxtItIuvcV8DzRa3w2V66d/+9BpGXqQYksvam0fcTdP2ii3LdEkOlgYW+oLnefM7PrwE7gw8ypHcTwZK339CuwNld8M/AbJVKyysn0OWhmHxPT4bP31wl8vth2i5RRgBJZYu7+o5mdAN41s37gC6AN2AI85O6FyR9TortJItAsOkAl7wCHzWyGGILrJpLl9WWu+QzoNbOzRKrt14D1lAQoM+sinq99Qjyf2kj0BMcy1zyY7m+w6DdE7oYClMi98Qox7XsQeBSYI9JdH21UCBhNZfY3Wd8oEQQHgBFimvk+d89OkBgmAtI4MUQ5QszOK3sp+Hdi5l4fMfw4S6Q1z7axh8gmO9Fku0XqUkZdkQoxsxXEpIS33f395W7PYqT3ty4CB9x9fLnbI/cPTZIQqRB3nyde7m1b7rY0YR1wUsFJlpp6UCIiUknqQYmISCUpQImISCUpQImISCUpQImISCUpQImISCUpQImISCX9BzLPgQYz/1M5AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "execution_count": 7, "metadata": { "needs_background": "light" }, "output_type": "execute_result" } ], "source": [ "results = run_simulation(system, update_func)\n", "\n", "plot(results.Tin, label='Temperature')\n", "decorate(xlabel='Time (hours)',\n", " ylabel='Temperature (F)')" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "results: Based on the graph that is shown, with you include the vent in the model the temperature stabilizes at a little over 80 degrees farenheit. Comparatively, without the vent included the graph of temperature over time continues to increase to a temperature much too hot for plants." ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "Interpretation: Our model takes in equations of the flows going into and out of the greenhouse and determines the temperature of the greenhouse as well as the role the vent plays. There are many limitations of this model. For example, the equations are calculated espqciallt for a green house that is dimensioned the same way ours is. The temperature settings are also tuned to mimick the temperature in Needham in April. If the temperatures inputted became too low the model would no longer work, since many greenhouses have a furnace in the winter." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 0 }