{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Control Volume\n", "\n", "A control volume is one the core data containers of PDSim. It primarily contains a state class (for the thermodynamic properties) and a function that is used to obtain the volume and derivative of the volume for the control volume. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2026-06-11T00:11:11.486310Z", "iopub.status.busy": "2026-06-11T00:11:11.486137Z", "iopub.status.idle": "2026-06-11T00:11:11.849915Z", "shell.execute_reply": "2026-06-11T00:11:11.849163Z" } }, "outputs": [], "source": [ "## COMMON IMPORTS ##\n", "from __future__ import division, print_function\n", "import matplotlib.pyplot as plt, numpy as np\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2026-06-11T00:11:11.851817Z", "iopub.status.busy": "2026-06-11T00:11:11.851585Z", "iopub.status.idle": "2026-06-11T00:11:12.930236Z", "shell.execute_reply": "2026-06-11T00:11:12.929077Z" } }, "outputs": [], "source": [ "# Imports for this example\n", "from PDSim.core import ControlVolume\n", "from CoolProp.CoolProp import State" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2026-06-11T00:11:12.932081Z", "iopub.status.busy": "2026-06-11T00:11:12.931807Z", "iopub.status.idle": "2026-06-11T00:11:12.936148Z", "shell.execute_reply": "2026-06-11T00:11:12.935460Z" } }, "outputs": [], "source": [ "# Create a State instance\n", "state = State('R410A', dict(T=300, P=101))\n", "\n", "# The function that will return the volume and derivative of volume\n", "def volume_function(theta):\n", " \"\"\"\n", " Sinusoidal volume profile (recip-like).\n", " \"\"\"\n", " Vdead = 4e-6 # m^3\n", " Vdisp = 20e-6 # m^3\n", " V = Vdead + Vdisp/2*(1-np.cos(theta))\n", " dVdtheta = Vdisp/2*np.sin(theta)\n", " return V, dVdtheta\n", "\n", "# Now we create a ControlVolume instance\n", "CV = ControlVolume('key1', volume_function, state)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2026-06-11T00:11:12.937881Z", "iopub.status.busy": "2026-06-11T00:11:12.937722Z", "iopub.status.idle": "2026-06-11T00:11:13.206554Z", "shell.execute_reply": "2026-06-11T00:11:13.205814Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkUAAAGyCAYAAADqAbD9AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVSBJREFUeJzt3Qd0VNXaBuA3vRcCqaQQegm9d6Sjgoh0pIiIqCjI71VRL+r1XlEsFxVFQapK0UuXjvTeQm+BhCSEhISQ3pOZf+09mZhAEggp58zM+6x11pxMY89OmPnm2+Uz02q1WhARERGZOHOlG0BERESkBgyKiIiIiBgUEREREekwU0RERETEoIiIiIhIh5kiIiIiIgZFRERERDqW+Zf0CDQaDW7fvg0nJyeYmZmxz4iIiAyA2JIxJSUFPj4+MDcveZCMQVEZiIDIz8+vIn4/REREVMUiIyPh6+tb4u0MispAZIj0ners7Fz+3w4RERFVuuTkZJnU0H+Ol4RBURnoh8xEQMSgiIiIyLA8bOoLV58RERERMSgiIiIi0mGmiIiIiIhBEREREZEOM0VEREREDIqIiIiIdJgpIiIiImJQRERERKTDTBERERERgyIiIiIiHWaKiIiIiBgUEREREemwICwRmZw8jRYxyZnQarWl3s/awhzuTjYPLSJJRMaBQRERmYTkzBzsvxaHvy7HYs/VWCSm5zzS4wKq26NnQw/0buSJtrXcYG3JWQdExspM+7CvSlQgOTkZLi4uSEpKgrOzM3uGSOVu3k3DX1di8dflOzgedg+5mr/f7izNzWBhXnoGKCdPg0IPgZONJbrVd0evRh7o0cADbg7Wldl8Iqriz29miojIqFy6nYwNZ6Kw6/Id3IhLK3JbHXcH9GrkiV4NPdA6oBosLUrP+qRl5eJAyF0ZVIns0t3UbGw+Hy0PEU+18q+Gno08MLSVLzycbSv5lRFRZWOmqAyYKSJSr3tp2fhi+xWsOhEJff5bZIPaBboVDH/VquHw2M+v0Whx9laiHH4TAdeVmJSC2xysLfBGr3p4oXMgh9eIDPjzm0FRJXQqEVXtpOkVx8Lx5Y5rSMrQzRPq38QLTzXzlkNdLnZWlfLvRiVmYPflO/jj1C2cu5VUkIn6aFATdK3nXin/JhE9HgZFlYBBEZG6nLx5D7M2XMSl6GT5c0MvJ/zrmSCZHaoqIoP0v9O38PnWK4hPy5bXDQjywvtPNYJvNfsqawcRlYxBUSVgUESkDrEpmfhs6xWsPR0lf3a2tcRb/RpgdDv/h84TqiwiSzV31zUsPxIus1e2VuZ4rUddvNStNmytLBRpExHpMCiqBAyKiJQlVoMtO3wTc3eFIDUrF2L7oBFt/PCPfg1Q3dFGFb+ey9HJ+HDjRbnaTb+k/8OBjdGzoafSTSMyWcmcU6RcpxJRxYuIT8fkX04WTHBu7uuCj58JQgs/V9V1t9jpZOPZ2/h0y2XcSc6S1z3V1BtfDmsOO2tmjYiqGoMiBTuViCrW2chEvLjshFwSX83eCu/0b4jhbfxg/pB9hpQmslnf7Q7B4oNhyMnTygBu0fg2qslqEZmK5Ef8/ObWrESkamKPoJELjsqAqLG3M7ZN74aR7fxVHxAJjjaWmDmgEVa+1AGu9lY4E5mIIfMPI+xu0f2TiEgdGBQRkWr9ejQcLy0/iYycPHStVwO/T+kITwPcJLFNLTeseaUT/NzsEB6fjiE/HMKp8ASlm0VE92FQRESqI5a5f77tCj5Yf0GW2RjW2heLJ7SVmRdDVcfdEWtf6Yxmvi5ISM/B6IVHse1CjNLNIqJCGBQRkapk5ebhzd/PYP7eG/Ln6b3rYc7QZrBSaKl9RXJ3ssGqyR1kmZGsXA1e+e0UlhwKU7pZRJTP8N9liMhoiL1+xi8+jg1nbssSHV8MbYbpvevDTKy9NxL21pb4aWxrjGnvL8uRfLzpEv795yWZHSMiZTEoIiJVEGUzhv14GEdD78lhMjFcNqyNH4yR2GDy34OD8Hb/BvLnnw+G4fWVwcjMyVO6aUQmjUERESnuRlwqnv3+EK7dSYWHkw1Wv9xB1i0zZiL79WqPupg7ogWsLMyw+Xw0xi06jvTsXKWbRmSyGBQRkaLupmZhwpLjiE3JQn1PR6x7rTOa+LiYzG9lcMuaWDaxHZxsLXH85j28sfKMLBNCRFWPQRERKSYjOw8vLjuJyHsZ8Hezx4qXOqCmq53J/UY61amBJRPawtrSHLsu38Enf16Su2ITUdViUEREihDZkGmrguVu1WJjwyUvtEUNE97pWexl9N/hLeT50sM3seggV6URVTUGRUSkiP9svowdl+7A2sIcC8a2kfv4mLqnmnlj5oCG8vw/Wy5j6/lopZtEZFIYFBFRlRN78yzO35/nq+HN0S7Qjb+FfJO71cbzHXTL9aevPoPTEdz5mshkg6LZs2ejbdu2cHJygoeHBwYPHoyrV68W3J6Tk4N33nkHTZs2hYODA3x8fDBu3Djcvn271OddunSpXO1x/5GZmVkFr4qI9LZfjMG//rwkz0Vh14HNfdg5hYj3pY8GNkHP/A0eJy07ifB41kojMsmgaN++fXjttddw9OhR7Ny5E7m5uejbty/S0nRvCunp6Th9+jT++c9/ysu1a9fi2rVrGDRo0EOfW1TGjY6OLnLY2hpeHSUiQyUKoop5RCILMrq9P6Z0r610k1S7j9F3o1oiqKYz7qVlY8KSE0hIy1a6WURGz0yr8iUOcXFxMmMkgqVu3boVe58TJ06gXbt2CA8Ph7+/f4mZounTpyMxMfGx25KcnAwXFxckJSXJAIuIHl3kvXQ8+8MhWe2+RwN3/Dyujfzwp5LFJmfi2R8Oy40t2wRUw6+T2sPWyoJdRlRJn9+qf0cSL0Bwc3Mr9T4i5ezq6lrqc6WmpiIgIAC+vr54+umnERwcXOr9s7KyZEcWPoio7BLTszF+yXEZEDXxcca80a0YED0CD2dbuSpP7GF0MjwB//fHWZYDIapEqg6KRBJrxowZ6NKlC4KCgoq9j5gT9O6772L06NGlRn8NGzaU2aKNGzdi5cqVctisc+fOCAkJKXV+k4gs9Yefn3GWHCCq7AKvk385hdC4NPi42Bp8tfuqVt/TCT8931q36/W5aHy+/YrSTSIyWqoePhNzizZv3oyDBw/K7M79xKTrYcOGISIiAnv37i3TkJZGo0GrVq3kkNy3335bYqZIHHoiUyQCIw6fET2699adx4pjEXCyscT/XumEBl5O7L7HsObULZkpEr4Z2QLPtKjJfiSq4OEz1X5de/3112VWZ//+/SUGRMOHD0dYWBh2795d5jk+5ubmcpVbaZkiGxsbeRDR49l2IUYGRKLI/bwxrRgQlcNzrX0RdjcN8/ZcxwfrLqCVfzX4udnzT5PImIfPROJq6tSpclWZCHYCAwNLDIhEQLNr1y5Ur179sf6dM2fOwNvbu4JaTkSF3UnOxLtrz8nzyV1ro7uRF3itCtN710Mrf1ekZOXizdVnkJunUbpJREbFXI1DZr/++itWrFgh9yqKiYmRR0ZGhrxdLNEfOnQoTp48id9++w15eXkF98nO/nvJqti7aObMmQU/f/zxx9i+fTtCQ0NlMPTiiy/KyylTpijyOomMmUajxYzfzyAxPUcuK/+/vg2UbpJREKv1vhnZUs7JEhOvv99zQ+kmERkV1QVF8+fPl2N+PXr0kFkc/bF69Wp5+61bt+Swmrhs0aJFkfscPny44HnEPCOxD5GeWIo/efJkNGrUSO57FBUVJYfmxFJ+IqpYPx8MxaHr8bCzspAf4qLQKVUMMWT2yeAm8vzb3SE4Fc4dr4lMYqK12nCfIqKHuxCVJPcjysnTYvaQphjVrvi9w6h8xCaYG87chp+bHba80RVOtlbsUiJj36eIiAxHRnae/LAWAVG/Jp4Y2ZbbWFSWTwYHwbeaHSLvZeDDDRcr7d8hMiUMioiownyy+RJuxKXB09kGnw1pJjdVpcrhbGuFuSNawNwMWBschQ1notjVROXEoIiIKqzQq375/dfDW6CagzV7tpK1qeWGqT3ryXOxTF+UUiGix8egiIgqZvn9mr+X33euW4O9WkXe6FmXy/SJKgiDIiIq9/L7//v9LBK4/F4Vy/R/2Mtl+kSPi0EREZXLooNhOHj9Lpffq2SZ/jd/cZk+0eNiUEREj+3i7STMyS9QOmtgY9Rxd2RvKuTZlr54poUP8jRaTF8djJTMHP4uiMqIQRERPZacPI0cNuPye3Ut06/pqlumP3urLlglokfHoIiIHsuSQ2G4EpOCavZWmM3l96pZpv/lsObyfOXxCARHcLdrorJgUEREZXY7MQNzd4XI85lPNoIbl9+rRsc61TGkVU2IWgXvr7vAorFEZcCgiIjK7ONNF5GenYe2taphaCtf9qDKvPdkI7jYWeFSdDKWHwlXujlEBoNBERGVyV+X72D7xTuwNDfDvwc3hbnYUplUpYajDd7u30Cef73zmtxHiogejkEREZWpttmHG3V1tl7sGogGXk7sPZUa1dYfLf1dkZqVi3/9eUnp5hAZBAZFRPTIvtsdglsJGXKF07ReuvISpE4ig/fvwUGyNtrmc9HYdy1O6SYRqR6DIiJ6JNdjU7DwQKg8/3BgY9hbW7LnVK6JjwsmdAqU57M2XEBmTp7STSJSNQZFRPRQWq0WH6y/IPck6t3IA32beLHXDMSMvvXh6WyD8Ph0lgAheggGRUT0UOuCo3A09B5srczx4UBdOQkyDKIm2qyndb+zH/feQGhcqtJNIlItBkVEVKrE9Gz8Z/Nlef5Gr3qyzhYZliebeqFbfXdk52kwa8NFmfkjogcxKCKiUs3ZfhXxadmo5+GISV1qs7cMkJmZGf41qAmsLc1l8d5N56KVbhKRKjEoIqISiTIRolyEvq6W+FAlw1SrhgNe61FXnn/y5yUks2As0QP4DkdExcrN08gyEWKkRZSN6FC7OnvKwE3pURuBNRwQl5KFr3dcU7o5RKrDoIiIiiXKQ4gyEaJchCgbQYbPxtICnzwTJM+XH7mJ87eSlG4SkaowKCKiB8SnZsnyEIIoFyHKRpBx6FKvBgY294FGC8zaKDKBnHRNpMegiIge8N3u67I8RFBNZ1kugozLB081gp2VBYIjErH9YozSzSFSDQZFRFTEzbtp+PWorrL6ewMaseCrEfJ0tsVLXXU7XX++7Spy8jRKN4lIFRgUEVERX2y/ilyNFj0auKNT3RrsHSM1uXsdVHewRtjdNKzKX2FIZOoYFBFRkSX4m89Hw8wMeKd/Q/aMke90Pb23rqjv3F0hcriUyNQxKCIiSUy4nb3lijx/rpUvGnk7s2eM3Mh2/nKJvticc8G+G0o3h0hxDIqISPrrciyO37wHG0tzzOhTn71iAqwszPF2vwbyfOGBMMQmZyrdJCJFMSgiIrlR42fbdFmiiV0C4eNqx14xEf2DvNDS3xUZOXn4764QpZtDpCgGRUSEP07dwvXYVFSzt8IrPeqwR0ysLpp+c87VJyJwPTZF6SYRKUZ1QdHs2bPRtm1bODk5wcPDA4MHD8bVq1cfmPvw0UcfwcfHB3Z2dujRowcuXrz40Odes2YNGjduDBsbG3m5bt26SnwlRIYhPTu3YKPG13vWg7OtldJNoirWtpYb+jb2lBs6fra16PstkSlRXVC0b98+vPbaazh69Ch27tyJ3Nxc9O3bF2lpaQX3mTNnDr7++mvMmzcPJ06cgJeXF/r06YOUlJK/4Rw5cgQjRozA2LFjcfbsWXk5fPhwHDt2rIpeGZE6/XwgTNbC8nOzw5gO3KjRVL3dvyEszM2w6/IdHAuNV7o5RIow06p8j/e4uDiZMRLBUrdu3WSWSGSIpk+fjnfeeUfeJysrC56envj888/x8ssvF/s8IiBKTk7G1q1bC67r378/qlWrhpUrVz5SW8TjXVxckJSUBGdnrswhw3c3NQvd5+xBWnYevh3VEoOa+yjdJFLQ++vO47djEWjh54p1r3aSQ2tExuBRP79Vlym6n3gBgpubm7wMCwtDTEyMzB7pieGw7t274/Dhw6Vmigo/RujXr1+pjxHBlujIwgeRMfn2rxAZEDXzdcHTTb2Vbg4pbFrverC3tsCZyERsvcDyH2R6VB0UiazQjBkz0KVLFwQF6So7i4BIEJmhwsTP+tuKI24r62PE/CYRWeoPPz+/cr4iIvUIjUvFimO6nYzfHdCQ5TwIHk62mNyttuyJOduuIDuX5T/ItKg6KJo6dSrOnTtX7PDW/WldEUA9LNVb1sfMnDlTZqr0R2RkZJlfA5Hay3n0bOiBTnVYzoN0XupaGzUcbXAzPh0rWf6DTIxqg6LXX38dGzduxJ49e+Dr61twvZhULdyf4YmNjX0gE1SYeFxZHyOG5cTYY+GDyBicCk+QwyPmLOdB93GwscSbfXTlP775KwQpmTnsIzIZqguKRPZGZIjWrl2L3bt3IzBQV8lZT/wsAhyxMk0vOztbTsTu1KlTic/bsWPHIo8RduzYUepjiIy3nMdleT60tS8aeDkp3SRSmRFt/FDb3QH30rLx075QpZtDZLpBkViO/+uvv2LFihVyryKR3RFHRkaGvF0Md4mVZ59++qncZ+jChQuYMGEC7O3tMXr06ILnGTdunBz+0ps2bZoMgsQKtStXrsjLXbt2yeciMiV7r8bhZHgCbK3M8SbLeVAxLC3MCwoCLzoYJlcpEpkC1QVF8+fPl/N3xIaM3t7eBcfq1asL7vP222/LYObVV19FmzZtEBUVJQMeEUTpRUREIDo6uuBnkRFatWoVlixZgmbNmmHp0qXyOdu3b1/lr5FIySzR3F26jRrHdawFbxeW86Diic0cm/u6yPIfC/czW0SmQfX7FKkJ9ykiQ7fnSixeWHpCZokOvtNTTqgletjfi52VBQ688wT/XshgGc0+RURUgVmiv0IKskQMiOhhejRwZ7aITAqDIiITsfdaHM5GJsoskX4vGqLSyDmcvevL8+VHwhHPuUVk5BgUEZnMXCJmiah82aIFBzi3iIwbgyIiE8sSic35iMqSLRLlP4Tlh5ktIuPGoIjIBLJE3+RnicZ2CIC7EydXU9k80cBD1sdjtoiMHYMiIiO371qcLPCpm0tUR+nmkMHOLWK2iIwfgyIiE5lLxCwRlQezRWQKGBQRGTFmiagyskW/cCUaGSkGRUQmkCV6vj3nElHFZYvSs/Ow8EAYu5SMDoMiIiO1P+Tu33OJunPFGVXQSrRe+XOLjtzkvkVkdBgUERl5jTORJfJwslW6SWQkejb0QNOazBaRcWJQRGSkWaLgCGaJqJJXojFbREaGQRGRkWGWiCobs0VkrBgUERlplsjGknOJqGrmFt1Ly2ZXk1FgUERkdLtX588l6sC5RFR5ejXyQFBN5/yVaKyJRsaBQRGRETl4/S5O52eJXuaKM6rsuUW96svzZYdvIoHZIjICDIqIjMgPe27Iy9Ht/bnijKokW9TER5ctWnbkJnucDB6DIiIjIfYkOhIaD0tzM7zUlfsSUdVki17pUacgW5SenctuJ4PGoIjISPy4V5cleqZFTfi42indHDIRA4K8EVDdHgnpOVh9IlLp5hCVC4MiIiNwIy4V2y/FyPMpnEtEVcjC3AyTu+kykz8fCENOnob9TwaLQRGREViwLxRaLdC7kSfqeTop3RwyMc+18kUNRxtEJWZg09nbSjeH6LExKCIycDFJmVgbfEue6+d3EFUlWysLTOxSS57/uO8GNBotfwFkkBgUERm4RQdDkZOnRbtabmgdUE3p5pCJGtM+AI42lrh2JxV7rsYq3Ryix8KgiMiAJaXnYMWxCHnOLBEpycXOCmM6+Mvz+fmT/okMDYMiIgP2y9GbSMvOQ0MvJ/Ro4K50c8jEvdg5ENYW5jgZnoATN+8p3RyiMmNQRGSgMnPysOSQbsO8Kd3ryD1jiJTk4WyL51rXLLJFBJEhYVBEZKD+OBmJ+LRs1HS1w9PNvJVuDpEkNg4V8flfV2JxNSaFvUIGhUERkQHKzdPgp/26IpxijxhLC/5XJnWo7e6IAUFe8vynfcwWkWHhOymRAdp8Phq3EjLg5mCN4W38lG4OURFiOFfYcPY2biWks3fIYDAoIjIwWq0WP+7TZYkmdKoFO2sLpZtEVEQzX1d0rlsdeRqt3OWayFAwKCIyMPuuxeFydDLsrS0wrmOA0s0hKtYr3evKy1UnInAvLZu9RAZBlUHR/v37MXDgQPj4+MgVNevXry9yu7iuuOOLL74o8TmXLl1a7GMyMzOr4BURVRz9HjCj2vnD1d6aXUuqJDJFQTWdkZmjwbLDulWSRGqnyqAoLS0NzZs3x7x584q9PTo6usixePFiGeA899xzpT6vs7PzA4+1tbWtpFdBVPFORyTgWNg9WFmYYVLXQHYxqZZ4T9Zni5YduYn07Fylm0T0UJZQoQEDBsijJF5eupUNehs2bMATTzyB2rV1lZpL+096/2OJDIl+75dnWtSEt4ud0s0hKlX/IC/Uqm6Pm/HpWHU8EhO7MJAndVNlpqgs7ty5g82bN+PFF1986H1TU1MREBAAX19fPP300wgODi71/llZWUhOTi5yECnlemwKdly6I8+ndC/9CwCRGliYm2FyN91KtJ8PiBp9GqWbRGTcQdGyZcvg5OSEIUOGlHq/hg0bynlFGzduxMqVK+WwWefOnRESElLiY2bPng0XF5eCw8+PS59JOQvy9yXq09gTdT2c+KsggzCkVU3UcLTB7aRMbDp7W+nmEBl3UCTmE40ZM+ahc4M6dOiA559/Xs5V6tq1K37//XfUr18f3333XYmPmTlzJpKSkgqOyMjISngFRA8Xl5KF9cG6D5SXuzFLRIbD1soCL3SuJc/F8nyxpQSRWhl0UHTgwAFcvXoVkyZNKvNjzc3N0bZt21IzRTY2NnJyduGDSAm/HA1Hdp4GLfxc0TqgGn8JZFDGtPeHnZUFLkUn40hovNLNITLOoGjRokVo3bq1zP6Ulfi2cubMGXh7s2YUqb/w669Hw+W5WHHGwq9kaMTWEUNb+8rzRdzMkVRMlUGRmBAtAhZxCGFhYfI8IiKi4D5i0vMff/xRYpZo3LhxcvhL7+OPP8b27dsRGhoqn0tMzBaXU6ZMqYJXRPT41gVHyc3vROHX/k24epIMkxhC0xeKvRGXqnRziAwnKDp58iRatmwpD2HGjBnyfNasWQX3WbVqlcz2jBo1qtjnEAGU2IdILzExEZMnT0ajRo3Qt29fREVFyU0i27VrVwWviOjxaDRaLDoYVvChwsKvZMiFYns19JTni/P/ponUxkzLWW+PTGSnxCo0Mema84uoKuy5GosXlpyAo40lDs/sCWdbK3Y8GayjofEYueAobK3McfjdXrKgMZGaPr9VmSkiIhSZfzGirR8DIjJ47QPdCkp/rDimmydHpCYMiohUShR9PXj9LszNgAmddEuaiQyZWCQwqYtuS4llR8KRlZundJOIimBQRKRS+rlEA5p6w8/NXunmEFWIJ5t6w8vZVu69tens3/M+idSAQRGRCsUmZ2LDmSh5Pon1osiIWFuaY3x+5lOU/uC0VlITBkVEKt2sMSdPKzdqbOnPzRrJuIxup9vM8UpMCg7f4GaOpB4MiohUJiO70GaNzBKREXKxt8LwNr4F2SIitWBQRKQya4NvISE9B35udujLzRrJSL3QWezOLradiMP12BSlm0MkMSgiUutmjZ0CYSGWnhEZoVo1HNCnkW4zx0UHbyrdHCKJQRGRiuy9FovQuDQ42VhieFs/pZtDVKkmddUtz197+hbiU7PY26Q4BkVEKvJz/maNo9r7y12siYxZ21rV0MzXBVm5Gvx27O/alkRKYVBEpBIXbyfJlThiyEy/ZJnI2DdzfDF/McHyIzeRmcPNHElZDIqIVEI/l0hsblfT1U7p5hBVCfH37u1ii7up2dh49jZ7nRTFoIhIBe4kZ2JT/geC/pszkSmwsjAvKGMjav1xM0dSEoMiIhUQQwdis0Yxx6KFn6vSzSGqUiPb+cPe2gJX76TgQMhd9j4phkERkcLEPIoV+ZNMmSUiU+RiJzZz1K22XHJIN4xMpAQGRUQKWx8cJTdr9K1mhz6NvZRuDpEixBCafjPH0LhU/hZIEQyKiBQk5k8sOaTbuG58x1rcrJFMejPHng085Pmyw9zMkZTBoIhIQUdC4+U8CjGfgps1kqkTpT+E/526heTMHKWbQyaIQRGRgvRZouda+cp5FUSmrHPd6qjv6Yi07Dz8cfKW0s0hE8SgiEghEfHp2HX5jjznZo1Eus0cJ3QKLBhCy9No2S1UpRgUESlk2ZGb0GqBbvXdUdfDkb8HIgDPtqwps6YR99Kx+0os+4SqFIMiIgWkZeXi9xOR8vyFzizpQaRnZ22Bke10y/OXHubyfKpaDIqIFLDm9C2kZOWidg0HdK/nzt8BUSHj8ldiHroej6sxKewbqjIMioiqmEajxdL8CdYTOteCubkZfwdEhYjaf/2aeMpzZouoKjEoIqpi+0LiEHo3DU42lhjSypf9T1QM/YTrtaejkJCWzT6iKsGgiEihZfhiXyJHG0v2P1ExRB3AJj7OyMrVYOUJXRkcosrGoIioCl2PTcX+a3GynIHYwZqISl6er9/M8Zcj4cjN07CrqNIxKCKqQvryBb0becK/uj37nqgUA5t7o4ajNaKTMrH9om5PLyLVB0U5OTmIjIzE1atXce/evYp4SiKjk5SRI1edCS90YpaI6GFsLC0wup2/PF9yiMvzScVBUWpqKn766Sf06NEDLi4uqFWrFho3bgx3d3cEBATgpZdewokTJyq2tUQGTOxLlJ6dhwaeTuhYp7rSzSEyCM93CICVhRlOhifg/K0kpZtDRu6xgqL//ve/MghauHAhevbsibVr1+LMmTMyU3TkyBF8+OGHyM3NRZ8+fdC/f3+EhIRUfMuJDIgoVyB2sNZv1ijmSxDRw3k42+Kppt7yfAk3cyQ1BkWHDx/Gnj17cPLkScyaNUsGPk2bNkXdunXRrl07TJw4EUuWLMGdO3cwaNAg7Nu3r0zPv3//fgwcOBA+Pj7yw2P9+vVFbp8wYYK8vvDRoUOHhz7vmjVrZDbLxsZGXq5bt67Mr53ocYgaZ7cSMuBqb4VnWtRkJxKVwYT8Cdd/no1GXEoW+47UFRT98ccfMgh6GBF8vPrqq5g0aVKZnj8tLQ3NmzfHvHnzSryPCMSio6MLji1btpT6nCKDNWLECIwdOxZnz56Vl8OHD8exY8fK1Daix6GfDzGqnb8sY0BEj66Fnyta+rsiO0+D346Fs+uo0qhyk5QBAwbI42EBl5eX1yM/59y5c+Vw3syZM+XP4lJksMT1K1euLHebiUpyOToZR0PvybIFYzsEsKOIHoNYnh8cEYxfj0bglR515CRsIsUzRQkJCQUrzOLi4uSQ1IULF1DV9u7dCw8PD9SvX19O6o6NjX1opqhv375FruvXr58cCixJVlYWkpOTixxEZaUv6dE/yAs+rnbsQKLHMCDIC57ONribmoUt56PZh6R8UPTzzz+jTZs2aN26NebPn49nn30Wf/31F0aOHIkFCxagqogs0m+//Ybdu3fjq6++kqvcxIRvEcSUJCYmBp6eulo6euJncX1JZs+eLVfW6Q8/P13lZqJHdS8tG+vPRMlzLsMnenxWFuYFmVaxK7xWq2V3krLDZ9999x0uXryI9PR0+Pv7IywsTC7BFxmUbt26YfLkyagKYm6QXlBQkAzUxDYAmzdvxpAhQ0p83P0rfsR/qtJWAYkhthkzZhT8LF4nAyMqi1UnImSZgqY1XdA6oBo7j6gcxJy8b3dfx7lbSQiOTEQrf/6fIgUzRRYWFrC1tYWbm5tcaSYCIsHZ2VnRJcbe3t4yKCpt6b+Yf3R/VkgMud2fPbp/3pJ4bYUPokclyhL8ekQ3KXR8Jy7DJyqv6o42GNTcp8ju8ESKBUWWlpbIzMyU54WX2aekpEBJ8fHxckdtERyVpGPHjti5c2eR63bs2IFOnTpVQQvJFO28dAe3kzLh5mCNp5uV/LdJRI9uQv5u8JvPRSM2Wfd5RKRIUCTm8IjsiSDm2OhlZGRg0aJFFdYosVu22AxSHIIYphPnERER8ra33npLTpy+efOmnHAt9jSqUaOGnOOkN27cuIKVZsK0adNkEPT555/jypUr8nLXrl2YPn16hbWbqLCl+d9kRZkCWyuulCGqCEE1XdAmoBpyNVr8diyCnUrKBUWOjo7FDpOJVWCtWrWqsEaJTSFbtmwpD0HM6xHnYqNIMYR3/vx5PPPMM3Ll2fjx4+WlCJKcnJwKnkMEUGL/Ij2REVq1apXcVLJZs2ZYunQpVq9ejfbt21dYu4kKL8M/FqZbhj+mg652ExFVDDEcLYigKDtXw26lCmOmrYAp/GJI7dy5c3KOjkZT9A9U7GhtLMREa5EhS0pK4vwiKtW7a85h1YlIWZ7g+zEV94WBiICcPA26fL4bd5KzMHdECwxuyV3iqWI+v8u9eeO2bdvkUNXdu3cfuE1klfLy8sr7TxAZlIRCy/AndNZ9oyWiil2e/3z7AHy185ocpmZQRIqW+Shs6tSpGDZsmByqElmiwgcDIjJFq09GIjNHg8beznLuAxFVvFHt/WFtYY4zkYnyIFJFUCSGzMScn9KWthOZijyNFr/kL8MXq2SU3KqCyJjVcLTB0811qzq5PJ9UExQNHTpUrgAjImDX5TuISsxANXsrDGqh20+FiCp3ef6f524jNoXL86n8yj2nSFSyF8NnBw4cQNOmTWFlZVXk9jfeeKO8/wSRwdU5G8ll+ESVrpmvK1r6uyI4IhErj0ViWu967HVSNihasWIFtm/fDjs7O5kxKjxcIM4ZFJGpuBqTgiOh8TA3A57Pr9FERJWfLQqOOIPfjoXjlR51YG1Z7gEQMmHl/uv54IMP8K9//UsucxObKYqNFvVHaGhoxbSSyIA2a+zXxAs1Xe2Ubg6RSRgQ5A13JxvEpmRh64W/96YjUiQoys7OlgVazc0ZnZPpSkrPwfrgqCIbyxFR5ROZIbE8X+CEayqvckcyYkdpsTM0kSn7/WQkMnLy0NDLCe0D3ZRuDpFJGdXeD1YWZjgdkYhzt7g8nxScUyT2IpozZ46cVyTKZ9w/0frrr78u7z9BpPpl+MuO6IbOuAyfqOp5ONnK3ePXn7kth7G/Ht6CvwZSJigSdcj0NcouXLhQ3qcjMji7r8TiVkIGXOys8EwLlhsgUsKEzoEyKPrzbDTee7KR3MeIqMqDoj179pT3KYgMmn4ew8i2frCztlC6OUQmqYWfK5r7ueJsZCJWHY/A1J5cnk8KzCmaPXs2Fi9e/MD14rrPP/+8vE9PpGohd1Jw8PpdLsMnUoEJnXQTrn85Gi6LxhJVeVD0008/oWHDhg9c36RJE/z444/lfXoiVdPPJerdyBN+bvZKN4fIpD3Z1FsOm91JzsL2izFKN4dMMSiKiYmBt7eu/kxh7u7uskgskbFKysjBmlNRRcoNEJFybCwtMLq9f5Hd5YmqNCjy8/PDoUOHHrheXOfjw9pPZLz+yF+GX9/TER3rVFe6OUQE4Pn2/rA0N8PJ8ARciEpin1DVBkWTJk3C9OnTsWTJEoSHh8tDzCd688038dJLL5X36YlUuwx/+ZFweT6hU2CR8jZEpBwPZ1s81cy7yC7zRFW2+uztt9/GvXv38Oqrr8rdrQVbW1u88847mDlzZnmfnkiV9lyJRcS9dLkMf3BLZkSJ1ETsKr/hzG1sPHMb7w5oyOX5VHWZIvENWawyi4uLw9GjR3H27FkZJM2aNau8T02kWvpvoCPa+sHeutzfLYioArUUy/N9XZCdp5HL84keVYUVLHN0dETbtm0RFBQEGxtumkWmsQx/bAfdEmAiUg/xZX1CZ93ih1+PRnB5PlVuUBQRUbbIOypKt0KHyBhwGT6R4SzPj0nO5PJ8qtygSGSExCTq48ePl3ifpKQkLFy4UGaO1q5d+zj/DJG6l+HnfxMlInUuzx/D5flURo81GeLy5cv49NNP0b9/f1kAtk2bNnL5vZhgnZCQgEuXLuHixYvy+i+++AIDBgx4nH+GSLXL8Bt4OqFjbS7DJ1IzERT9sPe6XJ5//lYSmvq6KN0kMsZMkZubG7788kvcvn0b8+fPR/369XH37l2EhITI28eMGYNTp07JvYoYEJExLcPXD52JLBGX4ROpf3m+GEYTuDyfHkW5ls2IzNCQIUPkQWQKy/Aj72XoluG3qKl0c4joEUzIX56/6extzHySy/OpilafERk7/TfNke38YGdtoXRziOgRtPSvhuZ+rlyeT4+EQRHRI+AyfCLD9UJ+bcJfjoZzeT5VTlAUHx//uA8lMjj6LFGfxp7wrWavdHOIqAzEvCJ3JxvcSc7Ctgsx7Duq+KCoXr16+P7776HRaB73KYgMQlJ6Dtaezl+G3ylQ6eYQURlZW5r/vTyf9dCoMoKit956S9Y2a9GiBfbt2/e4T0Oken+c0i3Db+jlhA613ZRuDhE9htHt/WFlYYZT+cvziSo0KHrvvffkEnyxF1GvXr0wYsQI3Lp163Gfjkj9y/A7cRk+kaHycLLFU1yeT5U50drT0xOLFy/GiRMnEBMTg4YNG+KTTz5BVlZWeZ4W+/fvx8CBA+WGkGIvmPXr1xfclpOTg3feeQdNmzaFg4ODvM+4cePknkmlWbp0qXyu+4/MzMxytZWM2+78Zfiu9lZ4hsvwiQzahM664W+xPP9uavk+p8g4Vcjqs5YtW8ohNBF4iEMER+vWrXvs50tLS0Pz5s0xb968B25LT0/H6dOn8c9//lNeihIi165dw6BBgx76vM7OzoiOji5yiL2WiEqy9HCYvBzZ1p/L8IkMXAs/V3lk52mw8ljZaniSaSjX5o33Gzp0qAxOvv76a7zwwgv44YcfsHPnzjI/j9gFu6SdsF1cXB54zu+++w7t2rWThWr9/XWT6YojMkNeXl5lbg+Zpmt3UnDoejzMzYDnO5T8d0VEhuOFzrUwbdUZuTx/So86sLLgzjRUwUGRGC4T9dDOnz+PCxcuyMPa2hq7d+9GVRDFZ0XA4+rqWur9UlNTERAQgLy8PDlBXAz1iSxXaa+r8FBgcnJyhbab1E2/SqVvYy8uwycyEgOCvPFvp8uITcnC1gsxGNTcR+kmkYo8doj88ccfy8yQGCpzdHREq1atMG3aNBw9ehSBgYEy4Dhw4AAqm5gT9O6772L06NFyeKwkop1iaG/jxo1YuXKlHDbr3LlzQb224syePVtmpvSHn59fJb0KUuMy/HX6ZfiddRu/EZFxLc9fxuX5dB8zrVarxWMQc36aNWsmJzzrD19fX1Q0kQES85MGDx78wG1i0vWwYcPksNnevXtLDYruJ/ZXEoFct27d8O233z5ypkgERiIzVZZ/iwzPgv038OmWK3IZ/tZpXVn8lciIxKZkovNnu5GTp8WG1zrLMiBk3MTnt0huPOzz+7GHz86ePQsliYBo+PDhCAsLk8N0ZQ1SzM3N0bZt21IzRTY2NvIg05Kbp8Gyw+EF8w9EYE5ExrU8f2AzH6wNjsKSQ2GYO7LkaRRkWgxyhpk+IBIBza5du1C9evUyP4dIkJ05cwbe3t6V0kYyXDsu3UFUYgbcHKy5DJ/ISL2Qvzz/z3PRuJPMrVlIxUGRmBAtAhZxCCIbJM7FMFlubq6cy3Ty5En89ttvctK02CNJHNnZ2QXPIfYuEjtuF54DtX37doSGhsrnevHFF+XllClTFHmNpF6LD+qW4T/f3h+2VhZKN4eIKkFTXxe0q+WGXI0WvxzRZYaJKnRJfkURAc8TTzxR8POMGTPk5fjx4/HRRx/JydKCWEFW2J49e9CjRw95LgIoMUSml5iYiMmTJ8vgSYwrilVnYpNIsZSfSO9sZCJOhifIcgDPdwhgxxAZsYldauH4zXv47Vg4pvasyy9B9PgTrU3Ro07UIsM1fVUw1p+5jSEta+LrEUWDbiIyvjI+3b/Yg1sJGZg9pClGteN+ZKb++a3K4TMiJYh5BWJ+gTCxi26+AREZLwtzM1nTUD9szhwBMSgiyrf8yE05v6BdoBuCarqwX4hMwPC2fnCwtkBIbCoOXr+rdHNIYQyKiABkZOdhRX4tpIn5q1KIyPg521phWBu/IossyHQxKCICsP5MFBLSc+BbzQ59GnuyT4hMiBhCE9uR7bkahxtxqUo3hxTEoIhMnphHoP+GKN4cxTwDIjIdtWo4oFdD3ZehpYd0NQ/JNDEoIpMn5hGI+QRiXoGYX0BEprk8X/jfqVtITP97zzsyLQyKyOTps0RiXoGYX0BEpqdj7epo5O2MjJw8rDoRqXRzSCEMisikifkDYh6BmE+gX5pLRKZH1Dic2Fn3HrDs8E3k5GmUbhIpgEERmTT9/AExn0DMKyAi0zWwuQ9qOFojOikT2y/GKN0cUgCDIjJZSek5cv5A4fkERGS6RK3DMe115X24PN80MSgik7XqRIScP9DQy0nOJyAiGtPBH9YW5jgdkYjgiAR2iIlhUEQmKTdPI+cN6Et6iPkEREQeTrZyGE1YwuX5JodBEZmkbRdjcDspU84fGJT/BkhEJLyQP+F6y/loRCdlsFNMCIMiMkn6+QJi/oCYR0BEpCdqH7YPdJO1EJcfCWfHmBAGRWRyxDwBMV9AzBsQ8weIiO73YhddDURRE1HURiTTwKCITM6i/CyRmDcg5g8QEd2vVyNP+LvZIykjB/87rVulSsaPQRGZlMh76XKeQOFvgkRE9xM1EPWbOS46EIo8jZadZAIYFJHJZYnEe1vXejXQ2MdZ6eYQkYqJ0j8udla4GZ+OnZe4maMpYFBEJkMUefz9pK6m0eRutZVuDhGpnIONJcZ20G3muGB/qNLNoSrAoIhMxm/HIpCenSeLPnapW0Pp5hCRARjXKaBgM8dT4feUbg5VMgZFZBKycvOwNH+zxsnduFkjET0asRhjSKua8vynfcwWGTsGRWQSNgTfRlxKFrxdbPF0M27WSESPblJX3aKMnZfvIDQulV1nxBgUkdHTaLRYcED3DW9i50BYWfDPnogeXV0PJ/Ru5AGtFvg5f0sPMk78dCCjt/daLK7HpsLJxhIj2/kp3RwiMkAvddUtzlhz6hbupmYp3RyqJAyKyOjp5wGMbu8PJ1srpZtDRAaoXaAbmvu5IitXw9IfRoxBERm1s5GJOBZ2D5bmZpiQvxEbEVFZmZmZYXJ+tuiXIzdZ+sNIMSgio6afSzSohQ+8XeyUbg4RGbD+QV7wc7NDQnoO/ndKt+cZGRcGRWTUJT225pf00M8HICIqT+mPSV107yViwjVLfxgfBkVk9CU9utV3lxs2EhGV17A2vnC1t0J4fDp2XGTpD2PDoIiMtqTH6hP5JT2YJSKiCmJv/Xfpj5/2h0Ir1umT0WBQREbp16PhyMjJQ2NvZ3SuW13p5hCRERnXsRasLc1xJjIRJ8MTlG4OGXtQtH//fgwcOBA+Pj5yxv/69euL3C4i848++kjebmdnhx49euDixYsPfd41a9agcePGsLGxkZfr1q2rxFdBSsnMESU9wgsKv4q/ISKiiuLuZIPn8kt/sFCscVFlUJSWlobmzZtj3rx5xd4+Z84cfP311/L2EydOwMvLC3369EFKSkqJz3nkyBGMGDECY8eOxdmzZ+Xl8OHDcezYsUp8JaSE9cFRcnM1HxdbPNXMm78EIqpwk/KH5XddvoMbLP1hNMy0Kh8QFd/yRUZn8ODB8mfRXJEhmj59Ot555x15XVZWFjw9PfH555/j5ZdfLvZ5RECUnJyMrVu3FlzXv39/VKtWDStXrnyktojHu7i4ICkpCc7OnLir1pIeff67Dzfi0vDBU40K3riIiCrapGUnZVA0qp0/Zg9pyg5WsUf9/FZlpqg0YWFhiImJQd++fQuuE8Nh3bt3x+HDh0vNFBV+jNCvX79SHyOCLdGRhQ9St91XYmVA5GQrSnr4K90cIjJiL3fPL/1x+pYsOE2Gz+CCIhEQCSIzVJj4WX9bSY8r62Nmz54tI0v94efHullq99P+GwUlPRxtLJVuDhEZsTYB1dDCzxXZuRosO3xT6eaQKQZFevdPnhXDag+bUFvWx8ycOVOm2vRHZCR3MFWzY6HxOHEzAdYW5nihU6DSzSEiIyc+P6bkZ4uWHbmJ5MwcpZtEphYUiUnVwv0ZntjY2AcyQfc/rqyPEcNyYuyx8EHqNW/PdXk5tI0vvFxslW4OEZmAvo29UM/DESmZufjliG7VKxkugwuKAgMDZYCzc+fOguuys7Oxb98+dOrUqcTHdezYschjhB07dpT6GDKswq8HQu7Kbfhf6V5H6eYQkYkwNzfDa0/ULdhFPz07V+kmkbEFRampqThz5ow89JOrxXlERIRMV4qVZ59++qlclXbhwgVMmDAB9vb2GD16dMFzjBs3Tg5/6U2bNk0GQWKF2pUrV+Tlrl275HOR8WSJnmnhAz83e6WbQ0Qm5Olm3vB3s8e9tGysPM5pFoZMlUHRyZMn0bJlS3kIM2bMkOezZs2SP7/99tsymHn11VfRpk0bREVFyYDHycmp4DlEABUdrSsGKoiM0KpVq7BkyRI0a9YMS5cuxerVq9G+fXsFXiFVpCsxydh56Q7E9LBXe+i+sRERVRVLC3O80kOXoV6w/waycvPY+QZK9fsUqQn3KVKnN1YGY+PZ23iqqTe+H9NK6eYQkQkSgVD3OXsRk5yJ/zwbhDHtdfXRSB2Mdp8iosLC7qbhz3O35fmrT3AuEREpw8bSomDfovl7byAnT8NfhQFiUEQGbf7e69BogZ4NPdDEx0Xp5hCRCRvZ1h/VHaxxKyEDG8/ovqyRYWFQRAYrKjEDa09HyXP96g8iIqXYWVvgxa66PdJ+EF/YxDc2MigMishg/bTvBnI1WnSqUx2tA6op3RwiIoztEABnW0tZbmjbxZIrJpA6MSgigxSbkolVJ3RLX6cyS0REKuFka4UJnXXZonm7r8vKCWQ4GBSRQVp0IEzWG2rl74qOdaor3RwiogIvdKoFe2sLXIpOxp6rsewZA8KgiAxOQlo2fjmq205/as+6D615R0RUlao5WOP5Drol+cwWGRYGRWRwlhy+ifTsPDT2dsYTDTyUbg4R0QMmdQ2EtaU5Tkck4khoPHvIQDAoIoOSkpmDpYfC5DmzRESkVh5OthjZ1q8gW0SGgUERGRQxbJacmYs67g7o38RL6eYQEZXo5e51YGluhsM34nE6IoE9ZQAYFJHByMjOkxOsBVHjTFSnJiJSq5qudni2ZU15/j2zRQaBQREZjFUnIhCflg0/NzsMauGjdHOIiB5KFIoV39/+uhKLi7eT2GMqx6CIDEJmTh5+2hcqz6d0rwMrC/7pEpH61XZ3xFPNdF/ivt/DuUVqx08WMggrjkXI6tNezrYY2tpX6eYQET0yscGs2Dlky/kYXIhitkjNGBSR6qVl5RZ8w3qjVz1ZjZqIyFA08HLCoOa6bNFXO64q3RwqBYMiUr2lh2/KuUQB1e0xrA2zRERkeN7sXR8W5mbYczUOp8LvKd0cKgGDIlK1pIwcWfhV/6bCuUREZIhq1XDAsPyh/znbrrImmkoxKCJVW7g/VO5LVN/TEQPz089ERIbo9V71YG1hjmNh93Dw+l2lm0PFYFBEqnU3NQuL83evntGngUw9ExEZ8r5FYzr4y/MvtzNbpEYMiki1fthzQ9Y4a+brgn5NPJVuDhFRuYmNZ+2sLHD2VhJ2XrrDHlUZBkWkSrcTM/DrsXB5/lbfBjAT61mJiAycu5MNXuhcS55/teMa8jRapZtEhTAoIlX6bncIsnM1aBfohq71aijdHCKiCvNytzpwsrXE1Tsp+PPcbfasijAoItW5eTcNv5+8Jc//0Y9ZIiIyLi72Vni5W215/t+d15CTp1G6SZSPQRGpztxdupRyjwbuaFvLTenmEBFVuBc6B6K6gzVuxqfjf6d0XwJJeQyKSFWuxqRgw9nbBXOJiIiMkYONJV59oq48//avEFnfkZTHoIhURWyBr9UCA4K8EFTTRenmEBFVmjHt/eHtYovopExZ35GUx6CIVONsZCJ2XLojCyfO6FNf6eYQEVUqWysLvN6znjwX9R1FnUdSFoMiUo0v8wslPtuyJup5OindHCKiSifqOYq6jqK+o6jzSMpiUESqcDQ0HgdC7sLS3AzTezFLRESmQdRzFHUdBVHnMSk9R+kmmTQGRaQ4rVYrt7wXRrT1g391e6WbRERUZURdR1HfUdR5XHBAVwCblMGgiBQntro/GZ4AG0vzgvF1IiJTIeo6ivqOwuKDNxGdlKF0k0yWQQZFtWrVkmUf7j9ee+21Yu+/d+/eYu9/5cqVKm87FZWVm4f/bLkszyd2CYSXiy27iIhMjqjv2DqgGjJy8jBnmy5zTlXPIIOiEydOIDo6uuDYuXOnvH7YsGGlPu7q1atFHlevHrMSSlty6CbC49NlPaDX8vfsICIyNeKL+ocDG8vzdcFROB2RoHSTTJJBBkXu7u7w8vIqOP7880/UqVMH3bt3L/VxHh4eRR5nYWFRZW2mB8WmZOK7v0Lk+Tv9G8LRxpLdREQmq5mvK4a19pXnH2+6BA2LxVY5gwyKCsvOzsavv/6KiRMnPrSSesuWLeHt7Y1evXphz549D33urKwsJCcnFzmo4ojJ1WnZeWju64IhLWuya4nI5P2jfwM4WFvIfdtExoiqlsEHRevXr0diYiImTJhQ4n1EILRgwQKsWbMGa9euRYMGDWRgtH///lKfe/bs2XBxcSk4/Pz8KuEVmKZztxLxR369n1kDm8DcvPSAlojIFHg42WJq/oKTz7dd4YaOVcxMK9ZDG7B+/frB2toamzZtKtPjBg4cKDNLGzduLDVTJA49kSkSgVFSUhKcnZ3L1W5TJv7khv14RK44G9zCB3NHtlS6SUREqlqA0ve/++V8y9eeqIN/9GuodJMMnvj8FsmNh31+G3SmKDw8HLt27cKkSZPK/NgOHTogJEQ3n6UkNjY2svMKH1R+m85Fy4DIzsoC7wzgf3YioiKfPZYWeP/JRvJ84YEwRN5LZwdVEYMOipYsWSInTz/11FNlfmxwcLAcVqOqlZGdh9n5S/Bf7VEH3i52/BUQEd2nT2NPdK5bHdm5Gnya/55Jlc9ggyKNRiODovHjx8PSsuiqpZkzZ2LcuHEFP8+dO1fOPRKZoYsXL8rbxfyiqVOnKtBy0/bjvhuyInRNVzu81K220s0hIlIlMb1j1tNNIKZbbr0Qg8M37irdJJNgsEGRGDaLiIiQq87uJ/YgErcVXqH21ltvoVmzZujatSsOHjyIzZs3Y8iQIVXcatMWlZiBn/brtrB/78lGskI0EREVr4GXE57vECDP/7XpEvK4RL/SGfxEazVO1KLivb4yGJvO3ka7QDesntzhoVsoEBGZuoS0bPT4ci+SMnLwn2eDMKa9LkiisjGJidZkOE7cvCcDIhEHiV1bGRARET1cNQdrvNm7XsHebknpOey2SsSgiCqd2JX1400X5fnItn5o4uPCXiciekRjOgSgnocjEtJz8E1+FQCqHAyKqNL979QtXIhKhpONJf6vr64SNBERPRorC3P882ldXbTlR27iemwqu66SMCiiSpWSmYM526/I82m966GGow17nIiojLrVd0fvRh7I1Wjx782X2H+VhEERVaovtl/F3dRs1K7hgHEda7G3iYge0/tPNYaVhRn2Xo3DlvPR7MdKwKCIKs2x0HgsPxIuz//1TBCsLfnnRkT0uAJrOOCV7nXk+awNF3AvLZudWcH4KUWVtnP122vOyfNR7fzQpV4N9jQRUTm91rMu6ns6ygy8fgELVRwGRVQpvtxxVRYz9Haxxcz8Gj5ERFT+umhfDG0ud7recOY2dl66wy6tQAyKqMKdCk/A4kNh8vzTIU3hbGvFXiYiqiDN/VwLyiS9v+489y6qQAyKqEJl5uTh7f+dhdgn/blWvniigQd7mIiogr3Zuz5quzsgNiULn3A1WoVhUEQVau6uENyIS4O7kw3++TSHzYiIKoOoHfnF0GaySoDYC27P1Vh2dAVgUEQV5mxkIhbkF3z9z+AguNpbs3eJiCpJ6wA3TOwcKM/fW3te7gtH5cOgiCpEVq4YNjsHUcR5UHMf9G3ixZ4lIqpkb/VtgIDq9ohOysSnW3Qb5dLjY1BEFeL73ddx9U4KqjtY46NBTdirRERVwM7aAp8/10yerzwegUPX77Lfy4FBEZXbxdtJ+GHvjYJNGt0cOGxGRFRVOtSujnEdA+T5O2vOIS0rl53/mBgUUbnk5Gnwjz/OyXo8A4K88FQzb/YoEVEVe6d/Q9R0tcOthAzM2cZhtMfFoIjK5ce9N3ApOhmu9lYyS0RERFXPwcayYBht2ZFwWWaJyo5BET22a3dS8O3uEHn+0cAmchk+EREpQ5RTEmWVBFFmSZRborJhUESPRYxZT11xGjl5WvRq6IFnWviwJ4mIFCbKKonySqLM0gfrL0ArdtKlR8agiMpM/CcTk/mu3UmFh5MNZj/XFGZiBzEiIlKUKKv01XBdbbQ1p2/ht2MR/I2UAYMiKrPFh27iz3PRsDQ3ww9jWsHDyZa9SESkEp3q1JATr4WPN11EcESC0k0yGAyKqEyOh93Dp1suy/MPnmqENrXc2INERCozuVttuSJYTHF45dfTuJuapXSTDAKDInpkd5Iz8epvp5Gn0co5ROM71WLvERGpkJjS8MWw5qjj7oCY5Ey8viIYuXkapZulegyK6JFk52pkQCS+bTT0csLsIZxHRESkZo42lvhpbGs4WFvgSGg8vthxVekmqR6DInokYsjsVHgCnGwt8ePzrWFvbcmeIyJSuboeTjJjJPy0LxRbz0cr3SRVY1BED7XhTBSWHr4pz/87vAVq1XBgrxERGYgnm3rLOUbCW3+cxfXYVKWbpFoMiqhUl6OT5fJ74fWeddG7sSd7jIjIwLzdrwE61HZDWnYeXv7lJFJZH61YDIqoREkZOXjl11PIzNGgW313TO9dn71FRGSALC3M8d2oVvBytsWNuDS8/b+z3NixGAyKqFgajRb/9/sZ3IxPl0UGvxnRAhZiNzAiIjJIohTT92NawcrCDFvOx2DhgVClm6Q6DIqoWKKm2a7LsbC2NJerF6o5WLOniIgMXOuAapj1dGN5/tnWKzgQEqd0k1SFQRE9YOH+UMzdpSv0+u9nghBU04W9RERkJJ7vEIAhrWpCowUmLz+Fo6HxSjdJNQwyKProo4/kxlSFDy8vr1Ifs2/fPrRu3Rq2traoXbs2fvzxxyprryFZfDAM/8nfsfrN3vUxvK2u4jIRERkH8Zkp9prrXt8dGTl5mLj0BE7cvKd0s1TBIIMioUmTJoiOji44zp8/X+J9w8LC8OSTT6Jr164IDg7Ge++9hzfeeANr1qyp0jar3fIjN/GvPy/J8zd61sW03vWUbhIREVUCG0sLOTWia70aSM/Ow4TFx+VedKbOYIMiS0tLmR3SH+7u7iXeV2SF/P39MXfuXDRq1AiTJk3CxIkT8eWXX1Zpm9Xs16PhmLXhojx/tUcdvNmHK82IiIyZrZUFFoxtg051qsul+uMXH8eZyESYMoMNikJCQuDj44PAwECMHDkSoaElz6I/cuQI+vbtW+S6fv364eTJk8jJySnxcVlZWUhOTi5yGKNVxyPwwfoL8vzlbrXxj34NZHqViIiMm521BX4e3wbtA93k3kVjFx3D+VtJMFUGGRS1b98ey5cvx/bt27Fw4ULExMSgU6dOiI8vfrKYuN3Ts+img+Ln3Nxc3L17t8R/Z/bs2XBxcSk4/PyMb37N7ycjMXOdbujxxS6BeHdAQwZEREQmRJRtWjyhLdrWqoaUzFw8v+gYLkSZZmBkkEHRgAED8Nxzz6Fp06bo3bs3Nm/eLK9ftmxZiY+5P/Oh1WqLvb6wmTNnIikpqeCIjIyEMVl7+pbcrVp0xYROtfDBU40YEBERmSAHG0sseaEdWvm7yo17RWB06bZxjo4YXVB0PwcHBxkgiSG14og5RyJbVFhsbKycl1S9evUSn9fGxgbOzs5FDmOqZyZq4IiA6PkO/vhwYGMGREREJszRxhLLJrZDCz9XJKbrAqOrMSkwJUYRFIm5P5cvX4a3t3ext3fs2BE7d+4sct2OHTvQpk0bWFlZwdRsOnsbb64+I/eoGNXOD/8aFMSAiIiI4GRrJQOjZr4uuJeWjdELj+LaHdMJjAwyKHrrrbfkvkNiqf2xY8cwdOhQOQl6/PjxBcNe48aNK7j/lClTEB4ejhkzZsjgafHixVi0aJF8HlOSk6fB7C2X8frKYBkQDWvti/8Mbgpzlu8gIqJ8LnZW+GViezTxcUZ8Wjae/f4Q1gdHwRQYZFB069YtjBo1Cg0aNMCQIUNgbW2No0ePIiAgQN4u9i2KiIgouL9YobZlyxbs3bsXLVq0wCeffIJvv/1WzksyFZH30jHsxyP4ab9ulZ6YQ/TZc80YEBER0QNc7K3w64vt5ao0sVx/+uoz+McfZ5GenWvUvWWm1c84pocS2SixCk1Mujak+UVbzkfLCdViVYGzrSXmDG2O/kGl7wBORESUp9Hi279C8N3uEDnCUNfDEfNGt0RDL8P5DCzL5zeDokroVLXIzMnDJ39ewm/HdFmzlv6u+G5US/hWs1e6aUREZECO3IjHtFXBiE3Jgo2lOWYNbIzR7fwNZj7qo35+G+TwGT3c9dhUDP7+UEFANKV7Hfz+ckcGREREVGYd61TH1mld0aOBO7JyNXh/3QVMXREsl+8bE2aKjCxTJEZD/3fqlizZIQr9VXewxtcjWsjCf0REROWh0Wjx88FQzNl2FbkaLXyr2ckRiJb+1VTdsRw+U7BTlXLzbhq+3nkNG8/elj93rlsd/x3eAh7Otko3jYiIjEhwRIJcyXwrIQOW5mZ47Ym6mNg5UE7QViMGRQp2alVnhk6GJ2Dh/lDsvHxHbsYoVtjP6FMfr/SoCwsutyciokqQlJGD99aex+bz0fJne2sLDG/jhxc610JAdQdV9TmDIgU7tSrk5mmw9UIMfj4QirOFivc90cAdr/eqh1YqT2USEZHh02q1cnRi/t4buJK/+7WYe92vsRcmdQ1E64BqqpiMzaBIwU6tTCmZOVh9IhJLDt1EVGKGvM7a0hzPtaopU5f1PJ0UaRcREZl2cHToejwWHgjFvmtxBdeLkiEvda2Nfk08YWmh3NouBkUKdmpFSs3KlXOFbsSlIjgiUU6iFtcJbg7WGNshAGM7BqCGo02VtIeIiKg0oizIogNhWBcchew8jbxOTMgWQ2sNvZxQ290B/m4O8gt9VWFQpGCnPk75DTFZLTQuFWEyAEpD2N1UhMalyT0h7lfH3QGTutbGsy1rwtbKosLaQUREVFHiUrLwy9Fw/Ho0XNZRK0xMd/Vzs0ftGg4IrOGIQHcH1BHn7g7wcrat8CE3BkUGFBS9tPwkdl66U+LtNRytEVjDAbVrOKJfkCd61PdgeQ4iIjIImTl5MmskNoAUX/xFAkCUDinJB081kl/8lfj8tqzQf5UeS63q9rC1MpfRskgrishZXMrouYaDLM5HRERkiGytLDCqnb889POPRBYpVAZIf4+MiIAp4l66/NxTCjdvVEGmSETR1hbmzP4QEZFJy8mfg2RVwZOymSkyIJwXREREhAoPhsqKtc+IiIiIGBQRERER6TBTRERERMSgiIiIiEiHmSIiIiIiBkVEREREOswUERERETEoIiIiItJhpoiIiIiIQRERERGRDjNFRERERAyKiIiIiHSYKSIiIiICYMleeHRarVZeJicns9uIiIgMhP5zW/85XhIGRWWQkpIiL/38/MrzuyEiIiKFPsddXFxKvN1M+7CwiQpoNBrcvn0bTk5OMDMzq9AIVgRakZGRcHZ2Zo+zf/j3U4H4/4t9w7+dypFsQJ9dItQRAZGPjw/MzUueOcRMURmIjvT19UVlEX9Uav/DUhL7h/3Dvx/+3+J7j/o4G8hnV2kZIj1OtCYiIiJiUERERESkw0yRCtjY2ODDDz+Ul8T+4d8P/3/xvUcd+N5sev3DidZEREREzBQRERER6XD4jIiIiIhBEREREZEOM0VEREREDIrU4YcffkBgYCBsbW3RunVrHDhwQOkmqcL+/fsxcOBAuQOp2EF8/fr1SjdJVWbPno22bdvKHdY9PDwwePBgXL16VelmqcL8+fPRrFmzgk3lOnbsiK1btyrdLFX/LYn/Y9OnT1e6Karw0Ucfyf4ofHh5eSndLFWJiorC888/j+rVq8Pe3h4tWrTAqVOnYOiYKVLY6tWr5RvR+++/j+DgYHTt2hUDBgxAREQETF1aWhqaN2+OefPmKd0UVdq3bx9ee+01HD16FDt37kRubi769u0r+83UiZ3nP/vsM5w8eVIePXv2xDPPPIOLFy8q3TTVOXHiBBYsWCCDSPpbkyZNEB0dXXCcP3+e3ZMvISEBnTt3hpWVlfyycenSJXz11VdwdXWFoeOSfIW1b98erVq1kt9s9Ro1aiS/9Ytvb6QjvqmtW7dO9gsVLy4uTmaMRLDUrVs3dtN93Nzc8MUXX+DFF19k3+RLTU2V7z8iW/3vf/9bftufO3euyfePyBSJzPSZM2dMvi+K8+677+LQoUNGOarBTJGCsrOzZbpRfLsvTPx8+PBhxdpFhikpKangw5/+lpeXh1WrVskMmhhGo7+JTONTTz2F3r17s1vuExISIofuxdSGkSNHIjQ0lH2Ub+PGjWjTpg2GDRsmv4i1bNkSCxcuhDFgUKSgu3fvyjdsT0/PIteLn2NiYhRrFxkeUQF6xowZ6NKlC4KCgpRujiqI4Q5HR0e52+6UKVNkprFx48ZKN0s1RKB4+vRpZqRLyOAvX74c27dvlx/24v24U6dOiI+Pr/pflAqFhobK0Y169erJPhL/v9544w3ZZ4bOUukGkG5o6P4PuPuvIyrN1KlTce7cORw8eJAdla9BgwZy+CMxMRFr1qzB+PHj5dAiAyMgMjIS06ZNw44dO+QCDypKzOvUa9q0qcww1qlTB8uWLZNfPkydRqORmaJPP/1U/iwyRWK+ngiUxo0bB0PGTJGCatSoAQsLiweyQrGxsQ9kj4hK8vrrr8t09p49e+QEY9KxtrZG3bp15Zu3mJ8nJu1/88037B5ADtuL9xmx2tXS0lIeImD89ttv5bnIYNPfHBwcZHAkhtQI8Pb2fuDLhZgLawwLhBgUKfymLd6UxMqhwsTPIlVLVBqRURQZorVr12L37t1y7gOV3l9ZWVnsIgC9evWSw4sik6Y/RPA4ZswYeS6+rNHfxN/N5cuXZTBAkCvP7t/+49q1awgICDD47uHwmcJEKnbs2LHyDUmkaMXSWBFtizFaUydWxly/fr3g57CwMPmGLSYS+/v7w9SJSbIrVqzAhg0b5F5F+oyji4sL7OzsYMree+89OQTi5+eHlJQUOX9m79692LZtm9JNUwXx93L/3DORDRF7znBOGvDWW2/JPdLE+4zIqImVecnJyXIIloA333xTfnEXw2fDhw/H8ePH5WeXOAyelhT3/fffawMCArTW1tbaVq1aafft26d0k1Rhz549WvEnev8xfvx4pZumCsX1jTiWLFmiNXUTJ04s+D/l7u6u7dWrl3bHjh1KN0vVunfvrp02bZrSzVCFESNGaL29vbVWVlZaHx8f7ZAhQ7QXL15UulmqsmnTJm1QUJDWxsZG27BhQ+2CBQu0xoD7FBERERFxThERERGRDidaExERETEoIiIiItJhpoiIiIiIQRERERGRDjNFRERERAyKiIiIiHSYKSIiIiJiUERERESkw0wREREREYMiIjJk33zzDQIDA2Fvb4/BgwcjKSmpxPvGx8fDw8MDN2/erJS29OjRA9OnTy/4eejQofj6668r5d8iosrBTBERGaT33nsP8+bNw7Jly3Dw4EEEBwfj448/LvH+s2fPlpXPa9WqVSXtmzVrFv7zn//I6upEZBgYFBGRwTlx4gQ+//xzrF69Gt26dUOrVq3w8ssv488//yz2/hkZGVi0aBEmTZpU6vNmZ2dXWBubNWsmA7Dffvutwp6TiCoXgyIiMjhffvklevbsKYMhPXd3d9y9e7fY+2/duhWWlpbo2LHjA0NeU6dOxYwZM1CjRg306dNHXr9t2zZ06dIFrq6uqF69Op5++mncuHGj4HFpaWkYN24cHB0d4e3tja+++qrYf3fQoEFYuXJlBb1qIqpsDIqIyKBkZWVh06ZNePbZZx/IBrm4uBT7mP3796NNmzbF3iaG30TAdOjQIfz0008FQY8IlERG6q+//oK5ubn89zQajbz9H//4B/bs2YN169Zhx44d2Lt3L06dOvXAc7dr1w7Hjx+XbSYi9bNUugFERGVx+vRpGQD93//9H95+++2C63NycvDEE08U+xgxudrHx6fY2+rWrYs5c+YUue65554r8rMYehOTtC9duiSHxMTPy5cvL8gsicDK19f3geeuWbOmDIhiYmIQEBDAXzSRyjEoIiKDcu3aNdja2uL8+fMPDFV17ty52MeIIEo8pjjFZZDEUNk///lPHD16VA7J6TNEERERyMvLk3OPCg/Fubm5oUGDBg88j52dnbxMT08v46skIiUwKCIigyJWc4msjcjw6Ilg5cqVKw9kePTEfKGEhIRib3NwcHjgOrFKzc/PDwsXLpQZJhEUBQUFyWBIq9U+clvv3btXMN+JiNSPc4qIyKCIAEcERoWDE7H0/cknn0Tjxo2LfUzLli3l0NejEPsZXb58GR988AF69eqFRo0aFQmoRDBmZWUls0h64naRwbrfhQsX5LCaaDMRqR8zRURkUMSqs8zMTHz22WcYNWoUVqxYgY0bN8oJzSXp168fZs6cKYOXatWqlfr84nax4mzBggVyZZnIQr377rsFt4sVZy+++KKcbC3u5+npiffff19Oxr7fgQMH0Ldv33K+YiKqKswUEZFBEUHI0qVLMX/+fJkZOnz4sNy8UQx3laRp06Zy7tDvv//+0OcXwc2qVavkajIxZPbmm2/iiy++KHIf8bPYH0nMY+rdu7dcvt+6desi9xGBm1id9tJLL5Xj1RJRVTLTlmWAnIjIQG3ZsgVvvfWWHNIqLqtT0b7//nts2LBBLtknIsPA4TMiMglizlFISAiioqJKzSpVFDHv6Lvvvqv0f4eIKg4zRUREREScU0RERESkw4nWRERERAyKiIiIiHSYKSIiIiJiUERERESkw0wREREREYMiIiIiIh1mioiIiIgYFBERERFB+n8NgODrVEQYQAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Now we use the ControlVolume to plot the volume as a function of crank angle\n", "theta = np.linspace(0, 2*np.pi)\n", "V, dV = CV.V_dV(theta)\n", "plt.plot(theta, V*1e6)\n", "plt.xlabel(r'$\\theta$ (rad)')\n", "lb = plt.ylabel(r'$V$ (cm$^3$)')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2026-06-11T00:11:13.236821Z", "iopub.status.busy": "2026-06-11T00:11:13.236583Z", "iopub.status.idle": "2026-06-11T00:11:13.240576Z", "shell.execute_reply": "2026-06-11T00:11:13.239876Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "T: 300.0 K\n", "p: 101.0 kPa\n", "rho: 2.9771624874263045 kg/m^3\n" ] } ], "source": [ "# We can then query some properties of the ControlVolume's State class\n", "print('T: ', CV.State.T,'K')\n", "print('p: ', CV.State.p,'kPa')\n", "print('rho: ', CV.State.rho,'kg/m^3')\n", "# etc..." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.12.13" } }, "nbformat": 4, "nbformat_minor": 1 }