summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroot2014-07-08 17:31:55 +0530
committerroot2014-07-08 17:31:55 +0530
commitba659b4b63e3181ffa039371e19ab59388ded54a (patch)
tree9382859b9e191f753d702ab1bbd97055385c2add
parent84eaa5fbfb3090e912ebe12de1906b7c0bdde908 (diff)
downloadPython-Textbook-Companions-ba659b4b63e3181ffa039371e19ab59388ded54a.tar.gz
Python-Textbook-Companions-ba659b4b63e3181ffa039371e19ab59388ded54a.tar.bz2
Python-Textbook-Companions-ba659b4b63e3181ffa039371e19ab59388ded54a.zip
removing bookss
-rwxr-xr-xBeginning_C++_through_Game_Programming/Chapter 1 .ipynb1483
-rwxr-xr-xBeginning_C++_through_Game_Programming/Chapter 2.ipynb1156
-rwxr-xr-xBeginning_C++_through_Game_Programming/Chapter 3.ipynb889
-rwxr-xr-xBeginning_C++_through_Game_Programming/Chapter 4.ipynb996
-rwxr-xr-xBeginning_C++_through_Game_Programming/Chapter 5.ipynb517
-rwxr-xr-xBeginning_C++_through_Game_Programming/Chapter 6.ipynb1088
-rwxr-xr-xBeginning_C++_through_Game_Programming/Chapter 7.ipynb894
-rwxr-xr-xBeginning_C++_through_Game_Programming/Chapter 8.ipynb769
-rwxr-xr-xBeginning_C++_through_Game_Programming/Chapter 9.ipynb759
-rwxr-xr-xBeginning_C++_through_Game_Programming/README.txt10
-rwxr-xr-xBeginning_C++_through_Game_Programming/ch1.ipynb49
-rwxr-xr-xBeginning_C++_through_Game_Programming/ch10.ipynb142
-rwxr-xr-xBeginning_C++_through_Game_Programming/ch11.ipynb175
-rwxr-xr-xBeginning_C++_through_Game_Programming/ch12.ipynb169
-rwxr-xr-xBeginning_C++_through_Game_Programming/ch13.ipynb121
-rwxr-xr-xBeginning_C++_through_Game_Programming/ch14.ipynb130
-rwxr-xr-xBeginning_C++_through_Game_Programming/ch15.ipynb127
-rwxr-xr-xBeginning_C++_through_Game_Programming/ch2.ipynb112
-rwxr-xr-xBeginning_C++_through_Game_Programming/ch3.ipynb133
-rwxr-xr-xBeginning_C++_through_Game_Programming/ch4.ipynb112
-rwxr-xr-xBeginning_C++_through_Game_Programming/ch5.ipynb229
-rwxr-xr-xBeginning_C++_through_Game_Programming/ch6.ipynb265
-rwxr-xr-xBeginning_C++_through_Game_Programming/ch7.ipynb175
-rwxr-xr-xBeginning_C++_through_Game_Programming/ch8.ipynb239
-rwxr-xr-xBeginning_C++_through_Game_Programming/ch9.ipynb175
-rwxr-xr-xBeginning_C++_through_Game_Programming/screenshots/fileipop.pngbin37169 -> 0 bytes
-rwxr-xr-xBeginning_C++_through_Game_Programming/screenshots/fruitful.pngbin32934 -> 0 bytes
-rwxr-xr-xBeginning_C++_through_Game_Programming/screenshots/structures.pngbin28038 -> 0 bytes
28 files changed, 0 insertions, 10914 deletions
diff --git a/Beginning_C++_through_Game_Programming/Chapter 1 .ipynb b/Beginning_C++_through_Game_Programming/Chapter 1 .ipynb
deleted file mode 100755
index b7bd8ecd..00000000
--- a/Beginning_C++_through_Game_Programming/Chapter 1 .ipynb
+++ /dev/null
@@ -1,1483 +0,0 @@
-{
- "metadata": {
- "name": ""
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 1:. Fundamentals of Mass Transfer"
- ]
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 1.1 Page number:6"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 1.1\n",
- "#(a)Find Total molar concentration in gas feed\n",
- "#(b)Find Density of gas feed\n",
- "#(c)The composition of the gas feed, expressed in terms of mass fractions\n",
- "#Variable declaration\n",
- "T = 300 # [K]\n",
- "P = 500 # [kPa]\n",
- "R = 8.314 # [J/mole.K]\n",
- "\n",
- "\n",
- "# Solution (a)\n",
- "# Using equation 1.7 \n",
- "C = P/(R*T) # [Total molar concentration, kmole/cubic m]\n",
- "print\"Total molar concentration in the gas feed is\",round(C,1),\"kmole/cubic m\\n\\n\" \n",
- "\n",
- "#Illustration 1.1 (b)\n",
- "# Solution (b)\n",
- "\n",
- "# Mixture of gases \n",
- "# Components a-CH4 , b-C2H6 , c-nC3H8 , d-nC4H10\n",
- "# Basis: 100 kmole of gas mixture\n",
- "n_a = 88 # [kmole]\n",
- "n_b = 4 # [kmole]\n",
- "n_c = 5 # [kmole]\n",
- "n_d = 3 # [kmole]\n",
- "M_a = 16.04 # [gram/mole]\n",
- "M_b = 30.07 # [gram/mole]\n",
- "M_c = 44.09 # [gram/mole]\n",
- "M_d = 58.12 # [gram/mole]\n",
- "m_a = n_a*M_a # [kg]\n",
- "m_b = n_b*M_b # [kg]\n",
- "m_c = n_c*M_c # [kg]\n",
- "m_d = n_d*M_d # [kg]\n",
- "n_total = n_a+n_b+n_c+n_d # [kmole]\n",
- "m_total = m_a+m_b+m_c+m_d # [kg]\n",
- "M_avg = m_total/n_total # [kg/kmole]\n",
- "row = C*M_avg # [mass density, kg/cubic m]\n",
- "print\"Average molecular weight of gas feed is \",round(M_avg,2),\"kg/kmole\\n\" \n",
- "print\"Density of gas feed is \",round(row,2),\"kg/cubic m\\n\\n\" \n",
- "\n",
- "#Illustration 1.1 (c)\n",
- "\n",
- "\n",
- "# Mass fraction of each component\n",
- "x_a = m_a/m_total \n",
- "x_b = m_b/m_total \n",
- "x_c = m_c/m_total \n",
- "x_d = m_d/m_total \n",
- "print\"Mass fraction of CH4, C2H6, nC3H8, nC4H10 are\",round(x_a,3),round(x_b,3),round(x_c,3),round(x_d,3),\"respectively\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Total molar concentration in the gas feed is 0.2 kmole/cubic m\n",
- "\n",
- "\n",
- "Average molecular weight of gas feed is 19.27 kg/kmole\n",
- "\n",
- "Density of gas feed is 3.86 kg/cubic m\n",
- "\n",
- "\n",
- "Mass fraction of CH4, C2H6, nC3H8, nC4H10 are 0.733 0.062 0.114 0.091 respectively\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 1.2 Page number:7"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Example 1.2 \n",
- "#Concentration of a Potassium Nitrate Wash Solution \n",
- "#Variable declaration\n",
- "# Component a-KNO3 b-H20\n",
- "T = 293.0 # [K]\n",
- "s_eqm = 24.0 # [percent by weight, %]\n",
- "row = 1162.0 # [density of saturated solution, kg/cubic m]\n",
- "\n",
- "\n",
- "#Illustration 1.2 (a) \n",
- "# Solution (a)\n",
- "\n",
- "# Basis: 100 kg of fresh wash solution\n",
- "m_a = (s_eqm/100)*100 # [kg]\n",
- "m_b = 100 - m_a # [kg]\n",
- "M_a = 101.10 # [gram/mole]\n",
- "M_b = 18.02 # [gram.mole]\n",
- "\t# Therefore moles of component 'a' and 'b' are\n",
- "n_a = m_a/M_a # [kmole]\n",
- "n_b = m_b/M_b # [kmole]\n",
- "\n",
- "m_total = 100 # [basis, kg]\n",
- "n_total = n_a+n_b # [kmole]\n",
- "\t# Average molecular weight\n",
- "M_avg = m_total/n_total # [kg/kmole]\n",
- "\t# Total molar density of fresh solution\n",
- "C = row/M_avg # [kmole/cubic m]\n",
- "print\"Total molar density of fresh solution is\",round(C,2),\"kmole/cubic m\\n\\n\" \n",
- "\n",
- "#Illustration 1.2 (b)\n",
- "# Solution (b)\n",
- "\n",
- "# mole fractions of components 'a' and 'b'\n",
- "x_a = n_a/n_total \n",
- "x_b = n_b/n_total \n",
- "print\"Mole fraction of KNO3 and H2O is\",round(x_a,3),round(x_b,3) "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Total molar density of fresh solution is 51.77 kmole/cubic m\n",
- "\n",
- "\n",
- "Mole fraction of KNO3 and H2O is 0.053 0.947\n"
- ]
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 1.3 Page number:9"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 1.3\n",
- "# Page: 9\n",
- "# Material Balances on a Bio- Artificial Kidney\n",
- "\n",
- "\n",
- "#Variable declaration\n",
- "f_a = 45.0 \t\t\t\t# [percent of blood cells by volume]\n",
- "f_b = 55.0 \t\t\t\t# [percent of plasma by volume]\n",
- "r = 1200.0 \t\t\t\t# [Rate of blood which is pumped through artificial \t\t\t\t\tkidney, mL/minute]\n",
- "m_urine = 1540.0 \t\t\t# [mass of urine collected, g]\n",
- "x_u = 1.3 \t\t\t\t# [urea concentration, percent by weight]\n",
- " # Data for sample of blood plasma\n",
- "c_urea = 155.3 \t\t\t# [mg/dL]\n",
- "d = 1.0245 \t\t\t\t# [specfic gravity of plasma]\n",
- "\n",
- "#CALCULATION\n",
- "\t#Illustration 1.3 (a)\n",
- "\t# Solution (a)\n",
- "\n",
- "\t# Basis: 4 hours\n",
- "\t# Assuming that the rate of formation and decomposition of urea during the procedure is \t\tnegligible and that no urea is removed by the patient\u2019s kidneys\n",
- "\t# Therefore urea in \u201cclean\u201d blood = urea in \u201cdirty\u201d blood - urea in urine\n",
- "\n",
- "m_u = m_urine*(x_u/100) \t\t# [mass of urea in urine, g]\n",
- "\t# total volume of plasma that flows through the artificial kidney in 4 hours\n",
- "V_b = r*60*(f_b/100)*(1.0/100.0)*4 \t# [dL]\n",
- "\t# urea in dirty blood from given plasma concentration\n",
- "m_ud = c_urea*(1.0/1000.0)*V_b \t# [g]\n",
- "\t\t\t\t\t# urea removal efficiency\n",
- "n = (m_u/m_ud)*100 \n",
- "#RESULT\n",
- "print\"Urea removal efficiency is \",round(n,1),\"%\"\n",
- " \n",
- "\t#Illustration 1.3 (b)\n",
- "\t# Solution (b)\n",
- "#CALCULATION\n",
- "m_uc = m_ud-m_u \t\t\t# [mass of urea on clean blood, g]\n",
- "m_p = d*100*V_b \t\t\t# [Mass of plasma entering, g]\n",
- "m_rem = m_p-m_urine \t\t\t# [Mass of plasma remaining, g]\n",
- "V_brem = m_rem/(d*100) \t\t# [Volume of plasma remaining, dL]\n",
- "#RESULT\n",
- "c_y = (m_uc*1000)/V_brem \t\t# [urea concentration in remaining plasma, mg/dL]\n",
- "print\"urea concentration in the plasma of the cleansed blood is\",round(c_y),\"mg/dL\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Urea removal efficiency is 8.1 %\n",
- "urea concentration in the plasma of the cleansed blood is 144.0 mg/dL\n"
- ]
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 1.6 Page number:21"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 1.6\n",
- "#Calculation of Diffusivity by the Wilke-Lee Equation\n",
- "import math\n",
- "\n",
- "#VARIABLE DECLARATION\n",
- "\n",
- "T = 273 \t\t\t\t# [K]\n",
- "P = 1 \t\t\t\t\t# [bar]\n",
- "\t# 1 bar = 10**5 Pa\n",
- "\t# Values of the Lennard-Jones parameters (sigma and E/K) are obtained from Appendix B:\n",
- "sigma_a = 4.483 \t\t\t# [1st Lennard-Jones parameter, Angstrom]\n",
- "sigma_b = 3.620 \t\t\t# [Angstrom]\n",
- "d_a = 467.0 \t\t\t\t# [d = E/K 2nd Lennard-Jones parameter, K]\n",
- "d_b = 97.0 \t\t\t\t# [K]\n",
- "M_a = 76.0 \t\t\t\t# [gram/mole]\n",
- "M_b = 29.0 \t\t\t\t# [gram/mole]\n",
- "\n",
- "\n",
- "#CALCULATION\n",
- "\n",
- "sigma_ab = (sigma_a+sigma_b)/2 \t\t# [Angstrom]\n",
- "d_ab =math.sqrt(d_a*d_b) \t\t# [K]\n",
- "M_ab = 2/((1/M_a)+(1/M_b)) \t\t\t# [gram/mole]\n",
- "T_star = T/d_ab \n",
- "a = 1.06036 \n",
- "b = 0.15610 \n",
- "c = 0.19300 \n",
- "d = 0.47635 \n",
- "e = 1.03587 \n",
- "f = 1.52996 \n",
- "g = 1.76474 \n",
- "h =3.89411 \n",
- "ohm = ((a/T_star**b)+(c/math.exp(d*T_star))+(e/math.exp(f*T_star))+(g/math.exp(h*T_star))) \n",
- "\n",
- "\t# Substituting these values into the Wilke-Lee equation yields (equation 1.49)\n",
- "D_ab = ((10**-3*(3.03-(.98/math.sqrt(M_ab)))*T**1.5)/(P*(math.sqrt(M_ab))*(sigma_ab**2)*ohm)) \t\t\n",
- "#RESULT\n",
- "\t\t\t\t\t\t# [square cm/s]\n",
- "print\"The diffusivity of carbon disulfide vapor in air at 273 K and 1 bar is\",round(D_ab,4),\"square cm/s\\n\" \n",
- "\n",
- "\t# The math.experimental value of D_ab obtained from Appendix A:\n",
- "D_abexp = (.894/(P*10**5))*10**4 \t\t\t# [square cm/s]\n",
- "percent_error = ((D_ab-D_abexp)/D_abexp)*100 \t\t# [%]\n",
- "\n",
- "#RESULT\n",
- "\n",
- "print\"The percent error of the estimate, compared to the math.experimental value is\",round(percent_error,1),\"%\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The diffusivity of carbon disulfide vapor in air at 273 K and 1 bar is 0.0952 square cm/s\n",
- "\n",
- "The percent error of the estimate, compared to the math.experimental value is 6.5 %\n"
- ]
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 1.7 Page number:22"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 1.7\n",
- "#Calculation of Diffusivity by the Wilke-Lee Equation \n",
- "#with Estimated Values of the Lennard-Jones Parameters\n",
- "import math\n",
- "\n",
- "#VARIABLE DECLARATION\n",
- "\n",
- "\t# A-C3H5Cl B-air\n",
- "T = 298.0 \t\t\t\t\t# [K]\n",
- "P = 1.0 \t\t\t\t\t\t# [bar]\n",
- "\n",
- "\t# Values of the Lennard-Jones parameters for allyl chloride must be estimated from \t\tequations (1.46) and (1.47).\n",
- "\t\t# From Table 1.2\n",
- "V_bA = 3*14.8+5*3.7+24.6 \t\t\t# [cubic cm/mole]\n",
- "\t\t\t\t\t\t# From equation 1.46\n",
- "sigma_A = 1.18*(V_bA)**(1.0/3.0) \t\t\t# [1st Lennard-Jones parameter, Angstrom]\n",
- "\t# Normal boiling-point temperature for allyl chloride is Tb = 318.3 K\n",
- "\t# From equation 1.47, E/K = 1.15*Tb\n",
- "T_b = 318.3 \t\t\t\t\t# [K]\n",
- "d_A = 1.15*T_b \t\t\t\t# [2nd Lennard-Jones parameter for C3H5Cl E/K, \t\t\t\t\t\t\tK]\n",
- "M_A = 76.5 \t\t\t\t\t# [gram/mole]\n",
- "\n",
- "\t# Lennard-Jones parameters for air\n",
- "sigma_B = 3.62 \t\t\t\t# [Angstrom]\n",
- "d_B = 97 \t\t\t\t\t# [2nd Lennard-Jones parameter for air E/K, K]\n",
- "\n",
- "M_B = 29.0 \t\t\t\t\t# [gram/mole]\n",
- "\n",
- "sigma_AB = (sigma_A+sigma_B)/2 \t\t# [Angstrom]\n",
- "d_AB = math.sqrt(d_A*d_B) \t\t\t# [K]\n",
- "M_AB = 2/((1/M_A)+(1/M_B)) \t\t\t# [gram/mole]\n",
- "\n",
- "T_star = T/d_AB \n",
- "a = 1.06036 \n",
- "b = 0.15610 \n",
- "c = 0.19300 \n",
- "d = 0.47635 \n",
- "e = 1.03587 \n",
- "f = 1.52996 \n",
- "g = 1.76474 \n",
- "h =3.89411 \n",
- "ohm = ((a/T_star**b)+(c/math.exp(d*T_star))+(e/math.exp(f*T_star))+(g/math.exp(h*T_star))) \n",
- " \n",
- "\t# Substituting these values into the Wilke-Lee equation yields (equation 1.49)\n",
- "D_AB = ((10**-3*(3.03-(.98/math.sqrt(M_AB)))*T**1.5)/(P*(math.sqrt(M_AB))*(sigma_AB**2)*ohm)) # [square cm/s]\n",
- "print\"The diffusivity of allyl chloride in air at 298 K and 1 bar is\",round(D_AB,4),\"square cm/s\\n\"\n",
- "\n",
- "\t# The experimental value of D_AB reported by Lugg (1968) is 0.098 square cm/s\n",
- "D_ABexp = .098 \t\t\t\t\t# [square cm/s]\n",
- "percent_error = ((D_AB-D_ABexp)/D_ABexp)*100 \t\t# [%]\n",
- "print\"The percent error of the estimate, compared to the experimental value is\",round(percent_error,1),\"%\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The diffusivity of allyl chloride in air at 298 K and 1 bar is 0.0992 square cm/s\n",
- "\n",
- "The percent error of the estimate, compared to the experimental value is 1.2 %\n"
- ]
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 1.8 Page number:26"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 1.8\n",
- "#Calculation of Liquid Diffusivity in Aqueous Solution \n",
- "import math\n",
- "#Variable declaration\n",
- "\n",
- "\t# solute A-C2H60 solvent B-water\n",
- "T = 288\t\t \t\t\t\t# [K]\n",
- "\n",
- "\t# Critical volume of solute\n",
- "V_c = 167.1 \t\t\t\t\t# [cubic cm/mole]\n",
- "\t# Calculating molar volume using equation 1.48\n",
- "V_ba = 0.285*(V_c)**1.048 \t\t\t# [cubic cm/mole]\n",
- "u_b = 1.153 \t\t\t\t\t# [Viscosity of liquid water at 288 K, cP]\n",
- "M_solvent = 18 \t\t\t\t# [gram/mole]\n",
- "phi_b = 2.26 \t\t\t\t\t# [association factor of solvent B]\n",
- "\n",
- "#Illustration 1.8 (a) \n",
- "\t# Solution (a)\n",
- "\n",
- "\t# Using the Wilke-Chang correlation, equation 1.52\n",
- "D_abo1 = (7.4*10**-8)*(math.sqrt(phi_b*M_solvent))*T/(u_b*(V_ba)**.6) # [diffusivity of solute A \tin very dilute solution in solvent B, square cm/s]\n",
- "\n",
- "#RESULT\n",
- "print\"Diffusivity of C2H60 in a dilute solution in water at 288 K is\",round(D_abo1,8),\"square cm/s\" \n",
- "\t# The experimental value of D_abo reported in Appendix A is 1.0 x 10**-5 square cm/s\n",
- "D_aboexp = 1*10**-5 \t\t\t\t\t# [square cm/s]\n",
- "percent_error1 = ((D_abo1-D_aboexp)/D_aboexp)*100 \t# [%]\n",
- "\n",
- "print\"The percent error of the estimate, compared to the experimental value is\",round(percent_error1,1),\"%\" \n",
- "\n",
- "\t#Illustration 1.8 (b) \n",
- "\t# Solution (b)\n",
- "#CALCULATION\n",
- "\t# Using the Hayduk and Minhas correlation for aqueous solutions equation 1.53\n",
- "E = (9.58/V_ba)-1.12 \n",
- "D_abo2 = (1.25*10**-8)*(((V_ba)**-.19)-0.292)*(T**1.52)*(u_b**E) \t# [square cm/s]\n",
- "\n",
- "#RESULT\n",
- "print\"\\n\\nDiffusivity of C2H60 in a dilute solution in water at 288 K is\",round(D_abo2,8),\"square cm/s\\n\" \n",
- "percent_error2 = ((D_abo2-D_aboexp)/D_aboexp)*100 \t\t\t# [%]\n",
- "print\"The percent error of the estimate, compared to the experimental value is\",round(percent_error2,1),\"%\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Diffusivity of C2H60 in a dilute solution in water at 288 K is 1.002e-05 square cm/s\n",
- "The percent error of the estimate, compared to the experimental value is 0.2 %\n",
- "\n",
- "\n",
- "Diffusivity of C2H60 in a dilute solution in water at 288 K is 9.91e-06 square cm/s\n",
- "\n",
- "The percent error of the estimate, compared to the experimental value is -0.9 %\n"
- ]
- }
- ],
- "prompt_number": 6
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 1.9 Page number:27"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 1.9\n",
- "#Calculation of Liquid Diffusivity in Dilute Nonaqueous Solution\n",
- "\n",
- "import math\n",
- "#Variable declaration\n",
- "\t# A-acetic acid(solute) B-acetone(solvent)\n",
- "T = 313 \t\t\t\t\t # [K]\n",
- "\t# The following data are available (Reid, et al., 1987):\n",
- "\n",
- "\t# Data for acetic acid\n",
- "T_bA = 390.4 \t\t\t\t\t# [K]\n",
- "T_cA = 594.8 \t\t\t\t\t# [K]\n",
- "P_cA = 57.9 \t\t\t\t\t# [bar]\n",
- "V_cA = 171 \t\t\t\t\t# [cubic cm/mole]\n",
- "M_A = 60 \t\t\t\t\t# [gram/mole]\n",
- "\n",
- "\t# Data for acetone\n",
- "T_bB = 329.2 \t\t\t\t\t# [K]\n",
- "T_cB = 508 \t\t\t\t\t# [K]\n",
- "P_cB = 47 \t\t\t\t\t# [bar]\n",
- "V_cB = 209 \t\t\t\t\t# [cubic cm/mole]\n",
- "u_bB = 0.264 \t\t\t\t\t# [cP]\n",
- "M_B = 58 \t\t\t\t\t# [gram/mole]\n",
- "phi = 1 \n",
- "\n",
- "#CALCULATION\n",
- "\n",
- "\t#Illustration 1.9 (a) -\n",
- "\t# Solution (a)\n",
- "\t# Using equation 1.48\n",
- "V_bA = 0.285*(V_cA)**1.048 \t\t\t# [cubic cm/mole]\n",
- "\n",
- "\t# Using the Wilke-Chang correlation , equation 1.52\n",
- "D_abo1 = (7.4*10**-8)*(math.sqrt(phi*M_B))*T/(u_bB*(V_bA)**.6) \n",
- "\n",
- "#RESULT\n",
- "print\"Diffusivity of acetic acid in a dilute solution in acetone at 313 K using the Wilke-Chang correlation is\",round(D_abo1,8),\"square cm/s\\n\" \n",
- "\t# From Appendix A, the experimental value is 4.04*10**-5 square cm/s\n",
- "D_aboexp = 4.04*10**-5 \t\t\t\t\t# [square cm/s]\n",
- "percent_error1 = ((D_abo1-D_aboexp)/D_aboexp)*100 \t\t# [%]\n",
- "\n",
- "print\"The percent error of the estimate, compared to the experimental value is \",round(percent_error1,1),\"%\" \n",
- "\n",
- "#Illustration 1.9 (b)\n",
- "# Solution (b)\n",
- "\n",
- "#CALCULATION\n",
- "# Using the Hayduk and Minhas correlation for nonaqueous solutions\n",
- "\n",
- "V_bA = V_bA*2 \t\t\t\t\t\t\t# [cubic cm/mole]\n",
- "V_bB = 0.285*(V_cB)**1.048 \t\t\t\t\t# [cubic cm/mole]\n",
- "\n",
- "\t\t# For acetic acid (A)\n",
- "T_brA = T_bA/T_cA \t\t\t\t\t\t# [K]\n",
- "\t\t# Using equation 1.55 \n",
- "alpha_cA = 0.9076*(1+((T_brA)*math.log(P_cA/1.013))/(1-T_brA)) \n",
- "sigma_cA = (P_cA**(2.0/3.0))*(T_cA**(1.0/3.0))*(0.132*alpha_cA-0.278)*(1-T_brA)**(11.0/9.0) # [dyn/cm]\n",
- "\n",
- "# For acetone (B)\n",
- "T_brB = T_bB/T_cB \t\t\t\t\t\t# [K]\n",
- "\t\t# Using equation 1.55 \n",
- "alpha_cB = 0.9076*(1+((T_brB*math.log(P_cB/1.013))/(1-T_brB))) \n",
- "sigma_cB = (P_cB**(2.0/3.0))*(T_cB**(1.0/3.0))*(0.132*alpha_cB-0.278)*(1-T_brB)**(11.0/9.) # [dyn/cm]\n",
- "\n",
- "# Substituting in equation 1.54\n",
- "D_abo2 = (1.55*10**-8)*(V_bB**0.27)*(T**1.29)*(sigma_cB**0.125)/((V_bA**0.42)*(u_bB**0.92)*(sigma_cA**0.105)) \n",
- "\n",
- "#RESULT\n",
- "\n",
- "print\"Diffusivity of acetic acid in a dilute solution in acetone at 313 K using the Hayduk and Minhas correlation is\",round(D_abo2,7),\"square cm/s\\n\" \n",
- "\n",
- "percent_error2 = ((D_abo2-D_aboexp)/D_aboexp)*100 # [%]\n",
- "print\"The percent error of the estimate, compared to the experimental value is\",round(percent_error2),\"%\"\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Diffusivity of acetic acid in a dilute solution in acetone at 313 K using the Wilke-Chang correlation is 5.596e-05 square cm/s\n",
- "\n",
- "The percent error of the estimate, compared to the experimental value is 38.5 %\n",
- "Diffusivity of acetic acid in a dilute solution in acetone at 313 K using the Hayduk and Minhas correlation is"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- " 3.84e-05 square cm/s\n",
- "\n",
- "The percent error of the estimate, compared to the experimental value is -5.0 %\n"
- ]
- }
- ],
- "prompt_number": 7
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 1.10 Page number:30"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 1.10\n",
- "#Diffusion Coefficients in the System Acetone-Benzene\n",
- "\n",
- "#Variable declaration\n",
- "\t# acetone-1 benzene-2\n",
- "T = 298 \t\t\t\t\t# [K]\n",
- "x_1 = 0.7808 \n",
- "x_2 = 1-x_1 \n",
- "\n",
- "#CALCULATIONS\n",
- "\t# The infinite dilution diffusivities are\n",
- "D_12o = 2.75*10**-9 \t\t\t\t# [square m/s]\n",
- "D_21o = 4.15*10**-9 \t\t\t\t# [square m/s]\n",
- "\t# From the NRTL equation, for this system at the given temperature and concentration the \tthermodynamic correction factor r = 0.871.\n",
- "r = 0.871 \n",
- "D_12exp = 3.35*10**-9 \t\t\t\t# [square m/s]\n",
- "\n",
- "\n",
- "\t# Using equation 1.56\n",
- "D_12 = (D_12o**x_2)*(D_21o**x_1) \n",
- "D_12 = D_12*r \n",
- "\n",
- "#RESULT\n",
- "print\"The theoritical value of Fick diffusivity is\",round(D_12,11),\"square m/s\" \n",
- "\t# The predicted value of the Fick diffusivity is in excellent agreement with the \texperimental result."
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The theoritical value of Fick diffusivity is 3.3e-09 square m/s\n"
- ]
- }
- ],
- "prompt_number": 8
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 1.11 Page number:32"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 1.11\n",
- "#Calculation of Effective Diffusivity in a Multicompo-nent Gas Mixture \n",
- "\n",
- "#Variable declaration\n",
- "# ammonia-1 nitrogen-2 hydrogen-3\n",
- "T = 300 \t\t\t\t\t# [K]\n",
- "P = 1 \t\t\t\t\t\t# [bar]\n",
- "y_1 = .40 \n",
- "y_2 = .20 \n",
- "y_3 = .40 \n",
- "import math\n",
- "\n",
- "\t# Lennard-Jones parameter for ammonia\n",
- "sigma_1 = 2.9 \t\t\t\t\t# [Angstrom]\n",
- "d_1 = 558.3 \t\t\t\t\t# [E/K, K]\n",
- "M_1 = 17.0 \t\t\t\t\t# [gram/mole]\n",
- "\n",
- "\t# Lennard-Jones parameter for nitrogen\n",
- "sigma_2 = 3.798 \t\t\t\t# [Angstrom]\n",
- "d_2 = 71.4 \t\t\t\t\t# [E/K, K]\n",
- "M_2 = 28.0 \t\t\t\t\t# [gram/mole]\n",
- "\n",
- "\t# Lennard-Jones parameter for hydrogen \n",
- "sigma_3 = 2.827 \t\t\t\t# [Angstrom]\n",
- "d_3 = 59.7 \t\t\t\t\t# [E/K, K]\n",
- "M_3 = 2.0 \t\t\t\t\t# [gram/mole]\n",
- "\n",
- "\t# Binary diffusivitiy of ammonia in nitrogen (D_12)\n",
- "\n",
- "#CALCULATIONS\n",
- "\n",
- "\n",
- "sigma_12 = (sigma_1+sigma_2)/2 \t\t# [Angstrom]\n",
- "d_12 = math.sqrt(d_1*d_2) \t\t\t# [K]\n",
- "M_12 = 2/((1/M_1)+(1/M_2)) \t\t\t# [gram/mole]\n",
- "\n",
- "T_star12 = T/d_12 \n",
- "a = 1.06036 \n",
- "b = 0.15610 \n",
- "c = 0.19300 \n",
- "d = 0.47635 \n",
- "e = 1.03587 \n",
- "f = 1.52996 \n",
- "g = 1.76474 \n",
- "h = 3.89411 \n",
- "ohm12 = ((a/T_star12**b)+(c/math.exp(d*T_star12))+(e/math.exp(f*T_star12))+(g/math.exp(h*T_star12))) \n",
- " \n",
- "\t# Substituting these values into the Wilke-Lee equation yields (equation 1.49)\n",
- "D_12 = ((10**-3*(3.03-(.98/math.sqrt(M_12)))*T**1.5)/(P*(math.sqrt(M_12))*(sigma_12**2)*ohm12)) # [square cm/s]\n",
- "print\"The diffusivitiy of ammonia in nitrogen\",round(D_12,3),\"square cm/s\"\n",
- "\n",
- "\t# Binary diffusivitiy of ammonia in hydrogen (D_13)\n",
- "\n",
- "sigma_13 = (sigma_1+sigma_3)/2 \t\t# [Angstrom]\n",
- "d_13 = math.sqrt(d_1*d_3) \t\t\t# [K]\n",
- "M_13 = 2/((1/M_1)+(1/M_3)) \t\t\t# [gram/mole]\n",
- "\n",
- "T_star13 = T/d_13 \n",
- "a = 1.06036 \n",
- "b = 0.15610 \n",
- "c = 0.19300 \n",
- "d = 0.47635 \n",
- "e = 1.03587 \n",
- "f = 1.52996 \n",
- "g = 1.76474 \n",
- "h = 3.89411 \n",
- "ohm13 = ((a/T_star13**b)+(c/math.exp(d*T_star13))+(e/math.exp(f*T_star13))+(g/math.exp(h*T_star13))) \n",
- " \n",
- "\t# Substituting these values into the Wilke-Lee equation yields (equation 1.49)\n",
- "D_13 = ((10**-3*(3.03-(.98/math.sqrt(M_13)))*T**1.5)/(P*(math.sqrt(M_13))*(sigma_13**2)*ohm13)) \t\t\t\t\t# [square cm/s]\n",
- "\n",
- "#RESULT\n",
- "\n",
- "print\"The diffusivitiy of ammonia in hydrogen\",round(D_13,3),\"square cm/s\\n\" \n",
- "\n",
- "\t# Figure 1.5 shows the flux of ammonia (N_1) toward the catalyst surface, where \n",
- "\t# it is consumed by chemical reaction, and the fluxes of nitrogen (N_2) and hydrogen \t\t(N_3)\n",
- "\t# produced by the reaction migrating away from the same surface.\n",
- "\n",
- "\t# Therefore N_1 = N_2+N_3 \n",
- "\t# From equation 1.59\n",
- "\t# N_2 = -(0.5)*N_1 and N_3 = -(1.5)*N_1\n",
- "\n",
- "\t# Substituting in equation (1.58) we obtain\n",
- "D_1eff = (1+y_1)/((y_2+0.5*y_1)/D_12 + (y_3+1.5*y_1)/D_13) \t\t# [square cm/s]\n",
- "\n",
- "#RESULT\n",
- "\n",
- "print\"The effective diffusivity of ammonia in the gaseous mixture is\",round(D_1eff,3),\"square cm/s\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The diffusivitiy of ammonia in nitrogen 0.237 square cm/s\n",
- "The diffusivitiy of ammonia in hydrogen 0.728 square cm/s\n",
- "\n",
- "The effective diffusivity of ammonia in the gaseous mixture is 0.457 square cm/s\n"
- ]
- }
- ],
- "prompt_number": 9
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 1.12 Page number:34"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 1.12\n",
- "#Calculation of Effective Diffusivity in a Multicomponent Stagnant Gas Mixture\n",
- "\n",
- "#Variable declaration\n",
- "\t# ammonia-1 nitrogen-2 hydrogen-3\n",
- "T = 300 \t\t\t\t\t# [K]\n",
- "P = 1 \t\t\t\t\t\t# [bar]\n",
- "y_1 = 0.40 \n",
- "y_2 = 0.20 \n",
- "y_3 = 0.40 \n",
- "\n",
- "#CALCULATIONS\n",
- "\n",
- "\t# The binary diffusivities are the same as for Example 1.11.\n",
- "D_12 = 0.237 \t\t\t\t\t# [square cm/s]\n",
- "D_13 = 0.728 \t\t\t\t\t# [square cm/s]\n",
- "\n",
- "\t# mole fractions of nitrogen (2) and hydrogen (3) on an ammonia (1)-free base from \tequation (1.61)\n",
- "y_21 = y_2/(1-y_1) \n",
- "y_31 = y_3/(1-y_1) \n",
- "\t# Substituting in equation (1.60) gives us\n",
- "D_1eff = 1/((y_21/D_12)+(y_31/D_13)) \n",
- "print\"The effective diffusivity of ammonia in the gaseous mixture is\",round(D_1eff,3),\"square cm/s\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The effective diffusivity of ammonia in the gaseous mixture is 0.431 square cm/s\n"
- ]
- }
- ],
- "prompt_number": 10
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 1.13 Page number:36"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 1.13\n",
- "#Calculation of Effective Diffusivity of a Dilute Solute in a Homogeneous Mixture of Solvents\n",
- "\n",
- "#VARIABLE DECLARATION\n",
- "\n",
- "\t# acetic acid-1 water-2 ethyl alcohol-3\n",
- "T = 298 \t\t\t\t\t# [K]\n",
- "\t# The data required data for water at 298 K\n",
- "u_2 = 0.894 \t\t\t\t\t# [cP]\n",
- "V_c1 = 171 \t\t\t\t\t# [cubic cm/mole]\n",
- "\t# From equation 1.48\n",
- "V_b1 = 62.4 \t\t\t\t\t# [cubic cm/mole]\n",
- "\t# Substituting in equation (1.53)\n",
- "\t# the infinite dilution diffusion coefficient of acetic acid in water at 298 K\n",
- "E = (9.58/V_b1)-1.12 \n",
- "D_abo12 = (1.25*10**-8)*(((V_b1)**-.19)-0.292)*(T**1.52)*(u_2**E) # [square cm/s]\n",
- "\n",
- "import math\n",
- "\t# Data for acetic acid\n",
- "T_b1 = 390.4 \t\t\t\t\t# [K]\n",
- "T_c1 = 594.8 \t\t\t\t\t# [K]\n",
- "P_c1 = 57.9 \t\t\t\t\t# [bar]\n",
- "V_c1 = 171 \t\t\t\t\t# [cubic cm/mole]\n",
- "M_1 = 60.0 \t\t\t\t\t# [gram/mole]\n",
- "\n",
- "\t# Data for ethanol\n",
- "T_b3 = 351.4 \t\t\t\t\t# [K]\n",
- "T_c3 = 513.9 \t\t\t\t\t# [K]\n",
- "P_c3 = 61.4 \t\t\t\t\t# [bar]\n",
- "V_c3 = 167 \t\t\t\t\t# [cubic cm/mole]\n",
- "M_3 = 46.0 \t\t\t\t\t# [gram/mole]\n",
- "u_3 = 1.043 \t\t\t\t\t# [cP]\n",
- "\n",
- "\n",
- "#CALCULATION\n",
- "\n",
- "\t# Using the Hayduk and Minhas correlation for nonaqueous solutions\n",
- "\n",
- "\t# According to restriction 3 mentioned above, the molar volume of the acetic acid to be \tused in equation (1.54) should be\t\n",
- "V_b1 = V_b1*2 \t\t\t\t\t# [cubic cm/mole]\n",
- "\t# The molar volume of ethanol is calculated from equation (1.48)\n",
- "V_b3 = 60.9 \t\t\t\t\t# [cubic cm/mole]\n",
- "\n",
- "\n",
- "\t# For acetic acid (1)\n",
- "T_br1 = T_b1/T_c1 \t\t\t\t# [K]\n",
- "\t# Using equation 1.55 \n",
- "alpha_c1 = 0.9076*(1+((T_br1)*math.log(P_c1/1.013))/(1-T_br1)) \n",
- "sigma_c1 = (P_c1**(2.0/3.0))*(T_c1**(1.0/3.0))*(0.132*alpha_c1-0.278)*(1-T_br1)**(11.0/9.0) # \t\t\t\t\t\t\t\t\t\t\t[dyn/cm]\n",
- "\n",
- "\t# For ethanol (3)\n",
- "T_br3 = T_b3/T_c3 \t\t\t\t# [K]\n",
- "\t# Using equation 1.55 \n",
- "alpha_c3 = 0.9076*(1+((T_br3*math.log(P_c3/1.013))/(1-T_br3))) \n",
- "sigma_c3 = (P_c3**(2.0/3.0))*(T_c3**(1.0/3.0))*(0.132*alpha_c3-0.278)*(1-T_br3)**(11.0/9.0) # [dyn/cm]\n",
- "\n",
- "\t# Substituting in equation 1.54\n",
- "D_abo13 = (1.55*10**-8)*(V_b3**0.27)*(T**1.29)*(sigma_c3**0.125)/((V_b1**0.42)*(u_3**0.92)*(sigma_c1**0.105)) \n",
- "\n",
- "\t# The viscosity of a 40 wt% aqueous ethanol solution at 298 K is u_mix = 2.35 cP\n",
- "u_mix = 2.35 \t\t\t\t\t# [cP]\n",
- "\t# The solution composition must be changed from mass to molar fractions following a \t\t\tprocedure similar to that illustrated in Example 1.2\n",
- "\t# Accordingly, a 40 wt% aqueous ethanol solution converts to 20.7 mol%.\n",
- "\t# Therefore mole fraction of ethanol (x_3) and water (x_2) \n",
- "\n",
- "x_3 = 0.207 \n",
- "x_2 = 1-x_3 \n",
- "\t# Using equation 1.62\n",
- "D_1eff = ((x_2*D_abo12*(u_2**0.8))+(x_3*D_abo13*(u_3**0.8)))/(u_mix**0.8) \n",
- "\n",
- "#RESULT\n",
- "\n",
- "print\"The diffusion coefficient of acetic acid at very low concentrations diffusing into a mixed solvent containing 40.0 wt percent ethyl alcohol in water at a temperature of 298 K is\",round(D_1eff,7),\"cm^2/s\\n\\n\" \n",
- "\n",
- "\t# The experimental value reported by Perkins and Geankoplis (1969) is \n",
- "D_1exp = 5.71*10**-6 # [square cm/s]\n",
- "percent_error = ((D_1eff-D_1exp)/D_1exp)*100 # [%]\n",
- "\n",
- "\n",
- "print\"The error of the estimate is \",round(percent_error,1),\"%\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The diffusion coefficient of acetic acid at very low concentrations diffusing into a mixed solvent containing 40.0 wt percent ethyl alcohol in water at a temperature of 298 K is 5.9e-06 cm^2/s\n",
- "\n",
- "\n",
- "The error of the estimate is 3.2 %\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 1.14 Page number:39"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 1.14\n",
- "#Steady-State Equimolar Counterdiffusion\n",
- "\n",
- "\n",
- "#Variable declaration\n",
- "\t# Binary gaseous mixture of components A and B\n",
- "P = 1 \t\t\t\t\t\t # [bar]\n",
- "T = 300 \t\t\t # [K]\n",
- "R = 8.314 \t\t\t\t\t # [cubic m.Pa/mole.K]\n",
- "delta = 1 \t\t\t\t\t # [mm]\n",
- "y_A1 = 0.7 \n",
- "y_A2 = 0.2 \n",
- "D_AB = 0.1 \t\t\t\t\t # [square cm/s]\n",
- "\n",
- "\t# Using equation 1.72\n",
- "#CALCULATION\n",
- "\n",
- "N_A = (D_AB*10**-4)*(P*10**5)*(y_A1-y_A2)/(R*T*delta*10**-3) \n",
- "\n",
- "#RESULT\n",
- "\n",
- "print\"The molar flux of component A is\",round(N_A,1),\"mole/square m.s\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The molar flux of component A is 0.2 mole/square m.s\n"
- ]
- }
- ],
- "prompt_number": 12
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 1.15 Page number:41"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 1.15\n",
- "#Steady-State Diffusion of A Through Stagnant B\n",
- "\n",
- "#Variable declaration\n",
- "\t\t# Diffusion of A through stagnant B\n",
- "P_total = 1.0 \t\t\t\t\t\t# [bar]\n",
- "P_B1 = 0.8 \t\t\t\t\t\t# [bar]\n",
- "P_B2 = 0.3 \t\t\t\t\t\t# [bar]\n",
- "\n",
- "import math\n",
- "\n",
- "#Calculation\n",
- "\t# Using equation 1.83\n",
- "P_BM = (P_B2-P_B1)/(math.log(P_B2/P_B1)) \t\t# [bar]\n",
- "\t# using the result of Example 1.14, we have\n",
- "N_A = 0.2 \t\t\t\t\t\t# [mole/square m.s]\n",
- "N_A = N_A*P_total/P_BM \t\t\t\t\t# [moloe/square m.s]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The molar flux of component A is\",round(N_A,2),\"mole/square m.s\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The molar flux of component A is 0.39 mole/square m.s\n"
- ]
- }
- ],
- "prompt_number": 13
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 1.16 Page number:44"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 1.16\n",
- "#Production of Nickel Carbonyl: Steady-State, One-Dimensional Binary Flux Calculation\n",
- "import math\n",
- "#Variable declaration\n",
- "\t# Nickel Carbonyl-A carbon monoxide-B\n",
- "T = 323 \t\t\t\t\t# [K]\n",
- "P = 1 \t\t\t\t\t\t# [atm]\n",
- "R = 8.314 \t\t\t\t\t# [cubic m.Pa/mole.K]\n",
- "y_A1 = 1.0 \n",
- "y_A2 = 0.5 \n",
- "delta = 0.625 \t\t\t\t\t# [mm]\n",
- "D_AB = 20 \t\t\t\t\t# [square mm/s]\n",
- "\n",
- "#Calculations\n",
- "\n",
- "\n",
- "\t# The stoichiometry of the reaction determines the relation between the fluxes: from \t\t\tequation (1-59), N_B = - 4N_A and N_A + N_B = -3NA\n",
- "\t# Molar flux fraction si_A = N_A/(N_A+N_B) = N_A/(-3*N_A) = -1/3\n",
- "si_A = -1.0/3.0 \n",
- "\t# Using equation 1.78\n",
- "N_A = si_A*(D_AB*10**-6*P*10**5*math.log((si_A-y_A2)/(si_A-y_A1))/(R*T*delta*10**-3)) \n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The molar flux of component A is\",round(N_A,3),\"mole/square m.s\" \n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The molar flux of component A is 0.187 mole/square m.s\n"
- ]
- }
- ],
- "prompt_number": 14
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 1.19 Page number:54"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 1.19\n",
- "#Steady- State Molecular Diffusion in Liquids\n",
- "import math\n",
- "\n",
- "#Variable declaration\n",
- "# a-CuS04 b-H2O\n",
- "T = 273 \t\t\t\t\t\t# [K]\n",
- "delta = 0.01 \t\t\t\t\t\t# [mm]\n",
- "sol_ab = 24.3 \t\t\t\t\t\t# [gram/100 gram water]\n",
- "den_ab = 1140 \t\t\t\t\t\t# [kg/cubic m]\n",
- "D_ab = 3.6*10**-10 \t\t\t\t\t# [square m/s]\n",
- "den_b = 999.8 \t\t\t\t\t\t# [kg/cubic m]\n",
- "\n",
- "\n",
- "#Calcualtions\n",
- "\n",
- "\t# both fluxes are in the same direction therefore, they are both positive and relation \tis N_b = 5N_a (where N_b and N_a are molar fluxes of component 'a' and 'b') \n",
- "\t# From equation (1.76), si_a = 1/6 = 0.167\n",
- "si_a = 0.167 \n",
- "\t# Calculation of mole fraction of component 'a'\n",
- "\t# Basis: 100 gram H2O (b)\n",
- "M_a = 159.63 \t\t\t\t\t\t# [gram/mole]\n",
- "M_b = 18 \t\t\t\t\t\t# [gram/mole]\n",
- "M_c =249.71 \t\t\t\t\t\t# [here M_c is molecular mass of hydrated \t\t\t\t\t\t\t CuSO4, gram/mole]\n",
- "m_a = 24.3 \t\t\t\t\t\t# [gram]\n",
- "m_c = m_a*(M_a/M_c) \t\t\t\t\t# [here m_c is the mass of CuSO4 in 24.3 \t\t\t\t\t\t\tgram of crystal, gram]\n",
- "m_d = m_a-m_c \t\t\t\t\t\t# [here m_d is mass of hydration of water \t\t\t\t\t\t\tin the crystal, gram]\n",
- "m_b_total = 100+m_d \t\t\t\t\t# [total mass of water, gram]\n",
- "\n",
- "x_a1 = (m_c/M_a)/((m_c/M_a)+(m_b_total/M_b)) \n",
- "x_a2 = 0 \n",
- "\n",
- "\t# At point 1, the average molecular weight is\n",
- "M_1 = x_a1*M_a+(1-x_a1)*M_b \t\t\t\t# [gram/mole]\n",
- "\t# At point 2, the average molecular weight is\n",
- "M_2 = x_a2*M_a+(1-x_a2)*M_b\n",
- "\t# Molar density at point 1 and 2\n",
- "row_1 = den_ab/M_1 \t\t\t\t\t# [kmole/cubic m]\n",
- "row_2 = den_b/M_2\n",
- "row_avg = (row_1+row_2)/2 \t\t\t\t# [kmole/cubic m]\n",
- "\n",
- "\t# Using equation 1.96\n",
- "\n",
- "N_a = si_a*D_ab*row_avg*math.log((si_a-x_a2)/(si_a-x_a1))/(delta*10**-3) \t# [kmole/square \t\t\t\t\t\t\t\t\t\tm.s]\n",
- "rate = N_a*M_c*3600 \t\t\t\t\t# [kg/square m of crystal surface area \t\t\t\t\t\t\tper hour]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"the rate at which the crystal dissolves in solution is\",round(rate),\"kg/square m of crystal surface area per hour\" \n",
- " \n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "the rate at which the crystal dissolves in solution is 30.0 kg/square m of crystal surface area per hour\n"
- ]
- }
- ],
- "prompt_number": 15
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 1.20 Page number:58"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 1.20\n",
- "# Steady-State Molecular Diffusion in Porous Solid \n",
- "\n",
- "#Variable declaration\n",
- "\t# A-hydrogen B-ethane\n",
- "T = 373 \t\t\t\t\t# [K]\n",
- "P = 10 \t\t\t\t\t# [atm]\n",
- "d = 4000 \t\t\t\t\t# [Angstrom]\n",
- "e = 0.4 \t\t\t\t\t# [porosity]\n",
- "t = 2.5 \t\t\t\t\t# [tortuosity]\n",
- "D_AB = 0.86/P \t\t\t\t\t# [square cm/s]\n",
- "k = 1.3806*10**-23 \t\t\t\t# [J/K]\n",
- "import math\n",
- "\n",
- "#Calculation\n",
- "\n",
- "# Using data from Appendix B for hydrogen and ethane, and equation (1.45)\n",
- "sigma_A = 2.827 \t\t\t\t# [Angstrom]\n",
- "sigma_B = 4.443 \t\t\t\t# [Angstrom]\n",
- "sigma_AB = ((sigma_A+sigma_B)/2)*10**-10 \t# [m]\n",
- "\n",
- "lamda=k*T/(math.sqrt(2)*3.14*(sigma_AB**2)*P*1.01325*10**5) # [m]\n",
- "lamda=lamda*10**10 # [Angstrom]\n",
- "\t\t# From equation 1.101\n",
- "K_n = lamda/d \n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The value of a dimensionless ratio, Knudsen number is \",round(K_n,3) \n",
- "\t# If K_n is less than 0.05 then diffusion inside the pores occurs only by ordinary \t\tmolecular diffusion and equation 1.100 can be used to calculate D_ABeff\n",
- "D_ABeff = D_AB*e/t \n",
- "print\"The effective diffusivity of hydrogen in ethane is\",round(D_ABeff,3),\"square cm /s\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The value of a dimensionless ratio, Knudsen number is 0.022\n",
- "The effective diffusivity of hydrogen in ethane is 0.014 square cm /s\n"
- ]
- }
- ],
- "prompt_number": 16
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 1.21 Page number:60"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 1.21\n",
- "#Knudsen Diffusion in Porous Solid \n",
- "\n",
- "#Variable declaration\n",
- "\t# a-oxygen b-nitrogen\n",
- "T = 293 \t\t\t\t\t\t# [K]\n",
- "P = 0.1 \t\t\t\t\t\t# [atm]\n",
- "d = 0.1*10**-6 \t\t\t\t\t# [m]\n",
- "e = 0.305 \t\t\t\t\t \t# [porosity]\n",
- "t = 4.39 \t\t\t\t\t\t# [tortuosity]\n",
- "k = 1.3806*10**-23 \t\t\t\t\t# [J/K]\n",
- "l = 2*10**-3 \t\t\t\t\t\t# [m]\n",
- "R = 8.314 \t\t\t\t\t\t# [cubic m.Pa/mole.K]\n",
- "x_a1 = 0.8 \n",
- "x_a2 = 0.2 \n",
- "M_a = 32.0 \t\t\t\t\t\t# [gram/mole]\n",
- "M_b = 28.0 \t\t\t\t\t\t# [gram/mole]\n",
- "\n",
- "#Calculation\n",
- "\n",
- "import math\n",
- "\t# Using data from Appendix B for oxygen and nitrogen, and equation (1.45)\n",
- "sigma_a = 3.467 \t\t\t\t\t# [Angstrom]\n",
- "sigma_b = 3.798 \t\t\t\t\t# [Angstrom]\n",
- "sigma_AB = ((sigma_a+sigma_b)/2)*10**-10 \t\t# [m]\n",
- "\n",
- "lamda = k*T/(math.sqrt(2)*3.14*(sigma_AB**2)*P*1.01325*10**5) # [m]\n",
- "\t# From equation 1.101\n",
- "K_n = lamda/d \n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The value of a dimensionless ratio, Knudsen number is \",round(K_n,3) \n",
- "\t# If K_n is greater than 0.05 then transport inside the pores is mainly by Knudsen \t\t\tdiffusion\n",
- "\t# Using equation 1.103\n",
- "\n",
- "\n",
- "#Calculation\n",
- "\n",
- "D_Ka = (d/3)*(math.sqrt(8*R*T)/math.sqrt(3.14*M_a*10**-3)) # [square m/s]\n",
- "\n",
- "\t# Using equation 1.107\n",
- "D_Kaeff = D_Ka*e/t \t\t\t\t\t# [square m/s]\n",
- "\n",
- "p_a1 = (x_a1*P)*1.01325*10**5 \t\t\t\t# [Pa]\n",
- "p_a2 = (x_a2*P)*1.01325*10**5 \t\t\t\t# [Pa]\n",
- "\n",
- "\t# Using equation 1.108\n",
- "N_a = D_Kaeff*(p_a1-p_a2)/(R*T*l) \t\t\t# [mole/square m.s]\n",
- "\t# Now using the Graham\u2019s law of effusion for Knudsen diffusion\n",
- "\t# N_b/N_a = -math.sqrt(M_a/M_b) ,therefore\n",
- "N_b = -N_a*math.sqrt(M_a/M_b) \t\t\t\t# [mole/square m.s]\n",
- "\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The diffusion fluxes of both components oxygen and nitrogen are \",round(N_a,5),\"mole/square m.s and\",round(N_b,5),\"mole/square m.s respectively\\n\" \n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The value of a dimensionless ratio, Knudsen number is 6.813\n",
- "The diffusion fluxes of both components oxygen and nitrogen are 0.00127 mole/square m.s and -0.00136 mole/square m.s respectively\n",
- "\n"
- ]
- }
- ],
- "prompt_number": 17
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 1.22 Page number:61"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 1.22\n",
- "#2 Combined Molecular and Knudsen Diffusion in a Porous Solid \n",
- "\n",
- "#Variable declaration\n",
- "\t# a-oxygen b-nitrogen\n",
- "T = 293 \t\t\t\t\t\t# [K]\n",
- "P = 0.1 \t\t\t\t\t\t# [atm]\n",
- "d = 0.3*10**-6 \t\t\t\t\t# [m]\n",
- "e = 0.305 \t\t\t\t\t\t# [porosity]\n",
- "t = 4.39 \t\t\t\t\t\t# [tortuosity]\n",
- "k = 1.3806*10**-23 \t\t\t\t\t# [J/K]\n",
- "R = 8.314 \t\t\t\t\t\t# [cubic m.Pa/mole.K]\n",
- "l = 2*10**-3 \t\t\t\t\t\t# [m]\n",
- "D_ab = 2.01*10**-4 \t\t\t\t\t# [square m/s]\n",
- "y_a1 = 0.8 \n",
- "y_a2 = 0.2 \n",
- "\n",
- "\n",
- "#Calculations\n",
- "\n",
- "import math\n",
- "\t# Using data from Appendix B for oxygen and nitrogen, and equation (1.45)\n",
- "sigma_a = 3.467 \t\t\t\t\t# [Angstrom]\n",
- "sigma_b = 3.798 \t\t\t\t\t# [Angstrom]\n",
- "sigma_AB = ((sigma_a+sigma_b)/2)*10**-10 \t\t# [m]\n",
- "\n",
- "lamda = k*T/(math.sqrt(2)*3.14*(sigma_AB**2)*P*1.01325*10**5) # [m]\n",
- "\t# From equation 1.101\n",
- "K_n = lamda/d \n",
- "print\"The value of a dimensionless ratio,Knudsen number is \",round(K_n,2) \n",
- "\n",
- "\t# It means that both molecular and Knudsen diffusion are important and equation (1.109) \t\tmust be used to calculate N_a\n",
- "\t# From example 1.21 N_b/N_a = -1.069\n",
- "\t# Therefore si_a = 1/(1+(N_b/N_a))\n",
- "si_a = 1/(1+(-1.069)) \n",
- "\n",
- "\t# From equation 1.100\n",
- "D_abeff = D_ab*e/t \t\t\t\t\t\t# [square m/s]\n",
- "\n",
- "\t# From equation 1.103\n",
- "D_Ka = 0.440*10**-4\t\t\t\t\t\t# [square m/s]\n",
- "\n",
- "\t# Using equation 1.107\n",
- "D_Kaeff = D_Ka*e/t \t\t\t\t\t\t# [square m/s]\n",
- "\n",
- "Y_a = 1+(D_abeff/D_Kaeff) \n",
- "\n",
- "\t# Using equation 1.109 to calculate N_a\n",
- "N_a = (si_a*P*1.01325*10**5*D_abeff*math.log((si_a*Y_a-y_a2)/(si_a*Y_a-y_a1)))/(R*T*l) \n",
- "N_b = -1.069*N_a \n",
- "\n",
- "\n",
- "#RESULTS\n",
- "print\"The diffusion fluxes of both components oxygen and nitrogen are\",round(N_a,5),\"mole/square m.s and\",round(N_b,5),\"mole/square m.s respectively\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The value of a dimensionless ratio,Knudsen number is 2.27\n",
- "The diffusion fluxes of both components oxygen and nitrogen are 0.00311 mole/square m.s and -0.00332 mole/square m.s respectively\n"
- ]
- }
- ],
- "prompt_number": 18
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 1.23 Page number:62"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 1.23\n",
- "#Dextrin Diffusion in a Porous Membrane\n",
- "\n",
- "#Variable declaration\n",
- "\n",
- "\t# A-beta dextrin B-water\n",
- "T = 293 \t\t\t\t\t\t# [K]\n",
- "d = 88.8 \t\t\t\t\t\t# [Average pore diameter, Angstrom]\n",
- "d_mol = 17.96 \t\t\t\t\t\t# [Molecular diameter, Angstrom]\n",
- "e = 0.0233 \t\t\t\t\t\t# [porosity]\n",
- "t = 1.1 \t\t\t\t\t\t# [tortuosity]\n",
- "D_AB = 3.22*10**-6 \t\t\t\t\t# [square cm/s]\n",
- "\n",
- "#Calculation\n",
- "\n",
- "\t# Using equation 1.111 to calculate restrictive factor\n",
- "K_r = (1-(d_mol/d))**4\n",
- "\n",
- "\t# Using equation 1.110 to calculate effective diffusivity\n",
- "D_ABeff = e*D_AB*K_r/t \t\t\t\t# [square cm/s]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The effective diffusivity of beta-dextrin at 298 K is\",round(D_ABeff,10),\"square cm/s\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The effective diffusivity of beta-dextrin at 298 K is 2.76e-08 square cm/s\n"
- ]
- }
- ],
- "prompt_number": 19
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 1.24 Page number:63"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 1.24\n",
- "#Hydrodynamic Flow in a Porous Diaphragm\n",
- "\n",
- "#Variable declaration\n",
- "\t# a-nitrogen\n",
- "P_atm = 1.01325*10**5 \t\t\t\t\t # [Pa]\n",
- "T = 300 \t \t\t\t\t # [K]\n",
- "P_2 = 10130 \t\t\t\t\t\t # [Pa]\n",
- "P_1 = 500+P_2 \t\t\t\t\t\t # [Pa]\n",
- "d = 0.01*10**-2 \t\t\t\t\t# [average pore diameter, m]\n",
- "u = 180 \t\t\t\t\t\t# [micro Poise]\n",
- "u = 180*10**-6*10**-1 \t\t\t\t\t# [Pa.s] \n",
- "l = 25.4*10**-3 \t\t\t\t\t# [m]\n",
- "v = 0.05 \t\t\t\t\t\t# [volumetric flow rate, cubic m/square \t\t\t\t\t\t\tm.s]\n",
- "R = 8.314 \t\t\t\t\t\t# [cubic m.Pa/mole.K]\n",
- "\n",
- "\n",
- "#Calculations\n",
- "\n",
- "\t# Solution (a)\n",
- "\n",
- "P_avg = (P_1+P_2)/2 \t\t\t\t\t# [Pa]\n",
- "\t# The mean free path for nitrogen is from equation (1.102)\n",
- "lamda = 0.622*10**-6 \t\t\t\t\t# [m]\n",
- "K_n = lamda/d \n",
- "\t# Therefore, Knudsen diffusion will not occur and all the flow observed is of a \thydrodynamic nature.\n",
- "\n",
- "\t# From the ideal gas law, the nitrogen flux corresponding to the volumetric flow rate of \t0.05 m3/m2-s at 300 K and 1 atm\n",
- " \n",
- "N_a = P_atm*v/(R*T) \t\t\t\t\t# [mole/square m.s]\n",
- "\t# Using equation 1.113\n",
- "B_o = u*R*T*N_a*l/(P_avg*(P_1-P_2)) \t\t\t# [square m]\n",
- "\n",
- "#RESULT\n",
- "\n",
- "print\"The value of the viscous flow parameter is\",round(B_o,13),\"square m\\n\\n\" \n",
- "\n",
- "\t#Illustration 1.24 (b) - Page:64\n",
- "\t# Solution (b)\t\n",
- "\n",
- "#Calculation\n",
- "\n",
- "T1 = 393 \t\t\t\t\t\t# [K]\n",
- "u = 220 \t\t\t\t\t\t# [micro Poise]\n",
- "u = 220*10**-6*10**-1 \t\t\t\t\t# [Pa.s]\n",
- "\t# Substituting in equation (1.113) the new values of temperature and viscosity and the \tvalue of B_o, obtained in part (a) while maintaining the pressure conditi# ons unchanged, \twe get N_a\n",
- "N_a1 = B_o*P_avg*(P_1-P_2)/(l*T*u*R) \t\t\t# [mole/square m.s]\n",
- "v1 = N_a1*R*T/P_atm \t\t\t\t\t# [cubic m(measured at 300 K and 1 atm)/ \t\t\t\t\t\t\tsquare m.s]\t\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The nitrogen flow to be expected at 393 K with the same pressure difference is \",round(v1,3),\"cubic m/sqm.s (measured at 300 K and 1 atm)\" \n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The value of the viscous flow parameter is 4.463e-10 square m\n",
- "\n",
- "\n",
- "The nitrogen flow to be expected at 393 K with the same pressure difference is 0.041 cubic m/sqm.s (measured at 300 K and 1 atm)\n"
- ]
- }
- ],
- "prompt_number": 20
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/Chapter 2.ipynb b/Beginning_C++_through_Game_Programming/Chapter 2.ipynb
deleted file mode 100755
index f981ce8e..00000000
--- a/Beginning_C++_through_Game_Programming/Chapter 2.ipynb
+++ /dev/null
@@ -1,1156 +0,0 @@
-{
- "metadata": {
- "name": ""
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 2:. Convective Mass Transfer"
- ]
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 2.1,Page number94"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 2.1\n",
- "#Mass-Transfer Coefficients in a Blood Oxygenator\n",
- "\n",
- "#Variable declaration\n",
- "\n",
- "\t# a-oxygen b-stagnant water\n",
- "T = 310 \t\t\t\t\t# [K]\n",
- "\t# Since the solubility of oxygen in water at 310 K is extremely low, we are dealing with \tdilute solutions\n",
- "k_L = 3.3*10**-5 \t\t\t\t# [coefficient based on the oxygen concentration \t\t\t\t\t\tdifference in the water, m/s]\n",
- "row = 993 \t\t\t\t\t# [kg/cubic m]\n",
- "M_b = 18 \t\t\t\t\t# [gram/mole]\n",
- "\n",
- "\n",
- "#Calculation\n",
- " \n",
- "\t# Since we are dealing with very dilute solutions\n",
- "\t# Therefore, c = (row/M_avg) = row/M_b\n",
- "c = row/M_b \t\t\t\t\t# [kmole/cubic m]\n",
- "\t# Using equation 2.10\n",
- "k_x = k_L*c \t\t\t\t\t# [kmole/square m.s]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The mass-transfer coefficient based on the mole fraction of oxygen in the liquid is\",round(k_x,5),\" kmole/square m.s\" \n",
- "\n",
- " "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The mass-transfer coefficient based on the mole fraction of oxygen in the liquid is 0.00182 kmole/square m.s\n"
- ]
- }
- ],
- "prompt_number": 8
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 2.2,Page number:95"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 2.2\n",
- "#Mass-Transfer Coefficient in a Gas Absorber\n",
- "\n",
- "#Variable declaration\n",
- "\n",
- "\t# a-ammonia b-air\n",
- "T = 300 \t\t\t\t\t# [K]\n",
- "P = 1 \t\t\t\t\t\t# [atm]\n",
- "y_a1 = 0.8 \t\t\t\t\t# [ammonia mole fraction in the bulk of the gas \t\t\t\t\t\t\tphase]\n",
- "y_a2 = 0.732 \t\t\t\t\t# [ammonia gas-phase mole fraction on interface]\n",
- "N_a = 4.3*10**-4 \t\t\t\t# [ammonia flux, kmole/square m.s]\n",
- "\n",
- "#Calculations\n",
- "\n",
- "import math\n",
- "\t# Using equation 2.2\n",
- "F_g = N_a/math.log10((1-y_a2)/(1-y_a1)) \t\t# [kmole/square m.s]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The mass-transfer coefficient in the gas phase at that point where flux is 4.3*10**-4 is\",round(F_g,5),\" kmole/square m.s\"\n",
- "print\"\\n\\nNOTE:Calculation mistake in book:\\nAnswer written as 1.47*10^-4,Actually,,...it is 1.47*10^-3.Please REDO last calculation manually to check\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The mass-transfer coefficient in the gas phase at that point where flux is 4.3*10**-4 is 0.00338 kmole/square m.s\n",
- "\n",
- "\n",
- "NOTE:Calculation mistake in book:\n",
- "Answer written as 1.47*10^-4,Actually,,...it is 1.47*10^-3.Please REDO last calculation manually to check\n"
- ]
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 2.3,Page number:96"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 2.3\n",
- "#Mass-Transfer Coefficient in a Packed-Bed Distillation Column\n",
- "\n",
- "#Variable declaration\n",
- "\n",
- "\t\t# a-methanol b-water\n",
- "P = 101.3 \t\t\t\t\t\t# [kPa]\n",
- "y_a1 = 0.707 \t\t\t\t\t\t# [mole fraction at interface]\n",
- "y_a2 = 0.656 \t\t\t\t\t\t# [mole fraction at bulk of the gas]\n",
- "k_g = 1.62*10**-5 \t\t\t\t\t# [mass-transfer coefficient at a point \t\t\t\t\t\t\t in the column, kmole/square m.s.kPa]\n",
- "#Calculations\n",
- "\n",
- "\t# Using equation 2.14\n",
- "k_y = k_g*P \t\t\t\t\t\t# [kmole/square m.s]\n",
- "\t# Using equation 2.12\n",
- "N_a = k_y*(y_a1-y_a2) \t\t\t\t\t# [kmole/square m.s]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The methanol flux at the point of given mass transfer coefficient is\",round(N_a,7),\"kmole/square m.s\" \n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The methanol flux at the point of given mass transfer coefficient is 8.37e-05 kmole/square m.s\n"
- ]
- }
- ],
- "prompt_number": 10
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 2.4,Page number:99"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 2.4\n",
- "# Mass Transfer into a Dilute Stream Flowing Under Forced Convection in a Circular Conduit\n",
- "\n",
- "n = 6 # [number of variables]\n",
- "\n",
- "#Calculations\n",
- "\n",
- "from scipy.optimize import fsolve\n",
- "from numpy import *\n",
- "import math\n",
- "# To determine the number of dimensionless parameters to be formed, we must know the rank, r, of the dimensional matrix.\n",
- "# The dimensional matrix is \n",
- "DM =matrix([[0,0,1,1,0,0],[1,1,-3,-1,2,1],[-1,-1,0,0,-1,-1]]) \n",
- "rk= linalg.matrix_rank(DM)\n",
- "print\"Rank of matrix is \",rk \n",
- "\n",
- "#The numbers in the table represent the exponent of M, L, and t in the dimensional expression of each of the six variables involved. For example, the dimensional expression of p is M/Lt hence the exponents are 1, -1, and -1\n",
- "\n",
- "# From equation 2.16\n",
- "i = n-rk # [number of dimensional groups]\n",
- "# Let the dimensional groups are pi1, pi2 and pi3\n",
- "# Therefore pi1 = (D_AB)**a*(row)**b*(D)**c*kc\n",
- "# pi2 = (D_AB)**d*(row)**e*(D)**f*v\n",
- "# pi3 = (D_AB)**g*(row)**h*(D)**i*u\n",
- "\n",
- "# Solving for pi1\n",
- "# M**0*L**0*t**0 = 1 = (L**2/t)**a*(M/L**3)**b*(L)**c*(L/t)\n",
- "\n",
- "# Solution of simultaneous equation\n",
- "def F(e):\n",
- " f1 = 2*e[0]-3*e[1]+e[2]+1 \n",
- " f2 = -e[0]-1 \n",
- " f3 = -e[1] \n",
- " return(f1,f2,f3)\n",
- "\n",
- "\n",
- "# Initial guess:\n",
- "e = [0.1,0.8,0.5] \n",
- "y = fsolve(F,e) \n",
- "a = y[0] \n",
- "b = y[1] \n",
- "c = y[2] \n",
- "print\"The coefficients of pi1 are\",a,round(b),c \n",
- "# Similarly the coefficients of pi2 and pi3 are calculated\n",
- "# Therefore we get pi1 = kc*D/D_AB = Sh i.e. Sherwood Number\n",
- "# pi2 = v*D/D_AB = P_ed i.e. Peclet Number\n",
- "# pi3 = u/(row*D_AB) = Sc i.e. Schmidt Number\n",
- "\n",
- "# Dividing pi2 by pi3 gives\n",
- "# pi2/pi3 = D*v*row/u = Re i.e. Renoylds number\n",
- "\n",
- "print\"The result of the dimensional analysis of forced-convection mass transfer in a circular conduit indicates that a correlating relation could be of the form\\n Sh = function(Re,Sc)\\n which is analogous to the heat transfer correlation \\n Nu = function(Re,Pr)\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Rank of matrix is 3\n",
- "The coefficients of pi1 are -1.0 0.0 1.0\n",
- "The result of the dimensional analysis of forced-convection mass transfer in a circular conduit indicates that a correlating relation could be of the form\n",
- " Sh = function(Re,Sc)\n",
- " which is analogous to the heat transfer correlation \n",
- " Nu = function(Re,Pr)\n"
- ]
- }
- ],
- "prompt_number": 11
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 2.6,Page number:111"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 2.6\n",
- "#Mass Transfer to Fluid Flow Normal to a Cylinder\n",
- "\n",
- "#Variable declaration\n",
- "\t# a-UF6 b-air\n",
- "M_a = 352 \t\t\t\t\t# [molecular weight of UF6, gram/mole]\n",
- "M_b = 29 \t\t\t\t\t# [gram/mole]\n",
- "d = 0.01 \t\t\t\t\t# [diameter, m]\n",
- "x = 0.1 \t\t\t\t\t# [length exposed to air stream, m]\n",
- "v = 1 \t\t\t\t\t\t# [m/s]\n",
- "Ts = 303 \t\t\t\t\t# [surface temperature of solid, K]\n",
- "P_a = 27 \t\t\t\t\t# [vapor pressure of UF6, kPa]\n",
- "Tb = 325 \t\t\t\t\t# [bulk temperature of solid ,K]\n",
- "P = 101.3 \t\t\t\t\t# [kPa]\n",
- "R = 8.314 \t\t\t\t\t# [cubic m.Pa/mole.K]\n",
- "import math\n",
- "\n",
- "y_a1 = P_a/P \t\t\t\t\t# [mole fraction at point 1]\n",
- "y_a2 = 0 \t\t\t\t\t# [mole fraction at point 2]\n",
- "\n",
- "\t# Along the mass-transfer path-cylinder surface (point 1) to bulk air (point 2)\n",
- "Tavg = (Ts+Tb)/2 \t\t\t\t# [K]\n",
- "\n",
- "\t# At point 1, the gas is saturated with UF6 vapor, while at point 2 the gas is virtually \tfree of UF6\n",
- "\t# Therefore\n",
- "Pavg = (P_a+0)/2 \t\t\t\t# [average partial pressure, kPa]\n",
- "y_a = Pavg/P \t\t\t\t\t# [mole fraction of UF6]\n",
- "\n",
- "Mavg = M_a*y_a+M_b*(1-y_a) \t\t\t# [gram/mole]\n",
- "row_avg = P*Mavg/(R*Tavg) \t\t\t# [kg/cubic m]\n",
- "\n",
- "\t# Parameter for c-O2, d-N2 and a-UF6\n",
- "yi_c = 0.182 \n",
- "yi_d = 0.685 \n",
- "yi_a = 0.133 \n",
- "Tc_c = 154.6 \t\t\t\t# [K]\n",
- "Tc_d = 126.2 \t\t\t\t\t# [K]\n",
- "Tc_a = 505.8 \t\t\t\t\t# [K]\n",
- "Pc_c = 50.4 \t\t\t\t\t# [bar]\n",
- "Pc_d = 33.9 \t\t\t\t\t# [bar] \n",
- "Pc_a = 46.6 \t\t\t\t\t# [bar]\n",
- "M_c = 32 \t\t\t\t# [gram/mole]\n",
- "M_d = 28 \t\t\t\t\t# [gram/mole] \n",
- "M_a = 352 \t\t\t\t\t# [gram/mole]\n",
- "V_c = 73.4 \t\t\t\t# [cubic cm/mole]\n",
- "V_d = 89.8 \t\t\t\t\t# [cubic cm/mole]\n",
- "V_a = 250 \t\t\t\t\t# [cubic cm/mole]\n",
- "Z_c = 0.288 \n",
- "Z_d = 0.290 \n",
- "Z_a = 0.277 \n",
- "\n",
- "#Calculations\n",
- "\n",
- "\n",
- "\t# From equation 2.52 and 2.53\n",
- "Tcm = yi_c*Tc_c+yi_d*Tc_d+yi_a*Tc_a \t\t# [K]\n",
- "Pcm = 10**6*R*Tcm*(yi_c*Z_c+yi_d*Z_d+yi_a*Z_a)/((yi_c*V_c+yi_d*V_d+yi_a*V_a)*100000) \t# [bar]\n",
- "M_avg = yi_c*M_c+yi_d*M_d+yi_a*M_a \t\t# [gram/mole]\n",
- "\n",
- "\t# From equation 2.50\n",
- "Em = 0.176*(Tcm/(M_avg**3*Pcm**4))**(1.0/6.0) \t# [uP]**-1\n",
- "\n",
- "\t# From equation 2.51\n",
- "Trm = Tavg/Tcm \n",
- "f_Trm = (0.807*Trm**0.618)-(0.357*math.exp(-0.449*Trm))+(0.340*math.exp(-4.058*Trm))+0.018 \n",
- "\t# From equation 2.49 \n",
- "u = f_Trm/Em \t\t\t\t\t\t# [uP]\n",
- "u = u*10**-7 \t\t\t\t\t\t# [viscosity, kg/m.s]\n",
- "\n",
- "Re = d*v*row_avg/u \t\t\t\t\t# [Renoylds number]\n",
- "\n",
- "\t\t# Diffusivity of UF6 vapors in air at 314 K and 1 atm from equation 1.49\n",
- "D_ab = 0.0904 \t\t\t\t\t\t# [square cm/s]\n",
- "\n",
- "Sc = u/(row_avg*D_ab*10**-4) \t\t\t\t# [Schmidt number]\n",
- "\n",
- "Sh_avg = 0.43 + 0.532*Re**0.5*Sc**0.31 \t\t# [Sherwood number]\n",
- "\t\t# From equation 1.7\n",
- "c = P/(R*Tavg) \t\t\t\t\t# [kmole/cubic m]\n",
- "\t\t# From Table 2.1 \n",
- "F_av = Sh_avg*D_ab*c*10**-4/d \t\t\t\t# [kmole/square m.s]\n",
- "\n",
- "\t\t# From equation 2.2\n",
- "N_avg = F_av*math.log((1-y_a2)/(1-y_a1)) \t\t# [kmole/square m.s]\n",
- "S = 2*math.pi*d**2/4 +math.pi*d*x \t\t\t# [total surface area of the cylinder, \t\t\t\t\t\t\tsquare m]\n",
- "\n",
- "w_a = N_avg*S*M_a \t\t\t\t\t# [rate of sublimation of the solid, \t\t\t\t\t\t\tkg/s] \n",
- "\n",
- "#Result\n",
- "print\"Rate of sublimation of a cylinder of UF6 is\",round(w_a,5),\"kg/s\\n\\n\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Rate of sublimation of a cylinder of UF6 is 0.00023 kg/s\n",
- "\n",
- "\n"
- ]
- }
- ],
- "prompt_number": 12
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 2.7,Page number:116"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 2.7\n",
- "# The Chilton-Colburn Analogy\n",
- "import math\n",
- "#Variable declaration\n",
- "\n",
- "\t# a-benzene b-nitrogen\n",
- "T = 300 \t\t\t\t\t# [K]\n",
- "P = 101.3 \t\t\t\t\t# [kPa]\n",
- "v =10 \t\t\t\t\t\t# [m/s]\n",
- "R = 8.314 \t\t\t\t\t# [cubic m.Pa/mole.K]\n",
- "\n",
- "\n",
- "n = -0.5 \n",
- "\t# Data on the properties of C02 at 300 K and 1 bar\n",
- "u = 1.5*10**-5 \t\t\t\t# [viscosity, P]\n",
- "Pr = 0.77 \t\t\t\t\t# [Prandtl number]\n",
- "Cp = 853 \t\t\t\t\t# [J/kg.K]\n",
- "\t# Therefore\n",
- "\t# b = 5.086*l**0.5\n",
- "\t# j_D = j_H = f(Re) = 5.086*(l**0.5)*Re**-0.5\n",
- "\t# From Table 2.1\n",
- "\t# F = j_D*c*v/Sc**(2/3) = 5.086*(l**0.5)*c*v/(Re**0.5*Sc**(2/3)) = \t\t5.086*(row*v*u)**0.5/(Mavg*Sc**(2.0/3.0))\n",
- "\n",
- "#Calculations\n",
- "\n",
- "\t# Vapor pressure of benzene\n",
- "P_a = math.exp(15.9008-(2788.51/(T-52.36))) \t# [mm of Hg]\n",
- "P_a = P_a*101.3/760 \t\t\t\t\t# [kPa]\n",
- "\n",
- "\t# Parameter for a-benzene, b-nitrogen \n",
- "yi_a = 0.07 \n",
- "yi_b = 0.93 \n",
- "Tc_a = 562.2 \n",
- "Tc_b = 126.2 \t\t\t\t\t\t# [K]\n",
- "Pc_a = 48.9 \n",
- "Pc_b = 33.9 \t\t\t\t\t\t# [bar]\n",
- "M_a = 78.1 \n",
- "M_b = 28 \t\t\t\t\t\t# [gram/mole]\n",
- "V_a = 259 \n",
- "V_b = 89.8 \t\t\t\t\t\t# [cubic cm/mole]\n",
- "Z_a = 0.271 \n",
- "Z_b = 0.290 \n",
- "sigma_a = 5.349 \n",
- "sigma_b = 3.798 \t\t\t\t\t# [Angstrom]\n",
- "ek_a = 412.3 \n",
- "ek_b = 71.4 \t\t\t\t\t\t# [E/k, K]\n",
- "\n",
- "\n",
- "\t# From equation 2.52 and 2.53\n",
- "Tcm = yi_b*Tc_b+yi_a*Tc_a \t\t\t\t# [K]\n",
- "Pcm = 10**6*R*Tcm*(yi_b*Z_b+yi_a*Z_a)/((yi_b*V_b+yi_a*V_a)*100000) \t # [bar]\n",
- "M_avg = yi_b*M_b+yi_a*M_a \t\t\t\t\t\t# [kg/kmole]\n",
- "\n",
- "#RESULT\n",
- "\n",
- "print\"Average molecular weight is\",round(M_avg,1),\"kg/kmole\" \n",
- "\n",
- "row = P*M_avg/(R*T) \t\t\t\t\t\t\t# [kg/cubic m]\n",
- "\n",
- "#RESULT\n",
- "\n",
- "print\"Density of mixture is\",round(row,2),\"kg/cubic\"\n",
- "\t# From equation 2.50\n",
- "Em = 0.176*(Tcm/(M_avg**3*Pcm**4))**(1.0/6.0) \t\t\t# [uP]**-1\n",
- "\n",
- "\t# From equation 2.51\n",
- "Trm = T/Tcm \n",
- "f_Trm = (0.807*Trm**0.618)-(0.357*math.exp(-0.449*Trm))+(0.340*math.exp(-4.058*Trm))+0.018 \n",
- "\t# From equation 2.49 \n",
- "u = f_Trm/Em \t\t\t\t\t\t\t\t# [uP]\n",
- "u = u*10**-7 \t\t\t\t\t\t\t\t# [viscosity, kg/m.s]\n",
- "print\"Average viscosity of mixture is \",round(u,7),\"kg/m.s\\n\\n\" \n",
- "\n",
- "\t# Calculating diffusivity of benzene using equation 1.49\n",
- "D_ab = 0.0986 \t\t\t\t\t\t\t\t# [square cm/s]\n",
- "Sc = u/(row*D_ab*10**-4) \t\t\t\t\t\t# [Schmidt number]\n",
- "\n",
- "F = 5.086*(row*v*u)**0.5/(M_avg*Sc**(2.0/3.0)) \t\t\t# [kmole/square m.s]\n",
- "\n",
- "\n",
- "#RESULT\n",
- "\n",
- "print\"The required mass transfer coefficient is\",round(F,5),\"kmole/square m.s\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Average molecular weight is 31.5 kg/kmole\n",
- "Density of mixture is 1.28 kg/cubic\n",
- "Average viscosity of mixture is 1.64e-05 kg/m.s\n",
- "\n",
- "\n",
- "The required mass transfer coefficient is 0.00196 kmole/square m.s\n"
- ]
- }
- ],
- "prompt_number": 13
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 2.8,Page number:120"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 2.8\n",
- "#Benzene Evaporation Along a Vertical Flat Plate\n",
- "\n",
- "import math\n",
- "#Variable declaration\n",
- "\t# a-liquid benzene b-nitrogen\n",
- "T = 300 \t\t\t\t\t\t# [K]\n",
- "l = 3 \t\t\t\t\t\t\t# [length of vertical plate, m]\n",
- "b = 1.5 \t\t\t\t\t\t# [width of vertical plate, m]\n",
- "P = 101.3 \t\t\t\t\t\t# [kPa]\n",
- "v = 5 \t\t\t\t\t\t\t# [velocity across the width of plate, \t\t\t\t\t\t\tm/s]\n",
- "row_a = 0.88 \t\t\t\t\t\t# [gram/cubic cm]\n",
- "\n",
- "\n",
- "y_a1 = 0.139 \t\t\t\t\t\t# [mole fraction of benzene at inner \t\t\t\t\t\t\tedge]\n",
- "y_a2 = 0 \n",
- "\n",
- "\t# The film conditions, and average properties, are identical to those in Example 2.7, \tonly the geometry is different\n",
- "\t# Therefore\n",
- "M_avg = 31.4 \t\t\t\t\t\t# [kg/kmole]\n",
- "row = 1.2 \t\t\t\t\t\t# [kg/cubic m]\n",
- "u = 161*10**-7 \t\t\t\t\t# [kg/m.s]\n",
- "D_ab = 0.0986 \t\t \t\t\t\t# [square cm/s]\n",
- "Sc = 1.3 \t\t\t\t\t\t# [Schmidt Number]\n",
- "Re = row*v*b/u \t\t\t\t\t# [Renoylds Number]\n",
- "\n",
- "if Re > 4000:\n",
- " print\"The flow across the plate is turbulent\\n\" \n",
- "elif Re<2000:\n",
- " print\"The flow across the plate is laminar\\n\" \n",
- "\t#Using equation 2.57\n",
- "Sh_l = 0.036*Re**0.8*Sc**(1.0/3.0) \n",
- "\n",
- "\t# Nitrogen (component B) does not react with benzene (component A), neither dissolves in \t\tthe liquid therefore, NB = 0 and siA = 1. The F-form of the mass-transfer coefficient \t\t\tshould be used \n",
- "F = Sh_l*1.26*D_ab*10**-4/(M_avg*b) \t\t\t# [kmole/square m.s]\n",
- "N_a = F*math.log((1-y_a2)/(1-y_a1)) \t\t\t# [kmole/square m.s]\n",
- "\n",
- "\t# The total mass rate of evaporation over the surface of the plate\n",
- "S = 1.5*3 \t\t\t\t\t\t# [square m]\n",
- "M_a = 78.1 \t\t\t\t\t\t# [gram/mole]\n",
- "wa = N_a*S*M_a*60*1000 \t\t\t\t# [gram/min]\n",
- "\n",
- "V = wa/row_a \t\t\t\t\t\t# [volumetric flow rate, ml/min]\n",
- "\n",
- "print\"Liquid benzene should be supplied at the top of the plate at the rate \",round(V),\"ml/min\\nso that evaporation will just prevent it from reaching the bottom of the plate.\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The flow across the plate is turbulent\n",
- "\n",
- "Liquid benzene should be supplied at the top of the plate at the rate 1473.0 ml/min\n",
- "so that evaporation will just prevent it from reaching the bottom of the plate.\n"
- ]
- }
- ],
- "prompt_number": 14
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 2.9,Page number:123"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 2.9\n",
- "#Evaporation of a Drop of Water Falling in Air\n",
- "\n",
- "#Variable declaration\n",
- "\t# a-water b-air\n",
- "dp1 = 10**-3 \t\t\t\t\t# [diameter of spherical drop of water, m]\n",
- "Tair = 323 \t\t\t\t\t# [K]\n",
- "P = 101.3 \t\t\t\t\t# [kPa]\n",
- "Twater = 293 \t\t\t\t\t# [K]\n",
- "R = 8.314 \t\t\t\t\t# [cubic m.Pa/mole.K]\n",
- "M_a = 18.0 \t\t\t\t\t# [gram/mole]\n",
- "M_b = 29.0 \t\t\t\t\t# [gram/mole]\n",
- "import math\n",
- "\n",
- "\n",
- "#Calculation\n",
- "\n",
- "dp2 = (1.0/2.0)**(1.0/3.0)*dp1 \t\t# [m]\n",
- "dp = (dp1+dp2)/2 \t\t\t\t# [m]\n",
- "\n",
- "row_p = 995 \t\t\t\t\t# [density of water, kg/cubic m]\n",
- "row1b = 1.094 \t\t\t\t\t# [density of air, kg/cubic m]\n",
- "u = 1.95*10**-5 \t\t\t\t# [kg/m.s]\n",
- "row_pr = row_p-row1b \t\t\t\t# [kg/cubic m]\n",
- "g = 9.8 \t\t\t\t\t# [accleration due to gravity, square m/s]\n",
- "\t# Combining equation 2.68 and 2.69\n",
- "Ga = 4*dp**3*row1b*row_pr*g/(3*u**2) \t\t# [Galileo Number]\n",
- "\n",
- "\t# Relationship between Re and Cd\n",
- "\t# Re/Cd = Re**3/Ga = 3*row**2*vt**3/(4*g*u*row_pr)\n",
- "\n",
- "\t# The following correlation is used to relate Re/Cd, to Ga\n",
- "\t# ln(Re/Cd)**(1/3) = -3.194 + 2.153*ln(Ga)**(1/3) - 0.238*(ln(Ga)**(1/3))**2 + \t0.01068*(ln(Ga)**(1/3))**3\n",
- "\t# Therefore let A = (Re/Cd)\n",
- "A = math.exp(-3.194 + 2.153*math.log(Ga**(1.0/3.0)) - 0.238*(math.log(Ga**(1.0/3.0)))**2 + 0.01068*(math.log(Ga**(1.0/3.0)))**3) \n",
- "\n",
- "\t# Therefore 'vt' will be\n",
- "vt = A*(4*g*row_pr*u/(3*row1b**2))**(1.0/3.0) \t# [Terminal velocity of particle, m/s]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"Terminal velocity of particle is\",round(vt,2),\"m/s\" \n",
- "\n",
- "\n",
- "#Calculation\n",
- "\n",
- "P_w = 2.34 \t\t\t\t\t# [vapor pressure of water, kPa]\n",
- "y_w = P_w/P \t\t\t\t\t# [mole fraction of water at the inner edge of \t\t\t\t\t\tthe gas film]\n",
- "M_avg = 18*y_w+29*(1-y_w) \t\t\t# [gram/mole]\n",
- "\n",
- "row2b = P*M_avg/(R*Twater) \t\t\t# [kg/cubic.m]\n",
- "delta_row = row2b - row1b \t\t\t# [kg/cubic.m]\n",
- "\n",
- "Tavg = (Tair+Twater)/2 \t\t\t# [K]\n",
- "\t\t# At Temperature equal to Tavg density and viscosity are\n",
- "row3 = 1.14 \t\t\t\t\t# [kg/cubic.m]\n",
- "u1 = 1.92*10**-5 \t\t\t\t# [kg/m.s]\n",
- "\n",
- "Grd = g*row3*delta_row*(dp**3)/(u1**2) \n",
- "\n",
- "\t\t# Diffusivity of water at Tavg and 1 atm is\n",
- "D_ab = 0.242*10**-4 \t\t\t\t# [square m/s]\n",
- "Sc = u1/(row3*D_ab) \t\t\t\t# [Schmidt Number]\n",
- "Re = dp*row3*vt/u1 \t\t\t\t# [Renoylds Number]\n",
- "\t\n",
- "\t# From equation 2.65 Re is greater than 0.4*Grd**0.5*Sc**(-1/6)\n",
- "\t# Therfore equation 2.64 can be used to calculate mass transfer coefficient\n",
- "\n",
- "Sh = 2+0.552*(Re**0.5)*Sc**(1.0/3.0) \t\t# [Sherwood Number]\n",
- "\t# From Table 2.1\n",
- "\t# Sh = kc*P_bm*dp/(P*D_ab), since P_bm is almost equal to P\n",
- "\t# Therefore \n",
- "\t# Sh = kc*dp/D_ab \n",
- "kc = Sh*D_ab/dp \t\t\t\t# [m/s]\n",
- "\n",
- "ca2 = 0 \t\t\t\t\t# [dry air concentration]\n",
- "ca1 = P_w/(R*Twater) \t\t\t\t# [interface concentration, kmole/cubic.m]\n",
- "\t# Average rate of evaporation \n",
- "wa = math.pi*dp**2*M_a*kc*(ca1-ca2)*1000 \t# [g/s]\n",
- "\n",
- "\t# Amount of water evaporated\n",
- "m = row_p*math.pi*dp1**3/12*1000 \t\t# [g]\n",
- "\t# Time necessary to reduce the volume by 50%\n",
- "t = m/wa \t\t\t\t\t# [s]\n",
- "\n",
- "D = t*vt \t\t\t\t\t# [distance of fall, m]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The distance of fall is\",round(D),\"m\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Terminal velocity of particle is 3.59 m/s\n",
- "The distance of fall is 90.0 m\n"
- ]
- }
- ],
- "prompt_number": 15
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 2.10,Page number:127"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 2.10\n",
- "#Mass Transfer for a Single Cylinder\n",
- "\n",
- "#Variable declaratiopn\n",
- "\n",
- "\t# Example 2.6 using equation 2.73\n",
- "\t# Values of the dimensionless parameters calculated in Example 2.6\n",
- "Re = 1223 \t\t\t\t# [Renoylds Number]\n",
- "Sc = 0.905 \t\t\t\t# [Schmidt Number]\n",
- "c = 0.039 \t\t\t\t# [molar density, kg/cubic m]\n",
- "v = 1 \t\t\t\t\t# [gas velocity, m/s]\n",
- "\t# Therefore \n",
- "#Calculations\n",
- "\n",
- "Gm = c*v \t\t\t\t# [kmole/square m.s]\n",
- "\t# From equation 2.9 \n",
- "\t# Kg*P = ky\n",
- "\t# Therefore substituting in equation 2.73 we obtain\n",
- "ky = 0.281*Gm/(Re**0.4*Sc**0.56) \t# [kmole/square m.s]\n",
- "\t# Now equation 2.73 were obtained under very dilute concentrations\n",
- "\t# Therefore\n",
- "y_bm = 1 \n",
- "\t# From equation 2.6\n",
- "F = ky*y_bm \t\t\t\t# [kmole/square m.s]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"Mass transfer coefficient is \",round(F,6),\"kmol/m.^2-s\" \n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Mass transfer coefficient is 0.000675 kmol/m.^2-s\n"
- ]
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 2.11,Page number:129"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 2.11\n",
- "#Simultaneous Heat and Mass Transfer in Pipe\n",
- "\n",
- "#Variable declaration\n",
- "\n",
- "# a-water b-air\n",
- "D = 25.4*10**-3 \t\t\t\t# [diameter of wetted wall tower, m]\n",
- "Gy = 10 \t\t\t\t\t# [mass velocity, kg/square m.s]\n",
- "T1 = 308 \t\t\t\t\t# [K]\n",
- "P = 101.3 \t\t\t\t\t# [kPa]\n",
- "p_a1 = 1.95 \t\t\t\t\t# [partial pressure of water vapor, kPa]\n",
- "R = 8.314 \t\t\t\t\t# [cubic m.Pa/mole.K]\n",
- "M_a = 18 \t\t\t\t\t# [gram/mole]\n",
- "Cpa = 1.88 \t\t\t\t\t# [kJ/kg.K]\n",
- "\n",
- "\n",
- "# Properties of dry air at 308 K and 1 atm pressure are\n",
- "u = 1.92*10**-5 \t\t\t\t# [kg/m.s]\n",
- "row = 1.14 \t\t\t\t\t# [kg/cubic m]\n",
- "D_ab = 0.242*10**-4 \t\t\t\t# [square m/s]\n",
- "Sc = 0.696 \t\t\t\t\t# [Schmidt number]\n",
- "Cp = 1.007 \t\t\t\t\t# [kJ/kg.K]\n",
- "k = 0.027 \t\t\t\t\t# [W/m.K]\n",
- "Pr = 0.7 \t\t\t\t\t# [Prandtl number]\n",
- "\n",
- "\n",
- "#Calculations\n",
- "\n",
- "import math\n",
- "from scipy.optimize import fsolve\n",
- "from numpy import *\n",
- "\n",
- "Re = D*Gy/u \t\t\t\t\t# [Renoylds number]\n",
- "# From equation 2,74\n",
- "Sh = 0.023*Re**0.83*Sc**0.44 \t\t\t#[Sherwood number]\n",
- "# From Table 2.1\n",
- "kg = Sh*D_ab/(R*T1*D)*1000 \t\t\t# [mole/square m.s.kPa]\n",
- "\n",
- "# To estimate the heat-transfer coefficient, we use the Dittus-Boelter equation for cooling, equation 2.80\n",
- "Nu = 0.023*Re**0.8*Pr**0.3 \t\t\t# [Nusselt number]\n",
- "# From Table 2.1\n",
- "h = Nu*k/D \t\t\t\t\t# [W/square m.K]\n",
- "\n",
- "T =373.15 \t\t\t\t\t# [K]\n",
- "lambda_a = 40.63 \t\t\t\t# [kJ/mole]\n",
- "Tc = 647.1 \t\t\t\t\t# [K]\n",
- "\n",
- "# Solution of simultaneous equation 2.78 and 2.79\n",
- "def F(e): \n",
- " f1=kg*(p_a1 - math.exp(16.3872-(3885.7/(e[0]-42.98))))-e[1] \n",
- " f2=e[1]*M_a*Cpa*(T1-e[0])/(1-exp(-e[1]*M_a*Cpa/h)) + 1000*e[1]*lambda_a*((1-(e[0]/Tc))/(1-(T/Tc)))**0.38 \n",
- " return(f1,f2) \n",
- "\n",
- "\n",
- "# Initial guess\n",
- "e = [292,-0.003] \n",
- "y = fsolve(F,e) \n",
- "Ti = y[0] \n",
- "Na = y[1] \n",
- "\n",
- "print\"The temperature of the liquid water and the rate of water evaporation is\",round(Ti),\"K and\",round(Na,3),\" mole/square m.s respectively\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The temperature of the liquid water and the rate of water evaporation is 295.0 K and -0.013 mole/square m.s respectively\n"
- ]
- }
- ],
- "prompt_number": 17
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 2.12,Page number:131"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 2.12\n",
- "#Air Humidification in Wetted- Wall Column \n",
- "\n",
- "\n",
- "#Variable declaration\n",
- "\t# a-water b-dry air\n",
- "D = 25.4*10**-3 \t\t\t# [Internal diameter of tower, m]\n",
- "Z = 1.5 \t\t\t\t# [length of the wetted section, m]\n",
- "Gy = 10 \t\t\t\t# [mass velocity of air, kg/square m.s]\n",
- "Tair = 308 \t\t\t\t# [K]\n",
- "Twater = 295 \t\t\t\t# [K]\n",
- "P = 101.3 \t\t\t\t# [kPa]\n",
- "M_a = 18.0 \t\t\t\t# [gram/mole]\n",
- "M_b = 29.0 \t\t\t\t# [gram/mole]\n",
- "R = 8.314 \t\t\t\t# [cubic m.Pa/mole.K]\n",
- "\n",
- "#Calculations\n",
- "\n",
- "import math\n",
- "\n",
- "Pa = 2.64 # [kPa]\n",
- "\n",
- "Gm = Gy/M_b \t# [Assuming that gas phase is basically dry air, kmole/square m.s]\n",
- "\t\t# The properties of dry air at 308 K and 1 atm are (from example 2.9)\n",
- "row = 1.14 \t\t\t\t# [kg/cubic m]\n",
- "u = 1.92*10**-5 \t\t\t# [kg/m.s]\n",
- "D_ab = 0.242*10**-4 \t\t\t# [square m/s]\n",
- "Sc = 0.692 \t\t\t\t# [Schmidt number]\n",
- "\n",
- "Re = Gy*D/u \t\t\t\t# [Renoylds number]\n",
- "\n",
- "if Re<35000 and Re>2000:\n",
- " Sh = 0.023*Re**0.83*Sc**0.44 \t# [Sherwood number] \n",
- " print\"Sherwood number is\",round(Sh,1) \n",
- "else:\n",
- " print\"We cannot use equation 2.74\"\n",
- "\n",
- "c = P/(R*Tair) \t\t\t# [kmole/cubic m]\n",
- "\t# Now using equation 2.89\n",
- "Pa_out = Pa*(1-math.exp((-4*Sh*Z*c*D_ab)/(Gm*D**2))) \t\t# [kPa]\n",
- "\n",
- "#Result\n",
- "print\"The partial pressure of water in the air leaving the tower is\",round(Pa_out,2),\"kPa\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Sherwood number is 51.6\n",
- "The partial pressure of water in the air leaving the tower is 1.94 kPa\n"
- ]
- }
- ],
- "prompt_number": 18
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 2.13,Page number:134"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 2.13\n",
- "# Air Humidification in a Packed Bed\n",
- "\n",
- "#Variable declaration\n",
- "\t# a-water b-dry air\n",
- "Gy = 10.0 \t\t\t\t# [kg/square m.s]\n",
- "dp = 3.5*10**-3 \t\t\t# [diameter of spherical glass beads, m]\n",
- "D = 25.4*10**-3 \t\t\t# [Internal diameter of tower, m]\n",
- "Tair = 308 \t\t\t\t# [K]\n",
- "Twater = 295 \t\t\t\t# [K]\n",
- "P = 101.3 \t\t\t\t# [kPa]\n",
- "M_a = 18 \t\t\t\t# [gram/mole]\n",
- "M_b = 29 \t\t\t\t# [gram/mole]\n",
- "R = 8.314 \t\t\t\t# [cubic m.Pa/mole.K]\n",
- "\n",
- "#Calculation\n",
- "\n",
- "import math\n",
- "from scipy.optimize import fsolve\n",
- "\t# The properties of dry air at 308 K and 1 atm are (from example 2.12)\n",
- "row = 1.14 \t\t\t\t# [kg/cubic m]\n",
- "u = 1.92*10**-5 \t\t\t# [kg/m.s]\n",
- "D_ab = 0.242*10**-4 \t\t\t# [square m/s]\n",
- "Sc = 0.692 \t\t\t\t# [Schmidt number]\n",
- "c = 0.04 \t \t\t\t# [mole/cubic m]\n",
- "Gm = 0.345 \t\t\t\t# [kmole/square m.s]\n",
- "\n",
- "Re = Gy*dp/u \t\t\t\t# [Renoylds number]\n",
- "if Re<2500 and Re>10:\n",
- " \t\t\t\t\t# Subsituting in equation 2.90\n",
- " jd = 1.17*Re**-0.415 \n",
- " print\"Renoylds number is \",Re\n",
- "else:\n",
- " print \" \"\n",
- "Std = 0.052/(Sc**(2.0/3.0)) \n",
- "\t\t# From Table 2.1 \n",
- "Sh = Std*Re*Sc \t\t\t# [Sherwood number]\n",
- "\t\t# From equation 2.94\n",
- "e = 0.406+0.571*(dp/D) \t\t# [bed porosity]\n",
- "e=round(e,3)\n",
- "\t#Illustration 2.13(a) \n",
- "\t# Solution(a)\n",
- "\t# Now Paout = 0.99*Pa\n",
- "\t# Using equation 2.93 to calculate 'Z'\n",
- "def f12(Z):\n",
- " return(0.99 - 1 + math.exp(-6*(1-e)*Sh*c*Z*D_ab/(Gm*dp**2))) \n",
- "Z = fsolve(f12,0.06) \n",
- "\n",
- "#Result\n",
- "Z=round(Z[0],3)\n",
- "print\"The depth of packing required is\",Z,\"m=\",Z*100,\"cm\" \n",
- "\n",
- "\t#Illustration 2.13(b)\n",
- "\t# Solution(b)\n",
- "\t# From equation 2.95\n",
- "deltaP = (150*(1-e)/Re + 1.75)*((1-e)*(Gy**2)*Z)/(dp*row*e**3) \t# [Pa]\n",
- "\n",
- "#Result\n",
- "print\"The gas pressure drop through the bed is\",round(deltaP),\"Pa (Approx) \\nDUE TO LACK OF PRECISION IN CALCULATION IN BOOK.\\niF DONE MANUALLY,THIS ANSWER STANDS CORRECT\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Renoylds number is 1822.91666667\n",
- "The depth of packing required is 0.078 m= 7.8 cm\n",
- "The gas pressure drop through the bed is 15817.0 Pa (Approx) \n",
- "DUE TO LACK OF PRECISION IN CALCULATION IN BOOK.\n",
- "iF DONE MANUALLY,THIS ANSWER STANDS CORRECT\n"
- ]
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 2.14,Page number:138"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 2.14\n",
- "#Design of a Hollow-Fiber Boiler Feed Water Deaerator\n",
- "\n",
- "#Variable declaration\n",
- "\t# a-oxygen b-water\n",
- "\t# To design the deaerator, We will use commercially available microporous polypropylene \thollow fibers in a module\n",
- "\n",
- "m = 40000.0 \t\t\t\t\t# [kg/hr]\n",
- "Twater = 298 \t\t\t\t\t# [K]\n",
- "v = 0.1 \t\t\t\t\t# [superficial velocity, m/s]\n",
- "P = 101.3 \t\t\t\t\t# [kPa]\n",
- "V = 40*10**-3 \t\t\t\t\t# [Flow rate of nitrogen, cubic m/min]\n",
- "d = 2.90*10**-4 \t\t\t\t# [Outside diameter of fibres, m]\n",
- "pf = 0.4 \t\t\t\t\t# [Packing factor]\n",
- "a = 46.84*100 \t\t\t\t\t# [surface area per unit volume, m**-1]\n",
- "R = 8.314 \t\t\t\t\t# [cubic m.Pa/mole.K]\n",
- "\n",
- "#Calculation\n",
- "\n",
- "import math\n",
- "\n",
- "dw = 1000 \t\t\t\t\t# [density of water, kg/cubic m]\n",
- "Ql = m/(3600*1000) \t\t\t\t# [volumetric water flow rate, cubic m/s]\n",
- "\t# Shell diameter\n",
- "D = (4*Ql/(math.pi*v))**0.5 \t\t\t# [Shell diameter, m]\n",
- "\n",
- "\t# the properties of dilute mixtures of oxygen in water at 298 K\n",
- "u = 0.9 \t\t\t\t\t# [cP]\n",
- "\t# Diffusivity from equation 1.53\n",
- "D_ab = 1.93*10**-9 \t\t\t\t# [square m/s]\n",
- "Sc = 467 \t\t\t\t\t# [Schmidt number]\n",
- "\n",
- "Re = d*v*dw/(u*10**-3) \t\t\t# [Renoylds number]\n",
- "\n",
- "\t# Substituting in equation (2-97) gives\n",
- "Sh = 0.53*(1-1.1*pf)*((1-pf)/pf)**-0.47*(Re**0.53*Sc**0.33) \n",
- "\n",
- "kl = Sh*D_ab/d \t\t\t\t# [mass-transfer coefficient on the shell side, \t\t\t\t\t\tm/s]\n",
- "\n",
- "\t# From the specified BFW flow rate\n",
- "L = m/(3600*18) \t\t\t\t# [kmole/s]\n",
- "\t# From ideal gas law\n",
- "V1 = V*P/(Twater*R*60) \t\t\t# [kmole/s]\n",
- "\t# From the solubility of oxygen in water at 298 K,\n",
- "M = 4.5*10**4 \n",
- "A = L/(M*V1) \t\t\t\t\t# [Absorption factor]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"Absorption factor is\",round(A,3) \n",
- "\n",
- "#Calculation\n",
- "\n",
- "\t# For 99% removal of the dissolved oxygen\n",
- "\t# x_in/x_out = b = 100\n",
- "b = 100 \n",
- "c = 55.5 \t\t\t\t\t# [molar density, kmole/cubic m]\n",
- "\t# Substituting in equation 2.99 yields\n",
- "V_T = (L*math.log(b*(1-A)+A))/(kl*a*c*(1-A)) \t # [cubic m]\n",
- "\n",
- "\t# The module length, Z is\n",
- "Z = V_T/(math.pi*D**2.0/4.0) \n",
- "\n",
- "#Result\n",
- "print\"The shell diameter and module length is\",round(D,3),\"m and\",round(Z,2),\" m respectively\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Absorption factor is 0.503\n",
- "The shell diameter and module length is 0.376 m and 2.15 m respectively\n"
- ]
- }
- ],
- "prompt_number": 20
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 2.15,Page number:140"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Example 2.15\n",
- "\n",
- "#Variable declaration\n",
- "d=2.21/100\t\t\t#[m]\n",
- "mu=8.82*10**-6\t\t#[kg/m-s]\n",
- "rho=2.81\t\t#[kg/m**3]\n",
- "\n",
- "c=34.14\t\t\t#[mol/m**3]\n",
- "D=array([2.228/(10**6),2.065/(10**6),1.832/(10**6)]) #Velocities in [m**2/s]\n",
- "\n",
- "\n",
- "#Calculation\n",
- "#Gy=rho*v\t\t\n",
- "#Re=Gy*d/mu\t\t#Reynolds number\n",
- "Re=21750\n",
- "print \"Reynolds number=\",Re\n",
- "Sc=[]\n",
- "Sh=[]\n",
- "F=[]\n",
- "for i in range(0, 3):\n",
- " sc=mu/(rho*D[i]) #Schmidt number\n",
- " Sc.append(sc)\n",
- " sh=0.023*Re**(0.83)*sc**(0.44) #Sherwood number\n",
- " Sh.append(sh)\n",
- " f=sh*c*D[i]/d #Binary mass transfer coefficient in [mol/m^2-s]\n",
- " F.append(f)\n",
- "print \"Schmidt number are:\"\n",
- "for i in range(0,3):\n",
- " print round(Sc[i],3)\n",
- "print \"Sherwood number number are:\"\n",
- "for i in range(0,3):\n",
- " print round(Sh[i],1)\n",
- "print\"Binary mass transfer coefficients are:\"\n",
- "for i in range(0,3):\n",
- " print round(F[i],3)\n",
- "#After modifying mathcad program of example 1.17,we have\n",
- "N1=-0.0527 #[mol/m^2-s]\n",
- "N2=0.0395 #[mol/m^2-s]\n",
- "N3=0.0132 #[mol/m^2-s]\n",
- "print\"The program yields the following results:\"\n",
- "print \"N1=\",N1,\"mol/m**2-s\"\n",
- "print \"N2=\",N2,\"mol/m**2-s\"\n",
- "print \"N3=\",N3,\"mol/m**2-s\"\n",
- " "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Reynolds number= 21750\n",
- "Schmidt number are:\n",
- "1.409\n",
- "1.52\n",
- "1.713\n",
- "Sherwood number number are:\n",
- "106.5\n",
- "110.1\n",
- "116.1\n",
- "Binary mass transfer coefficients are:\n",
- "0.367\n",
- "0.351\n",
- "0.328\n",
- "The program yields the following results:\n",
- "N1= -0.0527 mol/m**2-s\n",
- "N2= 0.0395 mol/m**2-s\n",
- "N3= 0.0132 mol/m**2-s\n"
- ]
- }
- ],
- "prompt_number": 36
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/Chapter 3.ipynb b/Beginning_C++_through_Game_Programming/Chapter 3.ipynb
deleted file mode 100755
index 5994f443..00000000
--- a/Beginning_C++_through_Game_Programming/Chapter 3.ipynb
+++ /dev/null
@@ -1,889 +0,0 @@
-{
- "metadata": {
- "name": ""
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 3:lnterphase Mass Transfer"
- ]
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 3.1,Page number:161"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 3.1\n",
- "#Application of Raoult\u2019s Law to a Binary System\n",
- "\n",
- "#Variable declaration\n",
- "\t# a-benzene b-toluene\n",
- "T = 300 \t\t\t\t\t# [K]\n",
- "x_a = 0.4 \t\t\t\t\t# [mole fraction in liquid phase]\n",
- "\t# Antoine constants for benzene and toluene are given\n",
- "\t# For benzene\n",
- "A_a = 15.9008 \n",
- "B_a = 2788.51 \n",
- "C_a = -52.36 \n",
- "# For toluene\n",
- "A_b = 16.0137 \n",
- "B_b = 3096.52 \n",
- "C_b = -53.67 \n",
- "\n",
- "#Calculation\n",
- "\n",
- "import math\n",
- "\n",
- "\t# Using equation 3.5 vapor pressure of component 'a' and 'b'\n",
- "P_a = math.exp(A_a-(B_a/(T+C_a))) \t\t# [mm of Hg]\n",
- "P_b = math.exp(A_b-(B_b/(T+C_b))) \t\t# [mm of Hg]\n",
- "\n",
- "P_a = P_a*101.3/760 \t\t\t\t# [kPa]\n",
- "P_b = P_b*101.3/760 \t\t\t\t# [kPa]\n",
- "\t# Partial pressure of component 'a' and 'b'\n",
- "p_a = x_a*P_a \t\t\t\t\t# [kPa]\n",
- "p_b = (1-x_a)*P_b \t\t\t\t# [kPa]\n",
- "P_total = p_a+p_b \t\t\t\t# [kPa]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The total equilibrium pressure of the binary system of benzene and toluene is\",round(P_total,2),\" kPa\" \n",
- "\n",
- "y_a = p_a/P_total \t\t\t\t# [mole fraction in vapor phase]\n",
- "print\"The composition of the vapor in equilibrium is\",round(y_a,3) "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The total equilibrium pressure of the binary system of benzene and toluene is 8.02 kPa\n",
- "The composition of the vapor in equilibrium is 0.688\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 3.2,Page number:162"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 3.2\n",
- "#Henry's Law: Saturation of Water with Oxygen\n",
- "\n",
- "\n",
- "#Variable declaration\n",
- "\t# A-oxygen B-water\n",
- "T = 298 \t\t\t\t\t# [K]\n",
- "H = 4.5*10**4 \t\t\t\t\t# [atm/mole fraction]\n",
- "P = 1 \t\t\t\t\t\t# [atm]\n",
- "row_B = 1000.0 \t\t\t\t\t# [density of water, kg/cubic m]\n",
- "M_B = 18.0 \t\t\t\t\t# [Molecular mass of water, gram/mole]\n",
- "M_A = 32.0 \t\t\t\t\t# [,Molecular mass of oxygen, gram/mole]\n",
- "\n",
- "\n",
- "\t# Dry air contains 21% oxygen then p_A = y*P = 0.21 atm\n",
- "\t# Therefore using Henry's Law\n",
- "p_A = 0.21 \t\t\t\t\t# [atm]\n",
- "x_A = p_A/H \t\t\t\t\t# [mole fraction in liquid phase]\n",
- "\n",
- "\t# Basis: 1L of saturated solution\n",
- "\t# For 1 L of very dilute solution of oxygen in water, the total moles of solution, n_t, \twill be approximately equal to the moles of water\n",
- "n_t = row_B/M_B\n",
- "\t# Moles of oxygen in 1L saturated solution is\n",
- "n_o = n_t*x_A \t\t\t\t\t# [mole]\n",
- "\t# Saturation concentration\n",
- "c_A = n_o*M_A*1000 \t\t\t\t# [mg/L]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The saturation concentration of oxygen in water exposed to dry air at 298 K and 1 atm is\",round(c_A,2),\"mg/L\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The saturation concentration of oxygen in water exposed to dry air at 298 K and 1 atm is 8.3 mg/L\n"
- ]
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 3.3,Page number:162"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 3.3\n",
- "#Material Balances Combined with Equilibrium Relations: Algebraic Solution \n",
- "\n",
- "#Variable declaration\n",
- "\t# a-ammonia b-air c-water\n",
- "T = 300 \t\t\t\t\t# [K]\n",
- "P = 101.3 \t\t\t\t\t# [kPa]\n",
- "R = 8.314 \t\t\t\t\t# [cubic m.Pa/mole.K]\n",
- "V_b = 15.0 \t\t\t\t\t# [cubic m]\n",
- "m_a = 10.0 \t\t\t\t\t# [kg]\n",
- "m_c = 45.0 \t\t\t\t\t# [kg]\n",
- "M_a = 17.0 \t\t\t\t\t# [molecular mass of ammonia, gram/mole\n",
- "M_c = 18.0 \t\t\t\t\t# [molecular mass of water, gram/mole]\n",
- "\n",
- "\n",
- "#Calculations\n",
- "\n",
- "n_b = V_b*P/(R*T) \t\t\t\t# [kmole]\n",
- "n_a = m_a/M_a \t\t\t\t\t# [kmole]\n",
- "n_c = m_c/M_c \t\t\t\t\t# [kmole]\n",
- "\n",
- "import math\n",
- "from scipy.optimize import fsolve\n",
- "\n",
- "def f12(L_a):\n",
- " return(((n_a-L_a)/(n_b+n_a-L_a))-(10.51*(0.156+(0.622*(L_a/(n_c+L_a))*(5.765*(L_a/(n_c+L_a))-1)))*(L_a/(n_c+L_a)))) \n",
- "L_a = fsolve(f12,0.3) # [kmole]\n",
- "\n",
- "x_a = L_a/(n_c+L_a) \n",
- "y_a = (n_a-L_a)/(n_b+n_a-L_a) \n",
- "gammma_a = 0.156+0.622*x_a*(5.765*x_a-1) \n",
- "\n",
- "#Result\n",
- "\n",
- "print\"At equilibrium the ammonia content of the liquid phase will be\",x_a[0] \n",
- "print\"At equilibrium the ammonia content of the gas phase will be\",y_a[0] \n",
- "print\"The amount of ammonia absorbed by the water will be\",round(L_a[0],3),\"kmole\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "At equilibrium the ammonia content of the liquid phase will be 0.144495485596\n",
- "At equilibrium the ammonia content of the gas phase will be 0.214117393686\n",
- "The amount of ammonia absorbed by the water will be 0.422 kmole\n"
- ]
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 3.4,Page number:169"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 3.4\n",
- "#Mass-Transfer Resistances During Absorption of Ammonia by Water\n",
- "\n",
- "#Variable declaration\n",
- "\t# a-ammonia\n",
- "T = 300 \t\t\t\t\t# [K]\n",
- "P = 101.3 \t\t\t\t\t# [kPa]\n",
- "Kg = 2.75*10**-6 \t\t\t\t# [kmole/square m.s.kPa]\n",
- "m = 1.64 \n",
- "res = 0.85 \t\t\t\t\t# [gas phase resistance]\n",
- "xa_g = 0.115/100.0 \t\t\t\t# [mole fraction of NH3 in liquid phase at a \t\t\t\t\t\t\tpoint]]\n",
- "\n",
- "#Calculations\n",
- "\n",
- "ya_g = 8.0/100.0 \t\t\t\t\t# [mole fraction of NH3 in gas phase at a \t\t\t\t\t\t\tpoint]\n",
- "import math\n",
- "from scipy.optimize import fsolve\n",
- "\n",
- "Ky = Kg*P \t\t\t\t\t# [kmole/square m.s]\n",
- "\t# Using equation 3.24\n",
- "ky = Ky/res \t\t\t\t\t# [kmole/square m.s]\n",
- "\t\t\t\t\t\t# Using equation 3.21\n",
- "def f12(kx):\n",
- " return((m/kx)-(1/Ky)+(1/ky)) \n",
- "kx = fsolve(f12,0.0029) \t\t\t# [kmole/square m.s]\n",
- "\n",
- "\t# Interfacial concentrations at this particular point in the column, using equation \t\t\t(3.15)\n",
- "ystar_a = m*xa_g \n",
- "\t# Using equation 3.12\n",
- "N_a = Ky*(ya_g-ystar_a) \t\t\t# [kmole/square m.s]\n",
- "\t# Gas-phase interfacial concentration from equation (3.9)\n",
- "ya_i = ya_g-(N_a/ky) \n",
- "\t# Since the interfacial concentrations lie on the equilibrium line, therefore\n",
- "xa_i = ya_i/m \n",
- "\t# Cross checking the value of N_a\n",
- "N_a = kx*(xa_i-xa_g) \t\t\t\t# [kmole/square m.s]\n",
- "\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The individual liquid film coefficient and gas film coefficient are\",round(kx[0],5),\"kmole/square m.s and \",round(ky,6),\"kmole/square m.s respectively\" \n",
- "\n",
- "print\"The gas phase and liquid phase interfacial concentrations are\",round(ya_i,5),\"and,\",round(xa_i,5),\"respectively\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The individual liquid film coefficient and gas film coefficient are 0.00305 kmole/square m.s and 0.000328 kmole/square m.s respectively\n",
- "The gas phase and liquid phase interfacial concentrations are 0.0136 and, 0.00829 respectively\n"
- ]
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 3.5,Page number:171"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 3.5\n",
- "#Absorption of Ammonia by Water: Use of F-Type Mass-Transfer Coefficients \n",
- "\n",
- "#Variable declaration\n",
- "\t# a-ammonia\n",
- "T = 300 \t\t\t\t\t# [K]\n",
- "P = 101.3 \t\t\t\t\t# [kPa]\n",
- "ya_g = 0.6 \t\t\t\t\t# [ammonia concentration in bulk gas]\n",
- "xa_l = 0.12 \t\t\t\t\t# [ammonia concentration in bulk liquid]\n",
- "Fl = 3.5*10**-3 \t \t\t\t# [kmole/square m.s]\n",
- "Fg = 2*10**-3 \t\t\t\t\t# [kmole/square m.s]\n",
- "\n",
- "#Calculations\n",
- "\n",
- "import math\n",
- "from scipy.optimize import fsolve \n",
- "# Algebraic solution (a)\n",
- "\n",
- "\n",
- "def f12(xa_i):\n",
- " return(1-(1-ya_g)*((1-xa_l)/(1-xa_i))**(Fl/Fg) - 10.51*(0.156+0.622*xa_i*(5.765*xa_i-1))*xa_i) \n",
- "xa_i = fsolve(f12,0.2) \n",
- "\n",
- "ya_i = 1-(1-ya_g)*((1-xa_l)/(1-xa_i))**(Fl/Fg) \n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The local gas and liquid interfacial concentrations are\",round(ya_i[0],3),\"and\",round(xa_i[0],3),\"respectively\" \n",
- "\t# Using equation 3.28 \n",
- "\n",
- "N_a = Fg*math.log((1-ya_i)/(1-ya_g)) \n",
- "\n",
- "print\"The local ammonia mass-transfer flux is\",round(N_a,5),\"kmole/square m.s\"\n",
- " "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The local gas and liquid interfacial concentrations are 0.494 and 0.231 respectively\n",
- "The local ammonia mass-transfer flux is 0.00047 kmole/square m.s\n"
- ]
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 3.6,Page number:174"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 3.6\n",
- "#Distillation of a Mixture of Methanol and Water in a Packed Tower: Use of F-Type #Mass-Transfer oefficients\n",
- "\n",
- "#Variable declaration\n",
- "# a-methanol b-water\n",
- "T = 360.0 # [K]\n",
- "P = 101.3 # [kPa]\n",
- "lambda_a = 33.3 # [MJ/kmole]\n",
- "lambda_b = 41.3 # [MJ/kmole]\n",
- "Fg = 0.0017 # [kmole/square m.s]\n",
- "Fl = 0.0149 # [kmole/square m.s]\n",
- "yag = 0.36 # [bulk gas phase concentration]\n",
- "xag = 0.20 # [bulk liquid phase concentration]\n",
- "R = 1.987 \n",
- "\n",
- "\n",
- "#Calculations\n",
- "\n",
- "import math\n",
- "from numpy import *\n",
- "from scipy.optimize import fsolve\n",
- "\n",
- "\n",
- "sia_ag= 1.0/(1-(lambda_a/lambda_b))\n",
- "print\"sia_g is\",sia_ag\n",
- "#sia_ag =5.155 \n",
- "sia_al = sia_ag \n",
- "# Therefore equation 3.29 becomes\n",
- "# yai = 5.155-4.795(4.955/(5.155-xai))**8.765\n",
- "\n",
- "# Using equation 3.33, 3.34, 3.35\n",
- "V2 = 18.07 # [cubic cm/mole]\n",
- "V1 = 40.73 # [cubic cm/mole]\n",
- "a12 = 107.38 # [cal/mole]\n",
- "a21 = 469.5 # [cal/mole]\n",
- "\n",
- "# Solution of simultaneous equation \n",
- "def F(e):\n",
- " x1,x2,y1,y2,e4=e\n",
- " \n",
- " #####SIDE Quantities#####\n",
- " a=(V1/V2)*math.exp(-a21/(R*e4)) #d2lT\n",
- " a1=(V2/V1)*math.exp(-a12/(R*e4)) #dl2(T) \n",
- " b=math.exp(16.2620-3800.0/(e4-47)) #P2(T)\n",
- " b1=math.exp(16.5938-3644.3/(e4-33)) #P1(T)\n",
- " c=math.exp(-log(x2+x1*a)-x1*(a1/(x1+x2*a1)-a/(x2+x1*a))) #gamma_2\n",
- " d=math.exp(-log(x1+x2*a1)-x1*(a1/(x1+x2*a1)-a/(x2+x1*a))) #gamma_1\n",
- " #########################\n",
- " x1=1-x2\n",
- " y2=1-y1\n",
- " y1=5.155-4.795*(4.955/(5.155-x2))**(Fl/Fg) \n",
- " y1=x1*d*b1/P\n",
- " y2=x2*c*b/P\n",
- " return(x1,x2,y1,y2,e4) \n",
- "# Initial guess\n",
- "y = fsolve(F,(0.1,0.9,0.2,0.8,300)) \n",
- "xai = y[0] \n",
- "xbi = y[1] \n",
- "yai = y[2] \n",
- "ybi = y[3] \n",
- "T = y[4] # [K]\n",
- "\n",
- "print\"yai is\",yai\n",
- "print\"ybi is\",ybi\n",
- "print\"xai is\",xai\n",
- "print\"xbi is\",xbi\n",
- "print\"Temperature is\",T,\"K\" \n",
- "# Local Methanol flux, using equation 3.28\n",
- "Na = sia_ag*Fg*math.log((sia_ag-yai)/(sia_ag-yag)) # [kmole/square m.s]\n",
- "# From energy balance\n",
- "Nb = -(lambda_a/lambda_b)*Na\n",
- "#Result\n",
- "\n",
- "print\"Local Methanol flux is\",round(Na,4),\" (APPROX) kmole/square m.s\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "sia_g is 5.1625\n",
- "yai is 0.2\n",
- "ybi is 0.8\n",
- "xai is 0.1\n",
- "xbi is 0.9\n",
- "Temperature is 300.0 K\n",
- "Local Methanol flux is 0.0003 (APPROX) kmole/square m.s\n"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stderr",
- "text": [
- "-c:46: RuntimeWarning: invalid value encountered in log\n",
- "-c:51: RuntimeWarning: invalid value encountered in double_scalars\n"
- ]
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 3.7,Page number:183"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 3.7\n",
- "#Recovery of Benzene Vapors from a Mixture with Air\n",
- "\n",
- "\n",
- "#Variable declaration\n",
- "\t# 1-benzene a-absorber s-steams\n",
- "T = 300 \t\t\t\t\t\t# [K]\n",
- "P = 101.3 \t\t\t\t\t\t# [kPa]\n",
- "R = 8.314 \t\t\t\t\t\t# [gas constant]\n",
- "v = 1 \t\t\t\t\t\t\t# [cubic m/s]\n",
- "\t# Gas in\n",
- "y1a = 0.074 \n",
- "\t# Liquid in\n",
- "x2a = 0.0476\n",
- "\t# Recovery is 85 %\n",
- "\t# Calculations for absorber section\n",
- "\n",
- "\n",
- "#Calculations\n",
- "\n",
- "import math\n",
- "from pylab import *\n",
- "from numpy import *\n",
- "\n",
- "\n",
- "V1a = P*v/(R*T) \t\t\t\t\t# [kmole/s]\n",
- "\t\t\t\t\t\t\t# Inert gas molar velocity\n",
- "Vsa = V1a*(1-y1a) \t\t\t\t\t# [kmole/s]\n",
- "Y1a = y1a/(1-y1a) \t\t\t\t\t# [kmole of benzene/kmole of dry gas]\n",
- "\n",
- "X2a = x2a/(1-x2a) \t\t\t\t\t# [kmole of benzene/kmole of oil]\n",
- "\t# Since the absorber will recover 85% of the benzene in the entering gas, the \t\tconcentration of the gas leaving it will be\n",
- "r = 0.85 \n",
- "Y2a = (1-r)*Y1a \t\t\t\t\t# [kmole of benzene/kmole of dry gas]\n",
- "\t# The benzene-wash oil solutions are ideal, and the pressure is low therefore, Raoult\u2019s \t\tlaw applies. From equations 3.1, 3.44, and 3.45\n",
- "\t# yia = 0.136*xia\n",
- "\t# or Yia/(1+Yia) = 0.136*Xia/(1+Xia)\n",
- "\n",
- "\t# Data_eqm = [Xia,Yia]\n",
- "Data_eqm =matrix([[0,0],[0.1,0.013],[0.2,0.023],[0.3,0.032],[0.4,0.04],[0.6,0.054],[0.8,0.064],[1,0.073],[1.2,0.080],[1.4,0.086]])\n",
- "\n",
- "\t# Here because of the shape of equilibrium curve, the operating line for minimum oil rate \tmust be tangent to curve\n",
- "\t# Therefore\n",
- "\t# From the curve X1a_max = 0.91\n",
- "X1a_max = 0.91 \t\t\t\t\t# [kmol benzene/kmol oil]\n",
- "\n",
- "\t# For minimum operating line slope is \n",
- "S = (Y1a-Y2a)/(X1a_max-X2a) \t\t\t\t# [kmol oil/kmol air]\n",
- "\t# Therfore\n",
- "Lsa_min = S*Vsa \t\t\t\t\t# [kmole oil/s]\n",
- "Data_minSlope1 = matrix([[X2a,Y2a],[X1a_max,Y1a]]) \n",
- " \n",
- "\t# For Actual operating line, oil flow rate is twice the minimum\n",
- "Lsa = 2*Lsa_min \t\t\t\t\t# [kmole oil/s]\n",
- "M_oil = 198 \t\t\t\t\t\t# [molecular weight of oil, gram/mole]\n",
- "\n",
- "Wsa = Lsa*M_oil \t\t\t\t\t# [mass flow rate of oil, kg/s]\n",
- "\t# Using equation 3.47 to calculate the actual concentration of the liquid phase leaving \tthe absorber\n",
- "X1a = X2a + Vsa*(Y1a-Y2a)/Lsa \t\t\t\t# [kmol benzene/kmol oil]\n",
- "Data_opline1 = matrix([[X2a,Y2a],[X1a,Y1a]]) \n",
- "figure(1)\n",
- "a1=plot(Data_eqm[:,0],Data_eqm[:,1],label='$Equilibrium line for absorber$')\n",
- "a2=plot(Data_minSlope1[:,0],Data_minSlope1[:,1],label='$Minimum Flow Rate Line for absorber$')\n",
- "a3=plot(Data_opline1[:,0],Data_opline1[:,1],label='$Operating Line for absorber$') \n",
- "legend(loc='lower right')\n",
- "plt.grid()\n",
- "xlabel(\"Xa,mole benzene/mole oil\") \n",
- "ylabel(\"Ya, mole benzene/mole air\") \n",
- "title(\"XY diagram for the absorber of Example 3.7\")\n",
- "show(a1)\n",
- "show(a2)\n",
- "show(a3)\n",
- "\t# Calculations for stripping section\n",
- "Lss = Lsa \n",
- "X2s = X1a \n",
- "X1s = X2a \n",
- "Y1s = 0 \n",
- "T = 373 # [K]\n",
- "\t# Applying Raoult\u2019s law at this temperature gives us\n",
- "\t# yis = 1.77*xis\n",
- "\t# Yis/(1+Yis) = 1.77*Xis/(1+Xis)\n",
- "\n",
- "\t# Equilibrium data \n",
- "\t# Data_equm = [Xis,Yis]\n",
- "Data_equm = matrix([[0,0],[0.05,0.092],[0.1,0.192],[0.15,0.3],[0.2,0.418],[0.25,0.548],[0.3,0.691],[0.35,0.848],[0.4,1.023],[0.45,1.219],[0.5,1.439]]) \n",
- "\n",
- "\t# Similar procedure as above is followed\n",
- "\t# The operating line for minimum oil rate must be tangent to curve \t\n",
- "\t# Therefore from the curve\n",
- "Y2s_max = 1.175 \t\t\t\t\t# [kmol benzene/kmol steam]\n",
- "S = (Y2s_max-Y1s)/(X2s-X1s) \t\t\t\t# [kmole oil/kmole steam]\n",
- "Vss_min = Lss/S \t\t\t\t\t# [kmole/s]\n",
- "Vss = 1.5*Vss_min \t\t\t\t\t# [kmole/s]\n",
- "Mss = 18 \t\t\t\t\t\t# [molecular weight of steam, gram/mole]\n",
- "Wss = Vss*Mss \t\t\t\t\t\t# [kg steam/s]\n",
- "\n",
- "Data_minSlope2 = matrix([[X1s,Y1s],[X2s,Y2s_max]]) \n",
- "\n",
- "Y2s_act = Y1s + Lss*(X2s-X1s)/Vss \t\t\t# [kmol benzene/kmol steam]\n",
- "\n",
- "Data_opline2 = matrix([[X1s,Y1s],[X2s,Y2s_act]]) \n",
- "\n",
- "figure(2)\n",
- "a1=plot(Data_equm[:,0],Data_equm[:,1],label='$Equilibrium line for stripping$')\n",
- "a2=plot(Data_minSlope2[:,0],Data_minSlope2[:,1],label='$Minimum Flow Rate for stripping Line$')\n",
- "a3=plot(Data_opline2[:,0],Data_opline2[:,1],label='$Operating Line for stripping$') \n",
- "#legend(\"Equilibrium line for stripping\",\"Minimum Flow Rate for stripping Line\",\"Operating Line #for stripping\") \n",
- "legend(loc='upper left')\n",
- "xlabel(\"Xa, mole benzene/mole oil\") \n",
- "ylabel(\"Ya, mole benzene/mole air\") \n",
- "title(\"XY diagram for stripper of Example 3.7\")\n",
- "plt.grid()\n",
- "show(a1)\n",
- "show(a2)\n",
- "show(a3)\n",
- "#Result\n",
- "\n",
- "print\"The oil circulation rate and steam rate required for the operation is\",round(Wsa,2),\"kg/s\",round(Wss,3),\" kg steam/s respectively\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "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\n",
- "text": [
- "<matplotlib.figure.Figure at 0x7d08d30>"
- ]
- },
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "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\nRU5ErkJggg==\n",
- "text": [
- "<matplotlib.figure.Figure at 0x79ad6a0>"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The oil circulation rate and steam rate required for the operation is 1.18 kg/s 0.059 kg steam/s respectively\n"
- ]
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": []
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 3.8,Page number:190"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 3.8\n",
- "#Adsorption of Nitrogen Dioxide on Silica Gel\n",
- "\n",
- "\n",
- "from numpy import *\n",
- "from pylab import *\n",
- "#Variable declaration\n",
- "\t# 1-Nitrogen dioxide 2-air\n",
- "T = 298 \t\t\t\t\t# [K]\n",
- "P = 101.3 \t\t\t\t\t# [kPa]\n",
- "y1 = 0.015 \n",
- "V1 = 0.5 \t\t\t\t\t# [mass flow rate of the gas entering the \t\t\t\t\t\tadsorber, kg/s]\n",
- "M1 = 46 \t\t\t\t\t# [gram/mole]\n",
- "M2 = 29 \t\t\t\t\t# [gram/mole]\n",
- "\n",
- "\n",
- "#Calculations\n",
- "\n",
- "\t# Data_eqm1 = [P1 m] (where 'P1' is Partial pressure of NO2 in mm of Hg, 'm' is solid \tconcentration in kg NO2/kg gel)\n",
- "Data_eqm1 = matrix([[0,0],[2,0.4],[4,0.9],[6,1.65],[8,2.60],[10,3.65],[12,4.85]]) \n",
- "\n",
- "\n",
- "Y1 = y1*M1/((1-y1)*M2) \t\t\t# [kg NO2/kg air]\n",
- "\t# For 85% removal of the NO2,\n",
- "Y2 = 0.15*Y1 \t\t\t\t\t# [kg NO2/kg air]\n",
- "\t# Since the entering gel is free of NO2,\n",
- "X2 = 0 \n",
- "\n",
- "Data_eqm =matrix([[0,0],[0.4,0.42],[0.9,0.83],[1.65,1.26],[2.6,1.69],[3.65,2.11],[4.85,2.54]]) \n",
- "\n",
- "\t# The operating line for minimum slope is tangent to curve, from which we get\n",
- "X1_max = 0.0375 \t\t\t\t# [kg NO2/kg gel]\n",
- "\n",
- "wb1 = 1/(1+Y1) \n",
- "Vs = V1*wb1 \t\t\t\t\t# [mass velocity of the air, kg/s] \n",
- "Ls_min = Vs*(Y1-Y2)/(X1_max-X2) \t\t# [kg gel/s]\n",
- "Data_minSlope = matrix([[X2,Y2],[X1_max,Y1]])*100 \n",
- "\t\t\t\t\t\t# Operating line\n",
- "Ls = 2*Ls_min \t\t\t\t\t# [kg gel/s]\n",
- "\n",
- "X1 = X2 + Vs*(Y1-Y2)/Ls \t\t\t# [kg NO2/kg gel]\n",
- "\n",
- "\n",
- "#Result\n",
- "\n",
- "\n",
- "a1=plot(Data_eqm[:,0],Data_eqm[:,1],label='$Equilibrium line$')\n",
- "a2=plot(Data_minSlope[:,0],Data_minSlope[:,1],label='$Minimum Flow Rate Line$')\n",
- "a3=plot((3.75,3.75),(0,2.45),'--')\n",
- "a4=plot((0,3.75),(2.45,2.45),'r--')\n",
- "legend(loc='upper left')\n",
- "xlabel(\"$Xa*100, kg NO2/kg gel$\") \n",
- "ylabel(\"$Ya*100, kh NO2/kg air$\") \n",
- "title('X-Y diagram for the adsorber')\n",
- "annotate(\"X1(max)\", xy=(3.75, 2.45), xytext=(4,2.5),\n",
- " arrowprops=dict(facecolor='black', shrink=0.01),\n",
- " )\n",
- "show(a1)\n",
- "show(a2)\n",
- "show(a3)\n",
- "show(a4)\n",
- "print\"Mass flow rate of the and the composition of the gel leaving the absorber are\",round(Ls,3),\"kg gel/s and\",round(X1,4),\"kg No2/kg gel\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAEfCAYAAACqKwpQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdYU0n3B/BvABtVQAUBG1awghVFBFGxl1fX3lZXEeyu\nde2rr12xu1awLSr2FVAEARtNqojKWpCODVQQpeT8/sjPvCLFgCEBOZ/n4VmTO3fuSXI3J3Nn7oyA\niAiMMcbYVxTkHQBjjLGyh5MDY4yxfDg5MMYYy4eTA2OMsXw4OTDGGMuHkwNjjLF8ODkwmbC0tMTh\nw4cBACdPnoSNjY2cIyqZlJQUWFhYQF1dHQsWLCiVY0ycOBHLly8vlbq/R0FBAc+ePSs39bLSw8mh\nAktPT0eDBg3w999/i5/78OED6tati/Pnz4ufS0lJQc2aNeHr65tn/0mTJmHUqFESHUsgEEAgEAAA\nxowZg2vXrknhFcjegQMHUKtWLbx//x6bN2/+4fqcnJzQtWvXPM99/V4xJi+cHCowVVVV7N+/H3Pm\nzMHr168BAAsXLkSHDh3wn//8R1xOR0cHDg4OmDJlCj59+gQA8PLygqurK3bv3i2X2AuSk5NT6sd4\n8eIFjIyMSrSvLOIra6T9mivieygvnBwquF69eqFfv36YNWsWfHx84OLigr179+YrN3bsWDRt2hQr\nVqxAZmYmbG1tsWvXLmhraxdY7/Xr19GsWTNUr14dM2fOxNc34n/7a3n27NmoW7cuNDQ00K5dO9y+\nfVu8LTMzExMmTICWlhaMjY2xadMm1KlTR7y9fv362LRpE1q1agU1NTXk5uZiw4YNaNSoEdTV1dG8\neXNcvHgxz7G7dOmCefPmQVNTE40aNcLdu3fh6OiIunXrQkdHB8eOHSvwNU2cOBHHjh3Dpk2boKam\nhhs3biArKwtz5syBvr4+9PX1MXfuXGRlZQEAfHx8YGBggE2bNqF27dqYPHlynvoePnwIOzs7+Pn5\nQU1NDVpaWuJtb9++Rf/+/aGuro5OnTrluSTz6NEj9OzZE9ra2mjWrBlcXFwKjBcAHB0dYWxsDHV1\ndTRs2BAHDhzIs33z5s3Q09ODgYEBjhw5kmebm5sbmjdvDnV1dRgYGGDr1q3ibQcPHkTjxo2hra2N\nQYMGISkpSbxNQUEBe/fuRePGjdG0aVPx866urmjYsCFq1qyJhQsX5jknjhw5AmNjY2hpaaF3796I\njY39bn2slBGr8FJTU0lXV5dq1KhBTk5OhZaLj48nbW1tGjRoEA0ZMqTQcq9evSI1NTU6d+4c5eTk\nkIODAykpKdHhw4eJiMjR0ZHMzc3F5U+cOEFv376l3Nxc2rp1K+nq6tLnz5+JiGjRokVkaWlJaWlp\nFB8fTy1btqQ6deqI961Xrx6ZmJhQfHw8ffr0iYiIXFxcKCkpiYiITp8+TSoqKpScnCw+tpKSEjk5\nOZFQKKRly5aRvr4+zZgxg7KyssjDw4PU1NQoIyOjwNc2ceJEWr58ufjx8uXLyczMjF69ekWvXr2i\nzp07i7d7e3uTkpISLV68mLKysigzMzNffU5OTnneCyKiCRMmkLa2NgUFBVFOTg6NGTOGRo4cSURE\n6enpZGBgQE5OTpSbm0uhoaFUo0YNioqKKjBeV1dXevbsGRER+fr6krKyMoWEhBARkbu7O+no6NCD\nBw8oIyODRo0aRQKBgJ4+fUpERLq6unT79m0iIkpLSxPv5+XlRTVq1KDQ0FD6/PkzzZw5kywsLMTH\nFAgE1KtXL0pNTRV/JgKBgLp3706pqakUGxtLTZo0oUOHDhER0cWLF6lRo0b06NEjys3NpbVr11Ln\nzp2LrI+VPk4OjIiIrK2tSUVFhd69e1dkuT179uT5si3I0aNHyczMLM9zBgYGhSaHb2lqalJERAQR\nERkaGpKHh4d426FDh8jAwED8uH79+uTo6FhkzG3atKFLly6Jj924cWPxtoiICBIIBPTy5Uvxc9ra\n2hQeHl5gXRMnTqRly5aJHzds2JDc3d3Fj69du0b169cnIlFyqFy5sjjRFaSg92LixIk0ZcoU8WM3\nNzdq1qwZERGdOnWKunbtmqf81KlTafXq1YUe42uDBw+mHTt2EBHRr7/+SkuWLBFvi46OzpMc6tat\nS/v37893TkyaNIkWLVokfpyenk6VKlWiFy9eEJHoy9zb2zvPPgKBgK5duyZ+vHfvXrK2tiYiot69\ne4vPDSKi3NxcUlZWptjY2ELrY6WPLysxnDhxAi9evECPHj2waNEi8fN9+vSBmpoa1NTU4OzsDAAw\nNjaGpqYmdHR0Cq0vMTERBgYGeZ77+lLQt7Zs2QJjY2NUr14dmpqaePfunbgPJDExMc++39ZbUN3H\njh2DiYkJNDU1oampicjISLx580a8/evYq1WrBgCoWbNmnufS09MLjfdriYmJqFevnvhx3bp1kZiY\nKH5cs2ZNVK5cWaK6vvZtjF/iefHiBQICAsSvTVNTE3///TdSUlIKrMfd3R2dOnWCtrY2NDU14ebm\nJn4vkpKS8rx3devWzbPvuXPn4Obmhvr168PS0hL+/v7i/b5+zSoqKtDW1kZCQoL4uYI+72+P9eV9\nevHiBWbPni1+PV8uVX6vPla6lOQdAJOvly9fYt68eXBxcUHTpk3RvHlzjBkzBubm5nB3dy9RnXp6\nerh06ZL4MREhLi6uwLK3bt3C5s2bcePGDTRv3hwAoKWlJb4eXbt2bcTFxaFZs2YAUGA9X4/sefHi\nBaZOnYobN27AzMwMAoEAJiYmea5vS5Oenh5iYmLEndSxsbHQ09MrMLaCFHdUUt26ddGtWzd4eHh8\nt+znz58xdOhQnDhxAoMGDYKioiKGDBmS5739+tr+1/8GgHbt2uHixYvIzc3Frl27MHz4cPHri4mJ\nEZfLyMjAmzdvoK+vX+Trio2NzfM+fSlft25dLF++vMiRbzx6S/a45VDBzZgxA0OGDEG3bt2gq6uL\nTZs2YcqUKeJO1ZLo168fHjx4gAsXLiAnJwc7d+5EcnJygWU/fPgAJSUl1KhRA1lZWfjzzz/x/v17\n8fbhw4dj/fr1SEtLQ0JCAnbv3l3kF0VGRgYEAgFq1KgBoVAIR0dHREZGlvi1fOvbJDNq1CisXbsW\nr1+/xuvXr/Hnn39i3LhxEtenq6uL+Ph4ZGdnF3qMr/Xr1w/R0dE4ceIEsrOzkZ2djaCgIDx69Chf\n2aysLGRlZaFGjRpQUFCAu7t7nqQyfPhwODk54eHDh/j48SNWr14t3padnY2TJ0/i3bt3UFRUhJqa\nGhQVFcWv2dHREeHh4fj8+TP++OMPdOrUKV/L41tbtmxBWloa4uLisHPnTowYMQIAMG3aNKxbtw5R\nUVEAgHfv3hXZyc5kg5NDBXbx4kXcvXs3z3j9yZMnQ09PD2vWrCl0v+/9itPW1oaLiwsWL16MGjVq\n4MmTJzA3N8+z/5c6evfujd69e6NJkyaoX78+qlWrludLZsWKFTAwMECDBg3Qq1cv/PLLL0VepjE2\nNsbvv/8OMzMz6OrqIjIystBjS/p6vi37dflly5ahXbt2aNWqFVq1aoV27dph2bJlEtfdvXt3NG/e\nHLq6uqhVq9Z3Y1RTU4OHhwdOnToFfX191K5dG0uWLCkwmaupqWHnzp0YPnw4tLS04OzsjEGDBom3\n9+7dG3PmzEH37t3RpEkTWFtb5znuiRMn0KBBA2hoaODAgQM4efIkAMDa2hpr1qzB0KFDoaenh+fP\nn+PUqVPffc2DBg1C27ZtYWJigv79+2PSpEkAgMGDB2PRokUYOXIkNDQ00LJlyzz3wXCrQT4EVFrt\n7UJ8+vQJ3bp1w+fPn5GVlYVBgwZh/fr1+crNmjUL7u7uUFZWhpOTE0xMTGQZJiuj9u3bhzNnzsDb\n21veoTD2U5N5y6Fq1arw9vZGWFgYIiIi4O3tnWdcOyAaX/3kyRP8+++/OHDgAOzs7GQdJisjkpOT\ncefOHQiFQjx+/Bjbtm3DkCFD5B0WYz89uVxWUlZWBiC6Jpqbm5vn5h8AuHz5MiZMmAAA6NixI9LS\n0godjcF+bllZWZg2bRrU1dVhbW2NwYMHw97eXt5hMfbTk8toJaFQCFNTUzx9+hR2dnYwNjbOsz0h\nISHf8MX4+Pgih0+yn1PdunVx//59eYfBWIUjl5aDgoICwsLCEB8fj5s3b8LHxydfmW+7QrhTijHG\nZEeu9zloaGigX79+uHfvHiwtLcXP6+vr5xnPHh8fn2cM9ReNGjXC06dPZREqY4z9NBo2bIgnT54U\nWUbmLYfXr18jLS0NgGhStevXr+cbiTRw4EDx5Gf+/v6oXr16gZeUnj59ChJNAVLh/1auXCn3GMrK\nH78X/F7we1H0nyQ/qmXeckhKSsKECRMgFAohFAoxbtw4WFtbY//+/QAAW1tb9O3bF25ubmjUqBFU\nVFTg6Ogo6zAZY6xCk3lyaNmyJUJCQvI9b2trm+dxWVongDHGKhq+Q/on8XWfTUXH78X/8HvxP/xe\nFI/M75CWJoFAgHIcPmOMyYUk350/5aysWlpaSE1NlXcYjJWIpqYm3r59K+8wWAX3U7YcuEXByjM+\nf1lpk+Qc4z4Hxhhj+XByYIwxlg8nB8YYY/lwcmCMMZYPJwfGGGP5cHKQk+DgYPTr1w9mZmY4fPgw\nDh06hC1btsDQ0BDPnz8vUZ2LFy8WrxH8999/o2bNmvm2CYVCzJ8/H1ZWViWqVxq+ja00jsEY+zE/\n5X0O5UHbtm2hpqaG0aNHY8yYMeLnVVVVoaenV6I6N2zYIP63kZFRnjtCv95mbGwMDQ2NEtUrDd/G\nVhrHYIz9GG45yNHNmzdhY2MDAOLF27t3744qVar8cN03btxA9+7dC9zm7e2Nbt26/fAxSqqo2Bhj\nZUOFTA4CgXT+fsSDBw9QqVIlnD17FlOmTBGvdtakSRNER0fjjz/+gIeHB9auXQtnZ2fExcXh/Pnz\nGDVqFAAgOzsbPXr0AAC8ffsWp0+fxvDhw8X1+/j4oHv37gVu8/X1RWxsLE6ePInt27cDAEJCQnD6\n9GlYWlpix44dMDU1RWxsLE6dOiXet6gYIiMjceTIEcybNw/nz5/HuXPnMHbsWHh6esLd3R3jxo0T\nzx//JbaCYg8ODsbevXuxbNkyXLx4EefOncOkSZPyvG+LFi2Cq6sr/vzzzx/7EBhjhaNyrLDwy8PL\n2rVrF82dO5eIiJ4+fUpXr14lIqL4+Hhq2bIlvXnzhoiIevfuTS9evCAPDw+Ki4ujrl27EhHRrVu3\naPLkyUREdP36dUpNTaV27doREVFOTg41a9aswG3R0dFkaWkpjsPAwICIiCIiIig8PJysra2JiCgz\nMzPfvkXF4O7uTsHBwWRlZSWuu1GjRvT06VMiIpo2bRq5urrmia2g+Nzd3cnLy4sGDx5MRERCoZAM\nDQ2JiCglJYXq1atHL1++JCKiJUuWlPDdL9vKw/nLyjdJzrEK2XIoC3x8fNClSxcAopXvrK2t8fbt\nW3h6eqJFixbQ0tJCVlYWXr58ibp166Jnz55wcnLC2LFjAQBeXl7iX+09evSAk5MTJk6cCAAICgpC\n+/btC9x2+/Zt9OvXDwDw+PFjqKurAxBNpX79+nX88ssvAICqVavm27eoGHr37o3r16+Ltz19+hSG\nhoYwNDQUH7dz5855Yisovi/1jBs3DgDg5+cnLu/i4oJ69eohNDQUJ0+exMyZM6XxUTDGCsDJQQ6I\nCL6+vuLkUKVKFSgpKWHr1q1ISUkRr4x348YNdO7cWbyfv78/zM3NAQCenp6wsrLCtWvXAADOzs4Y\nO3YsXF1dcevWLVhaWuLChQv5tqWmpqJFixYAgOPHj2PBggXi+j09PdGrV688sX697/di+Hr/69ev\ni/tT7t69izZt2iAhIQEeHh55YivoGN7e3rC2tgYAHDt2DFOmTMHVq1dRrVo19OnTB7169RJ34mdn\nZ5f0Y2CMFYGTg4xFRERgyZIl+PTpE1xdXXH48GHs3LkTffr0QXZ2NsaNG4e4uDi4urpi06ZN4i9Y\nABg8eDAuX74MFxcXGBoaws3NDa1btwYAGBoa4sqVK+jQoQOaNGmC+Ph4aGlp5ds2YsQIBAQEwMnJ\nCbVr1xb/YicifPz4EQ0aNMgT79f7FhWDUChEdnY2DAwMAIj6MPr37w8AUFRURK1atRAZGYnWrVvn\nie3rY3Ts2BEfP35E9erVxaOpVFRU8PLlS2hpaWHUqFFIT0/HlStXcOnSJQQGBqJSpUql8CkxxnhW\n1jKsQ4cO8Pb2hoqKirxDYTL0s5y/rOziWVnLqYyMDKxatQpxcXHw8/OTdziMsQqIWw6MlTF8/rLS\nxi0HxhhjJcLJgTHGWD6cHBhjjOXDyYExxlg+nBwYY4zlw8mBMVYhxMXFwdDQEKmpqQCA1NRUGBoa\n4sWLF+jduzc0NTUxYMCAfPuNGDECT58+LbW4IiIiMHny5FKrv6Q4OTDGKoQ6derAzs4OixcvBiBa\nYMrW1hb16tXDwoULcfz48Xz7PHnyBBkZGWjYsGGpxdWqVSs8ffoUL1++LLVjlAQnB8ZYhTF37lz4\n+/tj+/btuHv3LubPnw9AtI6KqqpqvvKnTp3CwIEDxY9VVVWxcOFCtGjRAj179oS/vz+6deuGhg0b\n4p9//gEAxMTEwMLCAm3btkXbtm3FN7JeuHBBPFFlUlISmjZtKk4Iffr0gYuLS6m+9mIrlflgixAb\nG0uWlpZkbGxMzZs3px07duQr4+3tTerq6tSmTRtq06YNrVmzpsC6CgtfDi+LManh87d0Xb16lQQC\nAXl6euZ53tvbm/r375/nud69e1NwcLD4sUAgEE+vP2TIEOrZsyfl5ORQeHg4tWnThoiIPn78SJ8+\nfSIi0RT5X6ajJyIaO3Ys7dq1i/r370+nTp0SP3/jxg0aPny4dF9oESQ5x2TecqhUqRIcHBzw4MED\n+Pv7Y8+ePXj48GG+ct26dUNoaChCQ0OxbNkyWYdZ6kJCQvDLL7/km+gOAOLj41GvXj3Mnz8fISEh\nxVpfuSysxXzv3j307ds3z/rYy5cvR6VKlfKtHV1SISEhGDhwILp164bDhw9j7969sLW1ha+vr1Tq\n/yIwMBA2Njbo1KkT9u/fjzdv3uTZXhbe74ogNzcXnz59kkpd7u7u0NPTEy+wVZQXL16gdu3a4seV\nK1cWT4bZsmVLWFlZQVFRES1atEBMTAwAICsrC7/99htatWqF4cOHIyoqSrz/rl27sH79elStWhUj\nRowQP1+7dm3x/sWVmwu4uwMjRwLp6SWqokAyX0NaV1cXurq6AERNNCMjIyQmJsLIyChPOfrJpw8w\nNTVFr169EBkZiYyMjDyT6927dw+ZmZnYuHEjFBUVYWpqKnG9ZWEt5nbt2kFZWRkDBgzI09FWqVIl\nif6HlISpqSnU1NQwefJkDBo0CABw8eJFzJo1C+Hh4d/d39raGteuXYOSUtH/C3To0AHVqlXD+PHj\n86z1/UVZeL8rAkdHR9y8eRPHjh37oXrCwsLg6ekJPz8/mJubY+TIkeLvI0Ehyzt+/V309SzACgoK\nqFy5svjfOTk5AAAHBwfUrl0bx48fR25uLqpWrSreJy4uDoqKikhJSQERiY/59b8llZAAHDkCHDoE\n1KoFTJ0KKCoWq4oiybXPISYmBqGhoejYsWOe5wUCAe7evYvWrVujb9++eTLvz0QgEKBhw4bi5TMB\n4NatW6hcuTLatWsHRWl+0jJE/79ehZmZGQDRUqCAaPptaa4d7efnh549ewIQ/Vo7ceIE5s2b9939\nEhISQETfTQwAIBQKcfPmTVhZWf1wvKzk/Pz88ODBgx+qg4hgZ2eHHTt2oE6dOliwYIG4z+HL9m/V\nq1cPSUlJxTrO+/fvxQnn2LFjyM3NBQDk5ORg8uTJOHXqFJo1a4Zt27aJ90lKSkK9evW+W3duLuDq\nCgwaBLRsCSQlARcvAkFBwJQpQLVqxQq1SDJvOXyRnp6OYcOGYceOHfk6gkxNTREXFwdlZWW4u7tj\n8ODBiI6OltqxBat/cAHo/0crS966efz4MZo1ayZODq1bt8bLly+hoqICLy8v8frPHh4eOH/+PM6c\nOYPg4GAEBAQgMTER7dq1Q25uLlxdXXHkyBG8ffsW169fx7lz53DmzBkAovWWAwICEBkZCXNzcxAR\nLly4gIkTJyI7Oxt///03Vq5ciSpVqiAoKAguLi5wdnZGdnY2+vTpA09PT0RGRiIwMPC7dTRq1Ej8\n2iIiIpCZmYlWrVqBiODi4gJbW1t4e3tj69at4nIJCQk4cuQITE1NERQUhHHjxkFRUREhISFwd3fH\nwYMHERoaCkdHR+zcuRPW1tbYu3cvmjZtiocPH0JDQwO3bt3C8+fPERQUhG3btqFu3boAgOjoaBw/\nfhxmZmb4+++/MXLkSPTv3x/Xr1/HwYMHoauri+PHj2PcuHF48OABjh07BgsLCwQHB2PFihXiGEND\nQ1GjRg3o6enl+fy+fb+L+my+fBaFHYN9X0hIyHdH8xARXr9+jcTERCQmJiIhIQHx8fF49uwZmjRp\nglq1aqF+/frihaTs7e3FLZJly5bh0aNHSE9PR506dXDkyBH07NkT5ubmuHfvHtq2bQsgf+vi68df\n/m1vb4+hQ4fi2LFj6N27t/j7bd26dbCwsEDnzp3RqlUrtG/fHv3790fTpk0RGBgICwuLQl9bXBxw\n+LDoT19f1Eo4eRIooA9dekqpv6NIWVlZ1KtXL3JwcJCofP369cVrKn8NAK1cuVL85+3tLX6+rDt6\n9ChlZWXRjh07aOPGjURE5OrqSkREFhYWFBwcXKz1lb8t+6X899Z1vnLlilTWhv6ag4MDGRsbk6Oj\nI40bN47OnDmTb+3o9PR0at++Pb1+/ZqIiNzc3GjatGl0/fp1io6Opr59+xIR0bp168jJyYmIiPbt\n2yc+7u7du2nlypXi+vr06UP+/v7iulu3bk2pqalERGRlZUUpKSnisqNGjaJ79+4R0ffXpd68eTPZ\n2trmeU4oFJbq2tfl4fyVNVVVVapSpQp5eXnRsWPHaP369TR16lTq2bMnGRkZkba2NikqKlKVKlVI\nXV2dNDQ0SFlZmQQCAQGgWrVqlei4T58+FZ+Lpalbt255zlEiouxsokuXiPr1I9LUJJo+nSgsrGT1\ne3t75/mulOQck/lZKBQKady4cTRnzpxCyyQnJ5NQKCQiooCAAKpXr16B5Qp7geXhf65Dhw4REdGV\nK1doypQpdPfuXUpLS6OPHz+Srq6uuJyDgwPt3r1b/Hjx4sV07tw5IiK6c+cOjRgxotCyREQbNmyg\nw4cPExHRkydPqFevXuJtLVq0EH+Brlmzhvbv309ERKtWrSJnZ+di1/HFwIEDafPmzUQk+vxSUlLI\nz8+Pxo4dKy5z+PBhsrOzEz/esmULzZs3j4iIli1bRkePHiUiIhsbG4qPjyciyjO6Y9iwYeJRI0RE\nHTt2FMd87Ngx8bEyMzOpffv24nJCoTBPktq9ezdZWFjQtWvX6MSJE5SYmJjntfTt2zfPcYmIHB0d\niUjyz+Z7x/hWeTh/ZSklJYWqVKlC1apVIw0NDVJVVSUlJSUCIPGfkpKS+DuluEaMGEFPnjyR8qv6\nn/DwcPGPMSKimBii5cuJ9PWJzMyIHB2J0tOle8wymRxu3bpFAoGAWrduLR6q6ubmRn/99Rf99ddf\nRCT6n6l58+bUunVrMjMzIz8/vwLrKq/JITc3l44cOUJERA8fPiRTU1Pxa/T09KRBgwaJy3bo0IHS\n0tLoypUrRCT6EkxLSyMiIltbW/L09CR3d/cCyxIR9ejRg+Li4ohI9Mt769atRCT68ho7dixFRkZS\nbGws9evXjyIjI4mIyNzcnJKTk8VfvpLU8WV7bm4uaWpq0qNHj/K85k2bNtHhw4fp/PnzRET0119/\niev5+PEjmZmZiZNA37596cGDB0REZGxsTERE2dnZ4i9poVBItWrVypOUlJWVycPDgxITE2nr1q3i\n5PTPP//QzJkzxe9RZGQkDRkyhIiInJ2d6fDhw7R+/XpxPYmJiZSVlSU+poaGBiUnJ4u3Ozs7U0BA\nQLE+m6KOUZCyfv7Kmre3N2loaBQrGXz7V7ly5QKvPpQVWVlEFy4Q9elDpKVFNHMmUURE6R1PknNM\n5n0O5ubmEAqFRZaZPn06pk+fLqOIZCs8PBwbNmxATk4OrKysYGhoCCMjI3Tq1AkXLlzA/v37oaCg\ngKCgILRv3168vrKNjU2h6yt/ud7/pWyvXr0AoMB1nb90wH1Z1/nBgwcYPnw4Bg8ejH/++QdRUVHi\ntaH79OlTrDrCw8Nx8uRJfPr0CT4+PlBXVxcPA2zSpAnCw8PFd5qOGjUKGzduxJUrVxAWFoZDhw5B\nX18fADB69GicPn0aTZs2Re/evXHmzBm8f/8eo0ePRkREBJydnZGZmYnz589j0qRJAIBJkybBz88P\niYmJGD16NDZs2AB3d3e8evUKCgoKSEtLAwBoa2tDQ0MDzs7OsLKygoaGBv773//iypUr4o7DQYMG\nISwsTHzH7JUrV5CdnY3g4GAEBgaKR0NJ8tk0bNgQ3bp1K/AYTDLx8fHi960kqlSpAqFQiOTk5Dxr\nl5cFz5+L+hGOHAEaNhT1JZw7J92O5RIrvdxU+gAQFfBXzl8Wq+Dynddf9a3ksXJlgef/z1Y+JSWF\nqigqFnipSFVVNc+lpipVqpCenh6ZmprSoEGDaN68ebR9+3Y6f/48ZWdnFxyHjGVlEZ09S2RjQ6St\nTTRnDtH/N5RlRpLvSF4mlLEyhs/fvHxjfLG+gSWuAdDR0UGbNm3QoEEDNGjQAPr6+tDT0xP/qamp\nyTvcQj19KronwckJaNJE1EoYOhT46jYImZHkHJPbUFbGGCtKSnoK5l+fD98YX/w5yBrXLnnhP//5\nD/bu3Svv0CSWlQVcugQcOACEhQHjxwPe3kCzZvKO7Pt44j3GWJmSK8zFnsA9aLGvBfTV9PFw+kOM\nO3cNWlpaeP78ubzDk8i//wKLFgF16gB79wKTJonuVdi6tXwkBoBbDoyxMiQwIRB2rnZQq6wG34m+\nMK5pLN4/7hzRAAAgAElEQVQ2depUuLu7yzG6on3+LLpb+cABIDISmDABuHVLdAmpPOLkwBiTu7eZ\nb/GH1x+4/PgyNvfcjNEtR+e7G9ne3h4ZGRlyirBw0dHAwYPA0aNAq1aAra1oeosqVeQd2Y/hDmnG\nypiKdP4KSYijYUexxGsJfjH+BWu6r0H1qtXlHdZ3ffoEnD8vaiU8egRMnAj89hvw1SwyZVqF7ZDW\n1NQs9gyHjJUVmpqa8g5BJiJSImDvao9sYTZcR7uirV5beYf0XQ8filoJx48DJibAjBnAwIHA/0/O\n+lP5KZPDl1lAGWNlz4fPH7DKZxWORxzH2u5r8Zvpb1AQfGdszKpVoj85yMwU3Zh24ICoo/nXX4GA\nAMDQUC7hyMxPeVmJMVb2EBFcolzwu8fv6GnYExt7bERNFQkXfxIIRLfIydCDB6JWwokTQPv2oimx\nBwwAvlrSodyqsJeVGGNlS/SbaMxwm4Hk9GScGnoKXep2kXdIBfr4ETh7VtRKePYMmDwZuHcPqF9f\n3pHJHrccGGOlJjM7E+turcO+e/uwtOtSzOw4E0oKJfhNWsoth/v3RQnh77+BTp1Edy/36wdIsB5U\nucQtB8aY3FyJvoJZ7rPQXr89wqeFQ19dX94h5ZGRAZw5I0oKcXGiVkJICCDBgmwVArccGGNS9SLt\nBeZcm4MHLx9gT9896Nmw549XKsWWQ3i4KCE4OwNduohaCX36/LythIJwy4ExJjNZuVnY5rcNW+5u\nwZxOc3Bq6ClUUZLSnWArV/7Q7unpwOnToqSQlCRqJYSHi6a3YAXjlgNj7Id5P/eGvZs9Gmo2xK4+\nu9BAs4G8QwIgukx08KAoMVhYiFoJNjaAoqK8I5MvbjkwxkpV0ockzL8+H7djb2Nn750Y2HSg3G9A\n/fBBdMnowAHg1SvRENT79wH9stXlUeZxcmCMFVuOMAd7g/Zizc01+M3kN0TZR0Glsorc4iECgoNF\nCcHFBbCyAtauBXr25FZCSXFyYIwVi3+8P+xc7aBZVRM3J96EUU0jucXy/r1o+OmBA0BqqqiVEBUF\n/P/qtOwHcJ8DY0wibz6+wRKvJXD91xWbe27GqBaj5HIJiQgIChIlhHPnAGtrUV9Cjx6AAq9QIxFJ\nvjv5rWSMFUlIQhwOOYzme5ujmlI1RNlHFTildqlatQrv3okWzjExAUaNAho3Fs2IevYs0KsXJwZp\n45YDY6xQ4cnhsHO1g5CE2NdvH0xqm8j0+ESAvz9g1lmA6hoEGxtRK8HKipPBj+DRSoyxEnn/+T1W\neK+Ac6Qz1lqtxWTTyd+fOVWKUlNFE94dOCBaO+FfiBbVqVVLZiFUeJx7GWNiRIRTkadgtMcI6Vnp\neGD/AFPaTpFJYiAC7twRLa/ZoAFw9y6wc6coKQCcGGSt2C2HW7duoWvXrqURC2NMjh6/fozpbtPx\n+uNruPzigs51OsvkuBkZwLFjwO7dQE6O6LLRli1ATQln82alo9g/B/bs2YPPnz+XRiyMMTn4mP0R\nS72WwtzRHAOaDMC9qfdkkhgSE4GlS0XTYXt4AHv2iDqYf/+dE0NZUOzkUL16dfj6+iI7O7s04mGM\nydA/j/9B873N8SztGcKnhWN2p9klm1K7GEJDgfHjgRYtRPcp+PkBFy4Alpai+fUK9INzK7HiK/Zo\npcWLF0NNTQ337t3D58+f0bZtW6xZs6a04isSj1ZirGRi0mIwy30Wot9EY0/fPbA2tC7V4wmFgKsr\n4OAgWmpz5kzRDWsVZLnsMkeS785iJ4fbt2+jZs2aaNq0KYgIsbGxqCenCdA5OTBWPJ9zPmOr31Zs\n89uGeWbz8LvZ79KbObUAX/oTtm8H1NSAefOAX375OZbaLM+kdhPcqFGjxP9OTk7GvXv3kJ6eDj8/\nPzx79qxYQcXFxcHKygrNmzdHixYtsHPnzgLLzZo1C40bN0br1q0RGhparGMwxvLzeuaF1n+1RkBC\nAO5NvYc/uv5Raonh2/6EQ4dEdzWPHs2JobyQ6OLisWPHxP9OTEyEtrY2Jk2aBIFAgFq1asHKykri\nA1aqVAkODg5o06YN0tPT0bZtW/Ts2RNGRv+bn8XNzQ1PnjzBv//+i4CAANjZ2cHf378YL4sx9kXi\nh0T87vE7/OP9saP3DgxsOrDUjhUaKrp0dOUKMGaMqD+hUaNSOxwrRRIlh0pfpfr+/fsjOTkZZ86c\nwYcPH5CTk1OsA+rq6kJXVxcAoKqqCiMjIyQmJuZJDpcvX8aECRMAAB07dkRaWhpSUlKgo6NTrGMx\nVpHlCHOwJ3AP1t5aC9u2tjg88DCUKylL/TgF9Sfs2MH9CeVdsUcr3bhxAwoKCsjKykJERAS8vLxK\nfPCYmBiEhoaiY8eOeZ5PSEhAna+WaDIwMEB8fHyJj8NYRXM37i7aHWiHf6L/wa1fb2Ft97VSTwwZ\nGcC+fYCREbB6NfDbb8CzZ8DChaWQGFatknKF7HuKPWbt5cuX8PX1xc6dO/Hhwwc0bNgQw4YNK/aB\n09PTMWzYMOzYsQOqqqr5tn/bWVLYJF+rvjppLC0tYWlpWexYGPtZvP74Gos9F8P9iTu29tqKEc1H\nSH2CvMRE0T0JBw4A5uai/gRz8yKGoUrD6tWcIH6Aj48PfHx8irVPsZODgYEBxo8fDwDIysrCpUuX\nilsFsrOzMXToUIwdOxaDBw/Ot11fXx9xcXHix/Hx8dAvZBmnVXzCMAYhCXEk9AiW3liK0S1G4+H0\nh1Cvoi7VY3B/Qvn17Q/n1atXf3efYieHSpUqYeLEiRg4cCCaNm1a7Ms9RITJkyfD2NgYc+bMKbDM\nwIEDsXv3bowcORL+/v6oXr069zcwVojQpFDYu9lDAAGujb2GNrptpFY39ydUXCWasjs6OhonTpxA\namoqxo8fj/bt20u87+3bt2FhYYFWrVqJm7vr1q1DbGwsAMDW1hYAMGPGDFy9ehUqKipwdHSEqalp\n/uD5PgdWgb379A4rvFfg9IPTWGe9DhPbTJTaBHll7v4EgUA0Mx+TilK5Cc7W1hYqKiowMzND586d\nC73cIwucHFhFRERwjnTGfI/56N+kP9Zbr4e2srZU6v62P2HePBn0J0iCk4NUlcp6Dp07d0bPnj0R\nEBCAzZs3IyAgAC1btsSqVaugp6dX4mAZY9/38NVDTHebjtRPqTg/4jw6GXSSSr1lvj+B51aSuWK3\nQePi4qCuro4hQ4Zg+/btmD9/PjZv3oyTJ0+WRnyMMQAZWRlY4rkEFk4WGNJsCIKmBP1wYhAKRcmg\ne3dg4EDRRHhPnwK7dpWxxADwSCU5KHbLYdKkSRgzZgyICE2bNoWioiKGDh2Kxo0bl0Z8jFVoRITL\njy9j9tXZMK9rjohpEaitVvuH6vz4ETh6tAz1J7AyqcRrSMfExCAtLQ0tW7bE69evsXjxYjg6Oko7\nviJxnwP7mT1PfY5ZV2fhydsn2Nt3L6waSD5NTUHKbH8CkzmpTbz3tbZt2yIzMxP169dHYmIi/P39\noaOjI/PEwNjP6nPOZ6y9uRbtD7ZHlzpdED4t/IcSQ1iYaOnNb9dP6NqVEwMrXLEvKy1duhTVqlXD\nhQsXEBISgszMTHTp0qU0YmOswrn+9Dqmu01H81rNETw1GPWql2w6fKEQcHMDtm373/0J27fz/QlM\nchJdVrKwsBAPXTUxMUFQUBAuXLiAhQsXwsDAAFpaWrKINR++rMR+FgnvEzDPYx6CEoKws89O9G/S\nv0T1/LT9CatWcae0FEntPofLly+jcePG8PPzQ2BgIKKiogCIZmi1srIq1k1w0sTJgZV3OcIc7ArY\nhXW318GunR2WmC9BtUrVil3PT9+fwPc5SFWp3AT3RXp6OoKCgvDo0SPY2dmVKMAfxcmBlWd3Yu/A\n3s0eOio62N13N5poNyl2HWFhovsT/vlHdH/C7NllcBiqNHBykCqpJIfHjx9DQUGhTA5V5eTAyqNX\nGa+wyHMRPJ56wMHGAcOMhxVr5tSC+hN++vWYOTlIlVSSQ05ODnx8fMRJon379mjXrp1UAy0pTg6s\nPBGSEAeDD2K593KMazUOqyxXQa2KmsT7/7T9CZLg5CBVpXJZKTAwEMHBwRAKhWjatCksLS2hpFTs\nQU9SwcmBlRchSSGwc7VDJYVK2NtvL1rptJJ435++P0ESnBykqlT7HADRJScfHx9kZWVBX18fNjY2\nUFFRKWl1xcbJgZV1aZ/SsPzGcrhEuWBDjw0Y33q8xDOnVpj+BEnwaCWpKvXk8LXExETcunULI0aM\nkEZ1EuHkwMoqIsLJ+yex8PpCDGw6EOus10Gr2veHfFfI/gQmc1JNDgEBAYiPj0enTp3E03R7eXlB\nV1cXzZs3//FoS4CTAyuLol5Fwd7VHh+yPmBfv33ooN/hu/tU6P4EJnNSSw7Lly/Ho0ePYGhoiPDw\ncHTv3h0LFy5ETk4OdHR08ObNG6kFXRycHFhZkp6VjjW+a3Ak7AhWdVuFae2mQVFBsch9uD+ByYPU\n1nOoXr06XFxcxI99fHzw3//+F0uWLIGCgnRWnmKsvCIiXHx0EXOuzYFFPQvct7sPXVXdIvf5tj+h\nzK2fwCo8iZJD1apV8fbtW5w+fRoTJkyApaUlWrZsiT179iA7O7u0Y2SszHqW+gwz3WciJi0GRwcf\nhWV9y0LLEgFXrwKbN/N8R6zskyg5TJ06FWfPnkVKSoq4paCtrY0ZM2bIbRgrY/L0KecTNt3ZhJ0B\nO7Gwy0JcGHEBlRUrF1iWCLh2TTTYJj0dWLIEGD6c+xOKhUcryZzEHdJv376Fn58fcnJy0KlTJ+jo\n6JR2bN/FfQ5MHq49uYYZ7jPQSqcVHGwcUFejboHliIDr10UrXL5/L/rvsGEAX4ktAb7PQaqk1iHt\n6uoKR0dHNGzYEImJiQgICEDHjh2xY8cOuc3ICnByYLIV/z4ec6/NRUhSCHb12YW+jfsWWI4I8PQU\n/dB9+1aUFH75BVAsum+aFYWTg1RJrUP6xYsXOHv2rPgxEcHDwwNTpkzBgQMHoK2t/WORMlaGZedm\nY2fATqy/vR7T20/HscHHCpw5lQi4cUOUDF6/Fv13+HBOCqx8kig51K6dd81agUAAGxsbmJmZYf/+\n/ViwYEGpBMeYvN16cQv2bvbQV9OH32Q/NNbOPwElEeDtLWoppKQAK1YAI0dyUmDlm0TJITo6Gp8+\nfULVqlXzPK+urg4DA4NSCYwxeXqZ8RILry+E13MvONg4YKjR0AJnTv2SFJKS/pcUeIwG+xlI1DU2\natQojB49GmFhYfm2vXjxQupBMSYvucJc7AvahxZ7W6Cmck1E2UcVOKW2ry9gaQlMnQpMngxERQFj\nx3JiKDUrV8o7ggpH4tFKz549w6RJk5CWlobOnTujevXqiIiIQP/+/TFt2rTSjrNA3CHNpOle4j3Y\nudqhqlJV7Ou3Dy1qtchX5uZNUUshNhZYvlx0AxsnBFbeSG200okTJzB27FgAQHBwMO7cuYPs7Gz0\n7NkTrVpJPvWwtHFyYNKQmpmKpTeW4sKjC9hgLZo59duWwu3boh+vz5+LksLYsXyfAiu/pDZaycHB\nAZUrV4a6ujratm2Ltm3bSiVAxuSJiHA84jgWeS7CkGZDEGUfBc1qeW9XvnNH1FJ4+hRYtgwYN46T\nAqsYJGo53LlzB126dMGHDx8QEhKClJQUEBFevXoFExMTdOnSpVgHnTRpElxdXVGrVi3cv38/33Yf\nHx8MGjQIhoaGAIChQ4di2bJl+YPnlgMrociXkZjuNh0fsz9ib9+9aK/fPs92Pz9RSyE6WpQUJkzg\npMB+HlJrOXz58ldTU4OOjg48PT1x/vx5tGjRAvXq1St2YL/++itmzpyJ8ePHF1qmW7duuHz5crHr\nZqwo6VnpWO2zGkfDj2K15WpMbTs1z8yp/v6ilsKjR8DSpaKkULngWTEY+6lJlBySkpJw6tQpODs7\nQ0NDA2PGjIG/vz/U1CRf//ZrXbt2RUxMTJFluEXApImIcP7hecy9NhfdG3RHpH0kaqnUEm8PDBS1\nFB48ECWFX3/lpFCm8NxKMidRcmjcuDFmzJiBS5cu5bshrjQIBALcvXsXrVu3hr6+PrZs2QJjY+NS\nPy77OT15+wQz3GYg/n08TvznBCzqWYi3BQWJvnPu3wf++AO4eBGoUkV+sbJCrF7NyUHGJEoOa9as\ngampKW7fvi3+Ra+npwdTU1O4ublh2LBhUg3K1NQUcXFxUFZWhru7OwYPHozo6OgCy6766oSxtLSE\npaWlVGNh5dennE/YcHsDdgfuxmLzxZjdcTYqKYo6Du7dE33XhIeLZkk9f56TAvt5+fj4wMfHp1j7\nlHgN6eTkZAQFBWHVqlUIDg4u9v4xMTEYMGBAgR3S32rQoAGCg4PzTfLHHdKsMO7/umOm+0yY1DaB\ng40DDNRFd/IHB4t+hIaEAIsXA7/9Bnxz4z8ri3jiPamSWod0QXR1dTFgwACoqKiUtIpCpaSkoFat\nWhAIBAgMDAQRyXX2V1Z+xL2Lw5xrcxCREoE9fffAppENACA0VNRSuHdPlBTOnOGkwFhRfujezpCQ\nEFhYWHy/4DdGjRoFX19fvH79GnXq1MHq1avFK8rZ2tri7Nmz2LdvH5SUlKCsrIxTp079SJisAsjO\nzcZ2/+3YeGcjZnWchZP/OYmqSlURFiZqKQQGAosWAadPc1JgTBLFvqz0999/IzAwEG3atEHnzp0R\nFBSEMWPGlFZ8ReLLSgwAfGN8Ye9mj7oadbG7z2401GqIiAhRS8HfH1i4ELC1Barln2WblRc8Wkmq\nSuWykqKiIlasWAF/f39s27YNNWvWLHGAjP2IlPQULLi+AD4xPtjeezuGNBuCyEgBhk0V3dm8cCFw\n4gSgrCzvSNkP48QgcxLfBNehQwe0a9cOCQkJEAqF6Nu3L/r2LXglLMZKU64wF/uD92OVzyr82uZX\nRE2PQky0KoYPB27dAhYsAI4d46TA2I+Q6LLS5cuX0bhxY/j5+cHf3x+PHj2ClpYWzMzMYGVlhQ4d\nOsgi1nz4slLFE5gQCHtXe6hWVsWevnuAV83x55+iKbTnzwfs7IBSGCPB2E9FarOyFiQ9PR1BQUF4\n9OgR7OzsShTgj+LkUHG8zXyLpV5LcfHxRWzuuRkmimOwZo0A3t7A778D06dzUmBMUpJ8d0q02M/X\n2rZti8zMTKiqqiIzMxMtW7YscYCMfY+QhHAKc4LxHmMoKijiYo+HcNswFt27C2BiIpotdeFCTgyM\nSVuxk8PSpUtRrVo1XLhwAX5+frh48WJpxMUY7qfcRzenbtgbtBd7urgi9eRuDOhZHS1bAk+eiIam\nqqrKO0omE9whLXMSXVaysLCAmZkZOnfuDBMTEwQFBeHChQtYuHAhDAwM5HaDGl9W+jl9+PwBq3xW\n4XjEccxovgaPnX/D9WuKmDMHmDkTKOF8j6w84zukpUpqfQ5fd0gHBgYiKioKANC/f39YWVmhffv2\n36mhdHBy+LkQEc5GncU8j3noWKMnFLw2wtu1JmbPBmbNAtTV5R0hkxtODlLFHdKs3Ih+E40ZbjPw\n4k0SDB/uw73z5pg1S5QUNDTkHR2TO04OUlWqyaEs4ORQ/mVmZ2L97fXYHbAXjZL+wFPnmZg1vRJm\nzwaqV5d3dKzM4OQgVaU68R4APH/+HD169MDhw4fx+fNn2NjY/Eh1rIJx+9cN0y7PgFJKe9DpcPT9\nVR9zojkpMFYW/FByaNCgAW7evAl9fX1pxcMqgNh3sZhybjb8nz0Auf6FOQN6YW4YoKkp78hYmbVy\npbwjqHAkvqx069Yt3LhxA8nJyVBUVETNmjVhZmaGXr16lXaMheLLSuVLVm4W/rzugC13N0MhcA5m\nt1+ABXOrgGdjZ0y2pNbnsG7dOmRnZ8PExAQqKirIzc3F+/fvERQUBIFAgA0bNkgt6OLg5FB+3Hjm\njbHO0/HmSQOMr7kLGxYZQltb3lExVjFJrc+hRYsWGDhwYL7nhw0bhrNnz5YsOlYhJKcnY+rZ+fB4\nfAt1InfAbc0gtGkjkHdYjLHvkCg5hIeHIywsTNxyUFRUREZGBiIiIvDq1SupryHNyr8cYQ52+e/D\nsut/QnjvN6zuHoX5F1WgqCjvyBhjkpC4z8HT0xN3797Fy5cvIRQKoaOjA3Nzc3Tv3h0CgXx+CfJl\npbIpID4A413skPBEAybJe3BimzHq1ZN3VIyxL6Q68V6VKlVARMjNzYWCgmi33NxcuSUGVva8+fgG\nk87bwvrgEKScn48DXW7g5llODEwKeG4lmSt2h7Sqqqq4QzowMJA7pJl45tTf3f5ATvhwDFRdg52b\nNbjDmUkP3wQnVaXeIT106FDukK7gwpPDMeWiPZ7G5ELVyx1OG0xgbS3vqBhjP6pYHdKmpqZQVlbm\nDmmG95/fY4X3ShwJOgny+i/sO03GSl8FXpqTsZ8Ed0izYiEinHlwBrPdfofCMxvUur8BTntqok0b\neUfGfmp8WUmqZDLxXkZGBlTktAwXJwfZevz6Maa7zsCDFy/x8cw+rJrcGTNnAko/NAkLYxLg5CBV\npbJM6LcOHjz4o1WwMu5j9kcsu7EMnQ6YI+pSP7S8G4ywfzpj7lxODExGeG4lmZOo5TBv3jz4+vpC\nvYDVVh4+fIjk5ORSCe57uOVQ+v55/A9mus1Clded8NZ5K7av0cPo0aIfcoyx8klqo5W2bNmC7du3\nY968efm2OTg4lCw6VqbFpMVg9tXZCH7xCNkXD6Jbkx7YGgjUqCHvyBhjsiBxn0Nqaio0C5hTmfsc\nfi5ZuVnYencrttzdCv24eUi/9jv2762Cnj3lHRljTFqkuthPQYkBgNwSA5O+G89vYLrbdFTNaAzB\nwSD0/k8DrAoHD09lrAIqUYd0SkoKPn/+jBcvXpTooJMmTYKOjg5atmxZaJlZs2ahcePGaN26NUJD\nQ0t0HCaZpA9JGH1uNCacm4zKvhuhcPoyrrs0wKZNnBgYq6hKlBwyMzNx4sQJHD16tEQH/fXXX3H1\n6tVCt7u5ueHJkyf4999/ceDAAdjZ2ZXoOKxoOcIc7PDfgVb7WiH5YQN83PIA4zsOREAAYGIi7+gY\n+wrPrSRzxU4Or1+/hrOzMzw8PFC5cuUSzavUtWvXQi9TAcDly5cxYcIEAEDHjh2RlpaGlJSUYh+H\nFc4vzg/tDrTDiXuXoX35FpRu/hdBd5Xx++88PJWVQatXyzuCCqfYXwM1atTA+PHjoampidTUVCxZ\nskTqQSUkJKBOnTrixwYGBoiPj4eOjo7Uj1XRvPn4Bos9F8P1XzeYvNyKIKcR2LpFgLFjeXgqY+x/\nSvQbMTc3F+PGjStxn4Mkvu1JL2yKjlVfNTctLS1haWlZajGVZ0IS4kjoESy9sRRmaqNQaX8UtDpq\n4EEkULOmvKNjjJUmHx8f+Pj4FGufH54+o6RiYmIwYMAA3L9/P9+2adOmwdLSEiNHjgQANGvWDL6+\nvvlaDjyUVTJhyWGwc7VDTrYANQP34qF3G/z1F2BjI+/IGJMQT58hVTKZPqM0DBw4EMeOHQMA+Pv7\no3r16nxJqQTefXqH2e6zYXPCBkaZv+HFytsw1mqDyEhODIyxohX7stKhQ4fQokULmJiY4N69e0hK\nSir2lN2jRo2Cr68vXr9+jTp16mD16tXIzs4GANja2qJv375wc3NDo0aNoKKiAkdHx+KGWaEREU5F\nnsL86/NhrtMXzbweICylBtzdgLZt5R0dYyXAcyvJXLEvK61btw6KiooIDw/Hhw8f0LBhQ2zfvr20\n4isSX1bK79HrR5juNh1vPr6FedpenNpihkWLwJPkMcbEpHaH9M2bN2FhYQFANHJo/PjxAICsrCxc\nunTpB8Nk0vAx+yPW3lyLgyEHMbHBcnjusMdjLSUEBAANG8o7OsZYeSNRn8PixYuRlZUFAKhUqRIm\nTpyI8+fP499//0V8fHypBsi+7/LjyzDeY4ynb15g6MsIHJs+C3NmKcHDgxMDY6xkJLqsdP78ebx7\n9w7dunWDoaEhHj9+jBMnTiAtLQ3jx49H+/btZRFrPhX9stLz1OeYdXUW/n3zLybp7MVfi7rDzAxw\ncABq1ZJ3dIyxskrqK8F5eXkhOzsbvXv3/uHgpKGiJofPOZ+x5e4WOPg7YFrr3/HsxO+4e6sy9u0D\n+vSRd3SMsbJOakNZc3NzAQDW1taoVq0apk+fjtu3byMzMxOurq4/HimT2PWn19Hqr1YISgzCHzXu\n4dCEJdCtWRmRkZwY2E+M51aSOYlaDlOnTkXt2rVx8eJFZGZmon///sjIyEBISAhiY2PlNu9RRWo5\nJH5IxLxr8xCYEIg/THfCZW1/pKQABw8Ccrqqx5js8E1wUiW10Uo3btzAb7/9hlOnTsHIyCjPth07\ndpQ8QvZdOcIc7ArYhXW312GqyTS0jjmCxUOUsWABMG8eUKmSvCNkjP2MJGo5eHp6okePHgVu+/z5\nM6pUqSL1wCTxs7cc7sTegb2bPWqp1MLcJruxYnpTaGgA+/cDjRrJOzrGZIhbDlIl9Q7psuZnTQ6v\nMl5hkecieDz1wNZeW1Hn/XD85z8C/PknMGUKz57KKiBODlJVbudWqqiEJMSB4ANovrc5qletjqjp\nUVCLHYHBgwVwcgKmTuXEwBiTDZ5QoYwISQqBnasdlBSU4DneE610WuH4cWDBAuCff4COHeUdIWNy\nxHMryRxfVpKztE9pWH5jOVyiXLDeej0mtJkABYECtm4Fdu4Erl4FvhkDwBhjP4QvK5VhRISTESdh\nvMcY2cJsRE2Pwq8mv0IABSxcCBw5Aty+zYmBMSYffFlJDqJeRWG623S8+/QOF0ZcQEcD0TWjnBxR\nh/OjR8DNm4C2tpwDZYxVWNxykKGMrAws9lyMbk7dMNRoKIKmBIkTw8ePwJAhQEoK4OnJiYExJl+c\nHGSAiHDx0UUY7zVGwocE3Le7jxkdZkBRQREAkJoK9OoFaGoCly4BKipyDpgxVuFxcihlz1Kfob9z\nf71VcqYAABKlSURBVPzh9QeODj6K40OOQ1dVV7w9IQHo2hXo1AlwcuI7nhkrEM+tJHM8WqmUfMr5\nhM13NmNHwA4s7LIQczrNQWXFynnKPH4sWst5+nTRkFXGWCH4JjipktrcSqx4PJ56YLrbdLSs1RIh\ntiGoq1E3X5mgIGDgQGD9emDiRNnHyBhjReHkIEXx7+Mx79o83Eu8h119dqFfk34FlvPwAMaOBQ4f\nBgYMkHGQjDEmAe5zkILs3Gxs89uGNn+1gVENIzywf1BoYnB2BsaNAy5c4MTAGCu7uOXwg27H3oad\nqx301PTgN9kPjbUbF1p2505g82bAywto0UKGQTLGWDFxciihlxkvschzETyfecLBxgFDjYZCUMis\neETA8uWAi4vorud69WQcLGPlHc+tJHM8WqmYcoW5OBhyECu8V2B86/FY2W0l1KqoFVo+JwewtwfC\nwgBXV6BmTRkGyxhjBeDRSlIWnBgMO1c7VFGqAq/xXmip07LI8p8+AaNGARkZwI0bgKqqjAJljLEf\nxMlBAmmf0rDUaynOPTyHjT02Ynzr8YVeQvri3Ttg0CCgdm3g9GmgcuUiizPGWJnCo5WKQEQ4Hn4c\nRnuMQCA8nP4QE9pM+G5iSEoCunUDWrYETp7kxMAYK3+45VCIBy8fwN7NHhlZGbg88jLa67eXaL8n\nT0R3Pf/6K7B0Ka/cxhgrn+TScrh69SqaNWuGxo0bY+PGjfm2+/j4QENDAyYmJjAxMcHatWtlFlt6\nVjoWXl8Iy6OWGNF8BAJ+C5A4MYSEABYWwKJFwLJlnBgYkxqeW0nmZD5aKTc3F02bNoWnpyf09fXR\nvn17ODs7w+irVW18fHywbds2XL58uci6pDlaiYhw/uF5zL02F1YNrLCpxyboqOpIvP+NG8DIkcBf\nfwH/+Y9UQmKMfcFzK0lVmRytFBgYiEaNGqF+/foAgJEjR+LSpUt5kgMAmQ5RffL2CWa6z0Tsu1gc\nH3Ic3ep3K9b+Z8+KhqueOQNYWpZOjIwxJksyv6yUkJCAOnXqiB8bGBggISEhTxmBQIC7d++idevW\n6Nu3L6Kiokollk85n7DaZzU6HeoE6wbWCLMNK3Zi+OsvYPZs0XxJnBgYYz8LmbccvjfSBwBMTU0R\nFxcHZWVluLu7Y/DgwYiOjpZqHFefXMUMtxloo9sGobahqKNR5/s7fYUI+PNP4Phx0ZKeDRtKNTzG\nGJMrmScHfX19xMXFiR/HxcXBwMAgTxk1tf/dcdynTx/Y29vj7du30NLSylffqq86qiwtLWH5nZ/v\nce/iMPfaXIQlh2F3393o3ah3sV9Dbi4waxZw9y5w5w6gI3nXBGOMyZyPjw98fHyKtY/MO6RzcnLQ\ntGlTeHl5QU9PDx06dMjXIZ2SkoJatWpBIBAgMDAQw4cPR0xMTL66itMhnZ2bje3+27HxzkbM7DAT\ni8wXoapS1WLH//mzaFbVV6+AixcBDY1iV8EYK65Vq3jEkhSVyQ5pJSUl7N69GzY2NsjNzcXkyZNh\nZGSE/fv3AwBs/6+9uw+KumobOP5F1EGhUMpWQVIDx0AkVjDEoFFCe25DDLXUkRsmzRzKMfX2Je/J\nl6aGydsSZURTm8dbU5HGREjwJRXfMIFW1GZQxEniTVhtxABfWfb5Yx9XcREBV37s7vX5j8PZ87v4\nwezF2XP9zpkxg507d7Ju3To6duxI165d2bFjx1Nd89ifx/g4/WPcnd059eEpPF08WzVOdTVERhoS\nwt694NDy3CKEaA1JDG3Oqjfeq6ypZMHBBWRezmTV/6wi8tXIZq15NEarhX/8A4YMgcREsLdvbdRC\nCKGs5swcrHL7DF29jrW5axm0bhAqRxX5n+QzzmtcqxPD5csQHAzh4bBunSQGIYT1s7rtM3LLcolN\nj8WxsyOZMZkMfGngU41XUmLYJ2nhQvjkEzMFKYQQ7ZzVfKx0/dZ1/n3o3+wu2M1/wv5DlG9Uq2cK\n91VXG2YMUVEwf745IhZCCOXZxMdKer2e/575L95rvelg14H8j/P552v/fOrEUFcHEyfC0KEwb56Z\nghVCtI4sSLc5i585BP9vMHfq7rD2nbUEuAaYZVy9HmbOhMJCw+ltnTqZZVghRGvJ3kpm1S5LWc1t\nyqApTB88HfsO5lslXr0ajh41POAmiUEIYYssfuZg7vDT0iA21vD0c58+Zh1aCNFaMnMwK5uYOZiT\nRgPTphk+SpLEIISwZRa/IG0uJSWGM5/Xr4fXX1c6GiGEUJYkBwwlq+Hhhq235aAeIdqhpUuVjsDm\n2PyaQ10dRESAu7vhbAY52lMIYe1s4jmHp6HXG2YLdXWwZo0kBiGEuM+mF6SlZFUIIRpns8khLQ1W\nrDCUrMqZDEII0ZBNJgcpWRVCiKbZ3JqDlKwKYYFkb6U2Z1PVSrLLqhAWSp6QNqvmvHfaTHKQklUh\nLJgkB7OSUtb/JyWrQgjRMjaxIC0lq0II0TJWnxykZFUIIVrOqpODlKwKYSVkb6U2Z7UL0iUlEBQE\nCQmymZ4QQjzMZhek7++yOnu2JAYhhGgNq5s5SMmqEEI0zeZmDlKyKoQQ5mFVC9JSsiqEEOZhNTOH\n+yWr6elSsiqE1ZG9ldqcIslh3759vPrqq/Tv35/ly5c32mfWrFn079+f1157jby8vCbHu1+ympIi\nJatCWKUvvlA6ApvT5slBp9Mxc+ZM9u3bR35+PklJSZw/f75Bn4yMDC5dukRhYSEbNmwgNjb2sePJ\nLqsGR44cUTqEdkPuxQNyLx6Qe9EybZ4ccnJy8PT0pG/fvnTq1IlJkyaRmpraoE9aWhoxMTEABAYG\nUlVVRWVlZaPjScmqgfzhPyD34gG5Fw/IvWiZNk8OZWVluLu7G7/u3bs3ZWVlT+xTWlra6HhDh8K/\n/vVsYhVCCFvV5snBrpn1pY/W4D7udVKyKoQQ5tfmpaxubm6UlJQYvy4pKaF3795N9iktLcXNzc1k\nLA8PDzp3lsxw3xeyaGck9+IBq7kXZvgv0GruxVPy8PB4Yp82Tw4BAQEUFhZSVFSEq6srycnJJCUl\nNegTERHBmjVrmDRpEqdOnaJbt26oVCqTsS5dutRWYQshhE1p8+TQsWNH1qxZw9tvv41Op2PatGl4\neXmxfv16AGbMmMHo0aPJyMjA09MTR0dHNm3a1NZhCiGETbPovZWEEEI8Gxb5hHRzHqKzFVOnTkWl\nUjFo0CClQ1FUSUkJI0aMYODAgfj4+JCQkKB0SIq5ffs2gYGB+Pn54e3tzaJFi5QOSXE6nQ61Ws2Y\nMWOUDkVRffv2xdfXF7VazetPeDDM4mYOOp2OAQMGcPDgQdzc3BgyZAhJSUl4eXkpHZoijh8/jpOT\nE9HR0fz+++9Kh6OYiooKKioq8PPzo6amBn9/f3bv3m2zfxc3b96ka9eu1NXVERwczDfffENwcLDS\nYSlm5cqVaDQaqqurSUtLUzocxfTr1w+NRoOLi8sT+1rczKE5D9HZkpCQELp37650GIrr2bMnfn5+\nADg5OeHl5UV5ebnCUSmna9euANy9exedTtesNwNrVVpaSkZGBh9++OETt6m2Bc29BxaXHJrzEJ2w\nbUVFReTl5REYGKh0KIqpr6/Hz88PlUrFiBEj8Pb2VjokxcyZM4cVK1bQoYPFvd2ZnZ2dHWFhYQQE\nBLBx48Ym+1rc3WruQ3TCNtXU1DBhwgRWr16Nk5OT0uEopkOHDpw5c4bS0lKOHTtms1tH7Nmzh5de\negm1Wi2zBiArK4u8vDz27t1LYmIix48ff2xfi0sOzXmITtime/fuMX78eKKionj33XeVDqddcHZ2\n5p133uG3335TOhRFnDx5krS0NPr168fkyZM5fPgw0dHRSoelmF69egHQo0cPIiMjycnJeWxfi0sO\nDz9Ed/fuXZKTk4mIiFA6LKEwvV7PtGnT8Pb2Zvbs2UqHo6hr165RVVUFwK1bt/jll19Qq9UKR6WM\nuLg4SkpKuHz5Mjt27CA0NJQtW7YoHZYibt68SXV1NQC1tbUcOHCgySpHi0sODz9E5+3tzcSJE222\nIgVg8uTJDBs2jIsXL+Lu7m6zDwxmZWWxdetWMjMzUavVqNVq9u3bp3RYirhy5QqhoaH4+fkRGBjI\nmDFjeOutt5QOq12w5Y+lKysrCQkJMf5dhIeHM2rUqMf2t7hSViGEEM+exc0chBBCPHuSHIQQQpiQ\n5CCEEMKEJAchhBAmJDkIIYQwIclBCCGECUkOQgghTEhyEEIIYUKSgxAWqK6ujoKCAqXDEFZMkoNo\n1xISEujcuTNbt24FICYmhnHjxqHRaFo8Vn19PXPnzm3Q9uWXX5KWlkZcXFyTbY9KS0vjzTffbNZ1\n4+PjcXJy4sqVK4Bhqw9/f3/jz1RcXMzy5ctJSUlh7dq1pKenc+/ePRITE/n2229ZvHixyZhHjhwx\nbkHdkliaY968eY1eU9iWjkoHIERTZs2axf79+3Fzc+PmzZsEBwczffr0Fo9z/fp1Nm3axNGjR41t\nBw8eRK/XExERQV5eHsePH+fOnTsmbSEhISbj9e/fn6CgoGZde/DgwcycOZMdO3YwZ84c3njjDRYu\nXMj777/PH3/8wbx589i+fTsODg4ATJgwgRs3bjB58mRcXFx47733yM7ObnA+RUFBAWFhYS2OpTk8\nPDx4+eWXzTaesEwycxDtXlRUFD/88AObN2/mgw8+aNUY3bt3Z+7cuTz//PPGtpMnTzJ48GAA1Go1\nhw8f5uTJk8YdTO+3NebXX39l2LBhzbq2Vqvl008/JSkpCYDq6mpjHFOnTmXJkiXGxACGN+eVK1fy\n448/AvDKK69QWlraYMyHD65pSSzNkZOTY9MHJQkDSQ6i3YuIiGDXrl2MHj2ajh0fTHaTkpLYsmUL\ncXFxfP/99yavu3btWpPjarVa43GaTk5OVFRUoNVqcXR0BMDR0ZGKiopGX5uTk4NarWbXrl34+/sD\nUF5ezldffcXmzZuZMWOGsa9er6dXr144Oztz4cIFTp8+jb+/PxqNhqqqKuPxpveVl5czf/58YmJi\nADh79ixDhw5tcO0hQ4a0OJbG2vbu3Ut8fDyJiYnGn1Wr1fLiiy82ee+E9ZPkINq9Cxcu4OPj0+DA\nmoKCAvbv3090dDT29vb4+PgYv1dcXExZWRkbN26kqKiIysrKRsetr6/H3t4eAJ1Oh729faNtjcnP\nzyc3N5dx48Zx4sQJAGJjY5k9ezYjR440JpiHTZkyhW3btlFZWUmPHj3Iysoy+Y9fr9eTnZ3N8OHD\n6dKlC0eOHCE0NBQ3NzdjH41GQ0BAQItjebStuLiYuLg45syZg5eXFzU1Ndy4cUPOJBeAJAfRzmm1\nWoqLi/n888/Ztm2bsX3r1q3GQ57Onj3b4DCbF154gZ9//pkzZ85w6NAhunXr1ujYKpWK2tpaAP7+\n+2969OjRaNujampqAEhJSSElJYUuXbpQVFSEXq/HycmJ7Oxs45t+RUUFrq6uAIwfP55du3YZj6u8\nd++eSWwHDhwgMDAQlUrFX3/9RVZWFgsWLGjQp76+vsWxPNoWFBTE7t278fT0ZM+ePdjZ2eHp6Ulu\nbq58pCQASQ6iHbt9+zapqalERkYSFhaGRqPhxo0bAFRVVTFgwADu3r1LdXV1g1nFn3/+yfXr11Gr\n1ZSVlT32o6Hg4GDOnTsHGD6aCQoKatCWm5trXOi9fPmy8XW5ubmEh4ezYMECTp8+TUZGhjEegKNH\njxqTQ25urnFd47nnnsPHx4erV68CMHLkSOO1wJCMNmzYwOrVq9Hr9Wzfvp1FixZRV1fHoUOHAMOM\n6f51WhJLY20ODg6MHTuW8PBwQkJC0Gq1aDQa/P39yczMbPkvTFgVSQ6iXUpNTSUkJMT4X/bFixdx\ncHBg1qxZlJWVER0dzYEDB0hNTcXDw8NYJgrg7e3NokWLAFiyZAl9+vShtraW+Ph4zp8/z6pVq6it\nrSU0NJSrV6+yc+dO7OzsGDVqVKNtZWVlxsogMHzMNWLECHr37s2tW7dwdnZm0KBB2Nvb89NPP5Gd\nnY2rqyuHDx9m2bJlZGRkGF8bFRVlnOX4+voSHh7O119/TVJSEuvXr2fDhg24uLjw3XffsXjxYlQq\nFSqVip49ewKGEtbhw4e3OJZH29zc3Jg4cSLnzp0jPT2d5ORknJ2d8fDw4MSJE/j6+j6z362wEHoh\nxBNlZmY2+f2Kigq9Xq/XV1VV6adPn/7M4khISHhin4dj+eijj9o0PmE95DkHIZrhzp07TX7/s88+\nY+zYsRQWFrJs2bJnEkN5eXmDhenmxLJ06dI2i09YFzlDWggLkZycTHh4eKOVUEKYmyQHIYQQJmRB\nWgghhAlJDkIIIUxIchBCCGFCkoMQQggTkhyEEEKYkOQghBDChCQHIYQQJiQ5CCGEMPF/dKEv/A4J\nJaAAAAAASUVORK5CYII=\n",
- "text": [
- "<matplotlib.figure.Figure at 0x79c2c50>"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Mass flow rate of the and the composition of the gel leaving the absorber are 0.535 kg gel/s and 0.0187 kg No2/kg gel\n"
- ]
- }
- ],
- "prompt_number": 24
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 3.9,Page number:194"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 3.9\n",
- "#Cocurrent Adsorption of NO, on Silica Gel\n",
- "\n",
- "\n",
- "#Variable declaration\n",
- "\t# 1-Nitrogen dioxide 2-air\n",
- "\t# From Example 3.8\n",
- "Y1 = 0.0242 \t\t\t\t\t# [kg NO2/kg air]\n",
- "Y2 = 0.0036 \t\t\t\t\t# [kg NO2/kg air]\n",
- "Vs = 0.488 \t\t\t\t\t# [kg air/s]\n",
- "M1 = 46 \t\t\t\t\t# [gram/mole]\n",
- "M2 = 29 \t\t\t\t\t# [gram/mole]\n",
- "\t# However here\n",
- "import math \n",
- "from pylab import *\n",
- "from numpy import *\n",
- "X1 = 0 \n",
- "\n",
- "\n",
- "#Calculations\n",
- "\n",
- "\t# Data_eqm1 = [P1 m] (where 'P1' is Partial pressure of NO2 in mm of Hg, 'm' is solid \tconcentration in kg NO2/kg gel)\n",
- "Data_eqm1 =matrix([[0,0],[2,0.4],[4,0.9],[6,1.65],[8,2.60],[10,3.65],[12,4.85]]) \n",
- "\n",
- "\t# The equilibrium data are converted to mass ratios as follows:\n",
- "\t# Yi = P1/(760-P1)*46/29 (kg NO2/kg air) Xi = m/100 (kg NO2/kg gel)\n",
- "\t# Equilibrium data\n",
- "\t# Data_eqm = [Xi*100 Yi*100]\n",
- "\n",
- "Data_eqm=matrix([[0,0],[0.4,0.4185242],[0.9,0.8392629],[1.65,1.2622336],[2.6,1.6874541],[3.65,2.1149425],[4.85,2.5447169]]) \n",
- "\t# From the intersection of the minimum operating line and equilibrium curve\n",
- "X2_max = 0.0034 \t\t\t\t# [kg NO2/kg gel]\n",
- "S = (Y1-Y2)/(X1-X2_max) \t\t\t# [kg gel/kg air]\n",
- "Ls_min = -S*Vs \t\t\t\t# [kg/s]\n",
- "\n",
- "Ls = 2*Ls_min \t\t\t\t\t# [kg/s]\n",
- "Data_minSlope =matrix([[X1,Y1],[X2_max,Y2]])*100 \n",
- "\n",
- "\n",
- "#Result\n",
- "\n",
- "\n",
- "a1=plot(Data_eqm[:,0],Data_eqm[:,1],label='$Equilibrium line $')\n",
- "a2=plot(Data_minSlope[:,0],Data_minSlope[:,1],label='$Minimum Flow Rate Line$') \n",
- "legend(loc='upper right') \n",
- "xlabel(\"Xa*100, kg NO2/kg gel\") \n",
- "ylabel(\"Ya*100, kh NO2/kg air\") \n",
- "title('X-Y diagram for the cocurrent adsorber')\n",
- "annotate(\"M\", xy=(0.34,0.36), xytext=(0.34,0.36)\n",
- " )\n",
- "annotate(\"X2(max)\", xy=(0.34,0.0), xytext=(0.34,0.01)\n",
- " )\n",
- "show(a1)\n",
- "show(a2)\n",
- "print\"The mass velocity of the silica gel required for cocurrent operation is\",round(Ls,2),\"kg/s which is 11 times that required for countercurrent operation\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "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\n",
- "text": [
- "<matplotlib.figure.Figure at 0x79d1da0>"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The mass velocity of the silica gel required for cocurrent operation is 5.91 kg/s which is 11 times that required for countercurrent operation\n"
- ]
- }
- ],
- "prompt_number": 40
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 3.10,Page number:199"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 3.10\n",
- "#Benzene Recovery System: Number of Ideal Stages\n",
- "\n",
- "#Variable declaration\n",
- "# From Example 3.7\n",
- "X2a = 0.05 \n",
- "X0 = X2a \t\t\t\t# [kmole benzene/kmole oil]\n",
- "Y2a = 0.012 \n",
- "Y1 = Y2a \t\t\t\t# [kmole benzene/kmole dry gas]\n",
- "X1a = 0.480 \n",
- "Xn = X1a \t\t\t\t# [kmole benzene/kmole oil]\n",
- "Y1a = 0.080 \n",
- "Yn1 = Y1a \t\t\t\t# [kmole benzene/kmole dry gas]\n",
- "\t# Ideal stages for absorber section\n",
- "\n",
- "m = 0.097 \t\t\t\t# [mole of oil/mole of dry gas]\n",
- "Lsa = 0.006 \t\t\t\t# [kmole/s]\n",
- "Vsa = 0.038 \t\t\t\t# [kmole/s]\n",
- "\n",
- "#Calculations\n",
- "\n",
- "A = Lsa/(m*Vsa) \t\t\t# [Absorption factor]\n",
- "import math\n",
- "\t# From equation 3.54 by Kremser equation\n",
- "Nk = math.log((((Yn1-m*X0)*(1-1/A))/(Y1-m*X0))+1/A)/(math.log(A)) \n",
- "\n",
- "\n",
- "\t# Ideal stages from graph \n",
- "\t# Stair case construction is being made between equilibrium curve and operating line from \tpiont X2a,Y2a to X1a,Y1a\n",
- "\t# A more precise estimate of stages\n",
- "\t# From figure 3.25 or from graph made for absorber in Example 3.7\n",
- "Xa = 0.283 \n",
- "Xb = 0.480 \n",
- "Xc = 0.530 \n",
- "Na = 3+(Xb-Xa)/(Xc-Xa)\n",
- "print\"ABSORBER\"\n",
- "print\"The number of ideal stages from graph in the absorber is\",round(Na,1)\n",
- "print\"Number of ideal stages from Kremser equation in the absorber is\",round(Nk,2)\n",
- "\t# Ideal satges for stripping section\n",
- "X2s = 0.480 \n",
- "X0 = X2s \t\t\t\t# [kmol benzene/kmol oil]\n",
- "Y2s = 0.784 \n",
- "Y1 = Y2s \t\t\t\t# [kmol benzene/kmol steam]\n",
- "X1s = 0.05 \n",
- "Xn = X1s \t\t\t\t# [kmol benzene/kmol oil]\n",
- "Y1s = 0 \n",
- "Yn1 = Y1s \t\t\t\t# [kmol benzene/kmol steam]\n",
- "\n",
- "\t# Similarly here also stair case construction is being made between equilibrium curve and \toperating line from piont X0,Y1 to Xn,Yn1\n",
- "\t# A more precise estimate of stages\n",
- "\t# From figure 3.26 or from graph made for stripping section in Example 3.7\n",
- "Ns = 5+(0.070-0.050)/(0.070-0.028) \n",
- "\n",
- "#Result\n",
- "print\"STRIPPER\"\n",
- "print\"The number of ideal stages from graph in the stripping section is\",round(Ns,1)"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "ABSORBER\n",
- "The number of ideal stages from graph in the absorber is 3.8\n",
- "Number of ideal stages from Kremser equation in the absorber is 3.16\n",
- "STRIPPER\n",
- "The number of ideal stages from graph in the stripping section is 5.5\n"
- ]
- }
- ],
- "prompt_number": 7
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/Chapter 4.ipynb b/Beginning_C++_through_Game_Programming/Chapter 4.ipynb
deleted file mode 100755
index 89ea220d..00000000
--- a/Beginning_C++_through_Game_Programming/Chapter 4.ipynb
+++ /dev/null
@@ -1,996 +0,0 @@
-{
- "metadata": {
- "name": ""
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 4:Equipment for Gas-Liquid Mass-Transfer Operations"
- ]
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 4.2,Page number:227"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 4.2\n",
- "#Specific Liquid Holdup and Void Fraction in Second- and Third-Generation Random Packings \n",
- "\n",
- "#Variable declaration\n",
- "u = 3*10**-6 \t\t\t\t# [Kinematic viscosity, square m/s]\n",
- "v = 0.01 \t\t\t\t# [Superficial liquid velocity, m/s]\n",
- "g = 9.8 \t\t\t\t# [square m/s]\n",
- "\n",
- "\t# From table 4.1\n",
- "\t# For metal pall rings\n",
- "a_pr = 112.6 \t\t\t\t# [ square m/cubic m]\n",
- "e_pr = 0.951 \n",
- "Ch_pr = 0.784 \n",
- "\t# For Hiflow rings\n",
- "a_hr = 92.3 \t\t\t\t# [square m/cubic m]\n",
- "e_hr = 0.977 \n",
- "Ch_hr = 0.876 \n",
- "\n",
- "#Calculations\n",
- "\n",
- "\t# Renoylds and Froude's number for metal pall rings\n",
- "Rel_pr = v/(u*a_pr) \n",
- "Frl_pr = v**2*a_pr/g \n",
- "\t# From equation 4.5 since Rel is greater than 5, for pall rings\n",
- "\t# ah/a = x_pr\n",
- "x_pr = 0.85*Ch_pr*Rel_pr**0.25*Frl_pr**0.1 \n",
- "\t# From equation 4.3\n",
- "hl_pr = (12*Frl_pr/Rel_pr)**(1.0/3.0)*(x_pr)**(2.0/3.0) \n",
- "\n",
- "\n",
- "\t# Renoylds and Froude's number for Hiflow rings\n",
- "Rel_hr = v/(u*a_hr) \n",
- "Frl_hr = v**2*a_hr/g \n",
- "\t# From equation 4.5 since Rel is greater than 5, for pall rings\n",
- "\t# ah/a = x_pr\n",
- "x_hr = 0.85*Ch_hr*Rel_hr**0.25*Frl_hr**0.1 \n",
- "\t# From equation 4.3\n",
- "hl_hr = (12*Frl_hr/Rel_hr)**(1.0/3.0)*(x_hr)**(2.0/3.0) \n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The specific liquid holdup for Metal pall ring and Hiflow ring are\",round(hl_pr,3),\"cubic m holdup/cubic m packed bed and\",round(hl_hr,3),\"cubic m holdup/cubic m packed bed respectively\"\n",
- " "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The specific liquid holdup for Metal pall ring and Hiflow ring are 0.066 cubic m holdup/cubic m packed bed and 0.064 cubic m holdup/cubic m packed bed respectively\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 4.3,Page number:233"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 4.3\n",
- "#Pressure Drop in Beds Packed with First- and Third-Generation Random Packings\n",
- "\n",
- "#Variable declaration\n",
- "\t# a-ammonia b-air c-water\n",
- "P = 101.3 \t\t\t\t\t# [kPa]\n",
- "T = 293 \t\t\t\t\t# [K]\n",
- "R = 8.314 \n",
- "Vb = 20 \t\t\t\t\t# [kmole/h]\n",
- "xab = 0.05 \n",
- "Vc = 1500 \t\t\t\t\t# [kg/h]\n",
- "d = 0.9 \t\t\t\t\t# [ammonia absorbed]\n",
- "Ma = 17 \t\t\t\t\t# [gram/mole]\n",
- "Mb = 29 \t\t\t\t\t# [gram/mole]\n",
- "Mc = 18 \t\t\t\t\t# [gram/mole]\n",
- "g = 9.8 \t\t\t\t\t# [square m/s]\n",
- "\n",
- "\n",
- "#Calculation\n",
- "\n",
- "import math\n",
- "\t# For Inlet gas\n",
- "Mg = (1-xab)*Mb+xab*Ma \t\t\t# [gram/mole]\n",
- "V = Vb*Mg/3600 \t\t\t\t# [kg/h]\n",
- "rowg = P*Mg/(R*T) \t\t\t\t# [kg/cubic m]\n",
- "Qg = V/rowg \t\t\t\t\t# [cubic m/s]\n",
- "\n",
- "\t# For exiting liquid\n",
- "b = Vb*xab*Ma*d \t\t\t\t# [ammonia absorbed in kg/h]\n",
- "L = (Vc+b)/3600 \t\t\t\t# [kg/s]\n",
- "rowl = 1000 \t\t\t\t\t# [kg/cubic m]\n",
- "\n",
- "X = (L/V)*(math.sqrt(rowg/rowl)) \n",
- "\t# From equation 4.8\n",
- "Yflood = math.exp(-(3.5021+1.028*math.log(X)+0.11093*(math.log(X))**2)) \n",
- "\n",
- "\t\n",
- "\t#Illustration 4.3(a)\n",
- "\t# Solution(a)\n",
- "\t# For 25-mm ceramic Raschig rings\n",
- "Fp = 179 \t\t\t\t\t# [square ft/cubic ft]\n",
- "ul = 0.001 \t\t\t\t\t# [Pa.s]\n",
- "\t# From equation 4.6\n",
- "Csflood = math.sqrt(Yflood/(ul**0.1*Fp)) \t# [m/s]\n",
- "\t# From equation 4.7\n",
- "vgf = Csflood/(math.sqrt(rowg/(rowl-rowg))) \t# [m/s]\n",
- "\t# From equation 4.9\n",
- "deltaPf = 93.9*(Fp)**0.7 \t\t\t# [Pa/m of packing]\n",
- "\n",
- "\t# For operation at 70% of the flooding velocity\n",
- "f = 0.7 \n",
- "\t# From equation 4.10\n",
- "vg = f*vgf \t\t\t\t\t# [m/s]\n",
- "D = math.sqrt(4*Qg/(vg*math.pi)) \n",
- "\t\n",
- "\t# From Table 4.1, for 25 mm ceramic Raschig rings\n",
- "a_c = 190 \t\t\t\t\t# [square m/cubic m]\n",
- "Ch_c = 0.577 \n",
- "e_c = 0.68 \n",
- "Cp_c = 1.329 \n",
- "\n",
- "\t# From equation 4.13\n",
- "dp = 6*(1-e_c)/a_c \t\t\t\t # [m]\n",
- "\t# From equation 4.12\n",
- "Kw = 1/(1+(2*dp/(3*D*(1-e_c)))) \n",
- "\n",
- "\t# The viscosity of the gas phase is basically that of air at 293 K and 1 atm\n",
- "ug = 1.84*10**-5 \t\t\t\t# [kg/m.s]\n",
- "\t# From equation 4.15\n",
- "Reg = vg*rowg*dp*Kw/(ug*(1-e_c)) \n",
- "\t# From equation 4.14\n",
- "sia_o = Cp_c*((64/Reg)+(1.8/(Reg**0.08))) \n",
- "\n",
- "\t# From equation 4.11\n",
- "\t# deltaP_o/z = T\n",
- "T = sia_o*a_c*rowg*vg**2/(2*Kw*e_c**3) \t# [Pa/m]\n",
- "\n",
- "\t# Now\n",
- "Gx = L/((math.pi*D**2.0)/4) \t\t\t# [kg/square m.s]\n",
- "Rel = Gx/(a_c*ul) \n",
- "Frl = Gx**2*a_c/(rowl**2*g) \n",
- "\n",
- "\t# From equation 4.5\n",
- "\t# ah/a = x_pr\n",
- "x = 0.85*Ch_c*Rel**0.25*Frl**0.1 \n",
- "\t# From equation 4.3\n",
- "hl = (12*Frl/Rel)**(1.0/3.0)*(x)**(2.0/3.0) \n",
- "\n",
- "\t# From equation 4.16\n",
- "\t# daltaP/deltaP_o = Y\n",
- "Y = (e_c/(e_c-hl))**1.5*math.exp(Rel/200) \n",
- "\t# Therefore \n",
- "\t# deltaP/z = H\n",
- "H = Y*T \t\t\t\t\t# [Pa/m]\n",
- "\n",
- "#Result\n",
- "\n",
- "\n",
- "print\"The superficial velocity is\",round(vgf,3),\" m/s\\n\" \n",
- "print\"The pressure drop at flooding is\",round(deltaPf),\"Pa/m\\n\" \n",
- "print\"The superficial velocity at 70 percent of flooding is\",round(vg,4),\"m/s\\n\" \n",
- "print\"The column inside diameter at 70 percent of flooding is\" ,round(D,3),\" m\\n\" \n",
- "print\"The pressure drop for operation at 70 percent of flooding is\",round(H),\"Pa/m\\n\\n\" \n",
- "\n",
- "\n",
- "#Illustration 4.3(b) \n",
- "# Solution (b)\n",
- "# Similarly for 25 mm metal Hiflow rings above quantities are determined\n",
- "\n",
- "#Calcualtion\n",
- "\n",
- "Fp1 = 42 \t\t\t\t\t\t# [square ft/cubic ft]\n",
- "Csflood1 = math.sqrt(Yflood/(ul**0.1*Fp1)) \t\t# [m/s]\n",
- "vgf1 = Csflood1/(math.sqrt(rowg/(rowl-rowg))) \t\t# [m/s]\n",
- "\t# From equation 4.9\n",
- "deltaPf1 = 93.9*(Fp1)**0.7 \t\t\t\t# [Pa/m of packing]\n",
- "\n",
- "\t# For operation at 70% of the flooding velocity\n",
- "f = 0.7 \n",
- "\t# From equation 4.10\n",
- "vg1 = f*vgf1 \t\t\t\t\t\t# [m/s]\n",
- "D1 = math.sqrt(4*Qg/(vg1*math.pi)) \n",
- "\n",
- "\t# For Hiflow rings\n",
- "a_h = 202.9 \t\t\t\t\t\t# [square m/cubic m]\n",
- "e_h = 0.961 \n",
- "Ch_h = 0.799 \n",
- "Cp_h = 0.689 \n",
- "\n",
- "\t# From equation 4.13\n",
- "dp1 = 6*(1-e_h)/a_h \t\t\t\t\t# [m]\n",
- "\t# From equation 4.12\n",
- "Kw1 = 1/(1+(2*dp1/(3*D1*(1-e_h)))) \n",
- "\n",
- "\t# The viscosity of the gas phase is basically that of air at 293 K and 1 atm\n",
- "ug = 1.84*10**-5 \t\t\t\t\t# [kg/m.s]\n",
- "\t# From equation 4.15\n",
- "Reg1 = vg1*rowg*dp1*Kw1/(ug*(1-e_h)) \n",
- "\t# From equation 4.14\n",
- "sia_o1 = Cp_h*((64/Reg1)+(1.8/(Reg1**0.08))) \n",
- "\n",
- "\t# From equation 4.11\n",
- "\t# deltaP_o/z = T\n",
- "T1 = sia_o1*a_h*rowg*vg1**2/(2*Kw1*e_h**3) \t\t# [Pa/m]\n",
- "\n",
- "\t# Now\n",
- "Gx1 = L/(math.pi*D1**2/4) \t\t\t\t# [kg/square m.s]\n",
- "Rel1 = Gx1/(a_h*ul) \n",
- "Frl1 = Gx1**2*a_h/(rowl**2*g) \n",
- "\n",
- "\t# From equation 4.5\n",
- "\t# ah/a = x_pr\n",
- "x1 = 0.85*Ch_h*Rel1**0.25*Frl1**0.1 \n",
- "\t# From equation 4.3\n",
- "hl1 = (12*Frl1/Rel1)**(1.0/3.0)*(x1)**(2.0/3.0) \n",
- "\n",
- "\t# From equation 4.16\n",
- "\t# daltaP/deltaP_o = Y\n",
- "Y1 = (e_h/(e_h-hl1))**1.5*math.exp(Rel1/200) \n",
- "\t# Therefore \n",
- "\t# deltaP/z = H\t\n",
- "H1 = Y1*T1 # [Pa/m]\n",
- "\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The superficial velocity is\",round(vgf1,3),\"m/s\\n\"\n",
- "print\"The pressure drop at flooding is\",round(deltaPf1),\" Pa/m\\n\" \n",
- "print\"The superficial velocity at 70 percent of flooding is\",round(vg1,2),\"m/s\"\n",
- "print\"The column inside diameter at 70 percent of flooding is\",round(D1,3),\" m\\n\" \n",
- "print\"The pressure drop for operation at 70 percent of flooding is\",round(H1),\"Pa/m\\n\\n\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The superficial velocity is 1.326 m/s\n",
- "\n",
- "The pressure drop at flooding is 3545.0 Pa/m\n",
- "\n",
- "The superficial velocity at 70 percent of flooding is 0.9283 m/s\n",
- "\n",
- "The column inside diameter at 70 percent of flooding is 0.428 m\n",
- "\n",
- "The pressure drop for operation at 70 percent of flooding is 505.0 Pa/m\n",
- "\n",
- "\n",
- "The superficial velocity is 2.738 m/s\n",
- "\n",
- "The pressure drop at flooding is 1285.0 Pa/m\n",
- "\n",
- "The superficial velocity at 70 percent of flooding is 1.92 m/s\n",
- "The column inside diameter at 70 percent of flooding is 0.298 m\n",
- "\n",
- "The pressure drop for operation at 70 percent of flooding is 443.0 Pa/m\n",
- "\n",
- "\n"
- ]
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 4.4,Page number:237"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 4.4\n",
- "#Design of a Packed-Bed Ethanol Absorber\n",
- "\n",
- "\n",
- "#Variable declaration\n",
- "\t# a-ethanol b- gas(CO2 rich vapor) c-liquid water\n",
- "P = 110 \t\t\t\t\t\t# [kPa]\n",
- "T = 303 \t \t\t\t\t\t# [K]\n",
- "R = 8.314 \n",
- "Vb = 180 \t\t\t\t\t\t# [kmole/h]\n",
- "xab = 0.02 \t\t\t\t\t\t# [molar composition of ethanol in gas]\n",
- "Vc = 151.5 \t\t\t\t\t\t# [kmole/h]\n",
- "d = 0.97 \t\t\t\t\t\t# [ethanol absorbed]\n",
- "Ma = 46 \t\t\t\t\t\t# [gram/mole]\n",
- "Mb = 44 \t\t\t\t\t\t# [gram/mole]\n",
- "Mc = 18 \t\t\t\t\t\t# [gram/mole]\n",
- "g = 9.8 \t\t\t\t\t\t# [square m/s]\n",
- "\n",
- "\n",
- "#Calculation\n",
- "\n",
- "import math\n",
- "\t# For Inlet gas\n",
- "Mg = (1-xab)*Mb+xab*Ma \t\t\t\t# [gram/mole]\n",
- "V = Vb*Mg/3600 \t\t\t\t\t# [kg/h]\n",
- "rowg = P*Mg/(R*T) \t\t\t\t\t# [kg/cubic m]\n",
- "Qg = V/rowg \t\t\t\t\t\t# [cubic m/s]\n",
- "\n",
- "\t# For exiting liquid\n",
- "b = Vb*xab*Ma*d \t\t\t\t\t# [ethanol absorbed in kg/h]\n",
- "L = (Vc*Mc+b)/3600 \t\t\t\t\t# [kg/s]\n",
- "rowl = 986 \t\t\t\t\t\t# [kg/cubic m]\n",
- "\n",
- "X = (L/V)*(math.sqrt(rowg/rowl)) \n",
- "\t# From equation 4.8\n",
- "Yflood = math.exp(-(3.5021+1.028*math.log(X)+0.11093*(math.log(X))**2)) \n",
- "\t#Illustration 4.4(a) \n",
- "\t# Solution(a)\n",
- "\n",
- "\t# For 50 mm metal Hiflow rings\n",
- "Fp = 16 \t\t\t\t\t\t# [square ft/cubic ft]\n",
- "ul = 6.31*10**-4 \t\t\t\t\t# [Pa.s]\n",
- "\t# From equation 4.6\n",
- "Csflood = math.sqrt(Yflood/(ul**0.1*Fp)) \t\t# [m/s]\n",
- "\t# From equation 4.7\n",
- "vgf = Csflood/(math.sqrt(rowg/(rowl-rowg))) \t\t# [m/s]\n",
- "\t# From equation 4.9\t\n",
- "deltaPf = 93.9*(Fp)**0.7 \t\t\t\t# [Pa/m of packing]\n",
- "\n",
- "\t# For operation at 70% of the flooding velocity\n",
- "f = 0.7 \n",
- "\t# From equation 4.10\n",
- "vg = f*vgf \t\t\t\t\t\t# [m/s]\n",
- "D = math.sqrt(4*Qg/(vg*math.pi)) \n",
- "\n",
- "\t# From Table 4.1, for 50 mm metal Hiflow rings\n",
- "a = 92.3 \t\t\t\t\t\t # [square m/cubic m]\n",
- "Ch = 0.876 \n",
- "e = 0.977 \n",
- "Cp = 0.421 \n",
- "\n",
- "\t# From equation 4.13\n",
- "dp = 6*(1-e)/a \t\t\t\t\t# [m]\n",
- "\n",
- "\t# From equation 4.12\n",
- "Kw = 1/(1+(2*dp/(3*D*(1-e)))) \n",
- "\n",
- "\t# The viscosity of the gas phase is basically that of air at 303 K and 110 kPa\n",
- "ug = 1.45*10**-5 \t\t\t\t\t# [kg/m.s]\n",
- "\t# From equation 4.15\n",
- "Reg = vg*rowg*dp*Kw/(ug*(1-e)) \n",
- "\t# From equation 4.14\n",
- "sia_o = Cp*((64/Reg)+(1.8/(Reg**0.08))) \n",
- "\n",
- "\t# From equation 4.11\n",
- "\t# deltaP_o/z = I\n",
- "I = sia_o*a*rowg*vg**2/(2*Kw*e**3) \t\t\t# [Pa/m]\n",
- "\n",
- "\t# Now\n",
- "Gx = L/(math.pi*D**2.0/4.0) \t\t\t\t# [kg/square m.s]\n",
- "Rel = Gx/(a*ul) \n",
- "Frl = Gx**2*a/(rowl**2*g) \n",
- "\n",
- "\t# From equation 4.5\n",
- "\t# ah/a = x\n",
- "x = 0.85*Ch*Rel**0.25*Frl**0.1 \n",
- "\t# From equation 4.3\n",
- "hl = (12*Frl/Rel)**(1.0/3.0)*(x)**(2.0/3.0) \n",
- "\n",
- "\t# From equation 4.16\n",
- "\t# daltaP/deltaP_o = Y\n",
- "Y = (e/(e-hl))**1.5*math.exp(Rel/200) \n",
- "\t# Therefore \n",
- "\t# deltaP/z = H\n",
- "H = Y*I \t\t\t\t\t\t# [Pa/m]\n",
- "\n",
- "\n",
- "#Result\n",
- "print\"PArt-a\\n\"\n",
- "\n",
- "print\"Since the pressure drop is too high, we must increase the tower diameter to reduce the pressure drop\"\n",
- "\t# The resulting pressure drop is too high therefore, we must increase the tower diameter \tto reduce the pressure drop. Appendix D presents a Mathcad computer \n",
- "\t# program designed to iterate automatically until the pressure drop criterion is \t\t\tsatisfied.\n",
- "\t# From the Mathcad program we get\n",
- "D1 = 0.738 \t\t\t\t\t\t# [m]\n",
- "\n",
- "print\"The tower diameter for pressure drop of 300 Pa/m of packed height is\",D1,\"m\"\n",
- "\n",
- "\t#Illustration 4.4(b) \n",
- "\t# Solution(b)\n",
- "\n",
- "print\"\\nPart-(b)\\n\"\n",
- "\t# For the tower diameter of D = 0.738 m, the following intermediate results were obtained \tfrom the computer program in Appendix D:\n",
- "vg1 = 2.68 \t\t\t\t\t\t# [m/s]\n",
- "vl1 = 0.00193 \t\t\t\t\t\t# [m/s]\n",
- "hl1 = 0.017 \n",
- "ah1 = 58.8 \t\t\t\t\t\t# [square m/cubic m]\n",
- "Reg1 = 21890 \n",
- "Rel1 = 32.6 \n",
- "Kw1 = 1/(1+(2*dp/(3*D1*(1-e)))) \n",
- "\n",
- "#Calculation\n",
- "\n",
- "f1 = vg1/vgf \n",
- "print\"The fractional approach to flooding conditions is \",round(f1,2)\n",
- "\n",
- "\t#Illustration 4.4(c) \n",
- "\t# Solution(c)\n",
- "\t# For ethanol\n",
- "\n",
- "print \"\\nPart-(c)\\n\"\n",
- "Vc_a = 167.1 \t\t\t\t\t\t# [cubic cm/mole]\n",
- "sigma_a = 4.53*10**-10 \t\t\t\t# [m]\n",
- "\t# E/k = M\n",
- "M_a = 362.6 \t\t\t\t\t\t# [K]\n",
- "\n",
- "\t# For carbon dioxide\n",
- "sigma_b = 3.94*10**-10 \t\t\t\t# [m]\n",
- "M_b = 195.2 \t\t\t\t\t\t# [K]\n",
- "\n",
- "\t# From equation 1.48\n",
- "Vb_a = 0.285*Vc_a**1.048 \t\t\t\t# [cubic cm/mole]\n",
- "\n",
- "e1 = (9.58/(Vb_a)-1.12) \n",
- "\t# From equation 1.53\n",
- "Dl = 1.25*10**-8*((Vb_a)**-0.19 - 0.292)*T**1.52*(ul*10**3)**e1 \t # [square cm/s]\n",
- "\n",
- "\t# From equation 1.49\n",
- "Dg = 0.085 \t\t\t\t\t\t# [square cm/s] \n",
- "\n",
- "\t# From Table 4.2, for 50 mm metal Hiflow rings\n",
- "Cl = 1.168\n",
- "Cv = 0.408 \n",
- "\t# From equation 4.17\n",
- "kl = 0.757*Cl*math.sqrt(Dl*a*vl1*10**-4/(e*hl1)) \t# [m/s]\n",
- "mtcl = kl*ah1 \t\t\t\t\t\t# [s**-1]\n",
- "\n",
- "Sc = ug/(rowg*Dg*10**-4) \n",
- "\t# From equation 4.18\n",
- "ky = 0.1304*Cv*(Dg*10**-4*P*1000/(R*T))*(Reg1/Kw1)**(3.0/4.0)*Sc**(2.0/3.0)*(a/(math.sqrt(e*(e-hl1)))) \t\t\t\t\t\t\t # [mole/square m.s]\n",
- "mtcg = ky*ah1*10**-3 \t\t\t\t\t # [kmole/cubic m.s]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The gas and liquid volumetric mass transfer coefficients are\",round(mtcg,3),\"kmole/cubic m.s and\",round(mtcl,4),\"s**-1 respectively\"\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "PArt-a\n",
- "\n",
- "Since the pressure drop is too high, we must increase the tower diameter to reduce the pressure drop\n",
- "The tower diameter for pressure drop of 300 Pa/m of packed height is 0.738 m\n",
- "\n",
- "Part-(b)\n",
- "\n",
- "The fractional approach to flooding conditions is 0.58\n",
- "\n",
- "Part-(c)\n",
- "\n",
- "The gas and liquid volumetric mass transfer coefficients are 0.192 kmole/cubic m.s and 0.0074 s**-1 respectively\n"
- ]
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 4.5,Page number:245"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 4.5\n",
- "#Stripping Chloroform from Water by Sparging with Air\n",
- "\n",
- "\n",
- "#Variable declaration\n",
- "\t# a-chloroform b-water c-air\n",
- "T = 298 \t\t\t\t\t\t# [K]\n",
- "Dv = 1 \t\t\t\t\t\t# [vessel diameter, m]\n",
- "Vb = 10 \t\t\t\t\t\t# [kg/s]\n",
- "ca = 240*10**-6 \t\t\t\t\t# [gram/l]\n",
- "xr = 0.9 \t\t\t\t\t\t# [chloroform which is to be removed]\n",
- "m = 220 \n",
- "Ds = 0.5 \t\t\t\t\t\t# [diameter of sparger, m]\n",
- "no = 90 \t\t\t\t\t\t# [number of orifices]\n",
- "Do = 3*10**-3 \t\t\t\t\t\t# [diameter of orifice, m]\n",
- "nm = 0.6 \t\t\t\t\t\t# [mechanical efficiency]\n",
- "rowb = 1000 \t\t\t\t\t\t# [kg/cubic m]\n",
- "R = 8.314 \n",
- "Mc = 29 \t\t\t\t\t\t# [gram/mole]\n",
- "Mb = 18 \t\t\t\t\t\t# [gram/mole]\n",
- "g = 9.8 \t \t\t\t\t\t# [square m/s]\n",
- "\n",
- "#Calculation\n",
- "\n",
- "import math\n",
- "from scipy.optimize import fsolve\n",
- "Vair = 0.1 \t\t\t\t\t\t# [kg/s as calculated in chapter 3]\n",
- "mg = Vair/no \t\t\t\t\t\t# [mass flow rate through each orifice, \t\t\t\t\t\t\tkg/s]\n",
- "ug = 1.8*10**-5 \t\t\t\t\t# [kg/m.s]\n",
- "Reo = 25940 \t\t\t\t\t\t# [Renoylds number]\n",
- "\t# From equ. 4.20\n",
- "dp = 0.0071*Reo**-0.05 \t\t\t\t# [m]\n",
- "\n",
- "\t# Since the water column height is not known, therefore an iterative procedure must be \t\timplemented.\n",
- "\t# Assuming column height, Z = 0.5 m\n",
- "Z = 0.5 \t\t\t\t\t\t# [m]\n",
- "\t# For Z = 0.5 m\n",
- "rowl = 1000 \t\t\t\t\t\t# [kg/cubic m]\n",
- "Ps = 101.3 \t\t\t\t\t\t# [kPa]\n",
- "Po = Ps+(1000*9.8*0.5/1000) \t\t\t\t# [kPa]\n",
- "Pavg = (Po+Ps)/2 \t\t\t\t\t# [kPa]\n",
- "rowg = Pavg*Mc/(R*T) \t\t\t\t\t# [kg/cubic m]\n",
- "\n",
- "area = math.pi*Dv**2.0/4.0 \t\t\t\t# [square m]\n",
- "vg = Vair/(rowg*area) \t\t\t\t\t# [m/s]\n",
- "\t# In this case rowl = rowg and sigma = sigmaAW\n",
- "\t# From equation 4.22\n",
- "\t# Vg = vg\n",
- "\t# vg/vs = 0.182\n",
- "vs = vg/0.182 \t\t\t\t\t\t# [m/s]\n",
- "vl = -Vb/(rowl*area) \t\t\t\t\t# [negative because water flows downward, \t\t\t\t\t\t\tm/s]\n",
- "\t# From equ 4.21\n",
- "\n",
- "def f12(phig):\n",
- " return(vs - (vg/phig)-(-vl/(1-phig))) \n",
- "phig = fsolve(f12,0.1) \n",
- "\t# Now in this case\n",
- "S = vl/(1-phig) \n",
- "\t# Value of 'S' comes out to be less than 0.15 m/s\n",
- "\t# Therefore \n",
- "dp = (dp**3*Po/Pavg)**(1.0/3.0) \t\t\t# [m]\n",
- "\t# From equ 4.23\n",
- "a = 6*phig/dp \t\t\t\t\t\t# [m**-1]\n",
- "\t# Now we calculate diffusivity of chloroform\n",
- "Vba = 88.6 \t\t\t\t\t\t# [cubic cm/mole]\n",
- "u = 0.9*10**-3 \t\t\t\t\t# [Pa-s]\n",
- "e = (9.58/(Vba)-1.12) \n",
- "\t# From equation 1.53\n",
- "Dl = 1.25*10**-8*((Vba)**-0.19 - 0.292)*T**1.52*(u*10**3)**e \t# [square cm/s]\n",
- "\n",
- "\t# And Schmidt number is \n",
- "Scl = 833 \t\t\t\t\t\t# [Schmidt Number]\n",
- "\n",
- "\t# Now we calculate dp*g**(1/3)/Dl**(2/3) = J\n",
- "J = dp*g**(1.0/3.0)/(Dl*10**-4)**(2.0/3.0)\n",
- "Reg = dp*vs*rowl/u \t\t\t\t\t# [Gas bubble Renoylds number]\n",
- "\t# From equ 4.25\n",
- "Shl = 2 + 0.0187*Reg**0.779*Scl**0.546*J**0.116 \n",
- "\n",
- "\t# For dilute solution xbm = 1 or c = 55.5 kmole/cubic m\n",
- "\t# Then for Nb = 0\n",
- "c = 55.5 \t\t\t\t\t\t# [kmole/cubic m]\n",
- "kx = Shl*c*Dl*10**-4/dp \t\t\t\t# [kmole/square m.s]\n",
- "mtc = kx*a \t\t\t\t\t\t# [kmole/cubic m.s]\n",
- "\n",
- "L = Vb/Mb \t\t\t\t\t\t# [kmole/s]\n",
- "Gmx = L/area \t\t\t\t\t\t# [kmole/square m.s]\n",
- "V = Vair/Mc \t\t\t\t\t\t# [kmole/s]\n",
- "A = L/(m*V) \t\t\t\t\t\t# [absorption factor]\n",
- "\n",
- "\t# From equ 4.28\n",
- " \t# For, xin/xout = x = 10\n",
- "x = 10 \n",
- "Z = (Gmx/(kx*a*(1-A)))*math.log(x*(1-A)+A) \n",
- "\n",
- "\t# With this new estimated Z ,we again calculate average pressure in the # column of \twater\n",
- "Po1 = 110.1 \t\t\t\t\t\t# [kPa]\n",
- "Pavg1 = 105.7 \t\t\t\t\t\t# [kPa]\n",
- "rowg1 = Pavg1*Mc/(R*T) \n",
- "\t# Now value of rowg1 obtained is very close to value used in the first # iteration. \tTherefore on three iteractions we achieve a value of 'Z'\n",
- "Z1 = 0.904 \t\t\t\t\t\t# [m]\n",
- "\n",
- "rowgo = Po1*Mc/(R*T) \t\t\t\t\t# [kg/cubic m]\n",
- "vo1 = 4*mg/(math.pi*Do**2*rowgo) \t\t\t# [m/s]\n",
- "\t# Therefore, vo1**2/(2*gc) = F\n",
- "gc = 1 \n",
- "F = vo1**2/(2*gc) \t\t\t\t\t# [J/kg]\n",
- "\t# And R*T*math.log(Po/Ps)/Mc = G\n",
- "G = R*T*1000*math.log(Po1/Ps)/Mc \t\t\t# [J/kg]\n",
- "Zs = 0\n",
- "\t# And (Z1-Zs)*g/gc = H\n",
- "H = (Z1-Zs)*g/gc \t\t\t\t\t# [J/kg]\n",
- "\t# From equ 4.27\n",
- "W = F+G+H \t\t\t\t\t\t# [J/kg]\n",
- "\t# Now the air compressor power is\n",
- "W1 = W*Vair*10**-3/nm \t\t\t\t\t# [kW]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The depth of the water column required to achieve the specified 90percent removal efficiency is \",Z1,\"m\"\n",
- "\n",
- "print\"The power required to operate the air compressor is\",round(W1,2),\"kW\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The depth of the water column required to achieve the specified 90percent removal efficiency is 0.904 m\n",
- "The power required to operate the air compressor is 2.43 kW\n"
- ]
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 4.6,Page number:255"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 4.6\n",
- "#Design of a Sieve-may Column for Ethanol Absorption\n",
- "\n",
- "#Variable declaration\n",
- "Ff = 0.9 \t\t\t\t\t# [foaming factor]\n",
- "sigma = 70 \t\t\t\t\t# [liquid surface tension, dyn/cm]\n",
- "Do = 5 \t\t\t\t\t# [mm]\n",
- "\t#From Example 4.4\n",
- "\t# X = 0.016 \n",
- "p = 15 \t\t\t\t\t\t# [pitch, mm]\n",
- "\t# From equ 4.35\n",
- "\t# Ah/Aa\t = A\n",
- "A = 0.907*(Do/p)**2 \t\t\t\t# [ratio of vapor hole area to tray active area]\n",
- "\n",
- "#Calculations\n",
- "\n",
- "import math\n",
- "from scipy.optimize import fsolve\n",
- "\t# Assume \n",
- "t = 0.5 \t\t\t\t\t # [m]\n",
- "\t# From equ 4.32\n",
- "alpha = 0.0744*t+0.01173 \n",
- "beeta = 0.0304*t+0.015 \n",
- "\n",
- "\t# Since X<0.1, therefore\n",
- "X = 0.1 \n",
- "\t# From equ 4.31\n",
- "Cf = alpha*math.log10(1.0/X) + beeta \n",
- "\t# Since Ah/Aa > 0.1, therefore\n",
- "Fha = 1 \n",
- "Fst = (sigma/20)**0.2 \t\t\t\t# [surface tension factor]\n",
- "\t# From equ 4.30\n",
- "C = Fst*Ff*Fha*Cf \n",
- "\n",
- "\t# From Example 4.4\n",
- "rowg = 1.923 \t\t\t\t\t# [kg/cubic m]\n",
- "rowl = 986 \t\t\t\t\t# [kg/cubic m]\n",
- "Qg = 1.145 \t\t\t\t\t# [cubic m/s]\n",
- "\t# From equation 4.29\n",
- "vgf = C*(math.sqrt((rowl-rowg)/rowg)) \t\t# [m/s]\n",
- "vgf=2.07 #approximated for precise answer\n",
- "\t# Since X<0.1\n",
- "\t# Equ 4.34 recommends Ad/At = B = 0.1\n",
- "B = 0.1 \n",
- "\t# For an 80% approach to flooding, equation 4.33 yields\n",
- "f = 0.8 \n",
- "D =math.sqrt((4*Qg)/(f*vgf*math.pi*(1-B))) \t# [m]\n",
- "\t# At this point, the assumed value of tray spacing ( t = 0.5 m) must be # checked \tagainst the recommended values of Table 4.3. Since the calculated\n",
- "\t# value of D < 1.0 m, t = 0.5 m is the recommended tray spacing, and no\n",
- "\t# further iteration is needed.\n",
- "\n",
- "def f14(Q):\n",
- " return(B-((Q-math.sin(Q))/(2*math.pi)))\n",
- "Q = fsolve(f14,1.5) \n",
- "Lw = D*math.sin(Q/2) \t\t\t\t# [m]\n",
- "rw = D/2*math.cos(Q/2) \t\t\t# [m]\n",
- "\n",
- "At = math.pi/4*D**2 \t\t\t\t# [total cross sectional area, square m]\n",
- "Ad = B*At \t\t\t\t\t# [Downcomer area, square m]\n",
- "Aa = At-2*Ad \t\t\t\t\t# [ Active area over the tray, square m]\n",
- "Ah = 0.101*Aa \t\t\t\t\t# [Total hole area, square m]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"Summarizing, the details of the sieve-tray design are as follows\"\n",
- "\n",
- "print\"Diameter =\",round(D,3),\"m\\n Tray spacing =\",t,\" m\\n Total cross-sectional area=\",round(At,3),\"square m\\n Downcomer area =\",round(Ad,3),\" square m\\n Active area over the tray = \",round(Aa,3),\" square m\\n Weir length =\",round(Lw,3),\" m\\n Distance from tray center to weir = \",round(rw,2),\" m\\n Total hole area =\",round(Ah,3),\" square m\\n Hole arrangement: 5 mm diameter on an equilateral-triangular pitch 15 mm between hole centers, punched in stainless steel sheet metal 2 mm thick\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Summarizing, the details of the sieve-tray design are as follows\n",
- "Diameter = 0.989 m\n",
- " Tray spacing = 0.5 m\n",
- " Total cross-sectional area= 0.768 square m\n",
- " Downcomer area = 0.077 square m\n",
- " Active area over the tray = 0.615 square m\n",
- " Weir length = 0.719 m\n",
- " Distance from tray center to weir = 0.34 m\n",
- " Total hole area = 0.062 square m\n",
- " Hole arrangement: 5 mm diameter on an equilateral-triangular pitch 15 mm between hole centers, punched in stainless steel sheet metal 2 mm thick\n"
- ]
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 4.7,Page number:257"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 4.7\n",
- "#Gas-Pressure Drop in a Sieve-Tray Ethanol Absorber \n",
- "\n",
- "#Variable declaration\n",
- "Do = 5 \t\t\t\t\t\t# [mm] \n",
- "g = 9.8 \t\t\t\t\t\t# [square m/s]\n",
- "hw = 50 \t\t\t\t\t\t# [mm]\n",
- "\t# From example 4.4\n",
- "Qg = 1.145 \t\t\t\t\t\t# [cubic m/s]\n",
- "\t# From example 4.6\n",
- "Ah = 0.062 \t\t\t\t\t\t # [square m]\n",
- "\t# Do/l = t = 5/2 = 2.5\n",
- "t = 2.5 \n",
- "\t# Ah/Aa = A = 0.101\n",
- "A = 0.101 \n",
- "rowg = 1.923 \t\t\t\t\t\t# [kg/cubic m]\n",
- "rowl = 986 \t\t\t\t\t\t# [kg/cubic m]\n",
- "roww = 995 \t\t\t\t\t\t# [kg/cubic m] \n",
- "\n",
- "#Calculation\n",
- "\n",
- "import math\n",
- "vo = Qg/Ah \t\t\t\t\t\t# [m/s]\n",
- "\t# From equation 4.39\n",
- "Co = 0.85032 - 0.04231*t + 0.0017954*t**2 \t \t# [for t>=1]\n",
- "\t# From equation 4.38\n",
- "hd = 0.0051*(vo/Co)**2*rowg*(roww/rowl)*(1-A**2) \t# [cm]\n",
- "\n",
- "\t# From example 4.6 \n",
- "Aa = 0.615 \t\t\t\t\t\t# [square m]\n",
- "va = Qg/Aa \t\t\t\t\t\t# [m/s]\n",
- "\n",
- "\t# From equation 4.41\n",
- "Ks = va*math.sqrt(rowg/(rowl-rowg)) \t\t\t# [m/s] \n",
- "phie = 0.274 \n",
- "\n",
- "\t# From equation 4.4\n",
- "ql = 0.000815 \t\t\t\t\t\t# [cubic m/s]\n",
- "\n",
- "\t# From example 4.6\n",
- "Lw = 0.719 \t\t\t\t\t\t# [m]\n",
- "Cl = 50.12 + 43.89*math.exp(-1.378*hw) \n",
- "sigma = 0.07 \t\t\t\t\t\t# [N/m]\n",
- "\t# From eqution 4.40\n",
- "hl = phie*(hw*10**(-1)+Cl*(ql/(Lw*phie))**(2.0/3.0)) \n",
- "\n",
- "\t# From equation 4.42\n",
- "ho = 6*sigma/(g*rowl*Do*10**-3)*10**2 \t\t\t# [cm] \t\n",
- "\t# From equation 4.37\n",
- "ht = hd+hl+ho \t\t\t\t\t\t# [cm of clear liquid/tray]\n",
- "deltaPg = ht*g*rowl*10**-2 \t\t\t\t# [Pa/tray]\n",
- "\n",
- "#Result\n",
- "print\"The tray gas-pressure drop for the ethanol is \",round(deltaPg),\"Pa/tray\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The tray gas-pressure drop for the ethanol is 811.0 Pa/tray\n"
- ]
- }
- ],
- "prompt_number": 6
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 4.8,Page number:259"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 4.8\n",
- "#Weeping and Entrainment in a Sieve-Tray EthanolAbsorber\n",
- "# From Example 4.4, 4.6 and 4.7\n",
- "\n",
- "#Variable declaration\n",
- "Do = 5*10**-3 \t\t\t\t\t\t# [m]\n",
- "rowg = 1.923 \t\t\t\t\t\t# [kg/cubic m]\n",
- "rowl = 986.0 \t\t\t\t\t\t# [kg/cubic m]\n",
- "g = 9.8 \t\t\t\t\t\t# [square m/s]\n",
- "hl = 0.0173 \t\t\t\t\t\t# [m]\n",
- "vo = 18.48 \t\t\t\t\t\t# [m/s]\n",
- "phie = 0.274 \n",
- "Ks = 0.082 \t\t\t\t\t\t# [m]\n",
- "A = 0.101 \t\t\t\t\t\t# [Ah/Aa]\n",
- "t = 0.5 \t\t\t\t\t\t# [m]\n",
- "\n",
- "#Calculation\n",
- "\n",
- "import math\n",
- "Fr = math.sqrt(rowg*vo**2/(rowl*g*hl)) \t\t# [Froude number]\n",
- "if Fr>0.5:\n",
- " print\"Weeping is not significant\" \n",
- "else:\n",
- " print\"Significant weeping occurs\" \n",
- " \n",
- "\t# From above weeping is not a problem under this circumstances\n",
- "\t# From equation 4.47\n",
- "k = 0.5*(1-math.tanh(1.3*math.log(hl/Do)-0.15)) \n",
- "\n",
- "\t# From equation 4.46\n",
- "h2q = (hl/phie) + 7.79*(1+6.9*(Do/hl)**1.85)*(Ks**2/(phie*g*A)) \t# [m]\n",
- "\t# From equation 4.45\n",
- "E = 0.00335*(h2q/t)**1.1*(rowl/rowg)**0.5*(hl/h2q)**k \n",
- "\t# From Example 4.4, the gas mass flow rate is V = 2.202 kg/s\n",
- "V = 2.202 \t\t\t\t\t\t\t\t# [kg/s]\n",
- "Le = E*V \t\t\t\t\t\t\t\t # [kg/s]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The entrainment flow rate for the ethanol absorber is\",round(Le,2),\"kg/s\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Weeping is not significant\n",
- "The entrainment flow rate for the ethanol absorber is 0.11 kg/s\n"
- ]
- }
- ],
- "prompt_number": 7
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 4.9,Page number:264"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 4.9\n",
- "#Murphree Efficiency of a Sieve-Tray Ethanol Absorber\n",
- "# From examples 4.4, 4.6 and 4.7\n",
- "\n",
- "#Variable declaration\n",
- "Do = 5*10**-3 \t\t\t\t\t\t# [m]\n",
- "Ml = 18.63 \t\t\t\t\t\t# [molecular weight of water, gram/mole]\n",
- "Mg = 44.04 \t\t\t\t\t\t# [molecular weight of carbon dioxide, \t\t\t\t\t\t\tgram/mole]\n",
- "rowg = 1.923 \t\t\t\t\t\t# [kg/cubic m]\n",
- "rowl = 986 \t\t\t\t\t\t# [kg/cubic m]\n",
- "vo = 18.48 \t\t\t\t\t\t# [m/s]\n",
- "hl = 0.0173 \t\t\t\t\t\t# [m]\n",
- "ug = 1.45*10**-5 \t\t\t\t\t# [kg/m.s]\n",
- "phie = 0.274 \n",
- "A = 0.101 \t\t\t\t\t\t# [Ah/Aa]\n",
- "Dg = 0.085 \t\t\t\t\t\t# [square cm/s]\n",
- "Dl = 1.91*10**-5 \t\t\t\t\t# [square cm/s]\n",
- "Aa = 0.614 \t\t\t\t\t\t# [square m]\n",
- "Qg = 1.145 \t\t\t\t\t\t# [cubic m/s]\n",
- "t = 0.5 \t\t\t\t\t\t# [m]\n",
- "h2q = 0.391 \t\t\t\t\t\t# [m]\n",
- "rw = 0.34 \t\t\t\t\t\t# [m]\n",
- "ql = 0.000815 \t\t\t\t\t\t# [cubic m/s]\n",
- "g = 9.8 \t\t\t\t\t\t# [square m/s]\n",
- "G = 2.202/44.04 \t\t\t\t\t# [kg/s]\n",
- "L = 0.804/18.63 \t\t\t\t\t# [kg/s]\n",
- "\n",
- "Refe = rowg*vo*hl/(ug*phie) \n",
- "\n",
- "#Calculation\n",
- "\n",
- "import math\n",
- "cg =rowg/Mg \t\t\t\t\t\t# [kmole/cubic m]\n",
- "cl = rowl/Ml \t\t\t\t\t\t# [kmole/cubic m]\n",
- "\n",
- "\t# For the low concentrations prevailing in the liquid phase, the ethanol- # water \tsolution at 303 K obeys Henry's law, and the slope of the equilibriu# m curve is m = 0.57\n",
- "m = 0.57 \n",
- "\t# From equation 4.53\n",
- "a1 = 0.4136 \n",
- "a2 = 0.6074 \n",
- "a3 = -0.3195 \n",
- "Eog = 1-math.exp(-0.0029*Refe**a1*(hl/Do)**a2*A**a3/((math.sqrt(Dg*(1-phie)/(Dl*A)))*m*cg/cl+1)) \n",
- "\t# From equation 4.62\n",
- "Deg = 0.01 \t\t\t\t\t\t# [square m/s]\n",
- "Peg = 4*Qg*rw**2/(Aa*Deg*(t-h2q)) \t\t\t# [Peclet number]\n",
- "\t# Since Peclet number is greater than 50, therefore vapor is unmixed\n",
- "\t# From equation 4.60\n",
- "Del = 0.1*math.sqrt(g*h2q**3) \t\t\t\t# [square m/s]\n",
- "\t# From equation 4.59\n",
- "Pel = 4*ql*rw**2/(Aa*hl*Del) \n",
- "N = (Pel+2)/2 \n",
- "lamda = m*G/L \n",
- "\t# From equation 4.58\n",
- "Emg = ((1+lamda*Eog/N)**N -1)/lamda*(1-0.0335*lamda**1.073*Eog**2.518*Pel**0.175) \n",
- "\t# From example 4.8\n",
- "E = 0.05 \n",
- "\t# Substituting in equation 4.63\n",
- "Emge = Emg*(1-0.8*Eog*lamda**1.543*E/m) \n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The entrainment corrected Murphree tray efficiency for the ethanol is\",round(Emge,3)\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The entrainment corrected Murphree tray efficiency for the ethanol is 0.812\n"
- ]
- }
- ],
- "prompt_number": 8
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/Chapter 5.ipynb b/Beginning_C++_through_Game_Programming/Chapter 5.ipynb
deleted file mode 100755
index 0ce97db1..00000000
--- a/Beginning_C++_through_Game_Programming/Chapter 5.ipynb
+++ /dev/null
@@ -1,517 +0,0 @@
-{
- "metadata": {
- "name": ""
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 5:Absorption and Stripping"
- ]
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 5.1,Page number:287"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 5.1\n",
- "#Number of Real Sieve Trays in an Absorber\n",
- "\n",
- "#Variable declaration\n",
- "\n",
- "\t# Component 'A' is to be absorbed #\n",
- "y_N1 = 0.018\t\t\t\t\t\t# [mole fraction 'A' of in entering gas]\n",
- "y_1 = 0.001\t\t\t\t\t\t# [mole fractio of 'A'in leaving gas]\n",
- "x_0 = 0.0001\t\t\t\t\t\t# [mole fraction of 'A' in entering \t\t\t\t\t\t\tliquid]\n",
- "m = 1.41\t\t\t\t\t\t# [m = yi/xi]\n",
- "n_1 = 2.115\t\t\t\t\t\t# [molar liquid to gas ratio at bottom, \t\t\t\t\t\t\tL/V]\t\n",
- "n_2 = 2.326\t\t\t\t\t\t# [molar liquid to gas ratio at top, L/V]\n",
- "E_MGE = 0.65 \n",
- "\n",
- "\n",
- "print\"Answer 5.1 (a)\"\n",
- "\t# Solution (a)\n",
- "\n",
- "\n",
- "A_1 = n_1/m\t\t\t\t\t\t# [absorption factor at bottom]\n",
- "A_2 = n_2/m\t\t\t\t\t\t# [absorption factor at top]\n",
- "import math\n",
- "from scipy.optimize import fsolve\n",
- "A = math.sqrt(A_1*A_2) \n",
- "\t# Using equation 5.3 to calculate number of ideal stages\n",
- "N = (math.log(((y_N1-m*x_0)/(y_1-m*x_0))*(1-1/A) + 1/A))/math.log(A)\t# [number of ideal \t\t\t\t\t\t\t\t\tstages]\n",
- "print\"Number of ideal trays is\",round(N,3)\n",
- "\t# Using equation 5.5\n",
- "E_o = math.log(1+E_MGE*(1/A-1))/math.log(1/A) \n",
- "\t# Therefore number of real trays will be\n",
- "n = N/E_o\n",
- "\n",
- "#Result\n",
- " \n",
- "print\"Number of real trays is\",round(n,2)\n",
- "\n",
- "print\"Since it is not possible to specify a fractional number of trays, therefore number of real trays is\",round(n)\n",
- "\n",
- "\n",
- "print\"\\nAnswer5.1 (b)\"\n",
- "\n",
- "\t# Solution (b)\n",
- "\n",
- "\t# Back checking the answer\n",
- "print\"Back checking the answer\"\n",
- "\n",
- "#Calculation\n",
- "\n",
- "N_o = E_o*n \n",
- "\t# Putting N_o in equation 5.3 to calculate y_1\n",
- "def f16(Z):\n",
- " return(N_o-(math.log(((y_N1-m*x_0)/(Z-m*x_0))*(1-1/A) + 1/A))/math.log(A)) \n",
- "Z = fsolve(f16,0.001) \n",
- "print\"Mole fraction of A in leaving gas is\",Z[0],\"percent which satisfies the requirement that the gas exit concentration should not exceed 0.1 percent\"\n",
- "\n",
- "\t# For a tower diameter of 1.5 m, Table 4.3 recommends a plate spacing of 0.6 m\n",
- "Z = n*0.6\t\t\t\t\t\t# [Tower height, m]\n",
- "\n",
- "#Result\n",
- "print\"The tower height will be\",round(Z,1),\"m\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Answer 5.1 (a)\n",
- "Number of ideal trays is"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- " 4.647\n",
- "Number of real trays is 7.79\n",
- "Since it is not possible to specify a fractional number of trays, therefore number of real trays is 8.0\n",
- "\n",
- "Answer5.1 (b)\n",
- "Back checking the answer\n",
- "Mole fraction of A in leaving gas is 0.001 percent which satisfies the requirement that the gas exit concentration should not exceed 0.1 percent\n",
- "The tower height will be 4.7 m\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Exmaple 5.3,Page number:295"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 5.3\n",
- "#Packed-Tower Absorber for Recovery of Benzene Vapors \n",
- "\n",
- "%pylab inline\n",
- "#Variable declaration\n",
- "\t# For tower diameter, packed tower design program of Appendix D is run using # the data \t\tfrom Example 5.2 and packing parameters from Chapter 4.\n",
- "\n",
- "\t# For a pressure drop of 300 Pa/m, the program converges to a tower diameter \n",
- "Db = 0.641 \t\t\t\t\t\t# [m]\n",
- "\t# Results at the bottom of tower\n",
- "fb= 0.733 \t\t\t\t\t\t# [flooding]\n",
- "ahb = 73.52 \t\t\t\t\t\t# [m**-1]\n",
- "Gmyb = 126 \t\t\t\t\t\t# [mol/square m.s]\n",
- "kyb = 3.417 \t\t\t\t\t\t# [mol/square m.s]\n",
- "klb = 9.74*10**-5 \t\t\t\t\t# [m/s]\n",
- "\n",
- "\t# From equation 2.6 and 2.11\n",
- "\t# Fg = ky*(1-y), Fl = kx*(1-x)\n",
- "\t# Assume 1-y = 1-y1 1-x = 1-x1\n",
- "\t# let t = 1-y1 u = 1-x1\n",
- "\t# Therefore\n",
- "t = 0.926 \n",
- "u = 0.676 \n",
- "Fgb = kyb*t \t\t\t\t\t\t# [mol/square m.s]\n",
- "rowlb = 780 \t\t\t\t\t\t# [kg/cubic m]\n",
- "Mlb = 159.12 \t\t\t\t\t\t# [gram/mole]\n",
- "c = rowlb/Mlb \t\t\t\t\t\t# [kmle/cubic m]\n",
- "Flb = klb*c*u \t\t\t\t\t\t# [mol/square m.s]\n",
- "\t# From equ 5.19\n",
- "Htgb = Gmyb/(Fgb*ahb) \t\t\t\t\t# [m]\n",
- "import math\n",
- "from scipy.optimize import fsolve\n",
- "from numpy import *\n",
- "from pylab import *\n",
- "\t# Now, we consider the conditions at the top of the absorber\n",
- "\t# For a pressure drop of 228 Pa/m, the program converges to a tower # diameter\n",
- "Dt = 0.641 \t\t\t\t\t\t# [m]\n",
- "\t# Results at the top of tower\n",
- "ft = 0.668 \t\t\t\t\t\t# [flooding]\n",
- "aht = 63.31 \t\t\t\t\t\t# [m**-1]\n",
- "Gmyt = 118 \t\t\t\t\t\t# [mol/square m.s]\n",
- "kyt = 3.204 \t\t\t\t\t\t# [mol/square m.s]\n",
- "klt = 8.72*10**-5 \t\t\t\t\t# [m/s]\n",
- "\n",
- "rowlt = 765 \t\t\t\t\t\t# [kg/cubic m]\n",
- "Mlt = 192.7 \t\t\t\t\t\t# [gram/mole]\n",
- "cl = rowlt/Mlt \t\t\t\t\t# [kmole/cubic m]\n",
- "Fgt = kyt*0.99 \t\t\t\t\t# [mole/square m.s]\n",
- "Flt = klb*cl*0.953 \t\t\t\t\t# [mole/square m.s]\n",
- "\t# From equ 5.19\n",
- "Htgt = Gmyt/(Fgt*aht) \t\t\t\t\t# [m]\n",
- "Htg_avg = (Htgb+Htgt)/2 \t\t\t\t# [m]\n",
- "Fg_avg = (Fgt+Fgb)/2 \t\t\t\t\t# [mole/square m.s]\n",
- "Fl_avg = (Flb+Flt)*1000/2 \t\t\t\t# [mole/square m.s]\n",
- "\n",
- "\t# The operating curve equation for this system in terms of mole fractions\n",
- "\t# y = \n",
- "\n",
- "\t# From Mathcad program figure 5.3\n",
- "x1 = 0.324 \n",
- "x2 = 0.0476 \n",
- "n = 50 \n",
- "dx = (x1-x2)/n \n",
- "me = 0.136 \n",
- "T = zeros((50,2)) \n",
- "y=zeros((50))\n",
- "x=zeros((50))\n",
- "yint=zeros((50))\n",
- "fd=zeros((50))\n",
- "for j in range(1,51):\n",
- " x[j-1] = x2+j*dx \n",
- " y[j-1] = (0.004+0.154*x[j-1])/(1.004-0.846*x[j-1]) \n",
- " \n",
- " def f12(yint):\n",
- " return((1-yint)/(1-y[j-1]) - ((1-x[j-1])/(1-yint/me))**(Fl_avg/Fg_avg)) \n",
- " yint[j-1] = fsolve(f12,0.03) \n",
- " fd[j-1] = 1/(y[j-1]-yint[j-1]) \n",
- " T[j-1][0] = y[j-1] \n",
- "\n",
- " T[j-1][1] = fd[j-1] \n",
- "\n",
- "\n",
- "#Result\n",
- "\n",
- "a1=plot(T[:,0],T[:,1]) \n",
- "\n",
- "xlabel(\"y\") \n",
- "ylabel(\"f = 1/(y-yint)\") \n",
- "\n",
- "yo = y[0] \n",
- "yn = y[49] \n",
- "\t# From graph between f vs y\n",
- "Ntg = 10.612 \n",
- "\t# Therefore\n",
- "Z = Htg_avg*Ntg\t\t \t\t\t\t\t# [m]\n",
- "\t\n",
- "print\"The total packed height is\",round(Z),\"m.\"\t\n",
- "deltaPg = 300*Z \t \t\t\t\t\t# [Pa]\n",
- "Em = 0.60 \t\t\t\t\t\t\t # [mechanical efficiency]\n",
- "Qg = 1.0 \n",
- "Wg = (Qg*deltaPg)/Em \t\t\t\t\t\t# [Power required to force the \t\t\t\t\t\t\t\tgas through the tower, W]\n",
- "L2 = 1.214 \t\t\t\t\t\t\t# [kg/s]\n",
- "g = 9.8 \t\t\t\t\t\t\t# [m/square s]\n",
- "Wl = L2*g*Z/Em \t\t\t\t\t\t# [Power required to pump the \t\t\t\t\t\t\t\tliquid to the top of the \t\t\t\t\t\t\t\tabsorber, W]\n",
- "\n",
- "\n",
- "print\"The power required to force the gas through the tower is \",round(Wg),\"W.\\n\\n\"\n",
- "print\"The power required to pump the liquid to the top of the absorber is \",round(Wl),\"W.\\n\\n\"\n",
- "\n",
- "show(a1)\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Populating the interactive namespace from numpy and matplotlib\n",
- "The total packed height is"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- " 6.0 m.\n",
- "The power required to force the gas through the tower is 2996.0 W.\n",
- "\n",
- "\n",
- "The power required to pump the liquid to the top of the absorber is 119.0 W.\n",
- "\n",
- "\n"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stderr",
- "text": [
- "WARNING: pylab import has clobbered these variables: ['power', 'draw_if_interactive', 'random', 'fft', 'linalg', 'info']\n",
- "`%pylab --no-import-all` prevents importing * from pylab and numpy\n"
- ]
- },
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "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\n5ObCihVWJxERqRuntTCKiooYM2YMhmFw4sQJRowYQXJyMjfffDMpKSksWLCAFi1asHTpUgDi4uIY\nNGgQMTEx+Pr6Mm/ePPz9/Z0Vz+UCAuD11+Huu809p666yupEIiKXRwv3XOy+++CKK+Dll61OIiL1\niU7c80D//a+5NmPpUujRw+o0IlJfuP06DDlXs2Ywd67Z0jh50uo0IiK1p4JhgTvvNM8AnzXL6iQi\nIrWnLimL7N0LnTubs6a6dbM6jYh4O3VJebAWLWDOHHPW1IkTVqcREbk0tTAsZBgwdCj8+tc61lVE\nnEuzpLxAcTHExJiHLd18s9VpRMRbqUvKCwQHwyuvwO9/D8eOWZ1GROTC1MJwEyNHmtuhz55tdRIR\n8UbqkvIipaXmIUuLFplbh4iIOJK6pLxI8+Ywfz6MGQOnnVorIuI21MJwMw89BCUlZkvDx8fqNCLi\nLVzWJXX06FEKCgrw8fEhPDycRo0a2XVTe3h7wTh+HLp2hcceg1GjrE4jIt7CqQXjyJEj/P3vf2fx\n4sWUlJQQGhqKYRjs27ePwMBARo4cyX333Ufjxo3tCnDZgb28YABs3Qq33QbZ2dC6tdVpRMQbOHUM\nY+DAgTRp0oTly5fz008/sX79ejZs2MCuXbtYuXIljRo14o477rDr5nJ+nTrBtGlmC6Oy0uo0IiIm\njWG4qepq+O1vzRlTTzxhdRoR8XQumSV166231uo5cSxfX3jrLfOgpfXrrU4jInKRI1qPHz/OsWPH\nKC4uprS0tOb5o0ePsmfPHpeEq+/CwsxjXYcPh02bzKm3IiJWuWDBmDdvHnPmzKGoqIi4uLia5wMC\nAnjggQdcEk7gjjsgKwvuuQc++EBTbUXEOpccw5g7dy6TJk1yVZ5Lqi9jGKcrL4f4eLOlMWWK1WlE\nxBO5ZB2GYRisW7eOgoICqqura54fM2aMXTeuq/pYMAB27YIbb4SVK6F7d6vTiIinccTvzgt2SZ0y\ndOhQCgsL6dy5M35+fjXPW1Uw6qvWreG11yAlBTZvhquvtjqRiNQ3l2xhtGvXjvz8fHzcpPO8vrYw\nTnnoISgshPfe03iGiNSeS6bVdunShf3799fp4gUFBfTq1Yvo6Gjat2/Ps88+C8CMGTMIDw8nNjaW\n2NhYVq9eXfOetLQ0IiIiiI6OZs2aNXW6rzd7/nnYs8c83lVExJUu2cJISEhgy5YtdO/enSuuuMJ8\nk48Py5cvv+TF9+3bR3FxMVFRUZSVldGlSxfeeecdPvjgA5o0acLUqVPPeH1ubi4TJkxgw4YN7N27\nl/j4ePLz82nYsOEvget5CwPM8YybboJ33oFevaxOIyKewCVjGDNmzKjzxUNDQwkNDQWgcePGxMTE\nUFhYCHDe4BkZGQwbNgw/Pz/CwsKIjIwkOzub+Pj4OmfwRq1bwz/+AcOGwTffwLXXWp1IROqDSxaM\nhIQEh9xo9+7d5OTksHDhQnJycnjllVeYP38+cXFxzJ07l+bNm1NYWEifPn1q3hMeHo7NZnPI/b1N\nYiL84Q8weLC5TuO0RpiIiFNcsGD06NGDr776isaNG58z4O3j48Phw4drfZOysjKGDBnCnDlzaNKk\nCRMnTmT69OmA2YKZNGkS6enptb7e6a2ehIQEhxU1T/P445CTA1OnmluIiIickpWVRVZWlkOv6fTN\nBysqKujfvz+33347U86z6qyoqIjevXuTn5/PrFmzCAgI4JFHHgGgf//+PPbYY/To0eOXwBrDOMOh\nQ9CtG/y//2ee1icicj4umSU1depUvv322zpd3DAMxo0bR0RExBnF4vRZV++99x6RkZEAJCUlsWTJ\nEiorK7HZbGzfvp3uWqV2UU2bwrJl8PDD5voMERFnueQYRseOHbn//vupqKhg7NixDB8+nKZNm9bq\n4l999RXp6enExMQQGxsLwNNPP82iRYvIy8ujvLycVq1a8cYbbwAQFxfHoEGDiImJwdfXl3nz5uHv\n72/Hv179EBUFr74KAweahy79PM9ARMShat0l9cMPP/Dmm2+yaNEi4uPjGTdunCXbnKtL6sJmzIA1\na+Czz+BXv7I6jYi4E5d0SQFUVVXxww8/8P333xMcHEynTp2YO3cuQ4YMsevm4ljTp5tboo8fD6qp\nIuJol2xhTJkyhRUrVtCnTx/uvffeM8YUIiMj6zy+UVdqYVzc0aPQs6e5s+2jj1qdRkTchUt2q124\ncCFDhw6lUaNG53zt4MGDXO3iXfBUMC7NZjN3tp03D/r3tzqNiLgDlxSM091///28/vrrdt3QXioY\ntbNxIwwYYI5nREVZnUZErOayMYxTcnJy7LqZuM6NN8Ls2WbR+M9/rE4jIt7gktNqTxcSEuKsHOIE\nI0eaGxX27w9r10LjxlYnEhFPdskuqeXLl9O/f398fS+rMeI06pK6PIYB991ntjI+/BAaXNafCCLi\nLVzSJbVkyRLatm3Ln/70J3744Qe7biau5+MDf/sbVFXBxImabisidVerQe9Dhw7x9ttv8+abb+Lj\n48M999zD8OHDadKkiSsynkEtjLo5csQ8OyMlBaZNszqNiLiaywa9mzZtyuDBg0lJSaGoqIj333+f\nTp06MXv2bLtuLq7TpAlkZJitjUWLrE4jIp7okgXjww8/ZNCgQSQkJFBRUUFOTg6rV6/m22+/5ZVX\nXnFFRnGQa681i8aUKeYWIiIil+OSXVJ3330348aNo9d5zgL95JNPuO2225wW7nzUJWW/L7+EQYNg\nxQrzqFcR8X5OXbhnGMY5ByfV5TWOpoLhGKtWwdix8Omn8PPu8iLixZw6hpGQkMBzzz3Hv/71r3O+\nlp+fzzPPPMMtt9xi183FOklJ8OKLcPvtsHu31WlExBNcsIVx8uRJ/vnPf/L222+zfft2mjRpgmEY\nlJWVERUVxciRIxkxYgQNXXyYtFoYjvW//2s+vvhC52iIeDOX7SVVVVVFSUkJAEFBQfj5+dl1U3uo\nYDjejBmwfLm575SL95IUERdxasGIi4sjPj6efv36kZCQwK/c5EQeFQzHMwyYPNncsHDNGrjqKqsT\niYijObVgVFRU8OWXX5KZmUlWVhbNmzfn9ttvp1+/frRr186um9pDBcM5DAP+8AfYvh1Wr9a+UyLe\nxqXbmxcWFpKZmclHH33Ejh07uOmmm3j11VftunldqGA4T3W1ue/Url2wciVceaXViUTEUVx+HsYp\nVVVVbNiwgR49eth187pQwXCuqir4/e9h/35zs0I36YkUETu5/DyMUx544AFLioU4n58fLFwITZvC\n4MFQXm51IhFxFxdsYZSWlp73DYZhEBMTQ2FhoVODXYhaGK5RUWFuVFhRAe++C1dcYXUiEbGHU7uk\nfH19adWq1XnfVFhYSLlFf3qqYLhORQWMGGHudPv++xAQYHUiEakrp3ZJ/frXvyYrK4tdu3ad8wit\n5QqvgoICevXqRXR0NO3bt+fZZ58FzNZL3759iYmJITExkYMHD9a8Jy0tjYiICKKjo1mjHfIs5e8P\nb78NgYGQnAxHj1qdSESsdMGCMXnyZP773/+e92uPPvporS7esGFDXn31VbZt20Zubi7z589n69at\npKamkpycTF5eHv369SM1NRWA3Nxcli1bxrZt28jMzGT8+PGWtWTE1KAB/OMf0KoV9OtntjZEpH6q\n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\n",
- "text": [
- "<matplotlib.figure.Figure at 0x3381d90>"
- ]
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 5.4,Page number:299"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 5.4\n",
- "#Packed Height of an Ethanol Absorber\n",
- "\n",
- "# From example 4.4\n",
- "\n",
- "#Variable declaration\n",
- "m = 0.57 \n",
- "D = 0.738 \t\t\t\t# [tower diameter, m]\n",
- "G = 180.0 \t\t\t\t# [rate of gas entering the tower, kmole/h]\n",
- "L = 151.5 \t\t\t\t# [rate of liquid leaving the tower, kmole/h]\n",
- "\t# Amount of ethanol absorbed \n",
- "M = G*0.02*0.97 \t\t\t# [kmole/h]\n",
- "\n",
- "#Calculation\n",
- "\n",
- "import math\n",
- "\t# Inlet gas molar velocity\n",
- "Gmy1 = G*4/(3600*math.pi*D**2) \t# [kmole/square m.s]\n",
- "\t# Outlet gas velocity\n",
- "Gmy2 = (G-M)*4/(3600*math.pi*D**2) \t# [kmole/square m.s]\n",
- "\t# Average molar gas velocity\n",
- "Gmy = (Gmy1+Gmy2)/2 \t\t\t# [kmole/square m.s]\n",
- "\n",
- "\t# Inlet liquid molar velocity\n",
- "Gmx2 = L*4/(3600*math.pi*D**2) \t# [kmole/square m.s]\n",
- "\t# Outlet liquid molar velocity\n",
- "Gmx1 = (L+M)*4/(3600*math.pi*D**2) \t# [kmole/square m.s]\n",
- "\n",
- "\t# Absorption factor at both ends of the column:\n",
- "A1 = Gmx1/(m*Gmy1) \n",
- "A2 = Gmx2/(m*Gmy2) \n",
- "\t# Geometric average\n",
- "A = math.sqrt(A1*A2) \n",
- "\n",
- "y1 = 0.02 \n",
- "\t# For 97% removal of the ethanol\n",
- "y2 = 0.03*0.02 \n",
- "\t# Since pure water is used \n",
- "x2 = 0 \n",
- "\t# From equation 5.24\n",
- "Ntog = math.log((y1-m*x2)/(y2-m*x2)*(1-1/A)+1/A)/(1-1/A) \n",
- "\n",
- "\t# From example 4.4\n",
- "\t# ky*ah = 0.191 kmole/cubic m.s\n",
- "\t# kl*ah = 0.00733 s**-1\n",
- "kyah = 0.191 \t\t\t\t# [kmole/cubic m.s]\n",
- "klah = 0.00733 \t\t\t# [s**-1]\n",
- "rowl = 986 \t\t\t\t# [kg/cubic m]\n",
- "Ml = 18.0 \t\t\t\t# [gram/mole]\n",
- "c = rowl/Ml \t\t\t\t# [kmole/cubic m]\n",
- "kxah = klah*c \t\t\t\t# [kmole/cubic m.s]\n",
- "\n",
- "\t# Overall volumetric mass transfer coefficient\n",
- "Kyah = (kyah**-1 + m/kxah)**-1 \t# [kmole/cubic m.s]\n",
- "\n",
- "\t# From equation 5.22\n",
- "Htog = Gmy/Kyah \t\t\t\t# [m]\n",
- "\t# The packed height is given by equation 5.21,\n",
- "Z = Htog*Ntog \t\t\t\t\t# [m]\n",
- "\n",
- "#Result\n",
- "print\"The packed height of an ethanol absorber is\",round(Z,2),\"m.\\n\\n\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The packed height of an ethanol absorber is 5.66 m.\n",
- "\n",
- "\n"
- ]
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 5.5,Page number:302"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 5.5\n",
- "#Tray Tower for Adiabatic Pentane Absorption\n",
- "\n",
- "#Variable declaration\n",
- "# a = CH4 b = C5H12\n",
- "Tempg = 27 \t\t\t\t\t\t\t# [OC]\n",
- "Tempo = 0 \t\t\t\t\t\t\t# [base temp,OC]\n",
- "Templ = 35 \t\t\t\t\t\t\t# [OC]\n",
- "xa = 0.75 \t\t\t\t\t\t\t# [mole fraction of CH4 in gas]\n",
- "xb = 0.25 \t\t\t\t\t\t\t# [mole fraction of C5H12 in gas]\n",
- "M_Paraffin = 200 \t\t\t\t\t\t# [kg/kmol]\n",
- "hb = 1.884 \t\t\t\t\t\t\t# [kJ/kg K]\n",
- "\n",
- "\n",
- "Ha = 35.59 \t\t\t\t\t\t\t# [kJ/kmol K]\n",
- "Hbv = 119.75 \t\t\t\t\t\t\t# [kJ/kmol K]\n",
- "Hbl = 117.53 \t\t\t\t\t\t\t# [kJ/kmol K]\n",
- "Lb = 27820 \t\t\t\t\t\t\t# [kJ/kmol]\n",
- "\t\t# M = [Temp (OC) m]\n",
- "import math\n",
- "from scipy.optimize import fsolve\n",
- "from numpy import *\n",
- "from pylab import *\n",
- "\n",
- "#Calculation\n",
- "\n",
- "M = matrix([[20,0.575],[25,0.69],[30,0.81],[35,0.95],[40,1.10],[43,1.25]])\n",
- "\t# Basis: Unit time\n",
- "GNpPlus1 = 1.0 \t\t\t\t\t\t\t# [kmol]\n",
- "yNpPlus1 = 0.25 \t\t\t\t\t\t# [kmol]\n",
- "HgNpPlus1 = ((1-yNpPlus1)*Ha*(Tempg-Tempo))+(yNpPlus1*(Hbv*(Tempg-Tempo)+Lb)) # [kJ/kmol]\n",
- "L0 = 2.0 \t\t\t\t\t\t\t# [kmol]\n",
- "x0 = 0 \t\t\t\t\t\t\t\t# [kmol]\n",
- "HL0 = ((1-x0)*hb*M_Paraffin*(Templ-Tempo))+(x0*hb*(Templ-Tempo))\t # [kJ/kmol]\n",
- "C5H12_absorbed = 0.98*xb \t\t\t\t\t# [kmol]\n",
- "C5H12_remained = xb-C5H12_absorbed \n",
- "G1 = xa+C5H12_remained \t\t\t\t\t\t# [kmol]\n",
- "y1 = C5H12_remained/G1 \t\t\t\t\t\t# [kmol]\n",
- "LNp = L0+C5H12_absorbed \t\t\t\t\t# [kmol]\n",
- "xNp = C5H12_absorbed/LNp \t\t\t\t\t# [kmol]\n",
- "\t# Assume:\n",
- "Temp1 = 35.6 \t\t\t\t\t\t\t# [OC]\n",
- "Hg1 = ((1-y1)*Ha*(Temp1-Tempo))+(y1*(Hbv*(Temp1-Tempo)+Lb)) \t# [kJ/kmol]\n",
- "Qt = 0 \n",
- "def f30(HlNp):\n",
- " return(((L0*HL0)+(GNpPlus1*HgNpPlus1))-((LNp*HlNp)+(G1*Hg1)+Qt)) \n",
- "HlNp = fsolve(f30,2) \n",
- "\n",
- "def f31(TempNp):\n",
- " return(HlNp-(((1-x0)*hb*M_Paraffin*(TempNp-Tempo))+(x0*hb*(TempNp-Tempo)))) \n",
- "TempNp = fsolve(f31,35.6) \n",
- "\t# At Temp = TempNp:\n",
- "mNp = 1.21 \n",
- "yNp = mNp*xNp \t\t\t\t\t\t\t# [kmol]\n",
- "GNp = G1/(1-yNp) \t\t\t\t\t\t# [kmol]\n",
- "HgNp = ((1-yNp)*Ha*(TempNp-Tempo))+(yNp*(Hbv*(TempNp-Tempo)+Lb)) # [kJ/kmol]\n",
- "\t# From equation 5.28 with n = Np-1\n",
- "def f32(LNpMinus1):\n",
- " return(LNpMinus1+GNpPlus1-(LNp+GNp)) \n",
- "LNpMinus1 = fsolve(f32,2) \t\t\t\t\t# [kmol]\n",
- "\n",
- "\t# From equation 5.29 with n = Np-1\n",
- "def f33(xNpMinus1):\n",
- " return(((LNpMinus1*xNpMinus1)+(GNpPlus1*yNpPlus1))-((LNp*xNp)+(GNp*yNp))) \n",
- "xNpMinus1 = fsolve(f33,0) # [kmol]\n",
- "\n",
- "\t# From equation 5.30 with n = Np-1\n",
- "def f34(HlNpMinus1):\n",
- " return(((LNpMinus1*HlNpMinus1)+(GNpPlus1*HgNpPlus1))-((LNp*HlNp)+(GNp*HgNp))) \n",
- "HlNpMinus1 = fsolve(f34,0) # [kJ/kmol]\n",
- "def f35(TempNpMinus1):\n",
- " return(HlNpMinus1-(((1-xNpMinus1)*hb*M_Paraffin*(TempNpMinus1-Tempo))+(xNpMinus1*hb*(TempNpMinus1-Tempo)))) \n",
- "TempNpMinus1 = fsolve(f35,42) # [OC]\n",
- "\n",
- "\t# The computation are continued upward through the tower in this manner until the gas \tcomposition falls atleast to 0.00662.\n",
- "\t# Results = [Tray No.(n) Tn(OC) xn yn]\n",
- "Results = matrix([[4.0,42.3,0.1091,0.1320],[3,39.0,0.0521,0.0568],[2,36.8,0.0184,0.01875],[1,35.5,0.00463, 0.00450]]) \n",
- "figure(1)\n",
- "a1=plot(Results[:,0],Results[:,3]) \n",
- "xlabel(\"Tray Number\") \n",
- "ylabel(\"mole fraction of C5H12 in gas\") \n",
- "show(a1)\n",
- "figure(2)\n",
- "a2=plot(Results[:,0],Results[:,1]) \n",
- "\n",
- "xlabel(\"Tray Number\") \n",
- "ylabel(\"Temparature( degree C)\") \n",
- "\n",
- "show(a2)\n",
- "# For the cquired y1\n",
- "Np = 3.75\n",
- " \n",
- "\n",
- "#result\n",
- "print\"The No. of trays will be\",round(Np)\n",
- " "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAEPCAYAAABRHfM8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlclWXex/HPUTBzSc1xSdAHExdwARSkaRMzMy1pc54w\nTTMceZpR05qmUStlKs3USrOZrJlsnIyYNiVFxixxyZTMfXBXDHDJMhRcEg7388edZzgKnMNyNvi+\nXy9eL8459/K7vev8uO7run6XxTAMAxEREQfqeDoAERHxDUoYIiLiFCUMERFxihKGiIg4RQlDRESc\nooQhIiJOcWnCSEtLo0uXLnTs2JGZM2de8fmePXv49a9/Tf369ZkzZ84Vn1utViIiIhg8eLArwxQR\nESf4uerAVquVsWPHsmrVKgICAoiKiiI2NpaQkBDbNs2bN+f1119nyZIlpR5j7ty5hIaGkp+f76ow\nRUTESS5rYWRkZBAcHExQUBD+/v7ExcWxdOlSu21atGhBZGQk/v7+V+yfk5NDamoqo0ePRnMLRUQ8\nz2UJIzc3l7Zt29peBwYGkpub6/T+EydOZNasWdSpo24WERFv4LJvY4vFUul9ly1bRsuWLYmIiFDr\nQkTES7isDyMgIIDs7Gzb6+zsbAIDA53ad8OGDaSkpJCamsqFCxc4c+YMI0aMYNGiRXbbBQcHc/Dg\nwWqNW0SkpuvQoQMHDhyo+I6GixQWFhrXX3+9cfjwYePnn382wsLCjMzMzFK3nTp1qjF79uxSP0tP\nTzfuvvvuUj9zYfheYerUqZ4OwaV0fb6tJl9fTb42w6j8d6fLWhh+fn7Mnz+fAQMGYLVaiY+PJyQk\nhAULFgCQkJDA8ePHiYqK4syZM9SpU4e5c+eSmZlJo0aN7I5VlcdbIiJSPVyWMAAGDhzIwIED7d5L\nSEiw/d66dWu7x1al6dOnD3369HFJfCIi4jwNQfJiMTExng7BpXR9vq0mX19NvraqsPzyPMsnWSwW\njaISEamgyn53qoUhIiJOUcIQERGnKGGIiIhTlDBERMQpShgiIuIUJQwRkVrkwoXK76uEISJSSxQV\nwdChld9fCUNEpBYoLobRo+H8+cofw6WlQURExPMMA554Avbvh5Ur4bJyfU5TwhARqeFeeAFWr4b0\ndGjYsPLHUcIQEanBXn8dFi2CdeugWbOqHUsJQ0SkhnrvPXj5ZTNZtG5d9eMpYYiI1ECffQZ/+AN8\n+SUEBVXPMZUwRERqmPR0iI+H5cshNLT6jqthtSIiNcjmzfC//wvJyRAVVb3HVsIQEakhdu+GwYPh\n7behb9/qP74ShohIDXDkCAwYAC+9BPfc45pzKGGIiPi4Eyegf3948kkYOdJ151HCEBHxYXl5cOed\n8NBD8Pjjrj2X1vQWEfFR586Zj6EiImDuXLBYnNuvst+dShgiIj7o4kW491741a/g3XehTgWeF1X2\nu9Plj6TS0tLo0qULHTt2ZObMmVd8vmfPHn79619Tv3595syZY3s/Ozubvn370rVrV7p168a8efNc\nHaqIiE+wWmHECPD3h7//vWLJoipc2sKwWq107tyZVatWERAQQFRUFElJSYSEhNi2OXnyJEeOHGHJ\nkiU0a9aMJ598EoDjx49z/PhxwsPDKSgooFevXixZssRuX7UwRKS2MQz43e9gzx5YsQLq16/4Mbyy\nhZGRkUFwcDBBQUH4+/sTFxfH0qVL7bZp0aIFkZGR+Pv7273funVrwsPDAWjUqBEhISEcPXrUleGK\niHi9Z54xJ+ctXVq5ZFEVLk0Yubm5tG3b1vY6MDCQ3NzcCh8nKyuLrVu3Eh0dXZ3hiYj4lNmz4ZNP\nzJbFNde4//wurSVlcbbLvhwFBQUMGTKEuXPn0qiUVT+mTZtm+z0mJoaYmJgqn1NExNv87W8wfz6s\nX292dFdEeno66enpVY7BpQkjICCA7Oxs2+vs7GwCAwOd3r+wsJAHHniA4cOHc++995a6TcmEISJS\nE330ETz3nFlUsAJfoTaX/zGdmJhYqThc+kgqMjKS/fv3k5WVxcWLF0lOTiY2NrbUbS/vgDEMg/j4\neEJDQ5kwYYIrwxQR8VorV8Lvfw+pqdCpk2djcfk8jBUrVjBhwgSsVivx8fFMmjSJBQsWAJCQkMDx\n48eJiorizJkz1KlTh8aNG5OZmcm2bdu49dZb6dGjh+3R1owZM7jzzjv/G7xGSYlIDfb11xAbC59+\nCjffXH3H1cQ9EZEaZMcOsz7Uu+/CwIHVe2yvHFYrIiIVd+CAmSTmzav+ZFEVShgiIl4kNxfuuMPs\n5H7wQU9HY89hwigoKMBqtQKwd+9eUlJSKCwsdHlgIiK1zY8/mslizBhISPB0NFdy2IfRs2dP1q9f\nz08//cRNN91EVFQU9erVY/Hixe6KsUzqwxCRmqKgAPr1gz59YOZM5yvPVobL+jAMw6BBgwZ88skn\n/O53v+PDDz9k165dlQpSRESudOGCWXm2Rw/XJ4uqcKoP4+uvv2bx4sXcddddABQXF7s0KBGR2qKo\nCIYOhWuvhTff9N5kAU7M9H7ttdeYMWMG9913H127duXgwYP0dcXq4iIitUxxMfz2t+ZCSCkpULeu\npyMqn+ZhiIh4gGGYa3Bv3Aiffw4NG7rv3JX97nTYwvj+++95+eWXyczM5Pz587aTffnllxWPUkRE\nAHjxRVi1CtascW+yqAqHfRjDhg2jS5cuHDp0iGnTphEUFERkZKQ7YhMRqZHeeMOcwf3vf0OzZp6O\nxnlODavdsmULPXr0YMeOHYBZVHDz5s1uCbA8eiQlIr5m8WL4059g7Vpo394zMbjskVS9evUAcwW8\nZcuW0aZNG3766aeKRygiUst99pnZb/HFF55LFlXhMGFMmTKFvLw85syZw7hx4zhz5gyvvvqqO2IT\nEakx1qyBRx+F5cuha1dPR1M5GiUlIuJiW7bAnXdCUpI5m9vTXPZIaty4cXYHt1gsNGnShMjISO65\n556KRyoiUovs2QN33QULFnhHsqgKh6OkLly4wLZt2+jUqRMdO3Zk+/btZGdn8/e//10r4YmIlOO7\n72DAAJgxA+67z9PRVJ3DR1LR0dF89dVX+PmZjZGioiJuvvlm1q9fT/fu3dm9e7dbAi2NHkmJiLf6\n/nu45RZ47DHwtr+tXVZ8MC8vj4KCAtvrgoICTp06hZ+fH/Xr16/wCUVEarrTp80+iwcf9L5kURUO\n+zD++Mc/EhERQUxMDIZhsGbNGiZPnszZs2e5/fbb3RGjiIjPOHcOBg+Gm26CxERPR1O9nBoldfTo\nUTIyMrBYLERGRhIQEOCO2BzSIykR8SaFhWaZ8mbNYNEiqOOla5pW9rtTw2pFRKpBcTEMH24uhPTx\nx+Dv7+mIyuayYbUiIlI+w4CxY+HoUVixwruTRVUoYYiIVNGzz8KmTbB6NVx9taejcR2nnrBZrVaO\nHj3Kd999Z/txRlpaGl26dKFjx47MnDnzis/37NnDr3/9a+rXr8+cOXMqtK+IiDeYMwc++gjS0uCa\nazwdjWs57MN4/fXXSUxMpGXLltQtsRzUzp07yz2w1Wqlc+fOrFq1ioCAAKKiokhKSiIkJMS2zcmT\nJzly5AhLliyhWbNmPPnkk07vC+rDEBHPeucd+POfYd06aNvW09E4z2V9GK+99hp79+6lefPmFTpw\nRkYGwcHBBAUFARAXF8fSpUvtvvRbtGhBixYtWL58eYX3FRHxpI8/hmeegfR030oWVeHwkVS7du24\nphLtrNzcXNqW+FcMDAwkNzfX5fuKiLja55+bM7iXL4dOnTwdjfs4bGG0b9+evn37ctddd9nWxrBY\nLDzxxBPl7mexWCodVEX2nTZtmu33mJgYYmJiKn1eERFHNm6Ehx6CTz6BiAhPR+Oc9PR00tPTq3wc\nhwmjXbt2tGvXjosXL3Lx4kUMw3DqCz0gIIDs7Gzb6+zsbAIDA50KqiL7lkwYIiKutHMn3HMP/OMf\nZp0oX3H5H9OJlZyC7jBhVPYLOTIykv3795OVlUWbNm1ITk4mKSmp1G0v73ypyL4iIu5w6BAMHAiv\nvQaDBnk6Gs8oM2E8/vjjzJ07l8GDB1/xmcViISUlpfwD+/kxf/58BgwYgNVqJT4+npCQEBYsWABA\nQkICx48fJyoqijNnzlCnTh3mzp1LZmYmjRo1KnVfERFPOHoU+vc3O7mHDvV0NJ5T5rDab7/9ll69\nepX63MtisdCnTx9Xx+aQhtWKiKudOgV9+pj9FpMmeTqa6qFaUiIi1aygAG6/3eyvePllqMJYHq+i\nhCEiUo1+/hnuvhv+53/g7bdrTrIAJQwRkWpTVGQufmSxQHIylChyUSOoWq2ISDUwDBgzBvLz4bPP\nal6yqIoyZ3oXFRXx5ptv8swzz/DVV1/ZffbCCy+4PDAREXczDPjDH2D3bnNi3lVXeToi71JmwkhI\nSGDt2rU0b96c8ePH283s/vjjj90SnIiIO02fDitXmiU/GjXydDTep8yEkZGRwfvvv8/EiRPZuHEj\n+fn53H///Vy4cMGd8YmIuMVf/mJWn125Eq691tPReKcyE0ZhYaHtd39/f95++23CwsLo168fBQUF\nbglORMQd3n/fbF18/jlcd52no/FeZSaMXr16sWLFCrv3pk6dyqhRo8jKynJ1XCIibrF8OUycaC6A\ndP31no7Gu2lYrYjUWmvXwpAh5mio6GhPR+M+lf3udGqJ1st9/vnnldlNRMRrbNliJov3369dyaIq\nKtXCaNu2rV35cU9RC0NEKmPvXoiJgTfegPvv93Q07lftE/dKq1J7yY8//ljhE4mIeIPvvoM77jA7\nuWtjsqiKMhPG+vXr+ec//0mjEoORL2WlTZs2uSU4EZHq9P33ZpnyCRNg1ChPR+N7ykwY0dHRNGjQ\noNQlTzt37uzKmEREqt3p03DnnfC//2uOipKK0ygpEanxzp83k0X37vD66zWr8mxlqFqtiEgpCgvh\nvvugSRP45z+hTqXGhtYs1d7p3ahRIyy/pOHLD26xWDhz5kwlwhQRcZ/iYnjkEfP3d99VsqiqMhNG\nyfIfERERbN261S0BiYhUB8OA8eMhJ8ecxe3v7+mIfJ/WwxCRGum55+Drr+HLL+Hqqz0dTc2ghCEi\nNc4rr8CHH8K6dWbfhVSPMhPGxx9/bOu7OH36NJ988omtH8NisXC/ZryIiBdauBDmzjWTRYsWno6m\nZilzlNQjjzxi6/Q2DMP2+yULFy50fXQOaJSUiJT0ySfw+99DejpouljZvHJYbVpaGhMmTMBqtTJ6\n9GiefvrpK7YZP348K1asoEGDBrz77rtEREQAMGPGDN577z3q1KlD9+7dWbhwIVddtl6iEoaIXLJq\nFTz0kNnB3bOnp6Pxbi6vVrtu3TrmzJnDypUrndrearUyduxY0tLSyMzMJCkpid27d9ttk5qayoED\nB9i/fz9vvfUWjz32GABZWVm8/fbbbNmyhZ07d2K1Wvnggw8qcFkiUpts2gRDh8JHHylZuFKZCaN3\n7962399++23GjRtHQUEBiYmJzJgxw+GBMzIyCA4OJigoCH9/f+Li4li6dKndNikpKYwcORIwS5Hk\n5eVx4sQJrrnmGvz9/Tl37hxFRUWcO3eOgICAyl6jiNRgu3bBPfeY8yxuvdXT0dRsTi3RumDBAj7/\n/HOmTp3KypUrWbx4scMD5+bm0rZtW9vrwMBAcnNzndrm2muv5cknn6Rdu3a0adOGpk2bcvvtt1fo\nwkSk5jt0yCz58eqrcNddno6m5itzlJTVauXUqVMYhoHVaqXFL8MNGjZsiJ+f49G4l3eSl6W052gH\nDx7ktddeIysriyZNmvCb3/yGxYsXM2zYsCu2nTZtmu33mJiYUoslikjNc+yYWXl2yhTzcZSULT09\nnfT09Cofp8xv/jNnztCrVy/A/PI/duwY1113Hfn5+U4dOCAgwG6RpezsbAIDA8vdJicnh4CAANLT\n07nxxhtp3rw5APfffz8bNmxwmDBEpHY4dcpc0+LRR+GXrk8px+V/TCcmJlbqOGU+ksrKyuLw4cMc\nPnyYQ4cOcd111wFQt25dPv30U4cHjoyMZP/+/WRlZXHx4kWSk5OJjY212yY2NpZFixYBsHHjRpo2\nbUqrVq3o3LkzGzdu5Pz58xiGwapVqwgNDa3UBYpIzVJQYD5+uuMOmDzZ09HULmW2MDIyMvjhhx8Y\nNGiQ3fvp6em0atWK9u3bl39gPz/mz5/PgAEDsFqtxMfHExISwoIFCwBISEhg0KBBpKamEhwcTMOG\nDW1zO8LDwxkxYgSRkZHUqVOHnj17MmbMmKpeq4j4uJ9/NlfJCw2F2bNVptzdypyH0bdvXxYuXEhQ\nUJDd+1lZWYwaNYrVq1e7I75yaR6GSO1htcKDD5pFBZOTwYmuVClDtZc3z8/PvyJZAAQFBfHDDz9U\n+EQiIpVlGJCQYK6at2yZkoWnlPnPnpeXV+ZO58+fd0kwIiKXMwx46ilzvsWqVXBZwQdxozI7vfv1\n68eUKVPsmi3FxcU8++yz3HbbbW4JTkTkpZfg3/+G1FRo1MjT0dRuZfZhFBQUMHr0aDIyMggPDwdg\n+/btREZG8re//Y3GjRu7NdDSqA9DpGZ7802YNcusPNumjaejqTlcVnzw4MGD/Oc//8FisRAaGkqH\nDh0qHWR1U8IQqbmSksxHUWvXwvXXezqamsUrq9W6mhKGSM2UmgqjRsEXX0C3bp6Opuap9lFSIiKe\nsG4djBwJn32mZOFtyuz0Pnz4sDvjEBFh61Z44AF4/3244QZPRyOXKzNhDBkyBEAjokTELfbtg0GD\nzI7u/v09HY2UptxqtS+++CL79u3jlVdesXveZbFYeOKJJ9wSoIjUfNnZZm2oF180S3+IdyqzhfHB\nBx9Qt25drFYr+fn55OfnU1BQYPtdRKQ6nDxptijGjTOrz4r3cjhKKjU19YoChN5Co6REfNuZM9C3\nLwwcCC+84Oloag+XDavNy8sjMTGRtWvXAmZd9eeee44mTZpULtJqpIQh4rvOnzcTRWgovPGGKs+6\nU2W/O8t8JHXJo48+yjXXXMOHH37Iv/71Lxo3bsyoUaMqFaSICEBhoVl5tk0bmD9fycJXOGxhhIWF\nsX37dofveYJaGCK+p7jYnGfx00/w6afg7+/piGofl7Uwrr76atatW2d7vX79eho0aFDhE4mIGAY8\n/jgcOQL/+peSha9xONP7zTffZMSIEZw+fRqAZs2a8Y9//MPlgYlIzTNtGqxfD+npoL87fY/TtaQu\nJQxv6Oy+RI+kRHzHa6/BX/9qlv5o2dLT0dRuLq8l5U2JQkR8y7vvwquvKln4OhUfFBGXWrIEJk2C\n1auhXTtPRyNVoYQhIi7zxRcwZgysWAFdung6GqkqpxLGV199RVZWFkVFRYD5/GvEiBEuDUxEfFtG\nBgwdCh9+CL16eToaqQ4OE8bw4cM5dOgQ4eHh1K1b1/a+EoaIlOU//4HYWHjnHejTx9PRSHVxmDC+\n/fZbMjMzsVRiKmZaWhoTJkzAarUyevRonn766Su2GT9+PCtWrKBBgwa8++67REREAGZJktGjR9uW\nh33nnXe4QQXyRbze4cNw550wZw7cfbeno5Hq5HDiXrdu3Th27FiFD2y1Whk7dixpaWlkZmaSlJTE\n7t277bZJTU3lwIED7N+/n7feeovHHnvM9tnjjz/OoEGD2L17Nzt27CAkJKTCMYiIex07Zlae/dOf\nYNgwT0cj1c1hC+PkyZOEhobSu3dvrrrqKsDsw0hJSSl3v4yMDIKDgwkKCgIgLi6OpUuX2n3xp6Sk\nMHLkSACio6PJy8vjxIkT1K9fn3Xr1tkmCPr5+WlYr4iX++knGDAAHnkEfv97T0cjruAwYUybNg3A\n9kjKMAynHk/l5ubStm1b2+vAwEA2bdrkcJucnBzq1q1LixYtGDVqFNu3b6dXr17MnTtXJUlEvNTZ\ns3DXXXD77TBliqejEVdxmDBiYmI4fvw433zzDRaLhd69e9PSiZk3zvZ5XD7b0GKxUFRUxJYtW5g/\nfz5RUVFMmDCBl156iT//+c9X7H8poV2KNSYmxqnzikj1+Plnc5W8zp1h9mxVnvVG6enppKenV/k4\nDhPGv/71L5566in6/DLUYezYscyaNYvf/OY35e4XEBBAdna27XV2djaBgYHlbpOTk0NAQACGYRAY\nGEhUVBRgri/+0ksvlXqekglDRNzLaoXhw6FhQ3j7bajjsFdUPOHyP6YTExMrdRyHCeOFF17gm2++\nsbUqTp48Sb9+/RwmjMjISPbv309WVhZt2rQhOTmZpKQku21iY2OZP38+cXFxbNy4kaZNm9KqVSsA\n2rZty759++jUqROrVq2ia9eulbpAEXENw4D/+z+z72LZMvDTNOAaz+EtNgyDFi1a2F43b97cqaJV\nfn5+zJ8/nwEDBmC1WomPjyckJIQFCxYAkJCQwKBBg0hNTSU4OJiGDRuycOFC2/6vv/46w4YN4+LF\ni3To0MHuMxHxvD/9CXbsgFWroH59T0cj7uCwWu1TTz3F9u3beeihhzAMg+TkZHr06MHLL7/srhjL\npGq1Iu5nGDBjBrz/PqxZA82bezoiqSiXreltGAaffPIJ69evx2KxcMstt3DfffdVOtDqpIQh4l5f\nfQV//KM5Kio11VxiVXyPyxKGN1PCEHGPPXvMirPffgvPP292dJeoFCQ+ptqXaL3pppsAaNSoEY0b\nN7b7ueaaayofqYj4jGPHICEBbrkFbrwR9u411+NWsqid1MIQkSucOQOzZsFf/gKjRsHkyXDttZ6O\nSqpLtbcwLnn44Yedek9EfN/Fi/D669CpExw5Alu2mJPxlCwEnBhWu2vXLrvXRUVFfPvtty4LSETc\nzzDMdSsmT4bgYPj3vyEszNNRibcpM2FMnz6dGTNmcP78eRo3bmx739/fnzFjxrglOBFxvfR0c+ST\n1QoLFkC/fp6OSLyVwz6MSZMmMWPGDHfFUyHqwxCpvJ07zcl3mZnw4osQF6fSHrWFy/owoqKiyMvL\ns73Oy8tjyZIlFT6RiHiH7GyzI7tfP3Ptij174KGHlCzEMYctjLCwMLZv3273Xnh4ONu2bXNpYM5Q\nC0PEeXl58NJLZpHAhAR4+mnQMjO1k8taGKUd1Gq1VvhEIuIZP/8Mr7xijnz64Qez/tP06UoWUnEO\nE0avXr144oknOHjwIAcOHGDixIn06tXLHbGJSBUUF8N775nrVKxebf787W8QEODpyMRXOXwkVVBQ\nwPPPP88XX3wBQP/+/XnmmWdo2LChWwIsjx5JiZTu88/NR07+/uYEvFtv9XRE4k1US0pE2LrVTBSH\nD5sVZR94QCvgyZUq+93pcOLe999/z8svv0xmZibnz5+3nezLL7+seJQi4hJZWfDss2bL4rnn4Le/\nNVsXItXJYR/GsGHD6NKlC4cOHWLatGkEBQURGRnpjthExIEff4Qnn4ReveD662H/fvjd75QsxDUc\nJowff/yR0aNHU69ePfr06cPChQvVuhDxsPPnYeZM6NIFzp2D//wHEhOhRFEGkWrn8JFUvXr1AGjd\nujXLli2jTZs2/PTTTy4PTESuZLXCokUwdSpERcH69eYoKBF3cJgwnnnmGfLy8pgzZw7jxo3jzJkz\nvPrqq+6ITUR+YRiwYsV/J9t98IG5PoWIO5WbMKxWK/v27ePuu++madOmpKenuyksEbnkm2/M4oDH\nj5sztWNjNfJJPKPcPoy6deuSlJTkrlhEpISDB+HBB+Hee81aTzt3wj33KFmI5zichzFx4kQKCwt5\n8MEHadiwIYZhYLFY6Nmzp7tiLJPmYUhN9P335rrZSUkwcSJMmABeME9WahCXTdyLiYnBUsqfNKtX\nr67wyaqbEobUJGfPwquvwmuvmS2KZ5+FFi08HZXURNVefHDu3LkAvPDCC6xevfqKH2ekpaXRpUsX\nOnbsyMyZM0vdZvz48XTs2JGwsDC2bt1q95nVaiUiIoLBgwc7ez0iPqeoCN56yywOuGsXbNoE8+Yp\nWYj3KTNhvPPOOwCMGzeuUge2Wq2MHTuWtLQ0MjMzSUpKYvfu3XbbpKamcuDAAfbv389bb73FY489\nZvf53LlzCQ0NLbWFI+LrDAOWLIHu3c3HT0uWmKOfOnTwdGQipStzlFRoaCgdO3YkNzeX7t27231m\nsVjYsWNHuQfOyMggODiYoKAgAOLi4li6dCkhISG2bVJSUhg5ciQA0dHR5OXlceLECVq1akVOTg6p\nqalMmTKFV155pbLXJ+KVNmwwRz6dPg1z5sDAgerMFu9XZsJISkri+PHj3HHHHXz22WcVft6Vm5tL\n27Ztba8DAwPZtGmTw21yc3Np1aoVEydOZNasWZw5c6ZC5xXxZnv3wqRJsHkz/PnP8PDDULeup6MS\ncU658zBat27tsCVRFmcfI12eiAzDYNmyZbRs2ZKIiAiHcz+mTZtm+z0mJoaYmJgKRirieseOmaU7\nPv4YnnoKFi+Gq6/2dFRSW6Snp1fLPDqHM70rKyAggOzsbNvr7OxsAgMDy90mJyeHgIAAPv74Y1JS\nUkhNTeXChQucOXOGESNGsGjRoivOUzJhiHib/HxzPYo33oBHHjHXz27e3NNRSW1z+R/TiYmJlTqO\ny5Z9j4yMZP/+/WRlZXHx4kWSk5OJjY212yY2NtaWBDZu3EjTpk1p3bo106dPJzs7m8OHD/PBBx9w\n2223lZosRLxVYaGZJDp2NNem+PZbs69CyUJ8mdMtjHPnztGgQQPnD+znx/z58xkwYABWq5X4+HhC\nQkJYsGABAAkJCQwaNIjU1FSCg4Np2LAhCxcuLPVYGiUlvsIw4KOPYPJks9x4WhqEh3s6KpHq4XDi\n3oYNGxg9ejT5+flkZ2ezbds23nrrLf7yl7+4K8YyaeKeeJM1a8yRT4WFZunx/v09HZFI6ap94t4l\nEyZMIC0tjV/96lcAhIeHs2bNmopHKFJD7doFd99t9lGMH2+OgFKykJrIqT6Mdu3a2b3283NZX7mI\nz8jJgfh4uO026NfP7NAeNgzquKxnUMSzHP6n3a5dO7766isALl68yOzZs+0m34nUNqdPm3MpwsKg\nZUvYt88OhV4yAAARUUlEQVQsEnjVVZ6OTMS1HCaMv/71r7zxxhvk5uYSEBDA1q1beeONN9wRm4hX\n+flnszBgp05w4gRs3w4zZkDTpp6OTMQ9HHZ6ezN1eos7FBebNZ6eeQZCQ81FjLp183RUIpVX2e/O\nMjsjyis6aLFYmDdvXoVPJuJrVq0yl0WtWxcWLoQ+fTwdkYjnlJkwevXqZZv/cHkm0rwIqem2bTMT\nxaFDMH06DBmi4oAiTj+Sys/Px2Kx0KhRI1fH5DQ9kpLqduSIuXDRypXmI6gxY6BePU9HJVK9XDYP\nY+fOnURERNC1a1dCQ0Pp1asXu3btqlSQIt7q1Cn4wx+gZ08ICjJHPo0dq2QhUpLDhDFmzBheeeUV\nvvvuO7777jvmzJnDmDFj3BGbiMudPw8vvwydO0NBgTkJ789/hmuu8XRkIt7H4Qy8c+fO0bdvX9vr\nmJgYzp4969KgRFzNaoV//hOeew4iI2HdOujSxdNRiXg3hwmjffv2PP/88zz88MMYhsHixYu5/vrr\n3RGbSLUzDLMg4NNPQ+PG5tKoN93k6ahEfIPDTu9Tp04xdepU22zvW265hWnTptGsWTO3BFgedXpL\nRWzebBYHPHrUnEtxzz0a+SS1U2W/OzVxT2q8gwdhyhRYuxamTYNHHwWVQ5ParNon7l3yzTffMH36\ndLKysigqKrKdrLJLt4q4y8mT8Pzz5nKoEybA3/8ODRt6OioR3+UwYQwbNozZs2fTrVs36qgMp/iA\ns2fNmk+vvgpDh8Lu3WaRQBGpGocJo0WLFlcsrSrijYqKzPId06aZHdkbN0JwsKejEqk5HPZhrFy5\nkuTkZG6//Xbq/TKLyWKxcP/997slwPKoD0PAHPmUkmKWHG/Z0pxX0bu3p6MS8V4u68P4xz/+wd69\neykqKrJ7JOUNCUPk66/NkU8//QSzZsGgQRr5JOIqDlsYnTt3Zs+ePV5ZcFAtjNpr716YPBkyMsyZ\n2SNGmBVlRcQxl9WSuvHGG8nMzKxUUCLV7fhxeOwxs48iKsqs+TRqlJKFiDs4fCT19ddfEx4eTvv2\n7bnqlzUoNaxW3C0/H2bPhvnzYeRIs4XRvLmnoxKpXRwmjLS0NHfEIVKqwkJ4+21zPkW/fvDtt2Y1\nWRFxP4ePpIKCgkr9cVZaWhpdunShY8eOzJw5s9Rtxo8fT8eOHQkLC2Pr1q0AZGdn07dvX7p27Uq3\nbt20wl8tYxjw0UfQtSssWQKpqfDee0oWIh5luFBRUZHRoUMH4/Dhw8bFixeNsLAwIzMz026b5cuX\nGwMHDjQMwzA2btxoREdHG4ZhGMeOHTO2bt1qGIZh5OfnG506dbpiXxeHLx6ydq1h3HCDYYSHG8a/\n/+3paERqnsp+d7p06nZGRgbBwcEEBQXh7+9PXFwcS5cutdsmJSWFkSNHAhAdHU1eXh4nTpygdevW\nhIeHA9CoUSNCQkI4evSoK8MVD8vMhNhYePhh+P3vzcdPd9zh6ahE5BKXJozc3Fzatm1rex0YGEhu\nbq7DbXJycuy2ycrKYuvWrURHR7syXPGQ3FwYPRpiYsyfPXtg+HBQJRoR7+LSmp3Ozt0wLhsPXHK/\ngoIChgwZwty5c0tdT3zatGm232NiYoiJialUrOJ+p0/DzJmwYAH89rfmENmmTT0dlUjNk56eTnp6\nepWP49KEERAQQHZ2tu11dnY2gYGB5W6Tk5NDQEAAAIWFhTzwwAMMHz6ce++9t9RzlEwY4t0Mw2xN\nbN4MmzbBO++YM7O3bYMSjUwRqWaX/zGdmJhYqeO4NGFERkayf/9+srKyaNOmDcnJySQlJdltExsb\ny/z584mLi2Pjxo00bdqUVq1aYRgG8fHxhIaGMmHCBFeGKS5y/LiZHEr+FBebE+4iI2HVKuje3dNR\nioizXL6A0ooVK5gwYQJWq5X4+HgmTZrEggULAEhISABg7NixpKWl0bBhQxYuXEjPnj1Zv349t956\nKz169LA9opoxYwZ33nnnf4NXaRCv8cMPZif1N9/8NzmcP28mhpI/gYGq9STiaVpxT9wmL89MDiVb\nDqdOQa9e9smhfXslBxFvpIQhLpGfD1u32rccjh+HiAj75BAcrFFNIr5CCUOq7Nw5swO6ZMvhyBHo\n0cM+OXTpomJ/Ir5MCUMq5OefYceO/yaGb76BAwcgNNRMCpc6pkNDwd/f09GKSHVSwpAyFRbCrl32\nLYfdu6FTJ/uWQ/fu8EtBYhGpwZQwBDDXtd6zx77lsGuXWbSvZHIID4err/Z0tCLiCUoYtVBxsTk7\numTLYds2CAiwTw4REVDKJHkRqaWUMGo4w4BDh+yTw5Yt5iJCJZNDz54qryEi5VPCqEEMA777zj45\nfPstNGxo3yHdq5dWnRORilPC8GFHj15ZQqNOnf8mhkvJoXVrT0cqIjWBEoaP+P77K5PDxYv2LYfI\nSGjTRrOkRcQ1lDC80KlTV5bQOH36yvpK//M/Sg4i4j5KGB52+rTZCV0yOXz/vdkJXbL1cP31KqEh\nIp6lhOFGZ8+a9ZVKJoecHAgLs285dOqkEhoi4n2UMFzk/HmzhEbJ4nuHDkG3bvbJITQU/Fy6uoiI\nSPVQwqgGFy/Czp32LYe9e81ieyWTQ7duUK9etZ1WRMStlDAqqKgIMjPtWw7/+Q906GCfHHr0UAkN\nEalZlDDKYbWaLYWSLYft2811pEt2SIeHm5PjRERqMiWMXxQXw8GD/y28t3mz2UHdqtWVJTSuucZD\ngYuIeFCtTRiHDhlXlNBo0sS+5dCzJ1x7raejFRHxDrU2YbRpY9i1HHr1gpYtPR2ZiIj3qrUJw4fD\nFxHxiMp+d2rOsYiIOMWlCSMtLY0uXbrQsWNHZs6cWeo248ePp2PHjoSFhbF169YK7SsiIu7jsoRh\ntVoZO3YsaWlpZGZmkpSUxO7du+22SU1N5cCBA+zfv5+33nqLxx57zOl9a4P09HRPh+BSuj7fVpOv\nryZfW1W4LGFkZGQQHBxMUFAQ/v7+xMXFsXTpUrttUlJSGDlyJADR0dHk5eVx/Phxp/atDWr6f7S6\nPt9Wk6+vJl9bVbgsYeTm5tK2bVvb68DAQHJzc53a5ujRow73FRER93JZwrA4ucCDRjmJiPgGl9VX\nDQgIIDs72/Y6OzubwMDAcrfJyckhMDCQwsJCh/sCdOjQwenE5KsSExM9HYJL6fp8W02+vpp8bR06\ndKjUfi5LGJGRkezfv5+srCzatGlDcnIySUlJdtvExsYyf/584uLi2LhxI02bNqVVq1Y0b97c4b4A\nBw4ccFX4IiJyGZclDD8/P+bPn8+AAQOwWq3Ex8cTEhLCggULAEhISGDQoEGkpqYSHBxMw4YNWbhw\nYbn7ioiI5/j0TG8REXEfr5/p/eijj9KqVSu6d+9e5jZlTf7zBY6uLz09nSZNmhAREUFERAQvvPCC\nmyOsmuzsbPr27UvXrl3p1q0b8+bNK3U7X72Hzlyfr97DCxcuEB0dTXh4OKGhoUyaNKnU7Xz13jlz\nfb5670qyWq1EREQwePDgUj+v0P0zvNzatWuNLVu2GN26dSv18+XLlxsDBw40DMMwNm7caERHR7sz\nvCpzdH2rV682Bg8e7Oaoqs+xY8eMrVu3GoZhGPn5+UanTp2MzMxMu218+R46c32+fA/Pnj1rGIZh\nFBYWGtHR0ca6devsPvfle2cYjq/Pl+/dJXPmzDEeeuihUq+jovfP61sYt9xyC82aNSvz89Im/504\nccJd4VWZo+sD3x563Lp1a8LDwwFo1KgRISEhHD161G4bX76Hzlwf+O49bNCgAQAXL17EarVy7WXr\nBPjyvQPH1we+e+/AHHmamprK6NGjS72Oit4/r08YjpQ2+S8nJ8eDEVUvi8XChg0bCAsLY9CgQWRm\nZno6pErLyspi69atREdH271fU+5hWdfny/ewuLiY8PBwWrVqRd++fQkNDbX73NfvnaPr8+V7BzBx\n4kRmzZpFnTqlf9VX9P75fMKAK/8CqElzM3r27El2djbbt29n3Lhx3HvvvZ4OqVIKCgoYMmQIc+fO\npVGjRld87uv3sLzr8+V7WKdOHbZt20ZOTg5r164ttWSGL987R9fny/du2bJltGzZkoiIiHJbSRW5\nfz6fMEqb/BcQEODBiKpX48aNbc3mgQMHUlhYyKlTpzwcVcUUFhbywAMPMHz48FL/h/P1e+jo+mrC\nPWzSpAl33XUXmzdvtnvf1+/dJWVdny/fuw0bNpCSkkL79u0ZOnQoX375JSNGjLDbpqL3z+cTRmxs\nLIsWLQKwm/xXU5w4ccL2F0BGRgaGYZT6nNVbGYZBfHw8oaGhTJgwodRtfPkeOnN9vnoPf/jhB/Ly\n8gA4f/48n3/+OREREXbb+PK9c+b6fPXeAUyfPp3s7GwOHz7MBx98wG233Wa7V5dU9P65bOJedRk6\ndChr1qzhhx9+oG3btiQmJlJYWAiUP/nPVzi6vo8++oi//vWv+Pn50aBBAz744AMPR1wxX331Fe+9\n9x49evSw/c84ffp0vvvuO8D376Ez1+er9/DYsWOMHDmS4uJiiouLefjhh+nXr59Tk299gTPX56v3\nrjSXHjVV5f5p4p6IiDjF5x9JiYiIeyhhiIiIU5QwRETEKUoYIiLiFCUMERFxihKGiIg4RQlDaqwf\nf/zRVpb6uuuuIzAwkIiICHr27ElRUVGVj5+enk6dOnVYtmyZ7b27776bNWvWVPnYAEFBQT4zq1hq\nB6+fuCdSWc2bN7fV909MTKRx48Y88cQTts+tVit169at0jkCAwN58cUXufvuuwFzclR11VKyWCyV\nrpRaVFSEn5/+95bqpRaG1BqGYfDII4/wf//3f9xwww08/fTTfPPNN9x444307NmTm266iX379gHQ\np08ftm/fbtv35ptvZufOnXbHs1gshIWF0bRpU1atWnXF+Uq2EDZv3kzfvn0BmDZtGiNHjuTWW28l\nKCiITz75hD/84Q/06NGDgQMH2rV+Xn75ZXr06EF0dDQHDx4E4OTJkwwZMoTevXvTu3dvNmzYYDvu\nww8/zM0332wrWS1SnZQwpFaxWCwcPXqUr7/+mtmzZ9OlSxfWrVvHli1bSExMZPLkyQDEx8fz7rvv\nArBv3z5+/vnnK1ZFvPTX/+TJk0tdia28lsbhw4dZvXo1KSkpDB8+nP79+7Njxw6uvvpqli9fbtuu\nadOm7Nixg7Fjx9pqVT3++ONMnDiRjIwMPvroI0aPHm3bfs+ePXzxxRcsXry4cv9AIuVQm1Vqnd/8\n5je2L/O8vDxGjBjBgQMHsFgstjpeQ4YM4fnnn2fWrFm88847jBo1qszj3XLLLYBZV8oZFouFgQMH\nUrduXbp160ZxcTEDBgwAoHv37hw5csS27dChQwGIi4tj4sSJAKxatYrdu3fbtsnPz+fs2bNYLBZi\nY2O56qqrnP2nEKkQJQypdS6VqwZ49tln6devH59++ilHjhwhJibGtk3//v1ZsmQJH374IVu2bCn3\nmFOmTOH555/H39/f9p6fnx/FxcWAuX50SfXq1QPM9RhK7lOnTp0yO+QvJTnDMNi0aZPtGGVdm0h1\n0yMpqdXOnDlDmzZtAK6o1Dl69GjGjx9P7969adKkSbnH6d+/P3l5eezYscP2XlBQkG19hY8//tj2\nvqOO7EufG4ZBcnIyAMnJydx4440A3HHHHcybN8+2fcm+FhFXUsKQWqdk38If//hHJk2aRM+ePbFa\nrXaf9ezZkyZNmpT5OOryEVFTpkyxW95y6tSpPP7440RFReHn52fb9vL9Lu/rKLndTz/9RFhYGK+/\n/jqvvvoqAPPmzWPz5s2EhYXRtWtXW7nq0o4lUp1U3lykDEePHqVv377s3bvX06GIeAW1MERKsWjR\nIm644QamT5/u6VBEvIZaGCIi4hS1MERExClKGCIi4hQlDBERcYoShoiIOEUJQ0REnKKEISIiTvl/\nQTWVrgp1O2cAAAAASUVORK5CYII=\n",
- "text": [
- "<matplotlib.figure.Figure at 0x79d2b70>"
- ]
- },
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "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\n",
- "text": [
- "<matplotlib.figure.Figure at 0x7e3dcc0>"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The No. of trays will be 4.0\n"
- ]
- }
- ],
- "prompt_number": 4
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/Chapter 6.ipynb b/Beginning_C++_through_Game_Programming/Chapter 6.ipynb
deleted file mode 100755
index fd173e33..00000000
--- a/Beginning_C++_through_Game_Programming/Chapter 6.ipynb
+++ /dev/null
@@ -1,1088 +0,0 @@
-{
- "metadata": {
- "name": ""
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 6:Distillation "
- ]
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 6.1,Page number:324"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 6.1\n",
- "#Flash Vaporization of a Heptan+Octane Mixture\n",
- "# solution\n",
- "# n-heptane - a n-octane - b\n",
- "T1 = 303 # [K]\n",
- "P = 1 # [bar]\n",
- "D = 0.6 \n",
- "W = 0.4 \n",
- "zf = 0.5 \n",
- " \n",
- "# Parameters for componenr 'A'\n",
- "Tc_a = 540.3 # [K]\n",
- "Pc_a = 27.4 # [bar]\n",
- "A_a = -7.675 \n",
- "B_a = 1.371 \n",
- "C_a =-3.536 \n",
- "D_a = -3.202 \n",
- "\n",
- "# Parameters for component 'B'\n",
- "Tc_b = 568.8 # [K]\n",
- "Pc_b = 24.9 # [bar]\n",
- "A_b = -7.912 \n",
- "B_b = 1.380 \n",
- "C_b = -3.804 \n",
- "D_b = -4.501 \n",
- "\n",
- "import math\n",
- "from numpy import *\n",
- "from scipy.optimize import fsolve\n",
- "# Using equation 6.5\n",
- "# x_a = 1-(T/Tc_a) \n",
- "# P_a = Pc_a*math.exp((A_a*x_a+B_a*x_a**1.5+C_a*x_a**3+D_a*x_a**6)/(1-x_a)) # [bar]\n",
- "\n",
- "# x_b = 1-(T/Tc_b) \n",
- "# P_b = Pc_b*math.exp((A_b*x_b+B_b*x_b**1.5+C_b*x_b**3+D_b*x_b**6)/(1-x_b)) # [bar]\n",
- "\n",
- "# m_a = P_a/P \n",
- "# m_b = P_b/P \n",
- "\n",
- "# Solution of simultaneous equation\n",
- "def F(e):\n",
- " f1 = e[1] - (e[2]*Pc_a*math.exp(((A_a*(1-(e[0]/Tc_a))+B_a*(1-(e[0]/Tc_a))**1.5+C_a*(1-(e[0]/Tc_a))**3+D_a*(1-(e[0]/Tc_a))**6))/(1-(1-(e[0]/Tc_a)))))/P \n",
- " f2 = 1-e[1] - ((1-e[2])*Pc_b*math.exp((A_b*(1-(e[0]/Tc_b))+B_b*(1-(e[0]/Tc_b))**1.5+C_b*(1-(e[0]/Tc_b))**3+D_b*(1-(e[0]/Tc_b))**6)/(1-(1-(e[0]/Tc_b)))))/P \n",
- " f3 = (-W/D) - ((e[1]-zf)/(e[2]-zf)) \n",
- " return(f1,f2,f3)\n",
- "\n",
- "\n",
- "# Initial guess\n",
- "e = [400,0.6,0.4] \n",
- "y = fsolve(F,e) \n",
- "T = y[0] # [K] \n",
- "Yd = y[1] \n",
- "Xw = y[2] \n",
- "\n",
- "print\"The composition of the vapor and liquid and the temperature in the separator if it behaves as an ideal stage are\",round(Yd,3),round(Xw,3),\"and\",round(T,1),\"K respectively\\n\\n\"\n",
- "\n",
- "# For the capculation of the amount of heat to be added per mole of feed\n",
- "T0 = 298 # [K]\n",
- "lambdaA = 36.5 # [Latent heats of vaporization at To = 298 K ,kJ/mole]\n",
- "lambdaB = 41.4 # [Latent heats of vaporization at To = 298 K ,kJ/mole]\n",
- "CpA = 0.187 # [kJ/mole.K]\n",
- "CpB = 0.247 # [kJ/mole.K]\n",
- "CLA1 = 0.218 # [ 298-303 K, kJ/mole.K]\n",
- "CLB1 = 0.253 # [ 298-303 K, kJ/mole.K]\n",
- "CLA2 = 0.241 # [ 298-386 K, kJ/mole.K]\n",
- "CLB2 = 0.268 # [ 298-386 K, kJ/mole.K]\n",
- "# Bubble point calculated when 'D' approaches 0 and Dew point calculated when 'D' approaches 1\n",
- "Tbp = 382.2 # [Bubble point of the mixture, K]\n",
- "Tdp = 387.9 # [Dew point of mixture, K]\n",
- "\n",
- "HF = (T1-T0)*(Xw*CLA1+CLB1*(1-Xw)) # [kJ/mole]\n",
- "HW = (Tbp-T0)*(Xw*CLA2+CLB2*(1-Xw)) # [kJ/mole]\n",
- "HG = (Tdp-T0)*(Yd*CpA+(1-Yd)*CpB) + Yd*lambdaA +(1-Yd)*lambdaB # [kJ/mole]\n",
- "\n",
- "f =1 # [feed]\n",
- "# Using equation 6.4\n",
- "def f14(Q):\n",
- " return(W/D + (HG-(HF+Q/f))/(HW -(HF+Q/f)))\n",
- "Q = fsolve(f14,40) \n",
- "print\"The amount of heat to be added per mole of feed is\",round(Q[0],2),\"kJ/mole\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The composition of the vapor and liquid and the temperature in the separator if it behaves as an ideal stage are 0.576 0.385 and 385.4 K respectively\n",
- "\n",
- "\n",
- "The amount of heat to be added per mole of feed is 42.08 kJ/mole\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 6.2,Page number:326"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 6.2\n",
- "\n",
- "# solution\n",
- "\n",
- "# a-benzene b-toluene c-orthoxylene\n",
- "T = 373 # [K]\n",
- "P = 101.3 # [kPa]\n",
- "Pa = 182.7 # [kPa]\n",
- "Pb = 73.3 # [kPa]\n",
- "Pc= 26.7 # [kPa]\n",
- "Zfa = 0.5 \n",
- "Zfb = 0.25 \n",
- "Zfc = 0.25 \n",
- "\n",
- "import math\n",
- "from numpy import *\n",
- "from scipy.optimize import fsolve\n",
- "# Therefore\n",
- "ma = Pa/P \n",
- "mb = Pb/P \n",
- "mc = Pc/P \n",
- "# Let Feed is 1 kmole\n",
- "# Therefore D+W = 1\n",
- "\n",
- "# Solution of simultaneous equation\n",
- "def F(e):\n",
- " f1 = e[0]+e[1]-1 \n",
- " f2 = e[1]/e[0] + (e[2]-Zfa)/(e[3]-Zfa) \n",
- " f3 = e[2]-ma*e[3] \n",
- " f4 = e[4]-mb*e[5] \n",
- " f5 = 1-e[2]-e[4] -mc*(1-e[3]-e[5]) \n",
- " f6 = e[1]/e[0] + (e[4]-Zfb)/(e[5]-Zfb) \n",
- "\n",
- " return(f1,f2,f3,f4,f5,f6)\n",
- "\n",
- "# Initial guess\n",
- "e = [0.326,0.674,0.719,0.408,0.198,0.272] \n",
- "y = fsolve(F,e) \n",
- "D = y[0] \n",
- "W = y[1] \n",
- "Yad = y[2] \n",
- "Xaw = y[3] \n",
- "Ybd = y[4] \n",
- "Xbw = y[5] \n",
- "Ycd = 1-Yad-Ybd \n",
- "Xcw = 1-Xaw-Xbw \n",
- "\n",
- "print\"The amounts of liquid and vapor products are D=\",round(D,3),\"and W=\",round(W,3),\"respectively\"\n",
- "print\"The vapor compositions of components A(Yad), B(Ybd) and C(Ycd) are\",round(Yad,3),round(Ybd,3),round(Ycd,3),\"respectively\"\n",
- "print\"The liquid composition of components A(Xaw), B(Xbw) and C(Xcw) are\",round(Xaw,3),round(Xbw,3),round(Xcw,3),\"respectively\\n\\n\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The amounts of liquid and vapor products are D= 0.326 and W= 0.674 respectively\n",
- "The vapor compositions of components A(Yad), B(Ybd) and C(Ycd) are 0.714 0.199 0.087 respectively\n",
- "The liquid composition of components A(Xaw), B(Xbw) and C(Xcw) are 0.396 0.275 0.329 respectively\n",
- "\n",
- "\n"
- ]
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 6.3,Page number:328"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 6.3\n",
- "#Differential Distillation of a Heptane-Octane Mixture\n",
- "\n",
- "#Variable declaration\n",
- "\t# n-heptane - a n-octane - b\n",
- "P = 1 \t\t\t\t\t\t# [bar]\n",
- "\n",
- "\t# Basis:\n",
- "F = 100 \t\t\t\t\t# [mole]\n",
- "\t# Therefore\n",
- "D = 60 \t\t\t\t\t# [mole]\n",
- "W = 40 \t\t\t\t\t# [mole]\n",
- "xf = 0.5 \n",
- "\n",
- "#Calculation\n",
- "\n",
- "\n",
- "import math\n",
- "from numpy import *\n",
- "from pylab import *\n",
- "y_star = [0.5,0.55,0.60,0.65,0.686,0.70,0.75] \n",
- "x = [0.317,0.361,0.409,0.460,0.5,0.516,0.577] \n",
- "#for i in range(1,7):\n",
- "# f(i-1) = 1/(y_star(i-1)-x(i-1)) \n",
- "area = matrix([[0.317,5.464],[0.361,5.291],[0.409,5.236],[0.460,5.263],[0.5,5.376],[0.516,5.435],[0.577,7.78]]) \n",
- "\t# LHS of equation 6.11\n",
- "a = math.log(F/W) \n",
- "\n",
- "\n",
- "a1=plot(area[:,0],area[:,1],label='$area under curve$') \n",
- "legend(loc='upper left')\n",
- "xlabel(\"x\") \n",
- "ylabel(\"1/(y_satr-x)\") \n",
- "\n",
- "# When the area becomes equal to 0.916, integration is stopped this occurs at \n",
- "xw = 0.33 # [mole fraction of heptane in residue]\n",
- "yd =( F*xf-W*xw)/D # [mole fraction of heptane]\n",
- "#Result\n",
- "\n",
- "print\"The composition of the composited distillate and the residue are \",round(yd,3),\"and\",round(xw,3),\"respectively\\n\\n\"\n",
- "show(a1)"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The composition of the composited distillate and the residue are 0.613 and 0.33 respectively\n",
- "\n",
- "\n"
- ]
- },
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEPCAYAAABcA4N7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtUU1e+B/BvFKqCCOIThfoAKj4wBhGVO0isFoVWL7bW\noWqlaC3V6ahd09XermlH67iW9tY+Rl3jWN/YWpyiVcoAWrSxthRRQe2tUxQL00gFREQFFAic+8cp\n0QjEhOTkJOH7WSuLR06S3/ZIvtl7n32OQhAEAURERG3oJHcBRERk3xgURERkFIOCiIiMYlAQEZFR\nDAoiIjKKQUFEREZJHhRr167FyJEjERwcjLlz56Kurq7FNsuWLUNgYCCUSiXy8/OlLomIiMwgaVAU\nFxdj69atyMvLww8//IDGxkYkJycbbJOeno7CwkJcunQJH3/8MZYsWSJlSUREZCZJg6JHjx5wdXVF\nbW0tdDodamtrMXDgQINtUlNTER8fDwAYP348qqqqUFZWJmVZRERkBkmDwtvbG3/605/w6KOPYsCA\nAfDy8sLUqVMNtikpKYGfn5/+Z19fX1y5ckXKsoiIyAySBsXly5fx0Ucfobi4GL/++iuqq6vx6aef\nttjuwbOIKBQKKcsiIiIzuEj55KdPn0Z4eDh69eoFAHj66aeRnZ2NefPm6bcZOHAgtFqt/ucrV660\nGJ4CgICAAFy+fFnKcomInI6/vz8KCwsteg5JexRBQUHIycnBnTt3IAgCsrKyMGLECINtZs6ciaSk\nJABATk4OvLy80K9fvxbPdfnyZQiC4LS3lStXyl4D28b2sX3Od7PGB2xJexRKpRILFixAaGgoOnXq\nhJCQECxevBhbtmwBACQmJiImJgbp6ekICAiAu7s7du7cKWVJRERkJkmDAgBef/11vP766wa/S0xM\nNPh506ZNUpdBRETtxJXZdkKtVstdgmScuW0A2+fonL191qAQBMEhLlykUCjgIKUSEdkNa7x3Sj70\nJDVvb2/cuHFD7jJIJj179kRlZaXcZRA5NYfvUbCn0bFx/xMZZ42/Ec5REBGRUQwKIiIyikFBRERG\nMSiIiMgoBgURERnFoOjgvv76awwYMMDgxIxERPdjUHRwERER6Nevn8E1QYiI7seg6ODOnDmDcePG\nyV0GUYeSnAzk5cldhemcPigUCuvc2uvixYt4++23kZ6ejueffx5paWnIy8vDvn37oFar8be//Q0h\n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\naqjVajOaSkQdzd27gK8vkJsLDB0qdzW2odFooNFo9D+/8847tr8eRWVlJbRarUmHx5aWlmLixIko\nKioCAHz77bdYt24d0tLS2nzMkCFDcObMGXh7exsWyqOeiMhMycni/ERWltyVyMdmRz1FRkbi1q1b\nqKysxNixY7F48WK8+uqrD31c//794efnp+8hZGVlYeTIkQbblJWV6RuRm5sLQRBahAQRUXtwJbZ1\nmDRqd/PmTfTo0QPbtm3DggUL8M477yA4ONikF9i4cSPmzZuH+vp6+Pv7Y8eOHdiyZQsAIDExESkp\nKdi8eTNcXFzg5uaG5OTk9reGiOg3P/8MnD0LxMbKXYnjM2noKTg4GEeOHEF8fDzWrFmDsLAwjB49\nGufPn7dFjQA49ERE5nnrLaC6Gujo5y+12dDTX/7yF0ybNg3+/v4ICwvD5cuXERgYaNELExFJRacD\ndu0CFi2SuxLnYJVTeKxduxZvvvmmNeppE3sURGSqf/0L+OtfxRMBdnQ261E8zD//+U9rPA0RkVVw\nEtu6rBIURET2orQU0GiA3/9e7kqcB4OCiJzK7t3A008DHh5yV+I8uKidiJxG81XskpLkrsS5mNSj\nuH79utH7n332WasUQ0RkiW++AR55BJgwQe5KnItJRz0FBgZizJgxSEhIQHR0NBQyXCKKRz0R0cM8\n/zwQEgKYcOKIDsMa750mBUVTUxOysrKwY8cOnDp1CnPmzEFCQgIee+wxi17cHAwKIjKmqgoYPBgo\nLAR695a7Gvths6C437FjxzB//nzU1NRgzJgxWLt2LcLDwy0qwhQMCiIy5u9/B44fF69mR/dY473T\npMnsiooKfPrpp0hKSkK/fv2wadMmzJgxA+fOncPs2bNRXFxsURFERJbatg149125q3BOJgVFeHg4\n5s+fj0OHDsHX11f/+9DQULz88suSFUdEZIq8PKCyEpgyRe5KnJPJcxSdOsm75IJDT0TUlqVLAR8f\nXhe7NZKfwmPhwoU4depUmyFx8uRJJCQkWFQAEZElamvFCxS98ILclTgvo0NPr776Kt577z3k5ORg\n2LBh8PHxgSAIKC0tRUFBAcLDw/Haa6/ZqlYiohZSUsR1E35+clfivEwaeqqrq0N+fj7+85//QKFQ\nYNCgQVAqlejatastagTAoSciat2kScCKFeJpO6glyQ+PfemllxAdHY2pU6fCQ+YTpzAoiOhBBQVi\n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\nTkSuQmCC\n",
- "text": [
- "<matplotlib.figure.Figure at 0x762d0b8>"
- ]
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 6.4,Page number:342"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 6.4\n",
- "# Page: 342\n",
- "\n",
- "\n",
- "# solution\n",
- "\n",
- "T = 298 \t\t\t\t\t\t\t\t# [K]\n",
- "Fa = 200 \t\t\t\t\t\t\t\t# [feed, kmole/hr]\n",
- "zf = 0.6 \n",
- "yd = 0.95 \n",
- "xd = yd \n",
- "xw = 0.05 \n",
- "q = 0.5 \t\t\t\t\t\t\t\t# [Lf/F]\n",
- "\n",
- "\n",
- "print\"Illustration 6.4(a)\"\n",
- "\t# Solution (a)\n",
- "\n",
- "import math\n",
- "from scipy.optimize import fsolve\n",
- "from numpy import *\n",
- "\n",
- "\t# Solution of simultaneous equation \n",
- "def F(e):\n",
- " f1 = Fa - e[0]-e[1] \n",
- " f2 = zf*Fa - yd*e[0] - xw*e[1] \n",
- " return(f1,f2)\n",
- "\n",
- "\n",
- "# Initial guess\n",
- "e = [120,70] \n",
- "y = fsolve(F,e) \n",
- "D = y[0] \n",
- "W = y[1] \n",
- "print\"Quantity of liquid and vapor products are \",round(D,1),\"kmole/h and\",round(W,1),\"kmole/h respectively\"\n",
- "\n",
- "\n",
- "print\"Illustration 6.4(b)\"\n",
- "# Solution(b)\n",
- "\t# VLE data is generated in the same manner as generated in Example 6.1 by applying \tRaoult's law\n",
- "\t# VLE_data = [T,x,y]\n",
- "VLE_data = matrix([[379.4,0.1,0.21],[375.5,0.2,0.37],[371.7,0.3,0.51],[368.4,0.4,0.64],[365.1,0.5,0.71],[362.6,0.6,0.79],[359.8,0.7,0.86],[357.7,0.8,0.91],[355.3,0.9,0.96]]) \n",
- "\t# From figure 6.14\n",
- "\t# The minimum number of equilibrium stages is stepped off between the equilibrium curve and the 45 degree Iine, starting from the top, giving\n",
- "Nmin = 6.7 \n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The minimum number of theoretical stages is\",Nmin\n",
- "\n",
- "print\"Illustration 6.4(c)\"\n",
- "\t# Solution(c)\n",
- "\t# Slope of q-line = Lf/F/(1-(Lf/F))\n",
- "s = q/(1-q) \n",
- "\t# For minimum reflux ratio\n",
- "\t# From figure 6.12 y-intercept is\n",
- "i = 0.457 \n",
- "# Therefore Rmin is\n",
- "Rmin = xd/i -1 \n",
- "\n",
- "#result\n",
- "\n",
- "print\"The minimum reflux ratio is\",round(Rmin,3),\"mole reflux/mole distillate\"\n",
- "\n",
- "print\"Illustration 6.4(d)\"\n",
- "\n",
- "\t# Solution(d)\n",
- "R = 1.3*Rmin \n",
- "\t# The y-intercept of the rectifying-section operating line is\n",
- "ia = xd/(R+1) \n",
- "\t# The operating line for the stripping section is drawn to pass through the point x = y = \txw =0.05 on the 45\" line and the point of intersection of the q-line # and the \t\t\trectifying-section operating line.\n",
- "\t# Therefore from figure 6.15 \n",
- "Nact = 13 \n",
- "\t# But it include boiler\n",
- "Nact1 = Nact-1 \n",
- "print\"The number of equilibrium stages for the reflux ratio specified is\",Nact1\n",
- "\t# For the optimal feed-stage location, the transition from one operating line to the \tother occurs \tat the first opportunity\n",
- "\t# after passing the operating-line intersection \n",
- "\t# Therefore from figure 6.15 shows that \n",
- "\n",
- "\n",
- "print\"The optimal location of the feed stage for the reflux ratio specified is sixth from the top\"\n",
- "\n",
- "print\"Illustration 6.4(e)\"\n",
- "# Solution(e)\n",
- "L = R*D \t\t\t\t\t\t\t\t# [kmole/h]\n",
- "V = L+D \t\t\t\t\t\t\t\t# [kmole/h]\n",
- "# From equation 6.27\n",
- "Lst = L+q*Fa \t\t\t\t\t\t\t\t# [kmole/h]\n",
- "# From equation 6.28\n",
- "Vst = V+(q-1)*Fa \t\t\t\t\t\t\t# [kmole/h]\n",
- "\n",
- "\t# For 50% vaporization of the feed ( zf = 0.60), from calculations similar to those \t\tillustrated in Example 6.1, the separator temperature and the equilibrium # \tcompositions are\n",
- "Tf = 365.5 \t\t\t\t\t\t\t\t# [K]\n",
- "yf = 0.707 \n",
- "xf = 0.493 \n",
- "\n",
- "\t# Latent heat vaporisation data at temperature T = 298 K\n",
- "lambdaA = 33.9 \t\t\t\t\t\t\t# [kJ/mole]\n",
- "lambdaB = 38 \t\t\t\t\t\t\t\t# [kJ/mole]\n",
- "\t# Heat capacities of liquids (298-366 K)\n",
- "Cla = 0.147 \t\t\t\t\t\t\t\t# [kJ/mole.K]\n",
- "Clb = 0.174 \t\t\t\t\t\t\t\t# [kJ/mole.K]\n",
- "\t# Heat capacities of gases, average in the range 298 to 366 K\n",
- "Cpa = 0.094 \t\t\t\t\t\t\t\t# [kJ/mole.K]\n",
- "Cpb = 0.118 \t\t\t\t\t\t\t\t# [kJ/mole.K]\n",
- "\t# Substituting in equation 6.6 gives\n",
- "Hf = 0 \n",
- "Hlf = (Tf-T)*(xf*Cla+(1-xf)*Clb) \t\t\t\t\t# [kJ/mole of liquid \t\t\t\t\t\t\t\t\tfeed]\n",
- "\t# From equation 6.7\n",
- "Hvf = (Tf-T)*(yf*Cpa+(1-yf)*Cpb) + yf*lambdaA + (1-yf)*lambdaB \t# [kJ/mole of vapor feed]\n",
- "\n",
- "Lf = Fa*q \t\t\t\t\t# [kmole/h]\n",
- "Vf = Fa*(1-q) \t\t\t\t\t# [kmole/h]\n",
- "\t# From equation 6.3\n",
- "Qf = (Hvf*Vf +Hlf*Lf-Fa*Hf)*1000.0/3600.0 # [kW]\n",
- "\n",
- "\n",
- "Tlo = 354.3 \t\t\t\t\t# [Bubble point temperature, K]\n",
- "T1 = 355.8 \t\t\t\t\t# [Dew point temperature, K]\n",
- "y1 = 0.95 \t\t\t\t\t# [composition of saturated vapor at dew point]\n",
- "x0 = 0.95 \t\t\t\t\t# [composition of saturated liquid at bubble \t\t\t\t\t\tpoint]\n",
- "Hv1 = (T1-T)*(y1*Cpa+(1-y1)*Cpb) + y1*lambdaA + (1-y1)*lambdaB # [kJ/mole of vapor feed]\n",
- "Hlo = (Tlo-T)*(x0*Cla+(1-x0)*Clb) \t\t# [kJ/mole of liquid feed]\n",
- "\n",
- "\t# An energy balance around condenser\n",
- "Qc = V*(Hv1-Hlo)*1000/3600 \t\t\t# [kW]\n",
- "\n",
- "\t# A flash-vaporization calculation is done in which the fraction vaporized is known \t(53.8/75.4 = \t0.714) and the concentration\n",
- "\t# of the liquid residue is fixed at xw = 0.05\n",
- "\t# The calculations yield\n",
- "Tr = 381.6 \t\t\t\t\t# [K]\n",
- "x12 = 0.093 \n",
- "y13 = 0.111 \n",
- "T12 = 379.7 \t\t\t\t\t# [Bubble point of the liquid entering in the \t\t\t\t\t\treboiler, K]\n",
- "\n",
- "Hl12 = (T12-T)*(x12*Cla+(1-x12)*Clb) \t\t# [kJ/mole of liquid feed]\n",
- "Hv13 = (Tr-T)*(y13*Cpa+(1-y13)*Cpb) + y13*lambdaA + (1-y13)*lambdaB # [kJ/mole of vapor feed]\n",
- "\n",
- "Hlw = (Tr-T)*(xw*Cla+(1-xw)*Clb) # [kJ/mole of liquid feed]\n",
- "\n",
- "\t# An energy balance around the reboiler \n",
- "Qr = (Vst*Hv13+W*Hlw-Lst*Hl12)*1000.0/3600.0 \t# [kW]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The thermal load of the condenser, reboiler, and feed preheater are\",round(Qc),\"kW\",round(Qr),\"kW\",\"and\", round(Qf),\"kW respectively\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Illustration 6.4(a)\n",
- "Quantity of liquid and vapor products are 122.2 kmole/h and 77.8 kmole/h respectively\n",
- "Illustration 6.4(b)\n",
- "The minimum number of theoretical stages is 6.7\n",
- "Illustration 6.4(c)\n",
- "The minimum reflux ratio is 1.079 mole reflux/mole distillate\n",
- "Illustration 6.4(d)\n",
- "The number of equilibrium stages for the reflux ratio specified is 12\n",
- "The optimal location of the feed stage for the reflux ratio specified is sixth from the top\n",
- "Illustration 6.4(e)\n",
- "The thermal load of the condenser, reboiler, and feed preheater are 2549.0 kW 1794.0 kW and 1466.0 kW respectively\n"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stderr",
- "text": [
- "C:\\Anaconda\\lib\\site-packages\\scipy\\optimize\\minpack.py:227: RuntimeWarning: The iteration is not making good progress, as measured by the \n",
- " improvement from the last ten iterations.\n",
- " warnings.warn(msg, RuntimeWarning)\n"
- ]
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 6.7,Page number:357"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 6.7\n",
- "\n",
- "#Overall Efficiency of a Benzene-Toluene Fractionator\n",
- "\n",
- "#Variable declaration\n",
- "\t# a-benzene b-toluene\n",
- "xa = 0.46 \n",
- "xb = 0.54 \n",
- "Tb = 395 \t\t\t\t# [bottom temp., K]\n",
- "Tt = 360 \t\t\t\t# [top temp., K]\n",
- "alphab = 2.26 \n",
- "alphat = 2.52 \n",
- "D = 1.53 \t\t\t\t# [diameter of column, m]\n",
- "f = 0.81 \t\t\t\t# [flooding]\n",
- "deltaP = 700 \t\t\t\t# [average gas-pressure drop, Pa/tray]\n",
- "import math\n",
- "\n",
- "Tavg = (Tb+Tt)/2 \t\t\t# [K]\n",
- "alpha_avg = (alphab+alphat)/2 \n",
- "\n",
- "print \"Solution6.7(a)\" \n",
- "\t# Solution(a)\n",
- "\t\n",
- "\t# Constants for components 'a' and 'b'\n",
- "Aa = 4.612 \n",
- "Ba = 148.9 \n",
- "Ca = -0.0254 \n",
- "Da = 2.222*10**-5 \n",
- "ua =math.exp(Aa+Ba/Tavg+Ca*Tavg+Da*Tavg**2) \t\t\t# [cP]\n",
- "\n",
- "Ab = -5.878 \n",
- "Bb = 1287 \n",
- "Cb = 0.00458 \n",
- "Db = -0.450*10**-5 \n",
- "\n",
- "\n",
- "#Calculation\n",
- "\n",
- "ub = math.exp(Ab+Bb/Tavg+Cb*Tavg+Db*Tavg**2) \t\t\t# [cP]\n",
- "\n",
- "\t# At the average column temperature \n",
- "ul = ua**xa*ub**xb \t\t\t\t\t\t# [cP]\n",
- "K = alpha_avg*ul \n",
- "\t# From the O\u2019Connell correlation\n",
- "Eo = 0.52782-0.27511*math.log10(K) + 0.044923*(math.log10(K))**2 \n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The overall tray efficiency using the O\u2019Connell correlation is \",round(Eo,1) \n",
- "\n",
- "print \"Example 6.7(b)\"\n",
- "\t# Solution(b)\n",
- "\n",
- "#Calculation\n",
- "\n",
- "Nideal = 20 \t\t\t\t\t\t\t# [number of ideal stages]\n",
- "Nreal = Nideal/(Eo) \t\t\t\t\t\t# [nnumber of real stages]\n",
- "print Nreal \n",
- "\t# Since real stages cannot be fractional, therefore\n",
- "Nreal = 34 \n",
- "\t# From Table 4.3 tray spacing \n",
- "t = 0.6 \t\t\t\t\t\t\t# [m]\n",
- "\t# Adding 1 m over the top tray as an entrainment separator and 3 m beneath # the bottom \ttray for bottoms surge capacity, the total column height is\n",
- "Z = 4+Nreal*t \t\t\t\t\t\t\t# [m]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The number of real trays and the total tower height are\",Nreal,\"and\",Z,\" m respectively\"\n",
- "\n",
- "print \"Solution 6.7(c)\"\n",
- "\t# Solution(c)\n",
- "\n",
- "\t# Total gas pressure drop\n",
- "deltaPc = deltaP*Nreal/1000 \t\t\t\t\t# [kPa]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The total gas-pressure drop through the column is\",deltaPc,\"kPa\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Solution6.7(a)\n",
- "The overall tray efficiency using the O\u2019Connell correlation is 0.6\n",
- "Example 6.7(b)\n",
- "32.1801990089\n",
- "The number of real trays and the total tower height are 34 and 24.4 m respectively\n",
- "Solution 6.7(c)\n",
- "The total gas-pressure drop through the column is 23 kPa\n"
- ]
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 6.10,Page number:371"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 6.10\n",
- "# Use of Fenske Equation for Ternary Distillation \n",
- "\n",
- "import math\n",
- "from numpy import *\n",
- "\n",
- "#Variable declaration\n",
- "\t# A-toluene B-1,2,3-trimethyl benzene C-benzene\n",
- "\t# Solution of above three are ideal \n",
- "\t# Feed\n",
- "za = 0.40 \n",
- "zb = 0.30 \n",
- "zc = 0.30 \n",
- "\t# Bottom \n",
- "FRAd = 0.95 \t\t\t\t# [recovery of toluene in distillate]\n",
- "FRBw = 0.95 \t\t\t\t# [recovery of 1,2,3-trimethyl benzene in the bottom]\n",
- "P = 1 \t\t\t\t\t# [atm]\n",
- "\n",
- "\t# First estimate of distillate composition \n",
- "xc = 40/70 \n",
- "xa = 30/70 \n",
- "xb = 0 \n",
- "\t# The bubble point temperature for this solution is \n",
- "Tb = 390 \t\t\t\t# [K]\n",
- "\t# The corresponding parameters for benzene, toluene and 1,2,3-trimethyl benzene\n",
- "\t# For toluene\n",
- "Tc_a = 568.8 \t\t\t\t\t# [K]\n",
- "Pc_a = 24.9 \t\t\t\t\t# [bar]\n",
- "A_a = -7.912 \n",
- "B_a = 1.380 \n",
- "C_a =-3.804 \n",
- "D_a = -4.501 \n",
- "\t# For 1,2,3-trimethyl benzene\n",
- "Tc_b = 664.5 \t\t\t\t\t# [K]\n",
- "Pc_b = 34.5 \t\t\t\t\t# [bar]\n",
- "A_b = -8.442 \n",
- "B_b = 2.922 \n",
- "C_b =-5.667 \n",
- "D_b = -2.281 \n",
- "\t# For benzene\n",
- "Tc_c = 540.3 \t\t\t\t\t# [K]\n",
- "Pc_c = 27.4 \t\t\t\t\t# [bar]\n",
- "A_c = -7.675 \n",
- "B_c = 1.371 \n",
- "C_c =-3.536 \n",
- "D_c = -3.202 \n",
- "\n",
- "\n",
- "\t# At the estimated reboiler temperature of 449.3 K\n",
- "Tr = 449.3 \t\t\t\t\t# [K]\n",
- "\t# P = [Toluene 1,2,3-trimethyl benzene Benzene]\n",
- "\n",
- "\t# P = [Tc Pc A B C D]\n",
- "P1=zeros((3,6))\n",
- "P1= matrix([[568.8,24.9,-7.912,1.380,-3.804,-4.501],[664.5,34.5,-8.442,2.922,-5.667,2.281],[540.3,27.4,-7.675,1.371,-3.536,-3.202]]) \n",
- "\n",
- "for i in range(0,3):\n",
- " P1[i]= P1[i,1]*math.exp((P1[i,2]*(1-Tr/P1[i,0])+P1[i,3]*(1-Tr/P1[i,0])**1.5+P1[i,4]*(1-Tr/P1[i,0])**3+P1[i,5]*(1-Tr/P1[i,0])**6)/(1-(1-Tr/P1[i,0]))) \n",
- "\n",
- "PA1 = P1.item(0) \t\t\t\t\t# [bar]\n",
- "PB1 = P1.item(6) \t\t\t\t\t# [bar]\n",
- "PC1 = P1.item(12)\t\t\t\t# [bar]\n",
- "alphaAB1 = PA1/PB1 \n",
- "alphaCB1 = PC1/PB1 \n",
- "\n",
- "\t\t# At the estimated distillate temperature of 390 K\n",
- "Td = 390 \t\t\t\t\t# [K]\n",
- "\t# P = [Toluene 1,2,3-trimethyl benzene Benzene]\n",
- "\t# P = [Tc,Pc,A,B,C,D]\n",
- "P2 = zeros((3,6)) \n",
- "P2= matrix([[568.8,24.9,-7.912,1.380,-3.804,-4.501],[664.5,34.5,-8.442,2.922,-5.667,2.281],[540.3,27.4,-7.675,1.371,-3.536,-3.202]]) \n",
- "for i in range(0,3):\n",
- " P2[i] = P2[i,1]*math.exp((P2[i,2]*(1-Td/P2[i,0])+P2[i,3]*(1-Td/P2[i,0])**1.5+P2[i,4]*(1-Td/P2[i,0])**3+P2[i,5]*(1-Td/P2[i,0])**6)/(1-(1-Td/P2[i,0])))\n",
- " \n",
- "PA2 = P2.item(0) # [bar]\n",
- "PB2 = P2.item(6) # [bar]\n",
- "PC2 = P2.item(12) # [bar]\n",
- "alphaAB2 = PA2/PB2 \n",
- "alphaCB2 = PC2/PB2 \n",
- "# The geometric-average relative volatilities are\n",
- "alphaAB_avg = math.sqrt(alphaAB1*alphaAB2) \n",
- "alphaCB_avg = math.sqrt(alphaCB1*alphaCB2) \n",
- "\n",
- "# From equation 6.66\n",
- "Nmin = math.log(FRAd*FRBw/((1-FRAd)*(1-FRBw)))/log(alphaAB_avg) \n",
- "\n",
- "# From equation 6.67\n",
- "FRCd = alphaCB_avg**Nmin/((FRBw/(1-FRBw))+alphaCB_avg**Nmin) # [fractional recovery of benzene in the distillate]\n",
- "\n",
- "#Results\n",
- "\n",
- "\n",
- "print\"The number of equilibrium stages required at total reflux is\",round(Nmin,2)\n",
- "print\"The recovery fraction of benzene in the distillate is \",round(FRCd,3)\n",
- "print\"\\n\\nThus, the assumption that virtually all of the LNK will be recovered in the distillate is justified\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The number of equilibrium stages required at total reflux is 4.32\n",
- "The recovery fraction of benzene in the distillate is 0.997\n",
- "\n",
- "\n",
- "Thus, the assumption that virtually all of the LNK will be recovered in the distillate is justified\n"
- ]
- }
- ],
- "prompt_number": 41
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 6.11,Page number:376"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 6.11\n",
- "#Underwood Equations for Ternary Distillation \n",
- "\n",
- "#Variable declaration\n",
- "\t# 1-toluene 2-1,2,3--trimethylbenzene 3-benzene\n",
- "\t# Basis: 100 kmol/h of feed\n",
- "F = 100 \t\t\t\t\t\t# [kmole/h]\n",
- "\t# Since feed is saturated, therefore\n",
- "q = 0 \n",
- "\t# From example 6.10\n",
- "x1d = 0.3 \n",
- "x2d = 0.3 \n",
- "x3d = 0.4 \n",
- "a12 = 3.91 \n",
- "a32 = 7.77 \n",
- "a22 = 1 \n",
- "\n",
- "#Calculation\n",
- "\n",
- "import math\n",
- "from scipy.optimize import fsolve\n",
- "\t# Equ 6.78 gives\n",
- "def f14(Q):\n",
- " return(1- a12*x1d/(a12-Q)-a22*x2d/(a22-Q)-a32*x3d/(a32-Q)) \n",
- "Q = fsolve(f14,2) \n",
- "\n",
- "\t# From the problem statement\n",
- "\t# d1 = D*x1d d2 = D*x2d\n",
- "d1 = F*x1d*0.95 \t\t\t\t\t# [kmol/h]\n",
- "d2 = F*x2d*0.05 \t\t\t\t\t# [kmol/h]\n",
- "d3 = F*x3d*0.997 \t\t\t\t\t# [kmol/h]\n",
- "\n",
- "\t\t# Summing the three distillate, d1,d2 and d3\n",
- "D = d1+d2+d3 \t\t\t\t\t\t# [kmole/h]\n",
- "\n",
- "Vmin = a12*d1/(a12-Q)+a22*d2/(a22-Q)+a32*d3/(a32-Q) \n",
- "\n",
- "\t\t# From the mass balance \n",
- "Lmin = Vmin-D \t\t\t\t\t\t# [kmol/h]\n",
- "\t# Minimum reflux ratio\n",
- "Rmin = Lmin/D \n",
- "\n",
- "#Results\n",
- "print\"The minimum reflux ratio is \",round(Rmin[0],3) "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The minimum reflux ratio is 0.717\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 6.12,Page number:377"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 6.12\n",
- "\n",
- "# solution\n",
- "\n",
- "# Componenets A-propane B-pentane C-methane D-ethane E-butane F-hexane\n",
- "# x-mole fraction a-relative volatility\n",
- "xA = 0.25 \n",
- "aA = 4.08 \n",
- "xB = 0.11 \n",
- "aB = 1.00 \n",
- "xC = 0.26 \n",
- "aC = 39.47 \n",
- "xD = 0.09 \n",
- "aD = 10.00 \n",
- "xE = 0.17 \n",
- "aE = 2.11 \n",
- "xF = 0.12 \n",
- "aF = 0.50 \n",
- "\n",
- "FRlkd = 0.98 \n",
- "FRhkd = 0.01 \n",
- "import math\n",
- "from scipy.optimize import fsolve\n",
- "from numpy import *\n",
- "\t# For methane\n",
- "D_CR = (aC-1)/(aA-1)*FRlkd + (aA-aC)/(aA-1)*FRhkd \n",
- "\t# For ethane\n",
- "D_DR = (aD-1)/(aA-1)*FRlkd + (aA-aD)/(aA-1)*FRhkd \n",
- "\t# For butane\n",
- "D_ER = (aE-1)/(aA-1)*FRlkd + (aA-aE)/(aA-1)*FRhkd \n",
- "\t# For hexane\n",
- "D_FR = (aF-1)/(aA-1)*FRlkd + (aA-aF)/(aA-1)*FRhkd \n",
- "\t# Since the feed is 66% vaporized\n",
- "q = 1-0.66 \n",
- "\n",
- "\t# Now equation 6.82 is solved for two values of Q\n",
- "def f14(Q1):\n",
- " return(0.66 - aA*xA/(aA-Q1)-aB*xB/(aB-Q1)-aC*xC/(aC-Q1)-aD*xD/(aD-Q1)-aE*xE/(aE-Q1)-aF*xF/(aF-Q1)) \n",
- "Q1 = fsolve(f14,1.2) \n",
- "\n",
- "def f15(Q2):\n",
- " return(0.66 - aA*xA/(aA-Q2)-aB*xB/(aB-Q2)-aC*xC/(aC-Q2)-aD*xD/(aD-Q2)-aE*xE/(aE-Q2)-aF*xF/(aF-Q2)) \n",
- "Q2 = fsolve(f15,2.5) \n",
- "\n",
- "\t# Basis: 100 mole of feed\n",
- "F = 100 \t\t\t\t\t\t\t# [mole]\n",
- "\t# Let d1 = Dxad, d2 = Dxbd, d3 = Dxcd, and so on\n",
- "d1 = F*xA*FRlkd \t\t\t\t\t\t# [moles of propane]\n",
- "d2 = F*xB*FRhkd \t\t\t\t\t\t# [moles of pentane]\n",
- "d3 = F*xC \t\t\t\t\t\t\t# [moles of methane]\n",
- "d4 = F*xD \t\t\t\t\t\t\t# [moles of ethane]\n",
- "d6 = F*xF*0 \t\t\t\t\t\t\t# [moles of hexane]\n",
- "\t# And d5 is unknown\n",
- "\t# Applying equation 6,78 for each value of Q\n",
- "\n",
- "\t# Solution of simultaneous equation \n",
- "#Vmin=aA*d1/(aA-Q1)+aB*d2/(aB-Q1)+aC*d3/(aC-Q1)+aD*d4/(aD-Q1)+aE*d5/(aE-Q1)+aF*d6/(aF-Q1)\n",
- "#Vmin=aA*d1/(aA-Q2)+aB*d2/(aB-Q2)+aC*d3/(aC-Q2)+aD*d4/(aD-Q2)+aE*d5/(aE-Q2)+aF*d6/(aF-Q2)\n",
- "# we get\n",
- "d5=-(72.243-121.614)/(2.494+2.863)\n",
- "Vmin=72.243 + 2.494*D5\n",
- "\n",
- "\t# From equ 6.84\n",
- "D = d1+d2+d3+d4+d5+d6 \t\t\t\t\t\t# [mole]\n",
- "# From mass balance \n",
- "Lmin = Vmin-D \t\t\t\t\t\t\t# [mole]\n",
- "# For minimum reflux ratio\n",
- "Rmin = Lmin/D \n",
- "print\"The minimum reflux ratio is\",round(Rmin,3)"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The minimum reflux ratio is 0.384\n"
- ]
- }
- ],
- "prompt_number": 9
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 6.13,Page number:380"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 6.13\n",
- "# Application of the Gilliland Correlation \n",
- "\n",
- "import math\n",
- "from scipy.optimize import fsolve\n",
- "from numpy import *\n",
- "\n",
- "#Variable declaration\n",
- "\t# A-benzene B-toluene C-1,2,3-trimethylbenzene\n",
- "\t# From example 6.10\n",
- "Nmin = 4.32 # [stages]\n",
- "\t# From example 6.11\n",
- "Rmin = 0.717 \t\t\t\t\t\t# [minimum reflux ratio]\n",
- "\t# For R = 1\n",
- "R = 1 \n",
- "X = (R-Rmin)/(R+1) \n",
- "\t# From equ 6.88\n",
- "Y = 1-math.exp((1+54.4*X)/(11+117.2*X)*(X-1)/math.sqrt(X)) \n",
- "\t# Fro equ 6.86\n",
- "N = (Y+Nmin)/(1-Y) \n",
- "\t# From example 6.10 99.7% of the LNK (benzene) is recovered in the distillate# , 95% of \t\tthe light key is in the distillate, and 95% of the heavy key is in# the bottoms\n",
- "\n",
- "\t# For a basis of 100 mol of feed, the material balances for three components # are\n",
- "\t# For distillate\n",
- "nAd = 39.88 \t\t\t\t\t\t# [LNK, moles of benzene]\n",
- "nBd = 28.5 \t\t\t\t\t\t# [LK, moles of toluene]\n",
- "nCd = 1.50 \t\t\t\t\t\t# [HK, moles of 1,2,3-trimethylbenzene]\n",
- "nTd = nAd+nBd+nCd \t\t\t\t\t# [total number of moles]\n",
- "xAd = nAd/nTd \n",
- "xBd = nBd/(nTd) \n",
- "xCd = nCd/(nTd) \n",
- "\n",
- "\t# For bottoms\n",
- "nAb = 0.12 \n",
- "nBb = 1.50 \n",
- "nCb = 28.50 \n",
- "nTb = nAb+nBb+nCb \n",
- "xAb = nAb/nTb \n",
- "xBb = nBb/nTb \n",
- "xCb = nCb/nTb \n",
- "\n",
- "D = nTd \n",
- "W = nTb \n",
- "\t# From problem statement\n",
- "Zlk = 0.3 \n",
- "Zhk = Zlk \n",
- "\t# Substituting in equation 6.89\n",
- "\t# T = Nr/Ns\n",
- "T = (Zhk/Zlk*W/D*(xBb/xCd)**2)**0.206 \n",
- "\n",
- "\t# Solution of simultaneous equation \n",
- "def H(e):\n",
- " f1 = e[0]-e[1]*T \n",
- " f2 = e[0]+e[1]-N \n",
- " return(f1,f2) \n",
- "\n",
- "\n",
- "\t# Initial guess\n",
- "e = [5,4] \n",
- "y = fsolve(H,e) \n",
- "Nr = y[0] \t\t\t\t\t# [number of stages in rectifying section]\n",
- "Ns = y[1] \t\t\t\t\t# [number of stages in stripping section]\n",
- "\n",
- "#Result\n",
- "\n",
- "print \"Nr=\",round(Nr,2),\"Ns=\",round(Ns,2),\"\\n\"\n",
- "print\"Rounding the estimated equilibrium stage requirement leads to 1 stage as a partial reboiler, 4 stages below the feed, and 5 stages above the feed\"\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Nr= 5.39 Ns= 4.53 \n",
- "\n",
- "Rounding the estimated equilibrium stage requirement leads to 1 stage as a partial reboiler, 4 stages below the feed, and 5 stages above the feed\n"
- ]
- }
- ],
- "prompt_number": 9
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 6.14,Page number:387"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 6.14\n",
- "# Rate-Based Ternary Distillation Calculations\n",
- "\n",
- "#Variable declaration\n",
- "\t# a-acetone b-methanol c-water\n",
- "yna = 0.2971 \n",
- "yn1a = 0.17 \n",
- "ynIa = 0.3521 \n",
- "mnIa = 2.759 \n",
- "xna = 0.1459 \n",
- "ynb = 0.4631 \n",
- "yn1b = 0.429 \n",
- "ynIb = 0.4677 \n",
- "mnIb = 1.225 \n",
- "xnb = 0.3865 \n",
- "ync = 0.2398 \n",
- "yn1c = 0.4010 \n",
- "ynIc = 0.1802 \n",
- "mnIc = 0.3673 \n",
- "xnc = 0.4676 \n",
- "\n",
- "Fabv = 4.927 \t\t\t\t\t\t# [mol/square m.s]\n",
- "Facv = 6.066 \t\t\t\t\t\t# [mol/square m.s]\n",
- "Fbcv = 7.048 \t\t\t\t\t\t# [mol/square m.s]\n",
- "aI = 50 \t\t\t\t\t\t# [square m]\n",
- "Vn1 = 188 \t\t\t\t\t\t# [mol/s]\n",
- "Vn = 194.8 \t\t\t\t\t\t# [mol/s]\n",
- "\n",
- "print \"Solution6.14(a)\" \n",
- "from numpy import *\n",
- "import math\n",
- "\t# Solution(a)\n",
- "\n",
- "ya = (yna+ynIa)/2 \n",
- "yb = (ynb+ynIb)/2 \n",
- "yc = (ync+ynIc)/2 \n",
- "\n",
- "Rav = ya/Facv+yb/Fabv+yc/Facv \n",
- "Rbv = yb/Fbcv+ya/Fabv+yc/Fbcv \n",
- "\n",
- "Rabv = -ya*(1/Fabv-1/Facv) \n",
- "Rbav = -yb*(1/Fabv-1/Fbcv) \n",
- "\t# Thus in matrix form\n",
- "Rv =matrix([[Rav,Rabv],[Rbav,Rbv]]) \n",
- "kv = Rv.I \t\t\t# [inverse of Rv]\n",
- "\t# From equ 6.99\n",
- "b =matrix([[yna-ynIa],[ynb-ynIb]]) \n",
- "J = kv*b \n",
- "\n",
- "\t# From equ 6.98\n",
- "Jc = -sum(J) \t\t\t\t# [mol/square m.s]\n",
- "\n",
- "print\"The molar diffusional rates of acetone, methanol and water are\",round(J[0][0],4),\"mol/square m.s\",round(J[1][0],4),\"mol/square m.s and\",round(Jc,3) ,\"mol/square m.s respectively\"\n",
- "print \"Solution 6.14(b)\\n\" \n",
- "\t# Solution(b)\n",
- "Ntv = Vn1-Vn \t\t\t\t\t\t# [mol/s]\n",
- "\n",
- "\t# From equation 6.94\n",
- "Nta = aI*J[0][0]+ya*Ntv \n",
- "Ntb = aI*J[1][0]+yb*Ntv \n",
- "Ntc = aI*Jc+yc*Ntv \n",
- "print\"The mass transfer rates of acetone, methanol and water are\",round(Nta,1),\"mol/s\" ,round(Ntb,1),\" mol/s and\", round(Ntc),\" mol/s respectively\"\n",
- "\n",
- "print \"Example6.14(c)\\n\"\n",
- "\t# Solution(c)\n",
- "\n",
- "\t# Approximate values of Murphree vapor tray efficiency are obtained from # equation \t6.105\n",
- "\n",
- "EMG_a = (yna-yn1a)/(mnIa*xna-yn1a) \n",
- "EMG_b = (ynb-yn1b)/(mnIb*xnb-yn1b) \n",
- "EMG_c = (ync-yn1c)/(mnIc*xnc-yn1c) \n",
- "\n",
- "print\"The Murphree vapor tray efficiencies for acetone, methanol and water are\",round(EMG_a,3), round(EMG_b,3),\"and\",round(EMG_c,3), \"respectively\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Solution6.14(a)\n",
- "The molar diffusional rates of acetone, methanol and water are"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- " -0.3068 mol/square m.s -0.0824 mol/square m.s and 0.389 mol/square m.s respectively\n",
- "Solution 6.14(b)\n",
- "\n",
- "The mass transfer rates of acetone, methanol and water are -17.5 mol/s -7.3 mol/s and 18.0 mol/s respectively\n",
- "Example6.14(c)\n",
- "\n",
- "The Murphree vapor tray efficiencies for acetone, methanol and water are 0.547 0.767 and 0.703 respectively\n"
- ]
- }
- ],
- "prompt_number": 10
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/Chapter 7.ipynb b/Beginning_C++_through_Game_Programming/Chapter 7.ipynb
deleted file mode 100755
index be65a231..00000000
--- a/Beginning_C++_through_Game_Programming/Chapter 7.ipynb
+++ /dev/null
@@ -1,894 +0,0 @@
-{
- "metadata": {
- "name": ""
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 7:Liquid-Liquid Extraction "
- ]
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 7.1,Page number:429"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "from pylab import *\n",
- "\n",
- "#For water phase:\n",
- "Cw=[1.23,1.29,1.71,5.10,9.8,16.90] #Chloroformm concentration in wt %\n",
- "Aw=[15.80,25.6,36.0,49.30,55.7,59.60] #Acetone concentration in wt %\n",
- "\n",
- "#For Chloroform phase\n",
- "Cc=[70.0,55.7,42.9,28.4,20.4,16.9] #Chloroformm concentration in wt% \n",
- "Ac=[28.70,42.10,52.70,61.30,61.00,59.6] #Acetone concentration in wt %\n",
- "for i in range(0,6):\n",
- " Cw[i]=Cw[i]/100 #Weight fraction\n",
- " Aw[i]=Aw[i]/100 #Weight fraction\n",
- " Cc[i]=Cc[i]/100 #Weight fraction\n",
- " Ac[i]=Ac[i]/100 #Weight fraction\n",
- "\n",
- "a1=plot(Cw,Aw)\n",
- "a2=plot(Cc,Ac)\n",
- "X=linspace(1,0)\n",
- "Y=linspace(0,1)\n",
- "a3=plot(X,Y)\n",
- "xlabel(\"$Weight fraction of chloroform$\")\n",
- "ylabel(\"$Weight fraction of acetone$\")\n",
- "title(\"Equilibrium for water-chloroform-acetone at 298 K and 1 atm.\\n\\n\")\n",
- "a4=plot([Cw[1],Cc[1]],[Aw[1],Ac[1]],label='$Tie line$')\n",
- "a5=plot([(Cw[2]+Cw[3])/2,(Cc[2]+Cc[3])/2],[(Aw[2]+Aw[3])/2,(Ac[2]+Ac[3])/2],label='$Tie line$')\n",
- "a6=plot([Cw[5],Cc[3]],[Aw[5],Aw[1]],label='$Conjugate line$')\n",
- "legend(loc='upper right')\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "metadata": {},
- "output_type": "pyout",
- "prompt_number": 42,
- "text": [
- "<matplotlib.legend.Legend at 0x7a98978>"
- ]
- },
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "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\ntX8pbZmfo9FoNFWh5vERMamQzfn4+KCoqAgLFy40fTYajabbYu7u7khMTMSiRYsQFxeHCxcu4OrV\nq3BxcYHBYEBLSwsefPBBAMCBAwcQHR2N0tJSREdHA+h+KiomJgZHjx5FWVkZHnnkEZSVlcFoNAIA\nTpw4YUoqQgi0trZCo9GY4utpv62tDdeuXUN5eTk6Ojpw//33A+jeOXDv3r192u2J7/jx42hrazMd\nu2PHDqxcuRI3b97E6NGjAXTPI82bNw/FxcVWj+1x4sQJhISEAEC//nNycqye75EjRxAREYH9+/db\nbdvyfKX2L6Ut83MsLy83PUSQm5uLuLg4GAyGO/tFIafEORWyOX9/f6xZs8b0Wa/XIyUlxfQ5KSkJ\nX375JTQaDVpaWrB06VIYjUbcd999aG1tRVRUFEaOHImdO3fi8OHDmDhxInJzczFnzhwAwNixY1FW\nVoakpCQIIXDkyBFotVp4eHgA6J7L6dke9cyZM4iIiOgT36pVq7B3715UVVVBq9Xi999/xyuvvIKs\nrCycOXMGrq6ueOihh5CXlwedTgcPDw80Nzeb4ktNTUVubi6OHTuGpUuXQq/Xo7y83DSf4u3tjbq6\nOsTGxlo9tod5nJb9X716tc/5lpeXY9myZfjtt9/w888/IyUlBQEBAf3arq+v73O+Uvu3dpxlW5WV\nlaZzPHHihCm+CRMm4PDhwzZ/3JocEzfpItU5f/48xo0bhytXrmDNmjX47rvvJP1cdnY22tra8PPP\nP2Pjxo12jnLolI5T6f7JubFSIdVZu3YtFi9ejNraWqSnp0v+OY1Gg7q6Orzxxhv2C84GlI5T6f7J\nubFSISIim+FEPRER2QyTChER2QyTChER2QyTChER2QyTChER2QyTChER2QyTChER2QyTChER2cz/\nA9dtwhN+6SZ1AAAAAElFTkSuQmCC\n",
- "text": [
- "<matplotlib.figure.Figure at 0x764cd30>"
- ]
- }
- ],
- "prompt_number": 42
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 7.2,Page number:433"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 7.2\n",
- "# Single-Stage Extraction\n",
- "\n",
- "#Variable declaration\n",
- "\t# 'b'-solvent 'f'-feed 'r'-raffinate 'e'-extract 'c'-one of the # component in \t feed\n",
- "F = 50 \t\t\t\t\t# [feed rate, kg/h]\n",
- "S = 50 \t\t\t\t\t# [solvent rate, kg/h]\n",
- "xcf = 0.6 \n",
- "xbf = 0 \n",
- "ycs = 0 \n",
- "ybs = 1.0 \n",
- "\t# The equilibrium data for this system can be obtained from Table 7.1 and # Figure 7.6\n",
- "\t# Plot streams F (xcF = 0.6, xBF = 0.0) and S (yes = 0.0, yBs = 1.0). After # locating \tstreams F and S, M is on the line FS its exact location is found # by calculating xcm \tfrom\n",
- "#Calculation\n",
- "\n",
- "xcm = (F*xcf+S*ycs)/(F+S) \n",
- "\n",
- "\t# From figure 7.8\n",
- "xcr = 0.189 \n",
- "xbr = 0.013 \n",
- "yce = 0.334 \n",
- "ybe = 0.648 \n",
- "M = F+S \t\t\t\t\t# [kg/h]\n",
- "# From equation 7.8 \n",
- "E = M*(xcm-xcr)/(yce-xcr) \t\t\t# [kg/h]\n",
- "R = M-E \t\t\t\t\t# [kg/h]\n",
- "\n",
- "#Result\n",
- "print\"The extract and raffinate flow rates are\",round(E,2),\"kg/h and\",round(R,2),\" kg/h respectively\\n\"\n",
- "\n",
- "print\"The compositions when one equilibrium stage is used for the separation is\",xcr,\"and\",xbr,\" in raffinate phase for component b and c respectively and\",yce,\"and\",ybe,\"in extract phase for component b and c respectively\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The extract and raffinate flow rates are 76.55 kg/h and 23.45 kg/h respectively\n",
- "\n",
- "The compositions when one equilibrium stage is used for the separation is 0.189 and 0.013 in raffinate phase for component b and c respectively and 0.334 and 0.648 in extract phase for component b and c respectively\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 7.4,Page number:439"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 7.4\n",
- "#Multistage Countercurrent Extraction \n",
- "\n",
- "#Variable declaration\n",
- "\n",
- "\t# C-acetic acid A-water\n",
- "\t# f-feed r-raffinate s-solvent\n",
- "fd = 1000 \t\t\t\t\t\t# [kg/h]\n",
- "xCf = 0.35 \t\t\t\t\t\t# [fraction of acid]\n",
- "xAf = 1-xCf \t\t\t\t\t\t# [fraction of water]\n",
- "\t# Solvent is pure\n",
- "xAr = 0.02 \n",
- "yCs = 0 \n",
- "\n",
- "import math\n",
- "from pylab import *\n",
- "from numpy import *\n",
- "print \"Solution 7.4(a)\\n\"\n",
- "\t# Solution(a)\n",
- "\n",
- "\t# From Figure 7.15\n",
- "xCMmin = 0.144 \n",
- "\t# From equation 7.11\n",
- "Smin = fd*(xCMmin-xCf)/(yCs-xCMmin) \t\t\t\t# [kg/h]\n",
- "\n",
- "#result\n",
- "print\"The minimum amount of solvent which can be used is\",round(Smin),\"kg/h\"\n",
- "\n",
- "print \"Solution7.4(b)\" \n",
- "\t# Solution(b)\n",
- "\n",
- "S = 1.6*Smin \t\t\t\t\t\t\t# [kg/h]\n",
- "\t# From equation 7.11\n",
- "xCM = (fd*xCf+S*yCs)/(fd+S) \n",
- "\n",
- "\t# Data for equilibrium line\n",
- "\t# Data_eqml = [xCeq yCeq]\n",
- "Data_eqml =matrix([[0.0069,0.0018],[0.0141,0.0037],[0.0289,0.0079],[0.0642,0.0193],[0.1330,0.0482],[0.2530,0.1140],[0.3670,0.2160],[0.4430,0.3110],[0.4640,0.3620]]) \n",
- "\n",
- "\t# Data for operating line\n",
- "\t# Data_opl = [xCop yCop]\n",
- "Data_opl =matrix([[0.02,0],[0.05,0.009],[0.1,0.023],[0.15,0.037],[0.20,0.054],[0.25,0.074],[0.30,0.096],[0.35,0.121]]) \n",
- "\n",
- "\n",
- "a1=plot(Data_eqml[:,0],Data_eqml[:,1],label='$Equilibrium line$')\n",
- "a2=plot(Data_opl[:,0],Data_opl[:,1],label='$Operating line$') \n",
- "legend(loc='upper right') \n",
- "xlabel(\"wt fraction of acetic acid in water solutions, xC\") \n",
- "ylabel(\"wt fraction of acetic acid in ether solutions, yC\") \n",
- "title('Mc-Cabe thiele Diagram')\n",
- "\n",
- "\t# Now number of theoritical stages is determined by drawing step by step # stairs from\t \txC = 0.35 to xC = 0.02\n",
- "\t# From figure 7.16\n",
- "\t# Number of theoritical stages 'N' is\n",
- "N = 8 \n",
- "\n",
- "show(a1)\n",
- "show(a2)\n",
- "print\"\\nThe number of theoretical stages if the solvent rate used is 60 percent above the minimum is \",N"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Solution 7.4(a)\n",
- "\n",
- "The minimum amount of solvent which can be used is 1431.0 kg/h\n",
- "Solution7.4(b)\n"
- ]
- },
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAEZCAYAAACEkhK6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlYlGXbwOHfIOSK+w4qIiqYSgpKLiju2uZWinu5ZPpq\nmdZn2vu6tGqWpWlGpikuZOaCSqCpYOIChQsqrgiJ4Bqisigw3N8fk6PIMgMyDOB1HgeHzMzz3M81\nIzPX3LtGKaUQQgghDLAwdwBCCCGKB0kYQgghjCIJQwghhFEkYQghhDCKJAwhhBBGkYQhhBDCKJIw\nRIliZ2fHnj17TFJ2UFAQ9erVy/HxCRMm8MknnxhVlinjBLC2tiY6Otpk5YunkyQMkW92dnaULl2a\nf/75J9P9rVq1wsLCgkuXLuWr3J07d9KpUycqVqxIzZo18fDwYPv27Uadq9Fo0Gg0+bru4ywsLLh4\n8aLRxy9btoz//ve/Rh2b3ziDgoKwsLDA2toaa2tr6tWrx+DBg/nrr78yHXf37l3s7OzyXL4QuZGE\nIfJNo9Fgb2+Pj4+P/r4TJ06QkpKS7w/tX3/9lUGDBvH6668TGxvL9evX+eijj4xOGAWtKM5rtbGx\n4e7du9y9e5fDhw/j6OiIu7s7e/fuNfm1tVqtya8hii5JGOKJDB8+HG9vb/3t1atXM3LkyEwftCkp\nKUybNg07OzsqV66Mu7s79+7dy1KWUoqpU6cya9YsRo8ejbW1NQCdOnXihx9+ACAyMpKuXbtSvXp1\natSowfDhw7l9+3amckJDQ3n22WepWrUqo0eP5v79+/rHduzYwXPPPUeVKlXo0KEDJ06cyPZ5derU\nCQBnZ2esra3ZuHGj/rGFCxdSq1Yt6taty6pVq/T3v/766/zvf//L87WUUsybNw8HBweqV6/O4MGD\nuXXrVrbHPs7Gxoa5c+cyduxYpk+frr//0dqRn58frVq1olKlStSvX5+5c+dmKsPb25sGDRpQvXp1\nPvnkE+zs7PTJZ86cObz66quMGDGCSpUqsXr1av7880/atWtHlSpVqFu3LpMnTyYtLS3TtZctW0bj\nxo2pWLEis2bNIjIyknbt2lG5cmU8PT0zHS+KESVEPtnZ2andu3erpk2bqtOnT6v09HRla2ur/v77\nb6XRaNTff/+tlFJq4sSJqkuXLiouLk5ptVp16NAhdf/+/SzlnT59Wmk0GhUdHZ3jNS9cuKB2796t\nUlNT1Y0bN1SnTp3UlClT9I83aNBAtWjRQl2+fFnFx8erDh06qP/+979KKaWOHDmiatasqUJDQ1VG\nRoZavXq1srOzyzYWpZTSaDQqMjJSfzswMFBZWlqq2bNnq/T0dPXbb7+pcuXKqYSEBKWUUq+//rr6\n3//+l+u1UlNT9a/dnj17lFJKffPNN6pdu3YqNjZWpaamqvHjx6shQ4ZkG1NgYKCytbXNcv+ePXuU\nhYWFSk5OzhJ7UFCQOnnypFJKqfDwcFWrVi21detWpZRSp06dUhUqVFAHDhxQqamp6r333lNWVlb6\n2GbPnq2srKyUr6+vUkqplJQUFRYWpkJCQpRWq1XR0dHKyclJffPNN5let379+qm7d++qU6dOqWee\neUZ16dJFRUVFqdu3b6tmzZqp1atX5/A/LIoySRgi3x4kjE8++UTNmDFD+fv7q549e6r09HR9wtBq\ntaps2bIqPDzcYHnBwcFKo9Hk+AGenS1btqhWrVplisnLy0t/+7ffflONGjVSSin11ltv6T/QH2ja\ntKnat29ftmVnlzDKli2rtFqt/r6aNWuqkJAQpVTmhJHTtf744w99nA8+lJ2cnPS/K6VUXFycsrKy\nynSdR2PILmE8SLZxcXHZxv6od955R7377rtKKaXmzp2rhg4dqn8sOTlZPfPMM5kSRufOnbMt54Gv\nv/5a9e/fX39bo9GogwcP6m+7uLioL774Qn972rRpmZK8KD6kSUo8EY1Gw4gRI1i3bl22zVE3b97k\n3r17NGrUKMu5b731lr7zdt68eVSvXh2AK1eu5Hi9a9eu4enpia2tLZUqVWLEiBFZOt0fHclUv359\n4uLiAPj777/56quvqFKliv7n8uXLuV7vcdWqVcPC4uHbply5ciQmJmY5LqdrPYjlUdHR0fTv319/\nXLNmzbC0tOTatWtGxxUbG4tGo6Fy5cpZHgsJCaFLly7UrFmTypUr4+XlpX/N4uLisLW11R9btmxZ\nqlWrlun8Rx8HOHfuHC+99BJ16tShUqVKfPjhh1n+D2rVqpWpzMdvZ/eaiaJPEoZ4YvXr18fe3h5/\nf38GDBiQ6bHq1atTpkwZLly4kOW877//Xt95+8EHH9CkSRPq1avHr7/+muO1Zs6cSalSpTh58iS3\nb99mzZo1ZGRkZDrm0dFZly5dwsbGRh/nhx9+yK1bt/Q/iYmJDB48+Emefrbycq369esTEBCQ6djk\n5GTq1Klj9PW2bNmCi4sLZcuWzfLY0KFD6devH5cvXyYhIYG33npLn9Tr1q3L5cuX9cempKRk+fB/\nfADDhAkTaNasGRcuXOD27dt8+umnWf4PRMkkCUMUiBUrVrB3794sH1gWFhaMHj2aqVOncuXKFbRa\nLYcOHSI1NTVLGRqNhoULF/Lxxx+zatUq7ty5Q0ZGBsHBwYwfPx6AxMREypcvT8WKFYmNjWXBggWZ\nylBKsXTpUmJjY4mPj+fTTz/Vf0iPGzeO77//ntDQUJRSJCUl4efnl+O33Vq1ahEZGWn0a6B0Tbx5\nvtZbb73FzJkz9Ynuxo0bbNu2zajrxcbGMnfuXFasWMFnn32W7XGJiYlUqVKFZ555htDQUNavX69/\nbODAgWzfvl3/fzJnzhyDI8MSExOxtramXLlynDlzhmXLlhkVa3a/i+JFEoYoEPb29rRu3Vp/+9Fv\npV9++SUtWrSgTZs2VKtWjRkzZuT4jXTgwIFs2LCBlStXYmNjQ+3atZk1axb9+vUDYPbs2Rw5coRK\nlSrx8ssvM3DgwEzX0mg0DBs2jJ49e9KoUSMaN26snxvh4uLC8uXLmTRpElWrVqVx48aZRng9bs6c\nOYwaNYoqVarw66+/Gpw78ejjOV0ru/PfeecdXnnlFXr27EnFihVp164doaGhOV4jLi5O35TXtm1b\nTp06xb59++jevXum4x747rvvmDVrFhUrVuTjjz/OVMt59tln+fbbb/H09KRu3bpYW1tTs2ZNSpcu\nneU5PfDll1+yfv16KlasyJtvvomnp2eW/4Ps4s7udRLFi0aZMN0HBAQwZcoUtFptlmF/j3owTG/D\nhg0MHDgwT+cKIQrOg9rIhQsXaNCggbnDEUVMjjWMlJQUrl+/nuX+69evk5KSYrBgrVbLpEmTCAgI\nICIiAh8fH06fPp3tcdOnT6d37955PlcI8eS2b99OcnIySUlJvPfee7Rs2VKShchWjgnj7bffZv/+\n/VnuDw4OZurUqQYLDg0NxcHBATs7O6ysrPD09MTX1zfLcd9++y2vvvoqNWrUyPO5Qognt23bNmxs\nbLCxsSEyMpKff/7Z3CGJIirHhBEWFqZvHnrUgAED2Ldvn8GCY2NjMw1vtLW1JTY2Nssxvr6+TJgw\nAXjYzmnMuUKIgrF8+XJu3bpFQkICv//+O40bNzZ3SKKIyjFhJCcn53iSMUPojOnUmjJlCvPmzUOj\n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\nAgaDwWAwBPE/TB4aqVW+sZ0AAAAASUVORK5CYII=\n",
- "text": [
- "<matplotlib.figure.Figure at 0x7629c88>"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "\n",
- "The number of theoretical stages if the solvent rate used is 60 percent above the minimum is 8\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 7.5,Page number:444"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 7.5\n",
- "#Multistage Extraction: Insoluble Liquids\n",
- "\n",
- "#Variable declaration\n",
- "\n",
- "\t# C-nicotine A-water B-kerosene\n",
- "\t# F-feed R-raffinate S-solvent\n",
- "F = 1000 \t\t\t\t\t# [feed rate, kg/h]\n",
- "xAF = 0.99 \t\t\t\t\t# [fraction of water in feed]\n",
- "\t# Because the solutions are dilute therefore\n",
- "xCF = 0.01 \t\t\t\t\t# [fraction of nicotene in feed, kg nicotene/kg \t\t\t\t\t\twater]\n",
- "xCR = 0.001 \t\t\t\t\t# [fraction of nicotene in raffinate, kg \t\t\t\t\t\tnicotene/kg water ]\n",
- "m = 0.926 \t\t\t\t\t# [kg water/kg kerosene]\n",
- "import math\n",
- "\n",
- "print \"Solution 7.5(a) \" \n",
- "# Solution(a)\n",
- "\n",
- "yCS = 0 \t\t\t\t\t# [kg nicotene/kg water]\n",
- "\n",
- "\t# Because, in this case, both the equilibrium and operating lines are # straight,if \tthe minimum solvent flow rate Bmin is used, the concentration # of the exiting extract, \tyCmax, will be in equilibrium with xCF. Therefore\n",
- "yCmax = m*xCF # [kg nicotene/kg kerosene]\n",
- "\n",
- "A = F*xAF \t\t\t\t\t# [kg water/h]\n",
- "\t# From equation 7.17\n",
- "Bmin = A*(xCF-xCR)/(yCmax-yCS) \t\t# [kg kerosene/h]\n",
- "\n",
- "#Result\n",
- "print\"The minimum amount of solvent which can be used is\",round(Bmin),\"kerosene/h\"\n",
- "\n",
- "print\"\\nSolution 7.5(b)\" \n",
- "\t# Solution(b)\n",
- "\n",
- "B = 1.2*Bmin \t\t\t\t\t# [kg kerosene/h]\n",
- "EF = m*B/A \n",
- "Nt = math.log((xCF-yCS/m)/(xCR-yCS/m)*(1-1/EF)+1/EF)/math.log(EF) \n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The number of theoretical stages if the solvent rate used is 20 percent above the minimum is\",round(Nt,2)\n",
- "\n",
- "print \"Solution7.5(c)\" \n",
- "\t# Solution(c)\n",
- "\n",
- "Eme = 0.6 \t\t\t\t\t# [Murphree stage efficiency]\n",
- "\t# from equation 7.20\n",
- "Eo = math.log(1+Eme*(EF-1))/math.log(EF) \t# [overall efficiency]\n",
- "Nr = Nt/Eo \t\t\t\t\t# [number of real stages]\n",
- "\n",
- "#Result\n",
- "print\"The number of real stages required is\",round(Nr)"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Solution 7.5(a) \n",
- "The minimum amount of solvent which can be used is 962.0 kerosene/h\n",
- "\n",
- "Solution 7.5(b)\n",
- "The number of theoretical stages if the solvent rate used is 20 percent above the minimum is 6.64\n",
- "Solution7.5(c)\n",
- "The number of real stages required is 11.0\n"
- ]
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 7.6,Page number:449"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 7.6\n",
- "# solution\n",
- "\n",
- "# C-styrene A-ethylbenzene B-diethylene glycol\n",
- "F = 1000 # [kg/h]\n",
- "XF = 0.6 # [wt fraction of styrene]\n",
- "XPE = 0.9 \n",
- "XN = 0.1 \n",
- "# All above fractions are on solvent basis\n",
- "# Equilibrium Data for Ethylbenzene (A)-Diethylene Glycol (B)-Styrene (C) at 298 K\n",
- "# Data_eqm = [X Y] \n",
- "# X - kg C/kg (A+C) in raffinate solution\n",
- "# Y - kg C/kg (A+C) in extract solution\n",
- "import math\n",
- "from scipy.optimize import fsolve\n",
- "from pylab import*\n",
- "from numpy import*\n",
- "\n",
- "\n",
- "Data_eqm=matrix([[0,0],[0.087,0.1429],[0.1883,0.273],[0.288,0.386],[0.384,0.48],[0.458,0.557],[0.464,0.565],[0.561,0.655],[0.573,0.674],[0.781,0.863],[0.9,0.95],[1,1]])\n",
- "\n",
- "\n",
- "\n",
- "#Illustration 7.6(a)\n",
- "# Solution(a)\n",
- "\n",
- "# Minimum theoretical stages are determined on the XY equilibrium distribution diagram, stepping them off from the diagonal line to the equilibrium curve, beginning at XPE = 0.9 and ending at XN = 0.1\n",
- "\n",
- "Data_opl=matrix([[0,0],[0.09,0.09],[0.18,0.18],[0.27,0.27],[0.36,0.36],[0.45,0.45],[0.54,0.54],[0.63,0.63],[0.72,0.72],[0.81,0.81],[0.90,0.90],[1,1]]) \n",
- "\n",
- "\n",
- "a1=plot(Data_eqm[:,0],Data_eqm[:,1],label='$Equilibrium line$')\n",
- "a2=plot(Data_opl[:,0],Data_opl[:,1],label='$Operating line$') \n",
- "\n",
- "legend(loc='upper left') \n",
- "title('Equilibrium-distribution diagram and minimum number of stages')\n",
- "xlabel(\"$X,kg C/kg (A+C) in raffinate solution$\") \n",
- "ylabel(\"$Y,kg C/kg (A+C) in extract solution$\") \n",
- "\n",
- "show(a1)\n",
- "show(a2)\n",
- "# Figure 7.20\n",
- "Nmin = 9 # [number of ideal stages]\n",
- "\n",
- "print\"Ans.(a)The minimum number of theoretical stages are \",Nmin\n",
- "\n",
- "#Illustration 7.6(b) \n",
- "# Solution(b)\n",
- "\n",
- "\t# Since the equilibrium-distribution curve is everywhere concave downward# ,the tie line \twhich when extended passes through F provides the minimum\n",
- "\t# reflux ratio\n",
- "\t# From figure 7.19\n",
- "NdeltaEm = 11.04 \n",
- "NE1 = 3.1 \n",
- "\t# From equation 7.30\t\n",
- "\t# Y = R_O/P_E, external reflux ratio\n",
- "Ymin = (NdeltaEm-NE1)/NE1 # [kg reflux/kg extract product]\n",
- "\n",
- "print\"Ans.(b)The minimum extract reflux ratio is\",round(Ymin,3),\"kg reflux/kg extract product\"\n",
- "\n",
- "#Illustration 7.6(c) \n",
- "# Solution(c)\n",
- "\n",
- "Y = 1.5*Ymin # [kg reflux/kg extract product]\n",
- "# From equation 7.30\n",
- "NdeltaE = Y*NE1+NE1 \n",
- "# From figure 7.19\n",
- "NdeltaR = -24.90 \n",
- "# From figure 7.21\n",
- "N = 17.5 # [number of equilibrium stages]\n",
- "\n",
- "# From figure 7.19\n",
- "# For XN = 0.1 NRN = 0.0083\n",
- "NRN = 0.0083 \n",
- "# Basis: 1 hour\n",
- "\n",
- "# e = [P_E R_N] \n",
- "# Solution of simultaneous equation\n",
- "def G(e):\n",
- " f1 = F-e[0]-e[1] \n",
- " f2 = F*XF-e[0]*XPE-e[1]*XN \n",
- " return(f1,f2)\n",
- "\n",
- "# Initial guess:\n",
- "e = [600,300] \n",
- "y = fsolve(G,e) \n",
- "P_E = y[0] # [kg/h]\n",
- "R_N = y[1] # [kg/h]\n",
- "\n",
- "R_O = Y*P_E # [kg/h]\n",
- "E_1 = R_O+P_E # [kg/h]\n",
- "\n",
- "B_E = E_1*NE1 # [kg/h]\n",
- "E1 = B_E+E_1 # [kg/h]\n",
- "RN = R_N*(1+NRN) # [kg/h]\n",
- "S = B_E+R_N*NRN # [kg/h]\n",
- "\n",
- "print\"Ans(c.)The number of theoretical stages are\",N\n",
- "print\"The important flow quantities at an extract reflux ratio of 1.5 times the minimum value are\\n\\n\"\n",
- "print\"PE =\",round(P_E),\"kg/h\\n\",\"RN =\",round(R_N),\"kg/h\\n\",\"RO =\",round(R_O),\"kg/h\\n\",\"E1 =\",round(E_1),\"kg/h\\n\",\"BE =\",round(B_E),\" kg/h\\n\",\"E1 =\",round(E1),\"kg/h\\n\",\"RN =\",round(RN),\"kg/h\\n\",\"S =\",round(S),\"kg/h\\n\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "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\npCR16NAhtX//fpWenq4uXLig6tevr7799tssbXfr1k3dvXtXnTx5UpUsWVL5+/ur8+fPq9u3bysv\nLy+1cOHCHJ/XuXPnVHh4uEpJSVHXr19Xbdq0USNHjsyyv1u0aKGuXr2qEhISVP369dVPP/2klHr8\n++ZRvr6+qnbt2uqff/7RxeXp6al27Nih0tLSVP/+/dVrr72W4z4dMGCAcnFxUVFRUSotLU317dtX\nBQUF5bpshQoV1OHDh9WDBw9U27ZtVY0aNdTixYt1nw9/f/8c11Uq6/s9IiJC2djYqEmTJqm0tDQ1\nZ84c5eLiol599VWVmJioTp48qezs7NSFCxdyfM55xW3sz/WAAQOUvb292rVrl0pOTlbvvvuu7hiS\nmJio3N3d1YIFC1R6ero6cuSIqlChgjp16pRuXUdHR7Vnzx6llFIPHjzI9lxat26thg8frpKTk9XR\no0dVxYoV1e+//66UUmrBggVZjnePCgoKUlOmTFFKKZWcnKz++OOPXPf/v//+q9atW6eSkpLU3bt3\nVa9evVS3bt10j7ds2VKNHj1apaamqt27dysHBwfd5/ry5cvKxcVFhYWFKaWU2r59u3JxcVE3btxQ\niYmJysHBQZ09e1YppdS1a9fUyZMnc43ZqJWQUopu3brh7Oys+/fw28aqVat47733cHNzw9nZmY8/\n/jjP0jCvxx7no48+wsnJiWrVqjFy5EiWL1+ue8zV1ZXhw4dTokSJfJW0Tz31FAMGDMDKyorevXtz\n5coVxo8fj62tLS+88AIlS5bk3LlzOa67atUqBg0ahJeXF2XKlMnxm8xDJUuW5OrVq1y4cAFra2ue\nf/75x8YWEhKCnZ0dpUqVyvaYlZUV/fv317U9adIkVq1apdd+VkrludzSpUv54IMPqFmzJmXLluWL\nL75gxYoVWb55TpgwgVKlSvHMM8/QqFEjjh07lm076enprFu3jokTJ2JnZ8fTTz/NgAEDcm3b19eX\np59+GoCGDRsSFBSk+za2Zs0aunbtio+PD7a2tkycODHbeXwfHx+6du0KQOnSpXnuuedo3rw5JUqU\noEaNGgwZMiTLtzuADz/8kHLlyuHl5UXDhg3p3LkzNWvWxMHBgc6dO3PkyJEcY61Vqxbt2rXD1taW\nChUq8N5772Xb9jvvvEOVKlVwdnbmpZde0lURhrxvQHutX3vtNZ566ildXHXq1KFt27ZYW1vTq1ev\nXOO0srKiR48eNG3aFGtra/r27Zulmslp2caNG1OqVCm6d+9O2bJl6devn+7zkVs7D2V+bW1tbfnk\nk0+wtrYmMDCQhIQERo4cSdmyZfHy8sLLy+uxsegTd04M/VwHBATQqlUrSpYsyeeff87evXu5fPky\nmzdv1m2rRIkSPPvss/To0SNLNdStWze8vb0Bsn1WY2Ji2LNnD1OnTqVkyZI0atSIN954Q1eJPe7z\nWrJkSS5cuEBsbCwlS5bEx8cn12XLly9P9+7dKV26NOXKlePjjz/WvScvXbrEwYMHmThxIjY2Njz/\n/PO6zwrAkiVLePHFF+nUqRMA7du3p2nTpoSGhmJlZUWJEiX4888/SUpKonLlynh5eeUah1GTkJWV\nFRs2bODmzZu6f6+//joAV69ezXLKp3r16sZsOotH27ly5UqOj+VH5cqVdT/b2dkBULFixSx/S0xM\n1I1Os7e3x8HBAdBvHzx8k40ePRpPT086dOhArVq1mDp16mNje9xze7Tt1NRUbty48djtPs7Vq1ep\nUaNGlm2npaURFxen+1uVKlV0P5cpU4Z79+5l287169dJS0vT+32yf/9+/P39qVSpEk5OTsyePZt/\n//0X0E5puLu765a1s7PDxcUly/qZHwc4e/YsAQEBVK1aFUdHRz755BPd9h569PV/9PfExMQcY42L\niyMoKAh3d3ccHR0JDg7Otu3M+8jOzk63j/Lz2ckcV+nSpalUqVKW33OL89F183pOQLbtZv79ces+\nysXFRfdF4eFn69FYcnrf5Cfux60LOX+uQTvOZX7vlC1blvLly3PlyhUuXrzI/v37s3wRX7Zsme6z\nYGVllefn9MqVK5QvX56yZcvq/la9evUsp8ny8tVXX6GUonnz5jRo0IBffvkl12Xv37/P0KFDqVmz\nJo6Ojvj6+nL79m2UUro4Mn9Rd3d31x2fLl68yOrVq7M8zz/++INr165RpkwZVq5cyU8//YSrqysB\nAQGcOXMm1zjM1idUtWrVLOdNM/8M2guZ+Q127dq1fLf1aDtubm663/Ma1fLwhb9///4Tx/FwdNrd\nu3d1/SOP2weZlStXjmnTphEdHc3GjRv55ptviIiIyPM5PG7EzqNtP/xWXrZs2SzPOT09nevXr+u9\nXVdX1yzDdi9duoSNjU2WD7Y+KlasiI2Njd776NVXX6Vbt25cvnyZW7du8eabb+o+JK6urly+fFm3\n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\nP/zwA8aMGSNw5INj6dKluHDhAhoaGmBnZ4fvvvsOKpUKgG7tN+lmVUIIIYLR+avjCCGE6C8qQoQQ\nQgRDRYgQQohgqAgRQggRDBUhQgghgqEiRAghRDBUhAghhAiGihAhhBDBUBEiOqOjowOlpaWvtG57\ne/trjqZ3bW1tWhmHkLcFFSHSq4MHD8LExAQxMTEAgJCQECxatAgFBQVq7U6dOoU5c+bw6vPevXvY\nvXs3Dh48iKioKCQlJSEqKor7PCsrC0OGDNG435SUFDx58qTHcqVSiWXLlvHqg2+8MTExOHv2rFo7\nlUqFpUuXvvI4vTl//jy2bNmCkydP9rqso6PjtY+piW3btmH37t282w9GjoieEOSJdeSN4Ovry86f\nP8+am5vZkSNHem1TXFzMtm/fPmBf5eXlzMvLS+1hkV9//TU7e/Ys9z4iIkLjfmtqalhsbGyvn/3+\n++9MLBb3uW5dXR1raWnRKN6MjAwWHh7e53qvy6effsrkcjmrqKjod5mmiouL2f79+/9xfIcOHWIp\nKSlaGYvoN5oJkT4tW7YM0dHRiIqKwsqVK3ttI5PJMHPmTF597dixQ+1hkS4uLmqP0O+aBWnS77Fj\nxxAYGNhjeXNzM54/f46nT5/2uW5JSQnq6+s1itfNzQ1+fn6Ii4sbMLZ/oq2tDa6urhg3bly/yzSV\nmZkJFxeXfxxfXl4epk+frpWxiH7T+adoE+EEBAQgNDQUe/bs6fMnkPPy8rBz506cOHEC+/fvR0FB\nAWpqahAZGQk7OztkZ2cjJCQET548wbx589TWDQ4OxsiRI7l+3NzcNOr38OHDqK+vh6mpaY+4YmNj\nsXz5cuzduxdtbW0YNmwY7+3Ozs7uN15zc3NEREQAAMrLy5GamgqRSARra2skJCTgk08+AQAoFArs\n2rULly5dQmpqKhobG9HY2Ih169bBw8MDcXFxUKlUqKqqgpWVFVavXg0A+Omnn9Da2ork5GQsXLiw\nxzJnZ2ekpKT0OyaAHv3b2tri6NGjWLt2LWpra2FtbY309HTcuHEDJiYmWLx4MaytrXH9+nUUFhai\ntbUVy5YtQ2ZmJh48eID79+/Dz88PkyZNQn19PSwtLVFUVIRTp07By8sLM2bMwPLlyxEdHY309HRu\nrOzsbOTn50MkEiEoKAhA5yHU7n02NDQgMTGx1+0g+o1mQqRPN27cgJOTE/Lz8/tsU1xcDLlcjkWL\n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\n",
- "text": [
- "<matplotlib.figure.Figure at 0x7961b70>"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Ans.(a)The minimum number of theoretical stages are 9\n",
- "Ans.(b)The minimum extract reflux ratio is 2.561 kg reflux/kg extract product\n",
- "Ans(c.)The number of theoretical stages are 17.5\n",
- "The important flow quantities at an extract reflux ratio of 1.5 times the minimum value are\n",
- "\n",
- "\n",
- "PE = 625.0 kg/h\n",
- "RN = 375.0 kg/h\n",
- "RO = 2401.0 kg/h\n",
- "E1 = 3026.0 kg/h\n",
- "BE = 9381.0 kg/h\n",
- "E1 = 12407.0 kg/h\n",
- "RN = 378.0 kg/h\n",
- "S = 9384.0 kg/h\n",
- "\n"
- ]
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 7.7,Page number:454"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 7.7\n",
- "#Design of a Mixer-Settler Extractor\n",
- "\n",
- "#Variable declaration\n",
- "\n",
- "Ff = 1.89 \t\t\t\t\t\t# [cubic m/min]\n",
- "Fs = 2.84 \t\t\t\t\t\t# [cubic m/min]\n",
- "t = 2 \t\t\t\t\t\t\t# [min]\n",
- "\n",
- "\n",
- "print \"Solution 7.7(a)\\n\"\n",
- "\t# Solution(a)\n",
- "import math\n",
- "Q = Ff+Fs \t\t\t\t\t# [total flow rate, cubic m/min]\n",
- "Vt = Q*t \t\t\t\t\t# [cubic m]\n",
- "\t# For a cylindrical vessel H = Dt\n",
- "Dt = (4*Vt/math.pi)**(1.0/3.0) \t\t# [m]\n",
- "H = Dt \t\t\t\t\t# [m]\n",
- "\n",
- "#Result\n",
- "print\"The diameter and height of each mixing vessel is\",round(Dt,1),\" m and\",round(H,1),\" m respectively\"\n",
- "\n",
- "print\"Solution 7.7(b) \"\n",
- "\t# Solution(b)\n",
- "\t# Based on a recommendation of Flynn and Treybal (1955),\n",
- "P = 0.788*Vt \t\t\t\t\t# [mixer power, kW]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The agitator power for each mixer is\",round(P,2),\"kW\"\n",
- "\n",
- "print\"\\nSolution 7.7(c)\"\n",
- "\t# Solution(c)\n",
- "\n",
- "\t# Based on the recommendation by Ryan et al. (1959), the disengaging area # in the \t\tsettler is\n",
- "\t# Dt1*L1 = Q/a = Y\n",
- "a = 0.2 \t\t\t\t\t# [cubic m/min-square m]\n",
- "Y = Q/a \t\t\t\t\t# [square m]\n",
- "\t\t\t# For L/Dt = 4\n",
- "Dt1 = (Y/4)**0.5 \t\t\t\t# [m]\n",
- "L1 = 4*Dt1 \t\t\t\t\t# [m]\n",
- "\n",
- "#Result\n",
- "print\"The diameter and length of a settling vessel is\",round(Dt1,2),\" m and\",round(L1,2),\" m respectively\"\n",
- "\n",
- "print\"Solution 7.7(d)\"\n",
- "\t# Solution(d)\n",
- "\t# Total volume of settler\n",
- "Vt1 = math.pi*Dt1**2*L1/4 \t\t\t# [cubic m]\n",
- "tres1 = Vt1/Q \t\t\t\t\t# [min]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The residence time in the settling vessel is\",round(tres1,1),\"min\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Solution 7.7(a)\n",
- "\n",
- "The diameter and height of each mixing vessel is 2.3 m and 2.3 m respectively\n",
- "Solution 7.7(b) \n",
- "The agitator power for each mixer is 7.45 kW\n",
- "\n",
- "Solution 7.7(c)\n",
- "The diameter and length of a settling vessel is 2.43 m and 9.73 m respectively\n",
- "Solution 7.7(d)\n",
- "The residence time in the settling vessel is 9.5 min\n"
- ]
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 7.8,Page number:456"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 7.8\n",
- "#Power Requirements of a Mixer-Settler Extractor\n",
- "\n",
- "#Variable declaration\n",
- "\n",
- "Ff = 1.61 \t\t\t\t\t# [flow rate of feed, kg/s]\n",
- "Fs = 2.24 \t\t\t\t\t# [flow rate of solvent, kg/s]\n",
- "t = 2*60 \t\t\t\t\t# [residence time in each mixer, s]\n",
- "df = 998 \t\t\t\t\t# [density of feed, kg/cubic m]\n",
- "uf = 0.89*10**-3 \t\t\t\t# [viscosity of feed, kg/m.s]\n",
- "ds = 868 \t\t\t\t\t# [density of solvent, kg/cubic m]\n",
- "us = 0.59*10**-3 \t\t\t\t# [viscosity of solvent, kg/m.s]\n",
- "sigma = 0.025 \t\t\t\t\t# [interfacial tension, N/m]\n",
- "g = 9.8 \t\t\t\t\t# [square m/s]\n",
- "import math\n",
- "\n",
- "Qf = Ff/df \t\t\t\t\t# [volumetric flow rate of feed, cubic m/s]\n",
- "Qs = Fs/ds \t\t\t\t\t# [volumetric flow rate of solvent, cubic m/s]\n",
- "\t# Volume fractions in the combined feed and solvent entering the mixer \n",
- "phiE = Qs/(Qs+Qf) \n",
- "phiR = 1-phiE \n",
- "\n",
- "print\"\\nSolution7.8(a)\\n\" \n",
- "\t# Solution(a)\n",
- "import math\n",
- "Q = Qf+Qs \t\t\t\t\t# [total flow rate, cubic m/s]\n",
- "Vt = Q*t \t\t\t\t\t# [vessel volume, cubic m]\n",
- "\t# For a cylindrical vessel, H = Dt\n",
- "\t# Therefore,Vt = math.pi*Dt**3/4\n",
- "Dt = (4*Vt/math.pi)**(1.0/3.0) \t\t# [ diameter, m]\n",
- "H = Dt \t\t\t\t\t# [height, m]\n",
- "Di = Dt/3 \t\t\t\t\t# [m]\n",
- "\n",
- "#Result\n",
- "print\"The height and diameter of the mixing vessel are\",round(Dt,3),\" m and\",round(H,3),\" m respectively.\\n\"\n",
- "print\"The diameter of the flat-blade impeller is\",round(Di,3),\" m\"\n",
- "\n",
- "print\"\\nSolution (b)\\n\" \n",
- "\t# Solution(b)\n",
- "\n",
- "\t# For the raffinate phase dispersed:\n",
- "phiD = phiR \n",
- "phiC = phiE \n",
- "deltad = df-ds \t\t\t\t# [kg/cubic m]\n",
- "rowM = phiD*df+phiC*ds \t\t\t# [kg/cubic m]\n",
- "uM = us/phiC*(1 + 1.5*uf*phiD/(us+uf)) \t# [kg/m.s]\n",
- "\t# Substituting in equation 7.34\n",
- "ohm_min=math.sqrt(1.03*phiD**0.106*g*deltad*(Dt/Di)**2.76*(uM**2*sigma/(Di**5*rowM*g**2*deltad**2))**0.084/(Di*rowM))*60 \t\t\t# [rpm]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The minimum rate of rotation of the impeller for complete and uniform dispersion.is\",round(ohm_min),\"rpm.\"\n",
- "\n",
- "print\"\\nSolution 7.8(c)\"\n",
- "\t# Solution(c)\n",
- "\n",
- "ohm = 1.2*ohm_min \t\t\t\t# [rpm]\n",
- "\n",
- "\t# From equation 7.37\n",
- "Re = ohm/60*Di**2*rowM/uM \t\t\t# [Renoylds number]\n",
- "\t# Then according to Laity and Treybal (1957), the power number, Po = 5.7\n",
- "Po = 5.7\n",
- "\t# From equation 7.37\n",
- "P = Po*(ohm/60)**3*Di**5*rowM/1000 \t\t# [kW]\n",
- "\t# Power density\n",
- "Pd = P/Vt \t\t\t\t\t# [kW/cubic m]\n",
- "\n",
- "#Result\n",
- "print\"The power requirement of the agitator at 1.20 times the minimum rotation rate is\",round(P,3),\" kW.\"\n",
- "print\"Power density is\",round(Pd,3),\"kW/m^3\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "\n",
- "Solution7.8(a)\n",
- "\n",
- "The height and diameter of the mixing vessel are 0.862 m and 0.862 m respectively.\n",
- "\n",
- "The diameter of the flat-blade impeller is 0.287 m\n",
- "\n",
- "Solution (b)\n",
- "\n",
- "The minimum rate of rotation of the impeller for complete and uniform dispersion.is 152.0 rpm.\n",
- "\n",
- "Solution 7.8(c)\n",
- "The power requirement of the agitator at 1.20 times the minimum rotation rate is 0.287 kW.\n",
- "Power density is 0.571 kW/m^3\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 7.9,Page number:460"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 7.9\n",
- "#Drop Size and Interfacial Area in an Extractor\n",
- "\n",
- "#Variable declaration\n",
- "\t# From example 7.8\n",
- "Di = 0.288 \t\t\t\t\t# [m]\n",
- "sigma = 0.025 \t\t\t\t\t# [N/m]\n",
- "ohm = 152.0*1.2/60.0 \t\t\t\t# [rps]\n",
- "ds = 868.0 \t\t\t\t\t# [kg/cubic m]\n",
- "phiD = 0.385 \n",
- "\n",
- "#Calculation\n",
- "\n",
- "import math \n",
- "\t# Therefore from equation 7.49\n",
- "We = Di**3*ohm**2.0*ds/sigma \t\t\t# [Weber number]\n",
- "\n",
- "\t# From equation 7.50\n",
- "dvs = Di*0.052*(We)**-0.6*math.exp(4*phiD) \t# [m]\n",
- "\t# Substituting in equation 7.48\n",
- "a = 6*phiD/dvs \t\t\t\t# [square m/cubic m]\n",
- "dvs=dvs*1000\t\t\t\t\t#[mm]\n",
- "#Result\n",
- "print\"The Sauter mean drop diameter and the interfacial area is\",round(dvs,3),\" mm and\",round(a),\" square m/cubic m respectively.\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The Sauter mean drop diameter and the interfacial area is 0.326 mm and 7081.0 square m/cubic m respectively.\n"
- ]
- }
- ],
- "prompt_number": 7
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 7.10,Page number:461"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 7.10\n",
- "#Mass-Transfer Coefficients in Agitated Extractor\n",
- "#Variable declaration\n",
- "\n",
- "Dd = 1.15*10**-9 \t\t\t# [molecular diffusivity of furfural in water, square \t\t\t\t\tm/s]\n",
- "Dc = 2.15*10**-9 \t\t\t# [molecular diffusivity of furfural in toluene, square \t\t\t\t\tm/s]\n",
- "m = 10.15 \t\t\t\t# [equilibrium distribution coefficient, cubic m \t\t\t\t\traffinate/cubic m extract]\n",
- "\n",
- "print\"Solution7.10(a)\\n\" \n",
- "\t# Solution(a)\n",
- "\t# From example 7.8 and 7.9\n",
- "dvs = 3.26*10**-4 \t\t\t# [m]\n",
- "Shd = 6.6 \t\t\t\t# [sherwood number for dispersed phase]\n",
- "\t# From equation 7.52\n",
- "kd = Shd*Dd/dvs \t\t\t# [dispersed phase mass transfer coefficient, m/s]\n",
- "\n",
- "#Result\n",
- "print\"The dispersed-phase mass-transfer coefficient is\",round(kd,7),\" m/s\"\n",
- "\n",
- "print\"\\n Solution 7.10(b) \"\n",
- "\t# Solution(b)\n",
- "\n",
- "dd = 998 \n",
- "dc = 868 \t\t\t\t# [density of continuous phase, kg/cubic m]\n",
- "uc = 0.59*10**-3 \t\t\t# [viscosity of continuous phase, kg/m.s]\n",
- "ohm = 182.2 \t\t\t\t# [rpm]\n",
- "g = 9.8 \t\t\t\t# [square m/s]\n",
- "Di = 0.288 \t\t\t\t# [m]\n",
- "sigma = 0.025 \t\t\t\t# [N/m]\n",
- "phiD = 0.385 \n",
- "Dt = 0.863 \t\t\t\t# [m] \n",
- "Scc = uc/(dc*Dc) \n",
- "Rec = Di**2*ohm/60*dc/uc \n",
- "Fr = Di*(ohm/60)**2/g \n",
- "Eo = dd*dvs**2*g/sigma \n",
- "\n",
- "\t# From equation 7.53\n",
- "Shc=1.237*10**-5*Rec**(2.0/3.0)*Scc**(1.0/3.0)*Fr**(5.0/12.0)*Eo**(5.0/4.0)*phiD**(-1.0/2.0)*(Di/dvs)**2*(dvs/Dt)**(1.0/2.0) \n",
- "\t# Therefore \n",
- "kc = Shc*Dc/dvs \t\t\t# [continuous phase mass transfer coefficient, m/s]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The continuous-phase mass-transfer coefficient is\",round(kc,5),\"m/s\"\n",
- "\n",
- "print\"Solution 7.10(c)\"\n",
- "\t# Solution(c)\n",
- "\n",
- "a = 7065 \t\t\t\t\t# [square m/cubic m]\n",
- "Vt = 0.504 \t\t\t\t\t# []\n",
- "Qd = 0.097/60 \t\t\t\t\t# [cubic m/s]\n",
- "Qc = 0.155/60 \t\t\t\t\t# [cubic m/s]\n",
- "\n",
- "\t# From equation 7.40\n",
- "Kod = kd*kc*m/(m*kc+kd) \t\t\t# [m/s]\n",
- "\t# From equation 7.45\n",
- "N_tod = Kod*a*Vt/Qd \n",
- "\t# From equation 7.46\n",
- "Emd = N_tod/(1+N_tod) \n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The Murphree dispersed phase efficiency is \",round(Emd,3)\n",
- "\n",
- "\n",
- "print\"Solution 7.10(d)\" \n",
- "\t# Solution(d)\n",
- "\t# From equation 7.57\n",
- "fext = Emd/(1+Emd*Qd/(m*Qc)) \n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The fractional extraction of furfural is\",round(fext,3)"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Solution7.10(a)\n",
- "\n",
- "The dispersed-phase mass-transfer coefficient is 2.33e-05 m/s\n",
- "\n",
- " Solution 7.10(b) \n",
- "The continuous-phase mass-transfer coefficient is 0.00076 m/s\n",
- "Solution 7.10(c)\n",
- "The Murphree dispersed phase efficiency is 0.981\n",
- "Solution 7.10(d)\n",
- "The fractional extraction of furfural is 0.925\n"
- ]
- }
- ],
- "prompt_number": 8
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 7.11,Page number:466"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 7.11\n",
- "#Preliminary Design of an RDC \n",
- "#Variable declaration\n",
- "\t# Preliminary Design of an RDC\n",
- "T = 293 \t\t\t\t\t# [K]\n",
- "F1 = 12250 \t\t\t\t\t# [flow rate for dispersed organic phase, kg/h]\n",
- "F2 = 11340 \t\t\t\t\t# [flow rate for continuous aqueous phase, kg/h]\n",
- "d1 = 858 \t\t\t\t\t# [kg/cubic m]\n",
- "d2 = 998 \t\t\t\t\t# [kg/cubic m]\n",
- "n = 12 \t\t\t\t\t# [Equilibrium stages]\n",
- "\n",
- "#Calculation\n",
- "\n",
- "import math\n",
- "Qd = F1/d1 \t\t\t\t\t# [cubic m/h]\n",
- "Qc = F2/d2 \t\t\t\t\t# [cubic m/h]\n",
- "\n",
- "\t# Assume that based on information in Table 7.5\n",
- "\t# Vd+Vc = V = 22 m/h\t\n",
- "V = 22 \t\t\t\t\t# [m/h]\n",
- "\t# Therefore column cross sectional area \n",
- "Ac = (Qd+Qc)/V \t\t\t\t# [square m]\n",
- "\t# Column diameter\n",
- "Dt = math.sqrt(4*Ac/math.pi) \t\t\t# [m]\n",
- "\n",
- "\t# Assume that based on information in Table 7.5\n",
- "\t# 1/HETS = 2.5 to 3.5 m^-1\n",
- "\t# Therefore\n",
- "HETS = 1.0/3.0 \t\t\t\t# [m/theoritical stages]\n",
- "\t# Column height\n",
- "Z = n*HETS \t\t\t\t\t# [m]\n",
- "\n",
- "#Result\n",
- "print\"The height and diameter of an RDC to extract acetone from a dilute toluene-acetone solution is\",Z,\" m and\",round(Dt,2),\"square m respectively\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The height and diameter of an RDC to extract acetone from a dilute toluene-acetone solution is 4.0 m and 1.13 square m respectively\n"
- ]
- }
- ],
- "prompt_number": 9
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/Chapter 8.ipynb b/Beginning_C++_through_Game_Programming/Chapter 8.ipynb
deleted file mode 100755
index 4e0ec99d..00000000
--- a/Beginning_C++_through_Game_Programming/Chapter 8.ipynb
+++ /dev/null
@@ -1,769 +0,0 @@
-{
- "metadata": {
- "name": ""
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 8: Humidification Operations "
- ]
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 8.1,Page number:479"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 8.1\n",
- "#Humidity of a Saturated Gas-Vapor Mixture\n",
- "\n",
- "#Variable declaration\n",
- "\n",
- "P_total = 1 \t\t\t\t\t\t# [bar]\n",
- "T1 = 320.0 \t\t\t\t\t\t# [K]\n",
- "T_c = 562.2 \t\t\t\t\t\t# [K]\n",
- "P_c = 48.9 \t\t\t\t\t\t# [bar]\n",
- "A = -6.983 \n",
- "B = 1.332 \n",
- "C = -2.629 \n",
- "D = -3.333 \n",
- "import math\n",
- "from scipy.optimize import fsolve\n",
- "from pylab import *\n",
- "\n",
- "x1 = 1-(T1/T_c) \n",
- "def f12(P1):\n",
- " return(math.log(P1/P_c)-(A*x1+B*x1**1.5+C*x1**3+D*x1**6)/(1-x1)) \n",
- "P1 = fsolve(f12,0.01) # [bar]\n",
- "print\"Vapor pressure of benzene at 320 K is\",round(P1[0],2),\"bar\"\n",
- "\n",
- "M_benzene = 78.0 # [gram/mole]\n",
- "print\"\\nSolution 8.1 (a)\"\n",
- "\n",
- "\t# Solution (a)\n",
- "\t# For nitrogen\n",
- "M_nitrogen = 28.0 \t\t\t\t# [gram/mole]\n",
- "\t# From equation 8.2\n",
- "Y = P1/(P_total - P1) \t\t\t\t#[mole C6H6/ mole N2]\n",
- "Y_s1 = Y*(M_benzene/M_nitrogen) \t\t# [gram C6H6/gram N2]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"Absolute humidity of mixture of benzene and nitrogen is\",round(Y_s1[0],2),\" gram C6H6/gram N2\\n\\n\"\n",
- "\n",
- "print\"\\nSolution 8.1 (b)\\n\"\n",
- "\t# Solution (b)\n",
- "\t# For carbon dioxide\n",
- "M_carbondioxide = 44.0 \t\t\t\t# [gram/mole]\n",
- "\t# From equation 8.2\n",
- "Y = P1/(P_total - P1) \t\t\t\t#[mole C6H6/ mole C02]\n",
- "Y_s2 = Y*(M_benzene/M_carbondioxide) \t\t# [gram C6H6/gram CO2]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"\\nAbsolute humidity of mixture of benzene and carbon dioxide is\",round(Y_s2[0],3),\"gram C6H6/gram CO2\\n\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Vapor pressure of benzene at 320 K is 0.32 bar\n",
- "\n",
- "Solution 8.1 (a)\n",
- "Absolute humidity of mixture of benzene and nitrogen is 1.31 gram C6H6/gram N2\n",
- "\n",
- "\n",
- "\n",
- "Solution 8.1 (b)\n",
- "\n",
- "\n",
- "Absolute humidity of mixture of benzene and carbon dioxide is 0.833 gram C6H6/gram CO2\n",
- "\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 8.2,Page number:480"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 8.2\n",
- "#2 Enthalpy of a Saturated Gas-Vapor Mixture\n",
- "\n",
- "#Variable declaration\n",
- "\t# A - water vapor B - air\n",
- "\t# REference state is air\n",
- "\n",
- "T_ref = 273 \t\t\t\t\t# [Reference temperature, K]\n",
- "T = 303 \t\t\t\t\t# [K]\n",
- "P_total = 1 \t\t\t\t\t# [atm]\n",
- "P_A = 4.24 \t\t\t\t\t# [Vapor pressure of water at 303K, kPa]\n",
- "M_A = 18.0 \t\t\t\t\t# [gram/mole]\n",
- "M_B = 29.0 \t\t\t\t\t# [gram/mole]\n",
- "C_A = 1.884 \t\t\t\t\t# [kJ/kg.K]\n",
- "C_B = 1.005 \t\t\t\t\t# [kJ/kg.K]\n",
- "lamda = 2502.3 \t\t\t\t# [Latent heat of Vaporization at 273K, kJ/kg]\n",
- "\n",
- "#Calculation\n",
- "\n",
- "P_total = P_total*101.325 \t\t\t# [kPa]\n",
- "\n",
- "\t# From equation 8.2\n",
- "Y_s = P_A/(P_total - P_A)*(M_A/M_B) \t\t#[kg H2O/ kg dry air]\n",
- "\n",
- "\n",
- "\n",
- "print\"Absolute humidity of mixture of water vapor and air is\",round(Y_s,3),\"kg H2O/kg dry air\" \n",
- "\t# From equation 8.3\n",
- "H_s = C_B*(T-T_ref) + Y_s*(C_A*(T-T_ref) + lamda) \t# [kJ/kg dry air]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"Enthalpy per unit mass of dry air of a saturated mixture at 303 K and 1 atm is\",round(H_s,1),\"kJ/kg dry air\" \n",
- "print\"\\n\\nFollowing graph shows the result of similar calculations form 273 to 333 K\"\n",
- "x=[273,283,293,303,313,323,333]\n",
- "y=[9.48,29.36,57.57,99.75,166.79,275.58,461.50]\n",
- "a=plot(x,y)\n",
- "xlabel('$Temperature,K$')\n",
- "ylabel('$Hs,kJ/kg dry air$')\n",
- "show(a)"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Absolute humidity of mixture of water vapor and air is 0.027 kg H2O/kg dry air\n",
- "Enthalpy per unit mass of dry air of a saturated mixture at 303 K and 1 atm is 99.5 kJ/kg dry air\n",
- "\n",
- "\n",
- "Following graph shows the result of similar calculations form 273 to 333 K\n"
- ]
- },
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "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\n",
- "text": [
- "<matplotlib.figure.Figure at 0x768af60>"
- ]
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 8.3,Page number:482"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 8.2\n",
- "# Properties of an Unsaturated Gas-Vapor Mixture\n",
- "\n",
- "#Variable declaration\n",
- "\t# A - water vapor B - air\n",
- "\n",
- "T = 328 \t\t\t\t\t# [dry bulb temperature, K]\n",
- "P_total = 1.0 \t\t\t\t\t# [atm]\n",
- "H = 30.0 \t\t\t\t\t# [relative humidity, %]\n",
- "\n",
- "P_vapA = 15.73 \t\t\t\t# [vapor pressure of water, kPa]\n",
- "P_total = P_total*101.325 \t\t\t# [kPa]\n",
- "M_A = 18.0 \t\t\t\t\t# [gram/mole]\n",
- "M_B = 29.0 \t\t\t\t\t# [gram/mole]\n",
- "\n",
- "P_A = (H/100)*P_vapA \t\t\t\t# [partial pressure of A,kPa]\n",
- "\n",
- "#Calculation\n",
- "\n",
- "\n",
- "print\"Solution 8.3 (a)\"\n",
- "\t# At dew point partial pressure is equal to vapor pressure\n",
- "\t# Using Antonnie equation we can find dew point temperature\n",
- "\n",
- "\n",
- "\n",
- "print\"Dew point temperature is 304.5 K\\n\"\n",
- "\n",
- "\t# From equation 8.1\n",
- "Y_s = P_A/(P_total-P_A)*(M_A/M_B) \n",
- "\n",
- "\n",
- "print\"Absolute humidity of air-water mixture at 328 K is\",round(Y_s,2),\"kg H2O/kg dry air\\n\\n\"\n",
- "\n",
- "print\"\\n Solution8.3 (b)\"\n",
- "\n",
- "\t#soluton (b)\n",
- "T_ref = 273 \t\t\t\t\t# [K]\n",
- "C_A = 1.884 \t\t\t\t\t# [kJ/kg.K]\n",
- "C_B = 1.005 \t\t\t\t\t# [kJ/kg.K]\n",
- "lamda = 2502.3 \t\t\t\t# [Latent heat of Vaporization at 273 K, kJ/kg]\n",
- "\n",
- "\t# From equation 8.3\n",
- "H_s = C_B*(T-T_ref) + Y_s*(C_A*(T-T_ref) + lamda) \n",
- "\n",
- "\n",
- "print\"Enthalpy per unit mass of dry air of a saturated mixture relative to 273 K is\",round(H_s,1),\"kJ/kg dry air\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Solution 8.3 (a)\n",
- "Dew point temperature is 304.5 K\n",
- "\n",
- "Absolute humidity of air-water mixture at 328 K is 0.03 kg H2O/kg dry air\n",
- "\n",
- "\n",
- "\n",
- " Solution8.3 (b)\n",
- "Enthalpy per unit mass of dry air of a saturated mixture relative to 273 K is 134.3 kJ/kg dry air\n"
- ]
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 8.4,Page number:483"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 8.4\n",
- "#Adiabatic Saturation Temperature\n",
- "#Variable declaration\n",
- "\n",
- "\t# a - water vapor b - air\n",
- "T_G1 = 356 \t\t\t\t\t\t# [K]\n",
- "P_total = 101.325 \t\t\t\t\t# [kPa]\n",
- "Y_1 = .03 \t\t\t\t\t\t# [kg water/kg dry air]\n",
- "\n",
- "\n",
- "C_pa = 1.884 \t \t\t\t\t\t# [kJ/kg.K]\n",
- "C_pb = 1.005 \t\t\t\t\t\t# [kJ/kg.K]\n",
- "\n",
- "C_s1 = C_pb + Y_1*C_pa \t\t\t\t\t# [kJ/kg.K]\n",
- "\n",
- "T_1 = 373.15 \t\t\t\t\t\t# [K]\n",
- "T_c = 647.1 \t\t\t\t\t\t# [K]\n",
- "M_a = 18.02 \t\t\t\t\t\t# [gram/mole]\n",
- "M_b = 28.97 \t\t\t\t\t\t# [gram/mole]\n",
- "lamda_1 = 2256 \t\t\t\t\t# [Latent Heat of Vaporizarion at T_1, \n",
- "#Calculation\n",
- "\t\t\t\t\t\t\t\n",
- "import math\n",
- "from scipy.optimize import fsolve\n",
- "from pylab import *\n",
- "\n",
- "def f12(T_as):\n",
- " return(T_as - T_G1 + ((math.exp(16.3872 - (3885.7/(T_as - 42.98)))/(P_total - (math.exp(16.3872 - (3885.7/(T_as - 42.98))))))*(M_a/M_b) - Y_1)*(lamda_1*((1-T_as/T_c)/(1-T_1/T_c))**.38/C_s1)) \n",
- "T_as = fsolve(f12,310) # [K]\n",
- "\n",
- "\n",
- "print\"Adiabatic Saturation Temperature is\",round(T_as[0]),\"K\"\n",
- "\n",
- "\t# Now using equation 8.2\n",
- " \n",
- "P_a = math.exp(16.3872-(3885.7/(T_as-42.98))) \t\t# [kPa]\n",
- "Y_as = P_a/(P_total-P_a)*M_a/M_b \t\t\t# [kg water/kg dry air]\n",
- "\n",
- "#Result\n",
- "print\"Absolute humidity is\",round(Y_as,3),\"kg water/kg dry air\\n\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Adiabatic Saturation Temperature is 313.0 K\n",
- "Absolute humidity is 0.049 kg water/kg dry air\n",
- "\n"
- ]
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 8.5,Page number:487"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 8.5\n",
- "# Wet-Bulb Temperature of an Air-Water Mixture \n",
- "\n",
- "#Variable declaration\n",
- "\n",
- "T_w = 320 \t\t\t\t\t\t# [K]\n",
- "T_g = 340 \t\t\t\t\t\t# [K]\n",
- "lambda_w = 2413 \t\t\t\t\t# [Latent Heat of Vaporization at 320K, \t\t\t\t\t\t\tkJ/kg]\n",
- "Y_w1 = 0.073 \t\t\t\t\t\t# [kg water/kg dry air]\n",
- "\n",
- "A = 0.95 \t\t\t\t\t\t# [For air water system,A, kJ/kg.K]\n",
- "\n",
- "#Calculation\n",
- "\n",
- "\t# here A = hg/ky, psychrometric ratio\n",
- "\t# Air-water mixture is saturated at 320K and 1 atm\n",
- "\t# Using equation 8.15\n",
- " \n",
- "Y_w2 = Y_w1 - ((T_g-T_w)*A/lambda_w) \t\t\t# [kg water/kg dry air]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"Absolute humidity of air-water mixture at 340 K and 1 atm is\",round(Y_w2,3),\" kg water/kg dry air\\n \""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Absolute humidity of air-water mixture at 340 K and 1 atm is 0.065 kg water/kg dry air\n",
- " \n"
- ]
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 8.6,Page number:487"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 8.6\n",
- "#Wet-Bulb and Adiabatic Saturation Temperatures of an Air-Toluene Mixture\n",
- "\n",
- "#Variable declaration\n",
- "\t# a - toluene b - air\n",
- "\n",
- "T_G1 = 333 \t\t\t\t\t\t# [K]\n",
- "P_total = 101.325 \t\t\t\t\t# [kPa]\n",
- "Y_1 = 0.05 \t\t\t\t\t\t# [kg vapor/kg dry air]\n",
- "\n",
- "\n",
- "C_pa = 1.256 \t\t\t\t\t\t# [kJ/kg.K]\n",
- "C_pb = 1.005 \t\t\t\t\t\t# [kJ/kg.K]\n",
- "\n",
- "C_s1 = C_pb + Y_1*C_pa\n",
- "\n",
- "T_1 = 383.8 \t\t\t\t\t\t# [K]\n",
- "T_c = 591.8 \t\t\t\t\t\t# [K]\n",
- "M_a = 92 \t\t\t\t\t\t# [gram/mole]\n",
- "M_b = 28.97 \t\t\t\t\t\t# [gram/mole]\n",
- "\n",
- "#Calculation\n",
- "lamda_1 = 33.18*1000/92 \t\t\t\t# [Latent heat of vaporization at T_1, \t\t\t\t\t\t\tkJ/kg]\n",
- "import math\n",
- "from scipy.optimize import fsolve\n",
- "\t# Constants of antoine equation\n",
- "A = 13.9320 \n",
- "B = 3057 \t\t\t\t\t\t# [K]\n",
- "C = -55.52 \t\t\t\t\t\t# [K]\n",
- "\n",
- "print \"\\nSolution 8.6 (a)\"\n",
- "\n",
- "\t# Solution (a)\n",
- "\n",
- "def f12(T_as):\n",
- " return(T_as - T_G1 + ((math.exp(13.9320 - (3057/(T_as - 55.52)))/(P_total - (math.exp(13.9320 - (3057/(T_as - 55.52))))))*(M_a/M_b) - Y_1)*(lamda_1*((1-T_as/T_c)/(1-T_1/T_c))**0.38/C_s1))\n",
- "T_as = fsolve(f12,273) \t\t\t\t# [K] \n",
- "print\"Adiabatic Saturation Temperature is\",round(T_as),\"K\"\n",
- "\n",
- "\t# Now using equation 8.2\n",
- " \n",
- "P_a = math.exp(13.9320-(3057/(T_as-55.52))) \t\t# [kPa]\n",
- "Y_as = P_a/(P_total-P_a)*M_a/M_b \t\t\t# [kg vapor/kg dry air]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"Absolute humidity is\",round(Y_as,3),\"kg vapor/kg dry air\"\n",
- "\n",
- "\n",
- "\n",
- "print\"\\nSolution 8.6 (b)\"\n",
- "\n",
- "# Solution (b)\n",
- "\n",
- "# Thermodynamic properties of mixture of toluene and air\n",
- "row = 1.06 \t\t\t\t\t\t# [kg/cubic m]\n",
- "u = 19.5*10**-6 \t\t\t\t\t# [P]\n",
- "Pr = 0.7 \n",
- "Dab = 0.1 \t\t\t\t\t\t#[From Wilke-Lee equation, square cm/s]\n",
- "Sc = u/(row*Dab*10**-4) \n",
- "\n",
- "# Using equation 8.16\n",
- "\n",
- "A_1 = C_s1*(Sc/Pr)**0.567 # [kJ/kg.K]\n",
- "\t# here A_1 = hg/ky, psychrometric ratio\n",
- "\n",
- "\t# Using equation 8.15\n",
- "\t# T_w = T_G1 - (Y_w-Y_1)*lamda_w/(hg/ky)\n",
- "\t# where lamda_w = lamda_1*((1-T_w/T_c)/(1-T_1/T_c))**.38\n",
- "\t# Y_w = P_a/(P_total-P_a)*M_a/M_b\n",
- "\t# P_a = math.exp(A-B/(T+c))\n",
- "\n",
- "def f15(T_w):\n",
- " return(T_w - T_G1 + ((math.exp(13.9320 - (3057/(T_w - 55.52)))/(P_total - (math.exp(13.9320 - (3057/(T_w - 55.52))))))*(M_a/M_b) - Y_1)*(lamda_1*((1-T_w/T_c)/(1-T_1/T_c))**.38/A_1)) \n",
- "T_w = fsolve(f15,273) # [K]\n",
- "print\"Wet bulb Temperature is\",round(T_w),\" K\\n\"\n",
- "\n",
- "# Now using equation 8.2\n",
- " \n",
- "P_a = math.exp(13.9320-(3057/(T_w-55.52))) \t\t# [kPa]\n",
- "Y_w = P_a/(P_total-P_a)*M_a/M_b \t\t\t# [kg vapor/kg dry air]\n",
- "\n",
- "print\"Absolute humidity is\",round(Y_w,3),\"kg vapor/kg dry air\\n\"\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "\n",
- "Solution 8.6 (a)\n",
- "Adiabatic Saturation Temperature is 300.0 K\n",
- "Absolute humidity is 0.136 kg vapor/kg dry air\n",
- "\n",
- "Solution 8.6 (b)\n",
- "Wet bulb Temperature is 305.0 K\n",
- "\n",
- "Absolute humidity is 0.177 kg vapor/kg dry air\n",
- "\n"
- ]
- }
- ],
- "prompt_number": 6
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 8.7,Page number:493"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 8.7\n",
- "# solution\n",
- "\n",
- "L_min = 2.27 # [kg/square m.s]\n",
- "G_min = 2 # [kg/square m.s]\n",
- "L2_prime = 15 # [kg/s]\n",
- "Templ2 = 318 # [K]\n",
- "Tempg1 = 303 # [Entering air dry bulb, K]\n",
- "Tempw1 = 297 # [ Entering air wet bulb, K]\n",
- "Kya = 0.90 # [kg/cubic m.s]\n",
- "\n",
- "import math\n",
- "from pylab import *\n",
- "from scipy.optimize import fsolve\n",
- "from numpy import*\n",
- "\n",
- "H1_prime = 72.5 # [kJ/kg dry air]\n",
- "Y1_prime = 0.0190 # [kg water/kg dry air]\n",
- "Templ1 = 302 # [K]\n",
- "Cal = 4.187 # [kJ/kg]\n",
- "\n",
- "# Equilibrium Data:\n",
- "# Data = [Temp.(K),H_star(kJ/kg)]\n",
- "Data_star =matrix([[302,100],[305.5,114],[308,129.8],[310.5,147],[313,166.8],[315.5,191],[318,216]]) \n",
- "\n",
- "# The operating line for least slope:\n",
- "H2_star = 210 # [kJ/kg]\n",
- "Data_minSlope =matrix([[Templ1,H1_prime],[Templ2,H2_star]]) \n",
- "def f14(Gmin):\n",
- " return(((L2_prime*Cal)/Gmin)-((H2_star-H1_prime)/(Templ2-Templ1))) \n",
- "Gmin = fsolve(f14,2) # [kg/s]\n",
- "Gs = 1.5*Gmin # [kg/s]\n",
- "\n",
- "# For the Operating Line:\n",
- "def f15(H2):\n",
- " return(((H2-H1_prime)/(Templ2-Templ1))-((L2_prime*Cal)/Gs)) \n",
- "H2 = fsolve(f15,2) # [kJ/kg dry air]\n",
- "Data_opline =matrix([[Templ1,H1_prime],[Templ2,H2]]) \n",
- "\n",
- "\n",
- "a1=plot(Data_star[:,0],Data_star[:,1],label='$Equilibrium line$')\n",
- "a2=plot(Data_minSlope[:,0],Data_minSlope[:,1],label='$Minimum Flow Rate Line$')\n",
- "a3=plot(Data_opline[:,0],Data_opline[:,1],label='$Operating Line$') \n",
- "legend(loc='upper right')\n",
- "title('Operating Diagram')\n",
- "xlabel(\"$Liquid Temperature, K$\") \n",
- "ylabel(\"$Enthalphy Of Air Water vapour, kJ / kg dry air$\") \n",
- "show(a1)\n",
- "show(a2)\n",
- "show(a3)\n",
- "\n",
- "# Tower cross section Area:\n",
- "Al = L2_prime/L_min # [square m]\n",
- "Ag = Gs/G_min # [square m]\n",
- "A = min(Al,Ag) # [square m]\n",
- "print\"Cross sectional is\",round(A[0],2),\" square m\\n\"\n",
- "\n",
- "# Data from operating line:\n",
- "# Data1 = [Temp.(K),H_prime(kJ/kg)]\n",
- "Data1 =matrix([[302,72.5],[305.5,92],[308,106.5],[310.5,121],[313,135.5],[315.5,149.5],[318,164.2]]) \n",
- "\n",
- "# Driving Force:\n",
- "Data2 = zeros((7,2)) \n",
- "# Data2 = [Temp[K],driving Force]\n",
- "for i in range(0,7):\n",
- " Data2[i][0] = Data1[i,0] \n",
- " Data2[i,1] = 1/(Data_star[i,1]-Data1[i,1]) \n",
- "\n",
- "\n",
- "# The data for operating line as abcissa is plotted against driving force \n",
- "Area = 3.28 \n",
- "# From Eqn. 7.54\n",
- "def f16(Z):\n",
- " return(Area-(Kya*Z/G_min)) \n",
- "Z = fsolve(f16,2) \n",
- "print\"The height of tower is\",round(Z[0],2)\n",
- "NtoG = 3.28 \n",
- "HtoG = G_min/Kya # [m]\n",
- "\n",
- "# Make up water\n",
- "# Assuming the outlet air is essentially saturated:\n",
- "Y2_prime = 0.048 # [kg water/kg dry air]\n",
- "H2 = 164.2 # [kJ/kg dry air]\n",
- "# This corresponds to an exit-air temperature of 312.8 K\n",
- "\n",
- "# Approximate rate of evaporation \n",
- "R = Gs*(Y2_prime-Y1_prime) \n",
- "print\"Rate of evaporation is\",round(R[0],3),\"kg/s\\n\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "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\ngtOnT1OzZk0iIyNV942KiqJmzZqvPc+LCUSS8kpEhDINd9066NtXmU318k7e3je8+frw11QrWw0f\nFx8aV2382nNJbxAVpVyS8vKCkiXho4+Ua4NVqmg7siLn5S/Xs2bNyvG51E4gDRo0oG3btlhYWJCe\nnk5oaCg9e/bMcQAAVlZWxMbGqn6vW7cuISEhVKhQgT59+uDs7MyECROIjo7m2rVr2NjY5Ko9ScqO\nc+eUgfHDh5WZVf/8o9QQelF4fDjfeH/D5fuXWdBlAX3q95HjHNmVkgJ79ii9jaAgGDIENm1Sunfy\nNSwU1J7K1KxZM9avX0+TJk24c+cOX331ldqNOjk50bp1a8LDw6lVqxZeXl5Zbn/xH6ClpSWOjo5Y\nWlrSvXt3PDw85D9QSWOEUCqVdu6sVClt3hxu3oS5c7Mmj8RniUw4PIHWq1rTrnY7Ln12ib4N+sr3\nZnacPw9ffqms2fjjD2UPqujo//aokq9hoZHtrUzmzJlDs2bNiIqKYvTo0YCyG29SUhIODg4aDTI7\n5FYmUm6kpSnjtfPnKzNFJ00CJyco/tLYd3pmOivPrmSm70z61O/Djw4/UrVsVe0EXZjEx8PGjUpv\nIyEBRo5U/vvfzt6S9uTmszPbCeTy5cscP36cVatWUaNGDapVq4aNjQ3R0dEFYuxBJhApJ5KSlMHw\nRYuU2aGTJkH37q//Enz05lG+Pvw1FUpVYHG3xTStJlc4v1VGBvj4KOMahw9Dz57K9FsHB6VYk1Qg\n5EsCee7QoUN069aNe/fuERwcTI0aNWjRokWOGs9LMoFI6rh3D379FVasUCb6TJqkXD15nesPrzPR\neyKhsaH80uUX+jfoLy9Vvc3168oGhmvWQPXqMGqUsm+9kSyGVRDlaz2QqKgoAgMDqVChAhUqVODm\nzZs5aliStOHqVRgzRqkflJio1BvfuvX1yePRs0dM8p6E7UpbbI1tCfs8jAENB8jk8Tr//qskDHt7\naN0anj6FAweUwfFPP5XJo4hSexZWXFwcfn5+LF26lCdPnmBmZsbgwYM1EZsk5ZlTp5RZoadOwWef\nKYmk8huWaGRkZrDq3Cp+OP4DPS16cvGzi1QrK8uavkIIZe8WT0/Yvh3atIGvvlIuVb08eCQVSWon\nEGNjY9UeVqmpqezZsyfPg5KkvJCZCX/9pSSOe/dgwgRlHLd06Tc/xjfCl/GHxlOuRDkODDtA8+rN\n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\ny/8DTPMaHFV/PpQAAAAASUVORK5CYII=\n",
- "text": [
- "<matplotlib.figure.Figure at 0x7e784a8>"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Cross sectional is 5.48 square m\n",
- "\n",
- "The height of tower is 7.29\n",
- "Rate of evaporation is 0.318 kg/s\n",
- "\n"
- ]
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 8.8,Page number:495"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 8.8\n",
- "#Water Cooling Using Air: Numerical Solution\n",
- "\n",
- "# solution (a)\n",
- "print\"Solution8.8 (a)\"\n",
- "\n",
- "#Variable declaration\n",
- "\t# a - water vapor b - air\n",
- "\n",
- "T_L2 = 314 \t\t\t\t# [inlet water temperature, K]\n",
- "T_L1 = 303 \t\t\t\t# [outlet water temperature, K]\n",
- "T_d = 306 \t\t\t\t# [dry bulb temperature ,K]\n",
- "T_w1 = 298 \t\t\t\t# [wet bulb temperature, K]\n",
- "Z = 3 \t\t \t\t\t# [packed tower depth, m]\n",
- "G_x = 3 \t\t\t\t# [mass velocity, kg/square m.s]\n",
- "G_s =2.7 \t\t\t\t# [mass velocity, kg/square m.s]\n",
- "\n",
- "import math\n",
- "from numpy import *\n",
- "from pylab import *\n",
- "T_o = 273 \t\t\t\t# [reference temperature, K]\n",
- "C_al = 4.187 \t\t\t\t# [kJ/kg.K]\n",
- "C_pb = 1.005 \t\t\t\t# [kJ/kg.K]\n",
- "C_pa = 1.884 \t\t\t\t# [kJ/kg.K]\n",
- "P_total = 101.325 \t\t\t# [kPa]\n",
- "lamda_0 = 2502.3 \t\t\t# [kJ/kg]\n",
- "M_a = 18.02 \t\t\t\t# [gram/mole]\n",
- "M_b = 28.97 \t\t\t\t# [gram/mole]\n",
- "\n",
- "\t# Equilibrium Data:\n",
- "\t# Data = [Temp.(K),H_eqm(kJ/kg)],[H_eqm - Equilibrium gas enthalpy]\n",
- "Data_eqm =matrix([[273,9.48],[283,29.36],[293,57.8],[303,99.75],[313,166.79],[323,275.58],[333,461.5]]) \n",
- "\n",
- "\n",
- "a1=plot(Data_eqm[:,0],Data_eqm[:,1],label='$Equilibrium line$') \n",
- "\n",
- "legend(loc='upper right') \n",
- "xlabel(\"Liquid Temperature, K\") \n",
- "ylabel(\"Enthalphy Of Air Water vapour, kJ / kg dry air\") \n",
- "\n",
- "P_a = math.exp(16.3872-(3885.7/(T_w1-42.98))) \t\t\t\t# [kPa]\n",
- "Y_m1 = P_a/(P_total-P_a)*(M_a/M_b) \t\t\t\t\t# [kg water/kg dry air]\n",
- "H_g1 = C_pb*(T_w1-T_o) + Y_m1*(C_pa*(T_w1-T_o)+lamda_0) \t\t# [Enthalpy of saturated \t\t\t\t\t\t\t\t\tmixture, kJ/kg \t\t\t\t\t\t\t\t\tdry air]\n",
- "\n",
- "\t# From overall energy balance\n",
- "H_g2 = H_g1 + G_x*C_al*(T_L2-T_L1)/G_s \t\t\t\t# [Enthalpy of exit air, \t\t\t\t\t\t\t\t\tkJ/kg]\n",
- "\n",
- "\t\t# For calculation of mass transfer unit, Ntog\n",
- "\t\t# Data1 = [T_L1 H_g1,.....,T_L2 H_g2]\n",
- "\n",
- "deltaT = (T_L2-T_L1)/9 \n",
- "\n",
- "\t# Data for enthalpy of exit air at different temperature varying from T_L1 to T_L2, \t\t\toperating line\n",
- "Data1=matrix([[303,76.17],[304.22,81.85],[305.44,87.53],[306.67,93.22],[307.89,98.91],[309.11,104.59],[310.33,110.28],[311.56,115.96],[312.78,121.65],[314,127.35]]) \n",
- "\n",
- "\t# Data of equilibrium gas enthalpy at different temperature varying from T_L1 to T_L2 \t\tfrom the above equilibrium graph \n",
- "\n",
- "Data2=matrix([[303,100],[304.22,107.93],[305.44,116.12],[306.67,124.35],[307.89,132.54],[309.11,140.71],[310.33,148.89],[311.56,157.14],[312.78,165.31],[314,177.67]]) \n",
- "\n",
- "\t# Driving force \n",
- "Data3 = zeros((10,3)) \n",
- "\t# Data3 =[Equilibrium gas enthalpy, driving force]\n",
- "for i in range(0,10):\n",
- " Data3[i][0] = Data1[i,1] \n",
- " Data3[i][1] = 1/(Data2[i,1]-Data1[i,1]) \n",
- "\n",
- "\n",
- "\t# The data for Equilibrium gas enthalpy as abcissa is plotted against driving force\n",
- "Area = 1.642 \n",
- "N_tog = 1.642 \n",
- "H_tog = Z/N_tog \t\t\t\t# [m]\n",
- "\n",
- "\t# Overall volumetric mass-transfer coefficient, K_ya\n",
- "K_ya = G_s/H_tog \n",
- "print\"Overall volumetric mass-transfer coefficient is\",K_ya,\"kg/cubic m.s\\n\\n\" \n",
- "\n",
- "print\"\\nSolution (b)\"\n",
- "#Illustration 8.8 (b) \n",
- "\n",
- "T_w2 = 288 \t\t\t\t\t# [New entering-air wet-bulb temperature, K]\n",
- "P_a2 = math.exp(16.3872-(3885.7/(T_w2-42.98))) # [kPa]\n",
- "Y_m2 = P_a2/(P_total-P_a2)*(M_a/M_b) \t\t# [kg water/kg dry air]\n",
- "H_g11 = C_pb*(T_w2-T_o) + Y_m2*(C_pa*(T_w2-T_o)+lamda_0) \t# [Enthalpy of saturated mixture, \t\t\t\t\t\t\t\tkJ/kg dry air]\n",
- "\n",
- "\t# the change in water temperature through the tower must remain the same as in part (a), \t\tnamely T_L2b-T_L1b = 11K \n",
- "\t# Since N_tog is a function of both water temperatures(T_L1',T_L2'), this provides the \t\t\tsecond relation needed to calculate the values of T_L2b and T_L1b\n",
- "\t# The two equations are solved simultaneously by trial and error method, from above we \t\tget T_L1'= 297K\n",
- "T_L1b = 297 \t\t\t\t\t# [K]\n",
- "T_L2b = T_L1b + 11 \t\t\t\t#[K]\n",
- "S = T_L1b - T_w2 \t\t\t\t# [wet bulb temperature approach, K]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The outlet water temperature and wet bulb temperature approach is\",T_L1b,\" K and \",S,\" K respectively \"\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Solution8.8 (a)\n",
- "Overall volumetric mass-transfer coefficient is"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- " 1.4778 kg/cubic m.s\n",
- "\n",
- "\n",
- "\n",
- "Solution (b)\n",
- "The outlet water temperature and wet bulb temperature approach is 297 K and 9 K respectively \n"
- ]
- },
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "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\n",
- "text": [
- "<matplotlib.figure.Figure at 0x7cb6240>"
- ]
- }
- ],
- "prompt_number": 8
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/Chapter 9.ipynb b/Beginning_C++_through_Game_Programming/Chapter 9.ipynb
deleted file mode 100755
index d3e5df4a..00000000
--- a/Beginning_C++_through_Game_Programming/Chapter 9.ipynb
+++ /dev/null
@@ -1,759 +0,0 @@
-{
- "metadata": {
- "name": ""
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 9:Membranes,Solid Sorption Agents"
- ]
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 9.1,Page number:508"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 9.1\n",
- "#Liquid Flux in I\u2019ubular Membrane \n",
- "\n",
- "# solution\n",
- "\n",
- "\t# A-solute B-solvent\n",
- "ci_f = 50 \t\t\t\t\t# [feed side concentration, mole/cubic m]\n",
- "ci_p = 15 \t\t\t\t\t# [permeate side concentration, mole/cubic m]\n",
- "t = 2*10**-4 \t\t\t\t\t# [membrane thickness, cm]\n",
- "q_A = 176 \t\t\t\t\t# [permeability, barrer]\n",
- "D = 4*10**-1 \t\t\t\t\t# [tube inside diameter, cm]\n",
- "D_A = 5*10**-5 \t\t\t\t# [diffusuvity, square cm/s]\n",
- "Re = 20000 \t\t\t\t\t# [reynolds number]\n",
- "Sc = 450 \t\t\t\t\t# [Schmidt number]\n",
- "mtc_p = 0.12 \t\t\t\t\t# [square cm/s]\n",
- "\n",
- "#Calculation\n",
- "\n",
- "\t# From equation 9.6, 1 barrer = 8.3*10**-9 square cm/s \n",
- "\t# Therefore \n",
- "q_A = q_A*8.3*10**-9 \t\t\t\t# [square cm/s]\n",
- "Q_A = q_A/t \t\t\t\t\t# [permeance, cm/s]\n",
- "\t# The mass-transfer coefficient on the feed side is from equation (2-75) for turbulent \tflow of a liquid inside a circular pipe:\n",
- "Sh = 0.023*Re**0.83*Sc**(1.0/3.0) \n",
- "\t# Now mass transfer coefficient\n",
- "k_af = Sh*D_A/D \t\t\t\t# [cm/s]\n",
- "\t# Total resistance to mass transfer \n",
- "res_total = (1/k_af)+(1/Q_A)+(1/mtc_p) \t# [s/cm]\n",
- "\t# Transmembrane flux of solute A\n",
- "N_A = (ci_f-ci_p)/(res_total*100) \t\t# [mole/square m.s]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The transmembrane flux of solute A is\",round(N_A,5),\"mole/square m.s\"\n",
- "\n",
- "percent_mem_res = ((1/Q_A)/res_total)*100 \t# [%]\n",
- "print\"Membrane resistance is\",round(percent_mem_res),\"percent of the total\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The transmembrane flux of solute A is 0.00222 mole/square m.s\n",
- "Membrane resistance is 87.0 percent of the total\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 9.2,Page number:511"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "# Illustration 9.2\n",
- "\n",
- "import math\n",
- "from scipy.optimize import fsolve\n",
- "from numpy import *\n",
- "\n",
- "\n",
- "# solution\n",
- "\n",
- "# A-oxygen B-nitrogen\n",
- "t = 0.2*10**-6 # [m]\n",
- "qA = 3.97*10**-13 # [mole/m.s.kPa]\n",
- "qB = 0.76*10**-13 # [mole/m.s.kPa]\n",
- "v = 1 # [Air flow rate at STP, cubic m/s]\n",
- "Pp = 0.1*10**6 # [Pa]\n",
- "R = 8.314 # [cubic m.Pa/mole.K]\n",
- "T = 298 # [K]\n",
- "Pf = 1*10**6 # [Pa]\n",
- "\n",
- "# Using equation 9.14\n",
- "alphaA = qA/qB \n",
- "QA = qA/t # [mole/square m.s.kPa]\n",
- "# molar flow rate\n",
- "nf = v*1000/(22.4) # [mole/s]\n",
- "r = Pp/Pf # [pressure ratio]\n",
- "QB = qB/t # [mole/square m.s.kPa]\n",
- "alphaid = QA/QB \n",
- "xFa = 0.21 \n",
- "xFb = 0.79 \n",
- "\n",
- "# For Q = 0.1\n",
- "Q1 = 0.1\n",
- " # Solution of simultaneous equation\n",
- "def F(e):\n",
- " f1 = e[0] - (e[2]*(1-e[1]))/((e[1]*(1-e[2]))) \n",
- " f2 = e[1] - (xFa - (e[2]*Q1))/(1-Q1) \n",
- " f3 = e[0] - (alphaid*(e[1]*(e[0]-1)+1- (r*e[0])))/(e[1]*(e[0]-1)+1 - r) \n",
- " return(f1,f2,f3)\n",
- "\n",
- "# Initial guess\n",
- "e = [4,0.13,0.4] \n",
- "y = fsolve(F,e) \n",
- "alpha1 = y[0] \n",
- "Xa1 = y[1] \n",
- "Ya1 = y[2] \n",
- "Am1 = Ya1*Q1*nf/(QA*(Xa1*Pf-Ya1*Pp))*1000 # [square m]\n",
- "\n",
- "# For Q = 0.2\n",
- "Q2 = 0.2\n",
- " # Solution of simultaneous equation\n",
- "def F(e):\n",
- " f1 = e[0] - (e[2]*(1-e[1]))/((e[1]*(1-e[2]))) \n",
- " f2 = e[1] - (xFa - (e[2]*Q2))/(1-Q2) \n",
- " f3 = e[0] - (alphaid*(e[1]*(e[0]-1)+1- (r*e[0])))/(e[1]*(e[0]-1)+1 - r) \n",
- " return(f1,f2,f3)\n",
- "\n",
- "# Initial guess\n",
- "e = [4,0.13,0.4] \n",
- "y = fsolve(F,e) \n",
- "alpha2 = y[0] \n",
- "Xa2 = y[1] \n",
- "Ya2 = y[2] \n",
- "Am2 = Ya2*Q2*nf/(QA*(Xa2*Pf-Ya2*Pp))*1000 # [square m]\n",
- "\n",
- "# For Q = 0.9\n",
- "Q9 = 0.9\n",
- " # Solution of simultaneous equation\n",
- "def F(e):\n",
- " f1 = e[0] - (e[2]*(1-e[1]))/((e[1]*(1-e[2]))) \n",
- " f2 = e[1] - (xFa - (e[2]*Q9))/(1-Q9) \n",
- " f3 = e[0] - (alphaid*(e[1]*(e[0]-1)+1- (r*e[0])))/(e[1]*(e[0]-1)+1 - r) \n",
- " return(f1,f2,f3)\n",
- "\n",
- "# Initial guess\n",
- "e = [4,0.13,0.4] \n",
- "y = fsolve(F,e) \n",
- "alpha9 = y[0] \n",
- "Xa9 = y[1] \n",
- "Ya9 = y[2] \n",
- "Am9 = Ya2*Q9*nf/(QA*(Xa9*Pf-Ya9*Pp))*1000 # [square m]\n",
- "\n",
- "# Similarly for Q =0.3......0.9, Xa, Ya, alpha and Am are calculated\n",
- "# Therefore we obtained\n",
- "# Solution = [Q,alpha,Xa,Ya]\n",
- "Solution = zeros((9,4)) \n",
- "Solution =matrix([[0.1,4.112,0.181,0.475],[0.2,4.062,0.156,0.428],[0.3,4.018,0.135,0.385],[0.4,3.98,0.118,0.348],[0.5,3.949,0.105,0.315],[0.6,3.922,0.093,0.288],[0.7,3.9,0.084,0.264],[0.8,3.881,0.077,0.243],[0.9,3.864,0.07,0.226]]) \n",
- "Am =matrix([[8037],[17074],[26963],[37531],[48618],[60099],[71876],[83879],[96056]]) \n",
- "\n",
- "\n",
- "print\"The maximum oxygen content of the permeate (%f percent) occurs with the smallest cut (Q = 0.1).\",round(Ya1*100)\n",
- "print\"The maximum nitrogen content of the retentate (%f percent) occurs at the largest cut (Q = 0.9).\\n\\n\",round((1-Xa9)*100)\n",
- "\n",
- "print\"The membrane area requirements are very large (e.g, Am = 60,100 square m for Q = 0.6) even though the volumetric flow rate of air is relatively small)\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The maximum oxygen content of the permeate (%f percent) occurs with the smallest cut (Q = 0.1). 48.0\n",
- "The maximum nitrogen content of the retentate (%f percent) occurs at the largest cut (Q = 0.9).\n",
- "\n",
- "93.0\n",
- "The membrane area requirements are very large (e.g, Am = 60,100 square m for Q = 0.6) even though the volumetric flow rate of air is relatively small)\n"
- ]
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 9.4,Page number:520"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "\n",
- "# Illustration 9.4\n",
- "# Page: 520\n",
- "\n",
- "\n",
- "# solution\n",
- "#*****Data*****#\n",
- "import math\n",
- "from numpy import *\n",
- "Pexp = array([0.276,1.138,2.413,3.758,5.240,6.274,6.688 ]) # [MPa]\n",
- "V = array([45.5,91.5,113,121,125,126,126 ]) # [cubic cm of CH4/gram carbon]\n",
- "Ma = 16 # [gram/mole]\n",
- "Vstp = 22.4 # [L/mole]\n",
- "q = V*Ma/Vstp # [mg/g]\n",
- "\n",
- "# Linearize data for Langmuir isotherm\n",
- "y = Pexp/q \n",
- "\n",
- "\n",
- "#y = array([0.0030667,0.01264,0.02681,0.0417556,0.0582,0.06971,0.07431 ])\n",
- "\n",
- "\n",
- "\n",
- "a2=plot(Pexp,q, marker='o')\n",
- "\n",
- "xlabel(\"Pexp, MPa\") \n",
- "ylabel(\"y, MPa.mg/g\") \n",
- "\n",
- "# Now qm = 1/(slope of Pexp v/s y curve)\n",
- "# From graph of Pexp v/s y, the slope is \n",
- "s = 0.01022 \n",
- "# And intercept \n",
- "i = 5.4865*10**-3 \n",
- "qm = 1/s # [mg/g]\n",
- "K = 1/(qm*i) # [1/MPa]\n",
- "\n",
- "# Therefore\n",
- "# qlp = K*qm*p/(1+Kp)\n",
- "print\"Data for Langmuir isotherm are K =\",round(K,3),\"MPa**-1 and qm =\",round(qm,2) \n",
- "\n",
- "# Linearize data for Freundlich isotherm\n",
- "# y1 = log(q/(mg/g)) , x1 = log(Pexp/MPa)\n",
- "y1 = numpy.log(q) \n",
- "x1 = numpy.log(Pexp) \n",
- "\n",
- "twiny()\n",
- "twinx()\n",
- "plot(x1,y1, linestyle='--', color='r')\n",
- "plt.xticks(np.arange(min(x1), max(x1)+1, 2))\n",
- "\n",
- "xlabel(\"$log(Pexp/(Mpa))$\") \n",
- "ylabel(\"$log(q/(mg/g))$\") \n",
- "title(' Langmuir and Freundlich isotherms fitted to data')\n",
- "\n",
- "#plt.xlim(0,8)\n",
- "#plt.ylim(20,100)\n",
- "\n",
- "\n",
- "# From graph of log(q) v/s log(Pexp)\n",
- "# slope = 0.31\n",
- "s = 0.31 \n",
- "# and intercept is\n",
- "i = 4 \n",
- "# Therefore n = 1/slope\n",
- "n = 1/s \n",
- "k =math.exp(i) # [(mg CH4/g of carbon.MPa**(-1/n)]\n",
- "print\"Data for Freundlich isotherm are n = \",round(n,2),\"and k =\",round(k,2)\n",
- "\n",
- "# Therefore\n",
- "# qFp = k*(p/1 Mpa)**(1/n)\n",
- "print\"Figure shows a q-p plot of the experimental data and the corresponding predictions of the Langmuir and Freundlich isotherms.\\n It is evident from the plot that in this case, the Langmuir isotherm fits the data significantly better than the Freundlich isotherm.\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Data for Langmuir isotherm are K = 1.863 MPa**-1 and qm = 97.85\n",
- "Data for Freundlich isotherm are n = "
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- " 3.23 and k = 54.6\n",
- "Figure shows a q-p plot of the experimental data and the corresponding predictions of the Langmuir and Freundlich isotherms.\n",
- " It is evident from the plot that in this case, the Langmuir isotherm fits the data significantly better than the Freundlich isotherm.\n"
- ]
- },
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "iVBORw0KGgoAAAANSUhEUgAAAaMAAAEZCAYAAAA6xErnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl4TGf7wPHvJFQSIhsSEaS1x5a0IWgR1RCUUmlQJbRU\nF1XavtWdly5p0Z+lb/uiXmtbQlskYm3FWkVtrSIoIUQskSCRbfL8/jg1FbLLzMkk9+e6cknmnDnn\nPmPmued5zrMYlFIKIYQQQkc2egcghBBCSDISQgihO0lGQgghdCfJSAghhO4kGQkhhNCdJCMhhBC6\nk2RkhbZt20bTpk11O/+wYcN4//33dTt/SXh7e/Pzzz8DMHHiRIYMGQLAmTNncHR0pLARDjExMdSt\nW7fI5+vZsyeLFy8uecD5sLGx4a+//ir145a2r776Cnd3d6pXr05SUhKOjo6cPn3abOe7/f/U3E6f\nPo2NjQ05OTkWOV9FUSGTkbV8oPPTsWNHjh49qtv5DQYDBoMhz20LFizA1tYWR0dH08+YMWMsHOHd\nbo/39t/r1avH9evX872ekoqOjr7nwjEwMJB58+aVUkSWk5WVxeuvv85PP/3EtWvXcHV15fr163h7\newN5f5m5/ctCSRT0/1fcLxKlSc9zW5tKegcgSld2djaVKpn/v7WgmsTDDz/M1q1bC3y+0WjE1ta2\ntMMqEmsZ513aCfJ25nyfXLhwgfT0dJo1a1bk5xgMBqv5fxHmUSFrRvk5efIkjz76KDVq1KBmzZo8\n88wzpKSkmLZ7e3szbdo0WrdujbOzMwMHDiQjI8O0/bPPPsPT0xMvLy++/vrrXDWwYcOG8dJLL9Gz\nZ08cHR3p2LEjFy5c4NVXX8XFxYVmzZpx4MAB07HurL3d/m3yzm9b3t7efPbZZ7Rq1QpHR8c8mw9e\nffVV6tWrh5OTE/7+/mzfvt20beLEiYSGhhIWFkb16tVp0aIFv/32m2n7/v37efDBB6levToDBw4k\nPT29wNcxr0Jl4sSJhISEMGTIEJycnFi4cCEpKSk899xzptfs/fffN8V+Z7PLnU0jgYGBfPDBBzzy\nyCNUr16d7t27c+XKFdP+ixcvpn79+tSoUYOPP/4431jvPG5SUhLDhw+nTp06uLq60q9fv1z7f/75\n57i7u+Pp6cmCBQvyPe7ttZoTJ07QuXNnnJ2dqVmzJgMHDjTtt3PnTtq0aYOzszNt27bll19+AeDd\nd99l27ZtjB49+q7a5caNG2ncuDEuLi6MHj0613n/97//4ePjg6urK8HBwZw5c8a0zcbGhi+//JJG\njRrRpEkTtmzZgpeXF1OmTKFWrVp4enqycuVKoqOjady4MW5uboSHh5uev3v3bvz9/XFycsLDw4PX\nX3/9ruuOjY01JSFnZ2cee+wx07lPnjzJnDlz+Pbbb/nss89wdHSkT58+DB06lDNnztC7d28cHR2Z\nOnUqALt27aJDhw64uLjg6+vLli1bTOc5deoUnTt3pnr16nTr1o3Lly/n+f+QmppKjx49OH/+PI6O\njlSvXp0LFy6QkZHB2LFjqVOnDnXq1GHcuHFkZmbmeYycnBzeeOMNatasSYMGDVizZk2u7fPnz8fH\nx4fq1avToEED5syZU+C5d+/eTfv27XFxccHT05NXXnmFrKysPM9doagKyGAwqJMnT971+IkTJ9Sm\nTZtUZmamunTpkurUqZMaO3asabu3t7cKCAhQCQkJKikpSTVr1kz997//VUoptXbtWuXh4aH+/PNP\nlZaWpgYPHpzrPGFhYapGjRpq3759Kj09XT366KOqfv36avHixSonJ0e99957qkuXLvnGOGzYMPX+\n++8rpZTavHmz8vLyMm2rX7++8vPzU/Hx8So9PT3Pa16yZIlKSkpSRqNRTZs2TXl4eKiMjAyllFIT\nJkxQdnZ2au3atSonJ0e9/fbbql27dkoppTIyMlS9evXU9OnTVXZ2tlqxYoWqXLmyKZY7zZ8/Xz3y\nyCN3PT5hwgRVuXJltWrVKqWUUjdv3lR9+/ZVL7zwgkpLS1MXL15Ubdu2VbNnz1ZKKTVx4kT1zDPP\nmJ5/6tQpZTAYlNFoVEop1blzZ9WwYUN1/PhxdfPmTRUYGKjeeustpZRShw8fVtWqVVPbtm1TGRkZ\n6rXXXlOVKlVSP/30kymWW8e+87g9e/ZUAwcOVMnJySorK0tt3brV9JpXqlRJTZgwQWVnZ6vo6Gjl\n4OCgkpOT83wdAgMD1bx585RSSg0cOFB9/PHHptdzx44dSimlrly5opydndWSJUuU0WhU3333nXJx\ncVFJSUl3HeMWg8GgevfurVJSUtSZM2dUzZo11bp165RSSq1cuVI1bNhQHT16VBmNRvXhhx+qDh06\n5Hput27d1NWrV1V6errpmiZPnqyys7PV3LlzlZubm3r66afVjRs31OHDh5W9vb06ffq0Ukqpdu3a\n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\nSUVORK5CYII=\n",
- "text": [
- "<matplotlib.figure.Figure at 0x7ffd128>"
- ]
- }
- ],
- "prompt_number": 6
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 9.5,Page number:526"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 9.5\n",
- "#Ion-Exchange Equilibrium \n",
- "\n",
- "#Variable declaration\n",
- "\t# A-Na+ B-Cu+2\n",
- "\t# Using the data from Table 9.1\n",
- "KA = 1.98 \n",
- "KB = 3.47 \n",
- "import math\n",
- "from scipy.optimize import fsolve\n",
- "from pylab import *\n",
- "from numpy import *\n",
- "Q = 2.4 \t\t\t\t\t# [eq/L of resin]\n",
- "\t# Charge ratio is 'n'\n",
- "n = 2 \n",
- "C = 0.05 \t\t\t\t\t#[total concentration, eq/L]\n",
- "\t# From equ 9.48\n",
- "KAB = KB/KA \n",
- "\t# From equ 9.47\n",
- "\t# ya*(1-xa)**2/(xa*(1-ya)**2) = KAB*Q/C = T\n",
- "T = KAB*Q/C \n",
- "\t# Substituting values of xA in the range 0.1< xa <1.0, we generate the # \tdistribution curve\n",
- "ya=zeros((20))\n",
- "for i in range(1,20):\n",
- " def f16(ya):\n",
- " return(ya*(1-i*0.05)**2/(i*0.05*(1-ya)**2)- T) \n",
- " ya[i] = fsolve(f16,0.99) \n",
- " \n",
- "xa =[0,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95] \n",
- "\n",
- "a1=plot(xa,ya) \n",
- "ylim(0,1)\n",
- "xlabel(\"$xa,Fraction of Cu+2 in Solution$\") \n",
- "ylabel(\"$ya,Fraction of CuR2 in resin$\") \n",
- "plt.grid()\n",
- "show(a1)\n",
- "print\"The curve is similar in shape to an adsorption isotherm of the very favorable type.\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "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\nRK5CYII=\n",
- "text": [
- "<matplotlib.figure.Figure at 0x8ef8748>"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The curve is similar in shape to an adsorption isotherm of the very favorable type.\n"
- ]
- }
- ],
- "prompt_number": 63
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 9.8,Page number:535"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 9.8\n",
- "#Fixed-Bed Scale-Up Using LUB \n",
- "#Variable declaration\n",
- "\t# From example 9.7 \n",
- "alpha = 0.891 \n",
- "\t# For bed length Z = 1.829\n",
- "Z1 = 1.829 \t\t\t\t\t\t# [m]\n",
- "\n",
- "#Calculation\n",
- "\n",
- "LUB = (1-alpha)*Z1 \t\t\t\t\t# [length of unused bed, m]\n",
- "\t# For this bed length \n",
- "tb1 = 139.7 \t\t\t\t\t\t# [min]\n",
- "\t# If the bed length is increased to Z2 = 3 m\n",
- "Z2 = 3 \t\t\t\t\t\t# [m]\n",
- "\t# New break through time will be given by equation 9.64\n",
- "tb2 = tb1*(Z2/Z1)*(1-LUB/Z2)/(1-LUB/Z1) \t\t# [min]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The new time of breakthrough assuming constant LUB is\",round(tb2),\"minutes\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The new time of breakthrough assuming constant LUB is 240.0 minutes\n"
- ]
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 9.9,Page number:536"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 9.9\n",
- "#Ion-Exchanger Ideal Break Time \n",
- "#Variable declaration\n",
- "import math\n",
- "F = 7 \t\t\t\t\t# [water flow rate, L/s]\n",
- "Z = 3 \t\t\t\t\t# [m]\n",
- "d = 2.6 \t\t\t\t# [m]\n",
- "\n",
- "#Calculations\n",
- "\n",
- "A = math.pi*d**2/4 \t\t\t# [cross sectional area, square m]\n",
- "vo = 0.013 \t\t\t\t# [superficial velocity, m/s]\n",
- "\n",
- "cf = 7*10**-3 \t\t\t\t# [Ca2+ ion concentration, eq/L]\n",
- "qstar_F = 2.9 \t\t\t\t# [cation capacity, eq/kg]\n",
- "rowp = 1.34 \t\t\t\t# [kg/L]\n",
- "e = 0.38 \t\t\t\t# [porosity]\n",
- "\t# From equation 9.66\n",
- "t_star = Z*qstar_F*rowp*(1-e)/(vo*cf*3600) \t\t\t# [hour]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The ideal breakthrough time for the ion exchanger is\",round(t_star),\"hour\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The ideal breakthrough time for the ion exchanger is 22.0 hour\n"
- ]
- }
- ],
- "prompt_number": 6
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 9.11,Page number:542"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 9.11\n",
- "#Dialysis for Sulfuric Acid Purification\n",
- "\n",
- "#Variable declaration\n",
- "mtc = 0.02 \t\t\t\t\t# [mass transfer coefficient, cm/min]\n",
- "p = 0.03 \t\t\t\t\t# [permeance, cm/min]\n",
- "F = 1 \t\t\t\t\t\t# [cubic m/h]\n",
- "W = 1000 \t\t\t\t\t# [water wash rate, kg/h]\n",
- "\t# Density of 25% H2SO4 solution at 298 K is \n",
- "d1 = 1175 \t\t\t\t\t# [kg/cubic m]\n",
- "x = 0.25 \t\t\t\t\t# [fraction of H2SO4 in solution]\n",
- "cF = 294 \t\t\t\t\t# [kg/cubic m]\n",
- "\n",
- "\n",
- "#Calculation\n",
- "\n",
- "\n",
- "K = (1/p+1/mtc)**-1 \t\t\t\t # [overall mass transfer coefficient, cm/min]\n",
- "\n",
- "\t# Flow of H2SO4 in feed\n",
- "F_sul = F*d1*x \t\t\t\t# [kg/h]\n",
- "import math\n",
- "\t\t# For 60% recovery and rest in dialysate\n",
- "yr = 0.60 \n",
- "yd = 0.40 \n",
- "\t\t# Transmembrane flow of acid\n",
- "Ft = F_sul*yr \t\t\t\t\t# [kg/h]\n",
- "\t# From the given water transport number, Transmembrane counterflow of water \n",
- "Fw = Ft*0.8 \t\t\t\t\t# [kg/h]\n",
- "\n",
- "\t# Now inlet and outlet concentration from material balances\n",
- "\t# Flow of acid in dialysate\n",
- "Fad = F_sul*yd \t\t\t\t# [kg/h]\n",
- "\n",
- "\t# Total dialysate flow\n",
- "D = F*d1-Ft+Fw \t\t\t\t# [kg/h]\n",
- "x_aD = Fad/D \t\t\t\t\t# [mass fraction of acid in dialysate]\n",
- "\n",
- "\t# Density of 10.3 wt % aqueous solution of sulfuric acid at 298K is\n",
- "d2 = 1064 \t\t\t\t\t# [kg/cubic m] \n",
- "\n",
- "cR = x_aD*d2 \t\t\t\t\t# [kg/cubic m]\n",
- "\t# Flow of acid in diffusate\n",
- "Fd = Ft \t\t\t\t\t# [kg/h]\n",
- "\t\t# Total Diffusate flow\n",
- "Di = 1000-Fw+Fd \t\t\t\t # [kg/h]\n",
- "x_aDi = Fd/Di \t\t\t\t\t# [mass fraction acid in diffusate]\n",
- "\n",
- "\t# Density of 17 wt % aqueous solution of sulfuric acid at 298 K is\n",
- "d3 = 1114 \t\t\t\t\t# [kg/cubic m]\n",
- "\n",
- "cP = x_aDi*d3 \t\t\t\t\t# [kg/cubic m]\n",
- "\t# At the free end of dialyzer \n",
- "deltaC1 = cF-cP \t\t\t\t# [kg/cubic m]\n",
- "\t# At the dialysate end\t\n",
- "deltaC2 = cR-0 \t\t\t\t# [kg/cubic m]\n",
- "lmdf = (deltaC2-deltaC1)/(math.log(deltaC2/deltaC1)) \t# [math.log-mean driving force, kg/cubic \t\t\t\t\t\t\t\tm]\n",
- "\n",
- "\t# Therefore\n",
- "Am = Fd*100/(K*lmdf*60) \n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The membrane area required is\",round(Am),\"square m\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The membrane area required is 229.0 square m\n"
- ]
- }
- ],
- "prompt_number": 7
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 9.12,Page number:545"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 9.12\n",
- "#Water Desalinization by Reverse Osmosis\n",
- "#Variable declaration\n",
- "\t# A-NaCl\n",
- "vo = 0.05 \t\t\t\t\t# [superficial velocity of water in the shell, \t\t\t\t\t\tm/s]\n",
- "T = 298 \t\t\t\t\t# [K]\n",
- "Pf = 70 \t\t\t\t\t# [bar]\n",
- "Pp = 3 \t\t\t\t\t# [pressure at permeate side, bar]\n",
- "p = 1.1*10**-5 \t\t\t\t# [water permeance, g/square cm.s.bar]\n",
- "R1 = 0.97 \t\t\t\t\t# [salt rejection]\n",
- "R = 8.314 \n",
- "xAf = 0.02 \t\t\t\t\t# [fraction of NaCl in feed side]\n",
- "xAp = 0.0005 \t\t\t\t\t# [fraction of NaCl in permeate side]\n",
- "MA = 58.5 \t\t\t\t\t # [gram/mole]\n",
- "\n",
- "\n",
- "print\"\\nSolution 9.12(a)\" \n",
- "\t# Solution(a)\n",
- "\n",
- "deltaP = Pf-Pp \t\t\t\t# [bar]\n",
- "\t# Density of both feed and permeate is 1 g/cc\n",
- "df = 1000\t\t\t\t\t # [kg/cubic m]\n",
- "dp = df \n",
- "\t# Bulk feed salt concentration \n",
- "csf = xAf*2*1000/MA \t\t\t\t# [kmole/cubic m]\n",
- "\t# Bulk permeate salt concentration\n",
- "csp = xAp*2*1000/MA \t\t\t\t# [kmole/cubic m]\n",
- "\n",
- "\t# From equation 9.76\n",
- "pif = R*T*csf/100 \t\t\t\t# [osmotic pressure at feed side, bar]\n",
- "pip = R*T*csp/100 \t\t\t\t# [osmotic pressure at permeate side, bar]\n",
- "deltapi = pif-pip \t\t\t\t# [bar]\n",
- "\n",
- "Y = deltaP-deltapi \t\t\t\t# [bar]\n",
- "\t# Transmembrane flux of water\n",
- "nH2O = p*Y*10**-3/(df*(10**-4*1/(60*60*24))) \t# [cubic m/square m.day]\n",
- "\n",
- "print\"The transmembrane flux of water is\",round(nH2O,2),\"cubic m/square m.day.\"\n",
- "\n",
- "print\"\\nSolution 9.12(b)\" \n",
- "\t# Solution(b)\n",
- "\n",
- "\t# Properties of water are\n",
- "dw = 1000 \t\t\t\t\t# [kg/cubic m]\n",
- "uw = 0.9*10**-3 \t\t\t\t# [kg/m.s]\n",
- "DA = 1.6*10**-9 \t\t\t\t# [Diffusivity of NaCl in water, square m/s]\n",
- "d = 290*10**-6 \t\t\t\t# [outside diameter of fibres, m]\n",
- "phi = 0.4 \n",
- "\t# For a superficial velocity of 5 cm/sec\n",
- "Re = dw*vo*d/uw \t\t\t\t# [Renoylds number]\n",
- "Sc = uw/(dw*DA) \t\t\t\t# [Schmidt number]\n",
- "Sh = 8.63 \t\t\t\t\t# [Sherwood number]\n",
- "\t# Therefore \n",
- "ks = Sh*DA/d \t\t\t\t\t# [m/s]\n",
- "\t# From equation 9.81\n",
- "\n",
- "t = nH2O*R1/(ks) \n",
- "#Since we have to find the value of 't' PER DAY...therefore we will divide by day\n",
- "#.ie\n",
- "t=t/(24*60*60)\n",
- "\n",
- "#result\n",
- "print\"The concentration polarization factor is\",round(t,3)"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "\n",
- "Solution 9.12(a)\n",
- "The transmembrane flux of water is 0.48 cubic m/square m.day.\n",
- "\n",
- "Solution 9.12(b)\n",
- "The concentration polarization factor is 0.113\n"
- ]
- }
- ],
- "prompt_number": 8
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 9.13,Page number:548"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "#Illustration 9.13\n",
- "# Ultrafiltration of Cheese Whey Proteins \n",
- "#variable declaration\n",
- "import math\n",
- "\t# w-water a-proteins\n",
- "T = 293 \t\t\t\t\t# [K]\n",
- "d = 2 \t\t\t\t\t\t# [diameter of tube, cm]\n",
- "dw = 1 \t\t\t\t\t# [g/cubic cm]\n",
- "uw = 0.01 \t\t\t\t\t# [cP]\n",
- "Da = 4*10**-7 \t\t\t\t\t# [Diffusivity of proteins, square cm/s]\n",
- "vo = 1.5*100 \t\t\t\t\t# [m/s]\n",
- "Qm = 250*10**-3/3600*100 \t\t\t# [water permeance, cm/s.atm]\n",
- "cR = 40 \t\t\t\t\t# [g/L]\n",
- "\n",
- "print\"Solution 9.13(a)\\n\" \n",
- "\t# Solution(a)\n",
- "\n",
- "v = 25*10**-3/3600*100 \t\t\t# [cm/s]\n",
- "\n",
- "Re = d*vo*dw/uw \t\t\t\t# [Renoylds number]\n",
- "Sc = uw/(dw*Da) \t\t\t\t# [Schmidt number]\n",
- "Sh = 0.0048*Re**0.913*Sc**0.346 \t\t# [Sherwood number]\n",
- "ks = Sh*Da/d \n",
- "\t# From equation 9.87\n",
- "cS = cR*math.exp(v/ks) \t\t\t\t# [g/L]\n",
- "\n",
- "\t# From figure 9.12\n",
- "pi1 = 2 \t\t\t\t\t# [osmotic pressure, atm]\n",
- "\t# For 100% rejection deltapi = pi1 because pi2 = 0\n",
- "\t# Therefore\n",
- "deltapi = pi1 \t\t\t\t\t# [atm]\n",
- "\t# From equation 9.83\n",
- "deltaP = deltapi+(v/Qm) \n",
- "\n",
- "print\"The required pressure differential to produce a water transmembrane volume flux of 25 L/square m.h when the membrane is clean is\",deltaP,\"atm\"\n",
- "\n",
- "\n",
- "print\"\\nSolution 9.13(b)\\n\" \n",
- "\t# Solution(b)\n",
- "\n",
- "\t# Membrane permeance is reduced fivefold by fouling\n",
- "Qm = Qm/5 \t\t\t\t\t# [cm/s.atm]\n",
- "\t# Here deltaP remains same\n",
- "\t# Equations 9.83 and 9.87, and the osmotic pressure data of Figure 9.12 must be solved \tsimultaneously by trial and error to calculate new values for these three variables.\n",
- "\t# The results are\n",
- "cS2 = 213 \t\t\t\t\t# [g/L]\n",
- "deltapi2 = 1.63 \t\t\t\t# [atm]\n",
- "v2 = 6.53*10**-4 \t\t\t\t# [cm/s]\n",
- "\n",
- "#Result\n",
- "\n",
- "print\"The water flux if the applied pressure differential remains the same as calculated in part (a) is\",round(v2*1000*10**-2*3600,1),\"L/square m.hr\"\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Solution 9.13(a)\n",
- "\n",
- "The required pressure differential to produce a water transmembrane volume flux of 25 L/square m.h when the membrane is clean is 2.1 atm\n",
- "\n",
- "Solution 9.13(b)\n",
- "\n",
- "The water flux if the applied pressure differential remains the same as calculated in part (a) is 23.5 L/square m.hr\n"
- ]
- }
- ],
- "prompt_number": 9
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/README.txt b/Beginning_C++_through_Game_Programming/README.txt
deleted file mode 100755
index a0639431..00000000
--- a/Beginning_C++_through_Game_Programming/README.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-Contributed By: Jatin Pavagadhi
-Course: mca
-College/Institute/Organization: Indian Institute of Engineering Bombay
-Department/Designation: System Administrator
-Book Title: Beginning C++ through Game Programming
-Author: Michel Dawson
-Publisher: Cengage Learning
-Year of publication: 2010
-Isbn: 1435457420
-Edition: 3rd \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/ch1.ipynb b/Beginning_C++_through_Game_Programming/ch1.ipynb
deleted file mode 100755
index 3986f8e6..00000000
--- a/Beginning_C++_through_Game_Programming/ch1.ipynb
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "metadata": {
- "name": "ch1"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": "Chapter 1 : The way of the program"
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "Example 1 Page no : 7"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 1 page no : 7\n'''\n\nprint \"Hello, world.\" ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "Hello, world.\n"
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "",
- "language": "python",
- "metadata": {},
- "outputs": []
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/ch10.ipynb b/Beginning_C++_through_Game_Programming/ch10.ipynb
deleted file mode 100755
index cd0445e0..00000000
--- a/Beginning_C++_through_Game_Programming/ch10.ipynb
+++ /dev/null
@@ -1,142 +0,0 @@
-{
- "metadata": {
- "name": "ch10"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": "CHAPTER 10. : VECTORS"
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 10.1 page no :103\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 10.1 page no :103\n''' \n\nvalues = [] \nc = int(raw_input())\nwhile(c != -1):\n values.append(c)\n c = int(raw_input())\n\nsize=len(values)\nfor i in range(size):\n print values[i] ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "stream": "stdout",
- "text": "5\n"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "stream": "stdout",
- "text": "4\n"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "stream": "stdout",
- "text": "3\n"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "stream": "stdout",
- "text": "2\n"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "stream": "stdout",
- "text": "-1\n"
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "5\n4\n3\n2\n"
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 10.2 page no :104\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 10.2 page no :104\n'''\nimport random\n\nfor i in range(4):\n x = random.random();\n print x",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "0.16979844903\n0.113100369897\n0.851107623696\n0.0966914962921\n"
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 10.3 page no :105\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 10.3 page no :105\n'''\nimport random\ndef randomVector(n,upperBound):\n vec = []\n for i in range(n):\n vec.append(random.random () * 100 % upperBound)\n return vec\n\ndef printVector(vec):\n for i in range(len(vec)):\n print vec[i] ,\n\nnumValues = 20;\nupperBound = 10;\nvector = randomVector (numValues, upperBound);\nprintVector(vector)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "1.84318995426 8.49475291756 7.92488160107 3.93550646061 0.967457025838 6.72758767668 6.22192058422 8.19279912461 7.4898535715 3.02785494125 2.97556694487 4.70451449621 8.21039455753 2.95832700489 7.02858630112 8.72631899097 5.67567455024 7.48090989023 9.14911759876 9.82069257056\n"
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 10.4 page no: 106\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 10.4 page no: 106\n'''\nimport random\ndef howMany(vec,value):\n count = 0\n for i in range(len(vec)):\n if (vec[i] == value):\n count += 1\n return count\n\ndef randomVector(n,upperBound):\n vec = []\n for i in range(n):\n vec.append(int(random.random () * 100 % upperBound))\n return vec\n \nnumValues = 20;\nupperBound = 10;\nvector = randomVector (numValues, upperBound);\nprint \"value \\t howMany\"\nfor i in range(upperBound):\n print i , '\\t' , howMany(vector, i)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "value \t howMany\n0 \t2\n1 \t2\n2 \t0\n3 \t4\n4 \t3\n5 \t1\n6 \t2\n7 \t1\n8 \t2\n9 \t3\n"
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "",
- "language": "python",
- "metadata": {},
- "outputs": []
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/ch11.ipynb b/Beginning_C++_through_Game_Programming/ch11.ipynb
deleted file mode 100755
index 3f21ca72..00000000
--- a/Beginning_C++_through_Game_Programming/ch11.ipynb
+++ /dev/null
@@ -1,175 +0,0 @@
-{
- "metadata": {
- "name": "ch11"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": "CHAPTER 11 : MEMBER FUNCTIONS"
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 11.1 page no :112\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 11.1 page no :112\n'''\nclass Time:\n def __init__(self,h,m,s):\n self.hour = h\n self.minute = m\n self.second = s\n\n def printTime(self):\n print self.hour , \":\" , self.minute , \":\" , self.second\n print \"Time is \" , self.hour , \" hour \" , self.minute , \" minutes \" , self.second \n\n\nc = Time( 9, 14, 30.0 )\nc.printTime ()",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "9 : 14 : 30.0\nTime is 9 hour 14 minutes 30.0\n"
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 11.2 page no :114\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 11.2 page no :114\n'''\nclass Time:\n def __init__(self,h,m,s):\n self.hour = h\n self.minute = m\n self.second = s\n\n def printTime(self):\n print self.hour , \":\" , self.minute , \":\" , self.second\n print \"Time is \" , self.hour , \" hour \" , self.minute , \" minutes \" , self.second \n\n def increment (self,secs):\n self.second += secs\n while (self.second >= 60.0):\n self.second -= 60.0;\n self.minute += 1;\n\n while (self.minute >= 60):\n self.minute -= 60.0;\n self.hour += 1;\n\nc = Time (9, 14, 30.0)\nc.increment (500.0);\nc.printTime ();",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "9 : 22 : 50.0\nTime is 9 hour 22 minutes 50.0\n"
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 11.3 page no :115\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 11.3 page no :115\n'''\nclass Time:\n def __init__(self,h,m,s):\n self.hour = h\n self.minute = m\n self.second = s\n\n def printTime(self):\n print self.hour , \":\" , self.minute , \":\" , self.second\n print \"Time is \" , self.hour , \" hour \" , self.minute , \" minutes \" , self.second \n\n def convertToSeconds(self):\n minutes = self.hour * 60 + self.minute;\n seconds = minutes * 60 + self.second;\n return seconds;\n\n\nc = Time (9, 14, 30.0)\nprint c.convertToSeconds()",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "33270.0\n"
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 11.4 page no :115\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 11.4 page no :115\n'''\n\n\nclass Time:\n def __init__(self,h,m,s):\n self.hour = h\n self.minute = m\n self.second = s\n\n def printTime(self):\n print self.hour , \":\" , self.minute , \":\" , self.second\n print \"Time is \" , self.hour , \" hour \" , self.minute , \" minutes \" , self.second \n\n def convertToSeconds(self):\n minutes = self.hour * 60 + self.minute;\n seconds = minutes * 60 + self.second;\n return seconds;\n\n def after (self,time2):\n if (self.hour > time2.hour):\n return True;\n if (self.hour < time2.hour): \n return False;\n if (self.minute > time2.minute): \n return True;\n if (self.minute < time2.minute):\n return False;\n if (self.second > time2.second): \n return True;\n return False;\n\nt1 = Time( 11, 59, 3.14159 )\nt2 = Time( 12, 42, 3.234 )\n\nif (t2.after(t1)):\n print \"The bread will be done after it starts.\" ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "The bread will be done after it starts.\n"
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 11.5 page no :116\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 11.5 page no :116\n'''\n\nclass Time:\n def __init__(self,h,m=None,s=None):\n if m==None:\n self.hour = int (secs / 3600.0);\n secs -= self.hour * 3600.0;\n self.minute = int (secs / 60.0); \n secs -= self.minute * 60.0;\n self.second = secs;\n else:\n self.hour = h\n self.minute = m\n self.second = s\n\n def printTime(self):\n print self.hour , \":\" , self.minute , \":\" , self.second\n print \"Time is \" , self.hour , \" hour \" , self.minute , \" minutes \" , self.second \n\nc = Time (9, 14, 30.0)\nc.printTime()",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "9 : 14 : 30.0\nTime is 9 hour 14 minutes 30.0\n"
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 11.6 page no : 117\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 11.6 page no : 117\n'''\nclass Time:\n def __init__(self,h,m,s):\n self.hour = h\n self.minute = m\n self.second = s\n\n def printTime(self):\n print self.hour , \":\" , self.minute , \":\" , self.second\n print \"Time is \" , self.hour , \" hour \" , self.minute , \" minutes \" , self.second \n\nc = Time (9, 14, 30.0)\nc.printTime()",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "9 : 14 : 30.0\nTime is 9 hour 14 minutes 30.0\n"
- }
- ],
- "prompt_number": 6
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 11.7 page no :119\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 11.7 page no :119\n'''\nclass Time:\n def __init__(self,h,m=None,s=None):\n if m==None:\n self.hour = int (secs / 3600.0);\n secs -= self.hour * 3600.0;\n self.minute = int (secs / 60.0); \n secs -= self.minute * 60.0;\n self.second = secs;\n else:\n self.hour = h\n self.minute = m\n self.second = s\n\n def printTime(self):\n print self.hour , \":\" , self.minute , \":\" , self.second\n print \"Time is \" , self.hour , \" hour \" , self.minute , \" minutes \" , self.second \n\n def after (self,time2):\n if (self.hour > time2.hour):\n return True;\n if (self.hour < time2.hour): \n return False;\n if (self.minute > time2.minute): \n return True;\n if (self.minute < time2.minute):\n return False;\n if (self.second > time2.second): \n return True;\n return False;\n\n def convertToSeconds(self):\n minutes = self.hour * 60 + self.minute;\n seconds = minutes * 60 + self.second;\n return seconds;\n\n def increment (self,secs):\n self.second += secs\n while (self.second >= 60.0):\n self.second -= 60.0;\n self.minute += 1;\n\n while (self.minute >= 60):\n self.minute -= 60.0;\n self.hour += 1;\n\n def add(self,t2):\n a = t2.convertToSeconds()\n self.increment(a)\n\nc = Time(9, 14, 30.0)\nc.increment (500.0);\nc.printTime();\nb = Time(3, 35, 0.0);\ncurent = c\nc.add(b)\nd = c\nd.printTime()\nif(d.after(curent)):\n print \"The bread will be done after it starts.\" ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "9 : 22 : 50.0\nTime is 9 hour 22 minutes 50.0\n12 : 57.0 : 50.0\nTime is 12 hour 57.0 minutes 50.0\n"
- }
- ],
- "prompt_number": 7
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "",
- "language": "python",
- "metadata": {},
- "outputs": []
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/ch12.ipynb b/Beginning_C++_through_Game_Programming/ch12.ipynb
deleted file mode 100755
index c78a7ba1..00000000
--- a/Beginning_C++_through_Game_Programming/ch12.ipynb
+++ /dev/null
@@ -1,169 +0,0 @@
-{
- "metadata": {
- "name": "ch12"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": "Chapter 12 : Vectors of Objects"
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 12.1 page no :124\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 12.1 page no :124\n'''\n\nclass Card:\n def __init__(self,s=None,r=None):\n if s==None:\n self.suit = 0\n self.rank = 0\n else:\n self.suit = s; \n self.rank = r;\n\nc = Card (0,3)\n",
- "language": "python",
- "metadata": {},
- "outputs": [],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 12.2 page no : 126\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 12.2 page no : 126\n'''\nclass Card:\n def __init__(self,s=None,r=None):\n if s==None:\n self.suit = 0\n self.rank = 0\n else:\n self.suit = s; \n self.rank = r;\n def print_(self):\n suits = [\"Clubs\",\"Diamonds\",\"Hearts\",\"Spades\"]\n ranks = [\"Ace\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"Jack\",\"Queen\",\"King\"]\n print ranks[self.rank] , \" of \" , suits[self.suit] \n\nc = Card (1, 11)\nc.print_ ();",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "Queen of Diamonds\n"
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 12.3 page no :127\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 12.3 page no :127\n'''\n\nclass Card:\n def __init__(self,s=None,r=None):\n if s==None:\n self.suit = 0\n self.rank = 0\n else:\n self.suit = s; \n self.rank = r;\n def print_(self):\n suits = [\"Clubs\",\"Diamonds\",\"Hearts\",\"Spades\"]\n ranks = [\"Ace\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"Jack\",\"Queen\",\"King\"]\n print ranks[self.rank] , \" of \" , suits[self.suit] \n\n def equals(self,c2):\n return (self.rank == c2.rank and self.suit == c2.suit);\n\nc1 = Card(1, 11);\nc2 =Card(1, 11);\nif (c1.equals(c2)):\n print \"Yup, that's the same card.\" ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "Yup, that's the same card.\n"
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 12.4 page no :129\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 12.4 page no :129\n'''\n\n\nclass Card:\n def __init__(self,s=None,r=None):\n if s==None:\n self.suit = 0\n self.rank = 0\n else:\n self.suit = s; \n self.rank = r;\n def print_(self):\n suits = [\"Clubs\",\"Diamonds\",\"Hearts\",\"Spades\"]\n ranks = [\"Ace\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"Jack\",\"Queen\",\"King\"]\n print ranks[self.rank] , \" of \" , suits[self.suit] \n\n def equals(self,c2):\n return (self.rank == c2.rank and self.suit == c2.suit);\n\n def isGreater(self,c2):\n if (self.suit > c2.suit):\n return True;\n if (selfsuit < c2.suit):\n return False;\n if (self.rank > c2.rank):\n return True;\n if (self.rank < c2.rank):\n return False;\n return False;\n\nc1 = Card(2, 11)\nc2 = Card(1, 11)\nif (c1.isGreater (c2)):\n c1.print_()\n print \"is greater than\" \n c2.print_();",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "Queen of Hearts\nis greater than\nQueen of Diamonds\n"
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 12.5 page no :130\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 12.5 page no :130\n'''\nclass Card:\n def __init__(self,s=None,r=None):\n if s==None:\n self.suit = 0\n self.rank = 0\n else:\n self.suit = s; \n self.rank = r;\n def print_(self):\n suits = [\"Clubs\",\"Diamonds\",\"Hearts\",\"Spades\"]\n ranks = [\"Ace\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"Jack\",\"Queen\",\"King\"]\n print ranks[self.rank] , \" of \" , suits[self.suit] \n\n\ndef printDeck(deck):\n for i in range(len(deck)):\n deck[i].print_()\n\ndeck = []\n\nfor suit in range(3):\n for rank in range(13):\n a = Card(suit,rank)\n deck.append(a)\n\nprintDeck(deck)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "Ace of Clubs\n2 of Clubs\n3 of Clubs\n4 of Clubs\n5 of Clubs\n6 of Clubs\n7 of Clubs\n8 of Clubs\n9 of Clubs\n10 of Clubs\nJack of Clubs\nQueen of Clubs\nKing of Clubs\nAce of Diamonds\n2 of Diamonds\n3 of Diamonds\n4 of Diamonds\n5 of Diamonds\n6 of Diamonds\n7 of Diamonds\n8 of Diamonds\n9 of Diamonds\n10 of Diamonds\nJack of Diamonds\nQueen of Diamonds\nKing of Diamonds\nAce of Hearts\n2 of Hearts\n3 of Hearts\n4 of Hearts\n5 of Hearts\n6 of Hearts\n7 of Hearts\n8 of Hearts\n9 of Hearts\n10 of Hearts\nJack of Hearts\nQueen of Hearts\nKing of Hearts\n"
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 12.6 page no : 131\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 12.6 page no : 131\n'''\nclass Card:\n def __init__(self,s=None,r=None):\n if s==None:\n self.suit = 0\n self.rank = 0\n else:\n self.suit = s; \n self.rank = r;\n def print_(self):\n suits = [\"Clubs\",\"Diamonds\",\"Hearts\",\"Spades\"]\n ranks = [\"Ace\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"Jack\",\"Queen\",\"King\"]\n print ranks[self.rank] , \" of \" , suits[self.suit] \n \n def equals(self,c2):\n return (self.rank == c2.rank and self.suit == c2.suit);\n\n def find(self,deck):\n for i in range(len(deck)):\n if (self.equals(deck[i])):\n return i;\n return -1;\n\ndeck = []\n\nfor suit in range(3):\n for rank in range(13):\n a = Card(suit,rank)\n deck.append(a)\n\nindex = deck[17].find (deck)\nprint \"I found the card at index = \" , index ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "I found the card at index = 17\n"
- }
- ],
- "prompt_number": 6
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 12.7 page no : 133\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 12.7 page no : 133\n'''\n\nclass Card:\n def __init__(self,s=None,r=None):\n if s==None:\n self.suit = 0\n self.rank = 0\n else:\n self.suit = s; \n self.rank = r;\n def print_(self):\n suits = [\"Clubs\",\"Diamonds\",\"Hearts\",\"Spades\"]\n ranks = [\"Ace\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"Jack\",\"Queen\",\"King\"]\n print ranks[self.rank] , \" of \" , suits[self.suit] \n \n def equals(self,c2):\n return (self.rank == c2.rank and self.suit == c2.suit);\n\n def find(self,deck):\n for i in range(len(deck)):\n if (self.equals(deck[i])):\n return i;\n return -1;\n \n def isGreater(self,c2):\n if (self.suit > c2.suit):\n return True;\n if (self.suit < c2.suit):\n return False;\n if (self.rank > c2.rank):\n return True;\n if (self.rank < c2.rank):\n return False;\n return False;\n \ndef findBisect(deck,card,low,high):\n print low , \", \" , high \n if (high < low):\n return -1;\n mid = (high + low) / 2\n if (card.equals(deck[mid])):\n return mid;\n if (deck[mid].isGreater (card)):\n return findBisect (deck, card,low, mid-1);\n else:\n return findBisect (deck,card, mid+1, high)\n\n\ndeck = []\n\nfor suit in range(3):\n for rank in range(13):\n a = Card(suit,rank)\n deck.append(a)\n\nprint findBisect (deck, deck[23], 0, 51)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "0 , 51\n0 , 24\n13 , 24\n19 , 24\n22 , 24\n23\n"
- }
- ],
- "prompt_number": 7
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "",
- "language": "python",
- "metadata": {},
- "outputs": []
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/ch13.ipynb b/Beginning_C++_through_Game_Programming/ch13.ipynb
deleted file mode 100755
index f9a283c6..00000000
--- a/Beginning_C++_through_Game_Programming/ch13.ipynb
+++ /dev/null
@@ -1,121 +0,0 @@
-{
- "metadata": {
- "name": "ch13"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": "Chapter 13 : Objects of Vectors"
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 13.1 page no: 137\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 13.1 page no: 137\n'''\nclass Suit:\n CLUBS = 0\n DIAMOND = 1\n HEARTS = 2\n SPADES = 3\n\nclass Rank: \n ACE=1\n TWO = 2\n THREE = 3\n FOUR =4\n FIVE = 5\n SIX = 6\n SEVEN = 7\n EIGHT = 8\n NINE= 9\n TEN = 10\n JACK = 11 \n QUEEN = 12\n KING =13\n \nclass Card:\n def __init__(self,s=None,r=None):\n if s==None:\n self.suit = 0\n self.rank = 0\n else:\n self.suit = s; \n self.rank = r;\n\n def print_(self):\n suits = [\"Clubs\",\"Diamonds\",\"Hearts\",\"Spades\"]\n ranks = [\"Ace\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"Jack\",\"Queen\",\"King\"]\n print ranks[self.rank] , \" of \" , suits[self.suit] \n\ndeck = []\n\nfor suit in range(Suit.SPADES):\n for rank in range(Rank.KING):\n a = Card(suit,rank)\n deck.append(a)\n \n\nfor i in deck:\n i.print_() ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "Ace of Clubs\n2 of Clubs\n3 of Clubs\n4 of Clubs\n5 of Clubs\n6 of Clubs\n7 of Clubs\n8 of Clubs\n9 of Clubs\n10 of Clubs\nJack of Clubs\nQueen of Clubs\nKing of Clubs\nAce of Diamonds\n2 of Diamonds\n3 of Diamonds\n4 of Diamonds\n5 of Diamonds\n6 of Diamonds\n7 of Diamonds\n8 of Diamonds\n9 of Diamonds\n10 of Diamonds\nJack of Diamonds\nQueen of Diamonds\nKing of Diamonds\nAce of Hearts\n2 of Hearts\n3 of Hearts\n4 of Hearts\n5 of Hearts\n6 of Hearts\n7 of Hearts\n8 of Hearts\n9 of Hearts\n10 of Hearts\nJack of Hearts\nQueen of Hearts\nKing of Hearts\n"
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 13.2 page no : 140\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 13.2 page no : 140\n'''\nclass Suit:\n CLUBS = 0\n DIAMOND = 1\n HEARTS = 2\n SPADES = 3\n\nclass Rank: \n ACE=1\n TWO = 2\n THREE = 3\n FOUR =4\n FIVE = 5\n SIX = 6\n SEVEN = 7\n EIGHT = 8\n NINE= 9\n TEN = 10\n JACK = 11 \n QUEEN = 12\n KING =13\n\nclass Card:\n def __init__(self,s=None,r=None):\n if s==None:\n self.suit = 0\n self.rank = 0\n else:\n self.suit = s; \n self.rank = r;\n\n def print_(self):\n suits = [\"Clubs\",\"Diamonds\",\"Hearts\",\"Spades\"]\n ranks = [\"Ace\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"Jack\",\"Queen\",\"King\"]\n print ranks[self.rank] , \" of \" , suits[self.suit] \n\nclass Deck:\n def __init__(self,n=None):\n self.cards = []\n if n ==None:\n size = 52\n else:\n size = n\n \n for suit in range(Suit.SPADES):\n for rank in range(Rank.KING):\n a = Card(suit,rank)\n self.cards.append(a)\n\n def print_(self):\n for i in self.cards:\n i.print_()\n\nd = Deck(52)\nd.print_()\n",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "Ace of Clubs\n2 of Clubs\n3 of Clubs\n4 of Clubs\n5 of Clubs\n6 of Clubs\n7 of Clubs\n8 of Clubs\n9 of Clubs\n10 of Clubs\nJack of Clubs\nQueen of Clubs\nKing of Clubs\nAce of Diamonds\n2 of Diamonds\n3 of Diamonds\n4 of Diamonds\n5 of Diamonds\n6 of Diamonds\n7 of Diamonds\n8 of Diamonds\n9 of Diamonds\n10 of Diamonds\nJack of Diamonds\nQueen of Diamonds\nKing of Diamonds\nAce of Hearts\n2 of Hearts\n3 of Hearts\n4 of Hearts\n5 of Hearts\n6 of Hearts\n7 of Hearts\n8 of Hearts\n9 of Hearts\n10 of Hearts\nJack of Hearts\nQueen of Hearts\nKing of Hearts\n"
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 13.3 page no : 142\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 13.3 page no : 142\n'''\n\nclass Card:\n def __init__(self,s=None,r=None):\n if s==None:\n self.suit = 0\n self.rank = 0\n else:\n self.suit = s; \n self.rank = r;\n\n def print_(self):\n suits = [\"Clubs\",\"Diamonds\",\"Hearts\",\"Spades\"]\n ranks = [\"Ace\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"Jack\",\"Queen\",\"King\"]\n print ranks[self.rank] , \" of \" , suits[self.suit] \n\n def equals(self,c2):\n return (self.rank == c2.rank and self.suit == c2.suit);\n \n def find(self,deck):\n for i in range(len(deck.cards)):\n if self.equals(deck.cards[i]):\n return i\n return -1;\n\nclass Deck:\n def __init__(self,n=None):\n self.cards = []\n if n ==None:\n size = 52\n else:\n size = n\n \n for suit in range(4):\n for rank in range(13):\n a = Card(suit,rank)\n self.cards.append(a)\n\n def print_(self):\n for i in self.cards:\n i.print_()\n\nd = Deck()\na = Card(1,11)\nprint a.find(d)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "24\n"
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 13.4 page no :144\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 13.4 page no :144\n'''\n\nclass Card:\n def __init__(self,s=None,r=None):\n if s==None:\n self.suit = 0\n self.rank = 0\n else:\n self.suit = s; \n self.rank = r;\n\n def print_(self):\n suits = [\"Clubs\",\"Diamonds\",\"Hearts\",\"Spades\"]\n ranks = [\"Ace\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"Jack\",\"Queen\",\"King\"]\n print ranks[self.rank] , \" of \" , suits[self.suit] \n\n def equals(self,c2):\n return (self.rank == c2.rank and self.suit == c2.suit);\n \n def find(self,deck):\n for i in range(len(deck.cards)):\n if self.equals(deck.cards[i]):\n return i\n return -1;\n\nclass Deck:\n def __init__(self,n=None):\n self.cards = []\n if n ==None:\n size = 52\n else:\n size = n\n return\n \n for suit in range(4):\n for rank in range(13):\n a = Card(suit,rank)\n self.cards.append(a)\n\n def print_(self):\n for i in self.cards:\n i.print_()\n \n def subdeck(self,low,high):\n sub = Deck(high-low+1)\n for i in range(len(sub.cards)):\n sub.cards.append(self.cards[low+i])\n return sub;\n\ndeck = Deck()\nhand1 = deck.subdeck (0, 4);\nhand2 = deck.subdeck (5, 9);\npack = deck.subdeck (10, 51);\n\n",
- "language": "python",
- "metadata": {},
- "outputs": [],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 13.5 page no : 146\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 13.5 page no : 146\n'''\nclass Card:\n def __init__(self,s=None,r=None):\n if s==None:\n self.suit = 0\n self.rank = 0\n else:\n self.suit = s; \n self.rank = r;\n\n def print_(self):\n suits = [\"Clubs\",\"Diamonds\",\"Hearts\",\"Spades\"]\n ranks = [\"Ace\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"Jack\",\"Queen\",\"King\"]\n print ranks[self.rank] , \" of \" , suits[self.suit] \n\n def equals(self,c2):\n return (self.rank == c2.rank and self.suit == c2.suit);\n \n def find(self,deck):\n for i in range(len(deck.cards)):\n if self.equals(deck.cards[i]):\n return i\n return -1;\n\nclass Deck:\n def __init__(self,n=None):\n self.cards = []\n if n ==None:\n size = 52\n else:\n size = n\n return\n \n for suit in range(4):\n for rank in range(13):\n a = Card(suit,rank)\n self.cards.append(a)\n\n def print_(self):\n for i in self.cards:\n i.print_()\n \n def merge(self,d2):\n # create a new deck big enough for all the cards\n result = Deck (len(d1.cards)+ len(d2.cards));\n # use the index i to keep track of where we are in\n # the first deck, and the index j for the second deck\n i = 0;\n j = 0;\n # the index k traverses the result deck\n return result;",
- "language": "python",
- "metadata": {},
- "outputs": [],
- "prompt_number": 5
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "",
- "language": "python",
- "metadata": {},
- "outputs": []
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/ch14.ipynb b/Beginning_C++_through_Game_Programming/ch14.ipynb
deleted file mode 100755
index 124b0855..00000000
--- a/Beginning_C++_through_Game_Programming/ch14.ipynb
+++ /dev/null
@@ -1,130 +0,0 @@
-{
- "metadata": {
- "name": "ch14"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": "Chapter 14 : Classes and invariants"
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 14.1 page no :149\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 14.1 page no :149\n'''\n\nclass Card:\n def __init__(self,s=None,r=None):\n if s==None:\n self.suit = 0\n self.rank = 0\n else:\n self.suit = s; \n self.rank = r;\n\n def getRank (self):\n return self.rank\n \n def getSuit (self):\n return self.suit\n \n def setRank(self,r):\n self.rank = r \n\n def setSuit (self, s):\n self.suit = s",
- "language": "python",
- "metadata": {},
- "outputs": [],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 14.2 page no :151\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 14.2 page no :151\ndefining class \n'''\n\nclass Complex:\n def __init__(self,r=None,i=None):\n if r==None:\n pass\n else:\n self.real = r\n self.imag = i",
- "language": "python",
- "metadata": {},
- "outputs": [],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 14.3 page no : 152\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 14.3 page no : 152\n'''\nimport math\nclass Complex:\n def __init__(self,r=None,i=None):\n if r==None:\n self.real = 0\n self.imag = 0\n self.polar = False\n self.cartesian = False\n else:\n self.real = r\n self.imag = i\n self.cartesian = True\n self.polar = True\n self.mag = 0\n self.theta = 0\n\n def getReal (self):\n if (self.cartesian == False):\n self.calculateCartesian ();\n return self.real;\n \n def getImag(self):\n return self.imag\n\n def calculateCartesian (self):\n self.real = self.mag * math.cos(self.theta);\n self.imag = self.mag * math.sin (self.theta); \n self.cartesian = True;\n\n def printCartesian (self):\n print self.getReal() , \" + \" , self.getImag() , \"i\"\n\n def printPolar(self):\n print self.mag , \" e^ \" , self.theta , \"i\"\n\n\nc1 = Complex(2.0, 3.0);\nc1.printCartesian();\nc1.printPolar();",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "2.0 + 3.0 i\n0 e^ 0 i\n"
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 14.4 page no : 155\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 14.4 page no : 155\n'''\nclass Complex:\n def __init__(self,r=None,i=None):\n if r==None:\n self.real = 0\n self.imag = 0\n self.polar = False\n self.cartesian = False\n else:\n self.real = r\n self.imag = i\n self.cartesian = True\n self.polar = True\n self.mag = 0\n self.theta = 0\n \n def getReal (self):\n if (self.cartesian == False):\n self.calculateCartesian ();\n return self.real;\n \n def getImag(self):\n return self.imag\n\n\n def add(self,b):\n real = self.getReal() + b.getReal();\n imag = self.getImag() + b.getImag();\n s = Complex(real, imag);\n return s\n\n def printCartesian (self):\n print self.getReal() , \" + \" , self.getImag() , \"i\"\n\nc1 = Complex(2.0, 3.0);\nc2 = Complex(3.0, 4.0);\ns = c1.add (c2);\ns.printCartesian();",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "5.0 + 7.0 i\n"
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 14.5 page no :156\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 14.5 page no :156\n'''\nimport math\nclass Complex:\n def __init__(self,r=None,i=None):\n if r==None:\n self.real = 0\n self.imag = 0\n self.polar = False\n self.cartesian = False\n else:\n self.real = r\n self.imag = i\n self.cartesian = True\n self.polar = True\n self.mag = 0\n self.theta = 0\n \n def getReal (self):\n if (self.cartesian == False):\n self.calculateCartesian ();\n return self.real;\n \n def getImag(self):\n return self.imag\n\n def calculateCartesian (self):\n self.real = self.mag * math.cos(self.theta);\n self.imag = self.mag * math.sin (self.theta); \n self.cartesian = True;\n\n\n def printCartesian (self):\n print self.getReal() , \" + \" , self.getImag() , \"i\"\n\n def mult(self,b):\n mag = self.mag * b.mag\n theta = self.theta + b.theta\n product = Complex()\n product.setPolar (mag, theta);\n return product;\n\n def setPolar(self,m,t):\n self.mag = m\n self.theta = t;\n self.cartesian = False\n self.polar = True;\n\n",
- "language": "python",
- "metadata": {},
- "outputs": [],
- "prompt_number": 8
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 14.6 page no :159\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 14.6 page no :159\ndefining class Complex\n'''\n\nclass Complex:\n def __init__(self,r=None,i=None):\n if r==None:\n self.real = 0\n self.imag = 0\n self.polar = False\n self.cartesian = False\n else:\n self.real = r\n self.imag = i\n self.cartesian = True\n self.polar = True\n self.mag = 0\n self.theta = 0\n \n def getReal (self):\n if (self.cartesian == False):\n self.calculateCartesian ();\n return self.real;\n \n def getImag(self):\n return self.imag\n\n def printCartesian (self):\n print self.getReal() , \" + \" , self.getImag() , \"i\"\n\n def mult(self,b):\n mag = self.mag * b.mag\n theta = a.theta + b.theta\n product = Complex()\n product.setPolar (mag, theta);\n return product;\n\n def setPolar(self,m,t):\n self.mag = m\n self.theta = t;\n self.cartesian = False\n self.polar = true;\n",
- "language": "python",
- "metadata": {},
- "outputs": [],
- "prompt_number": 9
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "",
- "language": "python",
- "metadata": {},
- "outputs": []
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/ch15.ipynb b/Beginning_C++_through_Game_Programming/ch15.ipynb
deleted file mode 100755
index cc4b221f..00000000
--- a/Beginning_C++_through_Game_Programming/ch15.ipynb
+++ /dev/null
@@ -1,127 +0,0 @@
-{
- "metadata": {
- "name": "ch15"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": "Chapter 15 : File Input/Output and apmatrixes"
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 15.1 page no : 162\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 15.1 page no : 162\n'''\ntry:\n fileName = \"a.txt\"\n f = open(fileName,\"r\")\nexcept:\n print \"Unable to open the file named \" , fileName;\n import sys\n sys.exit(0)\n\n# reading file line by line\n \nfor i in f.readlines():\n print i\n\nf.close() ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "ename": "SystemExit",
- "evalue": "0",
- "output_type": "pyerr",
- "traceback": [
- "An exception has occurred, use %tb to see the full traceback.\n",
- "\u001b[1;31mSystemExit\u001b[0m\u001b[1;31m:\u001b[0m 0\n"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "Unable to open the file named a.txt\n"
- },
- {
- "output_type": "stream",
- "stream": "stderr",
- "text": "To exit: use 'exit', 'quit', or Ctrl-D.\n"
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 15.2 page no : 163\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 15.2 page no : 163\n'''\n\ntry:\n fileName = \"a.txt\"\n outputFile = \"b.txt\"\n f = open(fileName,\"r\")\n w = open(outputFile,\"w\")\nexcept:\n print \"Unable to open the file named \" , fileName;\n import sys\n sys.exit(0)\n\n# reading file line by line\n \nfor i in f.readlines():\n w.write(i)\n print i\n \nf.close()\nw.close() ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "ename": "SystemExit",
- "evalue": "0",
- "output_type": "pyerr",
- "traceback": [
- "An exception has occurred, use %tb to see the full traceback.\n",
- "\u001b[1;31mSystemExit\u001b[0m\u001b[1;31m:\u001b[0m 0\n"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "Unable to open the file named a.txt\n"
- },
- {
- "output_type": "stream",
- "stream": "stderr",
- "text": "To exit: use 'exit', 'quit', or Ctrl-D.\n"
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 15.3 page no : 167\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 15.3 page no : 167\n'''\n\nclass Set:\n def __init__(self,n):\n self.elements = []\n self.numElements = 0\n\n def getNumElements(self):\n return self.numElements\n\n def getElement(self,i):\n if (i < self.numElements):\n return slef.elements[i];\n else:\n print \"Set index out of range.\" \n import sys\n sys.exit(0)\n\n def find(self,s):\n for i in range(self.numElements):\n if (self.elements[i] == s): \n return i;\n return -1;\n\n def add(self,s):\n # if the element is already in the set, return its index\n index = self.find(s);\n if (index != -1):\n return index;\n # if the apvector is full, double its size\n # add the new elements and return its index\n self.elements.append(s)\n self.numElements += 1\n return self.numElements - 1;\n\ncities= Set (2);\ncity1 = 'ahmedabad'\ncity2 = 'rajkot'\nindex1 = cities.add(city1);\nindex2 = cities.add(city2)\nprint index1, index2",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "0 1\n"
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "",
- "language": "python",
- "metadata": {},
- "outputs": []
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "",
- "language": "python",
- "metadata": {},
- "outputs": []
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/ch2.ipynb b/Beginning_C++_through_Game_Programming/ch2.ipynb
deleted file mode 100755
index b12d669c..00000000
--- a/Beginning_C++_through_Game_Programming/ch2.ipynb
+++ /dev/null
@@ -1,112 +0,0 @@
-{
- "metadata": {
- "name": "ch2"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": "Chapter 2 : Variables and types"
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "Example 2.1 Page no : 11"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 2.1 page no :11\n'''\n\nprint \"Hello, world.\" \nprint \"How are you?\" ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "Hello, world.\nHow are you?\n"
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "Example 2.2 Page no : 11/12"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 2.2 page no : 11/12\n'''\n\nprint \"Goodbye, \";\nprint \"cruel world!\" ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "Goodbye, \ncruel world!\n"
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 2.3 page no : 14\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 2.3 page no : 14\n'''\nhour = 11;\nminute = 59;\ncolon = ':';\nprint \"The current time is \",\nprint hour,colon,minute",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "The current time is 11 : 59\n"
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 2.4 page no : 16\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 2.4 page no : 16\n'''\n\nhour = 11;\nminute = 59;\nprint \"Number of minutes since midnight: \",\nprint hour*60 + minute \nprint \"Fraction of the hour that has passed: \",\nprint minute/60",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "Number of minutes since midnight: 719\nFraction of the hour that has passed: 0\n"
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "",
- "language": "python",
- "metadata": {},
- "outputs": []
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/ch3.ipynb b/Beginning_C++_through_Game_Programming/ch3.ipynb
deleted file mode 100755
index 303271a9..00000000
--- a/Beginning_C++_through_Game_Programming/ch3.ipynb
+++ /dev/null
@@ -1,133 +0,0 @@
-{
- "metadata": {
- "name": "ch3"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": "Chapter 3 : Function"
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 3.1 page no :25"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 3.1 page no :25\n'''\n\ndef newLine ():\n print ''\n\n\nprint \"First Line.\" \nnewLine ()\nprint \"Second Line.\" ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "First Line.\n\nSecond Line.\n"
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 3.2 page no :25"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 3.2 page no :25\n'''\ndef newLine ():\n print ''\n\nprint \"First Line.\" \nnewLine ()\nnewLine ()\nnewLine ()\nprint \"Second Line.\" ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "First Line.\n\n\n\nSecond Line.\n"
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 3.3 page no :26"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 3.3 page no :26\n'''\n\n\ndef newLine ():\n print ''\n\n\ndef threeLine ():\n newLine (); \n newLine ();\n newLine ();\n \nprint \"First Line.\" \nthreeLine()\nprint \"Second Line.\" ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "First Line.\n\n\n\nSecond Line.\n"
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 3.4 page no :28"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "# -*- coding: UTF-8 -*-\n'''\nexample 3.4 page no :28\n'''\n\ndef printTwice (phil):\n print phil , phil\n\n\nprintTwice ('a');\n\n",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "a a\n"
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 3.5 page no :28"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "# -*- coding: UTF-8 -*-\n'''\nexample 3.5 page no :28\n'''\n\n\ndef printTwice (phil):\n print phil , phil\n\nargument = 'b' \nprintTwice (argument);",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "b b\n"
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "",
- "language": "python",
- "metadata": {},
- "outputs": []
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/ch4.ipynb b/Beginning_C++_through_Game_Programming/ch4.ipynb
deleted file mode 100755
index 08fbd2a9..00000000
--- a/Beginning_C++_through_Game_Programming/ch4.ipynb
+++ /dev/null
@@ -1,112 +0,0 @@
-{
- "metadata": {
- "name": "ch4"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": "Chapter 4 : Conditionals and recursion"
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 4.1 page no :34"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 4.1 page no :34\n'''\n\ndef printParity (x):\n if (x%2 == 0):\n print \"x is even\" \n else:\n print \"x is odd\" \n\nprintParity (17)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "x is odd\n"
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 4.2 page no :36"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 4.2 page no :36\n'''\nimport math\n\ndef printLogarithm (x):\n if (x <= 0.0):\n print \"Positive numbers only, please.\" \n return;\n result = math.log(x);\n print \"The log of x is \" , result;\n\nprintLogarithm(-1)\nprintLogarithm(5)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "Positive numbers only, please.\nThe log of x is 1.60943791243\n"
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 4.3 page no : 37"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 4.3 page no : 37\n'''\n\ndef countdown (n):\n if (n == 0):\n print \"Blastoff!\" \n else:\n print n\n countdown (n-1)\n\ncountdown(5)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "5\n4\n3\n2\n1\nBlastoff!\n"
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 4.4\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 4.4\n'''\nimport math\ndef printLogarithm(x):\n if (x <= 0.0):\n print \"Positive numbers only, please.\" << endl;\n return;\n result = math.log(x)\n print \"The log of x is \" , result;\n\ndef countdown (n) :\n if (n == 0):\n print \"Blastoff!\"\n else:\n print n\n countdown (n-1);\n\n\ncountdown (3);\nprintLogarithm(10)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "3\n2\n1\nBlastoff!\nThe log of x is 2.30258509299\n"
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "",
- "language": "python",
- "metadata": {},
- "outputs": []
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/ch5.ipynb b/Beginning_C++_through_Game_Programming/ch5.ipynb
deleted file mode 100755
index a55d763d..00000000
--- a/Beginning_C++_through_Game_Programming/ch5.ipynb
+++ /dev/null
@@ -1,229 +0,0 @@
-{
- "metadata": {
- "name": "ch5"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": "Chapter 5 : Fruitful functions"
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 5.1 page no :41\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 5.1 page no :41\n'''\nimport math\ndef area (radius):\n area = math.pi * radius * radius;\n return area;\n\nprint area(3)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "28.2743338823\n"
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 5.2 page no :42\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 5.2 page no :42\n'''\n\ndef absoluteValue (x):\n if (x < 0):\n return -x\n else:\n return x\n\nprint absoluteValue(-3) \nprint absoluteValue(3)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "3\n3\n"
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 5.3 page no :44\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 5.3 page no :44\n'''\n\ndef distance (x1, y1,x2,y2):\n dx = x2 - x1\n dy = y2 - y1;\n print \"dx is \" , dx\n print \"dy is \" , dy \n return 0.0\n\ndistance(10,10,20,20) ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "dx is 10\ndy is 10\n"
- },
- {
- "metadata": {},
- "output_type": "pyout",
- "prompt_number": 3,
- "text": "0.0"
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 5.4 page no :44\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 5.4 page no :44\n'''\n\ndef distance (x1, y1,x2,y2):\n dx = x2 - x1\n dy = y2 - y1;\n dsquared = dx*dx + dy*dy;\n print \"dsquared is \" , dsquared\n return 0.0;\n\ndistance(10,10,20,20)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "dsquared is 200\n"
- },
- {
- "metadata": {},
- "output_type": "pyout",
- "prompt_number": 4,
- "text": "0.0"
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 5.5 page no :45\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 5.5 page no :45\n'''\nimport math\ndef distance (x1, y1,x2,y2):\n dx = x2 - x1\n dy = y2 - y1;\n dsquared = dx*dx + dy*dy;\n return math.sqrt(dsquared)\n \nprint distance(10,10,20,20)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "14.1421356237\n"
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 5.6 page no :45\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 5.6 page no :45\n'''\n\nimport math\ndef area (radius):\n area = math.pi * radius * radius;\n return area;\n\ndef distance (x1, y1,x2,y2):\n dx = x2 - x1\n dy = y2 - y1;\n dsquared = dx*dx + dy*dy;\n return math.sqrt(dsquared)\n \ndef fred(xc, yc, xp,yp):\n radius = distance (xc, yc, xp, yp);\n result = area (radius);\n return result;\n\nprint fred(10,10,20,20)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "628.318530718\n"
- }
- ],
- "prompt_number": 6
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 5.7 page no :48\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 5.7 page no :48\n'''\ndef isSingleDigit(x):\n if (x >= 0 and x < 10):\n return True\n else:\n return False;\n\nprint isSingleDigit(11)\nprint isSingleDigit(4)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "False\nTrue\n"
- }
- ],
- "prompt_number": 7
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 5.8 page no :51/53\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 5.8 page no :51/53\n'''\n\ndef factorial (n):\n if (n == 0):\n return 1;\n else:\n recurse = factorial (n-1)\n result = n * recurse\n return result;\n\nprint factorial(5)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "120\n"
- }
- ],
- "prompt_number": 8
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 5.9 page no :53\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 5.9 page no :53\n'''\ndef fibonacci (n):\n if (n == 0 or n == 1):\n return 1\n else:\n return fibonacci (n-1) + fibonacci (n-2)\n\nprint fibonacci(5)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "8\n"
- }
- ],
- "prompt_number": 9
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "",
- "language": "python",
- "metadata": {},
- "outputs": []
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/ch6.ipynb b/Beginning_C++_through_Game_Programming/ch6.ipynb
deleted file mode 100755
index 3b13a110..00000000
--- a/Beginning_C++_through_Game_Programming/ch6.ipynb
+++ /dev/null
@@ -1,265 +0,0 @@
-{
- "metadata": {
- "name": "ch6"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": "Chapter 6 : Iteration"
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 6.1 page no :56\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 6.1 page no :56\n'''\n\ndef countdown (n):\n while (n > 0):\n print n\n n = n-1\n print \"Blastoff!\"\n return 0\n \ncountdown(5) ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "5\n4\n3\n2\n1\nBlastoff!\n"
- },
- {
- "metadata": {},
- "output_type": "pyout",
- "prompt_number": 1,
- "text": "0"
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 6.2 page no :57\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 6.2 page no :57\n'''\n\ndef sequence (n):\n while (n != 1):\n print n\n if (n%2 == 0):\n n = n / 2\n else:\n n = n*3 + 1\n \nsequence(10)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "10\n5\n16\n8\n4\n2\n"
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 6.3 page no :58\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 6.3 page no :58\n'''\nimport math\nx = 1.0\nwhile (x < 10.0):\n print x , \"\\t\" , math.log(x)\n x = x + 1.0",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "1.0 \t0.0\n2.0 \t0.69314718056\n3.0 \t1.09861228867\n4.0 \t1.38629436112\n5.0 \t1.60943791243\n6.0 \t1.79175946923\n7.0 \t1.94591014906\n8.0 \t2.07944154168\n9.0 \t2.19722457734\n"
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 6.4 page no :59\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 6.4 page no :59\n'''\nimport math\nx = 1.0\nwhile (x < 10.0):\n print x , \"\\t\" , math.log(x) / math.log(2.0) \n x = x + 1.0\n\n",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "1.0 \t0.0\n2.0 \t1.0\n3.0 \t1.58496250072\n4.0 \t2.0\n5.0 \t2.32192809489\n6.0 \t2.58496250072\n7.0 \t2.80735492206\n8.0 \t3.0\n9.0 \t3.16992500144\n"
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 6.5 page no :59\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 6.5 page no :59\n'''\nimport math\nx = 1.0;\nwhile (x < 100.0):\n print x , \"\\t\" , math.log(x) / math.log(2.0)\n x = x * 2.0",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "1.0 \t0.0\n2.0 \t1.0\n4.0 \t2.0\n8.0 \t3.0\n16.0 \t4.0\n32.0 \t5.0\n64.0 \t6.0\n"
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 6.6 page no: 60\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 6.6 page no: 60\n'''\n\ni = 1;\nwhile (i <= 6):\n print 2*i ,\n i = i + 1;\n",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "2 4 6 8 10 12\n"
- }
- ],
- "prompt_number": 6
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 6.7 page no:60\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 6.7 page no:60\n'''\n\ndef printMultiples (n):\n i = 1\n while (i <= 6):\n print n*i,\n i = i + 1;\n \nprintMultiples(3) ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "3 6 9 12 15 18\n"
- }
- ],
- "prompt_number": 7
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 6.8 page no:61\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 6.8 page no:61\n'''\n\n\ndef printMultiples (n):\n i = 1\n while (i <= 6):\n print n*i,\n i = i + 1;\n print '' \n\ni = 1;\nwhile (i <= 6):\n printMultiples (i);\n i = i + 1;",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "1 2 3 4 5 6 \n2 4 6 8 10 12 \n3 6 9 12 15 18 \n4 8 12 16 20 24 \n5 10 15 20 25 30 \n6 12 18 24 30 36 \n"
- }
- ],
- "prompt_number": 8
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 6.9 page no: 62\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 6.9 page no: 62\n'''\n\ndef printMultiples (n):\n i = 1\n while (i <= 6):\n print n*i,\n i = i + 1;\n print '' \n\ndef printMultTable ():\n i = 1;\n while (i <= 6):\n printMultiples (i)\n i = i + 1\n\nprintMultTable()",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "1 2 3 4 5 6 \n2 4 6 8 10 12 \n3 6 9 12 15 18 \n4 8 12 16 20 24 \n5 10 15 20 25 30 \n6 12 18 24 30 36 \n"
- }
- ],
- "prompt_number": 9
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 6.10 page no :63\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 6.10 page no :63\n'''\n\ndef printMultiples (n):\n i = 1\n while (i <= 6):\n print n*i,\n i = i + 1;\n print '' \n\ndef printMultTable (high):\n i = 1;\n while (i <= high):\n printMultiples (i);\n i = i + 1;\n \nprintMultTable(4) ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "1 2 3 4 5 6 \n2 4 6 8 10 12 \n3 6 9 12 15 18 \n4 8 12 16 20 24 \n"
- }
- ],
- "prompt_number": 10
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 6.11 page no :64\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 6.11 page no :64\n'''\n\ndef printMultiples(n,high):\n i = 1;\n while (i <= high):\n print n*i ,\n i = i + 1;\n print ''\n\ndef printMultTable (high):\n i = 1; \n while (i <= high):\n printMultiples (i, high)\n i = i + 1;\n\nprintMultTable(5) ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "1 2 3 4 5 \n2 4 6 8 10 \n3 6 9 12 15 \n4 8 12 16 20 \n5 10 15 20 25 \n"
- }
- ],
- "prompt_number": 11
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "",
- "language": "python",
- "metadata": {},
- "outputs": []
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/ch7.ipynb b/Beginning_C++_through_Game_Programming/ch7.ipynb
deleted file mode 100755
index e0a37b49..00000000
--- a/Beginning_C++_through_Game_Programming/ch7.ipynb
+++ /dev/null
@@ -1,175 +0,0 @@
-{
- "metadata": {
- "name": "ch7"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": "Chapter 7 : Strings and things"
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 7.1 page no : 69\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 7.1 page no : 69\n'''\n\nfruit = \"banana\"\nindex = 0\nwhile(index < len(fruit)):\n letter = fruit[index]\n print letter\n index = index + 1",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "b\na\nn\na\nn\na\n"
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 7.2 page no :71\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 7.2 page no :71\n'''\n\ndef find(s,c,i):\n while (i<len(s)):\n if (s[i] == c): return i\n i = i + 1\n return -1;\n \nprint find(\"banana\",'b',0)\nprint find(\"banana\",'b',3)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "0\n-1\n"
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 7.3 page no : 71\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 7.3 page no : 71\n'''\n\nfruit = \"banana\"\nlength = len(fruit)\ncount = 0\nindex = 0\nwhile (index < length):\n if (fruit[index] == 'a'):\n count = count + 1\n index = index + 1\nprint count ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "3\n"
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 7.4 page no : 72\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 7.4 page no : 72\n'''\n\nfruit = \"banana\";\nbakedGood = \" nut bread\";\ndessert = fruit + bakedGood;\nprint dessert",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "banana nut bread\n"
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 7.5 page no :73\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 7.5 page no :73\n'''\n\nsuffix = \"ack\"\nletter = 'J'\nwhile (letter <= 'Q'):\n print letter + suffix \n c = ord(letter) + 1\n letter = chr(c)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "Jack\nKack\nLack\nMack\nNack\nOack\nPack\nQack\n"
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 7.6 page no :74\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 7.6 page no :74\n'''\nword = \"Zebra\"\n\nif (word < \"banana\"):\n print \"Your word, \" , word , \", comes before banana.\"\nelif (word > \"banana\"):\n print \"Your word, \" , word , \", comes after banana.\" \nelse:\n print \"Yes, we have no bananas!\" ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "Your word, Zebra , comes before banana.\n"
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "Example 7.7 page no : 75"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "a = 'a'\nprint a.upper()",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "A\n"
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "",
- "language": "python",
- "metadata": {},
- "outputs": []
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/ch8.ipynb b/Beginning_C++_through_Game_Programming/ch8.ipynb
deleted file mode 100755
index 75cf53be..00000000
--- a/Beginning_C++_through_Game_Programming/ch8.ipynb
+++ /dev/null
@@ -1,239 +0,0 @@
-{
- "metadata": {
- "name": "ch8"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": "Chapter 8 : Structures"
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 8.1 page no :77\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 8.1 page no :77\n'''\n\nclass Point:\n def __init__(self):\n self.x = 0.0\n self.y = 0.0\n\n\nb = Point()\nb.x = 3.0\nb.y = 4.0\n\nprint b.x , \", \" , b.y \ndistance = b.x * b.x + b.y * b.y\nprint \"Distance : \" , distance",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "3.0 , 4.0\nDistance : 25.0\n"
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 8.2 page no :79\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 8.2 page no :79\n'''\n\nclass Point:\n def __init__(self,x,y):\n self.x = x\n self.y = y\n\np1 = Point(3.0, 4.0)\np2 = p1\nprint p2.x , \", \" , p2.y ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "3.0 , 4.0\n"
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 8.3 page no : 80\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 8.3 page no : 80\n'''\n\nclass Point:\n def __init__(self,x,y):\n self.x = x\n self.y = y\n\ndef printPoint(p):\n print \"(\" , p.x , \", \" , p.y , \")\" \n \np1 = Point(3.0, 4.0)\nprintPoint(p1)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "( 3.0 , 4.0 )\n"
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 8.4 page no : 80\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 8.4 page no : 80\n'''\n\n\nclass Point:\n def __init__(self,x,y):\n self.x = x\n self.y = y\n\ndef distance(p1,p2):\n dx = p2.x - p1.x\n dy = p2.y - p1.y\n import math\n return math.sqrt(dx*dx + dy*dy)\n \np1 = Point(3.0, 4.0)\np2 = Point(4.0,5.0)\nprint distance(p1,p2)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "1.41421356237\n"
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 8.5 page no : 81\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 8.5 page no : 81\n'''\nclass Point:\n def __init__(self,x,y):\n self.x = x\n self.y = y\n\ndef reflect(p):\n temp = p.x\n p.x = p.y\n p.y = temp\n\ndef printPoint(p):\n print \"(\" , p.x , \", \" , p.y , \")\" \n\nblank = Point(3.0, 4.0)\nprintPoint (blank)\nreflect (blank)\nprintPoint (blank)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "( 3.0 , 4.0 )\n( 4.0 , 3.0 )\n"
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 8.6 page no : 84\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 8.6 page no : 84\n'''\n\nclass Point:\n def __init__(self,x,y):\n self.x = x\n self.y = y\n\nclass Rectangle:\n def __init__(self,p,x,y):\n self.corner = p\n self.width = x\n self.height = y\n\nc = Point(0.0, 0.0)\nb = Rectangle( c, 100.0, 200.0 )\nb.width += 50.0\nprint b.height ",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "200.0\n"
- }
- ],
- "prompt_number": 6
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 8.7 page no : 84\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 8.7 page no : 84\n'''\n\n\nclass Point:\n def __init__(self,x,y):\n self.x = x\n self.y = y\n\nclass Rectangle:\n def __init__(self,p,x,y):\n self.corner = p\n self.width = x\n self.height = y\n\ndef findCenter(box):\n x = box.corner.x + box.width/2\n y = box.corner.y + box.height/2\n result = Point(x, y)\n return result\n\ndef printPoint(p):\n print \"(\" , p.x , \", \" , p.y , \")\" \n\nbox = Rectangle( Point(0.0, 0.0), 100, 200)\ncenter = findCenter (box);\nprintPoint (center);",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "( 50.0 , 100.0 )\n"
- }
- ],
- "prompt_number": 7
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 8.8 page no : 84\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 8.8 page no : 84\n'''\n\ndef swap(x,y):\n temp = x[0]\n x[0] = y[0]\n y[0] = temp\n\ni = [7]\nj = [9]\nswap (i, j)\nprint i[0] , j[0]",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "9 7\n"
- }
- ],
- "prompt_number": 8
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 8.9 page no : 85\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 8.9 page no : 85\n'''\n\n# prompt the user for input86\nprint \"Enter an integer: \",\n# get input\ntry:\n x = int(raw_input())\n print x \n# check and see if the input statement succeeded\nexcept:\n print \"That was not an integer.\" \n\n# print the value we got from the user\n\nprint \"What is your name? \" , \nname = raw_input()\nprint name",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "Enter an integer: "
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "stream": "stdout",
- "text": "a\n"
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": " That was not an integer.\nWhat is your name? "
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "stream": "stdout",
- "text": "abc\n"
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": " abc\n"
- }
- ],
- "prompt_number": 11
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "",
- "language": "python",
- "metadata": {},
- "outputs": []
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/ch9.ipynb b/Beginning_C++_through_Game_Programming/ch9.ipynb
deleted file mode 100755
index 25f763ca..00000000
--- a/Beginning_C++_through_Game_Programming/ch9.ipynb
+++ /dev/null
@@ -1,175 +0,0 @@
-{
- "metadata": {
- "name": "ch9"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": "CHAPTER 9. : MORE STRUCTURES"
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 9.1 page no :90\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 9.1 page no :90\n'''\n\nclass Time:\n def __init__(self,h,m,s):\n self.hour = h\n self.minute = m\n self.second = s\n\ndef printTime(t):\n print t.hour , \":\" , t.minute , \":\" , t.second\n print \"Time is \" , t.hour , \" hour \" , t.minute , \" minutes \" , t.second \n\nt = Time( 11, 59, 3.14159 )\nprintTime(t)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "11 : 59 : 3.14159\nTime is 11 hour 59 minutes 3.14159\n"
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 9.2 page no : 91\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 9.2 page no : 91\n'''\n\nclass Time:\n def __init__(self,h,m,s):\n self.hour = h\n self.minute = m\n self.second = s\n\ndef printTime(t):\n print t.hour , \":\" , t.minute , \":\" , t.second\n print \"Time is \" , t.hour , \" hour \" , t.minute , \" minutes \" , t.second \n\n\ndef after(time1,time2):\n if (time1.hour > time2.hour):\n return True\n if (time1.hour < time2.hour): \n return False;\n if (time1.minute > time2.minute):\n return True\n if (time1.minute < time2.minute): \n return False;\n if (time1.second > time2.second): \n return True\n return False;\n\nt1 = Time( 11, 59, 3.14159 )\nt2 = Time( 12, 42, 3.234 )\nprint after(t1,t2)\n\n",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "False\n"
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 9.3 page no : 91\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 9.3 page no : 91\nincorrect version\n'''\nclass Time:\n def __init__(self,h,m,s):\n self.hour = h\n self.minute = m\n self.second = s\n\ndef printTime(t):\n print t.hour , \":\" , t.minute , \":\" , t.second\n print \"Time is \" , t.hour , \" hour \" , t.minute , \" minutes \" , t.second \n\n\n\ndef addTime(t1,t2):\n hour = t1.hour + t2.hour;\n minute = t1.minute + t2.minute;\n second = t1.second + t2.second;\n return Time(hour,minute,second)\n\nc = Time( 9, 14, 30.0 )\nb = Time ( 3, 35, 0.0 )\ndoneTime = addTime (c, b);\nprintTime(doneTime)",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "12 : 49 : 30.0\nTime is 12 hour 49 minutes 30.0\n"
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 9.4 page no : 92\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 9.4 page no : 92\nincorrect version\n'''\nclass Time:\n def __init__(self,h,m,s):\n self.hour = h\n self.minute = m\n self.second = s\n\ndef printTime(t):\n print t.hour , \":\" , t.minute , \":\" , t.second\n print \"Time is \" , t.hour , \" hour \" , t.minute , \" minutes \" , t.second \n\n\n\ndef addTime(t1,t2):\n hour = t1.hour + t2.hour;\n minute = t1.minute + t2.minute;\n second = t1.second + t2.second;\n if (second >= 60.0):\n second -= 60.0;\n minute += 1\n if (minute >= 60):\n minute -= 60;\n hour += 1;\n return Time(hour,minute,second)\n\n\nc = Time( 9, 14, 30.0 )\nb = Time ( 3, 35, 0.0 )\ndoneTime = addTime (c, b);\nprintTime(doneTime)\n",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "12 : 49 : 30.0\nTime is 12 hour 49 minutes 30.0\n"
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 9.5 page no : 93\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 9.5 page no : 93\nincorrect version\n'''\nclass Time:\n def __init__(self,h,m,s):\n self.hour = h\n self.minute = m\n self.second = s\n\ndef printTime(t):\n print t.hour , \":\" , t.minute , \":\" , t.second\n print \"Time is \" , t.hour , \" hour \" , t.minute , \" minutes \" , t.second \n\ndef increment (time,secs):\n time.second += secs\n if (time.second >= 60.0):\n time.second -= 60.0;\n time.minute += 1;\n if (time.minute >= 60):\n time.minute -= 60;\n time.hour += 1;\n\n\ndef addTime(t1,t2):\n hour = t1.hour + t2.hour;\n minute = t1.minute + t2.minute;\n second = t1.second + t2.second;\n if (second >= 60.0):\n second -= 60.0;\n minute += 1\n if (minute >= 60):\n minute -= 60;\n hour += 1;\n return Time(hour,minute,second)\n\n\nc = Time( 9, 14, 30.0 )\nb = Time ( 3, 35, 0.0 )\ndoneTime = addTime (c, b);\nprintTime(doneTime)\n",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "12 : 49 : 30.0\nTime is 12 hour 49 minutes 30.0\n"
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 9.6 page no : 94\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 9.6 page no : 94\n'''\nclass Time:\n def __init__(self,h,m,s):\n self.hour = h\n self.minute = m\n self.second = s\n\ndef printTime(t):\n print t.hour , \":\" , t.minute , \":\" , t.second\n print \"Time is \" , t.hour , \" hour \" , t.minute , \" minutes \" , t.second \n\ndef addTimeFill(t1,t2,s):\n s.hour = t1.hour + t2.hour;\n s.minute = t1.minute + t2.minute;\n s.second = t1.second + t2.second;\n if (s.second >= 60.0):\n s.second -= 60.0;\n s.minute += 1;\n if (s.minute >= 60):\n s.minute -= 60;\n s.hour += 1;\n\nc = Time( 9, 14, 30.0 )\nb = Time ( 3, 35, 0.0 )\ndoneTime = Time(0,0,0)\naddTimeFill (c, b,doneTime);\nprintTime(doneTime)\n\n\n",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "12 : 49 : 30.0\nTime is 12 hour 49 minutes 30.0\n"
- }
- ],
- "prompt_number": 6
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": "example 9.7 page no : 97\n"
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "'''\nexample 9.7 page no : 97\n'''\nclass Time:\n def __init__(self,h,m,s):\n self.hour = h\n self.minute = m\n self.second = s\n\ndef printTime(t):\n print t.hour , \":\" , t.minute , \":\" , t.second\n print \"Time is \" , t.hour , \" hour \" , t.minute , \" minutes \" , t.second \n\ndef convertToSeconds (t):\n minutes = t.hour * 60 + t.minute;\n seconds = minutes * 60 + t.second;\n return seconds;\n\ndef makeTime(secs):\n hour = int (secs / 3600.0);\n secs -= hour * 3600.0;\n minute = int (secs / 60.0);\n secs -= minute * 60;\n second = secs;\n return Time(hour,minute,second)\n\ndef addTime (t1,t2):\n seconds = convertToSeconds (t1) + convertToSeconds (t2);\n return makeTime(seconds)\n\n\nc = Time( 9, 14, 30.0 )\nb = Time ( 3, 35, 0.0 )\ndoneTime = addTime (c, b);\nprintTime(doneTime)\n\n\n\n",
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": "12 : 49 : 30.0\nTime is 12 hour 49 minutes 30.0\n"
- }
- ],
- "prompt_number": 7
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": "",
- "language": "python",
- "metadata": {},
- "outputs": []
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Beginning_C++_through_Game_Programming/screenshots/fileipop.png b/Beginning_C++_through_Game_Programming/screenshots/fileipop.png
deleted file mode 100755
index 1be931ba..00000000
--- a/Beginning_C++_through_Game_Programming/screenshots/fileipop.png
+++ /dev/null
Binary files differ
diff --git a/Beginning_C++_through_Game_Programming/screenshots/fruitful.png b/Beginning_C++_through_Game_Programming/screenshots/fruitful.png
deleted file mode 100755
index f9d64af9..00000000
--- a/Beginning_C++_through_Game_Programming/screenshots/fruitful.png
+++ /dev/null
Binary files differ
diff --git a/Beginning_C++_through_Game_Programming/screenshots/structures.png b/Beginning_C++_through_Game_Programming/screenshots/structures.png
deleted file mode 100755
index e200e925..00000000
--- a/Beginning_C++_through_Game_Programming/screenshots/structures.png
+++ /dev/null
Binary files differ