From 206193535771cead81615c2c577d48f70f81e627 Mon Sep 17 00:00:00 2001 From: iurisegtovich Date: Tue, 18 Oct 2016 19:59:12 -0200 Subject: [PATCH] minor mods on note 1 big change on notes 2 and 3, changed order and changed eos to vdw --- ...ok_Python_and_Applied_Thermodynamics.ipynb | 92 +-- ..._graphical_representation_of_the_EoS.ipynb | 338 +++++++++++ ...he_saturation_point_from_a_cubic_EoS.ipynb | 281 --------- ..._graphical_representation_of_the_EoS.ipynb | 197 ------- ...he_saturation_point_from_a_cubic_EoS.ipynb | 532 ++++++++++++++++++ Get_involved/README.md | 0 .../Get_going_with_Windows/README.md | 0 Getting_started/README.md | 0 8 files changed, 917 insertions(+), 523 deletions(-) create mode 100644 Get_involved/1_Beginner/2_matplotlib_and_some_graphical_representation_of_the_EoS.ipynb delete mode 100644 Get_involved/1_Beginner/2_numpy_and_scipy_and_how_to_get_the_saturation_point_from_a_cubic_EoS.ipynb delete mode 100644 Get_involved/1_Beginner/3_matplotlib_and_some_graphical_representation_of_the_EoS.ipynb create mode 100644 Get_involved/1_Beginner/3_numpy_and_scipy_and_how_to_get_density_HRes_SRes_GRes_and_the_saturation_point_from_a_cubic_EoS.ipynb create mode 100644 Get_involved/README.md create mode 100644 Getting_started/Get_going_with_Windows/README.md create mode 100644 Getting_started/README.md diff --git a/Get_involved/1_Beginner/1_Jupyter_notebook_Python_and_Applied_Thermodynamics.ipynb b/Get_involved/1_Beginner/1_Jupyter_notebook_Python_and_Applied_Thermodynamics.ipynb index dd601b3..49ffbe7 100644 --- a/Get_involved/1_Beginner/1_Jupyter_notebook_Python_and_Applied_Thermodynamics.ipynb +++ b/Get_involved/1_Beginner/1_Jupyter_notebook_Python_and_Applied_Thermodynamics.ipynb @@ -26,13 +26,13 @@ "Supose you have to solve the following problem in a thermodynamics course:\n", ">\"Consider a closed system containing `1 mol` of a gas. This system undergoes cyclic trasnformations consisting of four steps. The following table display variations in internal energy as well as total heat and total work input/output in each step. Determine the values of the missing quantities.\"\n", ">\n", - "> Steps | $\\Delta U$ (`J`) | $Q$ (`J`) |$W$ (`J`) \n", + "> Steps | $\\Delta U$ $\\mathrm{(}$$\\mathrm{J}$$\\mathrm{)}$ | $Q$ $\\mathrm{(}$$\\mathrm{J}$$\\mathrm{)}$ |$W$ $\\mathrm{(}$$\\mathrm{J}$$\\mathrm{)}$ \n", "> :--: | --: | --: | --:\n", - "> $A\\to B$ | -200. | \\_\\_\\_ | -6,000. \n", - "> $B\\to C$ | \\_\\_\\_ | -3,800. | \\_\\_\\_\n", - "> $C\\to D$ | \\_\\_\\_ | -800. | 300.\n", - "> $D\\to A$ | 4,700. | \\_\\_\\_ | \\_\\_\\_\n", - "> $A_{\\to B \\to}^{\\leftarrow D \\leftarrow} C$ | \\_\\_\\_ | \\_\\_\\_ | -1,400.\n", + "> $A$$\\to$$B$ | -200. | \\_ | -6,000.\n", + "> $B$$\\to$$C$ | \\_ | -3,800. | \\_\n", + "> $C$$\\to$$D$ | \\_ | -800. | 300.\n", + "> $D$$\\to$$A$ | 4,700. | \\_ | \\_\n", + "> $A$$_{\\to B \\to}^{\\leftarrow D \\leftarrow}$$C$ | \\_ | \\_ | -1,400.\n", ">> Adapted from `Smith, van Ness, 0000, 00ed. Ex0.`" ] }, @@ -45,7 +45,8 @@ "# Solution:\n", "## Fundamentals:\n", "According to the first law of thermodynamics, in any process, the variation in energy is equal to the sum of heat and work inputs/outputs\n", - ">- $\\Delta U_{A\\to B} = Q_{A\\to B} + W_{A\\to B}$ \n", + "\n", + "$$\\Delta U_{A\\to B} = Q_{A\\to B} + W_{A\\to B}$$ \n", "\n", "where, by convention, \n", "* $\\Delta U_{A\\to B}$ means difference between internal energy in state $B$ and nternal energy in state $A$: $U_B - U_A$\n", @@ -54,13 +55,13 @@ "\n", "Net Heat and Work in a cyclic operation is the sum of heat and work in each step process\n", "\n", - ">- $Q_{A\\to B} + Q_{B\\to C} + Q_{C\\to D} + Q_{D\\to A} = Q_{net}$\n", + "$$Q_{A\\to B} + Q_{B\\to C} + Q_{C\\to D} + Q_{D\\to A} = Q_{net}$$\n", "\n", - ">- $W_{A\\to B} + W_{B\\to C} + W_{C\\to D} + W_{D\\to A} = W_{net}$\n", + "$$W_{A\\to B} + W_{B\\to C} + W_{C\\to D} + W_{D\\to A} = W_{net}$$\n", "\n", "Also, as internal energy is a *function of state*, in a cyclic operation its net variation, when a full cycle is complete and the system is found to be in a previously visited state, is zero.\n", "\n", - ">- $\\Delta U_{A\\to B} + \\Delta U_{B\\to C} + \\Delta U_{C\\to D} + \\Delta U_{D\\to A}= 0$\n", + "$$\\Delta U_{A\\to B} + \\Delta U_{B\\to C} + \\Delta U_{C\\to D} + \\Delta U_{D\\to A}= 0$$\n", "\n" ] }, @@ -86,11 +87,13 @@ "\n", "Note that in lines corresponding to processes `A-B` and `C-D`, two degreees of freeedom are provided and only one value is missing, therefore we immediately solve any of these processes. Let's start with step $A\\to B$\n", "\n", - "> Steps | $\\Delta U$ (`J`) | $Q$ (`J`) |$W$ (`J`) \n", - "> :--: | --: | --: | --:\n", - "> A-B | -200. | \\_\\_\\_ | -6,000. \n", + " > Steps | $\\Delta U$ $\\mathrm{(}$$\\mathrm{J}$$\\mathrm{)}$ | $Q$ $\\mathrm{(}$$\\mathrm{J}$$\\mathrm{)}$ |$W$ $\\mathrm{(}$$\\mathrm{J}$$\\mathrm{)}$\n", + " > :--: | --: | --: | --:\n", + " > $A$ $\\to$ $B$ | -200. | \\_ | -6,000.\n", + " \n", "\n", - "$Q_{A\\to B}$ (`J`) = $\\Delta U_{A\\to B}$ (`J`) - $W_{A\\to B}$ (`J`)" + ">> $Q_{A\\to B} \\mathrm{(J)} = \\Delta U_{A\\to B} \\mathrm{(J)} - W_{A\\to B} \\mathrm{(J)}$\n", + "\n" ] }, { @@ -184,11 +187,11 @@ "source": [ "###C-D \n", "\n", - "> Steps | $\\Delta U$ (`J`) | $Q$ (`J`) |$W$ (`J`) \n", - "> :--: | --: | --: | --:\n", - "> C-D | \\_\\_\\_ | -800. | 300.\n", + " > Steps | $\\Delta U$ $\\mathrm{(}$$\\mathrm{J}$$\\mathrm{)}$ | $Q$$\\mathrm{(}$$\\mathrm{J}$$\\mathrm{)}$ |$W$$\\mathrm{(}$$\\mathrm{J}$$\\mathrm{)}$\n", + " > :--: | --: | --: | --:\n", + " > $C$$\\to$$D$ | \\_ | -800. | 300.\n", "\n", - "$\\Delta U_{C\\to D}$ (`J`) = $Q_{C\\to D}$ (`J`) + $W_{C\\to D}$ (`J`)\n", + ">> $\\Delta U_{C\\to D} \\mathrm{(J)} = Q_{C\\to D} \\mathrm{(J)} + W_{C\\to D} \\mathrm{(J)}$\n", "\n" ] }, @@ -245,14 +248,13 @@ "source": [ "Now, using the last fundamentalk exposed, concernign the fact that a cyclic process, on completion of a full cycle returns to a same equilibrium state, we can solve the last line in the table\n", "\n", - "> Steps | $\\Delta U$ (`J`) | $Q$ (`J`) |$W$ (`J`) \n", - "> :--: | --: | --: | --:\n", - "> A-B-C-D-A | \\_\\_\\_ | \\_\\_\\_ | -1,400.\n", + " > Steps | $\\Delta U$ $\\mathrm{(}$$\\mathrm{J}$$\\mathrm{)}$ | $Q$ $\\mathrm{(}$$\\mathrm{J}$$\\mathrm{)}$ |$W$ $\\mathrm{(}$$\\mathrm{J}$$\\mathrm{)}$\n", + " > :--: | --: | --: | --:\n", + " > $A$$_{\\to B \\to}^{\\leftarrow D \\leftarrow}$$C$ | \\_ | \\_ | -1,400.\n", "\n", - "> $\\Delta U_{A\\to B\\to C\\to D\\to A}=0$\n", + ">> $\\Delta U_{A\\to B\\to C\\to D\\to A}=0$\n", "\n", - "and, then\n", - "> $Q_{A\\to B\\to C\\to D\\to A}=\\Delta U_{A\\to B\\to C\\to D\\to A}-W_{A\\to B\\to C\\to D\\to A}$\n" + ">> $Q_{A\\to B\\to C\\to D\\to A}=\\Delta U_{A\\to B\\to C\\to D\\to A}-W_{A\\to B\\to C\\to D\\to A}$\n" ] }, { @@ -286,15 +288,15 @@ "source": [ "Now using the last fundamental again we can solve for the energy variation in step 2->3\n", "\n", - "> Steps | $\\Delta U$ (`J`) \n", + "> Steps | $\\Delta U$ $\\mathrm{(}$$\\mathrm{J}$$\\mathrm{)}$\n", "> :--: | --: \n", - "> A-B | -200. \n", - "> B-C | \\_\\_\\_ \n", - "> C-D | **-500.**\n", - "> D-A | 4,700. \n", - "> A-B-C-D-A | 0.\n", + "> ${A\\to B}$ | -200.$\\;\\;\\;\\;$ \n", + "> ${B\\to C}$ | \\_$\\;\\;\\;\\;$ \n", + "> ${C\\to D}$ | -500.$\\;\\;\\;\\;$ \n", + "> ${D\\to A}$ | 4,700. $\\;\\;\\;\\;$ \n", + "> $A_{\\to B \\to}^{\\leftarrow D \\leftarrow} C$ | 0.$\\;\\;\\;\\;$ \n", "\n", - "$\\Delta U_{A\\to B} + \\Delta U_{B\\to C} + \\Delta U_{C\\to D} + \\Delta U_{D\\to A}= 0$" + ">> $\\Delta U_{A\\to B} + \\Delta U_{B\\to C} + \\Delta U_{C\\to D} + \\Delta U_{D\\to A}= 0$" ] }, { @@ -337,11 +339,11 @@ "according to 1st fundamental\n", "\n", "\n", - "> Steps | $\\Delta U$ (`J`) | $Q$ (`J`) |$W$ (`J`) \n", + "> Steps | $\\Delta U$ $\\mathrm{(}$$\\mathrm{J}$$\\mathrm{)}$ | $Q$ $\\mathrm{(}$$\\mathrm{J}$$\\mathrm{)}$ |$W$ $\\mathrm{(}$$\\mathrm{J}$$\\mathrm{)}$\n", "> :--: | --: | --: | --:\n", - "> B-C | -4,000. | -3,800. | \\_\\_\\_\n", + "> $B$$\\to$$C$ | -4,000. | -3,800. | \\_\n", "\n", - "$W_{B\\to C} = \\Delta U_{B\\to C} - Q_{B\\to C}$\n", + ">> $W_{B\\to C} = \\Delta U_{B\\to C} - Q_{B\\to C}$\n", "\n", "\n" ] @@ -373,17 +375,17 @@ "source": [ "Now using the 2nd and 3rd fundamentals we can solve for the heat and for work in step 4->1\n", "\n", - "> Steps | $Q$ (`J`) |$W$ (`J`) \n", + "> Steps | $Q$ $\\mathrm{(}$$\\mathrm{J}$$\\mathrm{)}$ |$W$ $\\mathrm{(}$$\\mathrm{J}$$\\mathrm{)}$ \n", "> :--: | --: | --:\n", - "> A-B | 5,800. | -6,000. \n", - "> B-C | -3,800. | -200.\n", - "> C-D | -800. | 300.\n", - "> D-A | \\_\\_\\_ | \\_\\_\\_\n", - "> A-B-C-D-A | 1400. | -1,400.\n", + "> $A$$\\to$$B$ | 5,800. | -6,000. \n", + "> $B$$\\to$$C$ | -3,800. | -200.\n", + "> $C$$\\to$$D$ | -800. | 300.\n", + "> $D$$\\to$$A$ | \\_ | \\_\n", + "> $A$$_{\\to B \\to}^{\\leftarrow D \\leftarrow}$$C$ | 1400. | -1,400.\n", "\n", - ">- $Q_{D\\to A} = Q_{net} - (Q_{A\\to B} + Q_{B\\to C} + Q_{C\\to D})$\n", + ">> $Q_{D\\to A} = Q_{net} - (Q_{A\\to B} + Q_{B\\to C} + Q_{C\\to D})$\n", "\n", - ">- $W_{D\\to A} = W_{net} - (W_{A\\to B} + W_{B\\to C} + W_{C\\to D})$" + ">> $W_{D\\to A} = W_{net} - (W_{A\\to B} + W_{B\\to C} + W_{C\\to D})$" ] }, { @@ -878,7 +880,8 @@ "cell_type": "code", "execution_count": 20, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": true }, "outputs": [ { @@ -945,8 +948,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#References\n", - "`Smith, van Ness, 0000, 00ed. Ex0.`" + "# Conclusion\n" ] } ], diff --git a/Get_involved/1_Beginner/2_matplotlib_and_some_graphical_representation_of_the_EoS.ipynb b/Get_involved/1_Beginner/2_matplotlib_and_some_graphical_representation_of_the_EoS.ipynb new file mode 100644 index 0000000..57d8b12 --- /dev/null +++ b/Get_involved/1_Beginner/2_matplotlib_and_some_graphical_representation_of_the_EoS.ipynb @@ -0,0 +1,338 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "matplotlib and graphical visualization of isotherms of the EoS\n", + "==\n", + "This notebook intends to present van der Waals's Equation of State([wikipedia](https://en.wikipedia.org/wiki/Van_der_Waals_equation),[nobel prize lecture](http://www.nobelprize.org/nobel_prizes/physics/laureates/1910/waals-lecture.pdf)), and to represent its results in a graphical manner.\n", + "\n", + "> **Here you will meet the following topics:**\n", + ">- Thermodynamics: `EoS isotherms`\n", + ">- Python: `matplotlib.pyplot`\n", + ">- Jupyter Notebook: `magic command`, `interactive figures`\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Supose you have to solve the following assignment in a thermodynamics course:\n", + ">\"Plot the isotherm of van de Waals - EoS for some pure component at differnte values of T and comment on the sub-critical and super-critical behavior\"" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "#this is an Ipython \"magic command\". This performs the necessary behind-the-scenes setup for IPython to work correctly hand in hand with matplotlib;\n", + "#With this backend, the output of plotting commands is displayed inline within frontends like the Jupyter notebook, directly below the code cell that produced it. The resulting plots will then also be stored in the notebook document\n", + "\n", + "#you can try commenting the previous magic command and enabling the following\n", + "#%matplotlib notebook\n", + "#this command that allows interactive figures if your environment allows it.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we will use some resources of the packages numpy and matplotlib" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "numpy is \"the fundamental package for scientific computing with Python\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To import a module into our notebook we use the following syntax:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import numpy as numpy #this line imports the module numpy \"the fundamental package for scientific computing with Python\"\n", + "#keyword import\n", + " #name of the module\n", + " #keyword \"as\"\n", + " #alias name" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will also use matplotlib, a python 2D plotting library which produces publication quality figures in a variety of hardcopy formats and interactive environments across platforms.\n", + "Specifically the pyplot interface." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import matplotlib as matplotlib" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Consider the *van der Waals* equation of state (Reid et al., 1987, see Eq 3-6.1 and Table 3-5, line 1)\n", + "\n", + "$P=\\frac{RT}{{\\bar{V}}-b}-\\frac{a}{{\\bar{V}}^2}$\n", + "\n", + "$a=\\frac{27}{64}\\frac{{{Tc}^2}{R^2}}{Pc}$\n", + "\n", + "\n", + "$b=\\frac{{R}{Tc}}{{8}{Pc}}$\n", + "\n", + "where $R$ is the gas constant \n", + "\n", + "$R = 8.3144598 \\mathrm{{J} {mol^{−1}} {K^{−1}}}$\n", + "\n", + "and critical properties for hexane are \n", + "\n", + "$Tc = 507.5 \\mathrm{K}$\n", + "\n", + "\n", + "$Pc = 30.1 \\times {10^6} \\mathrm{Pa}$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "So lets code this information:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First the gas constant" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#gas constant\n", + "R = 8.3144598 #J.mol^−1.K^−1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "now the physical properties of the substance" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#pure component critical point of hexane\n", + "# Tc (K)\n", + "Tc = 507.5 #K\n", + "\n", + "# Pc (bar)\n", + "Pc = 30.1*(10**6) #Pa" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then the EoS parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.2495499363743344\n" + ] + } + ], + "source": [ + "a = 27/64*((Tc**2)*(R**2)/Pc)\n", + "print(a)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.752320742732558e-05\n" + ] + } + ], + "source": [ + "b = (R*Tc)/(8*Pc)\n", + "print(b)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and the explixt eos representation" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#define function to calc Pressure from T and V\n", + "def Pressure_van_Der_waals(T,Vm):\n", + " P = R*T/(Vm-b) - a/(Vm**2)\n", + " return P" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "legend=[]\n", + "\n", + "for T in numpy.linspace(277.5, 607.5, 9):\n", + " \n", + " #array of values for volume\n", + " Vmi = numpy.exp(numpy.linspace(numpy.log((R*Tc)/(8*Pc)*1.01),numpy.log((R*Tc/Pc)*100.),100))\n", + " \n", + "\n", + " matplotlib.pyplot.figure(1) #activate\n", + " matplotlib.pyplot.subplot(211) #activate\n", + "\n", + " matplotlib.pyplot.loglog(Vmi,Pressure_van_Der_waals(T,Vmi), label=str(T)+'K')\n", + " matplotlib.pyplot.ylabel('positive P')\n", + " matplotlib.pyplot.title('isotherm')\n", + " matplotlib.pyplot.ylim([Pressure_van_Der_waals(T,(R*Tc/Pc)*100.),Pressure_van_Der_waals(T,(R*Tc)/(8*Pc)*1.01)])\n", + " matplotlib.pyplot.xlim([(R*Tc)/(8*Pc)*1.01,(R*Tc/Pc)*100.])\n", + "\n", + " matplotlib.pyplot.tick_params(\n", + " axis='x', # changes apply to the x-axis\n", + " which='both', # both major and minor ticks are affected\n", + " bottom='on', # ticks along the bottom edge are off\n", + " top='on', # ticks along the top edge are off\n", + " labelbottom='off') # labels along the bottom edge are off\n", + "\n", + " matplotlib.pyplot.subplot(212) #activate\n", + "\n", + " matplotlib.pyplot.semilogx(Vmi,Pressure_van_Der_waals(T,Vmi), label=str(T)+'K')\n", + "\n", + " matplotlib.pyplot.xlabel(r'$\\bar{V}$')\n", + " matplotlib.pyplot.ylabel('negative P')\n", + " matplotlib.pyplot.ylim([-100000000,0.])\n", + " matplotlib.pyplot.xlim([(R*Tc)/(8*Pc)*1.01,(R*Tc/Pc)*100.])\n", + " \n", + "#matplotlib.pyplot.legend(loc=0) \n", + "matplotlib.pyplot.show() \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# External references:\n", + "matplotlib magic command http://ipython.readthedocs.io/en/stable/interactive/plotting.html\n", + "matplotlib, pyplot [tutorial](http://matplotlib.org/users/pyplot_tutorial.html)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Credits\n", + "* Initially developed in python 2.7 by Guilherme Carneiro Queiroz da Silva\n", + "* Adapted to ipynb with python 3.5 by Iuri Soter Viana Segtovich" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python [Root]", + "language": "python", + "name": "Python [Root]" + }, + "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.5.2" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Get_involved/1_Beginner/2_numpy_and_scipy_and_how_to_get_the_saturation_point_from_a_cubic_EoS.ipynb b/Get_involved/1_Beginner/2_numpy_and_scipy_and_how_to_get_the_saturation_point_from_a_cubic_EoS.ipynb deleted file mode 100644 index 3840582..0000000 --- a/Get_involved/1_Beginner/2_numpy_and_scipy_and_how_to_get_the_saturation_point_from_a_cubic_EoS.ipynb +++ /dev/null @@ -1,281 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "numpy and scipy and how to get the saturation point from a cubic EoS\n", - "==\n", - "This notebook intends to present van der Waals's Equation of State([wikipedia](https://en.wikipedia.org/wiki/Van_der_Waals_equation),[nobel prize lecture](http://www.nobelprize.org/nobel_prizes/physics/laureates/1910/waals-lecture.pdf)), and to derive get density for given values of Pressure and Temperature.\n", - "\n", - "> **Here you will meet the following topics:**\n", - ">- Thermodynamics: `equation of state`, `density`, `saturation point`\n", - ">- Python: `packages`, `numpy`, `scipy`" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": false - }, - "source": [ - "Here we will use some resources of the packages numpy and scipy" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To import a module into our notebook we use the following syntax:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "import numpy as numpy #this line imports the module numpy\n", - "#keyword import\n", - " #name of the module\n", - " #keyword \"as\"\n", - " #alias name" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "the following slightly different syntax works similarly:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "from scipy import optimize as optimize\n", - "#keyword \"from\"\n", - " #name of the parent module\n", - " #keyword \"import\"\n", - " #name of the desired subpackage\n", - " #keyword \"as\"\n", - " #alias name" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "to use some function of this module we have to write 'alias name'.'function name'\n", - "as an example we will see below:\n", - "numpy.roots, numpy.log, numpy.where, optimize.bissect" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Supose you have to solve the following problem in a thermodynamics course:\n", - ">\"Calculate saturation pressure for pure hexane at temperature of 220 K according to Peng-Robinson equation of state\"\n", - "\n", - "We will show how here to implement a function to calculate density of a pure fluid at given T and P; how calculate its fugacity coefficnient at that condition, and how to find saturaton pressure at given temperature, to according to Peng-Robinson equation of state." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here we start by assigning value to some thermodynamic variables" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "#universal gas constant\n", - "R = 0.08314 #CHECK UNITS\n", - "\n", - "#pure component critical parameters\n", - "## Tc (K)\n", - "Tc = 507.5\n", - "\n", - "## Pc (bar)\n", - "Pc = 30.1\n", - "\n", - "##accentric factor\n", - "ac=0.299" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "#calculate saturation pressure at what temperature?\n", - "T = 220." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "[ ] Write references" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "plateaus: [ 4.25591143 -0.10653629 0.14642616 0.09212116]\n", - "plateaus: [ 4.25591143 0.14642616]\n", - "Vli: 0.14642616259\n", - "Vvi: 4.25591142877\n", - "Psupi: 2.09228234169\n", - "Pinfi: 1e-09\n", - "Saturation pressure = [ 0.001735215064619947 ] bar\n" - ] - } - ], - "source": [ - "### Calculate Psat using the algorith from\n", - "\n", - "#[ ] Write relevant equation in mathjax format\n", - "\n", - "#calculate the coeficients of the EoS from the critical properties\n", - "kappa = 0.37464+1.54226*ac-0.26992*ac*ac \n", - "a = 0.45724*R*R*Tc*Tc/Pc\n", - "teta = a*(1.+kappa-kappa*(T/Tc)**0.5)**2 \n", - "b = 0.0778*R*Tc/Pc\n", - "sig = 1. + 2**0.5\n", - "eps = 1. - 2**0.5\n", - "dteta = kappa*(-kappa+(1+kappa)*(T/Tc)**0.5)*-a/Tc\n", - "\n", - "#[ ] write dP/dV=0 in mathjax\n", - "#[ ] write polynomial-in-V representation of dP/dV=0 in mathjax\n", - "\n", - "#calculate each coeffcient of the polynomial-in-V representation of dP/dV=0\n", - "rho = R*T\n", - "mu = 2*(b*R*T*(eps+sig)-teta)\n", - "nu = R*T*(b**2)*(4*sig*eps+eps*eps+sig*sig) - b*(teta*(eps+sig-4))\n", - "omega=2*(b**3)*R*T*(sig*eps*eps+eps*sig*sig)- 2*(b**2)*(teta*(1-sig-eps))\n", - "zeta = R*T*(b**4)*sig*sig*eps*eps-teta*(b**3)*(eps+sig)\n", - "\n", - "#use the method \"roots\" from package \"numpy\" to calculate the roots of tyhe polynomial and assing the solutions to the variable plateaus as an array\n", - "plateaus = numpy.roots([rho,mu,nu,omega,zeta])\n", - "\n", - "print(\"plateaus:\", plateaus)\n", - "\n", - "\n", - "#filter out values of plateu correspondign to non-physical volume (less than b)\n", - "\n", - "plateaus = plateaus[ numpy.where( plateaus > b ) ]\n", - "\n", - "print(\"plateaus:\", plateaus)\n", - "\n", - "Vli = min(plateaus)\n", - "Vvi = max(plateaus)\n", - "\n", - "#find the corrsponding values of pressure for each filtered volume\n", - "\n", - "Psupi = R*T/(Vvi-b)-teta/((Vvi+sig*b)*(Vvi+eps*b))-0.000000001\n", - "Pinf = R*T/(Vli-b)-teta/((Vli+sig*b)*(Vli+eps*b))\n", - "\n", - "#note that the algorithm cannot work with pressure less than or equal to zero, therefore fix minimium pressure to slightly above zero if is resulted negative\n", - "\n", - "if Pinf > 0:\n", - " Pinfi = Pinf+0.000000001\n", - "else:\n", - " Pinfi = 0 +0.000000001\n", - "\n", - "print(\"Vli:\",Vli)\n", - "print(\"Vvi:\",Vvi)\n", - "print(\"Psupi:\",Psupi)\n", - "print(\"Pinfi:\",Pinfi) \n", - "\n", - "#[ ] write reference to this equaiton in mathjax\n", - "\n", - "#define function for usage internal to the algorith\n", - "def psia(V):\n", - " return (1/(b*(eps-sig)))*numpy.log((V+eps*b)/(V+sig*b))\n", - "\n", - "#[ ] write reference to this equaiton in mathjax\n", - "\n", - "#define equilibrium criteria\n", - "def fps(P):\n", - " alfa = (sig+eps-1)*b-R*T/P\n", - " beta = sig*eps*b**2-(b+R*T/P)*(sig+eps)*b + teta/P\n", - " gamma = -(b+R*T/P)*(sig*eps*b**2)-b*teta/P\n", - " V = numpy.roots([1,alfa,beta,gamma])\n", - " Vl = min(V)\n", - " Vv = max(V)\n", - " return (P*(Vl-Vv) + (T*dteta-teta)*(psia(Vl)-psia(Vv))+T*(R*numpy.log((Vv-b)/(Vl-b))+dteta*(psia(Vv)-psia(Vl))))/(R*T)\n", - "\n", - "#ask package optmize to use method bissect to solve the equilibrium criteria just defined\n", - "\n", - "psat = optimize.bisect(fps, Pinfi, Psupi, xtol=1e-12, rtol=4.4408920985006262e-16, maxiter=100, full_output=True, disp=True)\n", - "\n", - "print(\"Saturation pressure = [\",str(psat[0]),\"] bar\")\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# External references\n", - "scipy, optimize [documentation](http://docs.scipy.org/doc/scipy/reference/optimize.html)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Credits\n", - "* Initially developed in python 2.7 by Guilherme Carneiro Queiroz da Silva\n", - "* Adapted to ipynb with python 3.5 by Iuri Soter Viana Segtovich" - ] - } - ], - "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [Root]", - "language": "python", - "name": "Python [Root]" - }, - "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.5.2" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/Get_involved/1_Beginner/3_matplotlib_and_some_graphical_representation_of_the_EoS.ipynb b/Get_involved/1_Beginner/3_matplotlib_and_some_graphical_representation_of_the_EoS.ipynb deleted file mode 100644 index 0535daa..0000000 --- a/Get_involved/1_Beginner/3_matplotlib_and_some_graphical_representation_of_the_EoS.ipynb +++ /dev/null @@ -1,197 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "matplotlib and graphical visualization of isotherms of the EoS\n", - "==\n", - "This notebook intends to present van der Waals's Equation of State([wikipedia](https://en.wikipedia.org/wiki/Van_der_Waals_equation),[nobel prize lecture](http://www.nobelprize.org/nobel_prizes/physics/laureates/1910/waals-lecture.pdf)), and to represent its results in a graphical manner.\n", - "\n", - "> **Here you will meet the following topics:**\n", - ">- Thermodynamics: `EoS isotherms`\n", - ">- Python: `matplotlib.pyplot`\n", - ">- Jupyter Notebook: `magic command`, `interactive figures`\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Supose you have to solve the following assignment in a thermodynamics course:\n", - ">\"Plot the isotherm of PR-EoS for some pure component at differnte values of T and comment on the sub-critical and super-critical behavior\"" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "#this is an Ipython \"magic command\". This performs the necessary behind-the-scenes setup for IPython to work correctly hand in hand with matplotlib;\n", - "#With this backend, the output of plotting commands is displayed inline within frontends like the Jupyter notebook, directly below the code cell that produced it. The resulting plots will then also be stored in the notebook document\n", - "\n", - "#you can try commenting the previous magic command and enabling the following\n", - "#%matplotlib notebook\n", - "#this command that allows interactive figures if your environment allows it.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here we will use numpy, \"the fundamental package for scientific computing with Python\"\n", - "We will also use matplotlib, a python 2D plotting library which produces publication quality figures in a variety of hardcopy formats and interactive environments across platforms.\n", - "Specifically the pyplot interface." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "import numpy as numpy\n", - "import matplotlib as matplotlib" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "#input\n", - "\n", - "R = 0.08314\n", - "\n", - "#pure component critical properties\n", - "##Tc (K)\n", - "Tc = 507.5\n", - "##Pc (bar)\n", - "Pc = 30.1\n", - "#ac\n", - "ac=0.299" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "#define function to calp Pressure from T and V according to PR(ref)\n", - "def PR(T,Vm):\n", - " alfa = (1+(0.37464+1.54226*ac-0.26992*ac*ac)*(1-(T/Tc)**0.5))**2\n", - " a =alfa* 0.45724*R*R*Tc*Tc/Pc\n", - " b = 0.0778*R*Tc/Pc\n", - " P = R*T/(Vm-b) - a/(Vm*Vm+2*b*Vm-b*b)\n", - " return P" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZIAAAEdCAYAAAAmZOH3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXeYXVW5/z/r9Da9ZXrJ1MykTXpCCUUIoPQmxYKo6LVw\n9YL3XrkS9Frhh6KIohdRFJQm3YBSkmASEgyQ6X3O9N5nTj9n/f7YU9IzyUySSbI+z7Oevc8+e797\nnXNmzve877vWeoWUEoVCoVAojhXdye6AQqFQKE5tlJAoFAqFYkYoIVEoFArFjFBColAoFIoZoYRE\noVAoFDNCCYlCoVAoZoQSEoViGgghyoQQ58yivXQhREgIof4HFac86o9YoZgGUsoiKeXWY71eCNEo\nhDh/f7Mz7JZCMSdQQqJQnOIIIfQnuw+KMxslJArFNJjwKIQQK4QQ7wshhoQQHUKIB/Y65/LxEFi/\nEOJtIUTe+PEngDTgFSHEsBDiPyYuAW4RQjQJIbqFEP+9ly0hhPhPIUSdEKJHCPEXIUTk+HMTYbHb\nhBBNwFt7HfuMEKJZCNEnhPiiEGK5EGLPeJ9+ccLeMMUZhRIShWJ6TIShHgJ+JqWMAOYDzwAIIXKB\np4CvAXHAJuBVIYRBSvkpoBn4uJQyXEr5wF521wE5wIXAdybEZ9zO5cDZQBIwADyyX5/OAfKBi/c6\nthLIBm4Afgb8N3A+UARcL4Q4eyZvgkJxMJSQKBTTQ4xvfUC2ECJGSumSUu4aP3498KqU8m0pZRB4\nALACaw9iYwIJbJRS+qSUJcAeYPH4c18Evi2l7JBS+oHvAtfulZyXwL1SSreU0rvXse+O23sTGAP+\nLKXsk1K2A+8CS2f+VigU+6KERKE4Oj4H5AFVQoidQojLxo8nAU0TJ0ltNdQWIPkI9rr22ncBjvH9\ndOCF8ZBUP1AB+IGEvc5vPYi97r323fvZd+9lX6GYNQwnuwMKxamElLIeuAlACHEN8JwQIhpoBxbu\nd3oqU1/2RztCqxm4TUq5Y/8nhBDpx2hToTguKI9EoTgKhBA3CyFixx8OoX2Zh9ByJZcKIc4TQhjG\nE+oeYEIIOoGs/c0d5laPAj8QQqSN3zdOCHH5Ea49nD2F4rihhEShmB4Tv/43AOVCiGHgp8ANUkqv\nlLIGuAV4GOgBLgM+IaUMjF/3I+B/xkNV39jP5v73AC2p/xLwdyHEELAdLZF+sHMPdexIjxWKWUGo\nwlYKhUKhmAnKI1EoFArFjFBColAoFIoZoYREoVAoFDPijBv+K4RQSSGFQqE4BqSUBx0ZeEZ6JFLK\nE9buvffek2rraK450rnH+vzBjk/32Ilu6vNSn9dc/LyO9rnj8XkdDv3GjRtPzLf3HOG+++7bOLGf\nkZFxQu45m/c5FltHc82Rzj3W5w92fP9jmzdvZv369Ye1fyJQn5f6vI7XNTP5vI72udn6vDZv3szv\nf/97tmzZwsaNG+872Dln3PBfIYQ8017zqcLGjRs5037YnMqoz+vUYqaflxACqUJbU2zcuJHNmzef\n7G4o9mMu/LpVTB/1eZ1aHOvntXnz5iMK0BnpkYRCIYRQq0koFArFdFEeyX4EhgNHPkmhUCgU0+KM\nFJKu+tGT3QWFQqE4bTgjheTejd9WORKFQqGYBmdkjkQIYQO2oFWP+9tBnpfPfuXvXPuLj534zikU\nCsUpypmWI/kW8PThThiudJ2grigUCsXpz5wWEiHEY0KILiFEyX7HNwghqoQQNUKIb+11/EK0kqQ9\nHKbIj6nReNz6rFAoFGcac1pIgMeBi/c+IITQoRUPuhgoBD4phMgff3o9sAqtFOrthzIa225BBk+v\nkJ5CoVCcLOb0oo1Syn/uVZ96gpVArZSyCUAI8RfgCqBKSnnP+LFPAb2HsjsQKRiuGSOiwHGceq5Q\nKBRnDnNaSA5BMtCy1+NW9i1BipTyicMZ+L34P96++wWSl0Wzfv16NUNXoVAo9mPz5s3THt16KgrJ\njHHbh0kfWMk9G79+sruiUCgUc5KJH9nTEZS5niM5GG1A2l6PU8aPTRufsR1RFjji0sgKhUKhODKn\ngpAI9h2B9T6QLYRIF0KYgBuBl4/G4Kinn4AUuKrVMGCFQqGYKXNaSIQQTwHbgVwhRLMQ4rNSyiDw\nVeDvQDnwFyll5dHYbXfZqc/2Uv6Xo3JkFAqFQnEQTruZ7UdCCCHDs7/Ml5fGsm73+VxWd45aCVih\nUCiOwOFmtp+RyXb76Os0tYQoHjuXkX+NEL4i/GR3SaFQKOYk00m2n5EeyZevm89HvWkUJ3yN60KZ\nnPP04pPdLYVCoZjTKI9kP1qqg+wcyeL85Ndwv3Qz3nYv5iTzye6WQqFQzDmUR3IQhBDyr7d8gxv+\nauTba3/HmO3P3JKZwqKf5Z3srikUCsWc5Uxb/feIPPpRNWkJL/CMZSnu1C10/aETT7PnZHdLoVAo\n5hxnZD2SIyGEkLfe/gaRpk/wf9sf5TcRP2Zn8i/5nEhgyZ8KT3b3FAqFYk6iPJL9GEgMsDYtH1kz\nwNPp/cjUrbS/08/AWwMnu2sKhUJxynFGCgkRvSQ0Lycm6nne6f4yN7/9FD/7so+yL1QRdAdPdu8U\nCoXilOKMFJLmv/2eD7ZaOefsehy1V7JxUQfntz5LSW6Iun+vO9ndUygUijnDdHIkp5WQCCHyhRC/\nEkI8I4S441DnXZWXQ1bYNaxeNYDB8xL1ts9w2Qdv8cfbh2l+o5fup7tPZLcVCoVizrJ+/fozS0ik\nlFVSyi8BNwBrD3Vedn0jbRlWijML8fsfp/P5b/L5td388kff4Z5vB6n6Sg1jlWMnruMKhUJxCjOn\nheRoa7aPP/cJ4FXgb4eym97XQ2VWCHPjcjZsiCU3YYBg1I0MZxu4unc7T3/VQMmlJXg7vMfnhSkU\nCsVpxJwWEo6+ZjtSyleklJcBtxzKaLxnlF3pPoLvLuLccz0MDW2k+YnvcOuCav7914/gXDdGyRVm\nSj9eSmAkcHxemUKhUJwmzGkhkVL+E9h/TO5kzXYppR+YqNmOEOJcIcRDQohfA68dyq5V56MmHTxv\n5pKV1YDf/wE588JZ5vgqD3wmhye+/GV+fK2LjgUGSi8rJTCqxEShUCgOxZyfkCiESAdekVIuGn98\nDXCxlPIL449vAVZKKb82TXtyebiF2lVnc9VHaaz+9k5Ka/Po77+UD8uvZ/jTefyr9nwGPAbOu+1z\nPP2bcMIbAyzatAhD2Bm5NJlCoTgDmVhjy+l04nQ62bJli5qQuDdF8WEUnnsuN57/FdYmX8xFF9nZ\nvv17mIWdG2N/xJULyygo2cNTDfXc+IVhvLkm9nxsD74e38nuukKhUJwQJkZrfeYzn2H9+vWHPfdU\nFJIZ12z/RPE8VqSl0Z2vh5JikpLKsVotXHddDf985BbCHDE8fvfFXHDXXfwMybW3DRE828EHaz5Q\n5XkVCsUZxeky/HfWa7b/rqaL4Pbt1GeD7+0s3O5qbrjhajo6fsnoiOCm8F9xd9Nv6Xr4x9x44438\nMDqKq6/qw/LNRD4850MG3lZLqSgUijODU35C4vGq2T5ilCT19vJRZpCxj3yEh63h0kvTePbZp/nv\n/w7yfz/J4c7V/85n/c8iv/IVPvXpT/O9lBQuXdyG6bEMKm+uxPm/TmRobueXFAqF4kQwp4VESnmT\nlDJJSmmWUqZJKR8fP75JSpknpcyRUv7oaO0OG0IkdnRQZfBiSjBhC6wjKqqSjIwMoqLeZGAAlnnu\nom2kjd9fnAB5eXz2q1/l4awsLoty4n0rm4G/D1BySQm+LpU3USgUZzZzWkiOF/MuCOf6wUGavF4c\nSx0YG1cyOPgON910E08//RT33AM/+J6JJ678I3e/9S2cD34HPB6uvucenlmwgBsGail9ah5hy8N4\nf/H7dP2li7k++k2hUCiOhdMlRzLrfLS1m13t7UQaDIRyzYTKsvF4nFx55QW8/PLLXH65m64u6K9c\nxN1r7+ZTr91O8NlnoKSE9fffzztLlvC9tmZ+8dkQC14spOl7TZRfXY63U82EVygUpxenfI7keGG8\nwMh6n49kk4mxDAOeWj8REWdjtVaxfPlyXn/9Ve65B+67D76x5hsIIXiw9Dfw2mvw0ksU3n8/u4qL\nqRgb41qLk+QdC7EtsPF+0fs0P9BMyBc62S9RoVAoZgXlkRyCpm/3gttNvNHIYLoBd62bqKjzGBx8\nm5tuuomnnnqKm26C5mZ4b4eeP1z5B36y/Sd8FGyDt9+G554j6n//l78tXMi6iAiWl31Ixb+HU7yt\nmMG3B3l/4fv0vtqrwl0KheKM4IwUkvu+9z02m0zEC0F3MrhqXURErGdwcDNXX301b7/9NiMjA/zn\nf8L3vw8ZkRk8tOEhbnjuBkYibZqY/PWv6O+5h+9mZPDMggX8W20td4tW5r9SSPZPs2m4u4EP131I\n/5v9SlAUCsUpi6rZfhCEEFJKCUlJ3L1pEzGRkaxb0sLymqXsqoxj7dpubrjh01xyySXceuvtzJ8P\nL70Ey5bB7S/fjifg4Y9X/RHR2wuXXgqLF8Ovf82glHyltpZtw8M8kpPDhshoup/uxnmfE1OCifRv\npxN1URRCHHSFAYVCoZjTqJrtByMsjIRAgC6/H2uOFW9dALu9kLGxEq677jpefPFFzGa46y74wQ+0\nS35+yc/5qPMjHv/ocYiLg3fegdZWuOoqIv1+/rRgAb/OzeUrtbV8sqqC4DWRrChfQeLtidTfVc/7\nRe/T/tt2Vc5XoVCcVpyRQrJx40Y2AxFeL0OBAOZUM95WLw7HUkZHP+Siiy5i69ateDwePv952LYN\nysvBZrTxzHXP8K03v0V5dzk4HPDKKxAdDevXQ1sbF0dHU7piBVlWKwvff5+NLU3Yb4pl+Z7l5Pw8\nh96Xenkv4z3q/qOOsXJVPEuhUMxtzrhRW0KIK4QQvxFC/FkI8bFDnbdx40bWJyUR7vEwEgxiTjbj\na/fhcCxlZORDoqOjWbRoEVu2bMFmgzvvnPJKFsQt4CcX/oTrn7ueMd8YGI3w+9/DlVfCypWwfTs2\nvZ4fZGXxwfLlNHo85O7axS/b2rCsD2fRq4tY+s+l6Ew69ly0h90rd9P2qzb8ff4T9C4pFArF9JnO\nqK3TMkcihIgE7pdSfv4gz2k5kk2b2JSZyUNeL49uiiTQHyD6v5pxOu9l6dKt/OAHP6Crq4uHHnqI\n4WHIyICSEkhJASkln3rxUxh0Bh6/4vEp46+9Bp/9LHzve/CFL8B4PuSDkRHuczrZNTLCnSkpfCkp\niXCDARmU9P+9n87HO+l/o5/wleHEXhNL3FVxmBJMJ+jdUigUiiNzyuZIjqXU7jj3AL88rPFLLiE8\nMVHzSJLMeNu9WK3ZuN11AFxwwQVs2bIFgPBwuPlm+PWvJ+/Pry77FTtbd/LYB49N2bzsMnj3Xfjl\nL+G666C/H4DisDBeWriQvy9aRMnoKFnvvcedtbVUeVzEXBJD4TOFrG1fS9IdSQxtHWJX/i4+OOsD\nnN9zMvz+MDJ4+om9QqE4fThuHokQwgLcAWQDpcBjUsqjKjUohDgLGAWe2KuwlQ6oAS4A2tFWA75R\nSlk1/vyPgL9LKd8+hE058ZpLRke5ubKSzT1ZtP2ijYV/K+Ldd+2sW9dLMGgkOjqa9vZ2wsPDqa6G\nc86BpiawWDRbVb1VnP342bx+8+ssS1o2dROPB/7zP+H55+EPf4Dzz9+nD063m992dPBYRwd5Nhtf\nSEriipgYHAatcFbQE2RoyxD9b/TT/0Y/vi4f0R+LJvKCSCLOisCWZ1OjvxQKxQnlZHkkfwCWo4nI\nJcD/O1oDx1Bq96toAnOtEOILR7IfrtczEghgiDbg7/cjhA6LJQu3ux6TyURxcTE7d+4EIC8Pli6F\np5+euj4/Np9HLn2Ea5+9ln53/9QTFgv87Gfw29/CrbfC5z8/6Z0AZFitfD8ri+Y1a/hqcjJ/6uoi\neccOrisv57nubrxGiL44muwHs1lZvpLlHy4n6sIohrYMUbKhhO3x2ym9spTmB5oZem+IoEeNAlMo\nFCeP41k7doGUciFoISpg1yzZTQZa9nrciiYuSCl/AfziSAYmEkeuYJC++HiMFy8m0K85S1ZrDm53\nHQ7HItauXcv27dv52Me0vP0dd8CDD8KnPz1l67rC69jRuoNbX7iVVz75CjqxlzZv2AAVFfDtb0Nh\nIfzkJ1qMTKedY9LpuDY+nmvj4+nz+3mhp4dHOzq4rbqadRERbIiOZkN0NLkpVhI/l0ji5xIB8LR4\nGNo2xNA/h+j6UxfuajfWPCthy8Imm32xHb1Ff2zvsEKhOOOZKLU7HY6nkEwOQ5JSBuZaKGb9+vWs\nPeccHty6FX2kHv+A1l2LJQOPpxGAtWvX8stfTqVaLr1Uy6E3NEBW1pStH1/4Y85/4ny+v/X7/M+5\n/7PvjSIi4OGH4VOfgq98BX76U/jhD+GiiyaT8QAxRiO3JyVxe1ISg34/bw0O8np/P/c3N2MQgrMi\nIlgXEcFZEREUpthJuDGBhBsTAAi6g4yVjDGye4SR3SO0/6Ydd40ba7YVe5Fda4Xa1pJpQejm1meh\nUCjmHuvXr2f9+vXTEpTjKSSLhRDD4/sCsI4/FoCUUoYfo90Zl9qdwKTT8dqiRRjCjAQGA8iQxGxO\nxOfr1F7A4sWUlpZOnW+CG2+EP/4R7r13yo5Rb+Tpa59m+W+WsyplFRfNv+jAm61cCTt3wl//Cl/7\nGiQmwt13a16Lbt8IY6TRyDVxcVwTF4eUkiqXi21DQ2wbHuanra30+P2sCAtjicMx2XJXOAhfNfWW\nBj1BXOUuxsrHGCsbo/3RdsbKx/D3+rEV2CbFxZZvw5Znw5JpQWec02MvFArFHOW4CYmUcrbiKocs\ntQt0oJXa/eSxGr84OhoAvVVPcCSIyZTI2FgZAGlpaYyMjDAwMEBUVBSgORaf/CR85zv7OBQkhSXx\n52v+zA3P3cCuz+8iLSLtgHshBFxzDVxxBfz5z1rI6z/+Q5uocsMNmvdywCWCArudArud25OSAOj2\n+Xh/ZIQ9o6O82NvLRqeTNq+XBXY7+TYbeVYreTYbeXk2cpbEMU8/b9JeYCjAWMXYpMAMvj2Iq9qF\nt92LJd2CLU8TFmuudXLfGG9UyX2FQnFI5vQ8kvFSu+uBGKALuFdK+bgQ4hLgZ2iDBR47miqJe4/a\n2pttcdtYUb6CUcNmWlruZ/HifwCwatUqHnzwQdatWweAlNqckr/9TUt77M8D2x/gmfJnePez72I2\nmA/fGSm1ZVYefhjeekvzTm65BS68EKzW6b4kAEYDAUrHxqh2uah2u7Wty0WDx0O80UiuzUaWxUKG\nxULmxNZqJd6oiUTQE8RT78FV7cJV7cJd457clwG5r7jkavvWHCsGx/F0ahUKxVzhcKO25rSQHA+E\nEPLee++djP9NsD1lO8U7ivFHVlFV9WlWrNgDwGc/+1nWrFnDF74wNQjs61+H+HjNodgfKSXXPnst\nCfYEHrnskel3rK8PnnkG/vIX+PBDOPtsuOQSbVtUBPpjc/ACoRBNXi81LheNHg9Oj2dq63bjCoUm\nxWVCYNL32sYZjQT6A/sKTI0Ld60bd50bQ6RBE5iccaGZEJksKzqzCpUpFKc6EzmS++6775BCon5O\njqMz6wh5QxgMEQQCQ5PHc3Nzqaur2+fcK66A//qvgwuJEILHr3icFb9dwR8++gOfXvLpA086GDEx\n8KUvaW1wEP7xD3j9dc1baW+H5cu1JYgLCqZaZOQRzRp0OuZbrcw/hIczEgjsKy4eD9uHh2kaf+wO\nhUgzm8mwW0hfayH9fAsZljjSLRYyjSaie8Bb69aEpcbN4OZB3LVuPE0ezMnmKXHJmRIZS5oFoVeh\nMoXidOGM9EgO9pp3LdhF4bOFmHK97Nw5n7PO0qav/PnPf+bFF1/k6b0mkHi9EBurLfx7kLQGABU9\nFZz7+3N59ZOvsipl1cw63d8Pu3bBBx9AZaXWqqq08FdKCqSmatuUFJg3TxOl6GhtO7FvNB7TrUcD\nAZq83klhaRpvTo+HJq+Xfr+fFLOZ9L09GbOZdL2Z5E6IcAbx1Xv28WT8PX4smZZ9PJgJj8Y0z6Ty\nMQrFHORwoa0z0iPZuHHjAaGtCY9Erw8nEBhGyhBC6MjIyMDpdO5zvdmsDcL65z+1VVEOxoK4BTx2\n+WNc88w17Pr8LpLCko69w9HRWv5kw4apY6EQ9PRoatbSMrWtrdXCZHu3gQGw2yEq6uAtMvKQzzki\nIym02ym02w/aNU8wSPO40DSNi8tbg4OTjzsifCSsNpGxflxgLOFkSBMZ7QJTs0Q6AwxvG6bz8U7c\nNW5CntBk/mVSZMY9GmPUsYmhQqE4dqYz/Fd5JOPsXr2b7J9mE7Emgq1bHaxd247BEE5TUxNnnXUW\nLS0t+5z/ve/B0BA88MDh7/f9rd/nlZpX2PyZzVgMltl8KdMnFNI6OzBwYBscPPzxwUFtpv5RCtDE\nc36TiTavlyavdx+PZsKrafF6iTIYJj2abK+J7HYdSS2SqOYglkY//lrNo9FZdAcXmWwrepuafKlQ\nHE9Usn0vDiUkH577IRn3ZRC1Port21MoLt6BxZKKx+MhIiICj8ezT8hlyxb41rfgvfcOfz8pJTc8\ndwN2k53fXf67Uy9sIyWMjExfePZver3mUc2bp82d2W8bmjePzrg4nJGRNIVC+4TNJvYtOh3pZjML\nx8wUdujJbNMR3xLC3hhA1nvxNHgwxhr38V4m9tX8GIVidlChrf04VGhLejWBmUq4p2KxWLBarQwM\nDBA9PucEtHW3SkshEADDYd7FieT72t+t5ec7f87XV3/9OL2q44QQ2vLH4eGQnn5010oJbrcWXuvs\n1FpHh9bKyuAf/0DX0UFSZydJnZ2stVo1kUlK0vI+aWnI1FR6U1NpcjhoyIygLhM2ud3UuX3Uud0M\nBQLMN5pZOmSmsNNIRpufuGof9jd6kXVevG1eLKlT+RhbwVQzxaql+hWKI6FCWwfhUB5J6SdKSfx8\nIrGXx/L++0vIz3+csLClAOTl5fHiiy9SUFCwzzW5udpE9aKiI9/XOehk7WNreeSyR7gy/8pZeS0n\nEykl/pAfl99FMBREIpFS7rPVCR1mvRmzwYxZbz68NyalNqigsxPa2rR8T0sLNDdP7be0aIMGUlMn\nhWY0PZ36jAzqkpKoi46mzmikzuOhzu2m1+8nW2emuN/Mgg496S2CuMYgtjo/gSo3OrNuUlTsBXZs\nC7R9c/IR+qpQnIEoj2QaCLMg5A1p+0IPhCafi4yMZHBw8IBrliyBPXumJyQZkRm8etOrbPjTBqKt\n0ZyTfs5sdX1WGPWN0jTYRNNQE02DTXSPddPr6qXH1UOvq5deVy/D3mFcftdk0wkdVqMVvdAjhEAg\n9tmGZAhvwIs36MUX9GHUGSdFxWq0Em4OJ8IcQbg5/IAWWRhJ7Ips4mxriLXFEmePI9Yag23Uu4+4\nOFpaWPzqqyx2OqGxUROj9HTIzMSdnU1DXh616enULYpj81oHNUFJtcvHoD9E8ZiJFR2Q1+oh+SMP\nEc93Imq8SFdIWzqmwIZ9gX1SbCyZFnQGFSZTKPbnjBSSw43aAhBCh5RTQhIREcHw8PD+ZsjLg5qa\n6d+3OLGYp655iuuevY43b32ThQkLj/k1HCsdIx2UdZdNtZ4y6vvrcfldpEemkx6htXmOeeTG5LI2\ndS2xtlhibbFEWCKwGW3YjDasBitG/fRHUUkp8QV9eINevAEvLr+LEd8IQ54hhr3D+7Qh7xANAw3s\natu1j5j1jPWg1+k1YbHFERcRR2JyIkkfyyQpbB1JYUmkGGJIHQgS2zmMtamZwsZGCt9+WxOZhgZt\nXbPMTEby8qgpLKQ6K4vqsxN5+9IwqoFad5Akl541nZKFbR7S6z3EvNmNqdaP7PJjzbZOei72Ak1k\nrLlWtdKy4rTljAttCSEygW8D4VLK6w9xzkFDW1W3VRGxLoLEzyWye/cqsrMfIiJiNQDXXnst119/\nPddfv6/JJ57Q5gw+9dTR9fPpsqe584072XTzJpbMW3J0Fx8FvqCP3e272dG6g/da32NH6w7cfjcL\nExZSFFdEUXwRhfGF5ETnEG+Pn/PhHCklY/4xesY0Yeke66ZztJO2kTbaR9r3ab2uXmJsMSSFJWkC\nE5ZCekQaOcSQPaQntddPZEc/uoZGbch0TQ0MDhKaP5/WpUupLiqiOiODqvh4qq1WqkMhhod9rO4y\nU9xuILtFxzxnCHudH5p8WFIt2Aptk6ss2wvt2PJsana/4rThjAltSSkbgduFEM8c7bX7eiT7hrYO\n5ZHk5MAvjlj95EBuKLoBvU7PxX+6mL9e/1fWpa07eiMHQUpJXX8df6//O2/Uv8GWpi1kRmayNnUt\nn8j9BD+44AfMj5p/0gXD59OmwPT1wdgYuFxTW7f74NcIARaLwGp1YLU6sFgyibdCuhUc6dpo4/Dw\nqYWUA6EA3WPdtI+00zbcRutwK01DTTwz9NFkCK8/2E9yUTLpZ6WTHnEROaZECofNzO8NUdzZxQV/\nK0dXV68JzegoYwsWULtsGdUFBVRdkMo/YmKoNJmod8PCzgArO7wsaPKR9FQ/YTV+aPZjzbBgL7Jr\nIjMuMNZsqxpJpjitmNNCMl4Q6+NA10Sp3fHjG9h30cYfz/hepqkcCRwY2hoaGjrgmuxsqK8/tvtd\nu+BaHCYHVz19Fd8977t8cdkXj+kL3hf0scW5hZerX+a12tfwBr1cNP8iblp4E7+74nfE2mKPrYMz\nIBTSvntLS6GuTnuP6uu1OZPd3ZpoxMZqzeEAm22qWSwHrKo/adPj0ZrbrbWJ/dFRbfTxyIhmLzIS\nIiMNREYmERmZRGzscuLjISkBliZAfCYkJEB4tAeXsYXWkaZJcXnR56QprInGQCMdlg5SilOYH7WY\nQnMqxaNh5A3oObe9hqvf34mxvhGqqwnqdDSuXk1FcTEVK3LY9ol5VNhs1Lol+e0+VrULFjS5SXqv\nl7BaP6I9gC3HOum9TIiMNdOqlo5RnJLMaSEBHkerePjExIHxmu0Ps1fNdiHESxM12ydOO9obmRJN\n6O368XuriZ9fAAAgAElEQVTogKnytWFhYQf1SGJjtS8yl0v7EjxaNmRvYNtt27jmmWt4peYVfnbx\nz8iJyTnidf3ufjbVbuLlmpd5o+4NCuIKuDz3cl668SWK4otOuMfh8cC2bdryYNu3w0cfaSuzLF6s\nie2yZXD99dpAq/h47Yv+YGIxU4JBTUwGB6fawAD09moC1tCgzfvp6tIed3VZGBrKISYmh8TEqVVm\nLhzfJhT6INKJ21JPm7ue3f11PGOtod5ST2N4IxFLIpgflc8SfQrLhx0U9LayYmstsc29GGvrCXV2\n0rJsGRUrVlC5JI+XLkumIjycOi9ktnhZ3RaiwOki6e0QYbV+dH1B7Pn7hsfsRXbMaWoUmWJuM6eF\nREr5z/G6I3szWbMdQAgxUbO9SggRDXwfWCKE+NbReCrp/zl1GyH0+3gkJpMJl8t1wDVCaFMe2tq0\nMNexkBOTw7++8C9+uuOnrH5sNWennc1V+VexLGkZ8xzzJkM0Vb1V7GrbxZamLVT1VnF+5vlcnns5\nD214iHmOeUe+0Szj8cBrr8GTT2oCUlQEH/sY/M//QHGxJiQnGr1+whuZ/jWBgBZm6+jQPKaJ9tZb\n0NJiorU1l9bWXCyWKaE5NwNuTQ8RmdiOLqYej62eWn89bwzUU5tSS01WDZYLLSwMW8zZ3liKh7q4\npKyDz70xTFhDG6K2lo7MTCrWrKGisJBNG1KpiI6m3qsjqcnN6vYACypGSX4thKPWj34kpInKfgJj\nSlTrkinmBnNaSA7B4Wq29wNfOpKBiZrtwAGjtzR07J0jMRgMBAKBg9pKTNS+hI5VSABMehPfOutb\n/NvKf+OZ8md4tfZVfrztx3SOdmLUG4mxxpAXm0fxvGIevOhBViavPHKtk+NEZ6eWF3r0Uc3juPlm\neOwxbVWU40UgEKC5uZn29nba29vp6Oigq6uL4eFhRkZGJpvX6yUUCh3QTCYTZrMZi8WC2Wye3Hc4\nHEREROzTMjIiWLw4gqioKOLj44mOjkYIHf39U8uZaSONdby/KwWnM4XGxnMJBLQ6NZmZsC5TEpPe\nid5RjTexhjf11fzfSA3VvbU0FzeT6khmnYhn9Wgvy1q2c80uD7EtPZhqGug1myk/+2wqFi9m02WZ\nlMXE0ODWk9nkYlV7gPwPR0h6LoSt2o9egmOhHcciB/aFdq0V2VWNGMWsMFdqts9pDi4gGtrw36nQ\n1uGEJDZWSxrPBg6Tg9uW3sZtS2+bHYOzyOioVmr+V7/SKkS+954WtppthoaG2LlzJzt27KCkpISq\nqioaGhqIj48nJSWFxMREEhMTSUhIIDExkbCwMMLCwnA4HFgsFvR6PTqdbrIJIfD5fHi9XjweD16v\nd3J/dHSUoaEh+vr6aGhoYGhoaLL19/fT09PD8PAwMTExxMfHExcXR3x8/GQrLEwkOTmZlJQUHI4U\n+vrCaWoSNDYKGhsTaXw7EadzPQ0N2kCAnBxYk+MjJrsR47xqapJreE9XTeNwF9W9jYz5XawwJbDe\n1cXyzne56KO3SWwZwFrjpNNmo+zssylbvJjtV2RQFhlF+5COhS0uVrT4yH1jgLiHQ5hrvZjnmQ8Q\nGGuOVc2BURwVc6Vm+/Fi1mq2H5p9Q1uHE5KYGC0Gfzrzzjvw6U/DuedqCfTk5NmzLaVkz549vPzy\ny7z88stUVVWxbNky1qxZw/XXX09BQQE5OTlYj7Ji5Gzh9/vp7e2lu7ubnp4euru76e7upquri61b\nt9LW1kZrayutra0Ak8KSkpLC4sXJXHZZCikpadhs2Xi9abS1WamtzaPm/Txqa7W8TWQk5GZDeu4Q\n4Vk19CZW8Xx2Jd2hSmoGGmkeGmaJIZwL3E5WtvRw2ftBkloHsNU10xQRSdm6dZSdtYi/3ZxOuSOC\nsU4Py1pDFDe7yHwMomuDGDoD2POsOBZq4jIhMio8ppgNTgUhOa412w96w/2S7UcSktnySOYaUsIP\nfgC//CU8/jhcfPHs2R4ZGeGJJ57gN7/5DcPDw1x11VU88MADrF27FpPpxK6BJWUIKYPjXmhw8rEQ\nBvR6M/PmzSMxMfGIdoaHhydFZUJgPvroI15++WWcTidOp5OwsDAyMzPJyMjg4x/PJC0tg/DwAoLB\nLEZH5+F0rqB214pJkYmJgTUFXhIW1NKRXsHz6ZUMFFfgHOuktn+YAsxc6KlkVX0zV+6QJLcOYmls\npyE6hrK1aym7rIiytDRqTBHomsdY2epnUckwqS9Kwqv9GKQgbKF9UmDsi7QcjCHsVPhqUMwV5vSE\nxBNZs31vSko+TlLSF4mN/QQAjz76KB988AGPPvroAef+6Efaqhw/+cl0e3BqEArB176mjcbatElb\nrHc2cLvdPPzww9x///2ce+653HHHHZx33nnojsMwLr+/j7GxctzuWrzetvHWit/fSzA4TCAwTCAw\nRCjkAnQIoZ9s2hDwAFL6xkXFhE5nQqczo9c70OvDMRgiMBgi0OsjMBgmHkdjMsVjNMZjNMaN78eh\n11sJhUJ0d3fT2NiI0+k8YNvS0kJ0dDRZWVlkZ2czf34O0dGLkTKf0dEUnE4LVVVaTbOxMcgrCJBc\n1EhYZgXEVTJsrqDdV0lVXyUZAQcXepJYMxTOgh5JasswxuYuahKTKFuzhrKiIsqSkmnxOwhvFKxq\nNVHQpCOpLoS13o8p3kj4uNcyITLWXBUeO5M5ZSckSilvOsTxTcCmY7V7sCVS9mb/CYmH80gcDi0B\ne7pxzz2wezds3nzoKpBHy7vvvsvnPvc5CgsLeeeddygsLJwdw0Ao5GV4+D0GB99laOifjI5+SCjk\nwW4vxGrNwWxOxeFYQkzMZRiNceMCED6+tY97oQdHyiChkA8pfYRCXoLBUQKBoXExGtpn3+frYmys\nFJ+vG7+/G7+/B5+vG53OhNEYj8kUT1hYMsuXp7BuXQpm83mYzbdiNqdgMCTQ1dVPfX09dXV11NbW\nsmfP76mtraWurg6Hw0FOTg6XXJJDcnIRFstiAoFshgc20LD7CmqqtIEAKakh5i1qpTWngr/mVPLk\nkgq6QhVUDYyR6m7iUk+INR+UcNumIMnOfgLtvVQsXEjpqlW8dkUepXHz6O0PkeMMsKJljOzf9RBT\nG8DYGcCWZyNs4VTuxbHQgSlJhcdOZ07XHMlx52iS7Xa79uvwdOKpp+CZZ2DHjtkRESklP/7xj/n5\nz3/OI488wpVXzs7qx6GQn76+V+jpeY7+/k1YrTlERJxDcvKXcDiWYTYnz8oXnBB69HorMJGniT+q\n66WUBIPD+Hw9+Hyd+HxT3tHIyPt4va14vW34fB0YDBHY7cmsXJnCOedkYLGsxWK5CbM5g4EBK05n\n96TIfPjhr6irq6Ouro6wsDCys7NZvXoBcXGrMJkW4fUup/uDi2iq0VFVCRarJKK4lar8Mupzy3EV\nl9ERLKOuf5Slnkoucg3yiXfe5a4OH/HOXnrcfspWr6bkvGJeun0+1dZogm1jrGjRwmNpL0rCa/wY\nQoKwRVrexbHYMRke01vV+mNnCnM6tHU8mE5oq6zsWuLjbyQ+/loAnnzySf72t7/x5JNPHnDuM8/A\ns89q7XSgrU2rtfL669p8kJkipeSOO+5g9+7dvPjii6SkpMzYpt8/SFvbz2lvfxSrNZuEhJuIibkC\ns/nEz6c5GBN/X0crYlKG8Pt78Hpb8Xha8Hic461xsoEeqzUTiyUDi0XbaiJjp6UlQH19E1VVVZOt\no6ODrKws8vLySU5eicWyDL8/l/7+edTWmqioAIstSFaxk+j8MgyJZbgc5bQHymjtq+Ecdzznj8Wz\nrNdMdpubsJZe6h0RlK5bR+nChZSkptLkDyPeqWN1i4kCp455NVplS3OGhfC9xMWxyIE5VU2uPFU5\nZUNbx4sjh7amP4/kdPNI/uM/4I47ZkdEAL75zW9SWlrKO++8Q1hY2IxsSRmkre1hmpq+T0zMZSxa\n9AYOxzTW8D8GQoEQngYPrioXHqcHb7sXX4cPX7uPwGCA4GiQwIi2DblCyJDU/mT2+o0iDAKdVYfO\nsm/Th+sxRBr2acYoo7YfbcCUkI0jYQFRCcZ95oRIKQkE+vF4nLjdjXg8Tlyuavr7X8ftbsBgcLJw\nYRwrV+ZgtWZjtZ4HpNHebsDpdFNT00BV1e+oqqqiurqayMhIli3LJyVlFXb7SuRYPoP/uoDuJjut\nFQKL3U9PcR1/zyvjzWVljJ5dRrvfxXBvLR9zj3Fuyb+47i0DGa2jhLqGKc/Momz1av55ZT4VMfMY\n6pEsavJRXDtC5usQVR3A4JOELXIQtsiBffH46LEiuyqVPIc541b/nQ7T8UjKy28kNvYKEhK0wWDP\nP/88Tz31FM8///wB527eDPfeq5XePdXZswc2bNDWyXI4Zm7vySef5Lvf/S47d+4k8mimmx8Et7uR\nyspb0emM5OQ8jN0+e/kVAE+Lh8HNgwxtG2J4xzDuGjemRBO2fBuWLAvmJDOmJBPmRDOGaAN6h15r\nYXothKMf90D2GmMoA5KQO0TIs1dzhwiMBAgM7tUGpvb9vX58XT78XdoWAaYEE6Z5JkwJJowJRszJ\nZsypZswpZiypFsypZvQ2PVIG8XhacLtrx1sdbnctLlctHo8Tkyl+XGByMJvnMzAQRUuLpLFxlOrq\nukkvZnh4mLy8fDIzzyIiYi1CFDIykkZzs4OKCoHF4SF9WRWRuWXoEsoZsZbR6ivF0N3FBk8KZw1F\nsLBLkNQ6TI87SNniJZQuW0bp/Pk0imgszQZWtZhY0KQjuTaEtcGPOcVM+GLNe3Es0jwYS7pFeS9z\nCOWRHCVHk2w/nTyS+++Hb35zdkSkpaWFO++8kzfffHPGIjI0tIPy8qtJTb2LlJQ7D5sYPxo8TR46\nn+ik94VePM0eos6LInxdOIm3Jc7Kr2RhFNoqv+HHdr2UkuBocB9h8XX68LZ5GXxnEG+LV2utXnQ2\n3V7iko45NZewdAtxWRYsmRaM8Xq83pZ9BMZgeJeEhBoiIppYtSoFmy0fm+0mAoE0WlrMNDS4qa5+\nj4qK31FeXs7AwAB5eflkZKwjMnIdYnApIy2XM9gURn+5ICxmlA9WlFOfU0poUSkDxhKcI3vIGnib\nS9qr+XyZjYIOP47WIers4ZSuXcsbFxVRlphKX3+ITKeX5fUjZP8DYmqCGFwhHAsdkwJjX6Ql9yfW\nxFPMHc5IIZlOaGu6ExITEuCss45HL08sAwPw6qvw0EOzY++uu+7iy1/+MosXL56RnaGhHZSVXU5+\n/h+Iibl0Vvo2tGOI5h82M7RtiPhPxpP902zC14XPuaGtQggMYQZtTsdhVhGQUuLv9U+KirfFi6fF\nQ9+rfbgb3HgaPARdQSwZFqxZiViyMrFkfoLILCuWTAumAj0BQzMuVxUuVxWBwIfExFRhsVRSWGjg\nllvysdkuJhjMoKXFQmOjn9raHfsJTAFpaWcTbluLbD2LgdIb8TjtjNRBX34Hby0pZXtuCb6VpXSL\nUnp6KzlvtJfzP9jOLT1GMlpG8fSNUZ5fQOn6Vbz6hVwaTHEEW0IUt7hZuKmf1F+EsNf7MSaZiVy8\nb+7FkmFB6JT3cjxQoa2DMJ3QVmXlp4mMPI/ExM8A8MYbb/Dggw/yxhtvnIAenhx+/WstTPeXv8zc\n1p49e7j00kupra3FdizLIo/jdtfzwQfryM9/nJiYS2bcL0+Th7o76xjZPUL6t9NJuCXhhP66HQkE\n6PD5GAwEGA4EGA4GGQ4E8EpJSEqCUhIEglKiFwKzEJh1Oiw6Hebx5tDridDriTQYiDAYCDcY0E8j\n/BMYCeBp9OBp9GjiMrFt8OBxetCH6bFmWbHmWLHmWrHl2LDkWDBkjuATdZMiM9F8vk4slvnYbPkE\ng5m0ttppapLU1g5QVVVLeXk5fX195OYWkZJyAQ7HagKBAvr7k2hosNHVGyBzWS2xRSUYk0oZdZTQ\n5ivB0dXDpZ4UzhoIp7AzRHzLIC3CRMnatexZsoTSlHR6hsJJdOpY0WIitwFia4IYRkM4ijTvZTL3\nslBNrJxNVGjrKDma0Nbpwquvwq23zo6tBx98kK9+9aszEpFQyE9Fxc2kp//XrIhI5x87qf9GPSl3\nplDwVMFxG5oaCIXYMzZG6egoZWNjlLtcNHk8tHq9BKUkyWwm0mAgXK8nfHxr1unQC4EO0AuBXgiC\nUuINhfCGQnhCIbzjj0eDQYYCAQYDAYYCAUaCQex6PREGAzEGA/EmEwkmE/FGo7Y/vo03GknINZFY\nFE3sfpM/pZT4On246924a7XW/Ww37ho37jo3hkgj1tyV2HLWE5lrJTHHijkHSGzFE6jB5arCYKgk\nPr6coqI6TKZk7PYlhELZtLWF43RK6ureorLyV9TUlDE4OMiCvBUkhl2IvXcl3rY7cHcn4K42MWoc\n4u2VZezOKUEuKmXQXErn0B6WDLzCRWW7+MQ72ugx2eOiPDOLknVr2HRbHrW2BAKtIZY1u1j0DwMp\nvwrhqPNjTDARsV/uxZplVd7LLHNGeiT33nvvYUNbVVW3Ex6+mqSk2wHYsmUL3/nOd9hyOmTUD4LH\no9UJcTohOnpmtoaGhkhLS6OxsZHoGRhraXmQ/v5NLFr0xoxyIjIkabynkZ5neyh8vhDHollIAO1H\nvdvNX3t6eHNggB3Dw6SazSx1OCiy2ym028m0WEgxm4kwGGY9eRySkpFxcenz++n2++ny+ej2+ab2\nx7edPh+9fj/xRiMpZjMpZjOp431LMZtJHd8mmkwYx8VGhiTeNi/uWjeuGpcmLuP7niYP5kTzpBdj\nL7BjLTChy+rAZ6vB5apkbKwcl6sct3tCYBYQDM6nqclBY2OImppeysurKC0txWAwkpt7NnFx52My\nFeNyZdHeHkNllY6o9BaSlpZgyyzFF1VCDyWEuuv52GgC5wxHsqhLkNg6Qps0UrJqNaVLllCSkk7P\naASJTj0rW03kNAhiawIYh0I4Cu2E7RceM4Sr39UHYyK0dd999x3SIzmthEQIYQMeAbzAFinlAdXU\npxPaqq7+AmFhy0hK+iIA27Zt4+6772bbtm3Hodcnn23b4Otfh3/9a+a2/vjHP/Lcc8/x0ksvHbMN\nv3+AXbvyWLJkM3b7ghn1p/6uega3DrLwtYWYYmdvDS9XMMiTXV38ur2dVq+Xq2JjuSQmhrMiIogx\nGmftPrONPxSiw+ej1eul1eulZXw7+djjocfvJ9FkItNqJdNimWxZ44/nmbSZ7KFACI/TowlLtQtX\n5XirchHyhbDl27AX2LHl2zSBye4gEF2H21N1gMDYbAsYHU2jqclGQ4Of6uoeyssrqaysJCEhiays\nC4iKOgedbhHDw2k4neE0tvhIXVJF3MJSTCkljDlK6XLvIbVzmItdSazpt5Hf7kP0eqhMSqF0zVr2\nFBRQa08g0GZhWbOBRU0GUuuk5r3EGie9F/siO47FDqzzlfcywZkU2roaeFZK+dp4wasDhGQ67F/Y\n6nQPbf3rX7BixezYeuGFF7jmmmtmZKO9/ddER18yYxFpe6SNvtf6WPrPpRijZ+fL3RsK8cu2Nn7U\n3Mzq8HB+mJXFBVFR08pTzAWMOh1pFgtpFsshz/GHQjR7vTS63TR6PDR6PLza1ze5PxoMkj4hLhYL\nWUVWclZYybFGU2i1YtLp8Pf5GascmxSWwS2DuCq9+DoTsMxPx15wNbEFNqz5JvS5nYSiGwgPryIi\nopzs7HLOPlsTGIvlQvr6EnE6bdTX/5Pq6udpbCynubmZnPmFpIZfhKNvLYGuLxLsScJbY6HC0I9r\nZSlv55YiV5fQbyxhtGc3awdrOP+tWO7sMZDU7qLTr6e0eBlbb11KSVom3a5IkpxeVraNkrtdEFsd\nwDg47r0sGQ+PLVa5l4Mxp9+NY6jZngKUjO8HOWamv0TK6cDu3XDOOTO3EwqF2Lp1K7/4xS+O2YaU\nQTo6fsOCBTNbKmC0bBTnvU6W7pg9Edk5PMytlZXkWq1sXrKEBXb7rNidVaTUVtwMBrWtEGAyadtp\nYtTpmG+1Mv8QS/ePBgKTotLo8dDgdvPmwAA1LhctXi8pZjM5Vis5CTZyM6zkXB1Fji2ZBWYzwiNx\n1Ux5L30vDOKqCuGuS8A0LxVb/hVELbCRXGjGsKCLUEwDkZFVzJtXSlFRKV5vE1ZrNnr9x+noiKex\n0UVd3UtUVf2CxsYyPJ4RcnPPJt53IebaFbj2XItoj6OzXrBjQQONi/fwp9V7cIeX0On7iJjOv3JJ\nzU6+viuMgg4/uj4/1VGxlKxZw6abF1ATlkiwLcTyJjeL3hwg9dch7HV+TPNMRCwJmxKXRXZt5Ngp\n8oNitpnTQsLR12xvYUpMjvkTPdOS7aWl8NWvztxOZWUlERERJM+gYMng4BYMhijCw5cfsw0pJbVf\nqiXzfzOxZR97wn9vftbSwg+bm/lVbi5Xx8XNis1p090NZWVQV6etYdPaqm37+2F4eKq53VPioddr\nLRQCvx/M5n2b3a4VQomIOHAbE6MlzRIStBYfD2Fhk2LkMBhY6HCw8CATjnyhEE6PhxqXi1q3m0qX\ni5f7+qhxuejy+ciwWMix2chZYSX3HCu5tkgKbDYSdEY8Tg+uShdjFWMMvTPK2MPgqpqHMT4Ve+GV\nxBbZsRbq0ee3EoytIyKigtTUUoqLSwkGh7HbC/H7s2lpiaKx0Ult7R4qKupoaSkjMjyMJPMlRHWd\ni+i+geDgXQQbw6j1DONfVcLW/BJk8R4GTCUM9n/IuqF6Ltgax9d6DKS0uej06ShZspQtnyqmJC2T\nntFIUpw+VjpHyH5rfOSYK0TYQse+3ssZMmt/TgvJ0dZsB14AHhZCXAa8cux3nv48klMdKbW6F1lZ\nM7e1Y8cO1q1bNyMbvb0vExt79Yxs9L3cR2AoQOLtR64hciSklPx3YyMv9fby/rJlhw0JzQp+P+za\npS2VsHUrfPCBVli+qEgrsZiaCqtXa9XFYmK00osREdrWYtHEY/9fxaEQeL1TzePRZtEODWltcHBq\nOzgIzc3Q1aUJWFeX1oLBfcUlJUXry97blBRMViu5Nhu5Bxmx5wkGqd9LZHaPjvJUdzeVLhf+UIh8\nm42CXDv5S2wU2OLIt6Wz2GjG7/QyVj6Gq9zF4OtjjD1gxl2bhSk5H3vhrcwrtGNZ6EfkOAkk1BIV\nVcH8+aWsXl2KTmfBbl/O8HA6TU1W6uq2U139Ig0NFfT1NZCRsYwE7wZstavxll3OaFcCA3U6tmc1\n0rh0D39atgfPeSV0Bj4itvMFLq3Zxdd3OijoCKDr9VIVN4+SNWt47bMF1FnnwfjIsYWv9pPy0xC2\nRj+mNDORe3svi+2Yk0+vNcfmtJAcgsPVbHcBR6xTe6Sa7UdT2OpUZ2BA2850tBZARUUFRUUzW/uq\nr+9VCgufm5GN5vubybg3A6Gf+T/qg62tvNrXx7tLlx6/JLqUmnA8+SS8+KL2xbx+PXzpS1ryKjHx\nqEJTB6DTgdWqtWNlbEwTlu5u6OjQPKKWFvj737XthJfkcEwJS1qaVsg+KwsyM7FkZVEYGUnhQUKC\nvT4fVS4XVS4XlS4XWwcHqXS56PD5yLJYKMi2UbDYTr4thgJbKsUmK6LRy1iZJjADLwQYK4/CXb8Q\nS8YK7IV2kgttmBcOw/xGolJriIsro6CgjAsuqMZkSsJo/BgdHQk0NnZQW/snKipaaW8vwWKSJFs3\nENNzHvr+qxke/gaG5giqB0dwryzhnYISWLqHQXMJI/27WTdYwwXvxPHv3XqS28ZoDxopLV7GO58v\npjQ5g76hCNKcXlZUDTP/NYipDqAPQfhiB+FLwrR5L4sd2BfY0ZnnzqRYVbN9GhypHsneHklmZib/\n+Mc/TlDPTiyNjZCZObPvqQkqKys577zzjvl6r7eTQKAfh+PYZ8OP7hnF2+Ql5oqYY7YxweaBAf5f\nSws7i4uPj4iEQvDnP2tV0Xw++Nzn4P33tS/fuYbdrv2hZGYe+pxQSKs7PSEszc3aH9i2bdq2sVHz\nmDIzJ8VlYj82M5OzMjI4a7/ldNzBIDVutyYwY2O80tvLT8Y9mjijkfwcGwWLbRTYoyi0JVNktPL/\n27vv8Kiq9IHj3zMpk0x6T4BAEpIQCDFSBEWF2MGCWNbFgl3XXtbdtf7WWHbVde117WIXdRUVWVRA\nRUCQlgQSWgIpkN4ndTLn98edhIQU0gnwfp7nPsmcW+YMl2fenHPueY85q5GazTVYN1sp+8gZ6+Zh\n1GcH4BZ1Eh7xHgSMN+OSWACRWfiN20pERBpTpqRRX5+Hu3ssdXXR7N5tZufOX9m2bRE5OTvIz9/K\niBHjGNY4C8/Madi2nUljURg525xZPjyLrRM3YZmUQt0pmyi2bSIo/3NmbVnFHb96Mm5PIxTXkzFs\nOCnTp7Hw+rHscgmB3CYm77YSv8CJ4Y/Zcc+2YR7t1qb14pnoiWvI4K4Y2kzWbO+zttl/XV1dGTly\nZOeHH8Jycow/IPtDRkYGcXFxvT6/qmotXl6T+9TkL/iwgJDLQ/qc7sTa1MTVW7fy+pgxhA9Ed9ba\ntXDTTcYX6xNPwOmnGy2HQ5nJZHR/BQfDpEnt92ttrEudlWX0p2ZlGZlC//tf4/fcXGMpzthYoxsv\nJgb32FgSY2JIjIgwruvQpDW76+paWjBrKit5Jz+fzVYrnk5OxMd5ED/RQryHP/Ee4SQ4ueOyswFr\nmhVrmpXS172wpo6msWQkHuPm4HOUB5ZEE07xOdhHZBIWlk5CQirV1Slo3Yir6zEUFY10rAfzCRkZ\n+ezduxmlqxhhOY2gklNwqTwbq/U2qnL8SCuspnxSCkvGpqAmbKLCLYWakt85vjyDU34IYmKBiWF7\nasjTrqROPoYfT5vA5mERlJX5MDKrjkkbyxn9ucJ/ayPOria8E73wPnpf15hljMXI4zZEHAqB5KCs\n2d76qa3DWWkpBAb2/TpNTU3k5uYS0Ye/po1A0rfnkEsWlhA3v/fBrNlzubkc4+XFWQF9b9m0obUR\nOOD1QIUAACAASURBVJ55Bp56Ci655NAPIN2llPGfLTCw4+fNbTZjVuz27bBtm/Hzu++M3/fuNbrK\nHEHGKTaWqJgYomJjOXPEiJZ/Q601OfX1bLZa2Wy1srKyktf37iW9pgYfJyfix3swfqoH8R5BxHtE\ncFSjKyqjnurUaqypVqwL/LGmmlHmcXgmXEFIggfmxBrUmExC4rYTFZXG1Kkp1NRsxWwOx2abSE6O\nN5mZ69m2bTn5+Vnk5W0mNGgUw21n4r37BJoyT0eXDKdgpyuL/bJIm7QJj8kp1PttotS2iZC9C5iV\n9it3/uxBXF4DlDawZeQoUk85jv/eFMduUwjOOTYm764i/j0nwv5ux22vDbdYC76tBvY9Ez1xCTg4\nc5iG9ITEg7Vme2bmA5hMbkREPNDruh8qnnzSGEv997/7dp38/HwSExMpKCjo9TWMBcX+QHDwH3t1\nfm1WLRumbeC4vOP6NIms0mZj9G+/8euECR0OGveazQbXX288gfXZZ8YX4xBWZ6ujsr6Sels9NrsN\nm91Gk27CZrfhbHLG7GTG1ckVs7Px083ZDVenAeqGqaszWjGtg0zzz7IyiI6GuDgYO9bY4uJgzJiW\ncSG71mTX1bG5psZIXePYMmpqCHRxId6RhSDeYmGcxUJMuQv2zbVYU60tQaZ2Wy3mkWZjmeGjzDgn\n5kPETho8MrDWpGK1pmCzVeDmNp7S0lHs2uXFzp3G5MrU1C3k5xcQG3sSISGn4ep6DFZrNHl5Aewu\nqGbExFQCxm1ChaVQ4baJ+qIUji/34pSqQCYUmAjdU0O2kzspU48lJTGRLSGjqCj2IibLxMRsVyJ3\nany32nD2dsIn0avlyTGPRA8sMZZ+GS88ZCckHrw129t2bR3OSkv7Z6B9z549hIX17SmpX3/dyMUX\n39Pr8ytXVeI9zbvPM5E/Kixkho9P/wYRreFPfzL6Epcu7Z9c/X1Qb6snvTid1IJUdpTuILsym5yK\nHHIrcymrK6OirgK7tuPj5oObsxvOJmeclJPx0+SEzW6jIqMCU6SJhqYG6pvqqbPVYVImfMw++Lj5\ntPnp6+ZLsEdwyxbiEdLye6AlEBenA/wl7eYG48YZ2/6qq42gkpEB6elGkM7IgJ07jQcV4uIwjR1L\nxNixRMTFcdbYsS1BvElrdtXVtQSWH8rKeC4vj601NYT6uxJ/pgfxF1oY7+HPeLOFUbmKhs01WFOt\nlL/hS3XqGBqLovAY9wf8EjxwO7oBU/wugkfuYNSoLUyevBmrdTOuriFonURubhBZWWls376aLVt2\ns3dvGgFewYTUn4VP5nTsO06lqWQEe3eaWRycRcrETXhMNVovZY2bCM37gDM2LOVvpUbrpaGiibTR\n0aSefSyb7oglzx6E++5GpmRXMfZ1EyHbmnAtsWMZZ2Fr8BZOnnVyS94xZ5/uff0frmMkg+DI6doq\nKemfsd29e/f2KZBorVm9Ooerr+79c8iVv1XiPbWXi3+08sbevTza1aBybzzzDGzYYDzSexCCiLXB\nytKspSzbtYxlu5aRUZzBaL/RJIQkEOsfywnhJxA+PpwR3iPwd/fHx2wEkK7Gq5KTk0m+K7nltda6\npRVTUV9BRV1Fy8+yujKKrEXkVOSwbu86Cq2FLVtxTTHeZm+Gew1nhPcIwr2Neuy/eZk7WWHT09NY\n0nP/ZT1tNqMV0xxgVqyAN94wfjebIS4Op7FjGT12LKPj4pjd3JIxmWjSmp21tS0B5puSEh6zZpNZ\nV0dUlBsJCR4kXO9NgkcY8U1m/Hc0UZtWY7RePg/HmuqPcpmKR4IHYQnuuE4sguhMghO3EReXxvTp\nKTQ0FODuPo6Kiih2764hM3MRGRnzycrKoL42h+FOMwgsOA1z+elYrTdTkRfAhmIrRZNS+W7cJtSU\nFCrMG2ko/JkT9mzgnIwAji5UBO2tI8vNi5Rjj+OrC44iIyAca34T9R8to2x5DBFvaLy3NeIc7NJu\nYN8tsnfp+I/IQNL68d+OGE9tNfTLey1fvrzTls9gXOtA55SWGtMRunNsV/sLCwvprMuwo/P2L7PZ\nSgGFi0vvm0dVv1cROKdvAz6fLlnCLg8PTvXz69N1oNVn3LwZHnvMyEVzgCDSk3t8oGOXLVtGQ3gD\n7256l0XbFzExbCKnRJ7CS2e+xKSwSaxasarD87tzvzqilMLdxR13F3dCPEO69RkA7NpOSU0Je6r2\nkFNptIpyK3P5afdP5FbmtpQ5m5wJ9w4nwjeCKL8oIn0jsW63cs7p5xDpF4m3eb8/IpydjTGV2FiY\nPXtfudbGmEtzgElPh2++YfnGjSTV1RkBZvx4YuPjiY2P57z4eKMlpBT1djsZNTWkVleTarXyj6++\nYs+4cZTbbYw/xoOEJA8SPIJIsIwirtIVl/R6Y+xlSQA/PZTGuLzTMY84B8+jPLBMsON0VDZBo3YS\nHp5OU9MqZs7MxtnZB6VOZO/eYDIz09m+fR0rV6ZQXJyDj1sAgTVn47N9Ovatp9FQMpxdGav5buRI\nNk3ahOX4TdT5bGJPxipiTO8y87cwLiyxELO3gSeyihkeVMz6C6eSMjqG/LoAfHY1MCWnkjE/mQje\n1oRLtR2P8R4ts/Y9Ej048ZgTSUpK4qGHHur0Hh6xgeRAXVt2e/+0SIZ6IKmoMOaydefYrvZXVlZS\n1jwppRvn7V/W0JCPs3Pf1nSv3V6LZUzfuqPe+9//OP2aa/old9by5ctJmjEDbr4ZHn4YRu0/t7aT\nc/oYSLTWfLr5U279962EnRPGDZNu4LmZzxHkEdSt83sbSHrLpEwEeQQR5BFEYmjHj35rrSmvKye7\nIptd5bvIKs8isyyTxV8t5uPqj8kqz8LN2a0lwET6RhLpF0mUXxQx/jGM9BmJk8kxw1wpGDbM2E4+\ned9nTE4m6c47YcsWI/inpRnzZDZvNrrPxo3DHB9PYnw8iePHQ3w8ydnZJF9zDWWNjaRZraQ6tk8K\nC0m1WvHwcSLhDA8SzvdgxyvbmXz/JUTmgc0x/lL5+iiqNwVgK5vIOl/N9LMW4DapHBWXRfC47cTG\npnHCCSnU12fy5pvxVFSMZvfuKnbuXMjWre+ya1cGDfVZBDmdgf/e03EtORPnmlupS3mR39WdFByT\nwsK4TTBtE9uXLWLJmO9Jyv6dP6T6c3QB+BTWs8PDl5TjprH8kvFs8x5Ow54mEnZbSVzswsgXNTu2\nrSHVI63LezikB9sHglLqyPrAQgjRT46INPJCCCEG3xHyALsQQoiBIoFECCFEn0ggEUII0ScSSIQQ\nQvSJBBIhhBB9IoFECCFEn0ggEUII0ScSSIQQQvSJBBIhhBB9IoFECCFEn0ggEUII0ScSSIQQQvSJ\nBBIhhBB9IoFECCFEnxxWgUQpNVMplaGU2qaUuvtg10cIIY4Eh816JEopE7ANOAXYA6wF5mqtMw5q\nxYQQ4jB3OLVIpgDbtda7tdaNwMfAuQe5TkIIcdg7nALJcCCn1etcR5kQQogB5HywKzDYZM12IYTo\nnc7WbD+cAkkeMLLV6xGOsnamPXs+j1vGceKnq7n71Vfxc3bmhmwfMu/OZOLKiTQ2lrJ6dQTHH1+E\nyWQGYP78+bz44ousWrUKJyendtfcsgX+9S/46iuYMQPOOgumTIHPPkvmkUeSu/UBbDYoKoLCQmMr\nKNj3Mz8fVqxIxssrmfx8KCkBX18IDYWQkPY/vb1rsNny+OCDh5gxYyrZ2Vns2rWLXbt2sXv3bqqq\nqggJCSEsLIyQkECCgixkZKRz9tnj8PauwcOjGnf3CtzdS3B1LcTTw8K7bzvxp0vjUdW+UOGFvdgL\ne4EnTfke2PIsvJ36E/PCLqPB7I3V3YNKT1fKvBVfpr9G3HFXUGjR2N01Tq4NbPvpHRJPmY2LrRz3\n2mK8q4pZ//MyZo8dg6u9HpoasDXV0thkpVZbqdPVNKgGGjDRYHeiRnlQbffC2uhNZYMvdXZvtKsX\nyuxtbG4+OLn54u7uhafZA283C94WC74WD7wtZnw8zXhZXPF0d8Xi5oKHuxNmM7z5ZjJ33pmM2Qxu\nbmA279tMPWy/Jycnk5zcvXvfm3MOdGxv93dU3t2ywdafdRjK96un+wbifinVYQwBDq9AshaIVkqN\nAvYCc4GLOzrQhDMNZmeoqcHP2ZlSmw330e7UZtYC4OLij8UyloqKlfj5nQTAZZddxrvvvssTTzzB\nfffd1+6a48bBO+8YX/DffQeLF8Ozz8L27Um89Zbx5e7rC87O4OQEdjtUV+/bKiqMLSAAgoPbbqGh\nEBcH48YlcfrpxrWCgsDZWZObm0t6ejoZGRlkZGSwaJHxe0VFBREREXh7e7N9uw+jRo1k4sRIQkMb\n8PMrwWzeTX39TurqMmlqSsPNLZKUDV4cNzYAisdjz/WnaYMv9Zu9qFvvgVLuJPqkUJ43ldIQ2BOo\nyQ6wsy3CxtbxDdj9wJxuwhrlwojC3YTk5RGck82YzEwuring+N/Xop3ryPe0k+Vej2t9KfaUz6nw\nCCLXHEYpw9hpMvN7bQLVhcFY7MEEuAcT6hXM8AB/Rgb7MjzUhcBA8Pc3Nj+/fT/d3PrnP1F1dRKx\nsf1zraSkpAE950DH9nZ/R+W9+SyDoT/rNZTvV0/3Dfb9Omye2gLj8V/gOYyxnze11o93cIye/twl\n3BM8lln/+oLXvvmGtVVVvBYTyy+evzCtcBrOns5kZj4ANBEV9VjLuTk5OUydOpWXX36ZOXPmdKtO\n9fX7WhYVFdDUZLQ8TCbw8gJPT2Pz9ja+FDto7ABQV1dHamoqGzZsYP369WzYsIHNmzfj7e1NXFwc\ncXFxjB07lri4OGJiIvDxKcJqXUdV1e9YranU1GzFxSUQD494LO7jcK6KRmcNx5YSRM0ad6ybrDRZ\nm7DEWdBRZopHmcgMs7Mp1MaaoHrSneoY4erKmMZG4kpKiM3KIjItjVHr1hGekwNhgeSHepEZoEjz\nqWetWwkbnEtoDArH4hSHS1U0tfmjKMkMpzRrJGGWkYwODSYywkREBEREwNKlxl9MoaFGC0AMbUOh\nRSK6rz9aJEdC1xZa68XAmAMdZ8KZelenfS2SxkaUSeEW6UZdZh2eR3kSGHgO6emXExn5z5YmXXh4\nOAsXLuTMM8/Ebrdz/vnnH7BOZjOMHGls3VVeXs7GjRvZsGFDy7Zz505iY2OZMGECEyZM4NJLLyUh\nIQEfHx9qa3dSUfEzlZWrqap6i+zsrVgscXh5TcbH53hCvK7HljKc6pV2KldVsndtFS7BLngmeuI8\n3p38S0ysudedX7xr2GC1YqKOiR4eTLRaOXXHDm79fA3RP/6IW3Y29rFxFEaFsiXMiZXh1TwaXcNa\new0xfh6EmhJwKU2gMnMMu1fEUrIzknFjXBg71mhRjT3L+Dl6NLi6tv/c4eFJjBrV/X8ncXAN1VaK\n6NhA3q/DKpB0l0k7U+eqoLYWfxcXymw2ACyxFmoyavA8yhMvrymApqpqDd7eU1vOnTx5Mt999x3n\nnXceP//8Mw8//DDe3t69rktBQUFLC6P5Z0FBAYmJiUyYMIEZM2Zwxx13EB8fj9lsRmtNTc1WKip+\nYs+eV9iy5WdA4+s7A2/vaYSFXYPZPo6qn+sp+76M3B/LqM+tx+uYcnym+eB7exg7xoSwXFXxS0UF\nO2tLOcbbmxM8PLgtu4SJK1YQtmQJauNGiI6mbvIE0kZ78tyfp7JQ+7CxJI34IGfifY7DtXgSQWmJ\njFw+ll25rvhNgPGTYOJJMOkvEBvbeQurI/LFdGiR+3VokUDSz0zKhTpXE9TU4O9okQB4JHhgTbXC\nRUYzLiRkHvn589sEEoBJkyaxbt067rnnHiIjI5k3bx6zZ8/muOOOw93dvd37aa0pLS1l27ZtbN26\nla1bt5Kamsr69eupr69nwoQJTJw4kQsuuIBHH32UmJiYNgP6Nls15eWL2bXrO0pLFwEKX98k/PxO\nJSLiYdzcoqhJq6H47WJ2/K8U66aNeE31wu9UP8a8G8fW0ZqFlWUsLi0lzZrLifU+nOzry7zaWiYs\nW4br99/D6tUwfjxNJ59E2s1/4Evv4/km/yfSi77ghJEncEzwiZyx92qiM49h2asWshvgxBMhaTr8\n3/WQkNCzoCGEOHwcVmMk3aGU0jOfu5XZ40dw4+yHySspYfK6deydNo3CBYUUfFBAwpcJANTV5fD7\n70czdeo2XFwCOrze7t27eeutt/j+++9Zt24d/v7+hISE4OzsTFNTEyUlJRQVFWE2mxkzZgyxsbHE\nxsYyfvx4Jk6cyMiRIzt8GqK2dhfFxV9QUrKIqqrf8PY+Fn//Wfj7z8JiiQM7VKyqoPi/xRR/WQx2\nCJwTiP8sfzyP92ZlQxULior4orgYP2dnZvn7M9PPjxMzMnD76iv48kuoq4PZs6k/eQZLRtTzSe5i\nvt3+LVF+UZwedToJHqez+5dp/G+RmXXr4PjjYdYsOOMMGDMGuniIQwhxmOlqjOSIDCRnPXcXSYmB\n/OWk+7DZbLj/8gt106dTv62WlDNTOHbnsS3Hb916Ha6uYURGPnzAa9tsNvLz8yksLMRut2MymQgI\nCCAoKAiLxXLA82trd1JU9BlFRZ9RV7eLgIBzCQycja/vyTg7ewJQnVpNwfwCCj4swCXQhcDzAgk6\nLwhLgoV11dW8k5/P50VFhJnN/CEoiAuDgojNzIT33oP33zdG9OfMofGcs/nWaw8fpH3Ikp1LmBQ2\niQvGXsAUn/P45dthfPIJZGbCeefBuedCUhJ4ePT6n10IcYg75AbblVL/As4B6oGdwFVa60rHvnuB\nqwEbcLvWeomjfCLwDuAGLNJa39HZ9Z0wU6+awNkZ58ZG/J2dKWxoIDTanYaCBmwVNpx9jH+akSPv\nY926YwgNvRp394gu6+3s7MyIESMYMWJEtz9rTc22luBRX7+HoKDziIp6HB+fGZhMRh0aihvIeS+H\ngvkFNJY0EnJZCIk/JOIx1oPihgbeKCjgrXXpWJuauCo0lBUTJhDd0ADvvmtshYUwbx58/z2pAU28\nvfFtPvh5NrEBsVx+1OU8c+rL/LokiNfvgwc3wpw58MgjcNJJ4OLS7Y8ihDhCDclAAiwB7tFa25VS\njwP3AvcqpcYBFwFjMSYc/qCUitFGs+oV4Bqt9Vql1CKl1Bla6/91dHEnXGloagCLBWpqGGY2s6eh\ngTCzGa9JXlT+Von/6f4AuLtHEh7+F7ZuvYajjvpfy5d7X9TUbKeo6FMKCz+lsbGIoKALiI5+Bh+f\nE1DKGGjQWlP5WyV5L+dRsrCEgNkBjH56NL4zfFEmxYaqKp5JT2dhcTHnBAbyfHQ00319MW3eDI8/\nDp98YvRDPfkktukn8MW2r3h21bVkV2RzReIVrLhqBabyGF5+Ge5/zxjjuO46owUij94KIXpiSAYS\nrfUPrV6uBi5w/D4b+FhrbQN2KaW2A1OUUrsBL631Wsdx84E5QMeBRLvS0FQJ7u5QW0uYqyt76+vB\nywuf432o+LWiJZAAhIf/hfLyZWzffhOxsa9iJBrumdranRQWfkpR0ac0NOQTFHQhMTEv4eMzrc31\n7A12Cj8qJPeFXGxlNobdOIzop6NxCXDBrjVfl5TwTG4uO2pruXX4cJ6LjsbP2Rl+/BEeewzS0+FP\nf4ItWyj3c+e1da/x4otXEekXyV+n/ZXZY2azdo0T9/4Jli+Ha66BlSshOrrHH0kIIYAhGkj2czXw\nkeP34cCqVvvyHGU2jCSNzbpM2Ghq3SKxWglzdWVPQwMA3tO8yX02t+3xJmfi4xeQmnoOaWlziI19\nBbO563yQWjdRWbmW0tJFlJR8Q319HkFBFzB69DP4+p7Y0vJoZqu2sfeNveQ+lYv7GHciH47Ef6Y/\nyqSwa82CwkIe2rULdycn7hoxgguCgnBRChYtMvqhKirgvvvgj3+k3F7Dc6uf44U1LzArZhZfzv2S\niWET+fFHSLoecnPhzjuNmfienl1+DCGEOKCDFkiUUt8DIa2LAA3cr7X+2nHM/UCj1vqjDi7Ra1u+\n+5GsNcUk19SQtHQpYaedxl5HIPE90Zf0i9Npsjbh5LHvy97Z2ZvExCXs2vUwa9ceRWDgHPz8TsNi\nGYOTkwWbrZL6+jys1lSqqtZQUbEKszkMf/8zGT36aXx8TuiwW6yxpJHcF3LZ89IefJN8if9vPN6T\njXkpdq35oqiIh3btws1k4snRo5np72885bV0Kfztb9DYCA88AOefT3VTLU+vepznf3ues2PPZvW1\nq4n2j2blSjj5UiOAJCfDRRcZqVqEEKIzy5cvZ/ny5d069qB9nWitT+tqv1LqSuBM4ORWxXlAeKvX\nzYkZOyvv0NEz5+A++neS93pCdDRbzGZSqqsBcPZxxmuyF2VLywg8J7DNeSaTmaiofzB8+M0UFn5E\nUdFn1NZuw26vw8nJC7N5OBZLHCEhVxAT8wpubp0PutuqbOQ+k0vu87kEzglkwq8TsMTue7JrVUUF\nd+zYgU1rHouK4szmAJKebgSQLVuMrqwLL8SuYP6m+dy/9H6SIpJYdc0qYgJi2LEDZl8JmzbB3/8O\nV1whAUQI0T1JSUltJjE+9NBDnR47JL9WHDmz/gpM11rXt9q1EPhAKfUMRtdVNLBGa62VUhVKqSkY\nyRsvB57v7Pom7eja8vWF8nJGmM18XVLSsj/gnACKvyxuF0iamc3DCA+/i/DwDnd3qam2iT2v7CH7\niWz8z/Bn0ppJuEftm8SYXVfHPZmZ/FJRwWORkVwSEoJJKaisNFoeH38M994Ln30GZjO/Zv/K7Ytv\nx8XJhS8u+oKpI6ZitRq9XK+9ZsScBQtkAF0IMXCGZCABXgBcge8dk/VWa61v0lpvUUp9CmwBGoGb\n9L6JMDfT9vHfxZ1d3AlX6loFkmh3d3bW1rbsD54bzNrxa2l6oQknS/9M17Y32sl/O5/dj+zGa7IX\niT8m4jl+3wBFg93Okzk5PJ2Tw63Dh/P6mDF4ODmB1vDFF3DbbcZTWOnpEBBAZX0l93x7J19t/Yon\nT3uSi8dfjFKKhQvhlluMWeebNsFwWdpLCDHAhmQg0VrHdLHvMeCxDsrXAQndub5Jm6lvqgffUCgv\nJ8rNjey6Omx2O84mE+ZhZryP86bgwwKGXTus9x8E0HZN4ceFZP09C/dId+I/j8d7StvcXL9VVnLt\n1q2MNJtZP3kyo5pzou/ZAzfcADt2wEcfGdEB+Hbbt9z47Y2cMfoMNt+0GV83X0pL4fbbYdUqmD/f\nmEAohBCDYUgGkoG2f9eWm5MTwa6u5NTXE+nIlTXy3pFkzMsg9PJQTK49f9xXa03JtyVk3ZeFyWJi\nzGtj8DvZr80x1qYm7svM5NOiIp4ePZq5wcH70qV88QXceKMRSBx9U9YGK3csvoOlu5byzpx3ODnS\nGD5atAiuvx7OP99ohcgMdCHEYJJAsn07AKMd3VvNgcT3BF/cY9zJeymP8Dt7NhhS/nM5mfdmYquw\nEfWPKAJmB7TLp7W2spJL09OZ6u1N2jHHENA8hbyqCu64A376yVhu8VgjXcum/E3M/Xwuxww7ho1/\n2oiX2YvGRmMs5NNPjewn0goRQhwMR2QgcdJmI5D4+EB5OQDR7u5sr63l1FbHxbwcw4bjNuA73Rev\nSV5dXlNrTdkPZWQ/kU3dzjoiHo4g5JIQlFPbANKkNY9nZ/Ncbi4vxsRwUXDwvp1paUazYvp02Lix\nZZLHf37/Dw8se4CnT3+aeYnzAMjOhj/+0UidtX69sbKiEEIcDD3vsxlESqm7lFJ2pZR/q7J7lVLb\nlVLpSqnTW5VPVEqlKKW2KaWe7eq6+3dtAYyzWNhstbY5zhJtIfb1WFLOTKF0SWmH12osa2TP63tY\nN2kdO+7YQei8UKZsnULovNB2QSSnro4ZGzawtKyM9ZMmtQ0in35qJLf6v/+DN94AT08amhq44Zsb\neH7N86y8emVLEPnpJ2M9+PPOg6+/liAihDi4hmyLRCk1AjgN2N2qbCz9kGtL2V2pt9W3CSQTPD35\nrKio3bFBc4Jw9nJm67VbMY8045vki7OvMw35DVStraJqfRX+p/kT+Ugk/rOMmegdWVZWxiXp6dw+\nfDh/GznSeKQXjHV377nHGBNZsgQmTACg0FrIBZ9eQIB7AKuvWY2X2WgRvfWW8fTvBx/Aqad2+FZC\nCDGohmwgAZ7BmEuysFXZufRDrq2OWiRHe3qSYrXSpDVO+41n+J3ix5SMKZQuLqVqfRV1u+pwCXIh\n/C/h+Jzgg7N35/+MWmueysnh3zk5fDBuHKf4tRpwt1ph7lyorYW1a1uaFluLtzLzg5lclnAZD530\nECZlwm434s1//ws//2ysByKEEEPBkAwkSqnZQI7WOnW/Qer+ybWlzdTZ6toEEl8XF4JcXNhRW8uY\nDtYOMZlNBJ4bSOC5HU9S7Ei1zcY1W7eys7aW3yZN2vdYL0BBAZx9Nowfb8wcdAy2r8lbw+yPZvPY\nKY9x1YSrAKPRctVVkJVlLGQoXVlCiKFkKObaegC4D6Nba0Cs/uFV8l3ySc57haTiYpIc5cd6e/Nr\nRUWHgaSnttXUcH5aGlO8vVkxYQJurdeh3brVmFx45ZXGmIgjWC7esZjL/3s5b537FmfHng0YixjO\nnQv19UbPVz9UTQghDqgnubbQWne6YXQP/QU4o6vj+nMDxgP5QCaQhTGDfRcQDNyDsU5J87GLgalA\nKJDeqnwu8Eon19d/Sy7UAU8EaN3UpLWzs9Z1dVprrV/Py9OXbN6s++qroiIdtGKFfjUvT9vt9rY7\nN27UOjRU67fealO8MGOhDn4yWP+a/WtLWXW11qecovUf/qB1fX2fqyWEEL1mhIuOv7c7fWpLKfUy\ncCcQADyilPq/7sey3tNap2mtQ7XWUVrrSIxuqgla60KM8ZI/KqVclVKR7Mu1lQ9UKKWmKKMv7HLg\nq87ew0m7U2urBZMJQkKMbibgFD8/fiwraw44PdakNX/PyuLm7dtZOH48fxo2rO38kd9/NxY88/Sn\nOQAAGSpJREFUf/55o6/K4Ztt33Dt19fyzcXfMC18GmC0RObMMVKcfPQRuLr2qkpCCDHguuramg4k\naq2blFIW4BfgkcGpVhsao9sL3U+5trC5U6tq0VqjwsKMVCQjRxLp7o6/iwurKiuZ5uPTo0qWNjZy\nWbqx3O3vkyYRsv83/6pVxuLnb7wBs2e3FH+77VuuWXgNX1/8NccMPwaAhgb4wx+MsZC33gKn/kn3\nJYQQA6KrQNKgtW4C0FrXqP2nZg8SrXXUfq/7nGvLbnPC2exMQ1MD5rAw2Lu3Zd8lwcF8UFDQo0Cy\nvqqKCzdv5tzAQP4VFYWLab+GXnMQmT8fZs5sKf5p109c9dVVfH3x10wZPgWApia47DKjsfTeexJE\nhBBDX1cTEuMcE/xSlFKprV6nKqVSBquCA8FmA4uLxeje2i+QzAsN5ePCQsobG7t1rTf37uWMlBSe\niIrimejo9kFk0yajj+rdd9sEkdSCVC767CI+vvBjpo6Y2lL+5z9DSYmx5Hpz1hQhhBjKumqRjB20\nWgwymw3cXdypbazFd79AMsrNjXMCAvh3Tg6PRkV1eo2SxkZu2b6dlOpqfjn6aOI6ypS4bZvxdNaL\nLxo/HbIrsjnzwzN5buZzLYkXwRg6+eEH+PVXaP2ksBBCDGWdtki01ru72gazkv3NZgN3Z3dqGmtg\n2LA2gQTgH1FRvLZ3Lyscc0xas2vNxwUFJKxdS5irK79PmtRxEMnOhtNPh0cfNQY8HMrrypn5/kzu\nOu4u5o6f21K+cCE88QR8+60xvUUIIQ4VQ3JC4kBraZF00LUFMNxs5r2xYzlv82YeHDWKcwIDabTb\n+bG8nFf37MFZKT4dN44TOvvGLykxgsjtt8PVV7cUN9mbuPjzizk16lTuOPaOlvKUFLjmGiMdfETE\nQHxiIYQYOEM2aaNS6lZHYsZUpdTjrcr7nLSxuUVS2+gIJHv2tDvmDH9/fkhMZGl5OSds2MCpmzax\ntKyMRyIiWDNxYudBpL7eyOA7ezbceWebXff9eB8NTQ08dfpTLWXl5XDBBfDss3DMMd38xxFCiCGk\nWy0SpZQ7MFJrvXWA69P8fknAOUCC1tqmlAp0lPdL0sY2LZKo8ZCZaSxpu9+DaYmennwxfnz3K641\nXHstBAXB44+32fVh6ocs2LKAtdetxcXJGEW32+GKK4wx+Esv7f7bCCHEUHLAFolS6hxgI8YscpRS\nRyulFnZ9Vp/dCDyujeSMaK2LHeUtSRu11ruA5qSNoXSctLFDjY3GU1s1jTXGgh4uLlBY2PdaP/yw\nMcA+f77x/K5DSkEKty++na/mfkWAZV+irCeegKIieOqpji4mhBCHhu50bSUDU4ByAK31RiByAOsE\nEAtMV0qtVkotU0pNcpQPB3JaHdectHE4PUjaaLOBp6sn1Q3VjneLNQJAX7z/PrzzjrGqYauEWNUN\n1Vy04CKeOeMZEkL2TXNZsQKee85YhkRmrQshDmXd6dpq1FpX7DcfsXc5RFo5QNJGZ8BPa32sUuoY\nYAHQ+bO4PZSSkoyr2sH7S98ncG4gSWPGGIHkxBN7d8GffzYmgCxbBqGhbXbdsugWjgs/jsuOuqyl\nrLIS5s0zkv6OGNGXTyKEEAOjJ0kbuxNINiulLgGclFIxwG3Ayt5Xz6C17jS7r1LqBuALx3FrlVJN\nSqkAjBbIyFaHjnCU5QHhHZR3KDY2mfDLixkTMIakqUnGzPPetki2bYOLLoIPP4T4+Da73tv0Hr/l\n/cbv1/3epvy22+C009pkShFCiCElKSmJpKSkltcPPfRQp8d2p2vrViAeqAc+BCqAO7o8o+++BE4G\nUErFAq5a6xL6KWmjzQZerl5UNVQZBePGQWpqz2tZXAxnnWXMFdlvucKdpTv585I/88mFn+Dhum+e\nyWefGRMOn366528nhBBDUXdaJHFa6/uB+we6Mq28DbzlSM1SjxEY+i1pY7sxkqlTjfkednubQfIu\nNafnveAC40mtVprsTVz51ZXcd8J9HBVyVEt5YSHcfLMx+dDTs3tvI4QQQ113AslTjqeiPgM+0Vqn\nDXCd0Fo3AvM62dfnpI02G3iZvcivzjcKQkPB29vopoqL604FjcAzbBj885/tdj/323MoFLcfe3ub\n8jvvNB73nTq13SlCCHHIOmAg0Vqf5AgkFwH/UUp5YwSURwe8dgOkXdcWwLHHwsqV3QskDz5orHu7\ndGm7FkxGcQb//OWf/Hbtb5jUvn3ffWcMxaQNeBgWQojB1a1+HK11vtb6eeAGjDklfx/QWg2w5hZJ\nS9cWGAtOffPNgU9+6y344APjMV9397bXtdu48ssrefikhxntP7ql3GqFm26CV1+VpXKFEIef7kxI\nHKuUSnaMV7yA8cTWIf3Qqs0G3mZvKuor9hWee66RereqqvMTP/kEHnjASIoVHNxu94trXsTD1YMb\nJt/QpvzBB+GEE4z0W0IIcbjpzhjJW8AnGOu2t09KdQiy2SDQEkhJTcm+Qj8/OOUUY1Lhrbe2P+nz\nz40kjN9/D2PGtNudX53PP375ByuuWtGmS2vLFmMpki1bBuCDCCHEEHDAFonW+jit9bODGUSUUolK\nqVVKqQ1KqTVKqcmt9vU5aWNjIwS4B1BcU9x2x//9Hzz2mJG9t5ndbuQwue02Y6AjoePx/Ht+uIer\njr6KMYH7gozWxjzF++830m8JIcThqNMWiVLqU631RY4urdYz2RWgtdZHdXJqf/gX8KDWeolSahbw\nJHCSUmoc/ZS0MdAS2D6QTJxoTDmfOdNIhFVZaaTlra01BuJHjeqwsqtyVvFD5g+k35zepnzRIti9\n23jkVwghDldddW01P7t69mBUZD92oHnRdF/2zVKfjSNpI7BLKdWctHE3HSdt7DSQWFwsaDQ1jTVY\nXFqNgD/2GLz8sjEWYrHA5Zcbm3PH/1RN9iZu+e4Wnjj1CbzMXi3lDQ3G477PPSdL5gohDm+dBhKt\ndfNqTzdpre9uvU8p9QRwd/uz+s2dwP+UUk9htICmOcqHA6taHdectNFGD5M2KqUIcA+gpKYEi0+r\nQGIywS23GFs3vLH+DSwuFi5JuKRN+UsvQXR0mxV2hRDisNSdwfbTaB80ZnVQ1iNdJG28HzgVuF1r\n/aVS6kKMAf9Oc3P1VElJMsnJYPvdxuJRi7nugut6d52aEv6+/O8suWwJrZNaVlYaDZtu5jsTQogh\npydJG9W+DCP77VDqRuAmjKy7O1vt8gJ+1Vpf1uGJ/UApVa619t3/tVLqHozxmScc5YuBB4HdwDKt\n9VhH+Vxghtb6xg6urcPCNHv2wKnzT+Xu4+/mtNG9i1E3fXsTJmXixTNfbFOenAy7dhkPgAkhxOFA\nKYXWWnW0r6sWyYfAdxjpSO5pVV6ltS7tx/p1JE8pNUNr/ZNS6hSMBazASNr4gVLqGYyuq+akjVop\nVaGUmgKsxcjN9XxnF7fZjJ8BlgBKaks6O6xLG/Zu4Iv0L9hyc9vneouL4cUXYe3aTk4UQojDTFdj\nJBUYmX4vBlBKBWMkRPRUSnlqrbMHsF7XAc8rpZyAOuB6R536LWkjQKB7B09udYPWmlu+u4VHTnoE\nf3f/NvsefxzmzoXIgV76SwghhogDjpE4ltp9GhgGFAKjgHSM1PIDQmu9Epjcyb4+J21saDB+dvgI\ncDe8n/I+DU0NXD3h6jbleXnw9tuST0sIcWTpTq6tR4FjgW1a60jgFGD1gNZqgDUHkiCPIAqqC3p0\nbmV9Jff8eA8vznoRJ5NTm33/+peRFDgsrL9qKoQQQ193AkmjY1Epk1LKpLVeRiethUNFY6MxYT3C\nN4Ks8qwenfvwTw9zxugzmDqibS74wkJ47z24667+rKkQQgx93Xn8t1wp5Qn8jDHQXQhYB7ZaA8ts\nhvp6GO03msyyzG6fl16Uzrub3iXtxvZ9V88+Cxdf3G7JdiGEOOx1p0VyLlCLMUlwMcajwOf09Y2V\nUhcqpdIc67FP3G9fj/JpOZbe/dhxziqlVOt13dtpDiQRvhFkV2TTZG86YH211ty2+DYeOPEBQjxD\n2uwrL4f//Af++tfufnohhDh8dCdpo1Vr3aS1tmmt39VaP+/o6uqrVOA84KfWhUqpsezLpzULeFnt\nm+3XnE8rFohVSp3hKL8GKNVaxwDPYuTq6lRzIHF3cSfQEkhuZW5XhwPwRfoX5Ffnc/OU9omzXnoJ\nzj4bIiIOeBkhhDjsdGc9kiqlVOV+W45S6r9KqajevrHWeqvWejvGjPbWzsWRT0trvQtjDskUxyqN\nHeXTaj7nXcfvn2E8ENCp5kACMNr/wN1bNY013LXkLl6Y9QLOpra9gVYrPP883HNPJycLIcRhrjtd\nW88Cf8WYADgC+AvGZMWPMVKX9LfhQE6r1835tIbTeT6tlnO01k0Y4zptJ3i04uYGdXXG71F+UWwv\n3d7ZoQA8+vOjHBd+HEkRSe32zZ8P06bB2LFdXkIIIQ5b3Rlsn621Tmz1+jWl1Eat9d1Kqfu6OrGr\nfFpa6697Xt1u63Aaf7OKimSeeQZCQsA7xJs1ag3XT7q+w2M3F27m9fWvk3JDSrt9druR3fc//+mf\nSgshxFDRk1xb3QkkNUqpizC6jAAuxJhtDm3XKWlHa92bJFZ5QHir1yMcZZ2Vtz5nj2M2vHdXaVzC\nw5O55hqYPBk25m/k4s8v7qz+3PjtjSTPSCbMq/3kkCVLjGXbp0/vwacTQohDQFJSEklJSS2vH3ro\noU6P7U7X1qXAPIxZ7QWO3y9TSrkD3cu1fmCtWxALgbmOJ7Ei2ZdPKx+oUEpNcQy+Xw581eqcKxy/\n/wFY2tWbtR4jSQhOYE/Vng5nuL/y+yvUN9W3W4O92bPPGqvvqi7bP0IIcXg7YItEa51J54/7rujt\nGyul5gAvAIHAN47uslm9zKf1JvCeY6GrEmBuV+/dOpA4mZyYPmo632z7hiuPvrLlmLTCNB5c/iAr\nr17ZbgY7QHo6bNwIX37Zu88vhBCHi+48tRWrlPpRKZXmeH2UUuqBvr6x1vpLrXW41tpdax2mtZ7V\nat9jWutorfVYrfWSVuXrtNYJWusYrfXtrcrrtdYXOcqPdTzt1anWg+0Af5r0J15e+3LL64LqAs7/\n5Hz+fdq/iQmI6fAazz8PN9xgXEsIIY5k3enaeh24F6N1gNY6hQP8xT/UtW6RAMyKnoW10crTq55m\nWdYykt5N4tKES7ni6Cs6PL+0FD7+2AgkQghxpOvOYLtFa71GtR0IsA1QfQbF/oHEyeTEl3/8kuu+\nvo73U97n7uPv5orEjoMIwPvvw5lnSjoUIYSA7gWSYqXUaBxPaDmWvt3b9SlD2/6BBCAmIIblVy4/\n4Llaw+uvG11bQgghuhdIbgZeA+KUUnlAFjBgy+wOBjc3qK3t3blr1xrnzpjRv3USQohDVXdybWVq\nrU8FgoA4rfUJBxrM7o7OkjYqpU5VSv2ulNqklFqrlDqp1b5+Sdro6WmkNumNN9801hwxdWd0SQgh\njgDdWSHRDFwARADOzWMlWuuH+/jezUkb958XXgScrbXOV0rFA//DmHwI+5I2rlVKLVJKnaG1/h+t\nkjYqpf6IkbSx0wcCehtIrFZYsEBWQBRCiNa683f1VxhJEW0Y65A0b33SWdJGrfUmx+RDtNabATel\nlEt/Jm308IDq6p7XecECOP54GDas5+cKIcThqjtjJCO01jMHvCYdcAzsr9daNyqlup20USlVrpTy\n7yxNiqcnZGf3vD5vvCFrjgghxP66E0hWKqUStNapPb14X5I2Orq1HgN6k6+ry6Ql33+fTFYWJCe3\nzyfTmfR02LnTeOxXCCEOdz1J2qj2ZR/p5ACltmDku8oC6nEEA631UX2rZsv1lwF3aa3XtyobAfwI\nXKG1Xu0oCwWWaa3HOl7PBWZorW9USi0GHtRa/+ZI2rhXax3cyfvpBQs0H38Mn33W0REd++tfwckJ\nHn+8lx9UCCEOYUoptNYd/pHenRbJrAMf0mctlVNK+QDfAHc3BxEAx+B7hVJqCrAWI2lj82yO5qSN\nv9GNpI2enj0bI2loMNYdWdHrzGJCCHH46k7Sxt0D8cadJW3EyCg8Gvi7UupBjK6w07XWxfRT0sae\nDrZ//TXExUFMx2m3hBDiiHbArq3DjVJKr1+vufpq2LChe+eceSZcfDHMmzewdRNCiKGqq66tI3Ja\nnbc3VFR079icHFi9Gi64YGDrJIQQh6ojMpD4+0NZWfeOfecdmDsXLJYBrZIQQhyyjsiuraYmjaur\nkbjRqf2aVS3sdoiKgs8/h0mTBq+OQggx1EjX1n5MJqN7q7y86+N+/BH8/GDixK6PE0KII9lBCySd\nJW1stX+kUqpKKfXnVmX9krQRjO6t0g7nve/z5ptw7bWyJrsQQnTlYLZImpM2/tTJ/qeARfuVNSdt\njAVilVJnOMpbkjYCz2IkbezSgQJJcTEsXgyXXHKgKwkhxJHtoAWSzpI2AiilzgUygc2tyvotaSNA\nQIARLDrz/vtw9tlG15YQQojODbkxEqWUB/A34CHaBpluJ20EypVS/l29T1gY7O1knUetjQSN11zT\nm08ghBBHlu6kSOm1XiZtTAae0VrXqN4PTnR5YnJyMjt2QGYmREe3T9r466/Q2AjdyOUohBCHpX5N\n2jjQ9k/aqJT6mX0LWfkBTcDfgS/op6SNWmtefRXWr4fXXmt/zLx5cPTRcNdd/ftZhRDiUHUoPP7b\nUjmt9XStdZTWOgpj4PyfWuuXHYtdVSilpiijqXI5xqJbsC9pI3QjaSPA8OGQm9u+vKTEyK11xRXt\n9wkhhGjvYD7+O0cplQMci5G08btunHYzRoLGbcD2/ZI2BjqSNt4B3HOgC8XEwLZt7cvnzzcG2QMD\nu/c5hBDiSHfQu7YGW3PXVmMjeHkZObfMZmOfzWYEmI8+gmOPPbj1FEKIoeRQ6NoadC4uRvqTLVv2\nlS1YACNHShARQoieOGIDCcDxx+9brMpmg3/8A+45YKeYEEKI1o7oQHLaafCVY7j+pZcgJARmzjy4\ndRJCiEPNkMy1pZQ6Sim10rF/k1LK1VHeb7m2AGbPhowM+POf4Z//hFdflbxaB1N3n1kXQ4Pcr0PL\nQN6vIZdryzEP5D3geq31eCAJaHTs7rdcWwBubrBwIdTUwKJFspTuwSZfTIcWuV+HlsMykHSRa+t0\nYJPWOs1xXJnWWvd3rq1mEycaLZGBWm+kP29eb67Vk3MOdGxv93dUPlS/hOR+yf0aqHP6cr96um+w\n79dQHCOJBVBKLVZK/a6U+qujvF9zbQ2WI+U/elf7h8J/9O6S+yX3a6DOOZwDCVrrAduA74GUVluq\n4+c5rY5ZBkxs9fouYCdGehR3YCVwEjAJWNLquBOAhY7fU4FhrfbtAPw7qZOWTTbZZJOt51tn3/UD\nmrRRa31aL07LBX7WWpcBKKUWAROBD4DwVseNAPIcv+c59u1xjLF4a607XG2kswk1QgghemeodG21\n/nL/H5CglHJTSjkDM4DN/Z1rSwghRP84aClSlFJzgBeAQKAc2Ki1nuXYdwlwH2AHvtVa3+sonwS8\nA7gBi7TWtzvKzRhPek0ASoC5Wutdg/l5hBDiSHXE5doSQgjRv4ZK15YQQohDlAQSIYQQfTKgT20J\n0VdKKQvwMlAP/KS1/vAgV0l0QSkVCdyP8eTkRQe7PqJrSqlzgbMAL+AtrfX3vbqOjJGIoUwpdRlQ\nprX+Vin1sdZ67sGukzgwpdSnEkgOHUopX+BJrfV1vTlfurbEoFJKvamUKlBKpexXPlMpleFIyHl3\nq10jcGQtAJoGraIC6NX9EgdRH+7XA8BLvX1fCSRisL0NnNG6QCllAl50lMcDFyul4hy7czCCCbTP\nyyYGXk/vV8thg1M9sZ8e3y+l1OMY0yk29vZNJZCIQaW1XgGU7Vc8Bdiutd6ttW4EPsZIxAnwX+BC\npdRLwNeDV1MBPb9fSil/pdQrwNHSUhl8vbhft2Ikub1QKXV9b99XBtvFUNCSdNMhF+M/P1rrGuDq\ng1Ep0amu7lcpcOPBqJToVFf36wWMieF9Ii0SIYQQfSKBRAwFeUDrVS1bJ+QUQ4/cr0PLgN8vCSTi\nYFC0HYxdC0QrpUY5llWei5GIUwwNcr8OLYN+vySQiEGllPoQY42ZWKVUtlLqKsdiZLcCS4DNwMda\n6/SDWU9hkPt1aDlY90smJAohhOgTaZEIIYToEwkkQggh+kQCiRBCiD6RQCKEEKJPJJAIIYToEwkk\nQggh+kQCiRBCiD6RQCLEIFFKLVVKnbZf2e2OzMZCHLIkkAgxeD4ELt6vbC7w0UGoixD9RtLICzF4\nPgceVUo5a61tSqlRQBjgpJRaDpQD44EFQCpwO+AGzNFaZx2kOgtxQNIiEWKQaK3LgDXALEfRXOBT\nx+9HAdcD44B5QIzWeirwJkaeJCGGLAkkQgyujzECCLTt1lqrtS7UWjcAOzES7IHRMokY1BoK0UMS\nSIQYXF8BpyilJgDuWusNjvL6VsfYW722I13QYoiTQCLEINJaW4HlwFvIILs4TEggEWLwfYQxJtJZ\nIJG1HcQhRdYjEUII0SfSIhFCCNEnEkiEEEL0iQQSIYQQfSKBRAghRJ9IIBFCCNEnEkiEEEL0iQQS\nIYQQffL/mWFlNMMh8wEAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "legend=[]\n", - "\n", - "for T in numpy.arange(77.5, 677.5, 50):\n", - " \n", - " #array of values for volume\n", - " Vmi = numpy.arange(0.0778*R*Tc/Pc*1.01,(R*Tc/Pc)*100.,0.0778*R*Tc/Pc*0.01)\n", - " \n", - "\n", - " matplotlib.pyplot.figure(1) #activate\n", - " matplotlib.pyplot.subplot(211) #activate\n", - "\n", - " matplotlib.pyplot.loglog(Vmi,PR(T,Vmi), label=str(T)+'K')\n", - " matplotlib.pyplot.ylabel('P')\n", - " matplotlib.pyplot.title('isotherm')\n", - " matplotlib.pyplot.ylim([PR(T,(R*Tc/Pc)*100.),PR(T,0.0778*R*Tc/Pc*1.01)])\n", - " matplotlib.pyplot.xlim([0.0778*R*Tc/Pc*1.01,(R*Tc/Pc)*100.])\n", - "\n", - " matplotlib.pyplot.tick_params(\n", - " axis='x', # changes apply to the x-axis\n", - " which='both', # both major and minor ticks are affected\n", - " bottom='on', # ticks along the bottom edge are off\n", - " top='on', # ticks along the top edge are off\n", - " labelbottom='off') # labels along the bottom edge are off\n", - "\n", - " matplotlib.pyplot.subplot(212) #activate\n", - "\n", - " matplotlib.pyplot.semilogx(Vmi,PR(T,Vmi), label=str(T)+'K')\n", - " matplotlib.pyplot.xlabel('Vm')\n", - " matplotlib.pyplot.ylabel('negative P')\n", - " matplotlib.pyplot.ylim([-1600,0.])\n", - " matplotlib.pyplot.xlim([0.0778*R*Tc/Pc*1.01,(R*Tc/Pc)*100.])\n", - " \n", - "#matplotlib.pyplot.legend(loc=0) \n", - "matplotlib.pyplot.show() \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# External references:\n", - "matplotlib magic command http://ipython.readthedocs.io/en/stable/interactive/plotting.html\n", - "matplotlib, pyplot [tutorial](http://matplotlib.org/users/pyplot_tutorial.html)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Credits\n", - "* Initially developed in python 2.7 by Guilherme Carneiro Queiroz da Silva\n", - "* Adapted to ipynb with python 3.5 by Iuri Soter Viana Segtovich" - ] - } - ], - "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [Root]", - "language": "python", - "name": "Python [Root]" - }, - "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.5.2" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/Get_involved/1_Beginner/3_numpy_and_scipy_and_how_to_get_density_HRes_SRes_GRes_and_the_saturation_point_from_a_cubic_EoS.ipynb b/Get_involved/1_Beginner/3_numpy_and_scipy_and_how_to_get_density_HRes_SRes_GRes_and_the_saturation_point_from_a_cubic_EoS.ipynb new file mode 100644 index 0000000..8320d3e --- /dev/null +++ b/Get_involved/1_Beginner/3_numpy_and_scipy_and_how_to_get_density_HRes_SRes_GRes_and_the_saturation_point_from_a_cubic_EoS.ipynb @@ -0,0 +1,532 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "numpy and scipy and how to get the saturation point from a cubic EoS\n", + "==\n", + "This notebook intends to present van der Waals's Equation of State([wikipedia](https://en.wikipedia.org/wiki/Van_der_Waals_equation),[nobel prize lecture](http://www.nobelprize.org/nobel_prizes/physics/laureates/1910/waals-lecture.pdf)), and to derive get density for given values of Pressure and Temperature.\n", + "\n", + "> **Here you will meet the following topics:**\n", + ">- Thermodynamics: `equation of state`, `density`, `saturation point`\n", + ">- Python: `packages`, `numpy`, `scipy`" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "Here we will use more resources of the packages numpy and we will also use the package scipy" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import numpy as numpy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "the following slightly different syntax works similarly,\n", + "here, we impor only a subset of the resources of scipy" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from scipy import optimize as optimize\n", + "#keyword \"from\"\n", + " #name of the parent module\n", + " #keyword \"import\"\n", + " #name of the desired subpackage\n", + " #keyword \"as\"\n", + " #alias name" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "to use some function of this module we have to write 'alias name'.'function name'\n", + "as an example we will see below:\n", + "numpy.roots, numpy.log, numpy.where, optimize.bissect" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Supose you have to solve the following problem in a thermodynamics course:\n", + ">\"Calculate saturation pressure for pure hexane at temperature of 220 K according to van der Waals equation of state\"\n", + "\n", + "We will show how here to implement a function to calculate density of a pure fluid at given T and P." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Consider the *van der Waals* equation of state (Reid et al., 1987, see Eq 3-6.1 and Table 3-5, line 1)\n", + "\n", + "$P=\\frac{RT}{\\bar{V}-b}-\\frac{a}{{\\bar{V}}^{2}}$\n", + "\n", + "$a=\\frac{27}{64}\\frac{{{Tc}^{2}}{R^{2}}}{Pc}$\n", + "\n", + "\n", + "$b=\\frac{{R}{Tc}}{{8}{Pc}}$\n", + "\n", + "where $R$ is the gas constant \n", + "\n", + "$R = 8.3144598 \\mathrm{{J} {mol^{−1}} {K^{−1}}}$\n", + "\n", + "and critical properties for hexane are \n", + "\n", + "$Tc = 507.5 \\mathrm{K}$\n", + "\n", + "\n", + "$Pc = 30.1 \\times {10^6} \\mathrm{Pa}$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So lets code this information:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First the gas constant" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#gas constant\n", + "R = 8.3144598 #J.mol^−1.K^−1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "now the physical properties of the substance" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#pure component critical point of hexane\n", + "# Tc (K)\n", + "Tc = 507.5 #K\n", + "\n", + "# Pc (bar)\n", + "Pc = 30.1*(10**6) #Pa" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then the EoS parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.2495499363743344\n" + ] + } + ], + "source": [ + "a = 27/64*((Tc**2)*(R**2)/Pc)\n", + "print(a)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.752320742732558e-05\n" + ] + } + ], + "source": [ + "b = (R*Tc)/(8*Pc)\n", + "print(b)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "We define the temperature at which we want to perform calculations" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#calculate density at what temperature and pressure?\n", + "T = 220. #K\n", + "P = 1*(10**5) #Pa" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now instead of using the explixit in P(TV) representation of the EoS we use the implict representation, that is a 3rd order polynomial in V" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "${P}{{\\bar{V}}^3}−({P}{b}+{R}{T}){{\\bar{V}}^2}+{a}{\\bar{V}}−{a}{b}={0}$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "This third grade polynomial provides the values of the volume at a given temperature and pressure." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "c3 = P #coefficient for v^3\n", + "c2 = -(P*b+R*T) #coefficient v^2\n", + "c1 = a #coefficient v^1\n", + "c0 = -a*b #coefficient v^0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "density at given P,T can be obtained by solving this polynomial for V" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 1.81721416e-02 1.16545544e-04 2.06475858e-05]\n" + ] + } + ], + "source": [ + "v=numpy.roots([c3,c2,c1,c0]) #numpy .roots finds the roots of a polynomial\n", + "#coefficients must be provided in a list form, constructed using the square brackets\n", + "#result is the list of real and imaginary roots found.\n", + "print(v)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "then calc phi to know whic root has lower gibbs energy and is therefor stable" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'P' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m\u001b[0m", + "\u001b[1;31mNameError\u001b[0mTraceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mResidual_G\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mP\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mv\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mR\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mT\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0mv\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m-\u001b[0m \u001b[0mT\u001b[0m\u001b[1;33m*\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mR\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mnumpy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlog\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mP\u001b[0m\u001b[1;33m*\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mv\u001b[0m\u001b[1;33m-\u001b[0m\u001b[0mb\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mR\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mT\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m#pdf do Charlles\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mResidual_G\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mNameError\u001b[0m: name 'P' is not defined" + ] + } + ], + "source": [ + "Residual_G = (P*v)-(R*T)-(a/v) - T*(R*numpy.log(P*(v-b)/(R*T))) #pdf do Charlles\n", + "print(Residual_G)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "what follows is similar to topliss [XXX] paper:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calculate Saturation prewssure\n", + "for the given T\n", + "first we isolate the range of pressure where fluid phase equilibria is feasible:\n", + "that is the range of pressure where there are 3 real roots of volume\n", + "that is between P_max and P_min\n", + "which are pressure values where isotherms P(T,V) have a local maximu and minimum with V belonging to [b,oo)\n", + "\n", + " \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "given\n", + "\n", + "$T$,\n", + "\n", + "find all possible\n", + "\n", + "$\\bar{V}^*$,\n", + "\n", + "so that\n", + "\n", + "$\\left(\\frac{\\partial P}{ \\partial \\bar{V}}\\right)_{T}=0$\n", + "\n", + "in\n", + "\n", + "$\\bar{V}^* \\in (b,\\infty)$.\n", + "\n", + "Then, find the corresponding\n", + "\n", + "$P^* = P(T,\\bar{V}^*)$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "analytical development of the partial derivative yields\n", + "\n", + "$\\left(\\frac{\\partial P}{ \\partial \\bar{V}}\\right)_{T}=-\\frac{RT}{(\\bar{V}-b)^2} + \\frac{2a}{\\bar{V}^3}$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "therefore in the stationary points\n", + "\n", + "$-\\frac{RT}{(\\bar{V}-b)^2} + \\frac{2a}{\\bar{V}^3}=0$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "which represents another 3rd order in V polynomial (not the same from the problem of finding V given P and T)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$-{RT}{\\bar{V}^3} + {2a}{(\\bar{V}-b)^2}=0$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$-{RT}{\\bar{V}^3} + {2a}{(\\bar{V})^2}+{2a}{(b)^2}+{2a}{(-2\\bar{V}b)}=0$" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "plateaus: [ 2.33425728e-04 2.51661243e-05 1.42624090e-05 0.00000000e+00]\n", + "plateaus: [ 2.33425728e-04 2.51661243e-05]\n", + "Vli: 2.51661242908e-05\n", + "Vvi: 0.000233425727852\n", + "Psupi: 3888420.00342\n", + "Pinfi: 1e-09\n", + "Saturation pressure = [ 297561.1280524415 ] bar\n" + ] + } + ], + "source": [ + "\n", + "\n", + "#[ ] write dP/dV=0 in mathjax\n", + "#[ ] write polynomial-in-V representation of dP/dV=0 in mathjax\n", + "\n", + "#calculate each coeffcient of the polynomial-in-V representation of dP/dV=0\n", + "rho = R*T\n", + "mu = 2*(-a)\n", + "nu = - b*(a*(-4))\n", + "omega=- 2*(b**2)*(a*(1))\n", + "\n", + "#use the method \"roots\" from package \"numpy\" to calculate the roots of tyhe polynomial and assing the solutions to the variable plateaus as an array\n", + "plateaus = numpy.roots([rho,mu,nu,omega,zeta])\n", + "\n", + "print(\"plateaus:\", plateaus)\n", + "\n", + "\n", + "#filter out values of plateu correspondign to non-physical volume (less than b)\n", + "\n", + "plateaus = plateaus[ numpy.where( plateaus > b ) ]\n", + "\n", + "print(\"plateaus:\", plateaus)\n", + "\n", + "Vli = min(plateaus)\n", + "Vvi = max(plateaus)\n", + "\n", + "#find the corrsponding values of pressure for each filtered volume\n", + "\n", + "Psup = R*T/(Vvi-b)-a/(Vvi*Vvi)\n", + "Psupi=Psup*.999\n", + "\n", + "Pinf = R*T/(Vli-b)-a/(Vli*Vli)\n", + "\n", + "#note that the algorithm cannot work with pressure less than or equal to zero, therefore fix minimium pressure to slightly above zero if is resulted negative\n", + "\n", + "if Pinf > 0:\n", + " Pinfi = Pinf*1.001\n", + "else:\n", + " Pinfi = 0.000000001\n", + "\n", + "print(\"Vli:\",Vli)\n", + "print(\"Vvi:\",Vvi)\n", + "print(\"Psupi:\",Psupi)\n", + "print(\"Pinfi:\",Pinfi) \n", + "\n", + "#[ ] write reference to this equaiton in mathjax\n", + "\n", + "\n", + "#define equilibrium criteria: Residual_G_Liquid is equal to Residual_G_Vapor :. Delta_Residual_G = zero :. Delta_Residual_G < Tolerance\n", + "def Delta_Residual_G(P):\n", + " alfa = (-1)*b-R*T/P\n", + " beta = + a/P\n", + " gamma = -b*a/P\n", + " V = numpy.roots([1,alfa,beta,gamma])\n", + " Vl = min(V)\n", + " Vv = max(V)\n", + " #print(P, V) #if you uncomment this line you will see every iteration in the output section of this cell\n", + " return (P*(Vl-Vv) + (-a)*(1/(Vl)-1/(Vv))+T*(R*numpy.log((Vv-b)/(Vl-b))))\n", + "\n", + "#ask package optmize to use method bissect to solve the equilibrium criteria just defined\n", + "psat = optimize.bisect(Delta_Residual_G, Pinfi, Psupi, xtol=1e-12, rtol=4.4408920985006262e-16, maxiter=100, full_output=True, disp=True)\n", + "print(\"Saturation pressure = [\",str(psat[0]),\"] bar\")\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# External references\n", + "scipy, optimize [documentation](http://docs.scipy.org/doc/scipy/reference/optimize.html)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Credits\n", + "* Initially developed in python 2.7 by Guilherme Carneiro Queiroz da Silva\n", + "* Adapted to ipynb with python 3.5 by Iuri Soter Viana Segtovich" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python [Root]", + "language": "python", + "name": "Python [Root]" + }, + "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.5.2" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Get_involved/README.md b/Get_involved/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Getting_started/Get_going_with_Windows/README.md b/Getting_started/Get_going_with_Windows/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Getting_started/README.md b/Getting_started/README.md new file mode 100644 index 0000000..e69de29