diff options
310 files changed, 44545 insertions, 0 deletions
diff --git a/Antennas_and_Wave_Propagation/README.txt b/Antennas_and_Wave_Propagation/README.txt index d97e6a43..d97e6a43 100644..100755 --- a/Antennas_and_Wave_Propagation/README.txt +++ b/Antennas_and_Wave_Propagation/README.txt diff --git a/Antennas_and_Wave_Propagation/chapter11.ipynb b/Antennas_and_Wave_Propagation/chapter11.ipynb index 5d30b647..5d30b647 100644..100755 --- a/Antennas_and_Wave_Propagation/chapter11.ipynb +++ b/Antennas_and_Wave_Propagation/chapter11.ipynb diff --git a/Antennas_and_Wave_Propagation/chapter12.ipynb b/Antennas_and_Wave_Propagation/chapter12.ipynb index 5d140dce..5d140dce 100644..100755 --- a/Antennas_and_Wave_Propagation/chapter12.ipynb +++ b/Antennas_and_Wave_Propagation/chapter12.ipynb diff --git a/Antennas_and_Wave_Propagation/chapter15.ipynb b/Antennas_and_Wave_Propagation/chapter15.ipynb index 223fe26f..223fe26f 100644..100755 --- a/Antennas_and_Wave_Propagation/chapter15.ipynb +++ b/Antennas_and_Wave_Propagation/chapter15.ipynb diff --git a/Antennas_and_Wave_Propagation/chapter16.ipynb b/Antennas_and_Wave_Propagation/chapter16.ipynb index 00fc2d2e..00fc2d2e 100644..100755 --- a/Antennas_and_Wave_Propagation/chapter16.ipynb +++ b/Antennas_and_Wave_Propagation/chapter16.ipynb diff --git a/Antennas_and_Wave_Propagation/chapter17.ipynb b/Antennas_and_Wave_Propagation/chapter17.ipynb index e9d63ef2..e9d63ef2 100644..100755 --- a/Antennas_and_Wave_Propagation/chapter17.ipynb +++ b/Antennas_and_Wave_Propagation/chapter17.ipynb diff --git a/Antennas_and_Wave_Propagation/chapter19.ipynb b/Antennas_and_Wave_Propagation/chapter19.ipynb index e7875d72..e7875d72 100644..100755 --- a/Antennas_and_Wave_Propagation/chapter19.ipynb +++ b/Antennas_and_Wave_Propagation/chapter19.ipynb diff --git a/Antennas_and_Wave_Propagation/chapter2.ipynb b/Antennas_and_Wave_Propagation/chapter2.ipynb index 84f28496..84f28496 100644..100755 --- a/Antennas_and_Wave_Propagation/chapter2.ipynb +++ b/Antennas_and_Wave_Propagation/chapter2.ipynb diff --git a/Antennas_and_Wave_Propagation/chapter21.ipynb b/Antennas_and_Wave_Propagation/chapter21.ipynb index 270e96e9..270e96e9 100644..100755 --- a/Antennas_and_Wave_Propagation/chapter21.ipynb +++ b/Antennas_and_Wave_Propagation/chapter21.ipynb diff --git a/Antennas_and_Wave_Propagation/chapter23.ipynb b/Antennas_and_Wave_Propagation/chapter23.ipynb index 48d55109..48d55109 100644..100755 --- a/Antennas_and_Wave_Propagation/chapter23.ipynb +++ b/Antennas_and_Wave_Propagation/chapter23.ipynb diff --git a/Antennas_and_Wave_Propagation/chapter24.ipynb b/Antennas_and_Wave_Propagation/chapter24.ipynb index a97a053a..a97a053a 100644..100755 --- a/Antennas_and_Wave_Propagation/chapter24.ipynb +++ b/Antennas_and_Wave_Propagation/chapter24.ipynb diff --git a/Antennas_and_Wave_Propagation/chapter25.ipynb b/Antennas_and_Wave_Propagation/chapter25.ipynb index b013f142..b013f142 100644..100755 --- a/Antennas_and_Wave_Propagation/chapter25.ipynb +++ b/Antennas_and_Wave_Propagation/chapter25.ipynb diff --git a/Antennas_and_Wave_Propagation/chapter3.ipynb b/Antennas_and_Wave_Propagation/chapter3.ipynb index 6656b2c8..6656b2c8 100644..100755 --- a/Antennas_and_Wave_Propagation/chapter3.ipynb +++ b/Antennas_and_Wave_Propagation/chapter3.ipynb diff --git a/Antennas_and_Wave_Propagation/chapter4.ipynb b/Antennas_and_Wave_Propagation/chapter4.ipynb index e1fba10d..e1fba10d 100644..100755 --- a/Antennas_and_Wave_Propagation/chapter4.ipynb +++ b/Antennas_and_Wave_Propagation/chapter4.ipynb diff --git a/Antennas_and_Wave_Propagation/chapter5.ipynb b/Antennas_and_Wave_Propagation/chapter5.ipynb index a658e618..a658e618 100644..100755 --- a/Antennas_and_Wave_Propagation/chapter5.ipynb +++ b/Antennas_and_Wave_Propagation/chapter5.ipynb diff --git a/Antennas_and_Wave_Propagation/chapter6.ipynb b/Antennas_and_Wave_Propagation/chapter6.ipynb index 040ba097..040ba097 100644..100755 --- a/Antennas_and_Wave_Propagation/chapter6.ipynb +++ b/Antennas_and_Wave_Propagation/chapter6.ipynb diff --git a/Antennas_and_Wave_Propagation/chapter7.ipynb b/Antennas_and_Wave_Propagation/chapter7.ipynb index 6481c2bd..6481c2bd 100644..100755 --- a/Antennas_and_Wave_Propagation/chapter7.ipynb +++ b/Antennas_and_Wave_Propagation/chapter7.ipynb diff --git a/Antennas_and_Wave_Propagation/chapter8.ipynb b/Antennas_and_Wave_Propagation/chapter8.ipynb index 3c5e8930..3c5e8930 100644..100755 --- a/Antennas_and_Wave_Propagation/chapter8.ipynb +++ b/Antennas_and_Wave_Propagation/chapter8.ipynb diff --git a/Antennas_and_Wave_Propagation/chapter9.ipynb b/Antennas_and_Wave_Propagation/chapter9.ipynb index 72d11c5d..72d11c5d 100644..100755 --- a/Antennas_and_Wave_Propagation/chapter9.ipynb +++ b/Antennas_and_Wave_Propagation/chapter9.ipynb diff --git a/Antennas_and_Wave_Propagation/screenshots/snapshot1.png b/Antennas_and_Wave_Propagation/screenshots/snapshot1.png Binary files differindex b06c2235..b06c2235 100644..100755 --- a/Antennas_and_Wave_Propagation/screenshots/snapshot1.png +++ b/Antennas_and_Wave_Propagation/screenshots/snapshot1.png diff --git a/Antennas_and_Wave_Propagation/screenshots/snapshot2.png b/Antennas_and_Wave_Propagation/screenshots/snapshot2.png Binary files differindex 79b38b7b..79b38b7b 100644..100755 --- a/Antennas_and_Wave_Propagation/screenshots/snapshot2.png +++ b/Antennas_and_Wave_Propagation/screenshots/snapshot2.png diff --git a/Antennas_and_Wave_Propagation/screenshots/snapshot3.png b/Antennas_and_Wave_Propagation/screenshots/snapshot3.png Binary files differindex f88bcebb..f88bcebb 100644..100755 --- a/Antennas_and_Wave_Propagation/screenshots/snapshot3.png +++ b/Antennas_and_Wave_Propagation/screenshots/snapshot3.png diff --git a/Applied_Physics_for_Engineers/Chapter_10.ipynb b/Applied_Physics_for_Engineers/Chapter_10.ipynb new file mode 100755 index 00000000..6c1f1d6b --- /dev/null +++ b/Applied_Physics_for_Engineers/Chapter_10.ipynb @@ -0,0 +1,264 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 10: Electrostatics" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.1, Page 507" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "m = 4e-013; # Mass of the particle, kg\n", + "q = 2.4e-019; # Charge on particle, C\n", + "d = 2e-002; # Distance between the two horizontally charged plates, m\n", + "g = 9.8; #`Acceleration due to gravity, m/sec-square\n", + "\n", + "#Calculations\n", + "E = (m*g)/q ; # Electric field strength, N/C\n", + "V = E*d; # Potential difference between the two charged horizontal plates, V\n", + "\n", + "#Result\n", + "print \"The potential difference between the two horizontally charged plates = %3.1e V\"%V\n", + "#Incorrect answer in textbook" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The potential difference between the two horizontally charged plates = 3.3e+05 V\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.2, Page 507" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable Declaration\n", + "q1 = 1e-009; # Charge at first corner, C\n", + "q2 = 2e-009; # Charge at second corner, C\n", + "q3 = 3e-009; # Charge at third corner, C\n", + "d = 1.; # Side of the equilateral triangle, m\n", + "theta = 30; # Angle at which line joining the observation point to the source charge makes with the side, degrees\n", + "\n", + "#Calculations\n", + "r = (d/2)/cos(theta*pi/180); # Distance of observation point from the charges, m\n", + "#since,1/4*%pi*%eps = 9e+009;\n", + "V = (q1+q2+q3)*(9e+009)/r; # Elecric potential, V\n", + "\n", + "#Result\n", + "print \"The electric potential at the point equidistant from the three corners of the triangle = %4.1f V\"%V\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The electric potential at the point equidistant from the three corners of the triangle = 93.5 V\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.3, Page 508" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable Declaration\n", + "q = 2e-008; \n", + "q1 = q; # Charge at first corner, C\n", + "q2 = -2*q; # Charge at second corner, C\n", + "q3 = 3*q; # Charge at third corner, C\n", + "q4 = 2*q; # Charge at fourth corner, C\n", + "d = 1; # Side of the square, m\n", + "\n", + "#Calculations\n", + "r = round(d*sin(45*pi/180),2); # Distance of centre of the square from each corner, m\n", + "V = (q1+q2+q3+q4)*(9e+009)/r; # Elecric potential at the centre of the square, V \n", + "\n", + "#Result\n", + "print \"The electric potential at the centre of the square = %4d V\"%V\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The electric potential at the centre of the square = 1014 V\n" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.6, Page 511" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "V = 60; # Electric potential of smaller drop, volt\n", + "r = 1; # For simplcity assume radius of each small drop to be unity, unit\n", + "q = 1; # For simplicity assume charge on smaller drop to be unity, C\n", + "k = 1; # For simplicity assume Coulomb's constant to be unity, unit\n", + "\n", + "#Calculations\n", + "R = 2**(1./3)*r; # Radius of bigger drop, unit\n", + "Q = 2*q; # Charge on bigger drop, C\n", + "V_prime = k*Q/R*V; # Electric potential of bigger drop, volt\n", + "\n", + "#Result\n", + "print \"The electric potential of new drop = %4.1f V\"%V_prime\n", + "#Incorrect answer in the textbook" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The electric potential of new drop = 95.2 V\n" + ] + } + ], + "prompt_number": 19 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.7, Page 512" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "m = 9.1e-031; # Mass of the electron, kg\n", + "e = 1.6e-019; # Charge on an electron, C\n", + "g = 9.8; # Acceleration due to gravity, m/sec-square\n", + "\n", + "#Calculations\n", + "# Electric force, F = e*E, where F = m*g or e*E = m*g\n", + "E = m*g/e; # Electric field which would balance the weight of an electron placed in it, N/C\n", + "\n", + "#Result\n", + "print \"The required electric field strength = %3.1e N/C\"%E\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The required electric field strength = 5.6e-11 N/C\n" + ] + } + ], + "prompt_number": 20 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.8, Page 512" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "q1 = 8e-007; # First Charge, C\n", + "q2 = -8e-007; # Second Charge, C\n", + "r = 15e-002; # Distance between the two charges, m\n", + "k = 9e+009; # Coulomb's constant, N-metre-square/coulomb-square\n", + "\n", + "#Calculations&#Results\n", + "E1 = k*q1/r**2; # Electric field strength due to charge 8e-007 C\n", + "print \"The electric field strength at midpoint = %3.1e N/C\"%E1\n", + "E2 = abs(k*q2/r**2); # Electric field strength -8e-007 C \n", + "print \"The electric field strength at midpoint = %3.1e N/C\"%E2\n", + "# Total electric field strength at the mid-point is\n", + "E = E1+E2; # Net electric field at mid point, N/C\n", + "print \"The net electric field strength at midpoint = %3.1e N/C\"%E\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The electric field strength at midpoint = 3.2e+05 N/C\n", + "The electric field strength at midpoint = 3.2e+05 N/C\n", + "The net electric field strength at midpoint = 6.4e+05 N/C\n" + ] + } + ], + "prompt_number": 21 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Applied_Physics_for_Engineers/Chapter_11.ipynb b/Applied_Physics_for_Engineers/Chapter_11.ipynb new file mode 100755 index 00000000..e3b094b0 --- /dev/null +++ b/Applied_Physics_for_Engineers/Chapter_11.ipynb @@ -0,0 +1,302 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 11: Electromagnetic Theory" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.1, Page 559" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "H_0 = 1; # Amplitude off field vector,in A/m\n", + "mu_0 = 12.56e-7; # Permeability,in weber/A-m \n", + "eps = 8.85e-12; # Permittivity in free space,in C/N-meter-square\n", + "\n", + "#Calculations\n", + "# From the relation between the amplitude of the field vector E and vector H of an EM wave in free space \n", + "E_0 = H_0*(sqrt(mu_0/eps));\n", + "\n", + "#Result\n", + "print \"The amplitude of field vector E in free space = %5.1f V/m\"%E_0\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The amplitude of field vector E in free space = 376.7 V/m\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.2, Page 560" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "E_o = 1e+3; # Amplitude field vector in free space,N/C\n", + "c = 3e+8; # Speed of light,in m/s\n", + "\n", + "#Calculations\n", + "# From the relation between the amplitude of the field vector E and vector H of an EM wave in free space E_o = H_o*(sqrt(mu_o/eps))and B_o = mu_o*H_o, we have\n", + "B_o = E_o/c;\n", + "\n", + "#Result\n", + "print \"The maximum value of magnetic induction vector = %4.2e weber/A-m\"%B_o\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The maximum value of magnetic induction vector = 3.33e-06 weber/A-m\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.3, Page 560" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "sigma = 5; # Conductivity of the conducting medium, mho/m\n", + "eps_r = 8.85e-12; # Relative electrical permittivity of medium, F/m\n", + "eps_0 = 1; # Electrical permittivity of free space, F/m\n", + "E0 = 250; # Amplitude of applied electric field, V/m\n", + "\n", + "#Calculations\n", + "J = sigma*E0; # Amplitude of conduction current density, A/metre-square\n", + "J_D = eps_r*eps_0*E0*1e+010; # Amplitude of displacement current density, A/metre-square\n", + "omega = sigma/(eps_0*eps_r); # Frequency at which J = J_D\n", + "\n", + "#Results\n", + "print \"The conduction current density = %3dsin(10^10t) A/metre-quare\"%J\n", + "print \"The displacement current density = %5.3fcos(10^10t) A/metre-quare\"%J_D #incorrect answer in the textbook\n", + "print \"The frequency at which J = J_D is %3.1e Hz\"%omega" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The conduction current density = 1250sin(10^10t) A/metre-quare\n", + "The displacement current density = 22.125cos(10^10t) A/metre-quare\n", + "The frequency at which J = J_D is 5.6e+11 Hz\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.8, Page 565" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "P = 1000; # Energy radiated by the lamp, watt\n", + "r = 2; # Distance from the source at which the electric field intensity is given, m\n", + "\n", + "#Calculations\n", + "S = P/(4*pi*r**2); # Magnitude of Poynting vector, W/metre-square\n", + "# As wave imepdence, Z0 = E/H = 377 and H = E/377, so that with E*H = S we have\n", + "E = 377\n", + "E = sqrt(S*E)\n", + "\n", + "#Result\n", + "print \"The average value of the intensity of electric field of radiation = %4.1f V/m\"%(E)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The average value of the intensity of electric field of radiation = 86.6 V/m\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.9, Page 566" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "S = 2*4.186/60*1e+04; # Solar constant, J/s/metre-square\n", + "# From the poynting vector S = E*H \n", + "C = 377; # Wave Impedence, ohm\n", + "\n", + "#Calculations\n", + "E = sqrt(S*C); # Electric field of radiation, V/m\n", + "H = E/C; # Magnetic field of radiation, A/m\n", + "E0 = E*sqrt(2); # Amplitude of electric field of radiation, V/m \n", + "H0 = H*sqrt(2); # Amplitude of magnetic field of radiation, A/m\n", + "\n", + "#Results\n", + "print \"The amplitude of electric field of radiation = %6.1f V/m\"%E0 #incorrect answer in the textbook\n", + "print \"The amplitude of magnetic field of radiation = %5.3f V/m\"%H0\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The amplitude of electric field of radiation = 1025.7 V/m\n", + "The amplitude of magnetic field of radiation = 2.721 V/m\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.12, Page 569" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "sigma = 3.54e+007; # Electrical conductivity of Al, mho per metre \n", + "mu = 12.56e-007; # Permeability of the medium, weber/A-m\n", + "f = 71.6e+06; # Frequency of the wave, Hz\n", + "\n", + "#Calculations\n", + "omega = 2*pi*f; # Angular frequency of the wave, rad per sec\n", + "delta = sqrt(2/(sigma*mu*omega)); # Skin depth of the EM wave in Al, m\n", + "\n", + "#Result\n", + "print \"The skin depth of an EM-wave in Al = %2.0f micron\"%(delta/1e-06)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The skin depth of an EM-wave in Al = 10 micron\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 11.14, Page 571" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "sigma = 5.; # Electrical conductivity, mho per metre \n", + "mu = 12.56e-007; # Permeability of the medium, weber/A-m\n", + "eps_0 = 8.85e-012; # Electric permittivity of free space, C-square/N-m-square\n", + "\n", + "#Calculations&Results\n", + "eps = 70*eps_0; # Electric permittivity of the medium, C-square/N-m-square\n", + "delta = 2/sigma*sqrt(eps/mu); # The skin depth and attenuation constant of sea water\n", + "print \"The skin depth of an EM-wave in sea water = %6.4f m\"%delta\n", + "Beta = 1/delta; # The attenuation constant of sea water, per metre\n", + "print \"The attenuation constant of the sea water = %6.2f m\"%Beta\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The skin depth of an EM-wave in sea water = 0.0089 m\n", + "The attenuation constant of the sea water = 112.57 m\n" + ] + } + ], + "prompt_number": 8 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Applied_Physics_for_Engineers/Chapter_12.ipynb b/Applied_Physics_for_Engineers/Chapter_12.ipynb new file mode 100755 index 00000000..832a6dfa --- /dev/null +++ b/Applied_Physics_for_Engineers/Chapter_12.ipynb @@ -0,0 +1,439 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 12: Magnetic Properties of Materials" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.1, Page 603" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "H = 5e+3; # Coercivity of a bar magnet, A/m\n", + "L = 0.1; # Length of the solenoid, m\n", + "N = 50; # Turns in solenoid\n", + "n = 500; # Turns/m\n", + "\n", + "#Calculations\n", + "# Using the relation\n", + "I = H/n; # where I is the current through the solenoid\n", + "\n", + "#Result\n", + "print \"The current through the solenoid is = %2d A\"%I\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The current through the solenoid is = 10 A\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.2, Page 603" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "n = 500; # Number of turns wound per metre on the solenoid\n", + "i = 0.5; # Current through the solenoid, A\n", + "V = 1e-03; # Volume of iron rod, per metre cube\n", + "mu_r = 1200; # Relative permeability of the iron\n", + "\n", + "#Calculations&Results\n", + "H = n*i; # Magnetic intensity inside solenoid, ampere-turn per metre\n", + "# As B = mu_o * (H + I) => I = B/mu_o - H \n", + "# But B = mu_o * mu_r * H and solving for I \n", + "I = (mu_r - 1) * H;\n", + "print \"The Intensity of magnetisation inside the solenoid, I = %5.3e A/m\"%I\n", + "M = I * V; # Magnetic moment of the rod, ampere metre square \n", + "print \"The magnetic moment of the rod, M = %3d ampere metre square\"%M\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The Intensity of magnetisation inside the solenoid, I = 2.998e+05 A/m\n", + "The magnetic moment of the rod, M = 299 ampere metre square\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 10.3, Page 604" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "n = 300; # Number of turns wound per metre on the solenoid\n", + "i = 0.5; # Current through the solenoid, A\n", + "V = 1e-03; # Volume of iron rod, per metre cube\n", + "mu_r = 100; # Relative permeability of the iron\n", + "\n", + "#Calculations&Results\n", + "H = n*i; # Magnetic intensity inside solenoid, ampere-turn per metre\n", + "# As, I = (B-mu_o* H)/mu_o\n", + "#But, B= mu * H = mu_r * mu_o * H and I = (mu_r-1)* H\n", + "I = (mu_r-1)*n*i; \n", + "print \"The Intensity of magnetisation inside the solenoid, I = %5.3e A/m\"%I\n", + "l = 0.2; #length of the rod,m\n", + "r = 5e-3; #radius of the rod,m\n", + "V = 1.57e-5; #V=%pi*r^2*l where the volume of the rod having radius r and length,m\n", + "M = I * V ; # Magnetic moment of the rod, ampere metre square\n", + "print \"The magnetic moment of the rod, M = %5.3f ampere metre square\"%M\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The Intensity of magnetisation inside the solenoid, I = 1.485e+04 A/m\n", + "The magnetic moment of the rod, M = 0.233 ampere metre square\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.4, Page 605" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "B = 0.0044; # Magnetic flux density, weber/meter square\n", + "mu_o = 4*pi*1e-07; # Relative permeability of the material, henery/m \n", + "I = 3300; # Magnetization of a magnetic material, A/m\n", + "\n", + "#Calculations&Results\n", + "#B = mu_o*(I+H), solving for H \n", + "H = (B/mu_o)- I; # Magnetizing force ,A/m\n", + "print \"The magnetic intensity,H = %3d A/m\"%H\n", + "# Relation between intensity of magnetization and relative permeability \n", + "mu_r = (I/H)+1; #substitute the value of I and H \n", + "print \"The relative permeability, mu_r = %5.2f\"%mu_r\n", + "\n", + "#Incorrect answers in the textbook" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The magnetic intensity,H = 201 A/m\n", + "The relative permeability, mu_r = 17.38\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.5, Page 605" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "mu_o = 4*pi*1e-07; # Magnetic permeability of the free space, henery/m\n", + "mu_r = 600;\n", + "mu = mu_o*mu_r; # Magnetic permeability of the medium, henery/m\n", + "n = 500; # Turns in a wire\n", + "i = 0.3; # Current flows through a ring,amp\n", + "r = 12e-02/2; # Mean radius of a ring, m\n", + "\n", + "#Calculations&Results\n", + "B = mu_o*mu_r*n*i/(2*pi*r);\n", + "print \"The magnetic flux density = %2.1f weber/meter-square\"%B\n", + "H = B/mu; # Magnetic intensity, ampere-turns/m\n", + "print \"The magnetic intensity = %5.1f ampere-turns/m\"%H\n", + "mui = B -mu_o\n", + "per = mui/i*100\n", + "print \"The percentage magnetic flux density due to electronic loop currents = \",per,\"%\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The magnetic flux density = 0.3 weber/meter-square\n", + "The magnetic intensity = 397.9 ampere-turns/m\n", + "The percentage magnetic flux density due to electronic loop currents = 99.999581121 %\n" + ] + } + ], + "prompt_number": 16 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.6, Page 606" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "M_i = 4.5; # Intial value of total dipole moment of the sample\n", + "H_i = 0.84; # External magnetic field, tesla\n", + "T_i = 4.2; # Cooling temerature of the sample, K\n", + "H_f = 0.98; # External magnetic field, tesla\n", + "T_f = 2.8; # Cooling temerature of the sample, K\n", + "\n", + "#Calculations\n", + "# According to the curie's law, Mf/Mi = (Hf/Hi)*(Ti/Tf)\n", + "M_f = M_i*H_f/H_i*T_i/T_f;\n", + "\n", + "#Result\n", + "print \"The total dipole moment of the sample = %5.3f joule/tesla\"%M_f\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The total dipole moment of the sample = 7.875 joule/tesla\n" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.7, Page 606" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "mu_o = 4*pi*1e-07; # Magnetic permeability of free space, henry/m\n", + "n = 1e+29; # Number density of atoms of iron, per metre cube \n", + "p_m = 1.8e-23; # Magnetic moment of each atom, ampere-metre square \n", + "k_B = 1.38e-23; # Boltzmann constant, J/K\n", + "B = 0.1; # Magnetic flux density, weber per metre square\n", + "T = 300; # Absolute room temperature, K\n", + "l = 10e-02; # Length of the iron bar, m\n", + "a = 1e-04; # Area of cross-section of the iron bar, metre square\n", + "\n", + "#Calculations&Results\n", + "V = l*a; # Voluem of the iron bar, metre cube\n", + "chi = n*p_m**2*mu_o/(3*k_B*T);\n", + "print \"The paramagnetic susceptibility of a material = %5.3e\"%chi\n", + "pm_mean = p_m**2*B/(3*k_B*T); # Mean dipole moment of an iron atom, ampere metre-square\n", + "P_m = n*pm_mean; # Dipole moment of the bar, ampere metre-square\n", + "I = n*p_m; # Magnetization of the bar in one domain, ampere/metre\n", + "M = I*V; # Magnetic moment of the bar, ampere metre-square\n", + "print \"The dipole moment of the bar = %5.3e ampere metre-square\"%P_m\n", + "print \"The magnetization of the bar in one domain = %3.1e ampere/metre\"%I\n", + "print \"The magnetic moment of the bar = %2d ampere metre-square\"%M\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The paramagnetic susceptibility of a material = 3.278e-03\n", + "The dipole moment of the bar = 2.609e+02 ampere metre-square\n", + "The magnetization of the bar in one domain = 1.8e+06 ampere/metre\n", + "The magnetic moment of the bar = 18 ampere metre-square\n" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.8, Page 607" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "A = 500; # Area of the B-H loop, joule per metre cube\n", + "n = 50; # Total number of cycles, Hz\n", + "m = 9; # Mass of the core, kg\n", + "d = 7.5e+3; # Density of the core, kg/metre cube\n", + "t = 3600; # Time during which the energy loss takes place, s\n", + "\n", + "#Calculations\n", + "V = m/d; # Volume of the core, metre cube\n", + "E = n*V*A*t; # Hystersis loss of energy per hour, joule\n", + "\n", + "#Result\n", + "print \"The hystersis loss per hour = %5.2eJ\"%E\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The hystersis loss per hour = 1.08e+05J\n" + ] + } + ], + "prompt_number": 19 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.9, Page 607" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "n = 50; # Total number of cycles per sec, Hz\n", + "V = 1e-03; # Volume of the specimen, metre cube\n", + "t = 1; # Time during which the loss occurs, s\n", + "A = 0.25e+03; # Area of B-H loop, joule per metre cube\n", + "\n", + "#Calculations\n", + "E = n*V*A*t; # Energy loss due to hysteresis, J/s\n", + "\n", + "#Result\n", + "print \"The hystersis loss = %4.1f J/s\"%E\n", + "#incorrect answer in the textbook" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The hystersis loss = 12.5 J/s\n" + ] + } + ], + "prompt_number": 20 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.10, Page 608" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "e = 1.6e-19; # Charge on anlectron, C\n", + "m = 9.1e-31; # Mass of the electron, kg\n", + "r = 5.1e-11; # Radius of the electronic orbit, m\n", + "B = 2.0; # Applied magnetic field, weber per metre-square\n", + "\n", + "#Calculations\n", + "delta_pm = e**2*r**2*B/(4*m);\n", + "\n", + "#Result\n", + "print \"The change in the magnetic dipole moment of the electron = %3.1e A-metre square\"%delta_pm\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The change in the magnetic dipole moment of the electron = 3.7e-29 A-metre square\n" + ] + } + ], + "prompt_number": 21 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Applied_Physics_for_Engineers/Chapter_13.ipynb b/Applied_Physics_for_Engineers/Chapter_13.ipynb new file mode 100755 index 00000000..0622b390 --- /dev/null +++ b/Applied_Physics_for_Engineers/Chapter_13.ipynb @@ -0,0 +1,492 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 13: Dielectric Properties of Materials" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 13.1, Page 648" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "from scipy import integrate\n", + "\n", + "#Variable declaration\n", + "q = 1e-006; # Electric charge on either side of the dipole, C\n", + "l = 2e-02; # Dipole length, m\n", + "p = q*l; # Dipole moment for the pair of opposite charges, C-m\n", + "E = 1e+005; # External electric field, N/C\n", + "theta = 90; # Angle which the dipole makes with the external field, degrees\n", + "\n", + "#Calculations&Results\n", + "tau = p*E*sin(theta); # The maximum torque on dipole placed in external electric field, Nm\n", + "print \"The maximum torque = %1.0e N-m\"%tau\n", + "W = p*E*(cos(0)-cos(180*pi/180))\n", + "#W = integrate('p*E*sin(thet)', 'thet', 0, pi); # The work done in rotating the dipole direction = %1.0e J\", W\n", + "print \"The work done in rotating the dipole direction = %1.0e J\"%W\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The maximum torque = 2e-03 N-m\n", + "The work done in rotating the dipole direction = 4e-03 J\n" + ] + } + ], + "prompt_number": 30 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 13.2, Page 648" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "Q = 8e-019; # Charge of the nucleus, C\n", + "p = 3.2e-029; # Electric dipole moment, C-m\n", + "r = 1e-10; # Distance of dipole relative to the nucleus, m\n", + "k = 9e+9; # Coulomb constant, N-meter-square/C-square\n", + "theta = 0; # Angle for radial direction, radian \n", + "\n", + "#Calculations&Results\n", + "F = k*p*Q*sqrt(3*cos(theta**2)+1)/r**3; # The force acting on the dipole in the radial direction, N\n", + "print \"The force acting on the dipole in the radial direction = %3.1e N\"%F\n", + "theta = pi/2; # Angle for perpendicular direction, radian\n", + "F = k*p*Q*sqrt(3*cos(theta)**2+1)/r**3;\n", + "print \"The force acting on the dipole in the direction perpendicular to radial direction = %3.1e N\"%F\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The force acting on the dipole in the radial direction = 4.6e-07 N\n", + "The force acting on the dipole in the direction perpendicular to radial direction = 2.3e-07 N\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 13.3, Page 649" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "chi_e = 35.4e-12; # Susceptability of the material, C-square/N-meter-square\n", + "eps_0 = 8.85e-12; # Electric permittivity in free space, C-squre/N-meter-square\n", + "\n", + "#Calculations&Results\n", + "K = 1 + (chi_e/eps_0);\n", + "print \"The dielectric constant = %d \"%K\n", + "eps = (eps_0*K); \n", + "print \"The electric permittivity = %5.3e C-square/N-meter square \"%eps\n", + "\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The dielectric constant = 5 \n", + "The electric permittivity = 4.425e-11 C-square/N-meter square \n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 13.4, Page 649" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "eps = 1.46e-10; # Electric permittivity, C-square/n-meter-square\n", + "eps_0 = 8.85e-12; # Permittivity in free space, C-squre/N-meter-square\n", + "\n", + "#Calculations&Results\n", + "K = (eps/eps_0);\n", + "print \"The dielectric constant = %4.1f \"%K\n", + "chi_e = eps_0*(K-1); # Susceptability,in C-square/N-meter-square\n", + "print \"The electric susceptability = %4.2e C-square/N-meter square \"%chi_e\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The dielectric constant = 16.5 \n", + "The electric susceptability = 1.37e-10 C-square/N-meter square \n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 13.5, Page 650" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "K = 7.0; # Dielectric constant of the slab\n", + "d = 0.01; # Distance between the two parallel plates, m\n", + "V_0 = 100; # Potential difference across the plates, V\n", + "eps_0 = 8.85e-12; # Electric permability of the free space, C-square/N-meter-square\n", + "\n", + "#Calculations&Results\n", + "E_0 = V_0/d; # Electric intensity in the absence of dielectric slab, V/m\n", + "E = E_0/K; # Electric intensity with dielectric slab introduced between the plates, V/m\n", + "print \"The electric field intensity in the presence of the dielectric slab = %4.2e V/m \"%E\n", + "D = (eps_0*K*E); # Electric displacement, C-square/m-square\n", + "print \"The electric displacement in the dielectric slab = %4.2e C-square/meter-square \"%D\n", + "P = eps_0*(K-1)*E; # Electric polarization in the dielectric slab, C-square/m-square\n", + "print \"The electric polarization in the dielectric slab = %3.1e C-square/meter-square \"%P\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The electric field intensity in the presence of the dielectric slab = 1.43e+03 V/m \n", + "The electric displacement in the dielectric slab = 8.85e-08 C-square/meter-square \n", + "The electric polarization in the dielectric slab = 7.6e-08 C-square/meter-square \n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 13.6, Page 650" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "K = 1.000074; # Dielectric constant of the He\n", + "n = 2.69e+025; # Atomic density of He, atoms/meter-cube\n", + "eps_0 = 8.85e-012; # Electric permability of the free space, C-square/N-meter-square\n", + "E = 1; # Electric field strength, V/m\n", + "\n", + "#Calculations\n", + "p = (eps_0*(K-1)*E)/n; # Dipole moment induced in He, C-m\n", + "\n", + "#Result\n", + "print \"The dipole moment induced in each He atom = %4.2e C-m \"%p\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The dipole moment induced in each He atom = 2.43e-41 C-m \n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 13.7, Page 650" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "K = 1.000134; # Dielectric constant of the neon\n", + "n = 2.69e+25; # Atomic density of argon,atoms/meter-cube\n", + "eps_0 = 8.85e-12; # Electric Permability in the free space, C-square/N-meter-square\n", + "E = 90e+03; # External electric field, V/m\n", + "\n", + "#Calculations\n", + "p = eps_0*(K-1)*E/n; # Dipole moment induced in each neon atom, C-m\n", + "alpha = p/E; # Atomic polarizability of neon gas, C-metre-square/V\n", + "\n", + "#Results\n", + "print \"The induced dipole moment of noen atom = %4.2e C-m\"%p\n", + "print \"The electronic polarizability of neon gas = %3.1e C-m-square/V \"%alpha\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The induced dipole moment of noen atom = 3.97e-36 C-m\n", + "The electronic polarizability of neon gas = 4.4e-41 C-m-square/V \n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 13.8, Page 651" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "K = 1.0024; # Dielectric constant of the argon\n", + "n = 2.7e+25; # Atomic density of argon,atoms/meter-cube\n", + "eps_0 = 8.85e-12; # Electric Permability in the free space, C-square/N-meter-square\n", + "\n", + "#Calculations\n", + "alpha = eps_0*(K-1)/n;\n", + "\n", + "#Result\n", + "print \"The electronic polarizability of argon atom = %4.1e C-m-square/V \"%alpha\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The electronic polarizability of argon atom = 7.9e-40 C-m-square/V \n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 13.9, Page 651" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "K = 2.24; # Dielectric constant \n", + "eps_0 = 8.85e-12; # Electric permability in the free space, C-square/N-meter-square\n", + "rho = 1.6e+003; # Density of CCl4, kg/meter-cube\n", + "M = 156; # Molecular weight of CCl4\n", + "E = 1e+007; # External electric field strength, V/m\n", + "N_A = 6.02e+26; # Avogadro's number, per kmol\n", + "\n", + "#Calculations\n", + "rho_M = rho*N_A/M; # Molecular density of CCl4\n", + "p = eps_0*(K-1)*E/rho_M; # Individual dipole moment of CCL4 molecule, C-m\n", + "\n", + "#Result\n", + "print \"Individual dipole moment of CCL4 molecule = %4.2e C-m \"%p\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Individual dipole moment of CCL4 molecule = 1.78e-32 C-m \n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 13.10, Page 652" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "K = 1.0000684; # Dielectric constant of He at 1 atm\n", + "n = 2.7e+25; # Density of He at 1 atm and 273 K, atoms/meter-cube\n", + "\n", + "#Calculations\n", + "# The atomic polarizibility, alpha = eps_0*(K-1)/n \n", + "# In terms of atomic radius, alpha = 4*%pi*eps_0*R^3 so, we have\n", + "R = ((K-1)/(4*pi*n))**(1./3); # Radius of He atom, m\n", + "\n", + "#Result\n", + "print \"The atomic radius of He = %4.2e m \"%R\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The atomic radius of He = 5.86e-11 m \n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 13.11, Page 652" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "mu = 1.5; # Optical index of refraction of NaCl crystal\n", + "K = 5.6; # Static dielectric constant of NaCl crystal\n", + "\n", + "#Calculations\n", + "P_IP = (1-((mu**2-1)*(K+2))/((mu**2+2)*(K-1)))*100;\n", + "\n", + "#Result\n", + "print \"The percentage of ionic polarizibility in NaCl crystal = %4.1f percent \"%P_IP\n", + "\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The percentage of ionic polarizibility in NaCl crystal = 51.4 percent \n" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 13.12, Page 653" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "K_B = 1.38e-23; # Boltzmann constant, J/mol/K\n", + "T = 300; # Room temperature, K \n", + "eps_0 = 8.85e-12; # Electric permittivity of free space, F/m\n", + "N_A = 6.0e+23; # Avogadro's number\n", + "\n", + "#Calculations\n", + "n2 = N_A*1000; # Number of molecules of non-polar substance in 1000 cc volume\n", + "p_0 = sqrt((9*K_B*T*eps_0*0.023)/n2); # Dipole moment of polar molecules, C-m\n", + "\n", + "#Result\n", + "print \"The dipole moment of polar molecules = %4.3e C-m\"%p_0\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The dipole moment of polar molecules = 3.555e-30 C-m\n" + ] + } + ], + "prompt_number": 31 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Applied_Physics_for_Engineers/Chapter_14.ipynb b/Applied_Physics_for_Engineers/Chapter_14.ipynb new file mode 100755 index 00000000..c52df589 --- /dev/null +++ b/Applied_Physics_for_Engineers/Chapter_14.ipynb @@ -0,0 +1,652 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 14: Solid State Electronics" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 14.1, Page 718" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "e = 1.6e-019; # Charge on an electron, C\n", + "mu_h = 0.048; # Mobility of holes, metre square/volt-s\n", + "mu_e = 0.135; # Mobility of electrons, metre square/volt-s \n", + "\n", + "#Calculations\n", + "# For P-type semiconductor\n", + "rho_p = 1e-01; # Resistivity of P type silicon, omh-m\n", + "# As rho_p = 1/(e*N_a*mu_h), solving for N_a\n", + "N_a = 1/(e*rho_p*mu_h); # Density of acceptor atoms, per metre cube\n", + "# For N-type semiconductor\n", + "rho_n = 1e-01; # Resistivity of N type silicon, omh-m\n", + "# As rho_n = 1/(e*N_d*mu_h), solving for N_d\n", + "N_d = 1/(e*rho_n*mu_e); # Density of donor atoms, per metre cube\n", + "\n", + "#Results\n", + "print \"Density of acceptor atoms = %4.2e per metre cube\"%N_a\n", + "print \"Density of donor atoms = %4.2e per metre cube\"%N_d #incorrect answer in textbook\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Density of acceptor atoms = 1.30e+21 per metre cube\n", + "Density of donor atoms = 4.63e+20 per metre cube\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 14.2, Page 718" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "e = 1.6e-019; # Charge on an electron, C\n", + "mu_e = 0.36; # Mobility of an electron, metre square/V-s\n", + "mu_h = 0.17; # Mobility of a hole, metre square/V-s\n", + "n_i = 2.5e+018; # Intrinsic concentration of Ge sample, per metre cube\n", + "\n", + "#Calculations\n", + "sigma = e*n_i*(mu_h+mu_e); # Electrical conductivity of Ge sample, mho per metre\n", + "rho = 1/sigma; # Electrical resistivity of Ge, ohm-m\n", + "\n", + "#Results\n", + "print \"The electrical conductivity of intrinsic germanium sample = %5.3f mho/m\"%sigma\n", + "print \"The electrical resistivity of intrinsic germanium sample = %3.1f ohm-m\"%rho\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The electrical conductivity of intrinsic germanium sample = 0.212 mho/m\n", + "The electrical resistivity of intrinsic germanium sample = 4.7 ohm-m\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 14.3, Page 719" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "e = 1.6e-019; # Charge on an electron, C\n", + "mu_e = 0.13; # Mobility of an electron, metre square/V-s\n", + "mu_h = 0.05; # Mobility of a hole, metre square/V-s\n", + "n_i = 1.5e+016; # Intrinsic concentration of Si, per metre cube\n", + "\n", + "#Calculations\n", + "# Pure Si\n", + "sigma = e*n_i*(mu_h+mu_e); # Electrical conductivity of Si, mho per metre\n", + "# Pure Si doped with donor impurity\n", + "n_e = 5e+028/1e+09; # Concentration of electrons, per metre cube\n", + "sigma_n = e*n_e*mu_e; # Electrical conductivity of Si doped with donor impurity, mho per metre\n", + "# Pure Si doped with acceptor impurity\n", + "n_h = 5e+028/1e+09; # Concentration of holes, per metre cube\n", + "sigma_p = e*n_h*mu_h; # Electrical conductivity of Si doped with acceptor impurity, mho per metre\n", + "\n", + "#Results\n", + "print \"The electrical conductivity of pure Si = %4.2e mho/m\"%sigma\n", + "print \"The electrical conductivity of Si doped with donor impurity = %4.2f mho/m\"%sigma_n\n", + "print \"The electrical conductivity of Si doped with acceptor impurity= %4.2f mho/m\"%sigma_p\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The electrical conductivity of pure Si = 4.32e-04 mho/m\n", + "The electrical conductivity of Si doped with donor impurity = 1.04 mho/m\n", + "The electrical conductivity of Si doped with acceptor impurity= 0.40 mho/m\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 14.4, Page 720" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "Nd = 1; # For simplicity assume donor concentration to be unity, per metre cube\n", + "Nd_prime = 3*Nd; # Thrice the donor concentration, per metre cube\n", + "dE_CF1 = 0.5; # Energy difference between normal Fermi level and conduction level, eV\n", + "k_BT = 0.03; # Thermal energy at room temperature, eV\n", + "\n", + "#Calculations\n", + "# As Nd_prime/Nd = exp((dE_CF1 - dE_CF2))/k_BT, solving for dE_CF2\n", + "dE_CF2 = dE_CF1-k_BT*log(Nd_prime/Nd); # Energy difference between new postion of Fermi level and conduction level, eV\n", + "\n", + "#Result\n", + "print \"The new postion of Fermi level when donor concentration is trebled = %5.3f eV\"%dE_CF2\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The new postion of Fermi level when donor concentration is trebled = 0.467 eV\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 14.5, Page 721" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "e = 1.6e-019; # Charge on an electron, C\n", + "T = 300; # Room temperature, K\n", + "J0 = 300e-03; # Saturation current density of the pn junction diode, A/metre square\n", + "J = 1e+05; # Forward current density of pn junction diode, A/metre square\n", + "k_B = 1.38e-023; # Boltzmann constant, J/K\n", + "eta = 1; # Ideality factor for Ge diode\n", + "\n", + "#Calculations\n", + "# As J = J0*exp(e*V/(eta*k_B*T)), solving for V\n", + "V = eta*k_B*T/e*log(J/J0); # Voltage required to cause a forward current density in pn junction diode, volt\n", + "\n", + "#Results\n", + "print \"The voltage required to cause a forward current density in pn junction diode = %5.3f V\"%V\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The voltage required to cause a forward current density in pn junction diode = 0.329 V\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 14.6, Page 721" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "e = 1.6e-019; # Charge on an electron, C\n", + "T = 300; # Room temperature, K\n", + "J0 = 200e-03; # Saturation current density of the pn junction diode, A/metre square\n", + "J = 5e+04; # Forward current density of pn junction diode, A/metre square\n", + "k_B = 1.38e-023; # Boltzmann constant, J/K\n", + "eta = 1; # Ideality factor for Ge diode\n", + "\n", + "#Calculations\n", + "# As J = J0*exp(e*V/(eta*k_B*T)), solving for V\n", + "V = eta*k_B*T/e*log(J/J0); # Voltage required to cause a forward current density in pn junction diode, volt\n", + "\n", + "#Result\n", + "print \"The voltage required to cause a forward current density in pn junction diode = %5.3f V\"%V\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The voltage required to cause a forward current density in pn junction diode = 0.322 V\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 14.7, Page 722" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "e = 1.6e-019; # Charge on an electron, C\n", + "T = 300; # Room temperature, K\n", + "J0 = 300e-03; # Saturation current density of the pn junction diode, A/metre square\n", + "J = 1e+05; # Forward current density of pn junction diode, A/metre square\n", + "k_B = 1.38e-023; # Boltzmann constant, J/K\n", + "eta = 2; # Ideality factor for Ge diode\n", + "\n", + "#Calculations\n", + "# As J = J0*exp(e*V/(eta*k_B*T)), solving for V\n", + "V = eta*k_B*T/e*log(J/J0); # Voltage required to cause a forward current density in pn junction diode, volt\n", + "\n", + "#Result\n", + "print \"The voltage required to cause a forward current density in Si iode = %5.3f V\"%V\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The voltage required to cause a forward current density in Si iode = 0.658 V\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 14.8, Page 723" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "I = 55e-03; # Forward current through Si diode, A\n", + "V = 3; # Forward bias across Si diode, V\n", + "eta = 2; # Ideality factor for Si diode\n", + "\n", + "#Calculations\n", + "R_dc = V/I; # Static diode resistance, ohm\n", + "R_ac = 0.026*eta/I; # Dynamic diode resistance, ohm\n", + "\n", + "#Results\n", + "print \"The static diode resistance = %4.1f ohm\"%R_dc\n", + "print \"The dynamic diode resistance = %5.3f ohm\"%R_ac\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The static diode resistance = 54.5 ohm\n", + "The dynamic diode resistance = 0.945 ohm\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 14.9, Page 723" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "R_L = 1000; # Load resistance across HWR, ohm\n", + "V_rms = 200; # Rms value of voltage supply, V\n", + "\n", + "#Calculations\n", + "V0 = sqrt(2)*V_rms; # Peak value of voltage, V\n", + "I0 = V0/(R_L*1e-03); # Peak value of current, mA\n", + "I_dc = I0/pi; # Average value of current, mA\n", + "I_rms = I0/2; # Rms value of current, mA\n", + "V_dc = I_dc*R_L/1e+03; # Dc output voltage, V\n", + "PIV = V0; # Peak inverse voltage, V\n", + "\n", + "#Results\n", + "print \"The average value of current = %2d mA\"%I_dc\n", + "print \"The rms value of current = %5.1f mA\"%I_rms\n", + "print \"The dc output voltage = %2d V\"%(V_dc/1)\n", + "print \"PIV = %5.1f V\"%PIV\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The average value of current = 90 mA\n", + "The rms value of current = 141.4 mA\n", + "The dc output voltage = 90 V\n", + "PIV = 282.8 V\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 14.10, Page 724" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "R_L = 980; # Load resistance across FWR, ohm\n", + "R_F = 20.; # Internal resistance of two crystal diodes in FWR, ohm\n", + "V_rms = 50; # Rms value of voltage supply, V\n", + "\n", + "#Calculations\n", + "V0 = sqrt(2)*V_rms; # Peak value of voltage, V\n", + "I0 = V0/((R_L+R_F)*1e-03); # Peak value of current, mA\n", + "I_dc = 2*I0/pi; # Average value of current, mA\n", + "I_rms = I0/sqrt(2); # Rms value of current, mA\n", + "V_dc = I_dc*R_L/1e+03; # Dc output voltage, V\n", + "eta = 81.2/(1+R_F/R_L); # Rectification efficiency\n", + "PIV = 2*V0; # Peak inverse voltage, V\n", + "\n", + "#Results\n", + "print \"The average value of current = %2d mA\"%I_dc\n", + "print \"The rms value of current = %2d mA\"%I_rms\n", + "print \"The dc output voltage = %4.1f V\"%(V_dc/1)\n", + "print \"The rectification efficiency = %4.1f percent\"%eta\n", + "print \"PIV = %5.1f V\"%PIV\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The average value of current = 45 mA\n", + "The rms value of current = 50 mA\n", + "The dc output voltage = 44.1 V\n", + "The rectification efficiency = 79.6 percent\n", + "PIV = 141.4 V\n" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 14.11, Page 725" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "delta_IC = 1e-03; # Change in collector current, A\n", + "delta_IB = 50e-06; # Change in base current, A\n", + "\n", + "#Calculations\n", + "bta = delta_IC/delta_IB; # Base current amplification factor\n", + "alpha = bta/(1+bta); # Emitter current amplification factor\n", + "\n", + "#Results\n", + "print \"Alpha of BJT = %4.2f\"%alpha\n", + "print \"Beta of BJT = %2d\"%bta\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Alpha of BJT = 0.95\n", + "Beta of BJT = 20\n" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 14.12, Page 725" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "I_E = 2; # Emitter current, mA\n", + "alpha = 0.88; # Emitter current amplification factor\n", + "\n", + "#Calculations\n", + "I_C = alpha*I_E; # Collector current, mA\n", + "I_B = I_E - I_C; # Base current of BJT in CB mode, mA\n", + "\n", + "#Result\n", + "print \"The base current of BJT in CB mode = %4.2f mA\"%I_B\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The base current of BJT in CB mode = 0.24 mA\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 14.13, Page 725" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "I_CBO = 12.5e-03; # Reverse saturation current, mA\n", + "I_E = 2; # Emitter current, mA\n", + "I_C = 1.97; # Collector current, mA\n", + "\n", + "#Calculations\n", + "# As I_C = alpha*I_E+I_CBO, solving for alpha\n", + "alpha = (I_C - I_CBO)/I_E; # Emitter current gain\n", + "I_B = I_E - I_C; # Base current, mA\n", + "\n", + "#Results\n", + "print \"The emitter current gain = %5.3f\"%alpha\n", + "print \"The base current = %4.2f mA\"%I_B\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The emitter current gain = 0.979\n", + "The base current = 0.03 mA\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 14.14, Page 726" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "alpha = 0.98; # Emitter current amplification factor\n", + "I_CBO = 5e-06; # Reverse saturation current, A\n", + "\n", + "#Calculations\n", + "bta = alpha/(1-alpha); # Emitter current amplification factor\n", + "I_CEO = 1/(1-alpha)*I_CBO; # Leakage current of BJT in CE mode, mA\n", + "\n", + "#Results\n", + "print \"The base current gain = %2g\"%bta\n", + "print \"The leakage current of BJT in CE mode = %4.2f mA\"%(I_CEO/1e-03)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The base current gain = 49\n", + "The leakage current of BJT in CE mode = 0.25 mA\n" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 14.15, Page 726" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "R_i = 50; # Dynamic input resistance of PNP transistor, ohm\n", + "R_L = 5e+03; # Load resistance in collector circuit, ohm\n", + "alpha = 0.96; # Emitter current amplification factor\n", + "\n", + "#Calculations\n", + "A_v = alpha*R_L/R_i; # Voltage gain\n", + "A_p = alpha*A_v; # Power gain\n", + "\n", + "#Results\n", + "print \"The voltage gain = %2g\"%A_v\n", + "print \"The power gain = %2d\"%A_p\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The voltage gain = 96\n", + "The power gain = 92\n" + ] + } + ], + "prompt_number": 16 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Applied_Physics_for_Engineers/Chapter_15.ipynb b/Applied_Physics_for_Engineers/Chapter_15.ipynb new file mode 100755 index 00000000..7405f913 --- /dev/null +++ b/Applied_Physics_for_Engineers/Chapter_15.ipynb @@ -0,0 +1,483 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 15: Digital Electronics" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 15.1, Page 771" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "n = 25\n", + "\n", + "#Calculations\n", + "b = bin(n)\n", + "\n", + "#Result\n", + "print \"The binary equivalent of 25 is\",b" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The binary equivalent of 25 is 0b11001\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 15.2, Page 771" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "def binary_decimal(ni): # Function to convert binary to decimal\n", + " deci = 0;\n", + " i = 0;\n", + " while (ni != 0):\n", + " rem = ni-int(ni/10.)*10\n", + " ni = int(ni/10.);\n", + " deci = deci + rem*2**i;\n", + " i = i + 1;\n", + " return deci\n", + " \n", + "\n", + "def binfrac_decifrac(nf): # Function to convert binary fraction to decimal fraction\n", + " decf = 0;\n", + " i = -1;\n", + " while (i >= -3):\n", + " nf = nf*10;\n", + " rem = round(nf); \n", + " nf = nf-rem;\n", + " decf = decf + rem*2**i;\n", + " i = i - 1;\n", + " return decf\n", + " \n", + "\n", + "n = 101.101; # Initialize the binary number\n", + "n_int = int(n); # Extract the integral part\n", + "n_frac = n-n_int; # Extract the fractional part\n", + "\n", + "#Result\n", + "print \"Decimal equivalent of %7.3f = %5.3f\"%(n, binary_decimal(n_int)+binfrac_decifrac(n_frac))\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Decimal equivalent of 101.101 = 5.625\n" + ] + } + ], + "prompt_number": 33 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 15.3, Page 772" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def octal_decimal(n): # Function to convert binary to decimal\n", + " dec = 0;\n", + " i = 0;\n", + " while (n != 0):\n", + " rem = n-int(n/10)*10; \n", + " n = int(n/10);\n", + " dec = dec + rem*8**i;\n", + " i = i + 1;\n", + " return dec\n", + "\n", + "n = 173; # Initialize the octal number\n", + "\n", + "#Result\n", + "print \"Decimal equivalent of %d = %d\"%(n, octal_decimal(n)); \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Decimal equivalent of 173 = 123\n" + ] + } + ], + "prompt_number": 37 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 15.4, Page 772" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "n = 278\n", + "\n", + "#Calculations\n", + "o = oct(n)\n", + "\n", + "#Result\n", + "print \"The octal equivalent of 278 is\",o" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The octal equivalent of 278 is 0426\n" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 15.5, Page 772" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "n1 = '10001100'\n", + "n2 = '1011010111'\n", + "\n", + "#Calculations\n", + "x1 = hex(int(n1,2))\n", + "x2 = hex(int(n2,2))\n", + "\n", + "#Results\n", + "print \"The hexadecimal equivalent of 10001100 is\",x1\n", + "print \"The hexadecimal equivalent of 1011010111 is\",x2\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The hexadecimal equivalent of 10001100 is 0x8c\n", + "The hexadecimal equivalent of 1011010111 is 0x2d7\n" + ] + } + ], + "prompt_number": 21 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 15.6, Page 772" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "n = 72905\n", + "\n", + "#Calculations\n", + "h = hex(n)\n", + "\n", + "#Result\n", + "print \"The hexadecimal equivalent of 278 is\",h" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The hexadecimal equivalent of 278 is 0x11cc9\n" + ] + } + ], + "prompt_number": 23 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 15.7, Page 773" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "x1 = 0b11101\n", + "x2 = 0b10111\n", + "\n", + "#Calculations\n", + "x = bin(x1+x2)\n", + "\n", + "#Result\n", + "print \"The required result is\",x" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The required result is 0b110100\n" + ] + } + ], + "prompt_number": 27 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 15.8, Page 773" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def decimal_binary(ni): # Function to convert decimal to binary\n", + " bini = 0;\n", + " i = 1;\n", + " while (ni != 0):\n", + " rem = ni-int(ni/2)*2; \n", + " ni = int(ni/2);\n", + " bini = bini + rem*i;\n", + " i = i * 10;\n", + " return bini\n", + "\n", + "def decifrac_binfrac(nf): # Function to convert binary fraction to decimal fraction\n", + " binf = 0; i = 0.1;\n", + " while (nf != 0):\n", + " nf = nf*2;\n", + " rem = int(nf); \n", + " nf = nf-rem;\n", + " binf = binf + rem*i;\n", + " i = i/10;\n", + " return binf\n", + "\n", + "def binary_decimal(ni): # Function to convert binary to decimal\n", + " deci = 0;\n", + " i = 0;\n", + " while (ni != 0):\n", + " rem = ni-int(ni/10)*10; \n", + " ni = int(ni/10);\n", + " deci = deci + rem*2.**i;\n", + " i = i + 1;\n", + " return deci\n", + "\n", + "def binfrac_decifrac(nf): # Function to convert binary fraction to decimal fraction\n", + " decf = 0;\n", + " i = -1;\n", + " while (i >= -3):\n", + " nf = nf*10;\n", + " rem = round(nf); \n", + " nf = nf-rem;\n", + " decf = decf + rem*2.**i;\n", + " i = i - 1;\n", + " return decf \n", + "\n", + "bin1 = 1011.11; # Initialize the first binary binber\n", + "bin2 = 1011.01; # Initialize the second binary binber\n", + "bin1_int = int(bin1); # Extract the integral part for first\n", + "bin1_frac = bin1-bin1_int; # Extract the fractional part for second\n", + "bin2_int = int(bin2); # Extract the integral part for first\n", + "bin2_frac = bin2-bin2_int; # Extract the fractional part for second\n", + "dec1 = binary_decimal(bin1_int)+binfrac_decifrac(bin1_frac);\n", + "dec2 = binary_decimal(bin2_int)+binfrac_decifrac(bin2_frac);\n", + "dec = dec1+dec2;\n", + "dec_int = int(dec);\n", + "dec_frac = dec-dec_int;\n", + "\n", + "#Result\n", + "print \"%7.2f + %7.2f = %8.2f\"%(bin1, bin2, decimal_binary(dec_int)+decifrac_binfrac(dec_frac))\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1011.11 + 1011.01 = 10111.00\n" + ] + } + ], + "prompt_number": 49 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 15.9, Page 773" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "x1 = 0b0111\n", + "x2 = 0b1001\n", + "\n", + "#Calculations\n", + "x = bin(x1-x2)\n", + "\n", + "#Result\n", + "print \"The required result is\",x" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The required result is -0b10\n" + ] + } + ], + "prompt_number": 30 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 15.10, Page 773" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "x1 = 0b1101\n", + "x2 = 0b1100\n", + "\n", + "#Calculations\n", + "x = bin(x1*x2)\n", + "\n", + "#Result\n", + "print \"The required result is\",x\n", + "#Incorrect solution in textbook" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The required result is 0b10011100\n" + ] + } + ], + "prompt_number": 31 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 15.11, Page 774" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "x1 = 0b11001\n", + "x2 = 0b101\n", + "\n", + "#Calculations\n", + "x = bin(x1/x2)\n", + "\n", + "#Result\n", + "print \"The required result is\",x" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The required result is 0b101\n" + ] + } + ], + "prompt_number": 32 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Applied_Physics_for_Engineers/Chapter_16.ipynb b/Applied_Physics_for_Engineers/Chapter_16.ipynb new file mode 100755 index 00000000..43737f91 --- /dev/null +++ b/Applied_Physics_for_Engineers/Chapter_16.ipynb @@ -0,0 +1,431 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 16: Crystal Physics" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 16.1, Page 820" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "p = 1; q = 2; r = 3; # Coefficients of intercepts along three axes\n", + "\n", + "#Calculations\n", + "p_inv = 1./p; # Reciprocate the first coefficient\n", + "q_inv = 1./q; # Reciprocate the second coefficient\n", + "r_inv = 1./r; # Reciprocate the third coefficient\n", + "mul_fact = p*q*r; # Find l.c.m. of m,n and p\n", + "m1 = p_inv*mul_fact; # Clear the first fraction\n", + "m2 = q_inv*mul_fact; # Clear the second fraction\n", + "m3 = r_inv*mul_fact; # Clear the third fraction\n", + "\n", + "#Result\n", + "print \"The required miller indices are : (%d %d %d) \"%(m1,m2,m3)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The required miller indices are : (6 3 2) \n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 16.2, Page 820" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "p = 2; q = 3; r = -4; # Coefficients of intercepts along three axes\n", + "\n", + "#Calculations\n", + "p_inv = 1./p; # Reciprocate the first coefficient\n", + "q_inv = 1./q; # Reciprocate the second coefficient\n", + "r_inv = 1./r; # Reciprocate the third coefficient\n", + "mul_fact = p*q*abs(r); # Find l.c.m. of m,n and p\n", + "m1 = p_inv*mul_fact; # Clear the first fraction\n", + "m2 = q_inv*mul_fact; # Clear the second fraction\n", + "m3 = r_inv*mul_fact; # Clear the third fraction\n", + "\n", + "#Result\n", + "print \"The miller indices of laticce plane are : (%d %d %d) \"%(m1,m2,m3)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The miller indices of laticce plane are : (12 8 -6) \n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 16.3, Page 821" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import numpy\n", + "\n", + "#Variable declaration\n", + "p = 3; q = 4; r = numpy.inf; # Coefficients of intercepts along three axes\n", + "\n", + "#Calculations\n", + "p_inv = 1./p; # Reciprocate the first coefficient\n", + "q_inv = 1./q; # Reciprocate the second coefficient\n", + "r_inv = 1./r; # Reciprocate the third coefficient\n", + "mul_fact = p*q; # Find l.c.m. of m,n and p\n", + "m1 = p_inv*mul_fact; # Clear the first fraction\n", + "m2 = q_inv*mul_fact; # Clear the second fraction\n", + "m3 = r_inv*mul_fact; # Clear the third fraction\n", + "\n", + "#Result\n", + "print \"The miller indices of the given planes are : (%d %d %d) \"%(m1,m2,m3)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The miller indices of the given planes are : (4 3 0) \n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 16.4, Page 822 " + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "p = 1.2; # First coefficient of intercept along X-axis, angstrom\n", + "a = 1.2\n", + "b = 1.8\n", + "c = 2.0; # Lattice parameters along three axes, angstrom\n", + "h = 2.\n", + "k = 3.\n", + "l = 1.; # Miller indices of lattice plane\n", + "\n", + "#Calculations\n", + "# As p:q:r = a/h:b/k:c/l, solving for q and r\n", + "q = p*(b/k)/(a/h); # Second coefficient of intercept along X-axis, angstrom \n", + "r = p*(c/l)/(a/h); # Third coefficient of intercept along X-axis, angstrom \n", + "\n", + "#Result\n", + "print \"The lengths of the intercepts on Y and Z axes are %3.1f angstrom and %3.1f angstrom respectively\"%(q, r)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The lengths of the intercepts on Y and Z axes are 1.2 angstrom and 4.0 angstrom respectively\n" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 16.5, Page 822" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "M = 58.5; # Molecular weight of NaCl, g-mole\n", + "rho = 2.198e+03; # Density of Nacl, kg per metre cube\n", + "n = 4; # No. of atoms per unit cell for an fcc lattice of NaCl crystal\n", + "NA = 6.023e+26; # Avogadro's No., atoms/k-mol\n", + "\n", + "#Calculations\n", + "# Volume of the unit cell is given by\n", + "# a^3 = M*n/(N*d)\n", + "# Solving for a\n", + "a = (n*M/(rho*NA))**(1./3); # Lattice constant of unit cell of NaCl\n", + "\n", + "#Result\n", + "print \"Lattice constant for the NaCl crystal = %4.2f angstrom\"%(a/1e-010)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Lattice constant for the NaCl crystal = 5.61 angstrom\n" + ] + } + ], + "prompt_number": 20 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 16.6, Page 823" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "M = 119; # Molecular weight of KBr, g-mole\n", + "rho = 2.7; # Density of KBr, g per cm-cube\n", + "n = 4; # No. of atoms per unit cell for an fcc lattice of KBr crystal\n", + "NA = 6.023e+23; # Avogadro's No., atoms/mol\n", + "\n", + "#Calculations\n", + "# Volume of the unit cell is given by\n", + "# a^3 = M*n/(N*d)\n", + "# Solving for a\n", + "a = (n*M/(rho*NA))**(1./3); # Lattice constant of unit cell of KBr\n", + "\n", + "#Result\n", + "print \"Lattice constant for the KBr crystal = %4.2f angstrom\"%(a/1e-008)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Lattice constant for the KBr crystal = 6.64 angstrom\n" + ] + } + ], + "prompt_number": 21 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 16.7, Page 823" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "M = 63.5; # Molecular weight of Cu, g-mole\n", + "rho = 8.96; # Density of Cu, g per cm-cube\n", + "n = 4; # No. of atoms per unit cell for an fcc lattice of Cu \n", + "NA = 6.023e+23; # Avogadro's No., atoms/mol\n", + "\n", + "#Calculations\n", + "# Volume of the unit cell is given by\n", + "# a^3 = M*n/(N*d)\n", + "# Solving for a\n", + "a = (n*M/(rho*NA))**(1./3); # Lattice constant of unit cell of Cu\n", + "d = a/sqrt(2); # Distance between the two nearest Cu atoms, angstrom \n", + "\n", + "#Results\n", + "print \"Lattice constant for the Cu crystal = %4.2f angstrom\"%(a/1e-008)\n", + "print \"The distance between the two nearest Cu atoms = %4.2f angstrom\"%(d/1e-008)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Lattice constant for the Cu crystal = 3.61 angstrom\n", + "The distance between the two nearest Cu atoms = 2.55 angstrom\n" + ] + } + ], + "prompt_number": 23 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 16.8, Page 824" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "a = 1; # For simplicity assume lattice parameter of cubic crystal to be unity, unit\n", + "# For (011) planes\n", + "h = 0; k = 1; l = 1; # Miller Indices for planes in a cubic crystal\n", + "d_011 = a/(h**2+k**2+l**2)**(1./2); # The interplanar spacing for cubic crystals, m\n", + "print \"The interplanar spacing between consecutive (011) planes = a/sqrt(%d)\"%(1/d_011**2)\n", + "\n", + "# For (101) planes\n", + "h = 1; k = 0; l = 1; # Miller Indices for planes in a cubic crystal\n", + "d_101 = a/(h**2+k**2+l**2)**(1./2); # The interplanar spacing for cubic crystals, m\n", + "print \"The interplanar spacing between consecutive (101) planes = a/sqrt(%d)\"%(1/d_101**2)\n", + "\n", + "# For (112) planes\n", + "h = 1; k = 1; l = 2; # Miller Indices for planes in a cubic crystal\n", + "d_112 = a/(h**2+k**2+l**2)**(1./2); # The interplanar spacing for cubic crystals, m\n", + "print \"The interplanar spacing between consecutive (112) planes = a/sqrt(%d)\"%(1/d_112**2) #incorrect answer in textbook\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The interplanar spacing between consecutive (011) planes = a/sqrt(2)\n", + "The interplanar spacing between consecutive (101) planes = a/sqrt(2)\n", + "The interplanar spacing between consecutive (112) planes = a/sqrt(5)\n" + ] + } + ], + "prompt_number": 24 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 16.9, Page 824" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "a = 4.2e-010; # Lattice parameter of cubic crystal, m\n", + "h = 3; k = 2; l = 1; # Miller Indices for planes in a cubic crystal\n", + "\n", + "#Calculations\n", + "d_321 = a/(h**2+k**2+l**2)**(1./2); # The interplanar spacing for cubic crystals, m\n", + "\n", + "#Result\n", + "print \"The interplanar spacing between consecutive (321) planes = %4.2f angstrom\"%(d_321/1e-010)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The interplanar spacing between consecutive (321) planes = 1.12 angstrom\n" + ] + } + ], + "prompt_number": 25 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 16.10, Page 825" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "a = 2.5\n", + "b = 2.5\n", + "c = 1.8; # Lattice parameter of tetragonal crystal, angstrom\n", + "h = 1\n", + "k = 1\n", + "l = 1; # Miller Indices for planes in a tetragonal crystal\n", + "\n", + "#Calculations\n", + "d_hkl = 1/sqrt((h/a)**2+(k/b)**2+(l/c)**2); # The interplanar spacing for tetragonal crystals, m\n", + "\n", + "#Result\n", + "print \"The interplanar spacing between consecutive (111) planes = %4.2f angstrom\"%d_hkl\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The interplanar spacing between consecutive (111) planes = 1.26 angstrom\n" + ] + } + ], + "prompt_number": 27 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Applied_Physics_for_Engineers/Chapter_17.ipynb b/Applied_Physics_for_Engineers/Chapter_17.ipynb new file mode 100755 index 00000000..960efeee --- /dev/null +++ b/Applied_Physics_for_Engineers/Chapter_17.ipynb @@ -0,0 +1,677 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 17: Nuclear Physics" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 17.1, Page 888" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "e = 1.6e-019; # Energy equivalent of 1 eV, J/eV\n", + "m_n = 1.675e-027; # Mass of the neutron, kg\n", + "m_p = 1.672e-027; # Mass of the proton, kg\n", + "M_D = 3.343e-027; # Mass of the deutron, kg\n", + "c = 3e+08; # Speed of light, m/s\n", + "\n", + "#Calculations\n", + "delta_m = m_n + m_p - M_D; # Mass defect in the formation of deuterium, kg\n", + "BE = delta_m*c**2; # Binding energy of the deuterium, J\n", + "BE_bar = BE/2; # Binding energy per nucleon of deuterium, J\n", + "\n", + "#Result\n", + "print \"Binding energy per nucleon for the deutron = %5.3f MeV\"%(BE_bar/(e*1e+06))\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Binding energy per nucleon for the deutron = 1.125 MeV\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 17.2, Page 889" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "amu = 931.5; # Energy equivalent of 1 amu, MeV\n", + "m_n = 1.008665; # Mass of the neutron, amu\n", + "m_p = 1.007825; # Mass of the proton, amu\n", + "M_He = 4.002870; # Mass of the heluim nucleus, amu\n", + "c = 3e+08; # Speed of light, m/s\n", + "\n", + "#Calculations\n", + "BE = (2*m_n+2*m_p - M_He)*amu; # Binding energy for the alpha particle, MeV\n", + "\n", + "#Result\n", + "print \"The binding energy for the alpha particle = %2d MeV\"%BE\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The binding energy for the alpha particle = 28 MeV\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 17.4, Page 890" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "\n", + "print \"Values of Z for different values of A are:\"\n", + "for A in range(7,11):\n", + " Z = A/(2+0.015*A**(2./3))\n", + " print round(Z,2),\n", + "\n", + "print \"\\n\\nSince 4.36 is closer to 3, 4Be9 is more stable\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Values of Z for different values of A are:\n", + "3.41 3.88 4.36 4.83 \n", + "\n", + "Since 4.36 is closer to 3, 4Be9 is more stable\n" + ] + } + ], + "prompt_number": 29 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 17.5, Page 891" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "from sympy import *\n", + "c2 = Symbol('c2')\n", + "\n", + "#Calculations\n", + "#For N14O17\n", + "Q1 = (14.00753+4.00206)*c2-(17.00450+1.00814)*c2\n", + "print \"Since, Q = \",Q1, \"which is negative, the reaction is endothermic\"\n", + "#For Li7He4\n", + "Q2 = (7.01822+1.00814)*c2-(4.00206+4.00206)*c2\n", + "print \"Since, Q = \",Q2, \"which is negative, the reaction is endothermic\"\n", + "#Answers differ due to rounding-off errors in Sympy" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Since, Q = -0.00305000000000177*c2 which is negative, the reaction is endothermic\n", + "Since, Q = 0.02224*c2 which is negative, the reaction is endothermic\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 17.7, Page 892" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "mp = 1.00814 #amu\n", + "mn = 1.00898 #amu\n", + "Mp = 30.98356 #amu\n", + "Msi = 30.98515 #amu\n", + "\n", + "#Calculations\n", + "Q = Mp+mn-Msi-mp #amu\n", + "Q = Q*931.5 #MeV\n", + "Eth = Q*(-(Mp+mn)/Mp)\n", + "\n", + "#Result\n", + "print \"Threshold frequency = %.3fMeV\"%Eth\n", + "#Rounding-off error" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Threshold frequency = 0.721MeV\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 17.8, Page 892\n" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "Q = -7.6342 #MeV\n", + "Mp = 19.0457 #amu\n", + "mi = 1.0087 #amu\n", + "me = 1.00728 #amu\n", + "Ki = 15\n", + "\n", + "#calculations\n", + "Ke = (Q*Mp-(mi-Mp)*Ki)/(me+Mp)\n", + "Eth = Q*(-(Mp+mn)/Mp)\n", + "\n", + "#Result\n", + "print \"Kinetic energy of protons = %.3f MeV\"%Ke\n", + "print \"Threshold frequency = %.3f MeV\"%Eth" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Kinetic energy of protons = 6.241 MeV\n", + "Threshold frequency = 8.039 MeV\n" + ] + } + ], + "prompt_number": 38 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 17.9, Page 893" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "e = 1.6e-019; # Energy equivalent of 1 eV, J/eV\n", + "N_A = 6.023e+023; # Avogadro's number\n", + "E_f = 200*1e+06*e; # Energy released per fission, J\n", + "\n", + "#Calculations\n", + "E_mol = E_f*N_A; # Energy released by one mole of U235, J\n", + "E = E_mol*1000/235; # Energy released by the fission of 1 kg of U235, J\n", + "\n", + "#Result\n", + "print \"The Energy released by the fission of 1 kg of U235 = %4.2e kWh\"%(E/(1000*3600))\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The Energy released by the fission of 1 kg of U235 = 2.28e+07 kWh\n" + ] + } + ], + "prompt_number": 39 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 17.10, Page 894" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "e = 1.6e-019; # Energy equivalent of 1 eV, J/eV\n", + "E = 3.2e+07; # Energy released per second by the reactor, J\n", + "\n", + "#Calculations\n", + "E_f = 200*1e+06*e; # Energy released per fission, J\n", + "N = E/E_f; # Number of fissions per second of U235, per second\n", + "\n", + "#Result\n", + "print \"The number of U235 atoms undergoing fissions per second = %1.0e\"%N\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The number of U235 atoms undergoing fissions per second = 1e+18\n" + ] + } + ], + "prompt_number": 40 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 17.11, Page 894" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "e = 1.6e-019; # Energy equivalent of 1 eV, J/eV\n", + "N_A = 6.023e+026; # Avogadro's number, per kmol\n", + "P = 2; # Power produced by the fission of U235, watt\n", + "\n", + "#Calculations\n", + "E_f = 200*1e+06*e; # Energy released per fission, J\n", + "FR = P/E_f; # Fission rate of U235, fission/sec\n", + "N = 0.5/235*N_A; # Number of U235 nuclei in 0.5 kg of U235\n", + "E = 200*N; # Energy released in the complete fissioning of 0.5 kg of U235, MeV\n", + "\n", + "#Results\n", + "print \"The fission rate of U235 = %4.2e fissions/sec\"%FR\n", + "print \"The energy released in the complete fissioning of 0.5 kg of U235 = %1.0e kcal\"%(E*1e+06*e/(1000*4.186))\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The fission rate of U235 = 6.25e+10 fissions/sec\n", + "The energy released in the complete fissioning of 0.5 kg of U235 = 1e+10 kcal\n" + ] + } + ], + "prompt_number": 41 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 17.12, Page 894" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "e = 1.6e-019; # Energy equivalent of 1 eV, J/eV\n", + "R_max = 0.6; # Radius of two dees of the cyclotron, m\n", + "B = 1.6; # Strength of pole pieces of the cyclotron, tesla\n", + "# For proton\n", + "m = 1.67e-027; # Mass of the proton, kg\n", + "q = 1.6e-019; # Charge on a proton, C\n", + "\n", + "#Calculations&Result\n", + "E = 1./2*q**2*R_max**2*B**2/(m*e*1e+06); # Energy of the proton, MeV\n", + "f_proton = q*B/(2*pi*m*1e+06); # Cyclotron oscillator frequency for the proton, MHz\n", + "print \"Energy of the proton = %5.2f MeV\"%E\n", + "print \"Cyclotron frequency for proton = %5.2f MHz\"%f_proton\n", + "# For deuteron\n", + "m = 2*1.67e-027; # Mass of the deuteron, kg\n", + "q = 1.6e-019; # Charge on a deuteron, C\n", + "E = 1./2*q**2*R_max**2*B**2/(m*e*1e+06); # Energy of the deuteron, MeV\n", + "f_deuteron = q*B/(2*pi*m*1e+06); # Cyclotron oscillator frequency for the deuteron, MHz\n", + "print \"Energy of the deuteron = %5.2f MeV\"%E\n", + "print \"Cyclotron frequency for deuteron = %5.2f MHz\"%f_deuteron\n", + "# For alpha-particle\n", + "m = 4*1.67e-027; # Mass of the alpha-particle, kg\n", + "q = 2*1.6e-019; # Charge on a alpha-particle, C\n", + "E = 1./2*q**2*R_max**2*B**2/(m*e*1e+06); # Energy of the deuteron, MeV\n", + "f_alpha = q*B/(2*pi*m*1e+06); # Cyclotron oscillator frequency for the alpha-particle, MHz\n", + "print \"Energy of the alpha-particle = %5.2f MeV\"%E\n", + "print \"Cyclotron frequency for alpha-particle = %5.2f MHz\"%f_alpha\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Energy of the proton = 44.15 MeV\n", + "Cyclotron frequency for proton = 24.40 MHz\n", + "Energy of the deuteron = 22.07 MeV\n", + "Cyclotron frequency for deuteron = 12.20 MHz\n", + "Energy of the alpha-particle = 44.15 MeV\n", + "Cyclotron frequency for alpha-particle = 12.20 MHz\n" + ] + } + ], + "prompt_number": 44 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 17.13, Page 895" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "e = 1.67e-013; # Energy equivalent of 1 eV, J/eV\n", + "R_max = 0.75; # Radius of two dees of the cyclotron, m\n", + "f = 15e+06; # Frequency of alternating potential, Hz\n", + "m = 1.67e-027; # Mass of the proton, kg\n", + "\n", + "#Calculations\n", + "# As E = 1/2*q^2*R_max^2*B^2/(m*e) and f = q*B/(2*%pi*m), solving for E\n", + "E = (2*pi**2*m*f**2*R_max**2)/(e);\n", + "\n", + "#Result\n", + "print \"Energy of the protons issuing out of the cyclotron = %6.4f MeV\"%E\n", + "#Incorrect answer in the textbook" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Energy of the protons issuing out of the cyclotron = 24.9824 MeV\n" + ] + } + ], + "prompt_number": 60 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 17.14, Page 896" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "e = 1.6e-019; # Charge on an electron, C \n", + "c = 3e+08; # Speed of light, m/s\n", + "B_orbit = 0.5; # Magnetic field at the orbit of the betatron, T\n", + "f = 60; # Operating frequency of the betatron, Hz\n", + "\n", + "#Calculations\n", + "omega = 2*pi*f; # Angular frequency of operation, rad/s\n", + "r = 1.6/2; # Radius of stable orbit, m\n", + "K_av = 4*omega*e*r**2*B_orbit/1.6e-019; # Average energy gained by the electron per turn, eV\n", + "K_max = c*e*r*B_orbit/1.6e-019; # Maximum energy gained by the eectron, eV\n", + "\n", + "#Results\n", + "print \"The average energy gained by the electron per turn = %5.1f eV\"%K_av\n", + "print \"The maximum energy gained by the electron = %5.1e eV\"%K_max\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The average energy gained by the electron per turn = 482.5 eV\n", + "The maximum energy gained by the electron = 1.2e+08 eV\n" + ] + } + ], + "prompt_number": 46 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 17.15, Page 896" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "q = 1.6e-019; # Charge on a deuteron, C \n", + "amu = 931.5; # Energy equivalent of 1 amu, MeV\n", + "m0 = 2.0141; # Rest mass of a deuteron, kg\n", + "B0 = 1.5; # Magnetic field at the centre of the synchrocyclotron, T\n", + "B = 1.431; # Magnetic field at the periphery of the synchrocyclotron, T \n", + "\n", + "#Calculations\n", + "f0 = q*B0/(2*3.14*m0*1.67e-027*1e+06); # Maximum frequency of Dee voltage of synhrocyclotron, MHz\n", + "f = 1e+07; # Minimum frequency of Dee voltage, Hz \n", + "m = (q*B)/(2*3.14*f*1.67e-027); # Mass of deuteron at the periphery of the Dee, amu\n", + "K = (m-m0)*amu; # Gain in energy of the deuteron, MeV\n", + "\n", + "#Results\n", + "print \"The maximum frequency of Dee voltage = %5.2f MHz\"%f0\n", + "print \"The gain in energy of the deuteron = %6.2f MeV\"%K\n", + "#Incorrect answer in textbook" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The maximum frequency of Dee voltage = 11.36 MHz\n", + "The gain in energy of the deuteron = 157.47 MeV\n" + ] + } + ], + "prompt_number": 63 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 17.16, Page 897" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "V = 1000; # Operating voltage of the GM counter, volt\n", + "a = 1e-04 # Radius of GM counter wire, m\n", + "b = 2e-02; # Radius of cathode, m\n", + "\n", + "#Calculations\n", + "E = V/(2.3026*a*log10(b/a)); # Maximum radial field at the surface of central wire of GM tube, V/m\n", + "tau = 1e+09; # Life time of GM tube, counts\n", + "N = tau/(50*60*60*2000); # Life of the GM counter, years\n", + "\n", + "#Results\n", + "print \"The maximum radial field at the surface of central wire of GM tube = %4.2e V/m\"%E\n", + "print \"The life of the GM counter = %4.2f years\"%N\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The maximum radial field at the surface of central wire of GM tube = 1.89e+06 V/m\n", + "The life of the GM counter = 2.78 years\n" + ] + } + ], + "prompt_number": 49 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 17.17, Page 898" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "I = 15.7; # Ionization potential of argon in GM counter, volt\n", + "a = 0.012/2*1e-02; # Radius of GM counter wire, m\n", + "b = 5./2*1e-02; # Radius of cathode, m\n", + "lamda = 7.8e-006; # Mean free path of argon in GM counter, m\n", + "\n", + "#Calculations\n", + "# As E*lambda = I = V*lambda/(2.3026*a*log10(b/a)), solving for V\n", + "V = 2.3026*a*I*log10(b/a)/lamda; # Voltage that must be applied to produce an avalanche in GM tube, volt\n", + "\n", + "#Result\n", + "print \"The voltage that must be applied to produce an avalanche in GM tube = %6.2f volt\"%V\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The voltage that must be applied to produce an avalanche in GM tube = 728.52 volt\n" + ] + } + ], + "prompt_number": 50 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 17.18, Page 898" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "count_err = 1e-03; # Fractional error in counting\n", + "m = 3; # Plateau slope\n", + "\n", + "#Calculations\n", + "delta_V = count_err*100/m*100; # Maximum permissible voltage fluctuation in a GM counter, volt\n", + "\n", + "#Result\n", + "print \"The maximum permissible voltage fluctuation in a GM counter = %3.1f volts\"%delta_V\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The maximum permissible voltage fluctuation in a GM counter = 3.3 volts\n" + ] + } + ], + "prompt_number": 51 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Applied_Physics_for_Engineers/Chapter_19.ipynb b/Applied_Physics_for_Engineers/Chapter_19.ipynb new file mode 100755 index 00000000..0897c570 --- /dev/null +++ b/Applied_Physics_for_Engineers/Chapter_19.ipynb @@ -0,0 +1,294 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 19: Superconductivity" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 19.1, Page 959" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "T_c = 6.2; # Critical temperature of lead in superconducting state, K\n", + "T = 4; # Temperature at which critical field of lead is to be found out, K\n", + "H_c0 = 0.064; # Critical field for lead at 0 K, MA/m\n", + "\n", + "#Calculation\n", + "H_cT = H_c0*(1-(T/T_c)**2); # Critical field for lead at 4 K, MA/m\n", + "\n", + "#Result\n", + "print \"The critical field for lead at 4 K = %5.3f MA/m\"%H_cT\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The critical field for lead at 4 K = 0.037 MA/m\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 19.2, Page 959" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "T_c1 = 4.153; # Critical temperature of mercury for its one isotope, K\n", + "M1 = 200.59; # Mass of first isotope of mercury, amu\n", + "M2 = 204; # Mass of second isotope of mercury, amu \n", + "\n", + "#Calculation \n", + "# From isotopic effect of superconductivity,\n", + "# T_c2/T_c1 = sqrt(M1/M2), solving for T_c2\n", + "T_c2 = T_c1*sqrt(M1/M2); # Critical temperature of mercury for second isotope, K\n", + "\n", + "#Result\n", + "print \"The critical temperature of mercury for its isotope of mass 204 amu = %5.3f K\"%T_c2\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The critical temperature of mercury for its isotope of mass 204 amu = 4.118 K\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 19.3, Page 960" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "d = 1e-003; # Diameter of aluminium wire, m\n", + "r = d/2; # Radius of aluminium wire, m\n", + "H_c = 7.9e+003; # Critical magnetic field for Al, A/m\n", + "\n", + "#Calculation\n", + "I_c = 2*3.14*r*H_c; # Critical current through superconducting aluminium wire, A\n", + "\n", + "#Result\n", + "print \"The critical current through superconducting aluminium wire = %6.3f A\"%I_c\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The critical current through superconducting aluminium wire = 24.806 A\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 19.4, Page 960" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "T_c = 7.18; # Critical temperature of lead in superconducting state, K\n", + "H_c0 = 6.5e+004; # Critical field for lead at 0 K, A/m\n", + "# At T = 4.2 K\n", + "T = 4.2; # Temperature at which critical field of lead is to be found out, K\n", + "H_cT = H_c0*(1-(T/T_c)**2); # Critical field for lead at 4 K, A/m\n", + "d = 1e-003; # Diameter of lead wire, m\n", + "r = d/2; # Radius of lead wire, m\n", + "I_c = 2*3.14*r*H_cT; # Critical current through superconducting lead wire, A\n", + "J_c = I_c/(3.14*r**2); # Critical current density for superconducting lead wire, A/Sq. meter\n", + "print \"The critical current density at %3.1f K = %5.3e A/Sq.m\"%(T, J_c)\n", + "# At T = 7 K\n", + "T = 7; # Temperature at which critical field of lead is to be found out, K\n", + "H_cT = H_c0*(1-(T/T_c)**2); # Critical field for lead at 4 K, A/m\n", + "d = 1e-003; # Diameter of lead wire, m\n", + "r = d/2; # Radius of lead wire, m\n", + "I_c = 2*3.14*r*H_cT; # Critical current through superconducting lead wire, A\n", + "J_c = I_c/(3.14*r**2); # Critical current density for superconducting lead wire, A/Sq. meter\n", + "print \"The critical current density at %3.1f K = %4.2e A/Sq.m\"%(T, J_c)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The critical current density at 4.2 K = 1.710e+08 A/Sq.m\n", + "The critical current density at 7.0 K = 1.29e+07 A/Sq.m\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 19.5, Page 961" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "T1 = 3; # Initial temperature of lead wire, K\n", + "T2 = 7.1; # Final temperature of lead wire, K\n", + "lambda1 = 39.6; # Initial London penetration depth for lead, mm\n", + "lambda2 = 173; # Final London penetration depth for lead, mm\n", + "\n", + "#Calculations\n", + "# As lambda_T = lambda_0*(1-(T/T_c)^4)^(-1/2) so\n", + "# (lambda1/lambda2)^2 = (T_c^4 - T2^4)/(T_c^4 - T1^4)\n", + "# Solving for T_c\n", + "T_c = ((T2**4-T1**4*(lambda1/lambda2)**2)/(1-(lambda1/lambda2)**2))**(1./4);\n", + "\n", + "#Result\n", + "print \"The critical temperature of lead = %5.3f K\"%T_c\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The critical temperature of lead = 7.193 K\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 19.6, Page 962" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "T_c = 7.2; # Critical temperature of lead in superconducting state, K\n", + "T = 5; # Temperature at which lead loses its superconducting state, K\n", + "H_cT = 3.3e+004; # Critical magnetic field for superconducting lead at 5 K, A/m\n", + "\n", + "#Calculation\n", + "# As H_cT = H_c0*(1-(T/T_c)^2), solving for H_c0\n", + "H_c0 = H_cT/(1-(T/T_c)**2); # Critical field for lead at 0 K, A/m \n", + "\n", + "#Result\n", + "print \"The critical magnetic field for lead at 0 K = %4.2e A/m\"%H_c0\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The critical magnetic field for lead at 0 K = 6.37e+04 A/m\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 19.7, Page 962" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "H_c0 = 2e+005; # Critical field for niobium at 0 K, A/m \n", + "H_cT = 1e+005; # Critical magnetic field for superconducting niobium at 5 K, A/m\n", + "T = 8; # Temperature at which lead loses its superconducting state, K\n", + "\n", + "#Calculation\n", + "# As H_cT = H_c0*(1-(T/T_c)^2), solving for T_c\n", + "T_c = T/(1-H_cT/H_c0)**(1./2);\n", + "\n", + "#Result\n", + "print \"The critical temperature for niobium = %6.3f K\"%T_c\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The critical temperature for niobium = 11.314 K\n" + ] + } + ], + "prompt_number": 7 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Applied_Physics_for_Engineers/Chapter_2.ipynb b/Applied_Physics_for_Engineers/Chapter_2.ipynb new file mode 100755 index 00000000..b9063ed3 --- /dev/null +++ b/Applied_Physics_for_Engineers/Chapter_2.ipynb @@ -0,0 +1,442 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 2: Quantum Mechanics" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 2.1, Page 79" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable Declaration\n", + "V = 50; # Given potential difference, V\n", + "\n", + "#Calculations\n", + "lamda = 12.24/sqrt(V); # Wavelength of the light, angstrom\n", + "\n", + "#Result\n", + "print \"The de-broglie wavelength of electron = %4.2f angstrom\"%lamda\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The de-broglie wavelength of electron = 1.73 angstrom\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 2.2, Page 79" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable Declaration\n", + "h = 6.62e-34; # Planck's constant, J-s\n", + "m0 = 1.6e-27; # Rest mass of proton, kg\n", + "c = 3.0e+8; # Speed of light, in m/s\n", + "v = c/20; # Velocity of the proton, in m/s\n", + "\n", + "#Calculations\n", + "lamda = (h*sqrt(1-v**2/c**2))/(m0*v);\n", + "\n", + "#Result\n", + "print \"The de broglie wavelength associated with the proton = %4.2e m\"%lamda\n", + "#answer differs due to rounding-off errors" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The de broglie wavelength associated with the proton = 2.75e-14 m\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 2.3, Page 79" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "c = 3.0e+8; # Speed of light, m/s\n", + "v = 2.0e+8; # Velocity of the proton, m/s\n", + "m0 = 1.6e-27; # Rest mass of proton, kg\n", + "h = 6.62e-34; # Plancks constant,J-s\n", + "\n", + "#Calculations\n", + "lamda = (h*sqrt(1-(v**2/c**2)))/(m0*v);\n", + "\n", + "#Result\n", + "print \"The wavelength of matter wave associated with the proton = %5.3e m\"%lamda\n", + "\n", + "#answer differs due to rounding-off errors" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The wavelength of matter wave associated with the proton = 1.542e-15 m\n" + ] + } + ], + "prompt_number": 16 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 2.5, Page 80" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "a = 0.003; # Accuracy of the electron,in percent\n", + "s = 5e+03; # Speed of the electron,in m/s\n", + "del_v = (a/100)*s; # Change in velocity,in m/s\n", + "m0 = 9.1e-31; # Rest mass of the electron,in kg\n", + "hcut = 1.054e-34; # Plancks constant,J-s\n", + "\n", + "#Calculations\n", + "del_x = hcut/(2*del_v*m0);\n", + "\n", + "#Result\n", + "print \"The uncertainity in the position of the electron = %4.2e m\"%del_x\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The uncertainity in the position of the electron = 3.86e-04 m\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 2.6, Page 81" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "del_t = 2.5e-14; # Lifetime of the hydrogen atom in excited state\n", + "hcut = 1.054e-34; # Planck's constant,in J-s\n", + "e = 1.6e-19; # Charge on electron,in C\n", + "\n", + "#Calculations\n", + "del_E = hcut/(2*del_t*e); # Energy of the state, in eV\n", + "\n", + "#Result\n", + "print \"The minimum error in measurement of lifetime of excited state of hydrogen atom = %6.4f eV\"%del_E\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The minimum error in measurement of lifetime of excited state of hydrogen atom = 0.0132 eV\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 2.7, Page 81" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "del_x = 1e-09; # Uncertainty in position of the electron, m\n", + "m0 = 9.1e-031; # Rest mass of an electron, kg\n", + "hcut = 1.054e-034; # Planck's constant,in J-s\n", + "\n", + "#Calculations\n", + "del_v = hcut/(2*del_x*m0); # Uncertainity in velocity of the electron\n", + "\n", + "#Result\n", + "print \"The uncertainity in the velocity of an electron = %4.2e m/s\"%del_v\n", + "#Incorrect answer in the textbook" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The uncertainity in the velocity of an electron = 5.79e+04 m/s\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 2.8, Page 81" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "hcut = 1.054e-34; # Reduced Planck's constant, Js\n", + "v = 3e+07; # Velocity of the electron, m/s\n", + "c = 3e+08; # Speed of light in vacuum, m/s\n", + "m0 = 9.1e-31; # Rest mass of an electron, kg\n", + "del_v = 3e+08; # Uncertainty in velocity of the electron, m/s\n", + "\n", + "#Calculations\n", + "del_x = (hcut*sqrt(1-v**2/c**2))/(2*m0*del_v);\n", + "\n", + "#Result\n", + "print \"The smallest possible uncertainity in position of the electron = %6.4f angstrom\"%(del_x/1e-010)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The smallest possible uncertainity in position of the electron = 0.0019 angstrom\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 2.9, Page 82" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "n = 1;\n", + "m0 = 9.1e-031; # Mass of the electron, kg\n", + "a = 1e-10; # Width of the box, m\n", + "h = 6.63e-034; # Planck's constant, J-s\n", + "\n", + "#Calculations\n", + "E = n**2*h**2/(8*m0*a**2);\n", + "\n", + "#Result\n", + "print \"The energy of the electron moving in 1D infinetly high potential box = %5.2e J\"%E\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The energy of the electron moving in 1D infinetly high potential box = 6.04e-18 J\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 2.10, Page 83" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "#n = [1,2]; # Shell numbers for two lowest permitted energy of the electron \n", + "m0 = 9.1e-31; # Mass of the electron, kg\n", + "a = 2.5e-10; # Width of the box, m\n", + "h = 6.63e-34; # Planck's constant, J-s\n", + "e = 1.6e-19; # Charge on electron, C\n", + "\n", + "#Calculations&Results\n", + "E = round((h**2)/(8*m0*a**2*e));\n", + "for n in range(1,3):\n", + " print \"The lowest two permitted energy values of an electron are\"\n", + " print E*n**2,\"eV\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The lowest two permitted energy values of an electron are\n", + "6.0 eV\n", + "The lowest two permitted energy values of an electron are\n", + "24.0 eV\n" + ] + } + ], + "prompt_number": 25 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 2.11, Page 83" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "m0 = 1.67e-27; # Rest mass,in kg\n", + "a = 1e-14; # Size of the box\n", + "h = 6.63e-34; # Planck's constant,in J-s\n", + "n = 1; # Quantum number for lowest energy state\n", + "\n", + "#Calculations\n", + "E_n = n**2*h**2/(8*m0*a**2);\n", + "\n", + "#Result\n", + "print \"The lowest energy of the neutron confined to the nucleus = %4.2e J\"%E_n\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The lowest energy of the neutron confined to the nucleus = 3.29e-13 J\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 2.12, Page 83" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "m0 = 9.1e-31; # Rest mass, kg\n", + "a = 1e-10; # Length of the box, m\n", + "h = 6.62e-34; # Planck's constat, J-s\n", + "n1 = 1; # Ground state\n", + "n2 = 2; # First excited state\n", + "e = 1.6e-19; # Charge on electron, C\n", + "\n", + "#Calculations\n", + "E1 = (n1**2*h**2)/(8*m0*a**2*e);\n", + "E2 = (n2**2*h**2)/(8*m0*a**2*e);\n", + "del_E = E2-E1; \n", + "\n", + "#Result\n", + "print \"The energy difference between the ground state and the first excited state = %5.1f eV\"%del_E\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The energy difference between the ground state and the first excited state = 112.9 eV\n" + ] + } + ], + "prompt_number": 11 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Applied_Physics_for_Engineers/Chapter_3.ipynb b/Applied_Physics_for_Engineers/Chapter_3.ipynb new file mode 100755 index 00000000..074f94b3 --- /dev/null +++ b/Applied_Physics_for_Engineers/Chapter_3.ipynb @@ -0,0 +1,581 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 3: Statistical Mechanics" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.1, Page 132" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable Declaration\n", + "m = 5.32e-26; # Mass of one oxygen molecule, kg\n", + "k_B = 1.38e-23; # Boltzmann constant, J/K\n", + "T = 200; # Temperature of the system, K\n", + "v = 100; # Speed of the oxygen molecules, m/s\n", + "dv = 1; # Increase in speed of the oxygen molecules, m/s\n", + "\n", + "#Calculations\n", + "P = 4*pi*(m/(2*pi*k_B*T))**(3./2)*exp((-m*v**2)/(2*k_B*T))*v**2*dv;\n", + "\n", + "#Result\n", + "print \"The probability that the speed of oxygen molecule is %4.2e\"%P\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The probability that the speed of oxygen molecule is 6.13e-04\n" + ] + } + ], + "prompt_number": 19 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.2, Page 132" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "A = 32; # Gram atomic mass of oxygen, g/mol\n", + "N_A = 6.023e+026; # Avogadro's number, per kmol\n", + "m = A/N_A; #mass of the molecule, kg\n", + "k_B = 1.38e-23; # Boltzmann constant, J/K \n", + "T = 273; # Temperature of the gas, K\n", + "\n", + "#Calculations&Results\n", + "v_av = 1.59*sqrt(k_B*T/m); # Average speed of oxygen molecule, m/s\n", + "print \"The average speed of oxygen molecule is = %3d m/s\"%v_av\n", + "v_rms = 1.73*sqrt(k_B*T/m); # The mean square speed of oxygen molecule, m/s \n", + "print \"The root mean square speed of oxygen gas molecule is = %3d m/s\"%(ceil(v_rms))\n", + "v_mp = 1.41*sqrt(k_B*T/m); # The most probable speed of oxygen molecule, m/s \n", + "print \"The most probable speed of oxygen molecule is = %3d m/s\"%(ceil(v_mp)) #incorrect answer in the textbook\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The average speed of oxygen molecule is = 423 m/s\n", + "The root mean square speed of oxygen gas molecule is = 461 m/s\n", + "The most probable speed of oxygen molecule is = 376 m/s\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.3, Page 133" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "m_H = 2; # Gram molecular mass of hydrogen, g\n", + "m_O = 32.; # Gram molecular mass of oxygen, g\n", + "k_B = 1.38e-23; # Boltzmann constant, J/K \n", + "v_avO = 1.; # For simplicity average speed of oxygen gas molecule is assumed to be unity, m/s\n", + "v_avH = 2*v_avO; # The average speed of hydrrogen gas molecule, m/s\n", + "T_O = 300.; # Temperature of oxygen gas, K\n", + "\n", + "#Calculations\n", + "# As v_avO/v_av_H = sqrt(T_O/T_H)*sqrt(m_H/m_O), solving for T_H\n", + "T_H = (v_avH/v_avO*sqrt(m_H/m_O)*sqrt(T_O))**2; # Temperature at which the average speed of hydrogen gas molecules is the same as that of oxygen gas molecules, K\n", + "\n", + "#Result\n", + "print \"Temperature at which the average speed of hydrogen gas molecules is the same as that of oxygen gas molecules at 300 K = %2d\"%T_H\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Temperature at which the average speed of hydrogen gas molecules is the same as that of oxygen gas molecules at 300 K = 75\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.4, Page 133" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "v_mp = 1; # Most probable speed of gas molecules, m/s\n", + "dv = 1.01*v_mp-0.99*v_mp; # Change in most probable speed, m/s\n", + "v = v_mp; # Speed of the gas molecules, m/s\n", + "\n", + "#Calculations\n", + "Frac = 4/sqrt(pi)*1/v_mp**3*exp(-v**2/v_mp**2)*v**2*dv; \n", + "\n", + "#Result\n", + "print \"The fraction of oxygen gas molecules within one percent of most probable speed = %5.3f\"%Frac\n", + "#rounding-off error" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The fraction of oxygen gas molecules within one percent of most probable speed = 0.017\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.5, Page 134" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math \n", + "#Variable Declaration\n", + "n = 5.; # Number of distinguishable particles which are to be distributed among cells\n", + "n1 = [5, 4, 3, 3, 2]; # Possible occupancy of particles in first cell\n", + "n2 = [0 ,1, 2, 1, 2]; # Possible occupancy of particles in second cell\n", + "n3 = [0 ,0, 0, 1, 1]; # Possible occupancy of particles in third cell\n", + "BIG_W = 0.;\n", + "\n", + "\n", + "print(\"_____________________________________\");\n", + "print(\"n1 n2 n3 5/(n1!n2!n3!)\");\n", + "print(\"_____________________________________\");\n", + "for i in range(5):\n", + " W = math.factorial(n)/(math.factorial(n1[i])*math.factorial(n2[i])*math.factorial(n3[i]));\n", + " if BIG_W < W:\n", + " BIG_W = W;\n", + " ms = [n1[i], n2[i] ,n3[i]];\n", + "\n", + " print \"%d %d %d %d\"%(n1[i], n2[i], n3[i], W);\n", + "\n", + "print \"_____________________________________\";\n", + "print \"The macrostates of most probable distribution with thermodynamic probability %d are:\"%(BIG_W);\n", + "print \"(%d, %d, %d), (%d, %d, %d) and (%d, %d, %d)\"%(ms[0], ms[1], ms[2], ms[1], ms[2], ms[0],ms[2], ms[0], ms[1]);\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "_____________________________________\n", + "n1 n2 n3 5/(n1!n2!n3!)\n", + "_____________________________________\n", + "5 0 0 1\n", + "4 1 0 5\n", + "3 2 0 10\n", + "3 1 1 20\n", + "2 2 1 30\n", + "_____________________________________\n", + "The macrostates of most probable distribution with thermodynamic probability 30 are:\n", + "(2, 2, 1), (2, 1, 2) and (1, 2, 2)\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.6, Page 135" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "g1 = 4; # Intrinsic probability of first cell\n", + "g2 = 2; # Intrinsic probability of second cell\n", + "k = 2; # Number of cells \n", + "n = 8; # Number of distinguishable particles\n", + "n1 = 8; # Number of cells in first compartment\n", + "n2 = n - n1; # Number of cells in second compartment\n", + "\n", + "#Calculations\n", + "W = factorial(n)*1/factorial(n1)*1/factorial(n2)*(g1)**n1*(g2)**n2;\n", + "\n", + "#Result\n", + "print \"The thermodynamic probability of the macrostate (8,0) = %5d\"%W\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The thermodynamic probability of the macrostate (8,0) = 65536\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.7, Page 135" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math \n", + "#Variable Declaration\n", + "def st(val):\n", + " str1 = \"\"\n", + " if val == 3 :\n", + " str1 = 'aaa';\n", + " elif val == 2 :\n", + " str1 = 'aa'; \n", + " elif val == 1 :\n", + " str1 = 'a';\n", + " elif val == 0:\n", + " str1 = '0'; \n", + " return str1\n", + "\n", + "g = 3; # Number of cells in first compartment\n", + "n = 3; # Number of bosons\n", + "p = 3;\n", + "r = 1; # Index for number of rows\n", + "print(\"All possible meaningful arrangements of three particles in three cells are:\")\n", + "print(\"__________________________\");\n", + "print(\"Cell 1 Cell 2 Cell 3\");\n", + "print(\"__________________________\");\n", + "\n", + "for i in range(0,g+1):\n", + " for j in range(0,n+1):\n", + " for k in range(0,p+1):\n", + " if (i+j+k == 3):\n", + " print \"%4s %4s %4s\"%(st(i), st(j), st(k)); \n", + " print \"__________________________\";\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "All possible meaningful arrangements of three particles in three cells are:\n", + "__________________________\n", + "Cell 1 Cell 2 Cell 3\n", + "__________________________\n", + " 0 0 aaa\n", + " 0 a aa\n", + " 0 aa a\n", + " 0 aaa 0\n", + "__________________________\n", + " a 0 aa\n", + " a a a\n", + " a aa 0\n", + "__________________________\n", + " aa 0 a\n", + " aa a 0\n", + "__________________________\n", + " aaa 0 0\n", + "__________________________\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.8, Page 136" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "g1 = 3; # Number of cells in first compartment\n", + "g2 = 4; # Number of cells in second compartment\n", + "k = 2; # Number of compartments\n", + "n1 = 5; # Number of bosons\n", + "n2 = 0; # Number of with no bosons\n", + "\n", + "#Calculations\n", + "W_50 = factorial(g1+n1-1)*factorial(g2+n2-1)/(factorial(n1)*factorial(g1-1)*factorial(n2)*factorial(g2-1));\n", + "\n", + "#Result\n", + "print \"The probability for the macrostate (5,0) is = %2d\"%W_50\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The probability for the macrostate (5,0) is = 21\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.11, Page 138" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "r = 1.86e-10; # Radius of Na, angstrom\n", + "m = 9.1e-31; # Mass of electron,in kg\n", + "h = 6.62e-34; # Planck's constant, J-s\n", + "N = 2; # Number of free electrons in a unit cell of Na\n", + "\n", + "#Calculations\n", + "a = 4*r/sqrt(3); # Volume of Na, m\n", + "V = a**3; # Volume of the unit cell of Na, meter cube\n", + "E = h**2/(2*m)*(3*N/(8*pi*V))**(2./3);\n", + "\n", + "#Result\n", + "print \"The fermi energy of the Na at absolute zero is = %4.2e J\"%E\n", + "#rounding-off error" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The fermi energy of the Na at absolute zero is = 5.02e-19 J\n" + ] + } + ], + "prompt_number": 25 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.12, Page 13" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "m = 9.1e-31; # mass of electron, kg\n", + "h = 6.62e-34; # Planck's constant, J-s\n", + "V = 108/10.5*1e-06; # Volume of 1 gm mole of silver, metre-cube\n", + "N = 6.023e+023; # Avogadro's number\n", + "\n", + "#Calculations\n", + "E_F = h**2/(2*m)*(3*N/(8*pi*V))**(2./3); # Fermi energy at absolute zero, J\n", + "\n", + "#Result\n", + "print \"The fermi energy of the silver at absolute zero = %4.2e J\"%E_F\n", + "#rounding-off error" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The fermi energy of the silver at absolute zero = 8.80e-19 J\n" + ] + } + ], + "prompt_number": 26 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.13, Page 13" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "pbe = 24.2e22 #electrons/cm^3\n", + "pcs = 0.91e22 #electrons/cm^3\n", + "efbe = 14.44 #ev\n", + "\n", + "#Calculations\n", + "Efcs = efbe*((pcs/pbe)**(2./3))\n", + "\n", + "#Result\n", + "print \"Fermi energy of free electrons in cesium = %.3f eV\"%Efcs\n", + "#rounding-off error" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Fermi energy of free electrons in cesium = 1.621 eV\n" + ] + } + ], + "prompt_number": 46 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.14, Page 140" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "e = 1.6e-019; # Energy equivalent of 1 eV, J/eV\n", + "m = 9.1e-31; # Mass of the elecron, kg \n", + "h = 6.63e-34; # Planck's constant, Js\n", + "EF = 4.72*e; # Fermi energy of free electrons in Li, J\n", + "\n", + "#Calculations\n", + "rho = 8*pi/3*(2*m*EF/h**2)**(3./2); # Electron density at absolute zero, electrons/metre-cube\n", + "\n", + "#Result\n", + "print \"The electron density in lithium at absolute zero = %4.2e electrons/metre-cube\"%rho\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The electron density in lithium at absolute zero = 4.63e+28 electrons/metre-cube\n" + ] + } + ], + "prompt_number": 47 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 3.15, Page 140" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "e = 1.6e-019; # Energy equivalent of 1 eV, J/eV\n", + "k_B = 1.38e-023; # Boltzmann constant, J/K\n", + "f_E = 0.01; # Probability that a state with energy 0.5 eV above the Fermi energy is occupied by an electron, eV \n", + "delta_E = 0.5; # Energy difference (E-Ef)of fermi energy, eV\n", + "\n", + "#Calculations\n", + "# Since f_E = 1/(exp((E-Ef)/(k_B*T))+1), solvinf for T \n", + "T = delta_E/(log((1-f_E)/f_E)*k_B/e); # Temperature at which the level above the fermi level is occupied by the electron, K\n", + "\n", + "#Result\n", + "print \"The temperature at which the level above the fermi level is occupied by the electron = %4d K\"%ceil(T)\n", + "#rounding-off error" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The temperature at which the level above the fermi level is occupied by the electron = 1262 K\n" + ] + } + ], + "prompt_number": 49 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Applied_Physics_for_Engineers/Chapter_4.ipynb b/Applied_Physics_for_Engineers/Chapter_4.ipynb new file mode 100755 index 00000000..6943795a --- /dev/null +++ b/Applied_Physics_for_Engineers/Chapter_4.ipynb @@ -0,0 +1,813 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 4: Geometrical Optics" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.2, Page 191" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "r = 1; # For convenience assume radius of the circle to be unity, unit\n", + "alpha = 0.8*r; # Distance of light source from the centre of the spherical shell, unit\n", + "\n", + "#Calculations\n", + "cos_phi_by_2 = sqrt((alpha+1)/(4*alpha));\n", + "\n", + "#Result\n", + "print \"cos(phi/2) = %d/4\"%(cos_phi_by_2*4)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "cos(phi/2) = 3/4\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.3, Page 193" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "f1 = 5.; # Focal length of thin convex lens, cm \n", + "f2 = 3.; # Focal length of thin convex lens, cm \n", + "d = 2.; # Separation between the lenses, cm\n", + "\n", + "#Calculations\n", + "F = (1./f1)+(1./f2)-(d/(f1*f2)); # Equivalent focal length of a combination of the two lenses, cm\n", + "\n", + "#Result\n", + "print \"The equivalent focal length of the combination of lenses = %3.1f cm\"%F\n", + "#incorrect answers in the textbook" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The equivalent focal length of the combination of lenses = 0.4 cm\n" + ] + } + ], + "prompt_number": 33 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.4, Page 194" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "P1 = 5; # Power of first converging lens, diopter\n", + "P2 = 4; # Power of second converging lens, diopter\n", + "d = 0.1; # Separation distance between two lenses, cm\n", + "\n", + "#Calculations\n", + "P = P1+P2-d*P1*P2;\n", + "f = 1/P*100; # The corresponding value of the focal length of the lens combination, cm\n", + "\n", + "#Result\n", + "print \"The focal length of the combination of lenses of given powers = %5.2f cm\"%f\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The focal length of the combination of lenses of given powers = 14.29 cm\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.5, Page 194" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "f1 = 30.; # Focal length first convex lens, cm \n", + "f2 = -50.; # Focal length of second convex lens, cm \n", + "d = 20.; # Separation distance between lenses, cm \n", + "\n", + "#Calculations\n", + "F = f1*f2/(f1+f2-d); # Equivalent focal length of a combination of the two lenses, cm\n", + "\n", + "#Result\n", + "print \"The equivalent focal length of the combination = %4.1f cm\"%F\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The equivalent focal length of the combination = 37.5 cm\n" + ] + } + ], + "prompt_number": 34 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.7, Page 195" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "f1 = 4.; # Focal length of thin convex lens, cm \n", + "f2 = 12.; # Focal length of thin convex lens, cm \n", + "d = 8.; # Separation distance between the lenses, cm\n", + "\n", + "#Calculations&Results\n", + "F = f1*f2/(f1+f2-d); # Equivalent focal length of the combination, cm\n", + "L1H1 = d*F/f2; # Distance of first principal point H1 from first lens, cm\n", + "print \"The distance of the first principal point H1 from the first lens = %d cm\"%L1H1\n", + "L2H2 = -d*F/f1; # Distance of first principal point H2 from second lens, cm\n", + "print \"The distance of the second principal point H2 from the second lens = %d cm\"%L2H2\n", + "L1F1 = -F*(1-d/f2); # Distance of first focal point F1 from first lens, cm\n", + "print \"The distance of the first focal point F1 from the first lens = %d cm\"%L1F1\n", + "L2F2 = F*(1-d/f1); # Distance of second focal point F2 from first lens, cm\n", + "print \"The distance of the second focal point F2 from the second lens= %d cm\"%L2F2\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The distance of the first principal point H1 from the first lens = 4 cm\n", + "The distance of the second principal point H2 from the second lens = -12 cm\n", + "The distance of the first focal point F1 from the first lens = -2 cm\n", + "The distance of the second focal point F2 from the second lens= -6 cm\n" + ] + } + ], + "prompt_number": 35 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.8, Page 195" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "f1 = 25.; # Focal length of thin convex lens, cm \n", + "f2 = -15.; # Focal length of thin concave lens, cm \n", + "d = 15.; # Separation distance between the lenses, cm \n", + "\n", + "#Calculations&Results\n", + "# We know that, F = f1*f2/f1+f2-d then\n", + "F = f1*f2/(f1+f2-d); # The equivalent focal length of the combination\n", + "L1H1 = d*F/f2; # The distance of the first principal point H1 from the first lens, cm\n", + "print \"The distance of the first principal point H1 from the first lens = %d cm\"%L1H1\n", + "L2H2 = -d*F/f1; # The distance of the second principal point H2 from the first lens, cm\n", + "print \"The distance of the second principal point H2 from the second lens = %d cm\"%L2H2\n", + "L1F1 = -F*(1-d/f2); # The distance of the first focal point F1 from the first lens, cm\n", + "print \"The distance of the first focal point H1 from the first lens = %d cm\"%L1F1\n", + "L2F2 = F*(1-d/f1); # The distance of the second principal point F2 from the first lens, cm\n", + "print \"The distance of the second focal point H2 from the second lens= %d cm\"%L2F2\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The distance of the first principal point H1 from the first lens = -75 cm\n", + "The distance of the second principal point H2 from the second lens = -45 cm\n", + "The distance of the first focal point H1 from the first lens = -150 cm\n", + "The distance of the second focal point H2 from the second lens= 30 cm\n" + ] + } + ], + "prompt_number": 36 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.9, Page 196" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math \n", + "from scipy.linalg import solve\n", + "from numpy import *\n", + "\n", + "#Variable declaration\n", + "w1 = 0.024; # Magnitude of the print ersive power of first lens\n", + "w2 = 0.036; # Magnitude of the print ersive power of second lens\n", + "\n", + "#Calculations\n", + "# Let 1/f1 = x and 1/f2 = y, then\n", + "# The condition for achromatic combination of two lenses, w1/f1 + w2/f2 = 0 => w1*x + w2*y = 0 --- [i]\n", + "F = 90.; # Given focal length, cm\n", + "# Also F = 1/f1 + 1/f2 => F = x + y ---- (II)\n", + "A = array([[w1 ,w2],[ 1, 1]]); # Square matrix\n", + "B = array([0,1/F]); # Column vector\n", + "X = solve(A,B)\n", + "f1 = 1/X[0]; # Focal length of convex lens, cm\n", + "f2 = 1/X[1]; # Focal length of concave lens, cm\n", + "\n", + "#Results\n", + "print \"The focal length of convex lens = %.f cm\"%((f1))\n", + "print \"The focal length of concave lens = %.f cm\"%((f2))\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The focal length of convex lens = 30 cm\n", + "The focal length of concave lens = -45 cm\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.10, Page 197" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math \n", + "from scipy.linalg import solve\n", + "from numpy import *\n", + "\n", + "\n", + "#Variable declaration\n", + "w1 = 0.02; # Magnitude of the dispersive power of first lens\n", + "w2 = 0.04; # Magnitude of the dispersive power of second lens\n", + "\n", + "#Calculations\n", + "# Let 1/f1 = x and 1/f2 = y, then\n", + "# The condition for achromatic combination of two lenses, w1/f1 + w2/f2 = 0 => w1*x + w2*y = 0 --- (I)\n", + "F = 20.; # Given focal length of achromatic doublet, cm\n", + "# Also F = 1/f1 + 1/f2 => F = x + y ---- (II)\n", + "A = [[w1, w2], [1, 1]]; # Square matrix\n", + "B = [0,1/F]; # Column vector\n", + "X = solve(A,B); # Characteristic roots of the simultaneous equations, cm\n", + "f1 = 1/X[0]; # Focal length of convex lens, cm\n", + "f2 = 1/X[1]; # Focal length of concave lens, cm\n", + "\n", + "#Results\n", + "print \"The focal length of convex lens = %2d cm\"%(ceil(f1))\n", + "print \"The focal length of concave lens = %2d cm\"%(ceil(f2))\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The focal length of convex lens = 10 cm\n", + "The focal length of concave lens = -20 cm\n" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.11, Page 197" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math \n", + "from numpy import *\n", + "from scipy.linalg import solve\n", + "#Variable declaration\n", + "w1 = 0.017; # Magnitude of the print ersive power of first lens\n", + "w2 = 0.034; # Magnitude of the print ersive power of second lens\n", + "\n", + "\n", + "# Let 1/f1 = x and 1/f2 = y, then\n", + "# The condition for achromatic combination of two lenses, w1/f1 + w2/f2 = 0 => w1*x + w2*y = 0 --- [i]\n", + "F = 40.; # Given focal length of achromatic doublet, cm\n", + "# Also F = 1/f1 + 1/f2 => F = x + y ---- (II)\n", + "A = [[w1, w2],[ 1, 1]]; # Square matrix\n", + "B = [0,1/F]; # Column vector\n", + "X = solve(A,B); # Characteristic roots of the simulmath.taneous equations, cm\n", + "f1 = 1/X[0]; # Focal length of convex lens, cm\n", + "f2 = 1/X[1]; # Focal length of concave lens, cm\n", + "# For the convex lens\n", + "R2 = -25.; # Radius of curvature of the contact surface, cm \n", + "mu = 1.5; # Mean refractive index of crown glass\n", + "# From the Lens Maker formula, 1/f = (mu - 1)*(1/R1-1/R2), solving for R1\n", + "f = f1;\n", + "R1 = 1/(1/(f*(mu-1))+1/R2); # Radius of curvature of second surface of first lens, cm\n", + "print \"The radius of curvature of second surface of first lens = %5.2f cm\"%R1\n", + "# For the concave lens\n", + "R1 = -25.; # Radius of curvature of the contact surface, cm \n", + "mu = 1.7; # Mean refractive index of flint glass\n", + "# From the Lens Maker formula, 1/f = (mu - 1)*(1/R1-1/R2), solving for R1\n", + "f = f2;\n", + "R2 = 1/(1/R1-1/(f*(mu-1))); # Radius of curvature of second surface of second lens, cm\n", + "print \"The radius of curvature of second surface of second lens = %5.2f cm\"%R2\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The radius of curvature of second surface of first lens = 16.67 cm\n", + "The radius of curvature of second surface of second lens = -233.33 cm\n" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.12, Page 199" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "# For flint glass\n", + "mu_C = 1.665; # Refractive index of flint glass for C line\n", + "mu_F = 1.700; # Refractive index of flint glass for F line\n", + "\n", + "#Calculations\n", + "mu_D = (mu_F+mu_C)/2; # Refractive index of flint glass for D line\n", + "w2 = (mu_F-mu_C)/(mu_D-1); # Magnitude of the dispersive power of second lens of flint glass\n", + "# For crown glass\n", + "mu_C = 1.510; # Refractive index of crown glass for C line\n", + "mu_F = 1.536; # Refractive index of crown glass for F line\n", + "mu_D = (mu_F+mu_C)/2; # Refractive index of flint glass for D line\n", + "w1 = (mu_F-mu_C)/(mu_D-1); # Magnitude of the dispersive power of second lens of crown glass\n", + "f = 50.; # Focal length of acromatic doublet, cm\n", + "FD = f*(w2-w1)/w2; # Focal length of D line of the Fraunhofer spectrum due to convex lens of crown glass\n", + "FC = FD*(mu_D - 1)/(mu_C - 1); # Focal length of C component of converging lens, cm\n", + "\n", + "#Result\n", + "print \"The focal length of C component of converging lens = %4.2f cm\"%FC\n", + "#rounding-off error" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The focal length of C component of converging lens = 1.57 cm\n" + ] + } + ], + "prompt_number": 37 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.13, Page 200" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "F = 50.; # Equivalent focal length of combination of two lenses, cm\n", + "\n", + "#Calculations\n", + "#d = f1+f2/2, condition for no chromatic aberration (1)\n", + "#d = f2-f1, condition for minimum spherical aberration (2)\n", + "# From (1) and (2), f1 = 3*d/2, f2 = d/2\n", + "# As 1/F = 1/f1 + 1/f2 - d/(f1*f2), solving for d\n", + "d = 4./3*50; # Distance of separation betwen two lenses, cm\n", + "f1 = 3*d/2,\n", + "f2 = d/2;\n", + "\n", + "#Results\n", + "print \"f1 = %.f cm\"%(f1)\n", + "print \"f2 = %5.2f cm\"%(f2)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "f1 = 100 cm\n", + "f2 = 33.33 cm\n" + ] + } + ], + "prompt_number": 40 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.14, Page 201" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "mu_R = 1.5230; # Refractive index for red wavelength\n", + "mu_V = 1.5145; # Refractive index for violet wavelength\n", + "R1 = 40.; # Radius of curvature for red wavelength, cm\n", + "R2 = -10.; # Radius of curvature for violet wavelength, cm\n", + "\n", + "#Calculations\n", + "# As 1/f = (mu - 1)*(1/R1 - 1/R2), solving for fV and fR\n", + "fV = 1./((mu_V-1)*(1/R1-1/R2)); # Focal length for violet wavelength, cm \n", + "fR = 1./((mu_R-1)*(1/R1-1/R2)); # Focal length for violet wavelength, cm \n", + "l = fR - fV; # Longitudinal chromatic aberration, cm\n", + "\n", + "#Result\n", + "print \"The longitudinal chromatic aberration = %5.3f cm\"%(abs(l))\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The longitudinal chromatic aberration = 0.253 cm\n" + ] + } + ], + "prompt_number": 41 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.15, Page 202" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "F = 10; # Equivalent focal length of a combination of two lenses, cm\n", + "d = 2; # Separation distance between two lenses, cm\n", + "\n", + "#Calculations\n", + "# As d = f1-f2, condition for minimum spherical aberration => f1 = d+f2\n", + "# and F = f1*f2/(f1+f2-d), so solving for f2\n", + "f2 = 2*F-d; # Focal length of second lens, cm\n", + "f1 = d+f2; # Focal length of first lens, cm\n", + "\n", + "#Result\n", + "print \"f1 = %2d cm, f2 = %2d cm\"%(f1, f2)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "f1 = 20 cm, f2 = 18 cm\n" + ] + } + ], + "prompt_number": 21 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.16, Page 202" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "mu = 1.6; # Refractive index of aplanatic surface\n", + "R = 3.2; # Radius of curvature, cm\n", + "\n", + "#Calculations&Results\n", + "R1 = R/mu; # First radius of the aplanatic surface, cm \n", + "print \"R1 = %3.1f cm\"%R1\n", + "R2 = R*mu; # Second radius of the aplanatic surface, cm \n", + "print \"R2 = %4.2f cm\"%R2\n", + "#Since the image of an object at one aplanatic point will be formed by the sphere at the other aplantic point,so the is\n", + "m = mu**2; # The lateral magnification of the image\n", + "print \"The lateral magnification of the image = %4.2f\"%m\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "R1 = 2.0 cm\n", + "R2 = 5.12 cm\n", + "The lateral magnification of the image = 2.56\n" + ] + } + ], + "prompt_number": 23 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.17, Page 203" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "mu = 1.52; # Refractive index of aplanatic surface\n", + "R = 30; # Radius of curvature, cm\n", + "\n", + "#Calculations&Results\n", + "R1 = R/mu; # First radius of the aplanatic surface, cm \n", + "print \"R1 = %5.2f cm\"%R1\n", + "R2 = R*mu; # Second radius of the aplanatic surface, cm \n", + "print \"R2 = %4.1f cm\"%R2\n", + "#Since the image of an object at one aplanatic point will be formed by the sphere at the other aplantic point,so the is\n", + "m = mu**2; # The lateral magnification of the image\n", + "print \"The lateral magnification of the image = %4.2f\"%m\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "R1 = 19.74 cm\n", + "R2 = 45.6 cm\n", + "The lateral magnification of the image = 2.31\n" + ] + } + ], + "prompt_number": 24 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.18, Page 203" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "F = 5; # Equivalent focal length of Huygens eyepiece, cm\n", + "\n", + "#Calculations\n", + "# as f1 = 3*f, f2 = f and d = 2*f, therefore\n", + "f = 2./3*F; # Focal length of base lens, cm\n", + "f1 = 3*f; # Focal length of field lens, cm\n", + "\n", + "#Result\n", + "print \"The focal length of the field lens = %2d cm\"%f1\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The focal length of the field lens = 10 cm\n" + ] + } + ], + "prompt_number": 26 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.19, Page 204" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "f = 10; # Given focal length of each lens, cm\n", + "f1 = f; # Focal length of first lens, cm \n", + "f2 = f; # Focal length of second lens, cm\n", + "\n", + "#Calculations\n", + "d = 2./3*f; # Separation distance between two lenses, cm\n", + "F = f1*f2/(f1+f2-d); # Equivalent focal length of Ramsden eyepiece, cm\n", + "\n", + "#Result\n", + "print \"The equivalent focal length of the field lenses is = %3.1f cm\"%F\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The equivalent focal length of the field lenses is = 7.5 cm\n" + ] + } + ], + "prompt_number": 27 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.20, Page 204" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "d = 10; # Distance between the two thin plano convex lenses in the Huygens eyepiece, \n", + "\n", + "#Calculations&Results\n", + "f = d/2; # Base focal length\n", + "f1 = 3*f; # Focal length of the first component lens, cm\n", + "print \"f1 = %d cm\"%f1\n", + "f2 = f; # Focal length of the second component lens, cm\n", + "print \"f2 = %d cm\"%f2\n", + "F = 3./2*f; # Equivalent focal length of the lens, cm\n", + "print \"F = %3.1f cm\"%F\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "f1 = 15 cm\n", + "f2 = 5 cm\n", + "F = 7.5 cm\n" + ] + } + ], + "prompt_number": 28 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 4.21, Page 204" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "F = 4.2; # Equivalent focal length of Ramsden eyepiece, cm\n", + "#F = 3/4*f, Equivalent focal length of Ramsden eyepiece, \n", + "f = 5.6; #focal length,in cm\n", + "\n", + "#Calculations&Results\n", + "f1 = f;\n", + "f2 = f;\n", + "print \"f1 = %3.1f cm\"%f1\n", + "print \"f2 = %3.1f cm\"%f2\n", + "d = 2./3*f;\n", + "print \"d = %4.2f cm\"%d\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "f1 = 5.6 cm\n", + "f2 = 5.6 cm\n", + "d = 3.73 cm\n" + ] + } + ], + "prompt_number": 29 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Applied_Physics_for_Engineers/Chapter_5.ipynb b/Applied_Physics_for_Engineers/Chapter_5.ipynb new file mode 100755 index 00000000..4bf3ba3a --- /dev/null +++ b/Applied_Physics_for_Engineers/Chapter_5.ipynb @@ -0,0 +1,1468 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 5: Physical Optics" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.1, Page 297" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "n1 = 10; # Order of interference maximum for lambda = 7000 angstrom\n", + "lambda1 = 7000; # Wavelength of the light, angstrom\n", + "lambda2 = 5000; # Wavelength of the light, angstrom\n", + "\n", + "#Calculations\n", + "# As W = D*lambda/(2*d) then, x = n1*D*lambda1/(2*d) = n2*D*lambda2/(2*d), solving for n2\n", + "n2 = n1*lambda1/lambda2; # Order of interference maximum for lambda = 5000 angstrom\n", + "\n", + "#Result\n", + "print \"The order of interference maximum for wavelength of 5000 angstrom = %2d \"%n2\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The order of interference maximum for wavelength of 5000 angstrom = 14 \n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.2, Page 297" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable Declaration\n", + "D = 1.6; # Distance between the slit and the screen, m\n", + "a = 0.4; # Distance between the slit and the biprism, m\n", + "mu = 1.52; # Refractive index of the material of biprism\n", + "W = 1e-004; # Fringe width, m\n", + "lamda = 5.893e-007; # Wavelength of light used, m\n", + "\n", + "#Calculations\n", + "# As W = lambda*D/(2*a(mu-1)*alpha then\n", + "alpha = ((lamda*D)/(2*a*(mu-1)*W))*180/pi; # Angle of biprism, degrees\n", + "\n", + "#Result\n", + "print \"The angle of the biprism = %3.1f degrees\"%alpha\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The angle of the biprism = 1.3 degrees\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.3, Page 298" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "lamda = 5.890e-7; # Wavelength of source of light, m \n", + "mu = 1.6; #refractive index of the mica sheet\n", + "\n", + "#Calculations\n", + "# As del_x = W*(mu-1)*t/lambda, where del_x = 3*W, solving for t\n", + "t = 3*lamda/(mu-1); # Thickness of the mica sheet, m \n", + "\n", + "#Result\n", + "print \"The thickness of the mica sheet = %5.3e cm\"%(t/1e-02)\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The thickness of the mica sheet = 2.945e-04 cm\n" + ] + } + ], + "prompt_number": 54 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.4, Page 298" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "lamda = 6.0e-7; # Wavelength of the monochromatic light, m\n", + "D = 1; # Distance between the screen and the two coherent sources, m \n", + "W = 5e-004; # Fringe width, m\n", + "\n", + "#Calculations\n", + "d = lamda*D/(W*1e-03); # Distance between two coherent sources, mm\n", + "\n", + "\n", + "print \"The distance between the two coherent sources = %3.1f mm\"%d\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The distance between the two coherent sources = 1.2 mm\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.5, Page 298" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable Declaration\n", + "D = 1; # Distance between slits and the screen, m\n", + "mu = 1.5; # Refractive index of the material of biprism\n", + "a = 0.5; # The distance between the slit and the biprism, m \n", + "W = 1.35e-004; # Width of the fringes, m\n", + "\n", + "#Calculations\n", + "alpha = (180.-179.)/2*pi/180; # Acute angle of biprism, radian\n", + "lamda = 2*a*(mu-1)*alpha*W/D; # Wavelength of light used, m\n", + "\n", + "#Result\n", + "print \"The wavelength of light used = %4d angstrom\"%(lamda/1e-10)\n", + "#Incorrect answer in the textbook" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The wavelength of light used = 5890 angstrom\n" + ] + } + ], + "prompt_number": 59 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.6, Page 299" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "lamda = 6.328e-007; # Wavelength of the monochromatic light, m\n", + "D = 40; # Distance between the slits and the screen, m \n", + "W = 0.1; # Distance between the interference maxima, m\n", + "\n", + "#Calculations\n", + "d = lamda*D/W; # Distance between the slits, m\n", + "\n", + "#Result\n", + "print \"The distance between the slits = %6.4f mm\"%(d/1e-03)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The distance between the slits = 0.2531 mm\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.7, Page 299" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "lamda = 5.0e-007; # Wavelength of the monochromatic light, m\n", + "D = 1; # Distance between the silts and the screen, m\n", + "d = 5e-004/2; # Half of the distance between the two slits, m\n", + "mu = 1.5; # Refractive index of glass\n", + "t = 1.5e-006; # Thickness of thin glass plate, m\n", + "\n", + "#Calculations\n", + "del_x = D*(mu-1)*t/(2*d);\n", + "\n", + "#Result\n", + "print \"The lateral shift of central maximum = %3.1f mm\"%(del_x/1e-03)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The lateral shift of central maximum = 1.5 mm\n" + ] + } + ], + "prompt_number": 60 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.8, Page 300" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable Declaration\n", + "lamda = 6.0e-007; # Wavelength of the light, m\n", + "mu = 1.463; # Refrctive index of a soap bubble film\n", + "n = 0; # Value of n for smallest thickness\n", + "r = 0; # Angle of refraction for normal incidence\n", + "\n", + "#Calculations\n", + "# As 2*mu*t*cos(r) = (2*n+1)*lambda/2, solving for t\n", + "t = (2*n+1)*lamda/(4*mu*cos(r)); # The thickness of a soap bubble film, m \n", + "\n", + "#Result\n", + "print \"The thickness of a soap bubble film = %5.1f angstrom\"%(t/1e-010)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The thickness of a soap bubble film = 1025.3 angstrom\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.9, Page 300" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable Declaration\n", + "D5 = 3.36e-003; # Diameter of Newton's 5th ring, m \n", + "D15 = 5.90e-003; # Diameter of Newton's 15th ring, m \n", + "m = 10; # Number of ring\n", + "R = 1; # Radius of the plano-convex lens, m\n", + "\n", + "#Calculations\n", + "lamda = (D15**2-D5**2)/(4*m*R);\n", + "\n", + "\n", + "print \"The wavelength of the light used = %4d angstrom\"%(lamda/1e-010)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The wavelength of the light used = 5880 angstrom\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.10, Page 301" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "D10 = 0.005; # Diameter of Newton's 5th ring, m \n", + "n = 10; # Order of the ring\n", + "lamda = 6.0e-007; # Wavelength of the light used, m\n", + "\n", + "#Calculations&Results\n", + "R = (D10**2)/(4*n*lamda); # Radius of the curvature of the lens, m\n", + "print \"The radius of the curvature of the lens = %6.4f m\"%R\n", + "t = D10**2/(8*R); \n", + "print \"The thickness of the corresponding air film = %3.1e m\"%t\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The radius of the curvature of the lens = 1.0417 m\n", + "The thickness of the corresponding air film = 3.0e-06 m\n" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.11, Page 301" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "mu = 1.43; # Refractive index of the soap film\n", + "n = 0; # Order of fringes for smallest thickness\n", + "i = 30; # Angle of incidence, degrees\n", + "\n", + "#Calculations\n", + "# As sin(i)/sin(r) = mu, cos(r)\n", + "cosr = sqrt(1-(sin(i*pi/180)/mu)**2); # Cosine of angle r\n", + "lamda = 6.0e-007; # Wavelength of the light, m\n", + "t = (2*n+1)*lamda/(4*mu*cosr); # Thickness of the soap film, m\n", + "\n", + "#Result\n", + "print \"The thickness of the soap film = %4.2e m\"%t\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The thickness of the soap film = 1.12e-07 m\n" + ] + } + ], + "prompt_number": 64 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.12, Page 301" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "lamda = 5.893e-007; # Wavelength of the sodium light, m\n", + "mu = 1.42; # Refractive index of the soap film\n", + "r = 0; # Angle of refraction, degrees\n", + "n = 0; # Order of diffraction for least thickness of dark film\n", + "\n", + "#Calculations&Result\n", + "t = (2*n+1)*lamda/(4*mu*cos(r)); # Least thickness of the film that will apear bright, m\n", + "print \"The least thickness of the film that will appear bright = %5.1f m\"%(t/1e-010)\n", + "n = 1; # Order of diffraction for least thickness of bright film\n", + "t = n*lamda/(2*mu*cos(r)); # Least thickness of the film that will apear dark, m \n", + "print \"The least thickness of the film that will appear dark = %6.2f m\"%(t/1e-010) #incorrect answer in the textbook\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The least thickness of the film that will appear bright = 1037.5 m\n", + "The least thickness of the film that will appear dark = 2075.00 m\n" + ] + } + ], + "prompt_number": 66 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.13, Page 302" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "lamda = 5.893e-007; # Wavelength of the sodium light, m\n", + "\n", + "#Calculations\n", + "# As fringe width of the thin wedge-shaped air film is\n", + "# W = lambda/(2*t/20*W), solving for t\n", + "t = (10*lamda); # Thickness of the wire separating edges of two plane glass surfaces, m\n", + "\n", + "#Result\n", + "print \"The thickness of the wire = %5.3e m\"%t\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The thickness of the wire = 5.893e-06 m\n" + ] + } + ], + "prompt_number": 19 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.14, Page 303" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "lamda = 5.9e-007; # Wavelength of the reflected light, m\n", + "n = 10; # Order of the ring\n", + "D10 = 0.005; # Diameter of the 10th ring,in m \n", + "\n", + "#Calculations&Result\n", + "R = (D10**2)/(4*n*lamda); # Radius of curvature of the lens, m\n", + "print \"The radius of curvature of the lens = %6.4f m\"%R\n", + "t = (D10**2)/(8*R); # Thickness of the corresponding air film, m\n", + "print \"The thickness of the corresponding air film = %4.2e m\"%t\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The radius of curvature of the lens = 1.0593 m\n", + "The thickness of the corresponding air film = 2.95e-06 m\n" + ] + } + ], + "prompt_number": 20 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.16, Page 304" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "lamda = 6.328e-007; # Wavelength of monochromatic light from He laser, m\n", + "n1 = 1; # First order \n", + "n2 = 2; # Second order\n", + "l = 6000; # Lines/cm of the diffraction grating\n", + "A= 1.66e-6;\n", + "\n", + "#Calculations&Result\n", + "theta = degrees(asin(n1*lamda/A));\n", + "print \"The first order maximum angle = %4.1f degrees\"%theta\n", + "theta = degrees(asin(n2*lamda/A));\n", + "print \"The second order maximum angle = %4.1f degrees\"%theta\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The first order maximum angle = 22.4 degrees\n", + "The second order maximum angle = 49.7 degrees\n" + ] + } + ], + "prompt_number": 69 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.17, Page 305" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "a = 1; # For simplicity assume slit width to be unity, unit\n", + "theta = 1; # For simplicity assume diffraction angle to be unity, unit\n", + "\n", + "#Calculations\n", + "# As a*sin(theta) = m*lambda, solving for lambdas\n", + "lambda1 = a*sin(theta); # First wavelength, angstrom\n", + "lambda2 = a*sin(theta)/2; # First wavelength, angstrom\n", + "\n", + "#Result\n", + "print \"lambda1 = %d*lambda2\"%(lambda1/lambda2)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "lambda1 = 2*lambda2\n" + ] + } + ], + "prompt_number": 22 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.18, Page 305" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "lamda = 5.5e-7; # Wavelength of light, m\n", + "a = 2.2e-6; # Width of the slit, m\n", + "l = 6000; # Lines /cm of the diffraction grating\n", + "# In a single slit diffraction pattern the directions of minimum intensity are given by a*sintheta = m*lambda where m = 1,2,3 \n", + "# For m = 1\n", + "\n", + "#Calculations&Results\n", + "m = 1; # First order\n", + "theta = degrees(asin((m*lamda)/a)); # Angular position of first minima on either side of the central maxima, degrees\n", + "print \"The angular position of first minima on either side of the central maxima = %.2f degrees\"%(theta)\n", + "\n", + "# For m = 2\n", + "m = 2; # Second order\n", + "theta = degrees(asin(m*lamda/a));\n", + "print \"The angular position of second minima on either side of the central maxima = %.2f degrees\"%(theta)\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The angular position of first minima on either side of the central maxima = 14.48 degrees\n", + "The angular position of second minima on either side of the central maxima = 30.00 degrees\n" + ] + } + ], + "prompt_number": 85 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.19, Page 306" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "D = 1.7; # Distance between the slit and the screen, m\n", + "W = 2.5e-003; # Given fringe width, m \n", + "a = 8e-005; # Width of the first slit, m\n", + "b = 4e-004; # Width of the second slit, m\n", + "n = b; # \n", + "p = [1, 2, 3, 4, 5, 6];\n", + "\n", + "#Calculations&Results\n", + "# In a double slit experiment Fraunhoffer diffraction pattern,the fringe width is given by W = lambda*D/n \n", + "lamda = b*W/D; # Wavelength of the light used, m\n", + "print \"The wavelength of light = %4d angstrom\"%(lamda/1e-010)\n", + "print \"The missing orders are:\\n\"\n", + "for i in range(1,6):\n", + " s = ((a+b)/a)*i;\n", + " print \"%d,\"%s,\n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The wavelength of light = 5882 angstrom\n", + "The missing orders are:\n", + "\n", + "6, 12, 18, 24, 30,\n" + ] + } + ], + "prompt_number": 94 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.20, Page 306" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "D = 2; # Distance of the screen from the slit, m\n", + "x = 1.6e-02; # Position of centre of the second dark band, m\n", + "m = 2; # Order of diffraction\n", + "a = 1.4e-04; # Width of the slit, m\n", + "\n", + "#Calculations\n", + "lamda = (a*x)/(m*D); # Wavelength of light, m\n", + "\n", + "#Result\n", + "print \"The wavelength of the light = %4d angstrom\"%((lamda/1e-010))\n", + "#rounding-off error" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The wavelength of the light = 5599 angstrom\n" + ] + } + ], + "prompt_number": 95 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.21, Page 307" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "lambda1 = 5890; # Wavelength of the line, angstrom\n", + "lambda2 = 5896; # Wavelength of the line, angstrom\n", + "\n", + "#Calculations\n", + "d_lambda = lambda2 - lambda1; # Wavelength difference, angstrom\n", + "n = 2; # Order of diffraction\n", + "N = lambda2/(n*d_lambda); # Minimum no. of lines in a grating\n", + "\n", + "#Result\n", + "print \"The minimum number of lines in the grating = %3d lines\"%N\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The minimum number of lines in the grating = 491 lines\n" + ] + } + ], + "prompt_number": 30 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.22, Page 307" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "lamda = 5.0e-07; # Wavelength of the radiation, m\n", + "a_plus_b = 2.54e-02/2620; # The grating element, m\n", + "theta_max = 90; # Maximum value of angle of diffraction, degrees\n", + "\n", + "#Calculations\n", + "n_max = a_plus_b/lamda*sin(theta_max*pi/180); # Maximum number of visible orders \n", + "\n", + "#Result\n", + "print \"The number of visible orders = %2d \"%n_max\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The number of visible orders = 19 \n" + ] + } + ], + "prompt_number": 96 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.23, Page 307" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "lambda1 = 6000; # Wavelength of yellow line, angstrom\n", + "lambda2 = 4800; # Wavelength of blue line, angstrom\n", + "\n", + "#Calculations\n", + "#(a+b)sin(theta) = n*6000 ---1\n", + "#(a+b)sin(theta) = (n+1)*4800\n", + "#Comparing 1 and 2, we get the following,\n", + "n = 48./12\n", + "theta = 3./4; # Angle of diffraction, radian\n", + "a_plus_b = (n*lambda1)/theta\n", + "\n", + "#Results\n", + "print \"Grating element = %d A\"%a_plus_b" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Grating element = 32000 A\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.26, Page 310" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from numpy import *\n", + "\n", + "#Variable declaration\n", + "n = 5; # Order for given wavelength\n", + "m = [4, 5, 6, 7, 8]; # Orders of spectral lines in the visible range\n", + "lambda1 = 6000; # Wavelength of the spectral line in visible range, angstrom\n", + "lambda2 = zeros(5);\n", + "\n", + "print \"The spectral lines in visible ranges are:\\n\"\n", + "for i in range(1,5):\n", + " l2 = (n*lambda1)/m[i];\n", + " lambda2[i] = l2; # Preserve the lambda value\n", + " print \"%4d angstrom\\n\"%(l2),\n", + "\n", + "print \"The other spectral lines in the visible range 4000A to 7000A are\"\n", + "for i in range(1,5):\n", + " if lambda2[i] < 7000 and lambda2[i] > 4000:\n", + " if lambda2[i] == 6000:\n", + " continue\n", + " #print \"%4dA\"%lambda2[i]\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The spectral lines in visible ranges are:\n", + "\n", + "6000 angstrom\n", + "5000 angstrom\n", + "4285 angstrom\n", + "3750 angstrom\n", + "The other spectral lines in the visible range 4000A to 7000A are\n" + ] + } + ], + "prompt_number": 33 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.27, Page 310" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "N = 4500; # Number of lines in grating\n", + "n = 2; # Order of diffraction\n", + "lambda1 = 5890; # Wavelength, angstrom\n", + "lambda2 = 5896; # Wavelength, angstrom\n", + "\n", + "#Calculations&Result\n", + "RP2 = n*N; # Resolving power of grating in the second order\n", + "lamda = (lambda1+lambda2)/2; # Mean wavelength of sodium light, angstrom\n", + "d_lambda = lambda2 - lambda1; # Wavelength difference, angstrom\n", + "RP = lamda/d_lambda; # Calculated resolving power of grating \n", + "if RP2 <> RP:\n", + " print(\"The D1 and D2 lines of Na light cannot be resolved in second order\");\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The D1 and D2 lines of Na light cannot be resolved in second order\n" + ] + } + ], + "prompt_number": 35 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.28, Page 311" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "lamda = 5.5e-07; # Wavelength of light used, m\n", + "f = 3.0; # Focal length of telescope objective, m \n", + "a = 0.01; # Diameter of the telescope objective, m\n", + "\n", + "#Calculations\n", + "# As x/f = 1.22*lambda/a, the Rayleigh criterian for resolution, solving for x\n", + "x = 1.22*f*lamda/a; # Distance between two stars just seen as separate, m\n", + "\n", + "\n", + "print \"The distance between two stars just seen as separate = %3.1e m \"%x\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The distance between two stars just seen as separate = 2.0e-04 m \n" + ] + } + ], + "prompt_number": 37 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.29, Page 311" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "lamda = 5.461e-07; # Wavelength of light used, m\n", + "d = 4.0e-07; # Distance between the two luminous objects, m\n", + "\n", + "#Calculations\n", + "# As d = 1.22*lambda/(2*mu*sin(alpha)) = 1.22*lambda/(2*NA), solving for NA\n", + "NA = 1.22*lamda/(2*d); # Numerical aperature of the objective of microscope \n", + "\n", + "\n", + "print \"The numerical aperature of the objective of microscope = %5.3f \"%NA\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The numerical aperature of the objective of microscope = 0.833 \n" + ] + } + ], + "prompt_number": 38 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.30, Page 312" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "lamda = 6.0e-07; # Wavelength of light used, m\n", + "d_theta = 2.44e-06; # Angular separation between the two stars, radian\n", + "\n", + "#Calculations\n", + "a = 1.22*lamda/d_theta; # Aperature of the objective of a telescope from Rayleigh criterian, m\n", + "\n", + "\n", + "print \"The aperature of the objective of the telescope = %3.1f m \"%a\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The aperature of the objective of the telescope = 0.3 m \n" + ] + } + ], + "prompt_number": 39 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.31, Page 312" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "lamda = 5.5e-007; # Wavelength of light used, m\n", + "x = 1.5e-003; # Distance between the two pinholes, m\n", + "a = 4.0e-003; # Diameter of objective, m\n", + "\n", + "#Calculations\n", + "D = a*x/(1.22*lamda); # Minimum distance from the telescope at which the the pinhole can be resolved from Rayleigh criterian, m \n", + "\n", + "\n", + "print \"The minimum distance from the telescope at which the the pinhole can be resolved = %4.2f m \"%D\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The minimum distance from the telescope at which the the pinhole can be resolved = 8.94 m \n" + ] + } + ], + "prompt_number": 40 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.32, Page 312" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "lamda = 5.461e-07; # Wavelength of light used, m\n", + "d = 5.55e-07; # Distance between the two luminous objects, m\n", + "\n", + "#Calculations\n", + "# As d = 1.22*lambda/(2*mu*sin(alpha)) = 1.22*lambda/(2*NA), solving for NA\n", + "NA = 1.22*lamda/(2*d); # Numerical aperature of the objective of microscope \n", + "\n", + "\n", + "print \"The numerical aperature of the objective of microscope = %4.2f \"%NA\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The numerical aperature of the objective of microscope = 0.60 \n" + ] + } + ], + "prompt_number": 41 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.33, Page 313" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "i = 60; # Angle of incidence, degrees\n", + "mu = tan(i*pi/180); # Brewester's Law to calculate refractive index\n", + "A = 60*pi/180; # Angle of prism, degrees\n", + "\n", + "#Calculations\n", + "# As mu = sind((A+delta_m)/2)/sind(A/2), solving for delta_m\n", + "delta_m = 2*degrees(asin(mu*sin(A/2))) # Angle of minimum deviation for green light for its passage through a prism, degrees\n", + "\n", + "#Result\n", + "print \"The angle of minimum deviation for green light for its passage through a prism = %.f degrees\"%((delta_m-60))\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The angle of minimum deviation for green light for its passage through a prism = 60 degrees\n" + ] + } + ], + "prompt_number": 31 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.34, Page 313" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "lamda = 5.89e-07; # Wavelength of light used, m\n", + "mu_O = 1.55; # Refractive index of ordinary light\n", + "mu_E = 1.54; # Refractive index of extraordinary light\n", + "\n", + "#Calculations\n", + "tQ = lamda/(4*(mu_O-mu_E)); # The thickness of the quarter wave plate, m\n", + "\n", + "\n", + "print \"The thickness of the quarter plate is = %6.4e m\"%tQ\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The thickness of the quarter plate is = 1.4725e-05 m\n" + ] + } + ], + "prompt_number": 43 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.35, Page 314" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "theta = 9.9; # Optical rotation of solution, degrees\n", + "l = 20; # Length of the tube, cm\n", + "S = 66; # Specific rotation of pure sugar solution, degree per dm-(g/cc)\n", + "\n", + "#Calculations\n", + "# As the specific rotation, S = 10*theta/l*c, solving for c\n", + "c = 10*theta/(l*S); # Concentration of solution for pure sugar, g/cc\n", + "c_prime = 0.080; # Concentration of solution for impure sugar, g/cc\n", + "Percentage_purity = c*100/c_prime; # Percentage purity of sugar sample\n", + "\n", + "\n", + "print \"The percentage_purity of the sugar sample = %5.2f percent\"%Percentage_purity\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The percentage_purity of the sugar sample = 93.75 percent\n" + ] + } + ], + "prompt_number": 44 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.36, Page 314" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "theta = 26.4; # Optical rotation of sugar solution, degrees\n", + "l = 20; # Length of the tube, cm\n", + "c = 0.20; # Concentration of the solution, g/cc\n", + "\n", + "#Calculations\n", + "S = 10*theta/(l*c); # The specific rotation of the sugar solution, degree per dm per (g/cc) \n", + "\n", + "\n", + "print \"The specific rotation of the sugar solution = %2d degrees\"%S\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The specific rotation of the sugar solution = 66 degrees\n" + ] + } + ], + "prompt_number": 45 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.37, Page 315" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "# Function to convert degrees to deg-min\n", + "def deg_to_dms(deg):\n", + " d = int(deg)\n", + " md = abs(deg - d) * 60\n", + " md = round(md)\n", + " return [d, md]\n", + "\n", + "lamda = 7.62e-07; # Wavelength of the polarized light, m\n", + "mu_R = 1.53914; # Refractive index of quartz for right-handed circularly polarized light\n", + "mu_L = 1.53920; # Refractive index of quartz for left-handed circularly polarized light\n", + "t = 5.0e-004; # Thickness of the plate, m\n", + "\n", + "\n", + "theta = pi*t*(mu_L-mu_R)/lamda; # The angle of optical rotation, radian\n", + "d = deg_to_dms(theta*180/pi); # Call the conversion function\n", + "\n", + "\n", + "print \"The angle of rotation produced by its plate = \",d\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The angle of rotation produced by its plate = [7, 5.0]\n" + ] + } + ], + "prompt_number": 43 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.38, Page 315" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "theta = 13.; # Optical rotation of the solution, degrees\n", + "l = 20.; # Length of the tube, cm\n", + "l_prime = 30.; # New length of the tube, cm\n", + "c = 1.; # For simplicity assume concentration of sugar solution to be unity, g/cc\n", + "\n", + "#Calculations\n", + "c_prime = c/3; # New concentration of sugar solution, g/cc\n", + "# As, S = 10*theta/(l*c) so 10*theta/(l*c) = 10*theta_prime/(l_prime*c_prime)\n", + "# Solving for theta_prime\n", + "theta_prime = theta/(l*c)*l_prime*c_prime; # The optical rotation produced by new length of sugar solution, degrees\n", + "\n", + "\n", + "print \"The optical rotation of %d cm length of sugar solution = %3.1f degrees\"%(l_prime, theta_prime)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The optical rotation of 30 cm length of sugar solution = 6.5 degrees\n" + ] + } + ], + "prompt_number": 49 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.39, Page 315" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "theta = 11.; # Optical rotation of sugar solution, degrees\n", + "l = 20; # Length of the tube, cm\n", + "S = 66; # Specific rotation of sugar solution, degrees\n", + "\n", + "#Calculations\n", + "c = theta*10/(l*S); # The concentration of sugar solution, g/cc\n", + "\n", + "\n", + "print \"The strength of the solution = %6.4f g/cc\"%c\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The strength of the solution = 0.0833 g/cc\n" + ] + } + ], + "prompt_number": 51 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 5.40, Page 316" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " #Variable declaration\n", + "theta = 20; # Optical rotation of sugar solution, degrees\n", + "theta_prime = 35.; # New optical rotation of sugar solution, degrees\n", + "c = 5; # Percentage concentration of the solution\n", + "c_prime = 10; # New percentage concentration of the solution\n", + "l = 1; # For simplicity assume length of the sugar solution to be unity\n", + "\n", + "#Calculations\n", + "l_prime = theta_prime*l*c/(c_prime*theta);\n", + "\n", + "\n", + "print \"The length of sugar solution for %d percent concentration and %d degrees optical rotation = %5.3f*l \"%(c_prime, theta_prime, l_prime)\n", + "\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The length of sugar solution for 10 percent concentration and 35 degrees optical rotation = 0.875*l \n" + ] + } + ], + "prompt_number": 53 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Applied_Physics_for_Engineers/Chapter_6.ipynb b/Applied_Physics_for_Engineers/Chapter_6.ipynb new file mode 100755 index 00000000..2e0b3f8c --- /dev/null +++ b/Applied_Physics_for_Engineers/Chapter_6.ipynb @@ -0,0 +1,376 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 6: X-rays" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 6.1, Page 369" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "i = 2e-003; # Current through X-ray tube, A\n", + "e = 1.6e-019; # Charge on an electron, C\n", + "V = 12.4e+003; # Potential difference applied across X-ray tube, V \n", + "m0 = 9.1e-031; # Rest mass of the electron, Kg \n", + "\n", + "#Calculations&Results\n", + "n = i/e; # Number of electrons striking the target per second\n", + "print \"The number of electrons striking the target per sec = %4.2e electrons\"%n\n", + "v = sqrt(2*e*V/m0); # Velocity of the electrons, m/s\n", + "print \"The speed with which electrons strike the target = %4.2e m/s\"%v\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The number of electrons striking the target per sec = 1.25e+16 electrons\n", + "The speed with which electrons strike the target = 6.60e+07 m/s\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 6.2, Page 370" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "e = 1.6e-019; # Charge on an electron, C\n", + "V = 13.6e+003; # Potential difference applied across X-ray tube, V \n", + "m0 = 9.1e-031; # Rest mass of the electron, Kg \n", + "\n", + "#Calculations\n", + "v = sqrt(2*e*V/m0); # Velocity of the electron, m/s \n", + "\n", + "#Result\n", + "print \"The maximum speed with which the electrons strike the target = %4.2e m/s\"%v\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The maximum speed with which the electrons strike the target = 6.92e+07 m/s\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 6.3, Page 370" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "d = 2.82e-010; # Spacing of the rock-salt, m \n", + "n = 2; # Order of diffraction\n", + "\n", + "#Calculations\n", + "theta = pi/2; # Angle of diffraction, radian\n", + "# Braggs equation for X-rays of wavelength lambda is n*lambda = 2*d*sin(theta), solving for lambda\n", + "lamda = 2*d*sin(theta)/n; # Wavelength of X-ray using Bragg's law, m\n", + "\n", + "#Result\n", + "print \"The longest wavelength that can be analysed by a rock-salt crystal = %4.2f angstrom\"%(lamda/1e-010)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The longest wavelength that can be analysed by a rock-salt crystal = 2.82 angstrom\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 6.4, Page 371" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "lamda = 3e-011; # Wavelength of the X-ray, m\n", + "d = 5e-011; # Lattice spacing, m \n", + "\n", + "#Calculations&Results\n", + "# Bragg's equation for X-rays of wavelength lambda is n*lambda = 2*d*sin(theta), solving for thetas\n", + "for n in range(2,4):\n", + " theta = degrees(asin((n*lamda)/(2*d))); \n", + " print \"For n = %d, theta = %.1f degrees\"%(n, theta)\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "For n = 2, theta = 36.9 degrees\n", + "For n = 3, theta = 64.2 degrees\n" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 6.5, Page 371" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "lamda = 3.6e-011; # Wavelength of X-rays, m\n", + "n = 1; # Order of diffraction\n", + "theta = 4.8; # Angle of diffraction, degrees\n", + "\n", + "#Calculations\n", + "# Braggs equation for X-rays is n*lambda = 2*d*sin(theta), solving for d\n", + "d = n*lamda/(2*sin(theta*pi/180)); # Interplanar spacing, m\n", + "\n", + "#Result\n", + "print \"The interplanar separation of atomic planes in the crystal = %4.2f angstrom\"%(d/1e-010)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The interplanar separation of atomic planes in the crystal = 2.15 angstrom\n" + ] + } + ], + "prompt_number": 19 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 6.6, Page 371" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "lambda1 = 0.71; # Wavelength of k alpha line in molybdenum, angstrom\n", + "Z1 = 42; # Atomic number of Mo\n", + "Z2 = 29; # Atomic number of Cu\n", + "\n", + "#Calculations\n", + "# Wavelength of characteristic X-ray for K-alpha spectral line is given by \n", + "# 1/lambda = 3/4*R*(Z-1)^2 then\n", + "lambda2 = lambda1*(Z1-1)**2/(Z2-1)**2; # The wavelength of K alpha radiation in copper, m\n", + "\n", + "#Result\n", + "print \"The wavelength of K-alpha radiation in copper = %4.2f angstrom\"%lambda2\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The wavelength of K-alpha radiation in copper = 1.52 angstrom\n" + ] + } + ], + "prompt_number": 20 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 6.7, Page 372" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "phi = pi/2; # Scattering angle, degrees\n", + "m0 = 9.1e-031; # Rest mass of an electron, kg\n", + "h = 6.62e-034; # Planck's constant, J-s\n", + "c = 3e+008; # Speed of light in vacuum, m/s \n", + "E = 8.16e-014; # Energy of gamma radiation, J\n", + "\n", + "#Calculations\n", + "lamda = h*c/(E*1e-010); # Wavelength of incident photon, angstrom \n", + "lambda_prime = lamda+h*(1-cos(phi*pi/180))/(m0*c*1e-010); # Wavelength of scattered photon, angstrom\n", + "\n", + "#Result\n", + "print \"The wavelength of radiation at 90 degrees = %6.4f angstrom\"%(lambda_prime+lamda)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The wavelength of radiation at 90 degrees = 0.0487 angstrom\n" + ] + } + ], + "prompt_number": 56 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 6.8, Page 372" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "phi = 90; # Scattering angle, radian\n", + "m0 = 9.1e-031; # Rest mass of the electron, kg\n", + "h = 6.62e-034; # Planck's constant, J-s\n", + "c = 3e+008; # Speed of light in vacuum, m/s \n", + "lamda = 1.00 ; # Wavelength of incident photon,in angstrom\n", + "\n", + "#Calculations\n", + "del_lambda = (h*(1-round(cos(degrees(phi))))/(m0*c))/10**-10; # Compton shift, angstrom\n", + "\n", + "#Result\n", + "print \"The Compton shift = %.4f angstrom\"%del_lambda\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The Compton shift = 0.0242 angstrom\n" + ] + } + ], + "prompt_number": 54 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 6.9, Page 373" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "phi = pi/2; # Scattering angle, radian\n", + "m0 = 9.1e-031; # Rest mass of the electron, kg\n", + "h = 6.62e-034; # Planck's constant, J-s\n", + "c = 3e+008; # Speed of light in vacuum, m/s \n", + "\n", + "#Calculations\n", + "# As Compton shift = del_lambda = lambda, so\n", + "lamda = h*(1-cos(phi))/(m0*c*1e-010); # Wavelength of incident photon, angstrom\n", + "\n", + "#Result\n", + "print \"The wavelength of incident radiation = %6.4f angstrom\"%lamda\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The wavelength of incident radiation = 0.0242 angstrom\n" + ] + } + ], + "prompt_number": 55 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Applied_Physics_for_Engineers/Chapter_7.ipynb b/Applied_Physics_for_Engineers/Chapter_7.ipynb new file mode 100755 index 00000000..1573585e --- /dev/null +++ b/Applied_Physics_for_Engineers/Chapter_7.ipynb @@ -0,0 +1,144 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 7: Lasers and Holography" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 7.1, Page 410" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "e = 1.6e-019; # Charge on an electron, eV \n", + "h = 6.62e-034; # Planck's constant, J-s\n", + "c = 3e+008; # Speed of light in vacuum, m/s\n", + "n = 2.8e+019; # Number of photons in laser pulse\n", + "lamda = 7e-007; # Wavelength of the radiation emited by the laser, m\n", + "\n", + "#Calculations\n", + "E = (h*c)/(lamda*e); # Energy of the photon in the laser light, eV\n", + "del_E = E*n; # The energy of laser pulse having n photons, eV\n", + "\n", + "#Result\n", + "print \"The energy of the laser pulse = %4.2e eV\"%del_E\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The energy of the laser pulse = 4.97e+19 eV\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 7.2, Page 411" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "c = 3.0e8; #velocity of light, m/s\n", + "tc = 0.5e-9 #time duration of pulses(s)\n", + "lamda = 6.5e-7 #wavelength, m\n", + "\n", + "\n", + "#Calculations&Results\n", + "Lc = c*tc; # coherence length, m\n", + "print \"The coherence length is %.2f m\"%Lc\n", + "del_v = 1/tc\n", + "print \"Resultant bandwidth = %.e Hz\"%del_v\n", + "del_lamda = (lamda**2*del_v)/c\n", + "print \"Line width = %.2e m\"%(del_lamda)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The coherence length is 0.15 m\n", + "Resultant bandwidth = 2e+09 Hz\n", + "Line width = 2.82e-12 m\n" + ] + } + ], + "prompt_number": 22 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 7.3, Page 411" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "a = 4e-003; # Coherence width of laser source, m\n", + "lamda = 6e-007; # Wavelength of the pulse, m\n", + "D = 100; # Distance of the surface from laser source, m\n", + "\n", + "#Calculations&Results\n", + "A = 2*lamda/a; # Angular spread of laser beam, radian\n", + "print \"The angular spread = %1.0e radian\"%A\n", + "theta = A/2; # Semi angle, radian\n", + "A_s = pi*(D*theta)**2; # Areal spread of laser beam, Sq.m\n", + "print \"The areal spread = %1.0e Sq.m\"%A_s\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The angular spread = 3e-04 radian\n", + "The areal spread = 7e-04 Sq.m\n" + ] + } + ], + "prompt_number": 24 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Applied_Physics_for_Engineers/Chapter_8.ipynb b/Applied_Physics_for_Engineers/Chapter_8.ipynb new file mode 100755 index 00000000..45c3a63e --- /dev/null +++ b/Applied_Physics_for_Engineers/Chapter_8.ipynb @@ -0,0 +1,324 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 8: Ultrasonics" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.1, Page 429" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "d = 8e-004; # Thickness of the piece of piezoelectric crystal, m\n", + "v = 5760; # Velocity of ultrasonic waves in the piece of piezoelectric crystal, m/s\n", + "\n", + "#Calculations\n", + "n = v/(2*d); # The frequency of the fundamental mode of ultrasonic wave, Hz\n", + "\n", + "#Result\n", + "print \"The frequency of the fundamental mode of ultrasonic wave = %3.1f MHz\"%(n/1e+006)\n", + "\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The frequency of the fundamental mode of ultrasonic wave = 3.6 MHz\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.2, Page 430" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "d = 2e-003; # Thickness of the piece of quarts crystal, m\n", + "rho = 2650; # Density of the crystal, kg/meter-cube\n", + "Y = 7.9e+010; # Value of Youngs Modulus, N/metre-square\n", + "\n", + "#Calculations\n", + "n = 1/(2*d)*sqrt(Y/rho); #The frequency of the fundamental mode of vibration, Hz\n", + "\n", + "#Result\n", + "print \"The frequency of the fundamental mode of vibration in quatrz crystal = %5.3f Hz\"%(n/1e+006)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The frequency of the fundamental mode of vibration in quatrz crystal = 1.365 Hz\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.3, Page 430" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "v = 5e+003; # Velocity of ultrasonic beam in steel plate, m/s\n", + "n = 25e+003; # Difference between two neighbouring harmonic frequencies (Nm - Nm_minus1), Hz \n", + "\n", + "#Calculations\n", + "d = v/(2*n); # The thickness of steel plate, m\n", + "\n", + "#Result\n", + "print \"The thickness of steel plate = %3.1f m\"%d\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The thickness of steel plate = 0.1 m\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.4, Page 430" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "n = 1e+006; # Frequency of Ultrasonic waves, Hz \n", + "C = 2.5e-014; # Capcitance of capacitor, F\n", + "\n", + "#Calculations\n", + "# Frequency of elecric oscillations is given by n = 1/(2*%pi)*sqrt(1/(L*C)), solving for L\n", + "L = 1/(4*pi**2*n**2*C); # The inductance of an inductor to produce ultrasonic waves, henry\n", + "\n", + "#Result\n", + "print \"The inductance of an inductor to produce ultrasonic waves = %d henry\"%L\n", + "\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The inductance of an inductor to produce ultrasonic waves = 1 henry\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.5, Page 431" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "d = 50e-002; # Thickness of the metallic rod, m\n", + "t1 = 30e-006; # Arrival time for first pulse, s\n", + "t2 = 80e-006; # Arrival time for second pulse, s\n", + "\n", + "#Calculations&Results\n", + "v = 2*d/t2; # Velocity of ultrasonic waves, m/s\n", + "print \"The velocity of pulse inside the rod = %4.2e m/s\"%v\n", + "x = t1*v/2;\n", + "print \"The position of pulse inside the rod = %6.4f m\"%x\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The velocity of pulse inside the rod = 1.25e+04 m/s\n", + "The position of pulse inside the rod = 0.1875 m\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.6, Page 431" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "I = 2.5e+004; # Sound intensity, W/meter-square\n", + "v = 1480; # Sound velocity, m/s\n", + "rho_w = 1000; # Density of water, kg/meter-cube\n", + "rho_c = 2650; # Density of crystal of transducer, kg/meter-cube\n", + "d = 0.001; # Thickness of the quartz, m\n", + "f = 20e+003; # Frequency of sound in water, Hz\n", + "\n", + "#Calculations&Results\n", + "# As sound intensity, I = p^2/(2*rho1*v), solving for p\n", + "p = sqrt(2*rho_w*v*I); # Pressure in the medium, N/metre-square\n", + "a = p/(d*rho_c); # Maximum acceleration of the quartz ultrasonic transducer, metre/second-square\n", + "print \"The maximum acceleration produced in quartz transducer = %4.2e metre/second-square\"%a\n", + "y = a/(2*pi*f)**2; # Maximum displacement of the quartz transducer, m\n", + "print \"The maximum displacement of quartz transducer = %3.1f micrometer\"%(y/1e-006)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The maximum acceleration produced in quartz transducer = 1.03e+05 metre/second-square\n", + "The maximum displacement of quartz transducer = 6.5 micrometer\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.7, Page 432" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "L = 0.2; # Length of a magnetostrictive hydrophone, m\n", + "lamda = 2*L; # Wavelength of ultrasonic wave, m\n", + "v = 4900; # Velocity of ultrasonic beam in water, m/s\n", + "\n", + "#Calculations\n", + "f = v/lamda; # Fundamental frequency of ultrasonic, KHz\n", + "\n", + "#Result\n", + "print \"The fundamental frequency of a magnetostrictive hydrophone = %4.2f KHz\"%(f/1e+03)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The fundamental frequency of a magnetostrictive hydrophone = 12.25 KHz\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 8.8, Page 432" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "v = 3700; # Velocity of ultrasonic beam in copper, m/s\n", + "t = 1e-006; # Delay time for ultrasonic beam, s\n", + "\n", + "#Calculations\n", + "L = v*t; # # Length of a copper wire required for a delay, m\n", + "\n", + "#Result\n", + "print \"The length of a copper wire required for a delay = %6.4f m\"%L\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The length of a copper wire required for a delay = 0.0037 m\n" + ] + } + ], + "prompt_number": 10 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Applied_Physics_for_Engineers/Chapter_9.ipynb b/Applied_Physics_for_Engineers/Chapter_9.ipynb new file mode 100755 index 00000000..579b6def --- /dev/null +++ b/Applied_Physics_for_Engineers/Chapter_9.ipynb @@ -0,0 +1,555 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 9: Fibre Optics" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.1, Page 463" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "mu_1 = 1.55; # Refractive index of the core \n", + "mu_2 = 1.50; # Refractive indices of cladding \n", + "\n", + "#Calculations\n", + "NA = mu_1*sqrt(2*(mu_1-mu_2)/mu_1); \n", + "print \"The NA of the optical fibre = %5.3f\"%NA\n", + "theta_a = degrees(asin(NA)); # The acceptance angle of optical fibre, degrees\n", + "\n", + "#Result\n", + "print \"The acceptance angle of the optical fibre is = %.1f degrees\"%theta_a\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The NA of the optical fibre = 0.394\n", + "The acceptance angle of the optical fibre is = 23.2 degrees\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.2, Page 463" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "mu_1 = 1.50; # Refractive index of the core \n", + "mu_2 = 1.45; # Refractive index cladding\n", + "\n", + "#Calculations&Results\n", + "NA = mu_1*sqrt(2*(mu_1-mu_2)/mu_1); # Numerical aperture of optical fibre\n", + "print \"The NA of the optical fibre = %5.3f\"%NA\n", + "theta_a = degrees(asin(NA)); # The acceptance angle of optical fibre, degrees\n", + "print \"The acceptance angle of the optical fibre = %5.2f degrees\"%theta_a\n", + "theta_c = degrees(asin(mu_2/mu_1)); # The critical angle of the optical fibre, degrees\n", + "print \"The acceptance angle of the optical fibre = %4.1f degrees\"%theta_c\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The NA of the optical fibre = 0.387\n", + "The acceptance angle of the optical fibre = 22.79 degrees\n", + "The acceptance angle of the optical fibre = 75.2 degrees\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.3, Page 464" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "mu0 = 1; # Refactive index of fibre in air\n", + "mu2 = 1.59; # Refactive index of the cladding \n", + "NA = 0.2; # Numerial aperture of optical fibre\n", + "\n", + "#Calculations\n", + "mu1 = sqrt(NA**2+mu2**2); # Refractive index of core\n", + "mu0 = 1.33; # Refactive index of fibre in water\n", + "NA = sqrt(mu1**2-mu2**2)/mu0; # Numerial aperture of optical fibre in water\n", + "theta_a = degrees(asin(NA)); # Acceptance angle for the fibre in water\n", + "\n", + "#Result\n", + "print \"The acceptance angle for the optical fibre in water = %3.1f degrees\"%theta_a\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The acceptance angle for the optical fibre in water = 8.6 degrees\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.4, Page 464" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "mu0 = 1; # Refractive index of air\n", + "mu1 = 1.50; # Refractive index of glass core`\n", + "delta = 0.005; # Fractional change in refractive index\n", + "\n", + "#Calculations&Results\n", + "mu2 = mu1*(1-delta); # Refractive index of cladding\n", + "print \"The refractive index of cladding =%6.4f\"%mu2\n", + "theta_c = degrees(asin(mu2/mu1)); # Critical angle, degrees\n", + "print \"The critical angle = %5.2f degrees\"%theta_c\n", + "theta_a = degrees(asin(sqrt(mu1**2-mu2**2)/mu0)); # Acceptance angle, degrees\n", + "print \"The value of acceptance angle is = %4.2f degrees\"%theta_a\n", + "NA = mu1*sqrt(2*delta); # Numerical aperture of optical fibre\n", + "print \"The NA of the optical fibre = %4.2f\"%NA #incorrect answer in the textbook\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The refractive index of cladding =1.4925\n", + "The critical angle = 84.27 degrees\n", + "The value of acceptance angle is = 8.62 degrees\n", + "The NA of the optical fibre = 0.15\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.5, Page 465" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "NA = 0.22; # Numerical aperture of the optical fibre\n", + "delta = 0.012; # Fractional difference between the refractive index of core and cladding\n", + "\n", + "#Calculations\n", + "mu1 = NA/sqrt(2*delta); # The refractive index of core of optical fibre\n", + "print \"The refractive index of core = %4.2f\"%mu1\n", + "mu2 = mu1*(1-delta); # The refractive index of cladding of optical fibre\n", + "\n", + "#Result\n", + "print \"The refractive index of cladding = %4.2f\"%mu2\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The refractive index of core = 1.42\n", + "The refractive index of cladding = 1.40\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.6, Page 466" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "mu1 = 1.466; # Refractive index of core\n", + "mu2 = 1.460; # Refractive index of cladding\n", + "v = 2.4; # Cut-off parameter of the optical fibre\n", + "lamda = 0.8e-006; # Operating wavelength, m\n", + "\n", + "#Calculations&Results\n", + "NA = sqrt(mu1**2-mu2**2);\n", + "print \"The NA of optical fibre = %4.2f\"%NA\n", + "# Asthe cut-off parameter v of the optical fibre, v = 2*%pi*a*sqrt(mu1^2-mu2^2)/lambda, solving for a\n", + "a = lamda*v/(2*pi*sqrt(mu1**2-mu2**2));\n", + "print \"The core radius of the optical fibre = %4.2f micrometer\"%(a/1e-006)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The NA of optical fibre = 0.13\n", + "The core radius of the optical fibre = 2.31 micrometer\n" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.7, Page 466" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "mu1 = 1.54; # The refractive index of core\n", + "mu2 = 1.50; # The refractive index of cladding\n", + "lamda = 1.3e-006; # Operating wavelength of optical fibre, m\n", + "a = 25e-006; # Radius of fibre core, m\n", + "\n", + "#Calculations\n", + "v = 2*pi*a*sqrt(mu1**2-mu2**2)/lamda; # V-number of optical fibre \n", + "print \"The cut-off parameter of the optical fibre = %5.2f\"%v\n", + "n = v**2/2; # The number of modes supported by the fibre \n", + "\n", + "#Result\n", + "print \"The number of modes supported by the fibre = %3d\"%(ceil(n))\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The cut-off parameter of the optical fibre = 42.14\n", + "The number of modes supported by the fibre = 888\n" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.8, Page 466" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "mu1 = 1.54; # Refractive index of core\n", + "v = 2.405; # Cut-off parameter of optical fibre\n", + "lamda = 1.3e-006; # Operating wavelength of optical fibre, m\n", + "a = 1e-006; # Radius of the core,\n", + "\n", + "#Calculations\n", + "NA = v*lamda/(2*pi*a); # Numerical aperture of optical fibre\n", + "delta = 1./2*(NA/mu1)**2; # Fractional change in refractive index of core and cladding\n", + "print \"The fractional difference of refractive indices of core and cladding = %7.5e\"%delta\n", + "mu2 = mu1*(1-delta); # Maximum value of refractive index of cladding\n", + "print \"The maximum refractive index of cladding = %5.3f\"%mu2\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The fractional difference of refractive indices of core and cladding = 5.22018e-02\n", + "The maximum refractive index of cladding = 1.460\n" + ] + } + ], + "prompt_number": 22 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.9, Page 467" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "mu1 = 1.45; # Index of refraction of core\n", + "NA = 0.16; # Numerical aperture of step index fibre\n", + "a = 3e-006; # Radius of the core, m\n", + "lamda = 0.9e-006; # Operating wavelength of optical fibre, m\n", + "\n", + "#Calculations\n", + "v = 2*pi*a*NA/lamda; # The normalized frequency or v-number of optical fibre\n", + "\n", + "#Result\n", + "print \"The normalized frequency of the optical fibre = %5.2f\"%v\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The normalized frequency of the optical fibre = 3.35\n" + ] + } + ], + "prompt_number": 23 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.10, Page 467" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "mu1 = 1.52; # Refractive index of core\n", + "a = 14.5e-006; # Radius of the fibre core, m\n", + "delta = 0.0007; # Fractional index difference\n", + "lamda = 1.3e-006; # Operating wavelength of optical fibre, m\n", + "\n", + "#Calculations&Results\n", + "mu2 = mu1*(1-delta); # Refractive index of cladding\n", + "v = 2*pi*a*sqrt(mu1**2-mu2**2)/lamda; # Cut-off parameter v of the optical fibre\n", + "print \"The cut-off parameter of the optical fibre = %5.3f\"%v\n", + "#The is number of modes supported by the fibre given by,\n", + "n = v**2/2;\n", + "print \"The number of modes supported by the fibre = %d\"%(ceil(n))\n", + "#Incorrect answer in the textbook for mu2. Hence the difference in answers" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The cut-off parameter of the optical fibre = 3.985\n", + "The number of modes supported by the fibre = 8\n" + ] + } + ], + "prompt_number": 24 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.11, Page 468" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "alpha = 3.5; # Attenuation of the optical fibre, dB/km\n", + "Pi = 0.5; # Input power of optical fibre, mW\n", + "L = 4; # Distance through the optical wave transmits through the fibre, km\n", + "\n", + "#Calculations\n", + "# As alpha = 10/L*log10(Pi/Po), solving for Po\n", + "Po = Pi/exp(alpha*L*2.3026/10); # Output power of optical fibre, mW\n", + "\n", + "#Result\n", + "print \"The output power of optical fibre = %4.1f micro-watt\"%(Po/1e-003)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The output power of optical fibre = 19.9 micro-watt\n" + ] + } + ], + "prompt_number": 25 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.12, Page 468" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "Pi =1; # Input power of optical fibre, mW\n", + "Po = 0.85; # Outptu power of optical fibre, mW\n", + "L = 0.5; #The distance through the optical wave transmits through the fibre, km \n", + "\n", + "#Calculations\n", + "alpha = (10/L)*log10(Pi/Po); # The attenuation of power through the optical fibre\n", + "\n", + "#Result\n", + "print \"The attenuation of power through the optical fibre = %5.3f dB/km\"%alpha\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The attenuation of power through the optical fibre = 1.412 dB/km\n" + ] + } + ], + "prompt_number": 26 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.13, Page 469" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "C = 0.8; # Connector loss per km, dB\n", + "F = 1.5; # Fibre loss per km, dB\n", + "alpha = C + F; # Attenuation of power the optical fibre, dB/km\n", + "Po = 0.3e-006; # Output power of optical fibre, W\n", + "L = 15; # The distance through the optical wave transmits through the fibre, km\n", + "\n", + "#Calculations\n", + "#As the attenuation, alpha = 10/L*log(Pi/Po), solving for Pi\n", + "Pi = Po*exp(2.3026*alpha*L/10); # Input power of optical fibre, mW\n", + "\n", + "#Result\n", + "print \"The minimum input power to optical fibre = %5.3f mW\"%(Pi/1e-003)\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The minimum input power to optical fibre = 0.846 mW\n" + ] + } + ], + "prompt_number": 27 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Applied_Physics_for_Engineers/README.txt b/Applied_Physics_for_Engineers/README.txt new file mode 100755 index 00000000..d8e7a8a6 --- /dev/null +++ b/Applied_Physics_for_Engineers/README.txt @@ -0,0 +1,10 @@ +Contributed By: Muktesh Chaudhary +Course: be +College/Institute/Organization: Anglo Eastern ship management india Pvt. Ltd +Department/Designation: Electrical & Electronics Officer +Book Title: Applied Physics for Engineers +Author: Neeraj Mehta +Publisher: Phi Learning Pvt. Ltd., New Delhi +Year of publication: 2011 +Isbn: 978-81-203-4242-2 +Edition: 1st
\ No newline at end of file diff --git a/Applied_Physics_for_Engineers/chapter_1.ipynb b/Applied_Physics_for_Engineers/chapter_1.ipynb new file mode 100755 index 00000000..659af082 --- /dev/null +++ b/Applied_Physics_for_Engineers/chapter_1.ipynb @@ -0,0 +1,558 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 1: Relativistic Mechanics" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 1.2, Page 26" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "c = 3e+008; # Speed of light in vacuum, m/s\n", + "delta_x = 2.45e+03; # Space difference, m\n", + "delta_t = 5.35e-06; # Time difference, s\n", + "\n", + "#Calculations\n", + "v = 0.855*c; # Speed of frame S_prime, m/s\n", + "delta_x_prime = 1/sqrt(1-v**2/c**2)*(delta_x - v*(delta_t))*1e-03; # Distance between two flashes as measured in S_prime frame, km\n", + "delta_t_prime = 1/sqrt(1-v**2/c**2)*(delta_t - v/c**2*delta_x)*1e+006; # Time between two flashes as measured in S_prime\n", + "\n", + "#Results\n", + "print \"The distance between two flashes as measured in S_prime frame = %4.2f km\"%delta_x_prime\n", + "print \"The time between two flashes as measured in S_prime frame = %4.2f micro-second\"%delta_t_prime\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The distance between two flashes as measured in S_prime frame = 2.08 km\n", + "The time between two flashes as measured in S_prime frame = -3.15 micro-second\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 1.4, Page 27" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from sympy import *\n", + "c = Symbol('c')\n", + "\n", + "#Variable declaration\n", + "c = 1; # Speed of light in vacuum, m/s\n", + "u_x_prime = c; # Velocity of photon as measured in S_prime frame, m/s\n", + "v = c; # Velocity of frame S_prime relative to S frame, m/s\n", + "\n", + "#Calculations\n", + "u_x = (u_x_prime + v)/(1+v*u_x_prime/c**2);\n", + "if u_x == 1: \n", + " ux = 'c';\n", + "else: \n", + " ux = string(u_x)+'c'; \n", + "\n", + "\n", + "#Result\n", + "print \"The speed of one photon as observed by the other is %c\"%ux\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The speed of one photon as observed by the other is c\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 1.6, Page 28" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math\n", + "\n", + "#Variable declaration\n", + "a = 1; # For simplicity assume length of semi minor axis to be unity, m\n", + "c = 3e+08; # Speed of light, m/s\n", + "\n", + "\n", + "#Calculations\n", + "#From equation 1-v^2/c^2=1/4, we derive the following expression\n", + "v = math.sqrt(3*c**2/4) # Velocity at which surface area of lamina reduces to half in S-frame, m/s\n", + "\n", + "\n", + "print \"The velocity at which surface area of lamina reduces to half in S-frame = %4.2e m/s\"%v\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The velocity at which surface area of lamina reduces to half in S-frame = 2.60e+08 m/s\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 1.7, Page 29" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Variable declaration\n", + "m0 = 1; # For simplicity assume the rest mass of stick to be unity, kg\n", + "m = 1.5*m0; # Mass of the moving stick, kg\n", + "L0 = 1; # Assume resting length of the stick to be unity, m\n", + "\n", + "#Calculations\n", + "# As m = m0/sqrt(1-v^2/c^2) = m0*gama, solving for gama\n", + "gama = m/m0; # Relativistic factor\n", + "L = L0/gama; # Contracted length of the metre stick, m\n", + "\n", + "#Result\n", + "print \"The contracted length of the metre stick = %4.2f m\"%L\n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The contracted length of the metre stick = 0.67 m\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 1.8, Page 29" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "c = 3e+008; # Speed of light in vacuum, m/s\n", + "tau0 = 2e-008; # Mean lifetime of meson at rest, m/s\n", + "\n", + "#Calculations\n", + "v = 0.8*c; # Velocity of moving meason, m/s\n", + "tau = tau0/sqrt(1-v**2/c**2); # Mean lifetime of meson in motion, m/s\n", + "\n", + "#Result\n", + "print \"The mean lifetime of meson in motion = %4.2e s\"%tau\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The mean lifetime of meson in motion = 3.33e-08 s\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 1.9, Page 30" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "c = 3e+008; # Speed of light in vacuum, m/s\n", + "delta_t0 = 59; # Reading of the moving clock for each hour, min\n", + "delta_t = 60; # Reading of the stationary clock for each hour, min\n", + "\n", + "#Calculations\n", + "# As from Time Dilation, delta_t = delta_t0/sqrt(1-v^2/c^2), solving for v\n", + "v = sqrt(((delta_t**2-delta_t0**2)*c**2)/delta_t**2)\n", + "\n", + "#Result\n", + "print \"The speed at which the moving clock ticks slow = %4.2e m/s\"%v\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The speed at which the moving clock ticks slow = 5.45e+07 m/s\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 1.10, Page 30" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "c = 3e+008; # Speed of light in vacuum, m/s\n", + "tau0 = 2.5e-008; # Mean lifetime of meson at rest, m/s\n", + "\n", + "#Calculations\n", + "v = 0.8*c; # Velocity of moving meason, m/s\n", + "tau = tau0/sqrt(1-v**2/c**2); # Mean lifetime of meson in motion, m/s\n", + "N0 = 1; # Assume initial flux of meson beam to be unity, watt/Sq.m\n", + "N = N0*exp(-2); # Meson flux after time t, watt/Sq.m\n", + "# As N = N0*e^(-t/tau), which on comparing gives\n", + "t = 2*tau; # Time during which the meson beam flux reduces, s\n", + "d = 0.8*c*t; # The distance that the meson beam can travel before reduction in its flux, m\n", + "\n", + "#Result\n", + "print \"The distance that the meson beam can travel before reduction in its flux = %2d m\"%d\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The distance that the meson beam can travel before reduction in its flux = 20 m\n" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 1.11, Page 31" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "c = 3e+008; # Speed of light in vacuum, m/s\n", + "E0 = 1; # Rest energy of particle, unit\n", + "\n", + "#Calculations\n", + "E = 3*E0; # Energy of relativistically moving particle, unit\n", + "# E = m*c^2 and E0 = m0*c^2\n", + "# With m = m0/sqrt(1-v^2/c^2), we have\n", + "v = c*sqrt(1-(E0/E)**2); # Velocity of the moving particle, m/s\n", + "\n", + "#Result\n", + "print \"The velocity of the moving particle = %4.2e m/s\"%v\n", + "#answer differs due to rounding-off errors" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The velocity of the moving particle = 3.00e+08 m/s\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 1.12, Page 32" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "c = 3e+008; # Speed of light in vacuum, m/s\n", + "m0 = 9.1e-031; # Rest mass of electron, kg\n", + "\n", + "#Calculations\n", + "m = 11*m0; # Mass of relativistically moving electron, kg\n", + "E_k = (m-m0)*c**2/(1.6e-019*1e+06); # Kinetic energy of moving electron, MeV\n", + "# As m = m0/sqrt(1-v^2/c^2), solving for v\n", + "v = c*sqrt(1-(m0/m)**2); # The velocity of the moving electron, m/s\n", + "p = m*v; # Momentum of moving electron, kg-m/s\n", + "\n", + "#Results\n", + "print \"The kinetic energy of moving electron = %4.2f MeV\"%E_k\n", + "print \"The momentum of moving electron = %4.2e kg-m/s\"%p\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The kinetic energy of moving electron = 5.12 MeV\n", + "The momentum of moving electron = 2.99e-21 kg-m/s\n" + ] + } + ], + "prompt_number": 19 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 1.13, Page 32" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "c = 3e+008; # Speed of light in vacuum, m/s\n", + "E0 = 0.5; # Rest energy of the electron, MeV\n", + "\n", + "#Calculations\n", + "v1 = 0.6*c; # Initial velocity of the electron, m/s\n", + "v2 = 0.8*c; # Final velocity of the electron, m/s\n", + "W = (1/sqrt(1-v2**2/c**2)-1/sqrt(1-v1**2/c**2))*E0; # The amount of work to be done to increase the speed of the electron, MeV\n", + "\n", + "#Result\n", + "print \"The amount of work to be done to increase the speed of an electron = %4.2e J\"%(W*1e+06*1.6e-019)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The amount of work to be done to increase the speed of an electron = 3.33e-14 J\n" + ] + } + ], + "prompt_number": 20 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 1.14, Page 33" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "c = 1; # Assume speed of light in vacuum to be unity, unit\n", + "m0 = 1; # For simplicity assume rest mass of the particle to be unity, unit\n", + "\n", + "#Calculations\n", + "v = c/sqrt(2); # Given speed of the particle, m/s\n", + "gama = 1/sqrt(1-v**2/c**2); # Relativistic factor\n", + "m = gama*m0; # The relativistic mass of the particle, unit\n", + "p = m*v; # The relativistic momentum of the particle, unit\n", + "E = m*c**2; # The relativistic total eneryg of the particle, unit\n", + "E_k = (m-m0)*c**2; # The relativistic kinetic energy of the particle, unit\n", + "\n", + "#Results\n", + "print \"The relativistic mass of the particle = %5.3fm\"%m\n", + "print \"The relativistic momentum of the particle = %1.0gm0c\"%p\n", + "print \"The relativistic total energy of the particle = %5.3fm0c^2\"%E\n", + "print \"The relativistic kinetic energy of the particle = %5.3fm0c^2\"%E_k\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The relativistic mass of the particle = 1.414m\n", + "The relativistic momentum of the particle = 1m0c\n", + "The relativistic total energy of the particle = 1.414m0c^2\n", + "The relativistic kinetic energy of the particle = 0.414m0c^2\n" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 1.15, Page 34" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "c = 3e+008; # Speed of light in vacuum, unit\n", + "m0 = 9.1e-031; # Rest mass of the electron, kg\n", + "m = 1.67e-027; # Rest mass of the proton, kg\n", + "\n", + "#Calculations\n", + "# As m = m0/sqrt(1-v^2/c^2), solving for v\n", + "v = c*sqrt(1-(m0/m)**2); # Velocity of the electron, m/s\n", + "\n", + "#Result\n", + "print \"The velocity of the electron to have its mass equal to mass of the proton = %5.3e m/s\"%v\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The velocity of the electron to have its mass equal to mass of the proton = 3.000e+08 m/s\n" + ] + } + ], + "prompt_number": 23 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 1.17, Page 35" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from math import *\n", + "\n", + "#Variable declaration\n", + "c = 3e+008; # Speed of light in vacuum, unit\n", + "m0 = 9.1e-031; # Rest mass of the electron, kg\n", + "E_k = 0.1*1e+006*1.6e-019; # Kinetic energy of the electron, J\n", + "\n", + "#Calculations&Results\n", + "v = sqrt(2*E_k/m0); # Classical speed of the electron, m/s\n", + "print \"The classical speed of the electron = %5.3e m/s\"%v\n", + "# As E_k = (m-m0)*c^2 = (1/sqrt(1-v^2/c^2)-1)*m0*c^2, solving for v\n", + "v = c*sqrt(1-(m0*c**2/(E_k+m0*c**2))**2); # Relativistic speed of the electron, m/s\n", + "print \"The relativistic speed of the electron = %5.3e m/s\"%v\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The classical speed of the electron = 1.875e+08 m/s\n", + "The relativistic speed of the electron = 1.644e+08 m/s\n" + ] + } + ], + "prompt_number": 24 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/Applied_Physics_for_Engineers/screenshots/amp_field_vec.png b/Applied_Physics_for_Engineers/screenshots/amp_field_vec.png Binary files differnew file mode 100755 index 00000000..56c835da --- /dev/null +++ b/Applied_Physics_for_Engineers/screenshots/amp_field_vec.png diff --git a/Applied_Physics_for_Engineers/screenshots/photon_speed.png b/Applied_Physics_for_Engineers/screenshots/photon_speed.png Binary files differnew file mode 100755 index 00000000..eacb5e8d --- /dev/null +++ b/Applied_Physics_for_Engineers/screenshots/photon_speed.png diff --git a/Applied_Physics_for_Engineers/screenshots/prob_oxy_speed.png b/Applied_Physics_for_Engineers/screenshots/prob_oxy_speed.png Binary files differnew file mode 100755 index 00000000..e84c6aab --- /dev/null +++ b/Applied_Physics_for_Engineers/screenshots/prob_oxy_speed.png diff --git a/Concepts_of_Thermodynamics/Chapter1.ipynb b/Concepts_of_Thermodynamics/Chapter1.ipynb new file mode 100755 index 00000000..ecf3e043 --- /dev/null +++ b/Concepts_of_Thermodynamics/Chapter1.ipynb @@ -0,0 +1,229 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 1 - Survey of Dimensions and Units"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ " Example 1 - Pg 4"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the force required to accelerate\n",
+ "#Initialization of variables\n",
+ "gc=32.1739 #lbm ft/lbf s^2\n",
+ "m=10 #lbm\n",
+ "a=10 #ft/s^2\n",
+ "#calculations\n",
+ "F=m*a/gc\n",
+ "#results\n",
+ "print '%s %.3f %s' %(\"Force to accelerate =\",F,\"lbf\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Force to accelerate = 3.108 lbf\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 4"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the force required to accelerate\n",
+ "#Initialization of variables\n",
+ "gc=32.1739 #lbm ft/lbf s^2\n",
+ "m=10 #lbm\n",
+ "a=gc #ft/s^2\n",
+ "#calculations\n",
+ "F=m*a/gc\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Force to accelerate =\",F,\"lbf\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Force to accelerate = 10 lbf\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 4"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the force required to accelerate\n",
+ "#Initialization of variables\n",
+ "gc=32.1739 #lbm ft/lbf s^2\n",
+ "F=5.00e-9 #lbf hr/ft^2\n",
+ "#calculations\n",
+ "F2=F*3600*gc\n",
+ "#results\n",
+ "print '%s %.2e %s' %(\"Force required =\",F2,\"lbm/ft sec\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Force required = 5.79e-04 lbm/ft sec\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ " Example 4 -Pg 7"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the required velocity\n",
+ "#Initialization of variables\n",
+ "v=88 #ft/s\n",
+ "#calculations\n",
+ "v2=v*3600./5280.\n",
+ "#results\n",
+ "print '%s %d %s' %(\"velocity =\",v2,\"mph\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "velocity = 60 mph\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5 - Pg 7"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the required velocity\n",
+ "#Initialization of variables\n",
+ "v=88 #ft/s\n",
+ "#calculations\n",
+ "v2=v*1/5280.*3600.\n",
+ "#results\n",
+ "print '%s %d %s' %(\"velocity =\",v2,\"mph\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "velocity = 60 mph\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6 - Pg 9"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the density of water and specific weight in this system\n",
+ "#Initialization of variables\n",
+ "rho=62.305 #lbf/ft^2\n",
+ "g=32.1739 #ft/s^2\n",
+ "#calculations\n",
+ "gam=rho/g\n",
+ "#results\n",
+ "print '%s %.3f %s' %(\"Density of water in this system =\",gam,\"lbf/ft^2\")\n",
+ "print '%s %.3f %s' %(\"\\n Specific weight =\",rho,\"lbf/ft^2\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Density of water in this system = 1.937 lbf/ft^2\n",
+ "\n",
+ " Specific weight = 62.305 lbf/ft^2\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Concepts_of_Thermodynamics/Chapter10.ipynb b/Concepts_of_Thermodynamics/Chapter10.ipynb new file mode 100755 index 00000000..b6abe8aa --- /dev/null +++ b/Concepts_of_Thermodynamics/Chapter10.ipynb @@ -0,0 +1,150 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 10 - The pvT relationships"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ " Example 1 - Pg 230"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the pressure of the gas using both ideal and vanderwaals cases\n",
+ "#Initialization of variables\n",
+ "m=1 #lbm\n",
+ "T1=212+460. #R\n",
+ "sv=0.193 #ft^3/lbm\n",
+ "M=44\n",
+ "a=924.2 #atm ft^2 /mole^2\n",
+ "b=0.685 #ft^3/mol\n",
+ "R=0.73 #atm ft^3/R mol\n",
+ "#calculations\n",
+ "v=sv*M\n",
+ "p=R*T1/v\n",
+ "p2=R*T1/(v-b) -a/v/v\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"In ideal gas case, pressure =\",p,\"atm\")\n",
+ "print '%s %.1f %s' %(\"\\n In vanderwaals equation, pressure =\",p2,\"atm\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "In ideal gas case, pressure = 57.8 atm\n",
+ "\n",
+ " In vanderwaals equation, pressure = 50.0 atm\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 232"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the volume of the gas\n",
+ "#Initialization of variables\n",
+ "m=1 #lbm\n",
+ "p=50.9 #atm\n",
+ "t=212+460. #R\n",
+ "R=0.73\n",
+ "#calculations\n",
+ "pc=72.9 #atm\n",
+ "tc=87.9 +460 #R\n",
+ "pr=p/pc\n",
+ "Tr=t/tc\n",
+ "z=0.88\n",
+ "v=z*R*t/p\n",
+ "#results\n",
+ "print '%s %.3f %s' %(\"volume =\",v,\"ft^3/mole\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "volume = 8.481 ft^3/mole\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 233"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the pressure of the gas\n",
+ "#Initialization of variables\n",
+ "t=212+460. #R\n",
+ "v=0.193 #ft^3/lbm\n",
+ "M=44\n",
+ "R=0.73\n",
+ "#calculations\n",
+ "tc=87.9+460. #F\n",
+ "zc=0.275\n",
+ "vc=1.51 #ft^3/mol\n",
+ "tr=t/tc\n",
+ "vr=v*M/vc\n",
+ "vrd=vr*zc\n",
+ "z=0.88\n",
+ "p=z*R*t/(M*v)\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Pressure =\",p,\"atm\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressure = 50.8 atm\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Concepts_of_Thermodynamics/Chapter12.ipynb b/Concepts_of_Thermodynamics/Chapter12.ipynb new file mode 100755 index 00000000..f88c4b5f --- /dev/null +++ b/Concepts_of_Thermodynamics/Chapter12.ipynb @@ -0,0 +1,201 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 12 - The ideal gas and deviations of real gases"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 290"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the work done in the process\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "n=1.3\n",
+ "T1=460+60. #R\n",
+ "P1=14.7 #psia\n",
+ "P2=125. #psia\n",
+ "R=1545.\n",
+ "M=29.\n",
+ "#calculations\n",
+ "T2=T1*math.pow((P2/P1),((n-1)/n))\n",
+ "wrev=R/M *(T2-T1)/(1-n)\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Work done =\",wrev,\"ft-lbf/lbm\")\n",
+ "print '%s' %(\"The answer is a bit different due to rounding off error in textbook\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Work done = -58988 ft-lbf/lbm\n",
+ "The answer is a bit different due to rounding off error in textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 290"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the change in kinetic energy\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "P2=10. #psia\n",
+ "P1=100. #psia\n",
+ "T1=900. #R\n",
+ "w=50 #Btu/lbm\n",
+ "k=1.39\n",
+ "cp=0.2418\n",
+ "#calculations\n",
+ "T2=T1*math.pow((P2/P1),((k-1)/k))\n",
+ "T2=477\n",
+ "KE=-w-cp*(T2-T1)\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Change in kinetic energy =\",KE,\" Btu/lbm\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Change in kinetic energy = 52.3 Btu/lbm\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 301"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the final temperature of the system\n",
+ "#Initialization of variables\n",
+ "T1=900. #R\n",
+ "P1=100. #psia\n",
+ "P2=10. #psia\n",
+ "#calculations\n",
+ "print '%s' %(\"From table B-9\")\n",
+ "pr1=8.411\n",
+ "pr2=pr1*P2/P1\n",
+ "T2=468. #R\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Final temperature =\",T2,\"R \")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From table B-9\n",
+ "Final temperature = 468 R \n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4 - Pg 302"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calcuate the final temperature, pressure, enthalpy and the work done in the process\n",
+ "#Initialization of variables\n",
+ "cr=6\n",
+ "p1=14.7 #psia\n",
+ "t1=60.3 #F\n",
+ "M=29.\n",
+ "R=1.986\n",
+ "#calculations\n",
+ "print '%s' %(\"from table b-9\")\n",
+ "vr1=158.58 \n",
+ "u1=88.62 #Btu/lbm\n",
+ "pr1=1.2147\n",
+ "vr2=vr1/cr\n",
+ "T2=1050. #R\n",
+ "u2=181.47 #Btu/lbm\n",
+ "pr2=14.686\n",
+ "p2=p1*(pr2/pr1)\n",
+ "dw=u1-u2\n",
+ "h2=u2+T2*R/M\n",
+ "#results\n",
+ "print '%s %d %s' %(\"final temperature =\",T2,\" R\")\n",
+ "print '%s %.1f %s' %(\"\\n final pressure =\",p2,\"psia\")\n",
+ "print '%s %.2f %s' %(\"\\n work done =\",dw,\"Btu/lbm\")\n",
+ "print '%s %.1f %s' %(\"\\n final enthalpy =\",h2,\" Btu/lbm\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "from table b-9\n",
+ "final temperature = 1050 R\n",
+ "\n",
+ " final pressure = 177.7 psia\n",
+ "\n",
+ " work done = -92.85 Btu/lbm\n",
+ "\n",
+ " final enthalpy = 253.4 Btu/lbm\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Concepts_of_Thermodynamics/Chapter13.ipynb b/Concepts_of_Thermodynamics/Chapter13.ipynb new file mode 100755 index 00000000..1bb39540 --- /dev/null +++ b/Concepts_of_Thermodynamics/Chapter13.ipynb @@ -0,0 +1,1217 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 13 - Mixtures"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 314"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#For the mixture, determine the molefractions, average mol. wt., specific gas constant, volume and density, partial pressures and volumes\n",
+ "#Initialization of variables\n",
+ "m1=10. #lbm\n",
+ "m2=15. #lnm\n",
+ "p=50. #psia\n",
+ "t=60.+460 #R\n",
+ "M1=32.\n",
+ "M2=28.02\n",
+ "R0=1545 \n",
+ "#calculations\n",
+ "n1=m1/M1\n",
+ "n2=m2/M2\n",
+ "x1=n1/(n1+n2)\n",
+ "x2=n2/(n1+n2)\n",
+ "M=x1*M1+x2*M2\n",
+ "R=R0/M\n",
+ "V=(n1+n2)*R0*t/p/144.\n",
+ "rho=p*144/(R0*t)\n",
+ "rho2=M*rho\n",
+ "p1=x1*p\n",
+ "p2=x2*p\n",
+ "v1=x1*V\n",
+ "v2=x2*V\n",
+ "#results\n",
+ "print '%s' %(\"part a\")\n",
+ "print '%s %.3f %s %.3f %s' %(\"Mole fractions of oxygen and nitrogen are\",x1,\" and\",x2,\"respectively\")\n",
+ "print '%s' %(\"part b\")\n",
+ "print '%s %.1f' %(\"Average molecular weight (gm) =\",M)\n",
+ "print '%s' %(\"part c\")\n",
+ "print '%s %.2f %s' %(\"specific gas constant =\",R,\"psia ft^3/lbm R\")\n",
+ "print '%s' %(\"part d\")\n",
+ "print '%s %.1f %s' %(\"volume of mixture =\",V,\"ft^3\")\n",
+ "print '%s %.5f %s %.3f %s' %(\"density of mixture is\",rho, \"mole/ft^3 and\",rho2, \"lbm/ft^3\")\n",
+ "print '%s' %(\"part e\")\n",
+ "print '%s %.2f %s %.2f %s' %(\"partial pressures of oxygen and nitrogen are\",p1, \"psia and\",p2, \"psia respectively\")\n",
+ "print '%s %.2f %s %.2f %s' %(\"partial volumes of oxygen and nitrogen are\",v1, \"ft^3 and\",v2, \"ft^3 respectively\")\n",
+ "print '%s' %(\"The answers are a bit different due to rounding off error in textbook\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "part a\n",
+ "Mole fractions of oxygen and nitrogen are 0.369 and 0.631 respectively\n",
+ "part b\n",
+ "Average molecular weight (gm) = 29.5\n",
+ "part c\n",
+ "specific gas constant = 52.40 psia ft^3/lbm R\n",
+ "part d\n",
+ "volume of mixture = 94.6 ft^3\n",
+ "density of mixture is 0.00896 mole/ft^3 and 0.264 lbm/ft^3\n",
+ "part e\n",
+ "partial pressures of oxygen and nitrogen are 18.43 psia and 31.57 psia respectively\n",
+ "partial volumes of oxygen and nitrogen are 34.87 ft^3 and 59.73 ft^3 respectively\n",
+ "The answers are a bit different due to rounding off error in textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 316"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the gravimetric analysis\n",
+ "#Initialization of variables\n",
+ "m1=5.28\n",
+ "m2=1.28\n",
+ "m3=23.52\n",
+ "#calculations\n",
+ "m=m1+m2+m3\n",
+ "x1=m1/m\n",
+ "x2=m2/m\n",
+ "x3=m3/m\n",
+ "C=12./44. *m1/ m\n",
+ "O=(32./44. *m1 + m2)/m\n",
+ "N=m3/m\n",
+ "sum1=(x1+x2+x3)*100\n",
+ "sum2=(C+N+O)*100\n",
+ "#results\n",
+ "print '%s %.1f %s %.1f %s %.1f %s' %(\"From gravimetric analysis, co2 =\",x1*100,\" percent , o2 =\",x2*100,\"percent and n2 =\",x3*100,\"percent\")\n",
+ "print '%s %.2f %s %.2f %s %.2f %s' %(\"\\n From ultimate analysis, co2 =\",C*100,\"percent , o2 =\",O*100,\"percent and n2 =\",N*100,\"percent\")\n",
+ "print '%s %.1f %s' %(\"\\n Sum in case 1 =\",sum1,\"percent\")\n",
+ "print '%s %.1f %s' %(\"\\n Sum in case 2 =\",sum2,\"percent\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From gravimetric analysis, co2 = 17.6 percent , o2 = 4.3 percent and n2 = 78.2 percent\n",
+ "\n",
+ " From ultimate analysis, co2 = 4.79 percent , o2 = 17.02 percent and n2 = 78.19 percent\n",
+ "\n",
+ " Sum in case 1 = 100.0 percent\n",
+ "\n",
+ " Sum in case 2 = 100.0 percent\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 318"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the entropy of the mixture\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "x1=1./3.\n",
+ "n1=1\n",
+ "n2=2\n",
+ "x2=2./3.\n",
+ "p=12.7 #psia\n",
+ "cp1=7.01 #Btu/mole R\n",
+ "cp2=6.94 #Btu/mole R\n",
+ "R0=1.986\n",
+ "T2=460+86.6 #R\n",
+ "T1=460 #R\n",
+ "p0=14.7 #psia\n",
+ "#calculations\n",
+ "p1=x1*p\n",
+ "p2=x2*p\n",
+ "ds1= cp1*math.log(T2/T1) - R0*math.log(p1/p0)\n",
+ "ds2= cp2*math.log(T2/T1) - R0*math.log(p2/p0)\n",
+ "S=n1*ds1+n2*ds2\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Entropy of mixture =\",S,\"Btu/R\")\n",
+ "print '%s' %(\"\\n the answer given in textbook is wrong. please check using a calculator\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Entropy of mixture = 8.27 Btu/R\n",
+ "\n",
+ " the answer given in textbook is wrong. please check using a calculator\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4 - Pg 319"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the change in internal energy and entropy of the gas\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "c1=4.97 #Btu/mol R\n",
+ "c2=5.02 #Btu/mol R\n",
+ "n1=2\n",
+ "n2=1\n",
+ "T1=86.6+460 #R\n",
+ "T2=50.+460 #R\n",
+ "#calculations\n",
+ "du=(n1*c1+n2*c2)*(T2-T1)\n",
+ "ds=(n1*c1+n2*c2)*math.log(T2/T1)\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Change in internal energy =\",du,\"Btu\")\n",
+ "print '%s %.3f %s' %(\"\\n Change in entropy =\",ds,\"Btu/R\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Change in internal energy = -547 Btu\n",
+ "\n",
+ " Change in entropy = -1.037 Btu/R\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5 - Pg 320"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the pressure and mixing temperature of the mixture\n",
+ "#Initialization of variables\n",
+ "n1=1.\n",
+ "n2=2.\n",
+ "c1=5.02\n",
+ "c2=4.97\n",
+ "t1=60. #F\n",
+ "t2=100. #F\n",
+ "R0=10.73\n",
+ "p1=30. #psia\n",
+ "p2=10. #psia\n",
+ "#calcualtions\n",
+ "t=(n1*c1*t1+n2*c2*t2)/(n1*c1+n2*c2)\n",
+ "V1= n1*R0*(t1+460)/p1\n",
+ "V2=n2*R0*(t2+460)/p2\n",
+ "V=V1+V2\n",
+ "pm=(n1+n2)*R0*(t+460)/V\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Pressure of mixture =\",pm,\"psia\")\n",
+ "print '%s %.1f %s' %(\"\\n Mixing temperature =\",t,\"F\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressure of mixture = 12.7 psia\n",
+ "\n",
+ " Mixing temperature = 86.6 F\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6 - Pg 320"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the change in entropy in all cases\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "T2=546.6 #R\n",
+ "T1=520. #R\n",
+ "T3=560. #R\n",
+ "v2=1389.2\n",
+ "v1=186.2\n",
+ "R0=1.986\n",
+ "c1=5.02\n",
+ "c2=4.97\n",
+ "n1=1\n",
+ "n2=2\n",
+ "v3=1203.\n",
+ "#calculations\n",
+ "ds1=n1*c1*math.log(T2/T1) + n1*R0*math.log(v2/v1)\n",
+ "ds2=n2*c2*math.log(T2/T3)+n2*R0*math.log(v2/v3)\n",
+ "ds=ds1+ds2\n",
+ "ds3=n1*c1*math.log(T2/T1)+n2*c2*math.log(T2/T3)\n",
+ "ds4=n2*R0*math.log(v2/v3)+ n1*R0*math.log(v2/v1)\n",
+ "dss=ds3+ds4\n",
+ "#results\n",
+ "print '%s %.3f %s' %(\"Change in entropy for gas 1 =\",ds1,\"Btu/R\")\n",
+ "print '%s %.3f %s' %(\"\\n Change in entropy for gas 1 =\",ds2,\"Btu/R\")\n",
+ "print '%s %.3f %s' %(\"\\n Net change in entropy =\",ds,\" Btu/R\")\n",
+ "print '%s %.3f %s' %(\"\\n In case 2, change in entropy =\",dss,\" Btu/R\")\n",
+ "print '%s' %(\"The answer is a bit different due to rounding off error in the textbook\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Change in entropy for gas 1 = 4.242 Btu/R\n",
+ "\n",
+ " Change in entropy for gas 1 = 0.331 Btu/R\n",
+ "\n",
+ " Net change in entropy = 4.572 Btu/R\n",
+ "\n",
+ " In case 2, change in entropy = 4.572 Btu/R\n",
+ "The answer is a bit different due to rounding off error in the textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7 - Pg 322"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the final temperature and changes in entropy of air and water\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "m1=1 #lbm\n",
+ "m2=0.94 #lbm\n",
+ "M1=29.\n",
+ "M2=18.\n",
+ "p1=50. #psia\n",
+ "p2=100. #psia\n",
+ "t1=250. +460 #R\n",
+ "R0=1.986\n",
+ "cpa=6.96\n",
+ "cpb=8.01\n",
+ "#calculations\n",
+ "xa = (m1/M1)/((m1/M1)+ m2/M2)\n",
+ "xb=1-xa\n",
+ "t2=t1*math.pow((p2/p1),(R0/(xa*cpa+xb*cpb)))\n",
+ "d=R0/(xa*cpa+xb*cpb)\n",
+ "k=1/(1-d)\n",
+ "dsa=cpa*math.log(t2/t1) -R0*math.log(p2/p1)\n",
+ "dSa=(m1/M1)*dsa\n",
+ "dSw=-dSa\n",
+ "dsw=dSw*M2/m2\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Final remperature =\",t2,\"R\")\n",
+ "print '%s %.3f %s %.5f %s' %(\"\\n Change in entropy of air =\",dsa,\" btu/mole R and\",dSa, \"Btu/R\")\n",
+ "print '%s %.4f %s %.5f %s' %(\"\\n Change in entropy of water =\",dsw,\" btu/mole R and\",dSw, \"Btu/R\")\n",
+ "print '%s' %(\"The answers are a bit different due to rounding off error in textbook\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Final remperature = 851 R\n",
+ "\n",
+ " Change in entropy of air = -0.115 btu/mole R and -0.00395 Btu/R\n",
+ "\n",
+ " Change in entropy of water = 0.0757 btu/mole R and 0.00395 Btu/R\n",
+ "The answers are a bit different due to rounding off error in textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 8 - Pg 323"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the volume occupied and mass of steam\n",
+ "#Initialization of variables\n",
+ "T=250. + 460 #R\n",
+ "p=29.825 #psia\n",
+ "pt=50. #psia\n",
+ "vg=13.821 #ft^3/lbm\n",
+ "M=29.\n",
+ "R=10.73\n",
+ "#calculations\n",
+ "pa=pt-p\n",
+ "V=1/M *R*T/pa\n",
+ "ma=V/vg\n",
+ "xa=p/pt\n",
+ "mb=xa/M *18/(1-xa)\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"In case 1, volume occupied =\",V,\"ft^3\")\n",
+ "print '%s %.2f %s' %(\"\\n In case 1, mass of steam =\",ma,\" lbm steam\")\n",
+ "print '%s %.3f %s' %(\"\\n In case 2, mass of steam =\",mb,\" lbm steam\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "In case 1, volume occupied = 13.02 ft^3\n",
+ "\n",
+ " In case 1, mass of steam = 0.94 lbm steam\n",
+ "\n",
+ " In case 2, mass of steam = 0.918 lbm steam\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9 - Pg 324"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the percentage of alcohol evaporated\n",
+ "#Initialization of variables\n",
+ "ps=0.64 #psia\n",
+ "p=14.7 #psia\n",
+ "M=29\n",
+ "M2=46\n",
+ "#calculations\n",
+ "xa=ps/p\n",
+ "mb=xa*9/M *M2/(1-xa)*100\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"percentage of alcohol evaporated =\",mb,\"percent\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "percentage of alcohol evaporated = 65.0 percent\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10 - Pg 324"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the partial pressure of water vapor\n",
+ "#Initialization of variables\n",
+ "ps=0.5069 #psia\n",
+ "p=20 #psia\n",
+ "m1=0.01\n",
+ "m2=1\n",
+ "M1=18.\n",
+ "M2=29.\n",
+ "#calculations\n",
+ "xw= (m1/M1)/(m1/M1+m2/M2)\n",
+ "pw=xw*p\n",
+ "#results\n",
+ "print '%s %.3f %s' %(\"partial pressure of water vapor =\",pw,\"psia\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "partial pressure of water vapor = 0.317 psia\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11 - Pg 327"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the pressure, dew temperature of water. Calculate the density of water, air,specific humidity and the degree of saturation\n",
+ "#Initialization of variables\n",
+ "t1=80+460. #R\n",
+ "ps=0.5069 #psia\n",
+ "print '%s' %(\"from steam tables,\")\n",
+ "vs=633.1 #ft^3/lbm\n",
+ "phi=0.3\n",
+ "R=85.6\n",
+ "Ra=53.3\n",
+ "p=14.696\n",
+ "#calculations\n",
+ "tdew=46 #F\n",
+ "pw=phi*ps\n",
+ "rhos=1/vs\n",
+ "rhow=phi*rhos\n",
+ "rhow2= pw*144/(R*t1)\n",
+ "pa=p-pw\n",
+ "rhoa= pa*144/(Ra*t1)\n",
+ "w=rhow/rhoa\n",
+ "mu=phi*(p-ps)/(p-pw)\n",
+ "Ws=0.622*(ps/(p-ps))\n",
+ "mu2=w/Ws\n",
+ "#results\n",
+ "print '%s' %(\"part a\")\n",
+ "print '%s %.5f %s' %(\"partial pressure of water =\",pw,\"psia\")\n",
+ "print '%s %d %s' %(\"\\n dew temperature =\",tdew,\"F\")\n",
+ "print '%s' %(\"part b\")\n",
+ "print '%s %.6f %s' %(\"density of water =\",rhow,\"lbm/ft^3\")\n",
+ "print '%s %.6f %s' %(\"\\n in case 2, density of water =\",rhow2,\"lbm/ft^3\")\n",
+ "print '%s %.6f %s' %(\"\\n density of air =\",rhoa,\"lbm/ft^3\")\n",
+ "print '%s' %(\"part c\")\n",
+ "print '%s %.4f %s' %(\"specific humidity =\",w,\"lbm steam/lbm air\")\n",
+ "print '%s' %(\"part d\")\n",
+ "print '%s %.3f' %(\"In method 1, Degree of saturation = \",mu)\n",
+ "print '%s %.3f' %(\"\\n In method 2, Degree of saturation = \",mu2)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "from steam tables,\n",
+ "part a\n",
+ "partial pressure of water = 0.15207 psia\n",
+ "\n",
+ " dew temperature = 46 F\n",
+ "part b\n",
+ "density of water = 0.000474 lbm/ft^3\n",
+ "\n",
+ " in case 2, density of water = 0.000474 lbm/ft^3\n",
+ "\n",
+ " density of air = 0.072765 lbm/ft^3\n",
+ "part c\n",
+ "specific humidity = 0.0065 lbm steam/lbm air\n",
+ "part d\n",
+ "In method 1, Degree of saturation = 0.293\n",
+ "\n",
+ " In method 2, Degree of saturation = 0.293\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12 - Pg 328"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the change in moisture content \n",
+ "#Initialization of variables\n",
+ "p=14.696 #psia\n",
+ "ps=0.0808 #psia\n",
+ "ps2=0.5069 #psia\n",
+ "phi2=0.5\n",
+ "phi=0.6\n",
+ "grain=7000\n",
+ "#calculations\n",
+ "pw=phi*ps\n",
+ "w1=0.622*pw/(p-pw)\n",
+ "pw2=phi2*ps2\n",
+ "w2=0.622*pw2/(p-pw2)\n",
+ "dw=w2-w1\n",
+ "dwg=dw*grain\n",
+ "#results\n",
+ "print '%s %.6f %s' %(\"change in moisture content =\",dw,\"lbm water/lbm dry air\")\n",
+ "print '%s %.2f %s' %(\"\\n in grains, change =\",dwg,\"grains water/lbm dry air\")\n",
+ "print '%s' %(\"The answers are a bit different due to rounding off error in textbook\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "change in moisture content = 0.008857 lbm water/lbm dry air\n",
+ "\n",
+ " in grains, change = 62.00 grains water/lbm dry air\n",
+ "The answers are a bit different due to rounding off error in textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13 - Pg 335"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the humidity ratio, relative humidity and dew point of the gas\n",
+ "#Initialization of variables\n",
+ "t1=80. #F\n",
+ "t2=60. #F\n",
+ "p=14.696 #psia\n",
+ "ps=0.507 #psia\n",
+ "pss=0.256 #psia\n",
+ "cp=0.24\n",
+ "#calculations\n",
+ "ws=0.622*pss/(p-pss)\n",
+ "w=(cp*(t2-t1) + ws*1060)/(1060+ 0.45*(t1-t2))\n",
+ "pw=w*p/(0.622+w)\n",
+ "phi=pw/ps*100\n",
+ "td=46. #F\n",
+ "#results\n",
+ "print '%s %.4f %s' %(\"\\n humidity ratio =\",w,\"lbm/lbm dry air\")\n",
+ "print '%s %.1f %s' %(\"\\n relative humidity =\",phi,\" percent\")\n",
+ "print '%s %d %s' %(\"\\n Dew point =\",td,\"F\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ " humidity ratio = 0.0064 lbm/lbm dry air\n",
+ "\n",
+ " relative humidity = 29.7 percent\n",
+ "\n",
+ " Dew point = 46 F\n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14 - Pg 335"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the enthalpy and sigma function of the mixture\n",
+ "#Initialization of variables\n",
+ "W=0.0065 #lbm/lbm of dry air\n",
+ "t=80. #F\n",
+ "td=60. #F\n",
+ "#calculations\n",
+ "H=0.24*t+W*(1060+0.45*t)\n",
+ "sig=H-W*(td-32)\n",
+ "Ws=0.0111\n",
+ "H2=0.24*td+Ws*(1060+0.45*td)\n",
+ "sig2=H2-Ws*(td-32)\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"In case 1, enthalpy =\",H,\"Btu/lbm dry air\")\n",
+ "print '%s %.2f %s' %(\"\\n In case 1, sigma function =\",sig,\"Btu/lbm dry air\")\n",
+ "print '%s %.2f %s' %(\"\\n In case 2, enthalpy =\",H2,\"Btu/lbm dry air\")\n",
+ "print '%s %.2f %s' %(\"\\n In case 2, sigma function =\",sig2,\"Btu/lbm dry air\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "In case 1, enthalpy = 26.32 Btu/lbm dry air\n",
+ "\n",
+ " In case 1, sigma function = 26.14 Btu/lbm dry air\n",
+ "\n",
+ " In case 2, enthalpy = 26.47 Btu/lbm dry air\n",
+ "\n",
+ " In case 2, sigma function = 26.15 Btu/lbm dry air\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 15 - Pg 336"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the enthalpy and heat added\n",
+ "#Initialization of variables\n",
+ "t1=30. #F\n",
+ "t2=60. #F\n",
+ "t3=80. #F\n",
+ "W1=0.00206\n",
+ "W2=0.01090\n",
+ "#calculations\n",
+ "cm1=0.24+0.45*W1\n",
+ "H1=cm1*t1+W1*1060\n",
+ "cm2=0.24+0.45*W2\n",
+ "H2=cm2*t3+W2*1060\n",
+ "hf=t2-32\n",
+ "dq=H2-H1-(W2-W1)*hf\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"In case 1, Enthalpy =\",H1,\"Btu/lbm dry air\")\n",
+ "print '%s %.2f %s' %(\"\\n In case 2, Enthalpy =\",H2,\"Btu/lbm dry air\")\n",
+ "print '%s %.2f %s' %(\"\\n Heat added =\",dq,\"Btu/lbm dry air\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "In case 1, Enthalpy = 9.41 Btu/lbm dry air\n",
+ "\n",
+ " In case 2, Enthalpy = 31.15 Btu/lbm dry air\n",
+ "\n",
+ " Heat added = 21.49 Btu/lbm dry air\n"
+ ]
+ }
+ ],
+ "prompt_number": 16
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 16 - Pg 337"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the partial pressure and dew temperature of water. Calculate the density of water and air and also the specific humidity\n",
+ "#Initialization of variables\n",
+ "pw=0.15#psia\n",
+ "print '%s' %(\"using psychrometric charts,\")\n",
+ "tdew=46. #F\n",
+ "#calculations\n",
+ "va=13.74 #ft^3/lbm dry air\n",
+ "rhoa=1/va\n",
+ "V=13.74\n",
+ "mw=46./7000.\n",
+ "rhow=mw/V\n",
+ "w=0.00657\n",
+ "#results\n",
+ "print '%s' %(\"part a\")\n",
+ "print '%s %.2f %s' %(\"partial pressure of water =\",pw,\"psia\")\n",
+ "print '%s %d %s' %(\"\\n dew temperature =\",tdew,\"F\")\n",
+ "print '%s' %(\"part b\")\n",
+ "print '%s %.6f %s' %(\"density of water =\",rhow,\"lbm/ft^3\")\n",
+ "print '%s %.4f %s' %(\"\\n density of air =\",rhoa,\"lbm/ft^3\")\n",
+ "print '%s' %(\"part c\")\n",
+ "print '%s %.5f %s' %(\"specific humidity =\",w,\"lbm steam/lbm air\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "using psychrometric charts,\n",
+ "part a\n",
+ "partial pressure of water = 0.15 psia\n",
+ "\n",
+ " dew temperature = 46 F\n",
+ "part b\n",
+ "density of water = 0.000478 lbm/ft^3\n",
+ "\n",
+ " density of air = 0.0728 lbm/ft^3\n",
+ "part c\n",
+ "specific humidity = 0.00657 lbm steam/lbm air\n"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17 - Pg 337"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the change in enthalpy\n",
+ "#Initialization of variables\n",
+ "W1=0.00206 #lbm/lbm dry air\n",
+ "W2=0.01090 #lbm/lbm dry air\n",
+ "t=60 #F\n",
+ "#calculations\n",
+ "dw=W1-W2\n",
+ "hs=144.4\n",
+ "hs2=66.8-32\n",
+ "w1=14.4 #Btu/lbm\n",
+ "ws1=20 #Btu/lbm\n",
+ "w2=76.3 #Btu/lbm\n",
+ "ws2=98.5 #Btu/lbm\n",
+ "dwh1=-(w1-ws1)/7000. *hs\n",
+ "H1=9.3+dwh1\n",
+ "dwh2=(w2-ws2)/7000. *hs2\n",
+ "H2=31.3+dwh2\n",
+ "dwc=dw*(t-32)\n",
+ "dq=H2-H1+dwc\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Enthalpy change =\",dq,\"Btu/lbm dry air\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enthalpy change = 21.53 Btu/lbm dry air\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 18 - Pg 339"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the humidity and temperature of the gas\n",
+ "#Initialization of variables\n",
+ "print '%s' %(\"From psychrometric charts,\")\n",
+ "va1=13. #ft^3/lbm dry air\n",
+ "va2=13.88 #ft^3/lbm dry air\n",
+ "flow=2000. #cfm\n",
+ "#calculations\n",
+ "ma1= flow/va1\n",
+ "ma2=flow/va2\n",
+ "t=62.5 # F\n",
+ "phi=0.83 #percent\n",
+ "#results\n",
+ "print '%s %.2f' %(\"humidity = \",phi)\n",
+ "print '%s %.1f %s' %(\"\\n Temperature =\",t,\"F\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From psychrometric charts,\n",
+ "humidity = 0.83\n",
+ "\n",
+ " Temperature = 62.5 F\n"
+ ]
+ }
+ ],
+ "prompt_number": 19
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 19 - Pg 341"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the dry bulb temperature and percentage humidity\n",
+ "#Initialization of variables\n",
+ "t=90 #F\n",
+ "ts=67.2 #F\n",
+ "phi=0.3\n",
+ "per=0.8\n",
+ "#calculations\n",
+ "dep=t-ts\n",
+ "dt=dep*per\n",
+ "tf=t-dt\n",
+ "print '%s' %(\"from psychrometric charts,\")\n",
+ "phi2=0.8\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Dry bulb temperature =\",tf,\"F\")\n",
+ "print '%s %.2f' %(\"\\n percent humidity =\",phi2)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "from psychrometric charts,\n",
+ "Dry bulb temperature = 71.76 F\n",
+ "\n",
+ " percent humidity = 0.80\n"
+ ]
+ }
+ ],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 20 - Pg 342"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the cooling range, approach and amount of water cooled and percentage of water lost by evaporation\n",
+ "#Initialization of variables\n",
+ "m=1 #lbm\n",
+ "t1=100. #F\n",
+ "t2=75. #F\n",
+ "db=65. #F\n",
+ "print '%s' %(\"From psychrometric charts,\")\n",
+ "t11=82 #F\n",
+ "phi1=0.4\n",
+ "H1=30 #Btu/lbm dry air\n",
+ "w1=65 #grains/lbm dry air\n",
+ "w2=250 #grains/lbm dry air\n",
+ "#calculations\n",
+ "cr=t1-t2\n",
+ "appr=t2-db\n",
+ "dmf3=(w2-w1)*0.0001427\n",
+ "hf3=68\n",
+ "hf4=43\n",
+ "H2=62.2\n",
+ "H1=30\n",
+ "mf4= (H1-H2+ dmf3*hf3)/(hf4-hf3)\n",
+ "per=dmf3/(dmf3+mf4)*100\n",
+ "#results\n",
+ "print '%s %d %s' %(\"cooling range =\",cr,\"F\")\n",
+ "print '%s %d %s' %(\"\\n Approach =\",appr,\"F\")\n",
+ "print '%s %.3f %s' %(\"\\n amount of water cooled per pound of dry air =\",mf4,\"lbm dry air/lbm dry air\")\n",
+ "print '%s %.2f %s' %(\"\\n percentage of water lost by evaporation =\",per,\"percent\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From psychrometric charts,\n",
+ "cooling range = 25 F\n",
+ "\n",
+ " Approach = 10 F\n",
+ "\n",
+ " amount of water cooled per pound of dry air = 1.216 lbm dry air/lbm dry air\n",
+ "\n",
+ " percentage of water lost by evaporation = 2.12 percent\n"
+ ]
+ }
+ ],
+ "prompt_number": 21
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 21 - Pg 348"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the pressure and error in both cases\n",
+ "#Initialization of variables\n",
+ "R0=0.73 #atm ft^3/mol R\n",
+ "a1=578.9\n",
+ "a2=3675\n",
+ "b1=0.684\n",
+ "b2=1.944\n",
+ "n1=0.396 #mol\n",
+ "n2=0.604 #mol\n",
+ "V=8.518 #ft^3\n",
+ "T=460+460. #R\n",
+ "#calculations\n",
+ "p1=R0*n1*T/(V-n1*b1) - a1*n1*n1 /V/V\n",
+ "p2= R0*n2*T/(V-n2*b2) -a2*n2*n2 /V/V\n",
+ "p=p1+p2\n",
+ "pa=(n1+n2)*R0*T/V\n",
+ "err=(pa-p)/p*100\n",
+ "pb=58.7 #atm\n",
+ "err2= (p-pb)/p*100\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Pressure =\",p,\" atm\")\n",
+ "print '%s %.1f %s' %(\"\\n Pressure in case 2 =\",pb,\"atm\")\n",
+ "print '%s %.1f %s' %(\"\\n error in ideal case =\",err,\" percent\")\n",
+ "print '%s %.1f %s' %(\"\\n error in case 2 =\",err2,\" percent\")\n",
+ "print '%s' %('The answer is a bit different due to rounding off error in textbook')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressure = 67.8 atm\n",
+ "\n",
+ " Pressure in case 2 = 58.7 atm\n",
+ "\n",
+ " error in ideal case = 16.4 percent\n",
+ "\n",
+ " error in case 2 = 13.4 percent\n",
+ "The answer is a bit different due to rounding off error in textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 22 - Pg 350"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the pressure using both cases\n",
+ "#Initialization of variables\n",
+ "p1=45.8 #atm\n",
+ "p2=36 #atm\n",
+ "t1=343.3 #R\n",
+ "t2=766.8 #R\n",
+ "n1=0.396 #mol\n",
+ "n2=0.604 #mol\n",
+ "V=8.518 #ft^3\n",
+ "R0=0.73\n",
+ "T=920 #R\n",
+ "#calcualtions\n",
+ "vr1=p1*(V/n1)/(R0*t1)\n",
+ "vr2=p2*(V/n2)/(R0*t2)\n",
+ "tr1=T/t1\n",
+ "tr2=T/t2\n",
+ "print '%s' %(\"From compressibility charts,\")\n",
+ "z1=1\n",
+ "z2=0.79\n",
+ "Z=n1*z1+n2*z2\n",
+ "p=Z*R0*T/V\n",
+ "p2=62. #atm\n",
+ "err=(p-p2)/p*100\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"In case 1, pressure =\",p,\"atm\")\n",
+ "print '%s %d %s' %(\"\\n In case 2, pressure using trail and error method =\",p2,\"atm\")\n",
+ "print '%s %d %s' %(\"\\n Error =\",err,\"percent\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From compressibility charts,\n",
+ "In case 1, pressure = 68.8 atm\n",
+ "\n",
+ " In case 2, pressure using trail and error method = 62 atm\n",
+ "\n",
+ " Error = 9 percent\n"
+ ]
+ }
+ ],
+ "prompt_number": 23
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 23 - Pg 351"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the pressure required\n",
+ "#Initialization of variables\n",
+ "t1=343.3 #R\n",
+ "t2=766.8 #R\n",
+ "n1=0.396 #mol\n",
+ "n2=0.604 #mol\n",
+ "V=8.518 #ft^3\n",
+ "p1=45.8 #atm\n",
+ "p2=36 #atm\n",
+ "R0=0.73\n",
+ "T=920 #R\n",
+ "#calculations\n",
+ "tcd=n1*t1+n2*t2\n",
+ "pcd=n1*p1+n2*p2\n",
+ "Tr=T/tcd\n",
+ "Vr=pcd*V/(R0*tcd)\n",
+ "Z=0.87\n",
+ "p=Z*R0*T/V\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Pressure =\",p,\"atm\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressure = 68.6 atm\n"
+ ]
+ }
+ ],
+ "prompt_number": 24
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Concepts_of_Thermodynamics/Chapter14.ipynb b/Concepts_of_Thermodynamics/Chapter14.ipynb new file mode 100755 index 00000000..3c8834de --- /dev/null +++ b/Concepts_of_Thermodynamics/Chapter14.ipynb @@ -0,0 +1,216 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 14 - Equilibrium and the third law"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 372"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the equlibrium constant\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "n1=0.95\n",
+ "n2=0.05\n",
+ "n3=0.025\n",
+ "P=147 #psia\n",
+ "pa=14.7 #psia\n",
+ "#calculations\n",
+ "n=n1+n2+n3\n",
+ "p1=n1/n *P/pa\n",
+ "p2=n2/n *P/pa\n",
+ "p3=n3/n *P/pa\n",
+ "Kp1= p1/(p2*math.pow(p3,0.5))\n",
+ "Kp2= p1*p1 /(p2*p2 *p3)\n",
+ "#results\n",
+ "print '%s %.1f' %(\"In case 1, Equilibrium constant = \",Kp1)\n",
+ "print '%s %.1f' %(\"\\n In case 2, Equilibrium constant = \",Kp2)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "In case 1, Equilibrium constant = 38.5\n",
+ "\n",
+ " In case 2, Equilibrium constant = 1480.1\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 373"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the degree of dissociation\n",
+ "#Initialization of variables\n",
+ "kp=5. \n",
+ "import numpy\n",
+ "from numpy import roots\n",
+ "#calculations\n",
+ "vec=numpy.roots([24,0, 3,-2])\n",
+ "x=vec[2]\n",
+ "vec2=numpy.roots([249,0,3,-2])\n",
+ "y=vec2[2]\n",
+ "#results\n",
+ "print '%s %.2f' %(\"\\n degree of dissociation = \",x)\n",
+ "print '%s %.2f' %(\"\\n If pressure =10 . degree of dissociation =\",y)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ " degree of dissociation = 0.34\n",
+ "\n",
+ " If pressure =10 . degree of dissociation = 0.18\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stderr",
+ "text": [
+ "-c:12: ComplexWarning: Casting complex values to real discards the imaginary part\n",
+ "-c:13: ComplexWarning: Casting complex values to real discards the imaginary part\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 373"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the degree of dissociation\n",
+ "#Initialization of variables\n",
+ "k=5.\n",
+ "import numpy\n",
+ "from numpy import roots\n",
+ "#calculations\n",
+ "p=[k*k-1, k-5*k*k,7*k*k, -3*k*k]\n",
+ "vec=roots(p)\n",
+ "x=vec[2]\n",
+ "#results\n",
+ "print '%s %.2f' %(\"degree of dissociation = \",x)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "degree of dissociation = 0.78\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4 - Pg 395"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the work done in all the cases\n",
+ "import math\n",
+ "#Initialization of variables\n",
+ "T=77+460. #R\n",
+ "x1=0.21\n",
+ "x2=1-x1\n",
+ "G=-169557 #Btu/mole\n",
+ "n1=1\n",
+ "n2=3.76\n",
+ "R0=1.986\n",
+ "v=0.0885\n",
+ "pi=14.7\n",
+ "J=778.\n",
+ "#calculations\n",
+ "dg1=-n1*R0*T*math.log(x1)\n",
+ "dg2=-n2*R0*T*math.log(x2)\n",
+ "dg=dg1+dg2\n",
+ "dG=dg+G\n",
+ "W=-dG\n",
+ "W2=-G\n",
+ "p=0.0004 #atm\n",
+ "G1=-n1*R0*T*math.log(1./p)\n",
+ "W3= -(dg1+G+G1)\n",
+ "dgf=v*pi*144/J\n",
+ "#results\n",
+ "print '%s %d %s' %(\"In case 1,Work done =\",W,\"Btu/mole C\")\n",
+ "print '%s %d %s' %(\"\\n In case 2,Work done =\",W2,\"Btu/mole C\")\n",
+ "print '%s %d %s' %(\"\\n In case 3,Work done =\",W3,\"Btu/mole C\")\n",
+ "print '%s %.2f %s' %(\"\\n In case 4,Work done =\",dgf,\" Btu/mole C\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "In case 1,Work done = 166947 Btu/mole C\n",
+ "\n",
+ " In case 2,Work done = 169557 Btu/mole C\n",
+ "\n",
+ " In case 3,Work done = 176236 Btu/mole C\n",
+ "\n",
+ " In case 4,Work done = 0.24 Btu/mole C\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Concepts_of_Thermodynamics/Chapter15.ipynb b/Concepts_of_Thermodynamics/Chapter15.ipynb new file mode 100755 index 00000000..cf9c110e --- /dev/null +++ b/Concepts_of_Thermodynamics/Chapter15.ipynb @@ -0,0 +1,300 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 15 - Basic Flow equations"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 407"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calcualte the final temperature and pressure of the gas\n",
+ "#Initialization of variables\n",
+ "print '%s' %(\"From Table B-4,\")\n",
+ "h=1187.2 #Btu/lbm\n",
+ "t=328. #F\n",
+ "#calculations\n",
+ "p2=100 #psia\n",
+ "u2=1187.2 #Btu/lbm\n",
+ "t2=540. #F\n",
+ "dt=t2-t\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Final temperature of steam =\",t2,\"F\")\n",
+ "print '%s %d %s' %(\"\\n Final pressure =\",p2,\"psia\")\n",
+ "print '%s %d %s' %(\"\\n Change in temperature =\",dt,\"F\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From Table B-4,\n",
+ "Final temperature of steam = 540 F\n",
+ "\n",
+ " Final pressure = 100 psia\n",
+ "\n",
+ " Change in temperature = 212 F\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 409"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the work done in the process\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "p1=100. #psia\n",
+ "p2=14.7 #psia\n",
+ "k=1.4\n",
+ "T1=700. #R\n",
+ "R=10.73/29\n",
+ "V=50.\n",
+ "cv=0.171\n",
+ "cp=0.24\n",
+ "R2=1.986/29.\n",
+ "#calculations\n",
+ "T2=T1/ math.pow((p1/p2),((k-1)/k))\n",
+ "m1=p1*V/(R*T1)\n",
+ "m2=p2*V/(R*T2)\n",
+ "Wrev= cv*(m1*T1 - m2*T2) - (m1-m2)*(T2)*cp\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Work done in case 1 =\",Wrev,\" Btu\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Work done in case 1 = 572 Btu\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4 - Pg 420"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the friction of the process\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "p1=100. #psia\n",
+ "p2=10. #psia\n",
+ "n=1.3\n",
+ "T1=800. #R\n",
+ "cv=0.172\n",
+ "R=1.986/29.\n",
+ "T0=537. #R\n",
+ "cp=0.24\n",
+ "#calculations\n",
+ "T2=T1*math.pow((p2/p1),((n-1)/n))\n",
+ "dwir=cv*(T1-T2)\n",
+ "dwr=R*(T2-T1)/(1-n)\n",
+ "dq=dwr-dwir\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"The friction of the process per pound of air =\",dq,\"Btu/lbm\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The friction of the process per pound of air = 18.6 Btu/lbm\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5 - Pg 421"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the friction in the process\n",
+ "#Initialization of variables\n",
+ "ms=10 #lbm\n",
+ "den=62.3 #lbm/ft^3\n",
+ "A1=0.0218 #ft^2\n",
+ "A2=0.00545 #ft^2\n",
+ "p2=50. #psia\n",
+ "p1=100. #psia\n",
+ "gc=32.2 #ft/s^2\n",
+ "dz=30. #ft\n",
+ "T0=537. #R\n",
+ "T1=620. #R\n",
+ "T2=420. #R\n",
+ "#calculations\n",
+ "V1=ms/(A1*den)\n",
+ "V2=ms/(A2*den)\n",
+ "df=-144/den*(p2-p1) - (V2*V2 -V1*V1)/(2*gc) - dz\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Friction =\",df,\"ft-lbf/lbm\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Friction = 72.9 ft-lbf/lbm\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6 - Pg 432"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the efficiency of the cycle and the loss of available energy\n",
+ "#Initialization of variables\n",
+ "cp1=0.25\n",
+ "T=3460 #R\n",
+ "T0=946.2 #R\n",
+ "T00=520 #R\n",
+ "dG=1228 #Btu/lbm\n",
+ "cp=0.45\n",
+ "#calculations\n",
+ "dqa=cp1*(T-T0)\n",
+ "w=cp*dqa\n",
+ "dg=489.\n",
+ "eff=w/dg*100\n",
+ "dI=-dg+w\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"\\n Efficiency of cycle =\",eff,\" percent\")\n",
+ "print '%s %.1f %s' %(\"\\n Loss of available energy =\",dI,\"Btu/lbm\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ " Efficiency of cycle = 57.8 percent\n",
+ "\n",
+ " Loss of available energy = -206.2 Btu/lbm\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7 - Pg 434"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the engine efficiency and effectiveness. Also, calculate the loss of available energy\n",
+ "#Initialization of variables\n",
+ "p1=400. #psia\n",
+ "t1=600. #F\n",
+ "h1=1306.9 #Btu/lbm\n",
+ "b1=480.9 #Btu/lbm\n",
+ "p2=50 #psia\n",
+ "h2=1122 #Btu/lbm\n",
+ "h3=1169.5 #Btu/lbm\n",
+ "b3=310.9 #Btu/lbm\n",
+ "#calculations\n",
+ "print '%s' %(\"All the values are obtained from Mollier chart,\")\n",
+ "dw13=h1-h3\n",
+ "dw12=h1-h2\n",
+ "dasf=b3-b1\n",
+ "etae=dw13/dw12*100\n",
+ "eta=abs(dw13/dasf)*100\n",
+ "dq=dw13+dasf\n",
+ "#results\n",
+ "print '%s %.1f %s' % (\"Engine efficiency =\",etae,\"percent\")\n",
+ "print '%s %.1f %s' %(\"\\n Effectiveness =\",eta,\"percent\")\n",
+ "print '%s %.1f %s' %(\"\\n Loss of available energy =\",dq,\"Btu/lbm\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "All the values are obtained from Mollier chart,\n",
+ "Engine efficiency = 74.3 percent\n",
+ "\n",
+ " Effectiveness = 80.8 percent\n",
+ "\n",
+ " Loss of available energy = -32.6 Btu/lbm\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Concepts_of_Thermodynamics/Chapter16.ipynb b/Concepts_of_Thermodynamics/Chapter16.ipynb new file mode 100755 index 00000000..164da53c --- /dev/null +++ b/Concepts_of_Thermodynamics/Chapter16.ipynb @@ -0,0 +1,478 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 16 - Combustion"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 448"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the molecule \n",
+ "#Initialization of variables\n",
+ "per=85.\n",
+ "#calculations\n",
+ "a=per/12.\n",
+ "b=100-per\n",
+ "ad=1.13*a\n",
+ "bd=1.13*b\n",
+ "#results\n",
+ "print '%s %d %s %d' %(\"Molecule is C\",ad, \"H\",bd+1)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Molecule is C 8 H 17\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 448"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the Oxygen and Nitrogen compositions and also the molecule\n",
+ "#Initialization of variables\n",
+ "per=0.071\n",
+ "#calculations\n",
+ "O2=8.74\n",
+ "N2=per/2. + 3.76*O2\n",
+ "Nin=32.85\n",
+ "CO2=7.333\n",
+ "H2o=3\n",
+ "So2=0.0312\n",
+ "#results\n",
+ "print '%s %.2f %s %.2f'%(\"Oxygen =\",O2,\" and Nitrogen =\",N2)\n",
+ "print '%s %.3f %s %d %s %.2f %s %.2f %s %.3f %s %d %s %.5f %s %.2f %s' %(\"\\n Equation is C\",CO2, \"H\",2*H2o,\"+\",O2,\" O2 +\",Nin,\" N2 = \",CO2,\"CO2 +\",H2o,\"H2O +\",So2,\" SO2 +\",N2,\"N2\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Oxygen = 8.74 and Nitrogen = 32.90\n",
+ "\n",
+ " Equation is C 7.333 H 6 + 8.74 O2 + 32.85 N2 = 7.333 CO2 + 3 H2O + 0.03120 SO2 + 32.90 N2\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4 - Pg 451"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the air fuel ratio\n",
+ "#Initialization of variables\n",
+ "N2=78.1\n",
+ "M=29\n",
+ "co2=8.7\n",
+ "co=8.9\n",
+ "x4=0.3\n",
+ "x5=3.7\n",
+ "x6=14.7\n",
+ "#calculations\n",
+ "O2=N2/3.76\n",
+ "Z=(co2+co+x4)/8.\n",
+ "AF=(O2+N2)*M/(Z*113.)\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Air fuel ratio =\",AF,\"lbm air/lbm fuel\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Air fuel ratio = 11.3 lbm air/lbm fuel\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5 - Pg 452"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the air fuel ratio\n",
+ "#Initialization of variables\n",
+ "N2=78.1\n",
+ "M=29\n",
+ "ba=2.12\n",
+ "x4=0.3\n",
+ "x5=3.7\n",
+ "x6=14.7\n",
+ "#calculations\n",
+ "O2=N2/3.76\n",
+ "O2=N2/3.76\n",
+ "Z=(x4*4+x5*2+x6*2)/17.\n",
+ "AF=(O2+N2)*M/(Z*113.)\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Air fuel ratio =\",AF,\"lbm air/lbm fuel\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Air fuel ratio = 11.4 lbm air/lbm fuel\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6 - Pg 452"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the air fuel ratio\n",
+ "#Initialization of variables\n",
+ "N2=78.1\n",
+ "M=29\n",
+ "ba=2.12\n",
+ "x4=0.3\n",
+ "x5=3.7\n",
+ "x6=14.7\n",
+ "#calculations\n",
+ "O2=N2/3.76\n",
+ "c=14.7\n",
+ "b= x4*4 + x5*2 + x6*2\n",
+ "a=b/ba\n",
+ "AF=(O2+N2)*M/(a*12 + b)\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Air fuel ratio =\",AF,\"lbm air/lbm fuel\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Air fuel ratio = 11.3 lbm air/lbm fuel\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7 - Pg 453"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the air fuel ratio\n",
+ "#Initialization of variables\n",
+ "N2=78.1\n",
+ "M=29\n",
+ "ba=2.12\n",
+ "co2=8.7\n",
+ "co=8.9\n",
+ "x4=0.3\n",
+ "x5=3.7\n",
+ "x6=14.7\n",
+ "#calculations\n",
+ "O2=N2/3.76\n",
+ "c=14.7\n",
+ "Z=2.238\n",
+ "X=(Z*17-x4*4-x5*2)/2\n",
+ "a=co2+co/2+x4+x6/2\n",
+ "b=3.764*a\n",
+ "AF=(O2+N2)*M/(Z*113)\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Air fuel ratio =\",AF,\"lbm air/lbm fuel\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Air fuel ratio = 11.3 lbm air/lbm fuel\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 8 - Pg 454"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the air fuel ratio\n",
+ "#Initialization of variables\n",
+ "x1=8.7\n",
+ "x2=8.9\n",
+ "x3=0.3\n",
+ "N=78.1\n",
+ "z=113\n",
+ "M=29\n",
+ "#calculations\n",
+ "co2=(x1+x2+x3)*100/(N+x1+x2+x3)\n",
+ "a=2.325\n",
+ "AF=103*M/(a*z)\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Air fuel ratio =\",AF,\"lbm air/lbm fuel\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Air fuel ratio = 11.37 lbm air/lbm fuel\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9 - Pg 457"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the higher heating value\n",
+ "#Initialization of variables\n",
+ "dH=-2369859. #Btu\n",
+ "r=1.986\n",
+ "dn=5.5\n",
+ "T=536.7 #R\n",
+ "#calculations\n",
+ "dQ=dH+dn*r*T\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Higher heating value =\",dQ,\"Btu\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Higher heating value = -2363996 Btu\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10 - Pg 457"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the lower heating value\n",
+ "#Initialization of variables\n",
+ "y=13.\n",
+ "x=12.\n",
+ "M2=18.\n",
+ "M=170.\n",
+ "p=0.4593\n",
+ "vfg=694.9\n",
+ "J=778.2\n",
+ "m=9*18\n",
+ "u1=-2363996 #Btu\n",
+ "#calculations\n",
+ "z=y*M2/M\n",
+ "hfg=1050.4 #Btu/lbm\n",
+ "ufg= hfg- p*vfg*144/J\n",
+ "dU=ufg*m \n",
+ "Lhv=u1+dU\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Lower heating value =\",Lhv,\" Btu/lbm\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Lower heating value = -2203398 Btu/lbm\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11 - Pg 457"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the heat of reaction\n",
+ "#Initialization of variables\n",
+ "n1=8.\n",
+ "n2=9.\n",
+ "n3=1.\n",
+ "n4=12.5\n",
+ "U11=3852.\n",
+ "U12=115.\n",
+ "U21=3009.\n",
+ "U22=101.\n",
+ "U31=24773.\n",
+ "U32=640.\n",
+ "U41=2539.\n",
+ "U42=83.\n",
+ "H=-2203389.\n",
+ "#calculations\n",
+ "dU1=n1*(U11-U12)+n2*(U21-U22)\n",
+ "dU2=n3*(U31-U32)+n4*(U41-U42)\n",
+ "Q=H+dU1-dU2\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Heat of reaction =\",Q,\"Btu\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Heat of reaction = -2202154 Btu\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12 - Pg 459"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the final temperature\n",
+ "#Initialization of variables\n",
+ "n1=8\n",
+ "n2=9\n",
+ "n3=47\n",
+ "h1=118\n",
+ "h2=104\n",
+ "h3=82.5\n",
+ "Q=2203279 #Btu\n",
+ "#calculations\n",
+ "U11=n1*h1+n2*h2+n3*h3\n",
+ "U12=U11+Q\n",
+ "T2=5271 #R\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Upon interpolating, T2 =\",T2,\" R\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Upon interpolating, T2 = 5271 R\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Concepts_of_Thermodynamics/Chapter2.ipynb b/Concepts_of_Thermodynamics/Chapter2.ipynb new file mode 100755 index 00000000..3568063b --- /dev/null +++ b/Concepts_of_Thermodynamics/Chapter2.ipynb @@ -0,0 +1,102 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 2 - Fundamental Concepts"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 17"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the potential energy of the system\n",
+ "#Initialization of variables\n",
+ "z=100 #ft\n",
+ "m=32.1739 #lbm\n",
+ "#calculations\n",
+ "PE=m*z\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Potential energy =\",PE,\"ft-lbm\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Potential energy = 3217.39 ft-lbm\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 21"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the absolute energy and change in mass of the mixture\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "m0=18.016 #lbm\n",
+ "gc=32.1739 #lbm ft/lbf sec^2\n",
+ "c=186000*5280\n",
+ "dU=94.4*math.pow(10,6) #ft-lbf\n",
+ "#calculations\n",
+ "U=m0/gc *c*c\n",
+ "dm= -dU*gc/(c*c)\n",
+ "#results\n",
+ "print '%s %.2e %s' %(\"Absolute energy of this mixture =\",U,\"ft-lbf\")\n",
+ "print '%s' %(\"\\n In case b, there is no change in mass\")\n",
+ "print '%s %.2e %s' %(\"\\n Change in mass =\",dm,\"lbm\")\n",
+ "print '%s' %(\"The answers are a bit different due to rounding off error in textbook.\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Absolute energy of this mixture = 5.40e+17 ft-lbf\n",
+ "\n",
+ " In case b, there is no change in mass\n",
+ "\n",
+ " Change in mass = -3.15e-09 lbm\n",
+ "The answers are a bit different due to rounding off error in textbook.\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Concepts_of_Thermodynamics/Chapter3.ipynb b/Concepts_of_Thermodynamics/Chapter3.ipynb new file mode 100755 index 00000000..f2dd489f --- /dev/null +++ b/Concepts_of_Thermodynamics/Chapter3.ipynb @@ -0,0 +1,94 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 3 - Temperature and the ideal gas"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 48"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the volume of the gas\n",
+ "#Initialization of variables\n",
+ "p=14.7 #psia\n",
+ "R0=1545 \n",
+ "t=460 +60. #R\n",
+ "#calculations\n",
+ "v=R0*t/(p*144.)\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Volume =\",v,\"ft^3/mol\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Volume = 379.5 ft^3/mol\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 48"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the density of nitrogen\n",
+ "#Initialization of variables\n",
+ "p=20 #psia\n",
+ "R0=1545. \n",
+ "t=460. +100 #R\n",
+ "M=28.\n",
+ "#calculations\n",
+ "v=R0*t/(p*144*M)\n",
+ "rho=1/v\n",
+ "#results\n",
+ "print '%s %.4f %s' %(\"density of nitrogen =\",rho,\"lbm/ft^3\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "density of nitrogen = 0.0932 lbm/ft^3\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Concepts_of_Thermodynamics/Chapter5.ipynb b/Concepts_of_Thermodynamics/Chapter5.ipynb new file mode 100755 index 00000000..e463b7a8 --- /dev/null +++ b/Concepts_of_Thermodynamics/Chapter5.ipynb @@ -0,0 +1,104 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 5 - The first law and the dynamic open system"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 86"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the work done and power of the system\n",
+ "#Initialization of variables\n",
+ "rate= 5 #lbm/sec\n",
+ "Q=50. #Btu/s\n",
+ "h2=1020. #Btu/lbm\n",
+ "h1=1000. #Btu/lbm\n",
+ "V2=50. #ft/s\n",
+ "V1=100. #ft/s\n",
+ "J=778.\n",
+ "g=32.2 #ft/s^2\n",
+ "gc=g\n",
+ "Z2=0\n",
+ "Z1=100. #ft\n",
+ "#calculations\n",
+ "dw=Q/rate -(h2-h1) -(V2*V2- V1*V1)/(2*gc*J) -g/gc *(Z2-Z1)/J\n",
+ "power=dw*rate\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"work done by the system =\",dw,\"Btu/lbm\")\n",
+ "print '%s %.1f %s' %(\"\\n Power =\",power,\"Btu/s\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "work done by the system = -9.7 Btu/lbm\n",
+ "\n",
+ " Power = -48.6 Btu/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 87"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the area of the inlet pipe\n",
+ "#Initialization of variables\n",
+ "V=100. #ft/s\n",
+ "v=15. #lbm/ft^3\n",
+ "m=5. #lbm/s\n",
+ "#calculations\n",
+ "A=m*v/V\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Area of inlet pipe =\",A,\"ft^2\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Area of inlet pipe = 0.75 ft^2\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Concepts_of_Thermodynamics/Chapter7.ipynb b/Concepts_of_Thermodynamics/Chapter7.ipynb new file mode 100755 index 00000000..15a3011b --- /dev/null +++ b/Concepts_of_Thermodynamics/Chapter7.ipynb @@ -0,0 +1,204 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 7 - The second law"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 134"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the entropy in each part and efficiency of the cycle\n",
+ "import math\n",
+ "#Initialization of variables\n",
+ "cv=0.175 #Btu/lbm R\n",
+ "R0=1.986\n",
+ "M=29.\n",
+ "T2=1040. #R\n",
+ "T1=520. #R\n",
+ "#calculations\n",
+ "cp=cv+R0/M\n",
+ "sab=cv*math.log(T2/T1)\n",
+ "sac=cp*math.log(T2/T1)\n",
+ "dqab=cv*(T2-T1)\n",
+ "dqca=cp*(T1-T2)\n",
+ "dqrev=T2*(sac-sab)\n",
+ "eta=(dqab+dqrev+dqca)/(dqab+dqrev)*100\n",
+ "#results\n",
+ "print '%s %.4f %s' %(\"Entropy in ab part =\",sab,\" Btu/lbm R\")\n",
+ "print '%s %.4f %s' %(\"\\n Entropy in ac part =\",sac,\"Btu/lbm R\")\n",
+ "print '%s %.2f %s' %(\"\\n Efficiency =\",eta,\" percent\")\n",
+ "print '%s' %(\"The answers are a bit different due to rounding off error in textbook\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Entropy in ab part = 0.1213 Btu/lbm R\n",
+ "\n",
+ " Entropy in ac part = 0.1688 Btu/lbm R\n",
+ "\n",
+ " Efficiency = 9.80 percent\n",
+ "The answers are a bit different due to rounding off error in textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 137"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the change in entropy of the process\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "tc=32. #F\n",
+ "th=80. #F\n",
+ "mw=5 #lbm\n",
+ "mi=1 #lbm\n",
+ "P=14.7 #psia\n",
+ "cp=1\n",
+ "#calculations\n",
+ "t= (-144*mi+tc*mi+th*mw)/(mw+mi)\n",
+ "ds1=144/(tc+460)\n",
+ "ds2=cp*math.log((460+t)/(460+tc))\n",
+ "dsice=ds1+ds2\n",
+ "dswater=mw*cp*math.log((t+460)/(460+th))\n",
+ "ds=dsice+dswater\n",
+ "#results\n",
+ "print '%s %.4f %s' %(\"Change in entropy of the process =\",ds,\"Btu/R\")\n",
+ "print '%s' %(\"The answer is a bit different due to rounding off error in textbook\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Change in entropy of the process = 0.0192 Btu/R\n",
+ "The answer is a bit different due to rounding off error in textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4 - Pg 140"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the thermal efficiency of the process\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "cp=0.25 #Btu/lbm R\n",
+ "T2=520. #R\n",
+ "T1=3460. #R\n",
+ "#calculations\n",
+ "dq=cp*(T2-T1)\n",
+ "ds=cp*math.log(T2/T1)\n",
+ "dG=dq-T2*ds\n",
+ "eff=dG/dq*100\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Thermal efficiency =\",eff,\"percent\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Thermal efficiency = 66.5 percent\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5 - Pg 142"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the change in available energy and also the decrease in energy of isolated system\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "cp=1\n",
+ "T2=60. #F\n",
+ "T1=100. #F\n",
+ "ta=32. #F\n",
+ "#calculations\n",
+ "dq=cp*(T2-T1)\n",
+ "ds=cp*math.log((460+T2)/(460+T1))\n",
+ "dE=dq-ds*(ta+460)\n",
+ "dec=dq-dE\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Change in available energy =\",dE,\" Btu/lbm\")\n",
+ "print '%s %.1f %s' %(\"\\n The available energy of the isolated system decreased in the amount of\",dec, \"Btu/lbm\")\n",
+ "print '%s' %(\"The answer is a bit different due to rounding off error in textbook\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Change in available energy = -3.5 Btu/lbm\n",
+ "\n",
+ " The available energy of the isolated system decreased in the amount of -36.5 Btu/lbm\n",
+ "The answer is a bit different due to rounding off error in textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Concepts_of_Thermodynamics/Chapter9.ipynb b/Concepts_of_Thermodynamics/Chapter9.ipynb new file mode 100755 index 00000000..ff2f789c --- /dev/null +++ b/Concepts_of_Thermodynamics/Chapter9.ipynb @@ -0,0 +1,773 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 9 - Properties of the pure substance"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 194"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the internal energy of the system.\n",
+ "#Initialization of variables\n",
+ "T=32. #F\n",
+ "m=1 #lbm\n",
+ "J=778.16\n",
+ "#calculations\n",
+ "print '%s' %(\"From steam tables,\")\n",
+ "hf=0 \n",
+ "p=0.08854 #psia\n",
+ "vf=0.01602 #ft^3/lbm\n",
+ "u=hf-p*144*vf/J\n",
+ "#results\n",
+ "print '%s %.7f %s' %(\"Internal energy =\",u,\"Btu/lbm\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From steam tables,\n",
+ "Internal energy = -0.0002625 Btu/lbm\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 194"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the change in entropy of the process\n",
+ "#Initialization of variables\n",
+ "P=40. #psia\n",
+ "#calculations\n",
+ "print '%s' %(\"from steam tables,\")\n",
+ "hf=200.8 #Btu/lbm\n",
+ "hg=27 #Btu/lbm\n",
+ "T=495. #R\n",
+ "ds=(hf-hg)/T\n",
+ "#results\n",
+ "print '%s %.3f %s' %(\"Change in entropy =\",ds,\"Btu/lbm R\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "from steam tables,\n",
+ "Change in entropy = 0.351 Btu/lbm R\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 194"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the specific enthalpy of the mixture\n",
+ "#Initialization of variables\n",
+ "x=0.35\n",
+ "T=18. #F\n",
+ "#calculations\n",
+ "print '%s' %(\"From table B-14,\")\n",
+ "hf=12.12 #Btu/lbm\n",
+ "hg=80.27 #Btu.lbm\n",
+ "hfg=-hf+hg\n",
+ "h=hf+x*hfg\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"specific enthalpy =\",h,\"Btu/lbm\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From table B-14,\n",
+ "specific enthalpy = 36.0 Btu/lbm\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4 - Pg 194"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the heat required for the process\n",
+ "#Initialization of variables\n",
+ "x=0.35\n",
+ "T=18. #F\n",
+ "T2=55.5 #F\n",
+ "#calculations\n",
+ "print '%s' %(\"From table B-14,\")\n",
+ "hf=12.12 #Btu/lbm\n",
+ "hg=80.27 #Btu.lbm\n",
+ "hfg=-hf+hg\n",
+ "h=hf+x*hfg\n",
+ "h2=85.68 #Btu/lbm\n",
+ "dh=h2-h\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Heat required =\",dh,\"Btu/lbm\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From table B-14,\n",
+ "Heat required = 49.71 Btu/lbm\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5 - Pg 194"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the enthalpy given out and the quality of the gas\n",
+ "#Initialization of variables\n",
+ "P=1460. #psia\n",
+ "T=135. #F\n",
+ "P2=700. #psia\n",
+ "#calculations\n",
+ "print '%s' %(\"From mollier chart,\")\n",
+ "h=120 #Btu/lbm\n",
+ "x=0.83\n",
+ "#results\n",
+ "print '%s %d %s' %(\"enthalpy =\",h,\" Btu/lbm\")\n",
+ "print '%s %.2f' %(\"\\n Qulaity = \",x)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From mollier chart,\n",
+ "enthalpy = 120 Btu/lbm\n",
+ "\n",
+ " Qulaity = 0.83\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6 - Pg 195"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the heat transferred in the process\n",
+ "#Initialization of variables\n",
+ "m=1 #lbm\n",
+ "P1=144. #psia\n",
+ "P2=150. #psia\n",
+ "T1=360. #F\n",
+ "J=778.16\n",
+ "#calculations\n",
+ "print '%s' %(\"From table 3,\")\n",
+ "v1=3.160 #ft^3/lbm\n",
+ "h1=1196.5 #Btu/lbm\n",
+ "u1=h1-P1*144*v1/J\n",
+ "h2=1211.4 #Btu/lbm\n",
+ "u2=h2-P2*144*v1/J\n",
+ "dq=u2-u1\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Heat transferred =\",dq,\" Btu/lbm\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From table 3,\n",
+ "Heat transferred = 11.4 Btu/lbm\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7 - Pg 195"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the work required, reversible work and the work done in compression \n",
+ "#Initialization of variables\n",
+ "T1=100 #F\n",
+ "P2=1000. #psia\n",
+ "x=0.6\n",
+ "J=778.16\n",
+ "tir=2 \n",
+ "P1=0.9 #psia\n",
+ "#calculations\n",
+ "print '%s' %(\"From table 3,\")\n",
+ "hf=67.97\n",
+ "htc=2.7\n",
+ "hpc=0.32\n",
+ "h1=67.97\n",
+ "dv=0.000051\n",
+ "v=0.01613\n",
+ "h2=hf+htc+hpc\n",
+ "wrev=h1-h2\n",
+ "wact=wrev/x\n",
+ "dt=hpc+tir\n",
+ "t2act=T1+dt\n",
+ "wrev2=-v*144*(P2-P1)/J\n",
+ "dw=(P1+P2)/2. *dv *144/J\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Work required =\",wact,\" Btu/lbm\")\n",
+ "print '%s %.2f %s' %(\"\\n reversible work done =\",wrev2,\" Btu/lbm\")\n",
+ "print '%s %.4f %s' %(\"\\n Work done in compression =\",dw,\"Btu/lbm\")\n",
+ "print '%s' %(\"The answers are a bit different due to rounding off error in textbook\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From table 3,\n",
+ "Work required = -5.03 Btu/lbm\n",
+ "\n",
+ " reversible work done = -2.98 Btu/lbm\n",
+ "\n",
+ " Work done in compression = 0.0047 Btu/lbm\n",
+ "The answers are a bit different due to rounding off error in textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 8 - Pg 196"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the heat transferred in the process\n",
+ "#Initialization of variables\n",
+ "pa=1000. #atm\n",
+ "ta=100. #F\n",
+ "#calculations\n",
+ "hf=67.97 #Btu/lbm\n",
+ "w=3 #Btu/lbm\n",
+ "ha=hf+w\n",
+ "print '%s' %(\"from steam table 2,\")\n",
+ "hc=1191.8 #Btu/lbm\n",
+ "qrev=hc-ha\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Heat transferred =\",qrev,\"Btu/lbm\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "from steam table 2,\n",
+ "Heat transferred = 1120.8 Btu/lbm\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10 - Pg 197"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the work done and final pressure\n",
+ "#Initialization of variables\n",
+ "P1=144 #psia\n",
+ "T1=400 #F\n",
+ "y=0.7\n",
+ "#calculations\n",
+ "print '%s' %(\"From steam tables,\")\n",
+ "h1=1220.4 #Btu/lbm\n",
+ "s1=1.6050 #Btu/lbm R\n",
+ "s2=1.6050 #Btu/lbm R\n",
+ "P2=3 #psia\n",
+ "sf=0.2008 #Btu/lbm R\n",
+ "sfg=1.6855 #Btu/lbm R\n",
+ "x=(s1-sf)/sfg\n",
+ "hf=109.37 #Btu/lbm\n",
+ "hfg=1013.2 #Btu/;bm\n",
+ "h2=hf+x*hfg\n",
+ "work=h1-h2\n",
+ "dw=y*work\n",
+ "h2d=h1-dw\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Work done =\",work,\"Btu/lbm\")\n",
+ "print '%s %.1f %s' %(\"\\n work done in case 2 =\",dw,\"Btu/lbm\")\n",
+ "print '%s %d %s' %(\"\\n Final state pressure =\",P2,\"psia\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From steam tables,\n",
+ "Work done = 266 Btu/lbm\n",
+ "\n",
+ " work done in case 2 = 186.8 Btu/lbm\n",
+ "\n",
+ " Final state pressure = 3 psia\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11 - Pg 200"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the quality of wet steam\n",
+ "#Initialization of variables\n",
+ "pb=14.696 #psia\n",
+ "pa=150 #psia\n",
+ "tb=300 #F\n",
+ "#calculations\n",
+ "print '%s' %(\"From steam tables,\")\n",
+ "hb=1192.8 #Btu/lbm\n",
+ "ha=hb\n",
+ "hf=330.51 #Btu/lbm\n",
+ "hfg=863.6 #Btu/lbm\n",
+ "x=(ha-hf)/hfg*100\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Quality of wet steam =\",x,\"percent\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From steam tables,\n",
+ "Quality of wet steam = 99.8 percent\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12 - Pg 204"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the thermal and furnace efficiencies\n",
+ "#Initialization of variables\n",
+ "p1=600 #psia\n",
+ "p2=0.2563 #psia\n",
+ "t1=486.21 #F\n",
+ "t2=60 #F\n",
+ "fur=0.75\n",
+ "#calculations\n",
+ "print '%s' %(\"from steam tables,\")\n",
+ "h1=1203.2\n",
+ "hf1=471.6\n",
+ "hfg1=731.6\n",
+ "h2=1088\n",
+ "hf2=28.06\n",
+ "hfg2=1059.9\n",
+ "s1=1.4454\n",
+ "sf1=0.6720\n",
+ "sfg1=0.7734\n",
+ "s2=2.0948\n",
+ "sf2=0.0555\n",
+ "sfg2=2.0393\n",
+ "xd=(s1-sf2)/sfg2\n",
+ "hd=hf2+xd*hfg2\n",
+ "xa=0.3023\n",
+ "ha=hf2+xa*hfg2\n",
+ "wbc=0\n",
+ "wda=0\n",
+ "wcd=h1-hd\n",
+ "wab=ha-hf1\n",
+ "W=wab+wcd+wbc+wda\n",
+ "Wrev=hfg1- (t2+459.7)*sfg1\n",
+ "etat=(t1-t2)/(t1+459.7)*100\n",
+ "eta=fur*etat\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Thermal efficiency =\",etat,\"percent\")\n",
+ "print '%s %.1f %s' %(\"\\n Furnace efficiency =\",eta,\"percent\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "from steam tables,\n",
+ "Thermal efficiency = 45 percent\n",
+ "\n",
+ " Furnace efficiency = 33.8 percent\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13 - Pg 204"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the thermal and overall efficiencies\n",
+ "#Initialization of variables\n",
+ "dhab=-123.1\n",
+ "etac=0.5\n",
+ "ha=348.5\n",
+ "etaf=0.75\n",
+ "eta=0.85\n",
+ "hf=471.6\n",
+ "hfg=731.6\n",
+ "hc=1203.2\n",
+ "dhcd=452.7\n",
+ "#calculations\n",
+ "dwabs=dhab/etac\n",
+ "hbd=ha-dwabs\n",
+ "dwcds=dhcd*eta\n",
+ "dqa=hc-hbd\n",
+ "etat=(dwcds+dwabs)/dqa*100\n",
+ "eta=etat*etaf\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Thermal efficiency =\",etat,\"percent\")\n",
+ "print '%s %.1f %s' %(\"\\n Overall efficiency =\",eta,\"percent\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Thermal efficiency = 22.8 percent\n",
+ "\n",
+ " Overall efficiency = 17.1 percent\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14 - Pg 205"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the thermal and overall efficiencies\n",
+ "#Initialization of variables\n",
+ "t=60 #F\n",
+ "J=778.16\n",
+ "p1=600 #psia\n",
+ "p2=0.2563 #psia\n",
+ "etaf=0.85 \n",
+ "#calculations\n",
+ "print '%s' %(\"From steam tables,\")\n",
+ "vf=0.01604 #ft^3/lbm\n",
+ "dw=-vf*(p1-p2)*144/J\n",
+ "ha=28.06 #Btu/lbm\n",
+ "hb=29.84 #Btu/lbm\n",
+ "hd=1203.2 #Btu/lbm\n",
+ "he=750.5 #Btu/lbm\n",
+ "dqa=hd-hb\n",
+ "dqr=ha-he\n",
+ "dw=dqa+dqr\n",
+ "dwturb=hd-he\n",
+ "dwpump=ha-hb\n",
+ "etat=dw/dqa*100\n",
+ "eta=etat*etaf\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Thermal efficiency =\",etat,\"percent\")\n",
+ "print '%s %.1f %s' %(\"\\n Overall efficiency =\",eta,\"percent\")\n",
+ " \n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From steam tables,\n",
+ "Thermal efficiency = 38.4 percent\n",
+ "\n",
+ " Overall efficiency = 32.7 percent\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 15 - Pg 206"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the thermal and overall efficiencies\n",
+ "#Initialization of variables\n",
+ "dhab=-1.78\n",
+ "etac=0.5\n",
+ "ha=28.06\n",
+ "eta=0.85\n",
+ "hf=471.6\n",
+ "hfg=731.6\n",
+ "hd=1203.2\n",
+ "dhcd=452.7\n",
+ "#calculations\n",
+ "dwabs=dhab/etac\n",
+ "hbd=ha-dwabs\n",
+ "dwcds=dhcd*eta\n",
+ "dqa=hd-hbd\n",
+ "etat=(dwcds+dwabs)/dqa*100\n",
+ "eta=etat*eta\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Thermal efficiency =\",etat,\"percent\")\n",
+ "print '%s %.1f %s' %(\"\\n Overall efficiency =\",eta,\"percent\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Thermal efficiency = 32.5 percent\n",
+ "\n",
+ " Overall efficiency = 27.7 percent\n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 16 - Pg 207"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the coefficient of performance, hp required, work of compression and expansion\n",
+ "#Initialization of variables\n",
+ "Ta=500. #R\n",
+ "Tr=540. #R\n",
+ "#calculations\n",
+ "cop=Ta/(Tr-Ta)\n",
+ "hp=4.71/cop\n",
+ "print '%s' %(\"From steam tables,\")\n",
+ "ha=48.02\n",
+ "hb=46.6\n",
+ "hc=824.1\n",
+ "hd=886.9\n",
+ "Wc=-(hd-hc)\n",
+ "We=-(hb-ha)\n",
+ "#results\n",
+ "print '%s %.1f' %(\"Coefficient of performance = \",cop)\n",
+ "print '%s %.3f %s' %(\"\\n horsepower required per ton of refrigeration =\",hp,\"hp/ton refrigeration\")\n",
+ "print '%s %.1f %s' %(\"\\n Work of compression =\",Wc,\"Btu/lbm\")\n",
+ "print '%s %.2f %s' %(\"\\n Work of expansion =\",We,\"Btu/lbm\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From steam tables,\n",
+ "Coefficient of performance = 12.5\n",
+ "\n",
+ " horsepower required per ton of refrigeration = 0.377 hp/ton refrigeration\n",
+ "\n",
+ " Work of compression = -62.8 Btu/lbm\n",
+ "\n",
+ " Work of expansion = 1.42 Btu/lbm\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17 - Pg 209"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the coefficient of performance\n",
+ "#Initialization of variables\n",
+ "x=0.8\n",
+ "he=26.28 #Btu/lbm\n",
+ "hb=26.28 #Btu/lbm\n",
+ "pe=98.76 #psia\n",
+ "pc=51.68 #psia\n",
+ "hc=82.71 #Btu/lbm\n",
+ "hf=86.80+0.95\n",
+ "#calculations\n",
+ "dwisen=-(hf-hc)\n",
+ "dwact=dwisen/x\n",
+ "hd=hc-dwact\n",
+ "cop=(hc-hb)/(hd-hc)\n",
+ "#results\n",
+ "print '%s %.2f' %(\"Coefficient of performance = \",cop)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Coefficient of performance = 8.96\n"
+ ]
+ }
+ ],
+ "prompt_number": 16
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Concepts_of_Thermodynamics/README.txt b/Concepts_of_Thermodynamics/README.txt new file mode 100755 index 00000000..0b5ad1fc --- /dev/null +++ b/Concepts_of_Thermodynamics/README.txt @@ -0,0 +1,10 @@ +Contributed By: Tushar Ranjan +Course: btech +College/Institute/Organization: IIT Bombay +Department/Designation: Chemical Engineering +Book Title: Concepts of Thermodynamics +Author: Obert Edward F +Publisher: New York : McGraw-Hill +Year of publication: 1960 +Isbn: 0829900373 +Edition: 1
\ No newline at end of file diff --git a/Concepts_of_Thermodynamics/screenshots/chap10.png b/Concepts_of_Thermodynamics/screenshots/chap10.png Binary files differnew file mode 100755 index 00000000..7e11d0b9 --- /dev/null +++ b/Concepts_of_Thermodynamics/screenshots/chap10.png diff --git a/Concepts_of_Thermodynamics/screenshots/chap10_1.png b/Concepts_of_Thermodynamics/screenshots/chap10_1.png Binary files differnew file mode 100755 index 00000000..7e11d0b9 --- /dev/null +++ b/Concepts_of_Thermodynamics/screenshots/chap10_1.png diff --git a/Concepts_of_Thermodynamics/screenshots/chap12.png b/Concepts_of_Thermodynamics/screenshots/chap12.png Binary files differnew file mode 100755 index 00000000..9abefd86 --- /dev/null +++ b/Concepts_of_Thermodynamics/screenshots/chap12.png diff --git a/Concepts_of_Thermodynamics/screenshots/chap12_1.png b/Concepts_of_Thermodynamics/screenshots/chap12_1.png Binary files differnew file mode 100755 index 00000000..9abefd86 --- /dev/null +++ b/Concepts_of_Thermodynamics/screenshots/chap12_1.png diff --git a/Concepts_of_Thermodynamics/screenshots/chap9.png b/Concepts_of_Thermodynamics/screenshots/chap9.png Binary files differnew file mode 100755 index 00000000..0686a129 --- /dev/null +++ b/Concepts_of_Thermodynamics/screenshots/chap9.png diff --git a/Concepts_of_Thermodynamics/screenshots/chap9_1.png b/Concepts_of_Thermodynamics/screenshots/chap9_1.png Binary files differnew file mode 100755 index 00000000..0686a129 --- /dev/null +++ b/Concepts_of_Thermodynamics/screenshots/chap9_1.png diff --git a/Elements_of_Physical_Chemistry/Chapter1.ipynb b/Elements_of_Physical_Chemistry/Chapter1.ipynb new file mode 100755 index 00000000..6a51c37c --- /dev/null +++ b/Elements_of_Physical_Chemistry/Chapter1.ipynb @@ -0,0 +1,216 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ " Chapter 1 - The properties of gases"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E1 - Pg 17"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the pressure in the glass flask\n",
+ "#Initialzation of variables\n",
+ "m=1.25 #g\n",
+ "MN2=28.02 #g/mol\n",
+ "T=20+273.15 #K\n",
+ "V=0.25#L\n",
+ "#Calculations\n",
+ "P=m*8.31451*T/(MN2*V)\n",
+ "#Results\n",
+ "print '%s %.1f %s' %('Pressure in the gas flask = ',P,'kPa')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressure in the gas flask = 434.9 kPa\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I2 - Pg 19"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the partial pressures of Oxygen, Nitrogen and Argon\n",
+ "#Initialzation of variables\n",
+ "xN2=0.780\n",
+ "xO2=0.210\n",
+ "xAr=0.009\n",
+ "P=100 #kPa\n",
+ "#Calculations\n",
+ "PN2=xN2*P\n",
+ "PO2=xO2*P\n",
+ "PAr=xAr*P\n",
+ "#Results\n",
+ "print '%s %.1f' %('Partial pressure of Nitrogen(kPa) = ',PN2)\n",
+ "print '%s %.1f' %('\\n Partial pressure of Oxygen(kPa) = ',PO2)\n",
+ "print '%s %.1f' %('\\n Partial pressure of Argon(kPa) = ',PAr)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Partial pressure of Nitrogen(kPa) = 78.0\n",
+ "\n",
+ " Partial pressure of Oxygen(kPa) = 21.0\n",
+ "\n",
+ " Partial pressure of Argon(kPa) = 0.9\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I3 - Pg 22"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the percentage loss of speed of air molecules\n",
+ "#Initialzation of variables\n",
+ "import math\n",
+ "T1=298. #K\n",
+ "T2=273. #K\n",
+ "#Calculations\n",
+ "factor=math.sqrt(T2/T1)\n",
+ "percentage=(1-factor)*100\n",
+ "#Results\n",
+ "print '%s %.3f' %('Factor by which speed is reduced = ',factor)\n",
+ "print '%s %d' %('Percentage loss of speed of air molecules = ',percentage)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Factor by which speed is reduced = 0.957\n",
+ "Percentage loss of speed of air molecules = 4\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I4 - Pg 24"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the ratio of rates of effusion\n",
+ "#Initialzation of variables\n",
+ "import math\n",
+ "MH2=2.016 #g/mol\n",
+ "MCO2=44.01 #g/mol\n",
+ "#calculations\n",
+ "ratio=math.sqrt(MCO2/MH2)\n",
+ "#results\n",
+ "print '%s %.3f' %('ratio of rates of effusion = ',ratio)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "ratio of rates of effusion = 4.672\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I5 - Pg 25"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the mean free path and collision frequency\n",
+ "#Initialzation of variables\n",
+ "import math\n",
+ "T=25+273. #K\n",
+ "sigma=0.4*math.pow(10,(-18)) #m^2\n",
+ "P=math.pow(10,5) #Pa\n",
+ "c=481.8 #m/sec\n",
+ "#Calculations\n",
+ "Lambda=8.31451*T/(math.pow(2,0.5) *6.022*math.pow(10,23) *sigma*P)\n",
+ "frequency=math.pow(2,0.5) *6.022*math.pow(10,23) *sigma*P*c/(8.31451*T)\n",
+ "#Results\n",
+ "print '%s %.1e %s' %('Mean free path =',Lambda,'m')\n",
+ "print '%s %.1e %s' %('\\n Collision frequency =',frequency,'m')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mean free path = 7.3e-08 m\n",
+ "\n",
+ " Collision frequency = 6.6e+09 m\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Elements_of_Physical_Chemistry/Chapter10.ipynb b/Elements_of_Physical_Chemistry/Chapter10.ipynb new file mode 100755 index 00000000..ed29d00c --- /dev/null +++ b/Elements_of_Physical_Chemistry/Chapter10.ipynb @@ -0,0 +1,322 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ " Chapter 10 - The rates of reactions"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E1 - Pg 222"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the overall rate constant and hence the overall rate law\n",
+ "#Initialization of variables\n",
+ "%pylab inline\n",
+ "import math\n",
+ "import numpy as np\n",
+ "from numpy import linalg\n",
+ "import matplotlib\n",
+ "from matplotlib import pyplot\n",
+ "def fun(x,n):\n",
+ "\tfor i in range(0,len(x)):\n",
+ "\t\tx[i]=x[i]*math.pow(10,-n)\n",
+ "\treturn\n",
+ "\n",
+ "I=([1., 2., 4., 6.])\n",
+ "r1=([1.070, 3.48, 13.9, 31.3])\n",
+ "r2=([4.35, 17.4, 69.6, 157])\n",
+ "r3=([10.69, 34.7, 138, 313])\n",
+ "Ar=([1., 5., 10.])\n",
+ "fun(r1,3)\n",
+ "fun(I,5)\n",
+ "fun(r2,3)\n",
+ "fun(r3,3)\n",
+ "fun(Ar,3)\n",
+ "#calculations\n",
+ "def fun1(x):\n",
+ "\tfor i in range(0,len(x)):\n",
+ "\t\tx[i]=math.log10(x[i])\n",
+ "\treturn x\n",
+ "\n",
+ "logI=fun1(I)\n",
+ "logr1=fun1(r1)\n",
+ "logr2=fun1(r2)\n",
+ "logr3=fun1(r3)\n",
+ "#The calculations are approximate.hence the value differs from textbook a bit.\n",
+ "x=logI\n",
+ "y=logr1\n",
+ "A = np.vstack([x, np.ones(len(x))]).T\n",
+ "m1, b1 = np.linalg.lstsq(A, y)[0]\n",
+ "\n",
+ "y=logr2\n",
+ "A = np.vstack([x, np.ones(len(x))]).T\n",
+ "m2, b2 = np.linalg.lstsq(A, y)[0]\n",
+ "\n",
+ "y=logr3\n",
+ "A = np.vstack([x, np.ones(len(x))]).T\n",
+ "m3, b3 = np.linalg.lstsq(A, y)[0]\n",
+ "\n",
+ "logAr=fun1(Ar)\n",
+ "kdash=([b1, b2, b3])\n",
+ "pyplot.plot(logAr,kdash)\n",
+ "pyplot.xlabel('log(Ar)')\n",
+ "pyplot.ylabel('log(kdash)')\n",
+ "x=logAr\n",
+ "y=kdash\n",
+ "\n",
+ "A = np.vstack([x, np.ones(len(x))]).T\n",
+ "m4, b4 = np.linalg.lstsq(A, y)[0]\n",
+ "\n",
+ "logk=b4\n",
+ "k=math.pow(10,logk)\n",
+ "#results\n",
+ "print '%s %.1e %s' %(\"Overall rate law is r =\",k,\" [I]^2 [Ar]\")\n",
+ "pyplot.show()\n",
+ "print '%s' %('The answers in the textbook are rounded and hence a bit different from the code.')"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Populating the interactive namespace from numpy and matplotlib\n",
+ "Overall rate law is r = 8.1e+09 [I]^2 [Ar]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nc+SMsRQAAAAASUVORK5CYII=\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x6097fd0>"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The answers in the textbook are rounded and hence a bit different from the code.\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E2 - Pg 224"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calcualte the rate constant for the given first order reaction\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "import numpy as np\n",
+ "import matplotlib\n",
+ "from matplotlib import pyplot\n",
+ "t=([0, 1000., 2000., 3000., 4000.])\n",
+ "p=[10.20, 5.72, 3.99, 2.78, 1.94]\n",
+ "def fun2(x):\n",
+ "\tfor i in range(0,len(x)):\n",
+ "\t\tx[i]=math.log(x[i])\n",
+ "\treturn x\n",
+ "lnp=fun2(p)\n",
+ "x=t\n",
+ "y=lnp\n",
+ "#hence the value differs from textbook a bit.\n",
+ "A = np.vstack([x, np.ones(len(x))]).T\n",
+ "m1, b1 = np.linalg.lstsq(A, y)[0]\n",
+ "k= -m1\n",
+ "pyplot.plot(x,y)\n",
+ "pyplot.xlabel('time t/sec ')\n",
+ "pyplot.ylabel('ln(P/Torr)')\n",
+ "#Since first order reaction\n",
+ "#results\n",
+ "print '%s %.2e %s' %(\"rate constant =\",k,\" s^-1\")\n",
+ "pyplot.show()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "rate constant = 4.04e-04 s^-1\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x5d4f970>"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E3 - Pg 230"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the Activation energy and Arrhenius factor\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "import numpy as np\n",
+ "from numpy import linalg\n",
+ "T=[700, 730, 760, 790, 810, 840, 910, 1000]\n",
+ "k=[0.011, 0.035, 0.105, 0.343, 0.789, 2.17, 20, 145]\n",
+ "#calculations\n",
+ "def fun1(x):\n",
+ "\tfor i in range(0,len(x)):\n",
+ "\t\tx[i]=1000./(x[i])\n",
+ "\treturn x\n",
+ "x= fun1(T)\n",
+ "def fun2(x):\n",
+ "\tfor i in range(0,len(x)):\n",
+ "\t\tx[i]=math.log(x[i])\n",
+ "\treturn x\n",
+ "y=fun2(k)\n",
+ "A = np.vstack([x, np.ones(len(x))]).T\n",
+ "m1, b1 = np.linalg.lstsq(A, y)[0]\n",
+ "print '%s' %('from graph')\n",
+ "Ea=-m1*8.3145/1000. *1000.\n",
+ "A=math.pow(math.e,(b1))\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Activation energy =\",Ea,\" kJ/mol\")\n",
+ "print '%s %.2e %s' %(\"\\n Arrhenius factor =\",A,\"L/ mol s\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "from graph\n",
+ "Activation energy = 188 kJ/mol\n",
+ "\n",
+ " Arrhenius factor = 1.08e+12 L/ mol s\n"
+ ]
+ }
+ ],
+ "prompt_number": 19
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I1 - Pg 228"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the net time required\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "t=28.4 #min\n",
+ "#calculations\n",
+ "n=math.log10(8.) / math.log10(2.)\n",
+ "time=n*t\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Time required =\",time,\"min\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Time required = 85.2 min\n"
+ ]
+ }
+ ],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I2 - Pg 230"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the value of kdash\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "E=50*1000. #J/mol\n",
+ "T1=25+273. #K\n",
+ "T2=37+273. #K\n",
+ "#calculations\n",
+ "ln=E/8.3145 *(1./T1-1./T2)\n",
+ "factor=math.pow(math.e,(ln))\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"kdash =\",factor,\"k\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "kdash = 2.18 k\n"
+ ]
+ }
+ ],
+ "prompt_number": 21
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Elements_of_Physical_Chemistry/Chapter11.ipynb b/Elements_of_Physical_Chemistry/Chapter11.ipynb new file mode 100755 index 00000000..5b2332ec --- /dev/null +++ b/Elements_of_Physical_Chemistry/Chapter11.ipynb @@ -0,0 +1,236 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 11 - Accounting for the rate laws"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E1 - Pg 255"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the Max. velocity and Michaelis constant\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "import numpy as np\n",
+ "from numpy import linalg\n",
+ "S=[10, 20, 40, 80, 120, 180, 300]\n",
+ "v=[0.32, 0.58, 0.9, 1.22, 1.42, 1.58, 1.74]\n",
+ "#calculations\n",
+ "n=len(S)\n",
+ "def fun1(x):\n",
+ "\tfor i in range(0,len(x)):\n",
+ "\t\tx[i]=1000./(x[i])\n",
+ "\treturn x\n",
+ "\n",
+ "\n",
+ "def fun2(x):\n",
+ "\tfor i in range(0,len(x)):\n",
+ "\t\tx[i]=1./(x[i])\n",
+ "\treturn x\n",
+ "bys=fun1(S)\n",
+ "byv=fun2(v)\n",
+ "x=bys\n",
+ "y=byv\n",
+ "A = np.vstack([x, np.ones(len(x))]).T\n",
+ "m1, b1 = np.linalg.lstsq(A, y)[0]\n",
+ "print '%s' %(\"From graph,\")\n",
+ "vmax=1/b1\n",
+ "Km=m1*1000./b1\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Max. velocity =\",vmax,\" mumol/L s\")\n",
+ "print '%s %.1f %s' %(\"\\n Michaelis constant =\",Km,\" mumol/L\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From graph,\n",
+ "Max. velocity = 2.10 mumol/L s\n",
+ "\n",
+ " Michaelis constant = 55.0 mumol/L\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E2 - Pg 257"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the Equilibrium constant\n",
+ "#Initialization of variables\n",
+ "c=1.234\n",
+ "m=2.044\n",
+ "#calculations\n",
+ "Ki=c/m\n",
+ "#results\n",
+ "print '%s %.2f' %(\"KI = \",Ki)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "KI = 0.60\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E3 - Pg 265"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the no. of diheptane molecules destroyed \n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "P=50. #J/s\n",
+ "l=313.*math.pow(10,-9) #m\n",
+ "h=6.62608*math.pow(10,-34) #Js\n",
+ "N=6.023*math.pow(10,23)\n",
+ "c=2.99792*math.pow(10,8) #m/s\n",
+ "yiel=0.21\n",
+ "#calculations\n",
+ "rate=P*l/(h*c)\n",
+ "Frate=yiel*rate\n",
+ "molrate=Frate/N\n",
+ "#results\n",
+ "print '%s %.1e %s' %(\"No.of diheptane molecules destroyed =\",Frate,\" s^-1\")\n",
+ "print '%s %.2e %s' %(\"\\n Moles of diheptane molecules destroyed =\",molrate,\"mol s^-1\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "No.of diheptane molecules destroyed = 1.7e+19 s^-1\n",
+ "\n",
+ " Moles of diheptane molecules destroyed = 2.75e-05 mol s^-1\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I1 - Pg 243"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the Equilibrium constant for dimerization\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "kf=8.18*math.pow(10,8) #L/mol s\n",
+ "kb=2*math.pow(10,6) #s^-1\n",
+ "#calculations\n",
+ "K=kf/kb\n",
+ "#results\n",
+ "print '%s %.1e' %(\"Equilibrium constant for dimerization = \",K)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Equilibrium constant for dimerization = 4.1e+02\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I2 - Pg 248"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate if the reaction step is far from equilibrium and calculate the heat generated\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "F16bP=1.9*math.pow(10,-5) #mmol/L\n",
+ "ADP=1.3/1000. #mmol/L\n",
+ "ATP=11.4/1000. #mmol/L\n",
+ "F6P=8.9*math.pow(10,-5) #mmol/L\n",
+ "k=1.2*1000.\n",
+ "#calculations\n",
+ "Q=F16bP*ADP/(F6P*ATP)\n",
+ "if(Q<k):\n",
+ " print '%s %.3f' %(\"The reaction step is far from equilibrium and Q= \",Q)\n",
+ "else:\n",
+ " print '%s %.3f' %(\"The reaction step is at equilibrium and Q= \",Q)\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The reaction step is far from equilibrium and Q= 0.024\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Elements_of_Physical_Chemistry/Chapter12.ipynb b/Elements_of_Physical_Chemistry/Chapter12.ipynb new file mode 100755 index 00000000..7ec0d96f --- /dev/null +++ b/Elements_of_Physical_Chemistry/Chapter12.ipynb @@ -0,0 +1,239 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 12 - Quantum theory"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E1 - Pg 276"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the number of photons required\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "P=100. #W\n",
+ "t=10. #s\n",
+ "l=560. #nm\n",
+ "#calculations\n",
+ "TE=P*t\n",
+ "E1=6.626*math.pow(10,-34) *2.998*math.pow(10,8) /(l*math.pow(10,-9))\n",
+ "N=TE/E1\n",
+ "#results\n",
+ "print '%s %.2e' %(\"No. of photons required = \",N)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "No. of photons required = 2.82e+21\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E2 - Pg 278"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the wavelength of electrons\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "V=1000. #V\n",
+ "#calculations\n",
+ "l=6.626*math.pow(10,-34) /math.sqrt(2*9.11*math.pow(10,-31) *1.602*math.pow(10,-19) *V)\n",
+ "#results\n",
+ "print '%s %.2e %s' %(\"Wavelength of electrons =\",l,\" m\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Wavelength of electrons = 3.88e-11 m\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E3 - Pg 282"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the no. of times the electron would be more propable at r2 than at r1\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "r1=0 #multiply by a0\n",
+ "r2=1 #multiply by a0\n",
+ "#calculations\n",
+ "ratio=math.pow(math.e,r1) /math.pow(math.e,(-2.*r2))\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"It is more propable that electron would be found\",ratio,\"times more at r1\")\n",
+ "print '%s' %(\"The answer is a bit different due to rounding off error in textbook\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "It is more propable that electron would be found 7.39 times more at r1\n",
+ "The answer is a bit different due to rounding off error in textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E4 - Pg 284"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the uncertainity in position\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "m=1 #g\n",
+ "v=math.pow(10,-6) #m/s\n",
+ "#calculations\n",
+ "dx=1.054*math.pow(10,-34) /(2*m*math.pow(10,-3) *v)\n",
+ "#results\n",
+ "print '%s %.1e %s' %(\"Uncertainity in position =\",dx,\" m\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Uncertainity in position = 5.3e-26 m\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I1 - Pg 271"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the surface temperature\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "lmax=4.9*math.pow(10,-7) #m\n",
+ "#calculations\n",
+ "T=2.9*math.pow(10,-3) /lmax\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Surface temperature must be close to\",T,\"K\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Surface temperature must be close to 5918 K\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I2 - Pg 290"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the separation between adjacent levels frequency and energy\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "k=516. #N/m\n",
+ "m=1.67*math.pow(10,-27) #kg\n",
+ "#calculations\n",
+ "v=math.sqrt(k/m) /(2*math.pi)\n",
+ "E=6.624*math.pow(10,-34) *v\n",
+ "#results\n",
+ "print '%s %.2e %s' %(\"Separation between adjacent levels frequency,\",v,\"Hz\")\n",
+ "print '%s %.2e %s' %(\"\\n Energy =\",E,\"J\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Separation between adjacent levels frequency, 8.85e+13 Hz\n",
+ "\n",
+ " Energy = 5.86e-20 J\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Elements_of_Physical_Chemistry/Chapter13.ipynb b/Elements_of_Physical_Chemistry/Chapter13.ipynb new file mode 100755 index 00000000..4a426e50 --- /dev/null +++ b/Elements_of_Physical_Chemistry/Chapter13.ipynb @@ -0,0 +1,97 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 13 - Atomic structure"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I2 - Pg 302"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the probability of finding the electron and the chance that the electron would be found\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "dv=1 #pm^3\n",
+ "a0=52.9 #pm\n",
+ "#calculations\n",
+ "Probability=dv/(math.pi*a0*a0*a0)\n",
+ "#results\n",
+ "print '%s %.1e' %(\"probability of finding electron = \",Probability)\n",
+ "print '%s %d %s' %(\"\\n Chance that electron would be found is one in\",1./Probability,\"times\")\n",
+ "#The answer is a bit different due to rounding off error in textbook"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "probability of finding electron = 2.2e-06\n",
+ "\n",
+ " Chance that electron would be found is one in 465068 times\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I3 - Pg 304"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the probability of finding the electron\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "dr=1 #pm\n",
+ "r=52.9 #pm\n",
+ "#calculations\n",
+ "Probability=4*math.pow(math.e,(-2)) *dr/r\n",
+ "#results\n",
+ "print '%s %.1f' %(\"About 1 inspection in \",1./Probability)\n",
+ "#The answer is a bit different due to rounding off error in textbook"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "About 1 inspection in 97.7\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Elements_of_Physical_Chemistry/Chapter15.ipynb b/Elements_of_Physical_Chemistry/Chapter15.ipynb new file mode 100755 index 00000000..ada2a951 --- /dev/null +++ b/Elements_of_Physical_Chemistry/Chapter15.ipynb @@ -0,0 +1,140 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 15 - Metallic and Ionic Solids"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E1 - Pg 361"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the lattice energy\n",
+ "#Initialization of variables\n",
+ "Hs=89 #kJ/mol\n",
+ "HI=418 #kJ/mol\n",
+ "HD=244 #kJ/mol\n",
+ "HE=-349 #kJ/mol\n",
+ "Hf=-437 #kJ/mol\n",
+ "#calculations\n",
+ "HL=Hs+HD/2. +HI+HE-Hf\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Lattice energy =\",HL,\"kJ/mol\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Lattice energy = 717 kJ/mol\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E2 - Pg 369"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the separation between the molecules in both the cases\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "a=0.82 #nm\n",
+ "b=0.94 #nm\n",
+ "c=0.75 #nm\n",
+ "h=1.\n",
+ "k=2.\n",
+ "l=3.\n",
+ "#calculations\n",
+ "invd=math.sqrt(h*h/(a*a) + k*k/(b*b) + l*l/(c*c))\n",
+ "d=1./invd\n",
+ "invd2=math.sqrt(h*h*4/(a*a) + k*k*4/(b*b) + l*l*4/(c*c))\n",
+ "d2=1./invd2\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"In case 1, separation =\",d,\" nm\")\n",
+ "print '%s %.2f %s' %(\"\\n In case 2, separation =\",d2,\" nm\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "In case 1, separation = 0.21 nm\n",
+ "\n",
+ " In case 2, separation = 0.11 nm\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E3 - Pg 371"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the length of the side of the unit cell\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "l=154. #pm\n",
+ "theta=11.2 #degrees\n",
+ "#calculations\n",
+ "d=l/(2*math.sin(theta*math.pi/180.))\n",
+ "a=d*math.sqrt(3)\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Length of the side of the unit cell =\",a,\"pm\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Length of the side of the unit cell = 686.6 pm\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Elements_of_Physical_Chemistry/Chapter16.ipynb b/Elements_of_Physical_Chemistry/Chapter16.ipynb new file mode 100755 index 00000000..c958cdd7 --- /dev/null +++ b/Elements_of_Physical_Chemistry/Chapter16.ipynb @@ -0,0 +1,170 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 16 - Molecular substances"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E1 - Pg 385"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the net dipole moment\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "e=1.609*math.pow(10,-19) #C\n",
+ "#calculations\n",
+ "mux=(-0.36*e*(-0.8) + 0.45*e*(2.1) )*math.pow(10,-12) /(3.33564*math.pow(10,-30))\n",
+ "muy=-0.96\n",
+ "muz=0\n",
+ "mux=-1.1\n",
+ "mu=math.sqrt(mux*mux+muy*muy+muz*muz)\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Net dipole moment =\",mu,\"D\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Net dipole moment = 1.5 D\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E2 - Pg 390"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the potential energy of the system\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "Na=6.023*math.pow(10,23) # /mol\n",
+ "e=1.60228*math.pow(10,-19) #C\n",
+ "e0=8.85419*math.pow(10,-12) #C^2/J m\n",
+ "#calculations\n",
+ "factor=Na*e*e /(4*math.pi*e0)\n",
+ "#Multiply by Z^2/R to get the value of potential energy. Plot the graph\n",
+ "#results\n",
+ "print '%s %.3e %s' %(\"Potential energy =\",factor,\" Z*Z/R kJ/mol\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Potential energy = 1.390e-04 Z*Z/R kJ/mol\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I1 - Pg 383"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calcualte the predicted dipole moment\n",
+ "#Initialization of variables\n",
+ "EH=2.1\n",
+ "EBr=2.8\n",
+ "#calculations\n",
+ "diff=-EH+EBr\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Prediced dipole moment =\",diff,\"D\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Prediced dipole moment = 0.7 D\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I2 - Pg 387"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the potential energy\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "mu1=1.4 #D\n",
+ "mu2=1.4 #D\n",
+ "angle=180. #degrees\n",
+ "d=3 #nm\n",
+ "D=4.7*math.pow(10,-30) #C m\n",
+ "#calculations\n",
+ "Vmol=D*D*(1-3*math.cos(angle*math.pi/180.)*math.cos(angle*math.pi/180.))/(4*math.pi*8.854*math.pow(10,-12) *math.pow((d*math.pow(10,-9)),3))\n",
+ "V=Vmol*(6.023*math.pow(10,23))\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Potential energy =\",V,\" J/mol\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Potential energy = -8.9 J/mol\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Elements_of_Physical_Chemistry/Chapter17.ipynb b/Elements_of_Physical_Chemistry/Chapter17.ipynb new file mode 100755 index 00000000..ab0a46f5 --- /dev/null +++ b/Elements_of_Physical_Chemistry/Chapter17.ipynb @@ -0,0 +1,99 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 17 - Molecular rotations and vibrations"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E1 - Pg 423"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the frequency of transistion\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "mH=1.673*math.pow(10,-27) #kg\n",
+ "mCl=5.807*math.pow(10,-26) #kg\n",
+ "R=127.4 *math.pow(10,-12) #m\n",
+ "#calculations\n",
+ "mu=mH*mCl/(mH+mCl)\n",
+ "I=mu*R*R\n",
+ "B=1.05457*math.pow(10,-34) /(4*math.pi*I)\n",
+ "f=2*B/math.pow(10,9)\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Frequency of transistion =\",f,\"GHz\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Frequency of transistion = 635.9 GHz\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I1 - Pg 428"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the wavenumber and wavelength\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "v=89.6*math.pow(10,12) #Hz\n",
+ "#calculations\n",
+ "l=3*math.pow(10,8) /v\n",
+ "wn=math.pow(10,-2) /l\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Wavenumber =\",wn,\" cm^-1\")\n",
+ "print '%s %.2f %s' % (\"\\n Wavelength =\",l*math.pow(10,6),\"mu m\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Wavenumber = 2986 cm^-1\n",
+ "\n",
+ " Wavelength = 3.35 mu m\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Elements_of_Physical_Chemistry/Chapter18.ipynb b/Elements_of_Physical_Chemistry/Chapter18.ipynb new file mode 100755 index 00000000..36e81ed5 --- /dev/null +++ b/Elements_of_Physical_Chemistry/Chapter18.ipynb @@ -0,0 +1,111 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 18 - Electronic Transitions"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E1 - Pg 441"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the transmittance\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "wl=256*math.pow(10,-9) #m\n",
+ "t=1 #mm\n",
+ "C=0.050 #mol/L\n",
+ "T=0.16\n",
+ "t2=2 #mm\n",
+ "#calculations\n",
+ "E=-math.log10(T) /(C*t)\n",
+ "A1=-math.log10(T)\n",
+ "A2=E*C*t2\n",
+ "Tr=math.pow(10,(-A2))\n",
+ "#results\n",
+ "print '%s %.3f' %(\"Transmittance = \",Tr)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Transmittance = 0.026\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E2 - Pg 450"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the Quenching rate constant and half life\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "import numpy as np\n",
+ "from numpy import linalg\n",
+ "Q=[1., 2., 3., 4., 5]\n",
+ "t1=[5.2, 9.4, 13.7, 18., 22.2]\n",
+ "t2=[1.1, 2., 2.9, 4., 4.5]\n",
+ "#calculations\n",
+ "A = np.vstack([Q, np.ones(len(Q))]).T\n",
+ "kqbykf=np.linalg.lstsq(A,t1)[0]\n",
+ "slope1=kqbykf[0] *1000.\n",
+ "kq=np.linalg.lstsq(A,t2)[0]\n",
+ "slope2=kq[0] *math.pow(10,10)\n",
+ "kq=slope2\n",
+ "kf=kq/slope1\n",
+ "thalf=math.log (2) /kf\n",
+ "#results\n",
+ "print '%s %.1e %s' %(\"Quenching rate constant =\",kq,\"L ml^-1 s^-1\")\n",
+ "print '%s %.1e %s' %(\"\\n Half life=\",thalf,\"s\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Quenching rate constant = 8.8e+09 L ml^-1 s^-1\n",
+ "\n",
+ " Half life= 3.4e-07 s\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Elements_of_Physical_Chemistry/Chapter19.ipynb b/Elements_of_Physical_Chemistry/Chapter19.ipynb new file mode 100755 index 00000000..89f694e9 --- /dev/null +++ b/Elements_of_Physical_Chemistry/Chapter19.ipynb @@ -0,0 +1,64 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 19 - Magnetic resonance"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I2 - Pg 467"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the spin-spin coupling constants\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "A=5.1 #Hz\n",
+ "B=-1.4 #Hz\n",
+ "C=3.2 #Hz\n",
+ "an1=120*math.pi/180. #radians\n",
+ "an2=180*math.pi/180. #radians\n",
+ "#calculations\n",
+ "j1=A+B*math.cos(an1) + C*math.cos(2*an1)\n",
+ "j2=A+B*math.cos(an2) + C*math.cos(2*an2)\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Spin-spin coupling constant =\",j1,\"Hz\")\n",
+ "print '%s %.1f %s' %(\"\\n Spin-spin coupling constant =\",j2,\"Hz\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Spin-spin coupling constant = 4 Hz\n",
+ "\n",
+ " Spin-spin coupling constant = 9.7 Hz\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Elements_of_Physical_Chemistry/Chapter2.ipynb b/Elements_of_Physical_Chemistry/Chapter2.ipynb new file mode 100755 index 00000000..1730ffc1 --- /dev/null +++ b/Elements_of_Physical_Chemistry/Chapter2.ipynb @@ -0,0 +1,172 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 2 - Thermodynamics : The first law"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I1 - Pg 46"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the change in temperature\n",
+ "#Initialization of variables\n",
+ "Cpm=75 #J/k mol\n",
+ "n=5.55 #mol\n",
+ "q=1 #kJ\n",
+ "#Calculations\n",
+ "deltaT=q*1000/(n*Cpm)\n",
+ "#results\n",
+ "print '%s %.1f %s' %('Change in temperature =',deltaT,'K')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Change in temperature = 2.4 K\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I4 - Pg 52"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the change in enthalpy of the sample\n",
+ "#Initialization of variables\n",
+ "n=5.55 #mol\n",
+ "T1=20 #C\n",
+ "T2=80 #K\n",
+ "Cpm=75.29 #J/K mol\n",
+ "#Calculations\n",
+ "H=n*Cpm*(T2-T1)/1000.\n",
+ "#results\n",
+ "print '%s %d %s' %('Enthalpy of the sample changes by',H,'kJ')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enthalpy of the sample changes by 25 kJ\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E1 - Pg 45"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the heat supplied, heat capacity and heat output of the calorimeter\n",
+ "#Initialization of variables\n",
+ "A=1.23 #A\n",
+ "V=12 #V\n",
+ "t=123 #s\n",
+ "Temp=4.47 #C\n",
+ "rise=3.22 #C\n",
+ "#Calculations\n",
+ "q=A*V*t\n",
+ "C=q/Temp\n",
+ "Output= C*rise/1000.\n",
+ "#Results\n",
+ "print '%s %.1f %s' %('heat supplied during calibration =',q,'J')\n",
+ "print '%s %.1f %s' %('\\n Heat capacity of the calorimeter =',C,'J/C')\n",
+ "print '%s %.2f %s' %('\\n Heat output =',Output,' kJ')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "heat supplied during calibration = 1815.5 J\n",
+ "\n",
+ " Heat capacity of the calorimeter = 406.1 J/C\n",
+ "\n",
+ " Heat output = 1.31 kJ\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E2 - Pg 48"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the amount by which the person's internal energy falls\n",
+ "#Initialization of variables\n",
+ "work=-622 #kJ\n",
+ "heat=-82 #kJ\n",
+ "#Calculations\n",
+ "U=work+heat\n",
+ "#results\n",
+ "print '%s %d %s' %('The persons internal energy falls by',-U,'kJ')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The persons internal energy falls by 704 kJ\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Elements_of_Physical_Chemistry/Chapter20.ipynb b/Elements_of_Physical_Chemistry/Chapter20.ipynb new file mode 100755 index 00000000..cb95fd4e --- /dev/null +++ b/Elements_of_Physical_Chemistry/Chapter20.ipynb @@ -0,0 +1,250 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 20 - Statistical thermodynamics"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I1 - Pg 477"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the relative populations of boat and chair conformations\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "E=22*1000. #kJ/mol\n",
+ "T=293. #K \n",
+ "#calculations\n",
+ "ratio=math.pow(math.e,(-E/(8.31451*T)))\n",
+ "#results\n",
+ "print '%s %.1e' %(\"Relative populations of boat and chair conformations is \",ratio)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Relative populations of boat and chair conformations is 1.2e-04\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I2 - Pg 478"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the required ratio\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "g2=5.\n",
+ "g1=3.\n",
+ "E2=6.\n",
+ "E1=2.\n",
+ "k=1.38*math.pow(10,-23) #J/K\n",
+ "h=6.626*math.pow(10,-34) #J s\n",
+ "B=3.18*math.pow(10,11) #Hz\n",
+ "T =298 #K\n",
+ "#calculations\n",
+ "ratio=g2/g1 *(math.pow(math.e,((E1-E2)*h*B/(k*T))))\n",
+ "#results\n",
+ "print '%s %.2f' %(\"Ratio= \",ratio)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Ratio= 1.36\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I3 - Pg 481"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the translational partition function\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "T=298 #K\n",
+ "m=32*1.66054*math.pow(10,-27) #kg\n",
+ "k=1.38066*math.pow(10,-23) #j/k\n",
+ "V=math.pow(10,-4) #m^3\n",
+ "h=6.62608*math.pow(10,-34) #J/s\n",
+ "#calculations\n",
+ "q=math.pow((2*math.pi*m*k*T),1.5) *V/h/h/h \n",
+ "#results\n",
+ "print '%s %.2e' %(\"Translational partition function = \",q)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Translational partition function = 1.75e+28\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E1 - Pg 479"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the partition function at 20 C\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "E=22 #kJ/mol\n",
+ "R=8.214 #J/K mol\n",
+ "T=293 #K\n",
+ "#Calculations\n",
+ "q=1+math.pow(math.e,(-E*1000. /(R*T)))\n",
+ "#results\n",
+ "print '%s %.4f' %(\"At 20 C, partition function = \",q)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "At 20 C, partition function = 1.0001\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E3 - Pg 485"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the contribution to rotational motion\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "k=1.38*math.pow(10,-23) #J/K\n",
+ "h=6.626*math.pow(10,-34) #J s\n",
+ "B=3.18*math.pow(10,11) #Hz\n",
+ "T=298 #K\n",
+ "R=8.314 #J/K mol\n",
+ "#calculations\n",
+ "Sm=R*(1+math.log(k*T/(h*B)))\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Contribution to rotational motion=\",Sm,\"J/ K mol\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Contribution to rotational motion= 33.0 J/ K mol\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E5 - Pg 488"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the Equilibrium constant\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "me=9.10939*math.pow(10,-31) #kg\n",
+ "k=1.38*math.pow(10,-23) #J/K\n",
+ "h=6.626*math.pow(10,-34) #J s\n",
+ "p=math.pow(10,5) #Pa\n",
+ "T=1000 #K\n",
+ "R=8.314 #J/K mol\n",
+ "I=376*1000. #J/mol\n",
+ "#calculations\n",
+ "K=math.pow((2*math.pi*me),1.5) *math.pow((k*T),2.5) /(p*h*h*h) *math.pow(math.e,(-I/(R*T)))\n",
+ "#results\n",
+ "print '%s %.2e' %(\"Equilibrium constant = \",K)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Equilibrium constant = 2.41e-19\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Elements_of_Physical_Chemistry/Chapter3.ipynb b/Elements_of_Physical_Chemistry/Chapter3.ipynb new file mode 100755 index 00000000..87d165d7 --- /dev/null +++ b/Elements_of_Physical_Chemistry/Chapter3.ipynb @@ -0,0 +1,291 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 3 - Thermochemistry"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I1 - Pg 67"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the change in enthalpy\n",
+ "#Initialization of variables\n",
+ "dU=-969.6 #kJ/mol\n",
+ "nN2=1/2.\n",
+ "nCO2=2.\n",
+ "nO2=9./4.\n",
+ "T=298.15 #K\n",
+ "#Calculations\n",
+ "n=nCO2+nN2-nO2\n",
+ "H=dU+n*8.3145*T/1000.\n",
+ "#results\n",
+ "print '%s %.1f %s' %('Enthalpy change = ',H,'kJ/mol')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enthalpy change = -969.0 kJ/mol\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E1 - Pg 58"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the Molar Enthalpy Change\n",
+ "#Initialization of variables\n",
+ "I=0.682 #A\n",
+ "V=12 #V\n",
+ "t=500. #s\n",
+ "m=4.33 #g\n",
+ "MW=46.07 #g/mol\n",
+ "#Calculations\n",
+ "q=I*V*t\n",
+ "n=m/MW\n",
+ "H=q/n/1000.\n",
+ "#Results\n",
+ "print '%s %.1f %s' %('Molar enthalpy change =',H,'kJ/mol')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Molar enthalpy change = 43.5 kJ/mol\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E2 - Pg 62"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the Heat supplied\n",
+ "#Initialization of variables\n",
+ "m=1 #g\n",
+ "MW=24.31 #g/mol\n",
+ "H=2337 #kJ/mol\n",
+ "#Calculations\n",
+ "n=m/MW\n",
+ "q=n*H\n",
+ "#results\n",
+ "print '%s %.1f %s' %('Heat supplied =',q,'kJ')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Heat supplied = 96.1 kJ\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E3 - Pg 65"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the sum of enthalpy changes\n",
+ "#Initialization of variables\n",
+ "HC=716.68 #kJ\n",
+ "HH=871.88 #kJ\n",
+ "HO=249.17 #kJ\n",
+ "Hcond=-38 #kJ\n",
+ "HCH=-412\n",
+ "HCO=-360\n",
+ "HOH=-463\n",
+ "#Calculations\n",
+ "H1=HC+HH+HO\n",
+ "H2=3*HCH+HCO+HOH\n",
+ "H3=Hcond\n",
+ "H=H1+H2+H3\n",
+ "#results\n",
+ "print '%s %d %s' %('Sum of enthalpy changes =',H,' kJ')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Sum of enthalpy changes = -259 kJ\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E4 - Pg 68"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the standard enthalpy of combustion of propene\n",
+ "#Initialization of variables\n",
+ "Hf=-124 #kJ\n",
+ "Hoxi=-2220 #kJ\n",
+ "Hwater=286 #kJ\n",
+ "#Calculations\n",
+ "H=Hf+Hoxi+Hwater\n",
+ "#results\n",
+ "print '%s %d %s' %('Standard enthalpy of combustion of propene =',H,'kJ/mol')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Standard enthalpy of combustion of propene = -2058 kJ/mol\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E5 - Pg 70"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the standard enthalpy of combustion of benzene\n",
+ "#Initialization of variables\n",
+ "nCO2=6 #mol\n",
+ "nH2O=3 #mol\n",
+ "nO2=15/2. #mol\n",
+ "nC6H6=1 #mol\n",
+ "HC6H6=49 #kJ/mol\n",
+ "HH2O=-285.83\n",
+ "HO2=0\n",
+ "HCO2=-393.51 \n",
+ "#Calculations\n",
+ "H=nCO2*HCO2+nH2O*HH2O-nC6H6*HC6H6-nO2*HO2\n",
+ "#results\n",
+ "print '%s %.1f %s' %('Standard enthalpy of combustion of benzene is',H,'kJ/mol')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Standard enthalpy of combustion of benzene is -3267.6 kJ/mol\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E6 - Pg 74"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the enthalpy of formation of water\n",
+ "#Initialization of variables\n",
+ "HH2O=-241.82 #kJ/mol\n",
+ "T1=25 #C\n",
+ "T2=100 #C\n",
+ "CpH2O=33.58 #J/K mol\n",
+ "CpH2=28.84 #J/K mol\n",
+ "CpO2=29.37 #J/K mol\n",
+ "#calculations\n",
+ "dCp=CpH2O-CpH2-0.5*CpO2\n",
+ "dH=HH2O+dCp*(T2-T1)/1000.\n",
+ "#results\n",
+ "print '%s %.2f %s' %('Enthalpy of formation of water at 100 C is',dH,'kJ/mol')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enthalpy of formation of water at 100 C is -242.57 kJ/mol\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Elements_of_Physical_Chemistry/Chapter4.ipynb b/Elements_of_Physical_Chemistry/Chapter4.ipynb new file mode 100755 index 00000000..b5b8ff90 --- /dev/null +++ b/Elements_of_Physical_Chemistry/Chapter4.ipynb @@ -0,0 +1,208 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 4 - Thermodynamics: the Second Law"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I1 - Pg 80"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the entropy change at 273 and 373 K\n",
+ "#Initialization of variables\n",
+ "H=100. #kJ\n",
+ "T1=273. #K\n",
+ "T2=373.#K\n",
+ "#calculations\n",
+ "S1=H*1000/T1\n",
+ "S2=H*1000/T2\n",
+ "#results\n",
+ "print '%s %d %s' %('Entropy change at 273 K is',S1,'J/K ')\n",
+ "print '%s %d %s' %('\\n Entropy change at 373 K is',S2,'J/K ')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Entropy change at 273 K is 366 J/K \n",
+ "\n",
+ " Entropy change at 373 K is 268 J/K \n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I2 - Pg 84"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the enthalpy of vaporization\n",
+ "#Initialization of variables\n",
+ "T=59.2 #K\n",
+ "#calculations\n",
+ "Hvap=85*(273.2+T)/1000.\n",
+ "#results\n",
+ "print '%s %d %s' %('Enthalpy of vaportization =',Hvap,'kJ/mol')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enthalpy of vaportization = 28 kJ/mol\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I3 - Pg 88"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the change in entropy\n",
+ "#Initialization of variables\n",
+ "SH2O=70 #J/K mol\n",
+ "SH2=131 #J/K mol\n",
+ "SO2=205 #J/K mol\n",
+ "#calculations\n",
+ "deltaS=2*SH2O-2*SH2-SO2\n",
+ "print '%s %d %s' %('Change in entropy =',deltaS,'J/K mol')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Change in entropy = -327 J/K mol\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E1 - Pg 84"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the net heat transferred and entropy production per day\n",
+ "#Initialization of variables\n",
+ "Power=100. #W\n",
+ "time=1 #day\n",
+ "T=20 #C\n",
+ "#calculations\n",
+ "timeins=1*24*3600\n",
+ "qsurr=timeins*Power\n",
+ "Ssurr=qsurr/(T+273.)\n",
+ "#results\n",
+ "print '%s %d %s' %('Heat transferred to surroundings =',qsurr,'J')\n",
+ "print '%s %.2e %s' %('\\n Entropy production per day =',Ssurr,'J/k')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Heat transferred to surroundings = 8640000 J\n",
+ "\n",
+ " Entropy production per day = 2.95e+04 J/k\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E2 - Pg 92"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the amount of food bird must consume\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "g=9.81 #m/s^2\n",
+ "m=30*math.pow(10,-3) #kg\n",
+ "d=10 #m\n",
+ "H=2.828*math.pow(10,6) #j/mol\n",
+ "M=180. #g/mol\n",
+ "#calculations\n",
+ "w=g*m*d\n",
+ "n=w/H\n",
+ "m=n*M\n",
+ "#results\n",
+ "print '%s %.1e %s' %('Amount bird must consume =',m,'g')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Amount bird must consume = 1.9e-04 g\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Elements_of_Physical_Chemistry/Chapter6.ipynb b/Elements_of_Physical_Chemistry/Chapter6.ipynb new file mode 100755 index 00000000..f3e0726f --- /dev/null +++ b/Elements_of_Physical_Chemistry/Chapter6.ipynb @@ -0,0 +1,304 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 6 - The properties of mixtures"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E1 - Pg 112"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the mole fraction of glycerine\n",
+ "#Initialization of variables\n",
+ "m=0.14 #mol/kg\n",
+ "w=1. #kg Assume\n",
+ "#Calculations\n",
+ "ngly=m*w\n",
+ "nwater=w*1000 /18.02\n",
+ "ntotal=ngly+nwater\n",
+ "xgly=ngly/ntotal\n",
+ "#results\n",
+ "print '%s %.2e' %('Mole fraction of glycerine is xgly =',xgly)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mole fraction of glycerine is xgly = 2.52e-03\n"
+ ]
+ }
+ ],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E2 - Pg 114"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the volume of the mixture\n",
+ "#Initialization of variables\n",
+ "mE=50. #g\n",
+ "mW=50. #g\n",
+ "#calculations\n",
+ "nE=mE/46.\n",
+ "nW=mW/18.\n",
+ "ntotal=nE+nW\n",
+ "xE=nE/ntotal\n",
+ "xW=1-xE\n",
+ "print '%s' %('for the observed xE and xW')\n",
+ "vE=55 #cc/mol\n",
+ "vW=18 #cc/mol\n",
+ "V=nE*vE+nW*vW\n",
+ "#results\n",
+ "print '%s %.1f %s' %('\\n Volume of the mixture =',V,'cm^3 ')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "for the observed xE and xW\n",
+ "\n",
+ " Volume of the mixture = 109.8 cm^3 \n"
+ ]
+ }
+ ],
+ "prompt_number": 21
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E3 - Pg 121"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Calculate Ka and Kc from the raoults law line \n",
+ "#Initialization of variables\n",
+ "import matplotlib\n",
+ "from matplotlib import pyplot\n",
+ "xc=([0, 0.20, 0.40, 0.60, 0.80, 1])\n",
+ "pc=([0, 35, 82, 142, 219, 293])\n",
+ "pa=([347, 270, 185, 102, 37, 0])\n",
+ "#calculations\n",
+ "pyplot.plot(xc,pc)\n",
+ "pyplot.plot(xc,pa)\n",
+ "pyplot.xlabel('Mole fraction xc')\n",
+ "pyplot.ylabel('Pressure /Torr')\n",
+ "print '%s' %('From the graph it is clear that KA=175 torr and KC=165 torr. They are plotted with Raoults law lines')\n",
+ "pyplot.show()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From the graph it is clear that KA=175 torr and KC=165 torr. They are plotted with Raoults law lines\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nhBAiR/8PUIILe33jvscAAAAASUVORK5CYII=\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x6121270>"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E4 - Pg 123"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate if required concentration can be maintained under normal conditions.\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "C=4/1000. #g/L\n",
+ "MO2=32. #g/mol\n",
+ "Mw=18.\n",
+ "w=1 #L\n",
+ "K=3.3*math.pow(10,7) #torr\n",
+ "patm=0.21*760 #torr\n",
+ "#calculations\n",
+ "nO2=C/MO2\n",
+ "nH2O=w*1000. /Mw\n",
+ "xO2=nO2/(nO2+nH2O)\n",
+ "pO2=xO2*K\n",
+ "if(pO2<patm):\n",
+ " print '%s %.1e' %('The required concentration can be maintained under normal conditions and pressure is (Torr)',pO2)\n",
+ "else:\n",
+ " print '%s %.e' %('The required concentration cannot be maintained under normal conditions and pressure is (Torr)',pO2)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The required concentration can be maintained under normal conditions and pressure is (Torr) 7.4e+01\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E5 - Pg 131"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the molar mass of the enzyme\n",
+ "#Initialization of variables\n",
+ "%pylab inline\n",
+ "import numpy as np\n",
+ "from numpy import linalg\n",
+ "import matplotlib\n",
+ "from matplotlib import pyplot\n",
+ "c=([1, 2, 4, 7, 9])\n",
+ "hbyc=([0.28, 0.36, 0.503, 0.739, 0.889])\n",
+ "R=8.3145 #J/K mol\n",
+ "T=298 #K\n",
+ "g=9.81 #m/s^2\n",
+ "d=0.9998 #g/cm^3\n",
+ "#calculations\n",
+ "pyplot.plot(c,hbyc)\n",
+ "pyplot.xlabel('c')\n",
+ "pyplot.ylabel('hbyc')\n",
+ "A = np.vstack([c, np.ones(len(c))]).T\n",
+ "vector=numpy.linalg.lstsq(A,hbyc)\n",
+ "intercept=vector[0]\n",
+ "intercept1=intercept[1]/100.\n",
+ "M=R*T/(d*g*intercept1)/1000.\n",
+ "#results\n",
+ "print '%s %d %s' %('Molar mass of the enzyme is close to',M,'kDa')\n",
+ "print '%s' %('The answer is a bit different in the textbook due to rounding off error in the textbook')\n",
+ "pyplot.show()\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Populating the interactive namespace from numpy and matplotlib\n",
+ "Molar mass of the enzyme is close to 123 kDa"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "The answer is a bit different in the textbook due to rounding off error in the textbook\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nH8HDd6tbA3Y3AAAAAElFTkSuQmCC\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x9caefb0>"
+ ]
+ }
+ ],
+ "prompt_number": 19
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E6 - Pg 136"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate how many times the rich phase is more abundant in nitrobenzene\n",
+ "#Initialization of variables\n",
+ "nB=0.59 #mol\n",
+ "nNB=0.41 #mol\n",
+ "xN1=0.38\n",
+ "xN2=0.74\n",
+ "xNm=0.41\n",
+ "#calculations\n",
+ "print '%s' %('By lever rule')\n",
+ "ratio=(xNm-xN1)/(xN2-xNm)\n",
+ "percent=ratio*100. +1\n",
+ "#results\n",
+ "print '%s %d %s' %(\"The rich phase is\",percent,\"times more abundant in nitrobenzene\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "By lever rule\n",
+ "The rich phase is 10 times more abundant in nitrobenzene\n"
+ ]
+ }
+ ],
+ "prompt_number": 24
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Elements_of_Physical_Chemistry/Chapter7.ipynb b/Elements_of_Physical_Chemistry/Chapter7.ipynb new file mode 100755 index 00000000..db391867 --- /dev/null +++ b/Elements_of_Physical_Chemistry/Chapter7.ipynb @@ -0,0 +1,346 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 7 - Principles of chemical equilibrium"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E1 - Pg 147"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the reaction gibbs energy\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "G=-31. #kJ/mol\n",
+ "T=37+273. #K\n",
+ "Cadp=1/1000. #mmol/L\n",
+ "Cp=8/1000. #mmol/L\n",
+ "Catp=8/1000. #mmol/L\n",
+ "R=8.314 #J/K mol\n",
+ "#calculations\n",
+ "Q=Cadp*Cp/Catp\n",
+ "deltaG=G+R*T*math.log(Q) /1000.\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Reaction Gibbs energy =\",deltaG,\" kJ/mol\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Reaction Gibbs energy = -48.8 kJ/mol\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E2 - Pg 149"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the gibbs energy\n",
+ "#Initialization of variables\n",
+ "Hr=-285.83 #kJ/mol\n",
+ "Sr=-163.34 #J/ K mol\n",
+ "T=298.15 #K\n",
+ "#calculations\n",
+ "Gr=Hr-T*Sr/1000.\n",
+ "#results\n",
+ "print '%s %.2f %s' %('Gibbs energy =',Gr,'kJ/mol')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Gibbs energy = -237.13 kJ/mol\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E3 - Pg 153"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the change in gibbs energy\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "aADP=1 #mol/L\n",
+ "aP=1 #mol/L\n",
+ "aATP=1 #mol/L\n",
+ "aH2O=1 #mol/L\n",
+ "aH=math.pow(10,-7) #mol/L\n",
+ "G=10 #kJ/mol\n",
+ "T=298. #K\n",
+ "R=8.314 #J/K mol\n",
+ "#calculations\n",
+ "Q=aADP*aP*aH/(aATP*aH2O)\n",
+ "Gr=G+R*T*math.log(Q)/1000.\n",
+ "#results\n",
+ "print '%s %.1f %s' %('Change in nGibbs energy =',Gr,'kJ/mol')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Change in nGibbs energy = -29.9 kJ/mol\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E4 - Pg 155"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the equivalent fration\n",
+ "#Initialization of variables\n",
+ "Gr=1.7*1000 #J/mol\n",
+ "T=298. #K\n",
+ "R=8.314 #J/K mol\n",
+ "K=0.5\n",
+ "#calculations\n",
+ "GbyRT=Gr/(R*T)\n",
+ "feq=K/(K+1)\n",
+ "#results\n",
+ "print '%s %.2f' %(\"Equivalent fraction = \",feq)\n",
+ "print '%s' %(\"For the second part, Gr=1.7 + 2.48 ln(f/1-f)\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Equivalent fraction = 0.33\n",
+ "For the second part, Gr=1.7 + 2.48 ln(f/1-f)\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E5 - Pg 157"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the pressure of N2,H2,NH3 gases\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "import numpy\n",
+ "species=(['N2', 'H2', 'NH3'])\n",
+ "change=(['-x', '-3x', '2x'])\n",
+ "E=(['1-x', '3-3x', '2x'])\n",
+ "print '%s' %(\"Concentration table\")\n",
+ "print '%s' %(\"species\")\n",
+ "print '%s' %(\"change\")\n",
+ "print(E)\n",
+ "K=977.\n",
+ "#Calculations\n",
+ "g=math.sqrt(27*K/4.)\n",
+ "vector=([g, -(2*g +1), g])\n",
+ "sol=numpy.roots(vector)[1]\n",
+ "\n",
+ "PN2=1-sol\n",
+ "PH2=3-3*sol\n",
+ "PNH3=2*sol\n",
+ "K=math.pow(PNH3,2)/(math.pow(PH2,3) *PN2)\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Pressure of N2 gas = \",PN2,\"bar\")\n",
+ "print '%s %.2f %s' %(\"\\n Pressure of H2 gas =\",PH2,\"bar\")\n",
+ "print '%s %.2f %s' %(\"\\n Pressure of NH3 gas =\",PNH3,\"bar\")\n",
+ "print '%s %.2e %s' %(\"\\n K final =\",K,\"> it is close to original value.\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Concentration table\n",
+ "species\n",
+ "change\n",
+ "['1-x', '3-3x', '2x']\n",
+ "Pressure of N2 gas = 0.10 bar\n",
+ "\n",
+ " Pressure of H2 gas = 0.31 bar\n",
+ "\n",
+ " Pressure of NH3 gas = 1.79 bar\n",
+ "\n",
+ " K final = 9.77e+02 > it is close to original value.\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I2 - Pg 148"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the equilibrium constant\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "Gr=-3.40 #kJ/mol\n",
+ "R=8.314 #J/k mol\n",
+ "T=298. #K\n",
+ "#calculations\n",
+ "lnK=Gr*1000./(R*T)\n",
+ "K=math.exp(lnK)\n",
+ "#results\n",
+ "print '%s %.2f' %('Equilibrium constant K= ',K)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Equilibrium constant K= 0.25\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I3 - Pg 149"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the decomposition temperature\n",
+ "#Initialization of variables\n",
+ "Hr=178. #kJ/mol\n",
+ "Sr=161. #J/K mol\n",
+ "#calculations\n",
+ "T=Hr*1000 /Sr\n",
+ "#results\n",
+ "print '%s %.2e %s' %(\"Decompostion temperature =\",T,\"K\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Decompostion temperature = 1.11e+03 K\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I4 - Pg 151"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the standard reaction gibbs energy\n",
+ "#Initialization of variables\n",
+ "GCO2=-394. #kJ/mol\n",
+ "GCO=-137. #kJ/mol\n",
+ "GO2=0\n",
+ "#calculations\n",
+ "deltaG=2*GCO2-2*GCO+GO2\n",
+ "#results\n",
+ "print '%s %d %s' %('Standard reaction gibbs energy =',deltaG,' kJ/mol')\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Standard reaction gibbs energy = -514 kJ/mol\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Elements_of_Physical_Chemistry/Chapter8.ipynb b/Elements_of_Physical_Chemistry/Chapter8.ipynb new file mode 100755 index 00000000..a3e364e2 --- /dev/null +++ b/Elements_of_Physical_Chemistry/Chapter8.ipynb @@ -0,0 +1,258 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 8 - Consequences of equilibrium"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I1 - Pg 176"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the equlibrium pH\n",
+ "#Initialization of variables\n",
+ "ph1=6.37\n",
+ "ph2=10.25\n",
+ "ph3=7.21\n",
+ "ph4=12.67\n",
+ "#calculations\n",
+ "pH1=0.5*(ph1+ph2)\n",
+ "pH2=0.5*(ph3+ph4)\n",
+ "#results\n",
+ "print '%s %.2f' %(\"Equilibrium pH in case 1 = \",pH1)\n",
+ "print '%s %.2f' %(\"\\n Equilibrium pH in case 2 = \",pH2)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Equilibrium pH in case 1 = 8.31\n",
+ "\n",
+ " Equilibrium pH in case 2 = 9.94\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I2 - Pg 178"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the pH of the solution\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "n=2.5/1000. #mol\n",
+ "C=0.2 #mol/L\n",
+ "vbase=37.5/1000. #L\n",
+ "#calculations\n",
+ "V=n/C\n",
+ "base=n/vbase\n",
+ "H=math.pow(10,-14) /base\n",
+ "print '%s' %(\"It follows from example 8.2 that\")\n",
+ "pH=10.2\n",
+ "#results\n",
+ "print '%s %.1f' %(\"\\n pH of the solution = \",pH)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "It follows from example 8.2 that\n",
+ "\n",
+ " pH of the solution = 10.2\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E1 - Pg 171"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the percent of acetic acid molecules that have donated a proton\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "C=0.15 #M\n",
+ "Ka=1.8*math.pow(10,-5)\n",
+ "#calculations\n",
+ "x=math.sqrt(C*Ka)\n",
+ "f=x/C\n",
+ "percent=f*100.\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"percent of acetic acid molecules that have donated a proton =\",percent,\"percent\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "percent of acetic acid molecules that have donated a proton = 1.1 percent\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E2 - Pg 171"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the fraction proportionated\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "pKa=4.88\n",
+ "C=0.01 #M\n",
+ "pKw=14\n",
+ "#calculations\n",
+ "pKb=pKw-pKa\n",
+ "Kb=math.pow(10,(-pKb))\n",
+ "x=(math.sqrt(C*Kb))\n",
+ "pOH=-math.log(x)\n",
+ "pH=14-pOH\n",
+ "f=x/C\n",
+ "#results\n",
+ "print '%s %.1e' %(\"fraction protonated = \",f)\n",
+ "print '%s %d' %(\"\\n 1 molecule in about \",1./f)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "fraction protonated = 2.8e-04\n",
+ "\n",
+ " 1 molecule in about 3630\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E3 - Pg 173"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate te concentration of carbonate ions\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "pKa2=10.25\n",
+ "#calculations\n",
+ "C=math.pow(10,(-pKa2))\n",
+ "#results\n",
+ "print '%s %.1e %s' %(\"Concentration of Carbonate ions =\",C,\" mol/l\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Concentration of Carbonate ions = 5.6e-11 mol/l\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E5 - Pg 173"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the final pH of the solution\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "vOH=5*math.pow(10,-3) #L\n",
+ "vHClO=25*math.pow(10,-3) #L\n",
+ "C=0.2 #mol/L\n",
+ "#calculations\n",
+ "nOH=vOH*C\n",
+ "nHClO=vHClO*C/2.\n",
+ "nrem=nHClO-nOH\n",
+ "pH=7.53-math.log10(nrem/nOH)\n",
+ "#results\n",
+ "print '%s %.1f' %(\"Final pH= \",pH)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Final pH= 7.4\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Elements_of_Physical_Chemistry/Chapter9.ipynb b/Elements_of_Physical_Chemistry/Chapter9.ipynb new file mode 100755 index 00000000..be702d1e --- /dev/null +++ b/Elements_of_Physical_Chemistry/Chapter9.ipynb @@ -0,0 +1,367 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 9 - Electrochemistry"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I1 - Pg 200"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the potential of the cell\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "Gr=-math.pow(10,5) #kJ/mol\n",
+ "v=1\n",
+ "F=9.6485*10000. #C/mol\n",
+ "#calculations\n",
+ "E=-Gr/(v*F)\n",
+ "#results\n",
+ "print '%s %d %s' %(\"potential of the cell =\",E,\"V\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "potential of the cell = 1 V\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I2 - Pg 202"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the equilibrium constant of the reaction\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "V=1.1 #V\n",
+ "F=9.6485*10000. #C/mol\n",
+ "R=8.314 #J/K mol\n",
+ "T=298.15 #K\n",
+ "#calculations\n",
+ "lnK=2*F*V/(R*T)\n",
+ "k=math.pow(math.e,(lnK))\n",
+ "#results\n",
+ "print '%s %.1e' %(\"Equilibrium constant =\",k)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Equilibrium constant = 1.5e+37\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E1 - Pg 189"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the acidity constant of the acid\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "lw=34.96 #mS m^2 /mol\n",
+ "la=4.09 #mS m^2 /mol\n",
+ "C=0.010 #M\n",
+ "K=1.65 #mS m^2 /mol\n",
+ "#calculations\n",
+ "lmd=lw+la\n",
+ "alpha=K/lmd\n",
+ "Ka=C*alpha*alpha\n",
+ "pKa=-math.log10(Ka)\n",
+ "#results\n",
+ "print '%s %.2f' %(\"Acidity constant of the acid = \",pKa)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Acidity constant of the acid = 4.75\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E6 - Pg 203"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate if the reaction is favoring the products or not. Also calculate the E value\n",
+ "#Initialization of variables\n",
+ "ER=1.23 #V\n",
+ "EL=-0.44 #V\n",
+ "#calculations\n",
+ "E=ER-EL\n",
+ "#results\n",
+ "if(E>0):\n",
+ " print '%s %.2f %s' %(\"The reaction is favouring products and E is\",E,\"V\")\n",
+ "else:\n",
+ " print '%s %.2f %s' %(\"The reaction is not favouring products and E is\",E,\" V\")\n",
+ " \n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The reaction is favouring products and E is 1.67 V\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E7 - Pg 203"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the equilibrium constant \n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "ER=0.52 #V\n",
+ "EL=0.15 #V\n",
+ "#calculations\n",
+ "E=ER-EL\n",
+ "lnK=E*1000./(25.69)\n",
+ "K=math.exp(lnK)\n",
+ "#results\n",
+ "print '%s %.1e' %(\"Equilbrum constant K= \",K)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Equilbrum constant K= 1.8e+06\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E8 - Pg 205"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the biological standard potential\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "E0=-0.11 #V\n",
+ "H=math.pow(10,-7)\n",
+ "#calculations\n",
+ "pH=-math.log10(H)\n",
+ "E=E0-29.59*pH*math.pow(10,-3)\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Biological standard potential =\",E,\"V\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Biological standard potential = -0.32 V\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E9 - Pg 206"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the equilibrium constant for the reaction\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "ER=-0.21 #V\n",
+ "EL=-0.6 #V\n",
+ "#calculations\n",
+ "E=ER-EL\n",
+ "lnK=2*E*1000./(25.69)\n",
+ "K=math.exp(lnK)\n",
+ "#results\n",
+ "print '%s %.1e' %(\"Equilibrium constant for the reaction = \",K)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Equilibrium constant for the reaction = 1.5e+13\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E10 - Pg 209"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the electric potential\n",
+ "#Initialization of variables\n",
+ "E1=2*(-0.340)\n",
+ "E2=-0.522 \n",
+ "#calculations\n",
+ "FE=-E1+E2\n",
+ "#results\n",
+ "print '%s %.3f %s' %(\"Electric potential =\",FE,\"V\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Electric potential = 0.158 V\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E11 - Pg 210"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the Gibbs enthalpy, Standard entropy and enthalpy of the process\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "v=2\n",
+ "F=9.6485*10000. #C/mol\n",
+ "E=0.2684 #V\n",
+ "V1=0.2699 #V\n",
+ "V2=0.2669 #V\n",
+ "T1=293. #K\n",
+ "T=298. #K\n",
+ "T2=303. #K\n",
+ "#calculations\n",
+ "Gr= -v*F*E/1000.\n",
+ "Sr=v*F*(V2-V1)/(T2-T1)\n",
+ "Hr=Gr+T*Sr/1000.\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Gibbs enthalpy =\",Gr,\"kJ/mol\")\n",
+ "print '%s %.1f %s' %(\"\\n Standard Entropy =\",Sr,\"J /K mol\")\n",
+ "print '%s %.1f %s' %(\"\\n Enthalpy =\",Hr,\"kJ/mol\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Gibbs enthalpy = -51.79 kJ/mol\n",
+ "\n",
+ " Standard Entropy = -57.9 J /K mol\n",
+ "\n",
+ " Enthalpy = -69.0 kJ/mol\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Elements_of_Physical_Chemistry/README.txt b/Elements_of_Physical_Chemistry/README.txt new file mode 100755 index 00000000..f93c44a3 --- /dev/null +++ b/Elements_of_Physical_Chemistry/README.txt @@ -0,0 +1,10 @@ +Contributed By: Devika Raj +Course: be +College/Institute/Organization: RVR college of Engineering +Department/Designation: Electronics and Communication En +Book Title: Elements of Physical Chemistry +Author: Atkins Peter +Publisher: Oxford University Press +Year of publication: 2001 +Isbn: 0199608113 +Edition: 3
\ No newline at end of file diff --git a/Elements_of_Physical_Chemistry/chapter0.ipynb b/Elements_of_Physical_Chemistry/chapter0.ipynb new file mode 100755 index 00000000..4cc1774a --- /dev/null +++ b/Elements_of_Physical_Chemistry/chapter0.ipynb @@ -0,0 +1,198 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 0 - Introduction"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example E1 - Pg 4"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the final pressure of the gas\n",
+ "#Initialization of variables\n",
+ "P=1.115 #bar\n",
+ "#Calculations\n",
+ "Conv_fac=1/1.01325\n",
+ "FinalP=Conv_fac*P #Final pressure\n",
+ "#Results\n",
+ "print '%s %.3f' %('Final pressure in atmospheres (atm)= ',FinalP)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Final pressure in atmospheres (atm)= 1.100\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I1 - Pg 5"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the pressure at the foot of the column\n",
+ "#Initialization of variables\n",
+ "h=0.760 #m\n",
+ "d=1.36*10000 #kg/m^3\n",
+ "#Calculations\n",
+ "P=9.81*d*h\n",
+ "#Results\n",
+ "print '%s %.3e' %('Pressure at the foot of the column (Pa)= ',P)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressure at the foot of the column (Pa)= 1.014e+05\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I2 - Pg 6"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the hydrostatic pressure and pressure in apparatus\n",
+ "#Initialization of variables\n",
+ "h=0.1 #m\n",
+ "d=1000 #Kg/m^3\n",
+ "Patm=100021. #Pa\n",
+ "#Calculations\n",
+ "P=9.81*h*d\n",
+ "Papp=(Patm-P)/1000.\n",
+ "#Results\n",
+ "print '%s %.3f' %('Hydrostatic pressure(Pa) = ',P )\n",
+ "print '%s %.3f' %('\\n Pressure in apparatus(kPa) = ',Papp)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Hydrostatic pressure(Pa) = 981.000\n",
+ "\n",
+ " Pressure in apparatus(kPa) = 99.040\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I3 - Pg 8"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the no.of moles of copper required\n",
+ "import math\n",
+ "#Initialization of variables\n",
+ "N=8.8*math.pow(10,22)\n",
+ "NA=6.023*math.pow(10,23) #mol^-1\n",
+ "#Calculations\n",
+ "n=N/NA\n",
+ "#Results\n",
+ "print '%s %.2f' %('No. of moles of Cu ( mol Cu)= ',n)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "No. of moles of Cu ( mol Cu)= 0.15\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example I4 - Pg 9"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the amount of Carbon atoms \n",
+ "#Initialization of variables\n",
+ "m=21.5 #g\n",
+ "Mc=12.01 #g/mol\n",
+ "#Calculations\n",
+ "nc=m/Mc\n",
+ "#Results\n",
+ "print '%s %.2f %s' %(\"Amount of C atoms=\",nc,\"mol C\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Amount of C atoms= 1.79 mol C\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Elements_of_Physical_Chemistry/screenshots/chap4.png b/Elements_of_Physical_Chemistry/screenshots/chap4.png Binary files differnew file mode 100755 index 00000000..54fe5d7f --- /dev/null +++ b/Elements_of_Physical_Chemistry/screenshots/chap4.png diff --git a/Elements_of_Physical_Chemistry/screenshots/chap6.png b/Elements_of_Physical_Chemistry/screenshots/chap6.png Binary files differnew file mode 100755 index 00000000..76924e1c --- /dev/null +++ b/Elements_of_Physical_Chemistry/screenshots/chap6.png diff --git a/Elements_of_Physical_Chemistry/screenshots/chap7.png b/Elements_of_Physical_Chemistry/screenshots/chap7.png Binary files differnew file mode 100755 index 00000000..949a4f48 --- /dev/null +++ b/Elements_of_Physical_Chemistry/screenshots/chap7.png diff --git a/Fluid_Mechanics_With_Engineering_Applications/README.txt b/Fluid_Mechanics_With_Engineering_Applications/README.txt index 9c04be12..9c04be12 100644..100755 --- a/Fluid_Mechanics_With_Engineering_Applications/README.txt +++ b/Fluid_Mechanics_With_Engineering_Applications/README.txt diff --git a/Fluid_Mechanics_With_Engineering_Applications/ch1.ipynb b/Fluid_Mechanics_With_Engineering_Applications/ch1.ipynb index f2d43060..f2d43060 100644..100755 --- a/Fluid_Mechanics_With_Engineering_Applications/ch1.ipynb +++ b/Fluid_Mechanics_With_Engineering_Applications/ch1.ipynb diff --git a/Fluid_Mechanics_With_Engineering_Applications/ch10.ipynb b/Fluid_Mechanics_With_Engineering_Applications/ch10.ipynb index 87e81c80..87e81c80 100644..100755 --- a/Fluid_Mechanics_With_Engineering_Applications/ch10.ipynb +++ b/Fluid_Mechanics_With_Engineering_Applications/ch10.ipynb diff --git a/Fluid_Mechanics_With_Engineering_Applications/ch11.ipynb b/Fluid_Mechanics_With_Engineering_Applications/ch11.ipynb index f9ba8a6b..f9ba8a6b 100644..100755 --- a/Fluid_Mechanics_With_Engineering_Applications/ch11.ipynb +++ b/Fluid_Mechanics_With_Engineering_Applications/ch11.ipynb diff --git a/Fluid_Mechanics_With_Engineering_Applications/ch12.ipynb b/Fluid_Mechanics_With_Engineering_Applications/ch12.ipynb index 6e1ff052..6e1ff052 100644..100755 --- a/Fluid_Mechanics_With_Engineering_Applications/ch12.ipynb +++ b/Fluid_Mechanics_With_Engineering_Applications/ch12.ipynb diff --git a/Fluid_Mechanics_With_Engineering_Applications/ch13.ipynb b/Fluid_Mechanics_With_Engineering_Applications/ch13.ipynb index c094073c..c094073c 100644..100755 --- a/Fluid_Mechanics_With_Engineering_Applications/ch13.ipynb +++ b/Fluid_Mechanics_With_Engineering_Applications/ch13.ipynb diff --git a/Fluid_Mechanics_With_Engineering_Applications/ch14.ipynb b/Fluid_Mechanics_With_Engineering_Applications/ch14.ipynb index 12f3ef2c..12f3ef2c 100644..100755 --- a/Fluid_Mechanics_With_Engineering_Applications/ch14.ipynb +++ b/Fluid_Mechanics_With_Engineering_Applications/ch14.ipynb diff --git a/Fluid_Mechanics_With_Engineering_Applications/ch15.ipynb b/Fluid_Mechanics_With_Engineering_Applications/ch15.ipynb index 8510f9f5..8510f9f5 100644..100755 --- a/Fluid_Mechanics_With_Engineering_Applications/ch15.ipynb +++ b/Fluid_Mechanics_With_Engineering_Applications/ch15.ipynb diff --git a/Fluid_Mechanics_With_Engineering_Applications/ch16.ipynb b/Fluid_Mechanics_With_Engineering_Applications/ch16.ipynb index 95cacefd..95cacefd 100644..100755 --- a/Fluid_Mechanics_With_Engineering_Applications/ch16.ipynb +++ b/Fluid_Mechanics_With_Engineering_Applications/ch16.ipynb diff --git a/Fluid_Mechanics_With_Engineering_Applications/ch17.ipynb b/Fluid_Mechanics_With_Engineering_Applications/ch17.ipynb index b8eb3f65..b8eb3f65 100644..100755 --- a/Fluid_Mechanics_With_Engineering_Applications/ch17.ipynb +++ b/Fluid_Mechanics_With_Engineering_Applications/ch17.ipynb diff --git a/Fluid_Mechanics_With_Engineering_Applications/ch2.ipynb b/Fluid_Mechanics_With_Engineering_Applications/ch2.ipynb index 6c605e78..6c605e78 100644..100755 --- a/Fluid_Mechanics_With_Engineering_Applications/ch2.ipynb +++ b/Fluid_Mechanics_With_Engineering_Applications/ch2.ipynb diff --git a/Fluid_Mechanics_With_Engineering_Applications/ch3.ipynb b/Fluid_Mechanics_With_Engineering_Applications/ch3.ipynb index 5b3a116e..5b3a116e 100644..100755 --- a/Fluid_Mechanics_With_Engineering_Applications/ch3.ipynb +++ b/Fluid_Mechanics_With_Engineering_Applications/ch3.ipynb diff --git a/Fluid_Mechanics_With_Engineering_Applications/ch4.ipynb b/Fluid_Mechanics_With_Engineering_Applications/ch4.ipynb index 1aeaf24f..1aeaf24f 100644..100755 --- a/Fluid_Mechanics_With_Engineering_Applications/ch4.ipynb +++ b/Fluid_Mechanics_With_Engineering_Applications/ch4.ipynb diff --git a/Fluid_Mechanics_With_Engineering_Applications/ch6.ipynb b/Fluid_Mechanics_With_Engineering_Applications/ch6.ipynb index 6137e1dc..6137e1dc 100644..100755 --- a/Fluid_Mechanics_With_Engineering_Applications/ch6.ipynb +++ b/Fluid_Mechanics_With_Engineering_Applications/ch6.ipynb diff --git a/Fluid_Mechanics_With_Engineering_Applications/ch7.ipynb b/Fluid_Mechanics_With_Engineering_Applications/ch7.ipynb index 7716aa43..7716aa43 100644..100755 --- a/Fluid_Mechanics_With_Engineering_Applications/ch7.ipynb +++ b/Fluid_Mechanics_With_Engineering_Applications/ch7.ipynb diff --git a/Fluid_Mechanics_With_Engineering_Applications/ch8.ipynb b/Fluid_Mechanics_With_Engineering_Applications/ch8.ipynb index 03491869..03491869 100644..100755 --- a/Fluid_Mechanics_With_Engineering_Applications/ch8.ipynb +++ b/Fluid_Mechanics_With_Engineering_Applications/ch8.ipynb diff --git a/Fluid_Mechanics_With_Engineering_Applications/ch9.ipynb b/Fluid_Mechanics_With_Engineering_Applications/ch9.ipynb index 569ffde1..569ffde1 100644..100755 --- a/Fluid_Mechanics_With_Engineering_Applications/ch9.ipynb +++ b/Fluid_Mechanics_With_Engineering_Applications/ch9.ipynb diff --git a/Fluid_Mechanics_With_Engineering_Applications/screenshots/15ImpulseTurbines.png b/Fluid_Mechanics_With_Engineering_Applications/screenshots/15ImpulseTurbines.png Binary files differindex bf44e2d4..bf44e2d4 100644..100755 --- a/Fluid_Mechanics_With_Engineering_Applications/screenshots/15ImpulseTurbines.png +++ b/Fluid_Mechanics_With_Engineering_Applications/screenshots/15ImpulseTurbines.png diff --git a/Fluid_Mechanics_With_Engineering_Applications/screenshots/1PropertiesOfFluids.png b/Fluid_Mechanics_With_Engineering_Applications/screenshots/1PropertiesOfFluids.png Binary files differindex da69b6c0..da69b6c0 100644..100755 --- a/Fluid_Mechanics_With_Engineering_Applications/screenshots/1PropertiesOfFluids.png +++ b/Fluid_Mechanics_With_Engineering_Applications/screenshots/1PropertiesOfFluids.png diff --git a/Fluid_Mechanics_With_Engineering_Applications/screenshots/8.png b/Fluid_Mechanics_With_Engineering_Applications/screenshots/8.png Binary files differindex 21921d45..21921d45 100644..100755 --- a/Fluid_Mechanics_With_Engineering_Applications/screenshots/8.png +++ b/Fluid_Mechanics_With_Engineering_Applications/screenshots/8.png diff --git a/Fluid_mechanics/Chapter_10.ipynb b/Fluid_mechanics/Chapter_10.ipynb new file mode 100755 index 00000000..bdfb09f7 --- /dev/null +++ b/Fluid_mechanics/Chapter_10.ipynb @@ -0,0 +1,234 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:8ebaaa4d9fc694c6b4303418dc1faf3eef2d83f1637b122e018c6c5eac0aba66"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 10 - Dynamic lift"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2a - Pg 427"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the max. theoretical propulsive force\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "vel=50. #mph\n",
+ "w=240. #rpm\n",
+ "r0=3. #ft\n",
+ "L=30. #ft\n",
+ "rho=0.00230 #slug/ft^2\n",
+ "theta=30*math.pi/180. #radians\n",
+ "#calculations\n",
+ "V=vel*5280./3600.\n",
+ "T=2*math.pi*r0*r0 *w*2*math.pi/60.\n",
+ "Fl=rho*V*T*L\n",
+ "F=r0*Fl*math.cos(theta)\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Max. theoretical porpulsive force =\",F,\"lb\")\n",
+ "print '%s' %(\"The answers are a bit different from textbook due to rounding off error\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Max. theoretical porpulsive force = 18683 lb\n",
+ "The answers are a bit different from textbook due to rounding off error\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2b - Pg 428"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the force required for the operation\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "vel=50. #mph\n",
+ "w=240. #rpm\n",
+ "r0=3. #ft\n",
+ "L=30. #ft\n",
+ "rho=0.00230 #slug/ft^2\n",
+ "theta=30*math.pi/180. #radians\n",
+ "Cl=2\n",
+ "Cd=1\n",
+ "#calculations\n",
+ "vc=r0*w\n",
+ "V=vel*5280./3600.\n",
+ "vr=vc/V\n",
+ "A=2*r0*L\n",
+ "Fl=Cl*A*0.5*rho*V*V \n",
+ "Fd=Cd*A*0.5*rho*V*V\n",
+ "F=r0*(Fl*math.cos(theta) + Fd*math.sin(theta))\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Force required =\",F,\"lb\")\n",
+ "print '%s' %(\"The answers are a bit different from textbook due to rounding off error\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Force required = 7454 lb\n",
+ "The answers are a bit different from textbook due to rounding off error\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3a - Pg 432"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the boundary circulation\n",
+ "#Initialization of variables\n",
+ "W=7500 #pounds\n",
+ "rho=0.00230\n",
+ "V=175*5280/3600 #ft/s\n",
+ "B=50\n",
+ "#calculations\n",
+ "T=W/(rho*V*B)\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Boundary circulation =\",T,\"ft^2/s\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Boundary circulation = 254 ft^2/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3b - Pg 433"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the horsepower required for the operation\n",
+ "#Initialization of variables\n",
+ "W=7500. #pounds\n",
+ "rho=0.00230\n",
+ "V=175*5280./3600. #ft/s\n",
+ "B=50.\n",
+ "A=350. #ft^2\n",
+ "#calculations\n",
+ "Cl=W/(A*0.5*rho*V*V)\n",
+ "Cd=0.03\n",
+ "Fd=Cd*A*0.5*rho*V*V \n",
+ "hp=Fd*V/550.\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Horsepower required =\",hp,\"hp\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Horsepower required = 371 hp\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4 - Pg 437"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the horsepower required for the operation\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "Fl=7500. #pounds\n",
+ "rho=0.00230\n",
+ "V=175*5280./3600. #ft/s\n",
+ "B=50\n",
+ "A=350 #ft^2\n",
+ "#calculations\n",
+ "Vi=2*Fl/(math.pi*rho*V*B*B)\n",
+ "Cl=Fl/(A*0.5*rho*V*V)\n",
+ "Cdi=Cl*Vi/(V)\n",
+ "Fdi=Cdi*A*0.5*rho*V*V\n",
+ "hp=Fdi*V/550\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Horsepower required =\",hp,\"hp\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Horsepower required = 44.1 hp\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Fluid_mechanics/Chapter_11.ipynb b/Fluid_mechanics/Chapter_11.ipynb new file mode 100755 index 00000000..ec13c1a6 --- /dev/null +++ b/Fluid_mechanics/Chapter_11.ipynb @@ -0,0 +1,485 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:525b51e826bc42c9a4490de8234c350df60c3a09744a8e35af1f480f12f531bc"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 11 - Flow of liquids in open channels"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1a - Pg 454"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the discharge using darcy equation\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "rho=1.94 #slugs/ft^3\n",
+ "mu=2.34e-5 #lb-sec/ft^2\n",
+ "y=5 #ft\n",
+ "T=25 #ft\n",
+ "d=10 #ft\n",
+ "slope=3./2. \n",
+ "g=32.2 #ft/s^2\n",
+ "S=0.001\n",
+ "#calculations\n",
+ "A=y*d+ 2*0.5*y*(slope*y)\n",
+ "WP=d+ 2*math.sqrt(3*3 +2*2) /2 *y\n",
+ "R=A/WP\n",
+ "e=0.01 #ft\n",
+ "rr=2*R/e\n",
+ "f=0.019\n",
+ "C=math.sqrt(8*g/f)\n",
+ "V=C*math.sqrt(R*S)\n",
+ "Q=V*A\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Discharge using Darcy equation =\",Q,\"ft^3/s\")\n",
+ "print '%s' %(\"The answer is a bit different due to rounding off error in textbook\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Discharge using Darcy equation = 569.3 ft^3/s\n",
+ "The answer is a bit different due to rounding off error in textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1b - Pg 453"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the discharge using kutter ganguillet method\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "rho=1.94 #slugs/ft^3\n",
+ "mu=2.34e-5 #lb-sec/ft^2\n",
+ "y=5 #ft\n",
+ "T=25 #ft\n",
+ "d=10 #ft\n",
+ "slope=3./2. \n",
+ "g=32.2 #ft/s^2\n",
+ "S=0.001\n",
+ "n=0.017\n",
+ "#calculations\n",
+ "A=y*d+ 2*0.5*y*(slope*y)\n",
+ "WP=d+ 2*math.sqrt(3*3 +2*2) /2 *y\n",
+ "R=A/WP\n",
+ "e=0.01 #ft\n",
+ "rr=2*R/e\n",
+ "f=0.019\n",
+ "C=(41.65 + 0.00281/S + 1.811/n)/(1+( 41.65 + 0.00281/S)*n/math.sqrt(R))\n",
+ "V=C*math.sqrt(R*S)\n",
+ "Q=V*A\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Discharge using kutter ganguillet formula =\",Q,\" ft^3/s\")\n",
+ "print '%s' %(\"The answer is a bit different due to rounding off error in textbook\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Discharge using kutter ganguillet formula = 517.0 ft^3/s\n",
+ "The answer is a bit different due to rounding off error in textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1c - Pg 455"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the discharge using bazin formula\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "rho=1.94 #slugs/ft^3\n",
+ "mu=2.34e-5 #lb-sec/ft^2\n",
+ "y=5. #ft\n",
+ "T=25. #ft\n",
+ "d=10. #ft\n",
+ "slope=3./2.\n",
+ "g=32.2 #ft/s^2\n",
+ "S=0.001\n",
+ "m=0.21\n",
+ "#calculations\n",
+ "A=y*d+ 2*0.5*y*(slope*y)\n",
+ "WP=d+ 2*math.sqrt(3*3 +2*2) /2 *y\n",
+ "R=A/WP\n",
+ "e=0.01 #ft\n",
+ "rr=2*R/e\n",
+ "f=0.019\n",
+ "C=157.6 /(1+ m/math.sqrt(R))\n",
+ "V=C*math.sqrt(R*S)\n",
+ "Q=V*A\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Discharge using bazin formula =\",Q,\" ft^3/s\")\n",
+ "print '%s' %(\"The answer is a bit different due to rounding off error in textbook\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Discharge using bazin formula = 688.7 ft^3/s\n",
+ "The answer is a bit different due to rounding off error in textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1d - Pg 456"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the discharge using darcy equation\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "rho=1.94 #slugs/ft^3\n",
+ "mu=2.34e-5 #lb-sec/ft^2\n",
+ "y=5. #ft\n",
+ "T=25. #ft\n",
+ "d=10. #ft\n",
+ "slope=3./2. \n",
+ "g=32.2 #ft/s^2\n",
+ "S=0.001\n",
+ "n=0.017\n",
+ "#calculations\n",
+ "A=y*d+ 2*0.5*y*(slope*y)\n",
+ "WP=d+ 2*math.sqrt(3*3 +2*2) /2 *y\n",
+ "R=A/WP\n",
+ "e=0.01 #ft\n",
+ "rr=2*R/e\n",
+ "f=0.019\n",
+ "C=1.486*math.pow(R,(1./6.)) /n\n",
+ "V=C*math.sqrt(R*S)\n",
+ "Q=V*A\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Discharge using Darcy equation =\",Q,\"ft^3/s\")\n",
+ "print '%s' %(\"The answer is a bit different due to rounding off error in textbook\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Discharge using Darcy equation = 516.6 ft^3/s\n",
+ "The answer is a bit different due to rounding off error in textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1e - Pg 456"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the froude number\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "rho=1.94 #slugs/ft^3\n",
+ "mu=2.34e-5 #lb-sec/ft^2\n",
+ "y=5. #ft\n",
+ "T=25. #ft\n",
+ "d=10. #ft\n",
+ "slope=3./2. \n",
+ "g=32.2 #ft/s^2\n",
+ "S=0.001\n",
+ "n=0.017\n",
+ "#calculations\n",
+ "A=y*d+ 2*0.5*y*(slope*y)\n",
+ "WP=d+ 2*math.sqrt(3*3 +2*2) /2 *y\n",
+ "R=A/WP\n",
+ "e=0.01 #ft\n",
+ "rr=2*R/e\n",
+ "f=0.019\n",
+ "C=(41.65 + 0.00281/S + 1.811/n)/(1+( 41.65 + 0.00281/S)*n/math.sqrt(R))\n",
+ "V=C*math.sqrt(R*S)\n",
+ "T=d+ 2*(slope*y)\n",
+ "yh=A/T\n",
+ "Nf=V/(math.sqrt(g*yh))\n",
+ "#results\n",
+ "print '%s %.2f' %(\"froude number = \",Nf)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "froude number = 0.56\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1f - Pg 456"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the critical depth\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "rho=1.94 #slugs/ft^3\n",
+ "mu=2.34e-5 #lb-sec/ft^2\n",
+ "y=5. #ft\n",
+ "T=25. #ft\n",
+ "d=10. #ft\n",
+ "slope=3./2. \n",
+ "g=32.2 #ft/s^2\n",
+ "S=0.001\n",
+ "n=0.017\n",
+ "#calculations\n",
+ "A=y*d+ 2*0.5*y*(slope*y)\n",
+ "WP=d+ 2*math.sqrt(3*3 +2*2) /2 *y\n",
+ "R=A/WP\n",
+ "e=0.01 #ft\n",
+ "rr=2*R/e\n",
+ "f=0.019\n",
+ "C=(41.65 + 0.00281/S + 1.811/n)/(1+( 41.65 + 0.00281/S)*n/math.sqrt(R))\n",
+ "V=C*math.sqrt(R*S)\n",
+ "Q=V*A\n",
+ "T=d+ 2*(slope*y)\n",
+ "yh=A/T\n",
+ "yc=2.88 #ft\n",
+ "#results\n",
+ "print '%s' %(\"yc is obtained using trial and error method\")\n",
+ "print '%s %.2f %s' %(\"Critical depth =\",yc,\"ft\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "yc is obtained using trial and error method\n",
+ "Critical depth = 2.88 ft\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 459"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the minimum scale ratio\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "Re=4000.\n",
+ "rho=1.94 #slugs/ft^3\n",
+ "vm=5.91 #ft/s\n",
+ "mu=3.24e-5 #ft-lb/s^2\n",
+ "Rm=3.12 #ft\n",
+ "#calculations\n",
+ "lam3=Re*mu/(vm*4*Rm*rho)\n",
+ "lam=math.pow(lam3,(2./3.))\n",
+ "#results\n",
+ "print '%s %.2e' %(\"Minimum scale ratio = \",lam)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Minimum scale ratio = 9.36e-03\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 462"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the discharge, depth of the channel, froude numbers and also the force applied\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "yc=2. #ft\n",
+ "g=32.2 #ft/s^2\n",
+ "d=10. #ft\n",
+ "gam=62.4\n",
+ "rho=1.94\n",
+ "B=10. #ft\n",
+ "#calculations\n",
+ "Vc=math.sqrt(g*yc)\n",
+ "Ac=yc*d\n",
+ "Q=Vc*Ac\n",
+ "y1=5.88 #ft\n",
+ "y2=0.88 #ft\n",
+ "V1=2.73 #ft/s\n",
+ "V2=18.25 #ft/s\n",
+ "Nf1=0.198\n",
+ "Nf2=3.43\n",
+ "F= 0.5*gam*y1*y1 *B - 0.5*gam*y2*y2 *B - Q*rho*V2 +Q*rho*V1\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Discharge in the channel =\",Q,\"ft^3/s\")\n",
+ "print '%s %.2f %s %.2f %s' %(\"\\n Depth of the channel at upstream and downstream =\",y1,\"ft and\",y2, \"ft\")\n",
+ "print '%s %.3f %s %.3f' %(\"\\n froude numbers at upstream and downstream =\",Nf1,\" and \",Nf2)\n",
+ "print '%s %d %s' %(\"\\n Force applied =\",F,\"lb\")\n",
+ "print '%s' %(\"The answers are a bit different from textbook due to rounding off error\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Discharge in the channel = 160.5 ft^3/s\n",
+ "\n",
+ " Depth of the channel at upstream and downstream = 5.88 ft and 0.88 ft\n",
+ "\n",
+ " froude numbers at upstream and downstream = 0.198 and 3.430\n",
+ "\n",
+ " Force applied = 5713 lb\n",
+ "The answers are a bit different from textbook due to rounding off error\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4 - Pg 470"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the distance from vena contracta and also the total distance\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "S0=0.0009\n",
+ "n=0.018\n",
+ "w=20 #ft\n",
+ "d=0.5 #ft\n",
+ "Q=400 #ft^3/s\n",
+ "g=32.2 #ft/s^2\n",
+ "#calculations\n",
+ "y2=4 #ft\n",
+ "V2=Q/(w*y2)\n",
+ "Nf2=V2/math.sqrt(g*y2)\n",
+ "yr=0.5*(math.sqrt(1+ 8*Nf2*Nf2) -1)\n",
+ "y1=yr*y2\n",
+ "L1=32.5\n",
+ "L2=37.1 \n",
+ "L3=51.4\n",
+ "L=L1+L2+L3\n",
+ "#results\n",
+ "print '%s %.1f %s %.2f %s' %(\"distance from vena contracta =\",y2,\"ft and\",y1,\"ft\")\n",
+ "print '%s %.1f %s' %(\"\\n Total distance =\",L,\" ft\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "distance from vena contracta = 4.0 ft and 1.20 ft\n",
+ "\n",
+ " Total distance = 121.0 ft\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Fluid_mechanics/Chapter_2.ipynb b/Fluid_mechanics/Chapter_2.ipynb new file mode 100755 index 00000000..f518cad4 --- /dev/null +++ b/Fluid_mechanics/Chapter_2.ipynb @@ -0,0 +1,406 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:8249f270a6314fb49f84df63266820d87dfa51fe64fed0b9dd11afa539cb500b"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 2 - Fluid Statics"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 10"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the final pressure and specific weight of the gas\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "gam=0.0765 #lb/ft^3\n",
+ "p=14.7 #psia\n",
+ "dz=10560. #ft\n",
+ "#calculations\n",
+ "pg=p*144./gam\n",
+ "p2=p*math.exp(-dz/pg)\n",
+ "gam2=p2/p*gam\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Final pressure =\",p2,\"psia\")\n",
+ "print '%s %.4f %s' %(\"\\n Final specific weight =\",gam2,\"lb/ft^3\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Final pressure = 10.04 psia\n",
+ "\n",
+ " Final specific weight = 0.0522 lb/ft^3\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 12"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the final pressure and specific weight\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "gam=0.0765 #lb/ft^3\n",
+ "p=14.7 #psia\n",
+ "dz=10560. #ft\n",
+ "n=1.235\n",
+ "#calculations\n",
+ "pg=p*144./gam\n",
+ "p2=p*math.pow((1- dz/pg *(n-1)/n),(n/(n-1)))\n",
+ "gam2=math.pow((p2/p),(1/n)) *gam\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Final pressure =\",p2,\"psia\")\n",
+ "print '%s %.4f %s' %(\"\\n Final specific weight =\",gam2,\"lb/ft^3\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Final pressure = 9.89 psia\n",
+ "\n",
+ " Final specific weight = 0.0555 lb/ft^3\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 16"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the absolute pressure\n",
+ "#Initialization of variables\n",
+ "pb=28.5 #in mercury\n",
+ "d=13.6 #g/cc\n",
+ "gam=62.4\n",
+ "pobs=-4. #psi\n",
+ "#calculations\n",
+ "patm=pb/12. *gam*d/144.\n",
+ "pabs=patm+pobs\n",
+ "P=pabs*144./gam\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Absolute pressure =\",pabs,\"psia\")\n",
+ "print '%s %.1f %s' %(\"\\n Absolute pressure in feet of water =\",P,\"ft of water\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Absolute pressure = 10.0 psia\n",
+ "\n",
+ " Absolute pressure in feet of water = 23.1 ft of water\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4 - Pg 18"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the pressure gauge at B and also the absolute pressure of air\n",
+ "#Initialization of variables\n",
+ "pb=28. #in mercury\n",
+ "d=13.6 #g/cc\n",
+ "gam=62.4\n",
+ "xm=15. #in\n",
+ "xw=10. #in\n",
+ "patm=28. #in\n",
+ "#calculations\n",
+ "pB=-xm/12 *gam/144 *d + xw*gam/144\n",
+ "pair=patm/12 *gam/144 *d - xm/12 *gam/144 *d\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"The pressure gauge at B indicates a reading of\",-pB,\"psi vacuum\")\n",
+ "print '%s %.2f %s' %(\"\\n Absolute pressure of Air =\",pair,\"psia\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The pressure gauge at B indicates a reading of 3.03 psi vacuum\n",
+ "\n",
+ " Absolute pressure of Air = 6.38 psia\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5 - Pg 20"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the pressure difference and also compare the pressures at A and B\n",
+ "#Initialization of variables\n",
+ "pb=28.5 #in mercury\n",
+ "d=13.6 #g/cc\n",
+ "gam=62.4\n",
+ "xm=10. #in\n",
+ "xw=2. #ft\n",
+ "#calculations\n",
+ "dp= xw*gam/144 - xm/12 *gam/144 + xm/12 *gam/144 *d\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Pressure difference =\",dp,\"psi\")\n",
+ "if dp>0:\n",
+ " print '%s' %(\"\\n Pressure at A is greater than that at B\")\n",
+ "elif dp==0:\n",
+ " print '%s' %(\"\\n Pressure at both A and B are equal\")\n",
+ "else:\n",
+ " print '%s' %(\"\\n Pressure at A is less than that at B\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressure difference = 5.42 psi\n",
+ "\n",
+ " Pressure at A is greater than that at B\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6 - Pg 24"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the magnitude of total force, vertical and horiontal locations of the total force.\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "import scipy\n",
+ "from scipy import integrate\n",
+ "gam=62.4\n",
+ "x1=4. #ft\n",
+ "x2=6. #ft\n",
+ "y1=6. #ft\n",
+ "z=8. #ft\n",
+ "dy=1. #ft\n",
+ "angle=60.*math.pi/180. #radians\n",
+ "#calculations\n",
+ "A1=x1*x2\n",
+ "A2=1/2. *y1*y1\n",
+ "yc = (A1*(x1+x2+dy) + A2*(x1+x2))/(A1+A2)\n",
+ "hc=yc*math.sin(angle)\n",
+ "F=hc*gam*(A1+A2)\n",
+ "ic1=1/12. *x1*y1*y1*y1\n",
+ "ic2=1/36. *y1*x2*x2*x2\n",
+ "ad1=A1*(x1+x2+dy-yc)*(x1+x2+dy-yc)\n",
+ "ad2=A2*(x1+x2-yc)*(x1+x2-yc)\n",
+ "It=ic1+ic2+ad1+ad2\n",
+ "ydc=It/(yc*(A1+A2))\n",
+ "def momen(u):\n",
+ " m= gam*math.sin(angle) *(2*x1+u)*0.5*(x2-u)*(y1-u)\n",
+ " return m;\n",
+ "\n",
+ "MED, err =scipy.integrate.quad( momen,0,y1)\n",
+ "FEDC=gam*math.sin(angle) *A2*(x1+x2)\n",
+ "xed=MED/FEDC\n",
+ "xp= (A1*2*(x1+x2+dy) + (x1+x2)*(A2)*(x1+xed))/(A1*(x1+x2+dy) + A2*(x1+x2))\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Magnitude of total force =\",F,\"lb\")\n",
+ "print '%s %.3f %s' %(\"\\n Vertical location of force =\",ydc,\"ft\")\n",
+ "print '%s %.2f %s' %(\"\\n Horizontal location of force =\",xp,\"ft from AB\")\n",
+ "print '%s' %(\"\\n Direction of force is perpendicular to the plane surface\")\n",
+ "print '%s' %(\"The answers are a bit different from textbook due to rounding off error\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Magnitude of total force = 23993 lb\n",
+ "\n",
+ " Vertical location of force = 0.266 ft\n",
+ "\n",
+ " Horizontal location of force = 3.58 ft from AB\n",
+ "\n",
+ " Direction of force is perpendicular to the plane surface\n",
+ "The answers are a bit different from textbook due to rounding off error\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7 - Pg 27"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the magnitude of force and the horizontal distance from line of action of Fv\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "gam=62.4\n",
+ "z=10. #ft\n",
+ "z2=5. #ft\n",
+ "z3=4.25 #ft\n",
+ "p=2. #psig\n",
+ "#calculations\n",
+ "h=p*144./gam\n",
+ "Av=z*z\n",
+ "Fh=gam*(z+h)*Av\n",
+ "hpc=1/12. *z*z*z*z /((h+z)*z*z)\n",
+ "Fv=gam*(z2+h) *z*z + gam*math.pi/4. *z*z *z\n",
+ "xp= (gam*(z2+h) *z*z *z2 + gam*math.pi/4. *z*z *z*z3)/(Fv)\n",
+ "F=math.sqrt(Fh*Fh + Fv*Fv)\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Magnitude of force =\",F,\"lb\")\n",
+ "print '%s %.2f %s' %(\"\\n horizontal distance from line of action of Fv =\",xp,\"ft from AG\")\n",
+ "print '%s' %(\"The answers are a bit different from textbook due to rounding off error\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Magnitude of force = 142127 lb\n",
+ "\n",
+ " horizontal distance from line of action of Fv = 4.66 ft from AG\n",
+ "The answers are a bit different from textbook due to rounding off error\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 8 - Pg 33"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate whether the barge is stable and also find the location of the metacenter\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "gam=0.0765 #lb/ft^3\n",
+ "l=40. #ft\n",
+ "w=16. #ft\n",
+ "d=8. #ft\n",
+ "z=6. #ft\n",
+ "BG=1. #ft\n",
+ "#calculations\n",
+ "I=1/12. *l*w*w*w\n",
+ "V=l*w*z\n",
+ "IVG=I/V - BG\n",
+ "MB=I/V\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"I/V -BG =\",IVG,\"ft \")\n",
+ "if IVG >0:\n",
+ " print '%s' %(\"\\n Barge is stable\")\n",
+ "else:\n",
+ " print '%s' %(\"\\n The barge is unstable\")\n",
+ "\n",
+ "print '%s %.2f %s' %(\"\\n Location of metacenter =\",MB,\"ft above the center of buoyancy \")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "I/V -BG = 2.56 ft \n",
+ "\n",
+ " Barge is stable\n",
+ "\n",
+ " Location of metacenter = 3.56 ft above the center of buoyancy \n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Fluid_mechanics/Chapter_3.ipynb b/Fluid_mechanics/Chapter_3.ipynb new file mode 100755 index 00000000..8d368fbf --- /dev/null +++ b/Fluid_mechanics/Chapter_3.ipynb @@ -0,0 +1,105 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:dee9d655eeb9028db41fd96e05f9acf5955fd88886936fffc7d4e9aa14bb4a71"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 3 - Fluid Kinematics"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 52"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the mean velocity of flow at both the sections\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "gam=0.0765 #lb/ft^3\n",
+ "Q=100. #ft^3/sec\n",
+ "d1=2.5 #ft\n",
+ "d2=9. #in\n",
+ "l=12. #ft\n",
+ "#calculations\n",
+ "A1=math.pi/4. *d1*d1\n",
+ "V1=Q/A1\n",
+ "A2=math.pi*l*d2/12.\n",
+ "V2=Q/A2\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Mean velocity of flow at section 1 =\",V1,\"ft/sec\")\n",
+ "print '%s %.2f %s' %(\"\\n Mean velocity of flow at section 2 =\",V2,\"ft/sec\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mean velocity of flow at section 1 = 20.4 ft/sec\n",
+ "\n",
+ " Mean velocity of flow at section 2 = 3.54 ft/sec\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5 - Pg 60"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the horizontal and vertical components of velocity\n",
+ "#Initialization of variables\n",
+ "x=3. \n",
+ "y=1.\n",
+ "#calculations\n",
+ "u=-3*y*y\n",
+ "v=-6*x\n",
+ "#results\n",
+ "print '%s %d' %(\"Horizontal component of velocity = \",u)\n",
+ "print '%s %d' %(\"\\n vertical component of velocity = \",v)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Horizontal component of velocity = -3\n",
+ "\n",
+ " vertical component of velocity = -18\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Fluid_mechanics/Chapter_4.ipynb b/Fluid_mechanics/Chapter_4.ipynb new file mode 100755 index 00000000..49f2ce7e --- /dev/null +++ b/Fluid_mechanics/Chapter_4.ipynb @@ -0,0 +1,777 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:bf4ed226827aaf378bd6d43d8ae5845adf36d75f20c124d2087db252462cf40c"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 4 - Fluid Dynamics"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 79"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate dp/ds at both upper and lower ends\n",
+ "#Initialization of variables\n",
+ "rho=1.5 #g/cc\n",
+ "g=32.2 #ft/s^2\n",
+ "dzds=-0.5\n",
+ "x1=0\n",
+ "x2=3\n",
+ "#calculations\n",
+ "def func(s):\n",
+ " dpds=-rho*g*dzds - rho*(3+9*s)*9\n",
+ " return dpds\n",
+ "\n",
+ "r1=func(x1)\n",
+ "r2=func(x2)\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"At the upper end, dp/ds =\",r1,\"lb/ft^2 per foot\")\n",
+ "print '%s %.1f %s' %(\"\\n At the lower end, dp/ds =\",r2,\"lb/ft^2 per foot\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "At the upper end, dp/ds = -16.3 lb/ft^2 per foot\n",
+ "\n",
+ " At the lower end, dp/ds = -380.9 lb/ft^2 per foot\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 80"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the pressure difference between the two points\n",
+ "#Initialization of variables\n",
+ "g=32.2 #ft/s^2\n",
+ "v1=3. #ft/s\n",
+ "z1=1.5 #ft\n",
+ "rho=1.5 #g/cc\n",
+ "z2=0\n",
+ "v2=30. #ft/s\n",
+ "#calculations\n",
+ "dp= rho*(v2*v2 /2. - g*z1 +g*z2 - v1*v1 /2.)\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"pressure difference =\",dp,\"lb/ft^2\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "pressure difference = 595.8 lb/ft^2\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 85"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the net power transferred\n",
+ "#Initialization of variables\n",
+ "pd=15. #psia\n",
+ "rhod=0.005#slug/ft^3\n",
+ "pi=150. #psia\n",
+ "rhoi=0.03 #slug/ft^3\n",
+ "dz=-25. #ft\n",
+ "vd=1000. #ft/s\n",
+ "vi=100. #ft/s\n",
+ "ud=200. #Btu/slug\n",
+ "ui=250. #Btu/slug\n",
+ "g=32.2 #ft/s^2\n",
+ "J=778.\n",
+ "uff=5. #ft/s\n",
+ "Q=50. #Btu/sec\n",
+ "#calculations\n",
+ "pr=pd/rhod*144. - pi/rhoi *144.\n",
+ "zr=g*(dz)\n",
+ "vr=(vd*vd -vi*vi)/2.\n",
+ "ur=(ud-ui)*J\n",
+ "jeh=J*Q*g/uff\n",
+ "gem=pr+zr+vr+ur+jeh\n",
+ "power=gem*uff/g\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Power transferred =\",power,\"ft-lb/sec\")\n",
+ "print '%s' %(\"The answers are a bit different from textbook due to rounding off error\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Power transferred = 64877 ft-lb/sec\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4 - Pg 89"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the kinetic energy correction factor\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "import scipy\n",
+ "from scipy import integrate\n",
+ "r0=1. \n",
+ "ri=0.\n",
+ "#calculations\n",
+ "def func1(y):\n",
+ " v= 2*math.pow(y,(1./7.)) *(y-1)\n",
+ " return v\n",
+ "\n",
+ "V,err=scipy.integrate.quad(func1,ri,r0)\n",
+ "def func2(y):\n",
+ " alpha= 1/ (math.pi*V*V*V) *2*math.pi *math.pow((y),(3./7.)) *(y-1) \n",
+ " return alpha\n",
+ "\n",
+ "a2,err2=scipy.integrate.quad(func2,ri,r0)\n",
+ "#results\n",
+ "print '%s %.2f' %(\"Kinetic energy correction factor = \",a2)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Kinetic energy correction factor = 1.06\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5a - Pg 92"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the pressure at the lower end if friction is neglected\n",
+ "#Initialization of variables\n",
+ "gam=62.4\n",
+ "pu=40. #psia\n",
+ "zu=25. #ft\n",
+ "vu=8. #ft/s\n",
+ "g=32.2 #ft/s^2\n",
+ "vl=8. #ft/s\n",
+ "zl=0 #ft\n",
+ "#calculations\n",
+ "pl= gam*(pu*144. /gam +zu-zl+ (vu*vu -vl*vl)/(2*g))/144.\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Pressure at the lower end if friction is neglected =\",pl,\"psig\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressure at the lower end if friction is neglected = 50.83 psig\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5b - Pg 92"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the pressure at the lower end if friction is not neglected\n",
+ "#Initialization of variables\n",
+ "hl=5.\n",
+ "gam=62.4\n",
+ "pu=40. #psia\n",
+ "zu=25. #ft\n",
+ "vu=8. #ft/s\n",
+ "g=32.2 #ft/s^2\n",
+ "vl=8. #ft/s\n",
+ "zl=0 #ft\n",
+ "#calculations\n",
+ "pl= gam*(pu*144. /gam +zu-zl-hl+ (vu*vu -vl*vl)/(2*g))/144.\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Pressure at the lower end if friction is neglected =\",pl,\"psig\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressure at the lower end if friction is neglected = 48.67 psig\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6a - Pg 94"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the discharge flow rate.\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "gam=62.4\n",
+ "pa=0\n",
+ "za=15. #ft\n",
+ "va=0\n",
+ "pg=0\n",
+ "zg=0\n",
+ "g=32.2 #ft/s^2\n",
+ "dg=2. #in\n",
+ "#calculations\n",
+ "vg= math.sqrt(2*g*(pa/gam +za+va*va /(2*g) -pg/gam - zg))\n",
+ "Ag=math.pi/4. *(dg/12.)*(dg/12.)\n",
+ "Q=Ag*vg\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"discharge =\",Q,\"ft^3/sec\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "discharge = 0.68 ft^3/sec\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6b - Pg 95"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the pressure at the points C,D,E and F\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "gam=62.4\n",
+ "pa=0\n",
+ "za=15. #ft\n",
+ "va=0\n",
+ "pg=0\n",
+ "zg=0\n",
+ "g=32.2 #ft/s^2\n",
+ "d=4. #in\n",
+ "dg=2. #in\n",
+ "zd=25. #ft\n",
+ "#calculations\n",
+ "vg= math.sqrt(2*g*(pa/gam +za+va*va /(2*g) -pg/gam - zg))\n",
+ "Ag=math.pi/4. *(dg/12.)*(dg/12.)\n",
+ "Q=Ag*vg\n",
+ "A=math.pi/4. *(d/12.)*(d/12.)\n",
+ "v4=Q/A\n",
+ "pc=-v4*v4 *gam/(2*g*144.)\n",
+ "pgd= za-zd - v4*v4 /(2*g)\n",
+ "pd=pgd*gam/144.\n",
+ "pe=-v4*v4 *gam/(2*g*144.)\n",
+ "pfg= za- v4*v4 /(2*g)\n",
+ "pf=pfg*gam/144.\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Pressure at C =\",pc,\" psig\")\n",
+ "print '%s %.2f %s' %(\"\\n Pressure at D =\",pd,\" psig\")\n",
+ "print '%s %.2f %s' %(\"\\n Pressure at E =\",pe,\" psig\")\n",
+ "print '%s %.2f %s' %(\"\\n Pressure at F =\",pf,\" psig\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressure at C = -0.41 psig\n",
+ "\n",
+ " Pressure at D = -4.74 psig\n",
+ "\n",
+ " Pressure at E = -0.41 psig\n",
+ "\n",
+ " Pressure at F = 6.09 psig\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7 - Pg 97"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the time required\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "import scipy\n",
+ "from scipy import integrate\n",
+ "d1=6. #ft\n",
+ "d2=3. #in\n",
+ "pa=2. #ft\n",
+ "d=13.6 \n",
+ "sg=0.75\n",
+ "h1=5. #sec\n",
+ "h2=3. #sec\n",
+ "g=32.2 #ft/s^2\n",
+ "#calculations\n",
+ "pag=pa/12. *d/sg\n",
+ "def func(h):\n",
+ " time= -d1*d1 /(d2/12.)/(d2/12.) /(math.sqrt(2*g)) *math.pow((pag+h),(-0.5))\n",
+ " return time\n",
+ "ti,err=scipy.integrate.quad(func,h1,h2)\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Time required =\",ti,\" sec\")\n",
+ "print '%s' %(\"The answers are a bit different from textbook due to rounding off error\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Time required = 54.3 sec\n",
+ "The answers are a bit different from textbook due to rounding off error\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 8 - Pg 100"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the rate of flow \n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "x=12. #ft\n",
+ "angle=30.*math.pi/180. #degrees\n",
+ "g=32.2 #ft/s^2\n",
+ "z=-2. #ft\n",
+ "d=2. #in\n",
+ "#calculations\n",
+ "vj= x/math.cos(angle) *math.sqrt(g/(2*(x*math.tan(angle) -z)))\n",
+ "Q=math.pi/4. *(d/12.)*(d/12.) *vj\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Rate of flow =\",Q,\" ft^3/s\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Rate of flow = 0.41 ft^3/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9 - Pg 103"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the net discharge\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "x=10. #in of mercury\n",
+ "sg=13.6 #g/cc\n",
+ "d1=8. #in\n",
+ "d2=4. #in\n",
+ "g=32.2 #ft/s^2\n",
+ "#calculations\n",
+ "vdiff=x/12. *sg- x/12.\n",
+ "Vts=vdiff/(1-math.pow((d2/d1),4))\n",
+ "Vt=math.sqrt(2*g*Vts)\n",
+ "Q=Vt*math.pi/4. *(d2/12.)*(d2/12.)\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Discharge =\",Q,\"ft^3/s\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Discharge = 2.34 ft^3/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11 - Pg 107"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the horsepower input of the test pump\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "gam=62.4\n",
+ "ds=12. #in\n",
+ "dd=10. #in\n",
+ "Q=4. #ft^3/s\n",
+ "pd=40. #psia\n",
+ "ps=-6. #psia\n",
+ "zd=5. #ft\n",
+ "zs=0\n",
+ "g=32.2 #ft/s^2\n",
+ "#calculations\n",
+ "vs=Q/(math.pi/4. *math.pow((ds/12.),2))\n",
+ "vd=Q/(math.pi/4. *math.pow((dd/12.),2))\n",
+ "emp = (pd-ps)*144./gam + zd-zs + (vd*vd - vs*vs)/(2*g)\n",
+ "hpp=emp*Q*gam/550.\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Horsepower input of the test pump =\",hpp,\"hp\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Horsepower input of the test pump = 50.6 hp\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12 - Pg 117"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the horizontal and vertical components of force\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "d1=12. #in\n",
+ "d2=8. #in\n",
+ "v1=15. #ft/s\n",
+ "p1=12. #psig\n",
+ "p2=5.85 #psig\n",
+ "rho=1.94 #ft^3/slug\n",
+ "angle=60.*math.pi/180. #degrees\n",
+ "#calculations\n",
+ "Q=math.pi/4. *(d1/12.)*(d1/12.) *v1\n",
+ "v2=Q/(math.pi/4. *(d2/12.)*(d2/12.))\n",
+ "pa1=p1*math.pi/4. *(d1)*(d1)\n",
+ "pa2=p2*math.pi/4. *(d2)*(d2)\n",
+ "qv1=rho*Q*v1\n",
+ "qv2=rho*Q*v2\n",
+ "Fx=pa1+qv1+ math.cos(angle)*(pa2+qv2)\n",
+ "Fy=math.sin(angle)*(pa2+qv2)\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Horizontal component of force =\",Fx,\"lb\")\n",
+ "print '%s %d %s' %(\"\\n Vertical component of force =\",Fy,\"lb\")\n",
+ "print '%s' %(\"The answers are a bit different from textbook due to rounding off error\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Horizontal component of force = 2232 lb\n",
+ "\n",
+ " Vertical component of force = 922 lb\n",
+ "The answers are a bit different from textbook due to rounding off error\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14a - Pg 127"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the exit velocity of the pump\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "de=4. #in\n",
+ "T=1000. #lb\n",
+ "g=32.2 #ft/s^2\n",
+ "vele=8.5 #lb/s\n",
+ "pe=16.5 #psia\n",
+ "pa=14.7 #psia\n",
+ "#calculations\n",
+ "Ae=math.pi/4. *de*de\n",
+ "Ve= (T-(pe-pa)*Ae)*g/vele\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Exit velocity =\",Ve,\"ft/s\")\n",
+ "print '%s' %(\"The answers are a bit different from textbook due to rounding off error\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Exit velocity = 3702 ft/s\n",
+ "The answers are a bit different from textbook due to rounding off error\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14b - Pg 127"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the thrust in the pipe\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "de=4. #in\n",
+ "T=1000. #lb\n",
+ "g=32.2 #ft/s^2\n",
+ "vele=8.5 #lb/s\n",
+ "pe=16.5 #psia\n",
+ "pa=14.7 #psia\n",
+ "pa2=1 #psia\n",
+ "#calculations\n",
+ "Ae=math.pi/4 *de*de\n",
+ "Ve= (T-(pe-pa)*Ae)*g/vele\n",
+ "T2=vele/g *Ve + (pe-pa2)*Ae\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Thrust =\",T2,\"lb\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Thrust = 1172 lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 16 - Pg 133"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the downstream depth and horsepower dissipation\n",
+ "#Initialization of variables\n",
+ "q=240. #ft^3/sec/ft\n",
+ "v1=60. #ft/s\n",
+ "gam=62.4 \n",
+ "rho=1.94 #slug/ft^3\n",
+ "g=32.2 #ft/s^2\n",
+ "#calculations\n",
+ "y1=q/v1\n",
+ "v2=8.6 #ft/s\n",
+ "y2=28. #ft\n",
+ "hl= (y1+ v1*v1 /(2*g)) - (y2+ v2*v2 /(2*g))\n",
+ "hpp=hl*q*gam/550.\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Downstream depth =\",y2,\"ft\")\n",
+ "print '%s %d %s' %(\"\\n Horsepower dissipation =\",hpp,\"hp per foot width\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Downstream depth = 28.0 ft\n",
+ "\n",
+ " Horsepower dissipation = 837 hp per foot width\n"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17 - Pg 137"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the acceleration required\n",
+ "#Initialization of variables\n",
+ "dh=3. #in\n",
+ "L=12. #in\n",
+ "g=32.2 #ft/s^2\n",
+ "#calculations\n",
+ "a=dh/L *g\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Acceleration =\",a,\" ft/s^2\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Acceleration = 8.05 ft/s^2\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Fluid_mechanics/Chapter_5.ipynb b/Fluid_mechanics/Chapter_5.ipynb new file mode 100755 index 00000000..3591a061 --- /dev/null +++ b/Fluid_mechanics/Chapter_5.ipynb @@ -0,0 +1,244 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:0e0637dca57f500478b778450aaaee0067016f8da4c67cbada5f889a38068276"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 5 - Fluid viscosity and flow of real fluids"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 187"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the viscosity of oil\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "m=1155. #lb\n",
+ "gam=62.4\n",
+ "spg=0.93\n",
+ "t=3*60. #sec\n",
+ "d=1./6. #in\n",
+ "L=20. #ft\n",
+ "dp=2.5 #psi\n",
+ "#calculations\n",
+ "Q=m/(t*spg*gam)\n",
+ "A=math.pi/4. *d*d\n",
+ "V=Q/A\n",
+ "mu=dp*d*d *144./(32.*V*L)\n",
+ "#results\n",
+ "print '%s %.4f %s' %(\"Viscosity of oil =\",mu,\"lb-sec/ft^2\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Viscosity of oil = 0.0031 lb-sec/ft^2\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4 - Pg 187"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the values of alpha and beta\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "import scipy\n",
+ "from scipy import integrate\n",
+ "g=32.2\n",
+ "gam=62.4\n",
+ "r0=1.\n",
+ "#calculations\n",
+ "def func1(r):\n",
+ " al=8./math.pow(r0,8) *math.pow((r0*r0-r*r),3) *(2*r)\n",
+ " return al\n",
+ "alpha,err=scipy.integrate.quad(func1,0,r0)\n",
+ "def func2(r):\n",
+ " a2=4/math.pow(r0,6) *math.pow((r0*r0 -r*r),2) *(2*r)\n",
+ " return a2\n",
+ "bet,err2=scipy.integrate.quad(func2,0,r0)\n",
+ "#results\n",
+ "print '%s %d' %(\"Alpha = \",alpha)\n",
+ "print '%s %.2f' %(\"\\n beta = \",bet)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Alpha = 2\n",
+ "\n",
+ " beta = 1.33\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ " Example 5a - Pg 188"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the direction of flow and the loss of energy\n",
+ "#Initialization of variables\n",
+ "spg=0.93\n",
+ "mu=3.1e-3 #lb-sec/ft^2\n",
+ "gam=62.4\n",
+ "z=50. #m\n",
+ "p1=60. #psia\n",
+ "p2=25. #psia\n",
+ "#calculations\n",
+ "p1g=144.*p1\n",
+ "p2g=144.*p2 + spg*gam*z\n",
+ "dp=p1g-p2g\n",
+ "#results\n",
+ "if p1g>p2g:\n",
+ " print '%s' %(\"The flow is in upward direction\")\n",
+ "else:\n",
+ " print '%s' %(\"The flow is in downward direction\")\n",
+ "\n",
+ "print '%s %d %s' %(\"\\n Energy loss=\",dp,\"ft-lb/ft^3\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The flow is in upward direction\n",
+ "\n",
+ " Energy loss= 2138 ft-lb/ft^3\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5b - Pg 189"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the flow rate\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "hl=2140. #ft-lb/ft^3\n",
+ "spg=0.93\n",
+ "mu=3.1e-3 #lb-sec/ft^2\n",
+ "gam=62.4\n",
+ "z=50. #m\n",
+ "p1=60. #psia\n",
+ "p2=25. #psia\n",
+ "d=1. #in\n",
+ "#calculations\n",
+ "V= hl*(d/12.)*(d/12.) /(32*mu*z)\n",
+ "Q=V*math.pi/4. *(d/12.)*(d/12.)\n",
+ "Q2=Q*7.48*60.\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Flow rate =\",Q2,\"gal/min\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Flow rate = 7.33 gal/min\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7 - Pg 194"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the flow in model\n",
+ "#Initialization of variables\n",
+ "muw=2.04e-5 #lb-sec/ft^2\n",
+ "rhow=1.94 #slugs/ft^3\n",
+ "mua=3.74e-7 #lb-sec/ft^2\n",
+ "rhoa=0.00237 #slug/ft^3\n",
+ "Qw=200. #gal/min\n",
+ "Lr=5.\n",
+ "#calculations\n",
+ "Qa=Qw*Lr *(rhow/rhoa)*(mua/muw)\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Flow in model =\",Qa,\"gal/min\")\n",
+ "print '%s' %(\"The answers are a bit different from textbook due to rounding off error\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Flow in model = 15007 gal/min\n",
+ "The answers are a bit different from textbook due to rounding off error\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Fluid_mechanics/Chapter_6.ipynb b/Fluid_mechanics/Chapter_6.ipynb new file mode 100755 index 00000000..424aea7a --- /dev/null +++ b/Fluid_mechanics/Chapter_6.ipynb @@ -0,0 +1,118 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:27148bed2cbad8357ddcdc8e0ee434be3797107d2f692797bdf3a1e36c7e8d1a"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 6 - Dimensional analysis and model similitude"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 230"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the flow rate of water and pressure drop\n",
+ "#Initialization of variables\n",
+ "dg=0.5 #in\n",
+ "dw=12. #in\n",
+ "rhog=0.022 #slug/ft^3\n",
+ "rhow=1.94 #slug/ft^3\n",
+ "muw=2.34e-5 #lb-sec/ft^2\n",
+ "mug=3.50e-7 #lb-sec/ft^2\n",
+ "Qg=0.15 #ft^3/s\n",
+ "dpg=100. #lb/ft^2\n",
+ "#calculations\n",
+ "Vr=dg/dw *rhog/rhow *muw/mug\n",
+ "Qr=Vr*dw*dw /dg/dg\n",
+ "Qw=Qr*Qg\n",
+ "dpr=rhow/rhog *(Vr)*Vr\n",
+ "dpw=dpr*dpg\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Flow rate of water =\",Qw,\"ft^3/s\")\n",
+ "print '%s %.1f %s' %(\"\\n Pressure drop =\",dpw,\"lb/ft^2\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Flow rate of water = 2.73 ft^3/s\n",
+ "\n",
+ " Pressure drop = 8.8 lb/ft^2\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4 - Pg 231"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the velocity ratio, time ratio, acceleration ratio and force ratio.\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "Lr=1./10.\n",
+ "rhom=2.\n",
+ "rhop=1.94\n",
+ "#calculations\n",
+ "Vr=math.sqrt(Lr)\n",
+ "Tr=Lr/Vr\n",
+ "ar=Vr/Tr\n",
+ "Fr=rhom/rhop *ar*Lr*Lr*Lr\n",
+ "#results\n",
+ "print '%s %.4f' %(\"Velocity ratio = \",Vr)\n",
+ "print '%s %.4f' %(\"\\n Time ratio = \",Tr)\n",
+ "print '%s %d' %(\"\\n Acceleration ratio = \",ar)\n",
+ "print '%s %.6f' %(\"\\n Force ratio = \",Fr)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Velocity ratio = 0.3162\n",
+ "\n",
+ " Time ratio = 0.3162\n",
+ "\n",
+ " Acceleration ratio = 1\n",
+ "\n",
+ " Force ratio = 0.001031\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Fluid_mechanics/Chapter_7.ipynb b/Fluid_mechanics/Chapter_7.ipynb new file mode 100755 index 00000000..26326ec8 --- /dev/null +++ b/Fluid_mechanics/Chapter_7.ipynb @@ -0,0 +1,874 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:a67e8661ab863efba6ffe8486e33132e755624949690c50df8ae76d2d928ed8b"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 7 - Flow of incompressible fluids in closed conduits"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1a - Pg 241"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the reynolds number of the flow\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "z1=2. #ft\n",
+ "Q=0.1 #gal/min\n",
+ "alpha=2.\n",
+ "g=32.2 #ft/s^2\n",
+ "L=4. #ft\n",
+ "D=1./96. #ft\n",
+ "#calculations\n",
+ "v2=Q/(7.48*60* math.pi/4. *D*D)\n",
+ "hl=z1-alpha*v2*v2 /(2*g)\n",
+ "Nr=64./hl *L/D *v2*v2 /(2*g)\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Reynolds number is\",Nr,\".Hence the flow is laminar\")\n",
+ "print '%s' %(\"The answers are a bit different from textbook due to rounding off error\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Reynolds number is 1459 .Hence the flow is laminar\n",
+ "The answers are a bit different from textbook due to rounding off error\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1b - Pg 242"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the kinematic viscosity\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "z1=2 #ft\n",
+ "Q=0.1 #gal/min\n",
+ "alpha=2.\n",
+ "g=32.2 #ft/s^2\n",
+ "L=4. #ft\n",
+ "D=1./96. #ft\n",
+ "#calculations\n",
+ "v2=Q/(7.48*60* math.pi/4. *D*D)\n",
+ "hl=z1-alpha*v2*v2/(2*g)\n",
+ "Nr=64./hl *L/D *v2*v2 /(2*g)\n",
+ "mu=v2*D/Nr\n",
+ "#results\n",
+ "print '%s %.2e %s' %(\"Kinematic viscosity =\",mu,\"ft^2/s\")\n",
+ "print '%s' %(\"The answers are a bit different from textbook due to rounding off error\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Kinematic viscosity = 1.87e-05 ft^2/s\n",
+ "The answers are a bit different from textbook due to rounding off error\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exaple 1c - Pg 242"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the theoretical entrance transistion length\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "z1=2. #ft\n",
+ "Q=0.1 #gal/min\n",
+ "alpha=2.\n",
+ "g=32.2 #ft/s^2\n",
+ "L=4. #ft\n",
+ "D=1./96. #ft\n",
+ "#calculations\n",
+ "v2=Q/(7.48*60* math.pi/4. *D*D)\n",
+ "hl=z1-alpha*v2*v2 /(2*g)\n",
+ "Nr=64./hl *L/D *v2*v2 /(2*g)\n",
+ "Ld=0.058*Nr*D\n",
+ "#results\n",
+ "print '%s %.3f %s' %(\"Theoretical entrance transistion length =\",Ld,\"ft\")\n",
+ "print '%s' %(\"The answers are a bit different from textbook due to rounding off error\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Theoretical entrance transistion length = 0.882 ft\n",
+ "The answers are a bit different from textbook due to rounding off error\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 246"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the horsepower required for the motor\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "Q=350. #gal/min\n",
+ "D=6. #in\n",
+ "rho=0.84\n",
+ "gam=62.4\n",
+ "g=32.2 #ft/s^2\n",
+ "mu=9.2e-5 #lb-sec/ft^2\n",
+ "L=5280. #ft\n",
+ "#calculations\n",
+ "V=Q/(7.48*60*math.pi/4. *math.pow((D/12),2))\n",
+ "Nr=V*D/12 *rho*gam/g /mu\n",
+ "f=0.3164/math.pow((Nr),0.25)\n",
+ "hl=f*L*12/D *V*V /(2*g)\n",
+ "hp=hl*gam*Q*rho/(550*7.48*60.)\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Horsepower required =\",hp,\"hp/mile\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Horsepower required = 4.44 hp/mile\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 250"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the values of the coefficients alpha and beta\n",
+ "#Initialization of variables\n",
+ "n=7.\n",
+ "import math\n",
+ "#calculations\n",
+ "alpha= math.pow((n+1),3) *math.pow((2*n+1),3) /(4*math.pow(n,4) *(n+3)*(2*n+3))\n",
+ "bet=math.pow((n+1),2) *math.pow((2*n+1),2) /(2*n*n *(n+2)*(2*n+2))\n",
+ "#results\n",
+ "print '%s %.2f' %(\"alpha = \",alpha)\n",
+ "print '%s %.2f' %(\"\\n beta = \",bet)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "alpha = 1.06\n",
+ "\n",
+ " beta = 1.02\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5 - Pg 252"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the mass flow rate and horsepower input of the fan\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "spg=0.84\n",
+ "z=1. #in\n",
+ "gam=62.4\n",
+ "patm=14.7 #psia\n",
+ "T=459.6+85 #R\n",
+ "R=53.3\n",
+ "g=32.2 #ft/s^2\n",
+ "D=3. #ft\n",
+ "mu=3.88e-7 #lb-sec/ft^2\n",
+ "#calculations\n",
+ "dp=spg*z/12. *gam\n",
+ "rho=patm*144. /(R*T*g)\n",
+ "umax=math.sqrt(2*dp/rho)\n",
+ "V=0.8*umax\n",
+ "Nr=V*D*rho/mu\n",
+ "V2=0.875*umax\n",
+ "mass=rho*math.pi/4. *D*D *V2\n",
+ "emf=V2*V2 /(2*g)\n",
+ "hp=emf*mass*g/550.\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Mass flow rate =\",mass,\"slug/sec\")\n",
+ "print '%s %.2f %s' %(\"\\n Horsepower input of the fan =\",hp,\"hp\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mass flow rate = 0.87 slug/sec\n",
+ "\n",
+ " Horsepower input of the fan = 2.34 hp\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7a - Pg 266"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the velocity using several equations listed above\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "D=36. #in\n",
+ "rho=0.00226 #slug/ft^3\n",
+ "mu=3.88e-7 #lb-sec/ft^2\n",
+ "umax=62.2 #ft/s\n",
+ "V=54.5 #ft/s\n",
+ "Nr=9.5e5\n",
+ "r0=18. #in\n",
+ "r=12. #in\n",
+ "n=8.8\n",
+ "k=0.4\n",
+ "#calculations\n",
+ "f=0.0032 + 0.221/(math.pow(Nr,0.237))\n",
+ "Vs=math.sqrt(f/8) *V\n",
+ "y=r0-r\n",
+ "u1=umax*math.pow((y/r0),(1/n))\n",
+ "u2=umax+ 2.5*Vs*math.log(y/r0)\n",
+ "u3=umax+ Vs/k *(math.sqrt(1-y/r0) + math.log(1-math.sqrt(1-y/r0)))\n",
+ "u4=Vs*(5.5+ 5.75*math.log10(Vs*y/12 *rho/mu))\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Using equation 7-13, velocity =\",u1,\" ft/s\")\n",
+ "print '%s %.1f %s' %(\"\\n Using equation 7-18, velocity =\",u2,\" ft/s\")\n",
+ "print '%s %.1f %s' %(\"\\n Using equation 7-25, velocity =\",u3,\" ft/s\")\n",
+ "print '%s %.1f %s' %(\"\\n Using equation 7-34a, velocity =\",u4,\" ft/s\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Using equation 7-13, velocity = 54.9 ft/s\n",
+ "\n",
+ " Using equation 7-18, velocity = 56.5 ft/s\n",
+ "\n",
+ " Using equation 7-25, velocity = 57.6 ft/s\n",
+ "\n",
+ " Using equation 7-34a, velocity = 56.7 ft/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7b - Pg 266"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the outer edge buffer zone distance and also its thickness\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "D=36. #in\n",
+ "rho=0.00226 #slug/ft^3\n",
+ "mu=3.88e-7 #lb-sec/ft^2\n",
+ "umax=62.2 #ft/s\n",
+ "V=54.5 #ft/s\n",
+ "Nr=9.5e5\n",
+ "r0=18. #in\n",
+ "r=12. #in\n",
+ "n=8.8\n",
+ "k=0.4\n",
+ "#calculations\n",
+ "f=0.0032 + 0.221/(math.pow(Nr,0.237))\n",
+ "Vs=math.sqrt(f/8.) *V\n",
+ "y=r0-r\n",
+ "delta1=D*5*math.sqrt(8) /(Nr*math.sqrt(f))\n",
+ "vss=70.\n",
+ "thick=13*delta1\n",
+ "#results\n",
+ "print '%s %d' %(\"Outer edge of buffer zone is at \",vss)\n",
+ "print '%s %.4f %s' %(\"\\n Thickness of buffer zone =\",thick,\"in\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Outer edge of buffer zone is at 70\n",
+ "\n",
+ " Thickness of buffer zone = 0.0645 in\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7c - Pg 266"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the velocity using the given equations\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "D=36. #in\n",
+ "rho=0.00226 #slug/ft^3\n",
+ "mu=3.88e-7 #lb-sec/ft^2\n",
+ "umax=62.2 #ft/s\n",
+ "V=54.5 #ft/s\n",
+ "Nr=9.5e5\n",
+ "r0=18. #in\n",
+ "r=12. #in\n",
+ "n=8.8\n",
+ "k=0.4\n",
+ "#calculations\n",
+ "f=0.0032 + 0.221/(math.pow(Nr,0.237))\n",
+ "Vs=math.sqrt(f/8) *V\n",
+ "delta1=D*5*math.sqrt(8.) /(Nr*math.sqrt(f))\n",
+ "y=delta1\n",
+ "u2=Vs*Vs *delta1/12. *rho/mu\n",
+ "u1=62.2 *math.pow((delta1/18.),(1/n))\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"using equation 7-13, velocity =\",u1,\"ft/s\")\n",
+ "print '%s %.1f %s' %(\"\\n using equation 7-30, velocity =\",u2,\"ft/s\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "using equation 7-13, velocity = 24.5 ft/s\n",
+ "\n",
+ " using equation 7-30, velocity = 10.4 ft/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7d - Pg 266"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the velocity using the listed equations\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "D=36. #in\n",
+ "rho=0.00226 #slug/ft^3\n",
+ "mu=3.88e-7 #lb-sec/ft^2\n",
+ "umax=62.2 #ft/s\n",
+ "V=54.5 #ft/s\n",
+ "Nr=9.5e5\n",
+ "r0=18. #in\n",
+ "r=12. #in\n",
+ "n=8.8\n",
+ "k=0.4\n",
+ "#calculations\n",
+ "f=0.0032 + 0.221/(math.pow(Nr,0.237))\n",
+ "Vs=math.sqrt(f/8.) *V\n",
+ "delta1=D*5*math.sqrt(8.) /(Nr*math.sqrt(f))\n",
+ "y=14*delta1\n",
+ "u2=62.2*math.pow((y/18.),(1/n))\n",
+ "u3=Vs*(5.50 + 5.75*math.log10(Vs*y/12 *rho/mu))\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Using equation 7-13, velocity =\",u2,\"ft/s\")\n",
+ "print '%s %.1f %s' %(\"\\n using equation 7-34a, velocity =\",u3,\"ft/s\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Using equation 7-13, velocity = 33.1 ft/s\n",
+ "\n",
+ " using equation 7-34a, velocity = 33.5 ft/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7e - Pg 266"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the shearing stress using both the equations\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "D=36. #in\n",
+ "rho=0.00226 #slug/ft^3\n",
+ "mu=3.88e-7 #lb-sec/ft^2\n",
+ "umax=62.2 #ft/s\n",
+ "V=54.5 #ft/s\n",
+ "Nr=9.5e+5\n",
+ "r0=18. #in\n",
+ "r=12. #in\n",
+ "n=8.8\n",
+ "k=0.4\n",
+ "#calculations\n",
+ "f=0.0032 + 0.221/(math.pow(Nr,0.237))\n",
+ "Vs=math.sqrt(f/8.) *V\n",
+ "delta1=D*5*math.sqrt(8.) /(Nr*math.sqrt(f))\n",
+ "u2=Vs*Vs *delta1/12. *rho/mu\n",
+ "T0=rho*Vs*Vs\n",
+ "T02=mu*u2/delta1 *12.\n",
+ "#results\n",
+ "print '%s %.5f %s' %(\"Using equation 7-9a, shearing stress =\",T0,\"lb/ft^2\")\n",
+ "print '%s %.5f %s' %(\"\\n Using equation 7-28, shearing stress =\",T02,\"lb/ft^2\")\n",
+ "print '%s' %(\"The answers are a bit different due to rounding off error in textbook\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Using equation 7-9a, shearing stress = 0.00979 lb/ft^2\n",
+ "\n",
+ " Using equation 7-28, shearing stress = 0.00979 lb/ft^2\n",
+ "The answers are a bit different due to rounding off error in textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 8 - Pg 273"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the required velocity\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "umax=62.2 #ft/s\n",
+ "r0=18. #in\n",
+ "e=0.0696 #in\n",
+ "r=6. #in\n",
+ "#calculations\n",
+ "Vs=umax/(8.5 + 5.75*math.log10(r0/e))\n",
+ "u=Vs*(8.5 + 5.75*math.log10(r/e))\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Velocity =\",u,\"ft/s\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Velocity = 54.6 ft/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9 - Pg 277"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the flow rate and roughness factor\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "d=8. #in\n",
+ "V=3.65 #ft/s\n",
+ "u1=4.75 #ft/s\n",
+ "r0=4. #in\n",
+ "#calculations\n",
+ "f=0.0449\n",
+ "Q=V*math.pi/4. *math.pow((d/12),2)\n",
+ "Vs=(u1-V)/3.75\n",
+ "r0e=math.pow(10,((u1/Vs - 8.5)/5.75))\n",
+ "e=r0/r0e\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Flow rate =\",Q,\"ft^3/s\")\n",
+ "print '%s %.3f %s' %(\"\\n roughness factor =\",e,\"in\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Flow rate = 1.27 ft^3/s\n",
+ "\n",
+ " roughness factor = 0.184 in\n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10 - Pg 285"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the pressure difference per foot of horizontal pipe\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "e0=0.00085 #ft\n",
+ "alpha=0.25 #/year\n",
+ "t=15. #years\n",
+ "r0=3. #in\n",
+ "Q=500. #gal/min\n",
+ "d=6. #in\n",
+ "mu=2.04e-5 #lb-sec/ft^2\n",
+ "rho=1.94 #slugs/ft^3\n",
+ "g=32.2 #ft/s^2\n",
+ "L=1. #ft\n",
+ "gam=62.4\n",
+ "#calculations\n",
+ "e15=e0*(1+ alpha*t)\n",
+ "ratio=r0/(12.*e15)\n",
+ "V=Q/(7.48*60*math.pi/4. *math.pow((d/12),2))\n",
+ "Nr=V*d*rho/(mu*12)\n",
+ "f=0.036\n",
+ "hl=f*L/(d/12.) *V*V /(2*g)\n",
+ "dp=gam*hl\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Pressure difference =\",dp,\"lb/ft^2 per foot of horizontal pipe\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressure difference = 2.25 lb/ft^2 per foot of horizontal pipe\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11 - Pg 289"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the horsepower required\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "d2=4. #in\n",
+ "d1=3. #in\n",
+ "e=0.0005 #ft\n",
+ "mu=3.75e-5 #lb-sec/ft^2\n",
+ "rho=1.94 #slugs/ft^3\n",
+ "Q=100. #gal/min\n",
+ "L=100. #ft\n",
+ "g=32.2 #ft/s^2\n",
+ "gam=62.4\n",
+ "#calculations\n",
+ "A=math.pi/4. *(math.pow((d2/12),2) -math.pow((d1/12),2))\n",
+ "WP=math.pi*(d1+d2)/12.\n",
+ "R=A/WP\n",
+ "RR= 2*R/e\n",
+ "V= Q/(7.48*60*A)\n",
+ "Nr=V*4*R*rho/mu\n",
+ "f=0.035\n",
+ "hl=f*L/(4*R) *V*V /(2*g)\n",
+ "hp=hl*Q/(7.48*60) *gam/550.\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"horsepower required =\",hp,\" hp/100 ft\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "horsepower required = 0.56 hp/100 ft\n"
+ ]
+ }
+ ],
+ "prompt_number": 16
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12 - Pg 296"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the discharge flow\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "p1=25. #psig\n",
+ "p2=20. #psig\n",
+ "d1=18. #in\n",
+ "d2=12. #in\n",
+ "Cl=0.25\n",
+ "gam=62.4\n",
+ "g=32.2 #ft/s^2\n",
+ "#calculations\n",
+ "Vr=(d2/d1)*(d2/d1)\n",
+ "xv=(p2-p1)*144/gam\n",
+ "V22=xv/(-1-Cl+Vr*Vr) *2*g\n",
+ "V2=math.sqrt(V22)\n",
+ "Q=V2*math.pi/4. *(d2/12.)*(d2/12.)\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Discharge =\",Q,\"ft^3/s\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Discharge = 20.9 ft^3/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13 - Pg 300"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the discharge flow rate\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "V61=10.8 #ft/s\n",
+ "V81=6.05 #ft/s\n",
+ "r0=3 #in\n",
+ "e=0.00015\n",
+ "d1=6. #in\n",
+ "rho=1.94 #slugs/ft^3\n",
+ "mu=2.34e-5 #ft-lb/s^2\n",
+ "#calculations\n",
+ "roe=r0/(12*e)\n",
+ "Nr1=V61*(d1/12.)*rho/mu\n",
+ "f6=0.0165\n",
+ "V6=11.6 #ft/s\n",
+ "V8=6.52 #ft/s\n",
+ "Q=V6*math.pi/4 *(d1/12.)*(d1/12.)\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Discharge =\",Q,\"ft^3/s\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Discharge = 2.28 ft^3/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14 - Pg 302"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the diameter of steel pipe\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "L=1000. #ft\n",
+ "Q=2000/(7.48*60) #ft63/s\n",
+ "g=32.2 #ft/s^2\n",
+ "p=5. #psi/1000 ft\n",
+ "gam=62.4\n",
+ "sp=0.7\n",
+ "f=0.02\n",
+ "r0=0.904/2.\n",
+ "e=0.00015\n",
+ "mu=7e-6 #lb-ft/s^2\n",
+ "L=1000. #ft\n",
+ "#calculations\n",
+ "hl=p*144/(sp*gam)\n",
+ "D5=f*8*L*Q*Q /(math.pi*math.pi *g*hl)\n",
+ "D=math.pow(D5,(1./5.))\n",
+ "Nr=4*Q*sp*gam/(g*(math.pi*D*mu))\n",
+ "f2=0.0145\n",
+ "D5=f2*8*L*Q*Q /(math.pi*math.pi *g*hl)\n",
+ "D1=math.pow(D5,(1./5.))\n",
+ "#results\n",
+ "print '%s %.3f %s' %(\"Diameter of steel pipe =\",D1,\" ft\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Diameter of steel pipe = 0.848 ft\n"
+ ]
+ }
+ ],
+ "prompt_number": 19
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Fluid_mechanics/Chapter_8.ipynb b/Fluid_mechanics/Chapter_8.ipynb new file mode 100755 index 00000000..76c114d3 --- /dev/null +++ b/Fluid_mechanics/Chapter_8.ipynb @@ -0,0 +1,802 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:f292d23876c88421bcfc8b761169402a2885837db02032e303215ae83f2c5cf5"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 8 - Fluid compressibility and incompressible flow"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 323"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the initial and final volumes. Also, calculate the final temperature of the gas\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "pi=14.7 #psia\n",
+ "pf=50. #psia\n",
+ "cp=0.240 #Btu/lb R\n",
+ "cv=0.170 #Btu/lb R\n",
+ "J=778\n",
+ "T=60+459.6 #R\n",
+ "#calculations\n",
+ "R=J*(cp-cv)\n",
+ "k=cp/cv\n",
+ "gam=pi*144./(R*T)\n",
+ "V=1/gam\n",
+ "Vf=V*math.pow((pi/pf),(1/k))\n",
+ "Tf=T*(pf*Vf/(pi*V))\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Initial volume =\",V,\"ft^3\")\n",
+ "print '%s %.2f %s' %(\"\\n Final volume =\",Vf,\"cu ft\")\n",
+ "print '%s %.1f %s' %(\"\\n Final temperature =\",Tf,\" R\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Initial volume = 13.37 ft^3\n",
+ "\n",
+ " Final volume = 5.62 cu ft\n",
+ "\n",
+ " Final temperature = 742.6 R\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 325"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the pressure difference across the pipe\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "ratio=0.99\n",
+ "E=3.19e5 #lb/in^2\n",
+ "#calculations\n",
+ "pd=-E*math.log(ratio)\n",
+ "#ersults\n",
+ "print '%s %d %s' %(\"Pressure difference =\",pd,\"psi\")\n",
+ "print '%s' %(\"The answers are a bit different from textbook due to rounding off error\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressure difference = 3206 psi\n",
+ "The answers are a bit different from textbook due to rounding off error\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 329"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the speed of test plane\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "k=1.4\n",
+ "g=32.2 #ft/s^2\n",
+ "R=53.3 #ft-lb/lb R\n",
+ "T=389.9 #R\n",
+ "Nm=2\n",
+ "#calculations\n",
+ "c=math.sqrt(k*g*R*T)\n",
+ "V=Nm*c*3600/5280.\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Speed of test plane =\",V,\"mph\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Speed of test plane = 1319.9 mph\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4a - Pg 337"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the velocity at section 2\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "T1=584.6 #R\n",
+ "g=32.2 #ft/s^2\n",
+ "k=1.4\n",
+ "R=53.3 #ft-lb/lb R\n",
+ "V1=600 #ft/s\n",
+ "T2=519.6 #R\n",
+ "#calculations\n",
+ "Nm1=V1/(math.sqrt(k*g*R*T1))\n",
+ "Nm22= ((1+ (k-1)/2 *Nm1*Nm1)/(T2/T1) -1)*(2/(k-1))\n",
+ "Nm2=math.sqrt(Nm22)\n",
+ "V2=Nm2*math.sqrt(k*g*R*T2)\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Velocity at section 2 =\",V2,\"ft/s\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Velocity at section 2 = 1068 ft/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4b - Pg 337"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the pressure difference between two stations\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "T1=584.6 #R\n",
+ "g=32.2 #ft/s^2\n",
+ "k=1.4\n",
+ "R=53.3 #ft-lb/lb R\n",
+ "V1=600 #ft/s\n",
+ "T2=519.6 #R\n",
+ "pa=14.7 #psi\n",
+ "p1=50 #psia\n",
+ "#calculations\n",
+ "Nm1=V1/(math.sqrt(k*g*R*T1))\n",
+ "Nm22= ((1+ (k-1)/2 *Nm1*Nm1)/(T2/T1) -1)*(2/(k-1))\n",
+ "Nm2=math.sqrt(Nm22)\n",
+ "pr=math.pow(((1+ (k-1)/2 *Nm1*Nm1)/(1+ (k-1)/2 *Nm2*Nm2)),(k/(k-1)))\n",
+ "p2=pr*(p1+pa)\n",
+ "dp=p1+pa-p2\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Pressure difference between two stations =\",dp,\"psi\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressure difference between two stations = 21.9 psi\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4c - Pg 338"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the area ratio\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "T1=584.6 #R\n",
+ "g=32.2 #ft/s^2\n",
+ "k=1.4\n",
+ "R=53.3 #ft-lb/lb R\n",
+ "V1=600 #ft/s\n",
+ "T2=519.6 #R\n",
+ "#calculations\n",
+ "Nm1=V1/(math.sqrt(k*g*R*T1))\n",
+ "Nm22= ((1+ (k-1)/2 *Nm1*Nm1)/(T2/T1) -1)*(2/(k-1))\n",
+ "Nm2=math.sqrt(Nm22)\n",
+ "Ar= Nm1/Nm2 *math.pow(((1+ (k-1)/2 *Nm2*Nm2)/(1+ (k-1)/2 *Nm1*Nm1)),((k+1)/(2*(k-1))))\n",
+ "#results\n",
+ "print '%s %.3f' %(\"Area ratio = \",Ar)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Area ratio = 0.754\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4d - Pg 338"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the density of air at both the stations\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "T1=584.6 #R\n",
+ "g=32.2 #ft/s^2\n",
+ "k=1.4\n",
+ "R=53.3 #ft-lb/lb R\n",
+ "V1=600 #ft/s\n",
+ "T2=519.6 #R\n",
+ "pa=14.7 #psi\n",
+ "p1=50 #psia\n",
+ "#calculations\n",
+ "Nm1=V1/(math.sqrt(k*g*R*T1))\n",
+ "Nm22= ((1+ (k-1)/2 *Nm1*Nm1)/(T2/T1) -1)*(2/(k-1))\n",
+ "Nm2=math.sqrt(Nm22)\n",
+ "pr=math.pow(((1+ (k-1)/2 *Nm1*Nm1)/(1+ (k-1)/2 *Nm2*Nm2)),(k/(k-1)))\n",
+ "p2=pr*(p1+pa)\n",
+ "rho1=(p1+pa)*144./(g*R*T1)\n",
+ "rho2=p2*144./(g*R*T2)\n",
+ "#results\n",
+ "print '%s %.5f %s' %(\"Density of air at station 1 =\",rho1,\"slug/ft^3\")\n",
+ "print '%s %.5f %s' %(\"\\n Density of air at station 2 =\",rho2,\"slug/ft^3\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Density of air at station 1 = 0.00929 slug/ft^3\n",
+ "\n",
+ " Density of air at station 2 = 0.00692 slug/ft^3\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5 - Pg 345"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the mass rate of air flow\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "p0=19.7 #psia\n",
+ "R=53.3 #lb-ft/lb-R\n",
+ "T0=539.6 #R\n",
+ "g=32.2 #ft/s^2\n",
+ "pa=14.7 #psia\n",
+ "d=1 #in\n",
+ "k=1.4\n",
+ "#calculations\n",
+ "rho0=p0*144/(g*R*T0)\n",
+ "pr=pa/p0\n",
+ "G=math.pi/4 *(d/12.)*(d/12.) *math.pow((2*k/(k-1) *p0*144*rho0),(0.5)) *math.pow((pr),(1/k)) *math.pow((1-math.pow(pr,((k-1)/k))),0.5)\n",
+ "#results\n",
+ "print '%s %.5f %s' %(\"Mass rate of air flow =\",G,\"slug/sec\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mass rate of air flow = 0.00978 slug/sec\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6 - Pg 346"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the mass rate of air flow\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "p0=64.7 #psia\n",
+ "R=53.3 #lb-ft/lb-R\n",
+ "T0=539.6 #R\n",
+ "g=32.2 #ft/s^2\n",
+ "pa=14.7 #psia\n",
+ "d=1. #in\n",
+ "k=1.4\n",
+ "#calculations\n",
+ "rho0=p0*144/(g*R*T0)\n",
+ "pr=pa/p0\n",
+ "G=math.pi/4 *(d/12)*d/12. *math.pow((k*p0*144*rho0),(0.5)) *math.pow((2/(k+1)),((k+1)/(2*(k-1))))\n",
+ "#results\n",
+ "print '%s %.5f %s' %(\"Mass rate of air flow =\",G,\"slug/sec\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mass rate of air flow = 0.03616 slug/sec\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7a - Pg 347"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the weight of air flow through the nozzle\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "k=1.4\n",
+ "R=53.3 #lb-ft/lb R\n",
+ "pe=14.7 #psia\n",
+ "p0=114.7 #psia\n",
+ "T0=524.6 #R\n",
+ "g=32.2 #ft/s^2\n",
+ "d=0.5 #in\n",
+ "#calculations\n",
+ "pr=pe/p0\n",
+ "prcr=0.528\n",
+ "pr=prcr*p0\n",
+ "rho0= p0*144/(g*R*T0)\n",
+ "G=math.pi/4 *(d/12)*d/12. *math.pow((k*p0*144*rho0),(0.5)) *math.pow((2/(k+1)),((k+1)/(2*(k-1))))\n",
+ "Wt=G*g\n",
+ "#results\n",
+ "print '%s %.4f %s' %(\"weight of air flow through the nozzle =\",Wt,\"lb/s\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "weight of air flow through the nozzle = 0.5233 lb/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7b - Pg 348"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the exit Mach number, exit velocity and the exit area\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "k=1.4\n",
+ "R=53.3 #lb-ft/lb R\n",
+ "pe=14.7 #psia\n",
+ "p0=114.7 #psia\n",
+ "T0=524.6 #R\n",
+ "g=32.2 #ft/s^2\n",
+ "d=0.5 #in\n",
+ "Nm1=1.\n",
+ "#calculations\n",
+ "pr=pe/p0\n",
+ "Nme=math.sqrt(2/(k-1) *(math.pow(1./pr,(k-1)/k) -1))\n",
+ "Te=T0/(1+ (k-1)/2 *Nme*Nme)\n",
+ "Ve=Nme*math.sqrt(k*g*R*Te)\n",
+ "At=math.pi/4. *(d)*d\n",
+ "Ae=Nm1/Nme *math.pow(((1+ (k-1)/2 *Nme*Nme)/(1+ (k-1)/2 *Nm1*Nm1)),((k+1)/(2*(k-1)))) *At\n",
+ "#results\n",
+ "print '%s %.2f' %(\"Mach number exit = \",Nme)\n",
+ "print '%s %d %s' %(\"\\n Exit velocity =\",Ve,\"ft/s\")\n",
+ "print '%s %.3f %s' %(\"\\n Exit area =\",Ae,\" in^2\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mach number exit = 2.00\n",
+ "\n",
+ " Exit velocity = 1672 ft/s\n",
+ "\n",
+ " Exit area = 0.331 in^2\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 8a - Pg 349"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the exit mass flow rate, pressure, temperature, velocity and mach number\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "k=1.4\n",
+ "R=53.3 #lb-ft/lb R\n",
+ "p0=100. #psia\n",
+ "T0=534.6 #R\n",
+ "g=32.2 #ft/s^2\n",
+ "d=0.5 #in\n",
+ "Nm1=1.\n",
+ "A=2./144. #ft^2\n",
+ "#calculations\n",
+ "print '%s' %(\"Exit mach number is found using trial and error\")\n",
+ "Nme=2.44\n",
+ "rho0=p0*144/(g*R*T0)\n",
+ "G= A*math.sqrt(k*p0*144*rho0) *math.pow((2/(k+1)),((k+1)/(2*(k-1))))\n",
+ "pe=p0*math.pow((1/(1+(k-1)/2 *Nme*Nme)),(k/(k-1)))\n",
+ "Te=T0/(1+ (k-1)/2 *Nme*Nme)\n",
+ "Ve=Nme*(math.sqrt(k*g*R*Te))\n",
+ "#results\n",
+ "print '%s %.3f %s' %(\"\\n Exit mass flow rate =\",G,\"slug/s\")\n",
+ "print '%s %.2f %s' %(\"\\n Exit pressure =\",pe,\"psia\")\n",
+ "print '%s %.1f %s' %(\"\\n Exit temperature =\",Te,\" R\")\n",
+ "print '%s %d %s' %(\"\\n Exit velocity =\",Ve,\"ft/s\")\n",
+ "print '%s %.2f' %(\"\\n Exit mach number = \",Nme)\n",
+ "print '%s' %(\"The answers are a bit different from textbook due to rounding off error\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Exit mach number is found using trial and error\n",
+ "\n",
+ " Exit mass flow rate = 0.143 slug/s\n",
+ "\n",
+ " Exit pressure = 6.43 psia\n",
+ "\n",
+ " Exit temperature = 244.0 R\n",
+ "\n",
+ " Exit velocity = 1868 ft/s\n",
+ "\n",
+ " Exit mach number = 2.44\n",
+ "The answers are a bit different from textbook due to rounding off error\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 8b - Pg 350"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the exit mass flow rate, pressure, temperature,velocity and mach number\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "k=1.4\n",
+ "R=53.3 #lb-ft/lb R\n",
+ "p0=100. #psia\n",
+ "T0=534.6 #R\n",
+ "g=32.2 #ft/s^2\n",
+ "d=0.5 #in\n",
+ "Nm1=1.\n",
+ "A=2./144. #ft^2\n",
+ "#calculations\n",
+ "print '%s' %(\"Exit mach number is found using trial and error\")\n",
+ "Nme=0.24\n",
+ "rho0=p0*144/(g*R*T0)\n",
+ "G= A*math.sqrt(k*p0*144*rho0) *math.pow((2/(k+1)),((k+1)/(2*(k-1))))\n",
+ "pe=p0*math.pow((1/(1+(k-1)/2 *Nme*Nme)),(k/(k-1)))\n",
+ "Te=T0/(1+ (k-1)/2 *Nme*Nme)\n",
+ "Ve=Nme*(math.sqrt(k*g*R*Te))\n",
+ "#results\n",
+ "print '%s %.3f %s' %(\"\\n Exit mass flow rate =\",G,\"slug/s\")\n",
+ "print '%s %.2f %s' %(\"\\n Exit pressure =\",pe,\"psia\")\n",
+ "print '%s %.1f %s' %(\"\\n Exit temperature =\",Te,\" R\")\n",
+ "print '%s %d %s' %(\"\\n Exit velocity =\",Ve,\"ft/s\")\n",
+ "print '%s %.2f' %(\"\\n Exit mach number = \",Nme)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Exit mach number is found using trial and error\n",
+ "\n",
+ " Exit mass flow rate = 0.143 slug/s\n",
+ "\n",
+ " Exit pressure = 96.07 psia\n",
+ "\n",
+ " Exit temperature = 528.5 R\n",
+ "\n",
+ " Exit velocity = 270 ft/s\n",
+ "\n",
+ " Exit mach number = 0.24\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9 - Pg 355"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the upstream Mach number, pressure, Temperature\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "k=1.4\n",
+ "R=53.3 #lb-ft/lb R\n",
+ "pu=6.43 #psia\n",
+ "Tu=244. #R\n",
+ "Nmu=2.44\n",
+ "#calculations\n",
+ "Nmd = math.sqrt(((k-1)*Nmu*Nmu +2)/(2*k*Nmu*Nmu - (k-1)))\n",
+ "pd=pu*(2*k*Nmu*Nmu - (k-1))/(k+1)\n",
+ "Td=Tu*(2*k*Nmu*Nmu - (k-1))/(k+1) *((k-1)*Nmu*Nmu +2)/((k+1)*Nmu*Nmu)\n",
+ "#results\n",
+ "print '%s %.3f' %(\"Mach number upstream = \",Nmd)\n",
+ "print '%s %.1f %s' %(\"\\n Pressure upstream =\",pd,\"psia\")\n",
+ "print '%s %.1f %s' %(\"\\n Temperature upstream =\",Td,\"R\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mach number upstream = 0.519\n",
+ "\n",
+ " Pressure upstream = 43.6 psia\n",
+ "\n",
+ " Temperature upstream = 507.2 R\n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10 - Pg 359"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the pressure and temperature at section 1\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "k=1.4\n",
+ "R=53.3 #lb-ft/lb R\n",
+ "e=0.0005 #ft\n",
+ "mu=3.77e-7 #lb-sec/ft^2\n",
+ "pe=14.7 #psia\n",
+ "Te=524.6 #R\n",
+ "g=32.2 #ft/s^2\n",
+ "Vi=12.5 #ft/s\n",
+ "l=6. #in\n",
+ "b=8. #in\n",
+ "L=100. #ft\n",
+ "#calculations\n",
+ "rhoe=pe*144/(R*g*Te)\n",
+ "Ve=Vi/(g*rhoe*(l*b/144.))\n",
+ "Nme=Ve/(math.sqrt(k*g*R*Te))\n",
+ "Rd=l*b/(2*(l+b)) /12.\n",
+ "rr=2*R/e\n",
+ "Nr=Ve*4*Rd*rhoe/mu\n",
+ "f=0.019\n",
+ "f2=1/(2*k) *(1/Nme*Nme -1) - (k+1)/(4*k) *math.log((1+ (k-1)/2 *Nme*Nme)/(Nme*Nme *(1+(k-1)/2)))\n",
+ "ff=f*L/(8*Rd) +f2\n",
+ "Nm1=0.305\n",
+ "Tr2=(1+ (k-1)/2 *Nm1*Nm1)/(1+ (k-1/2))\n",
+ "Tre=(1+ (k-1)/2 *Nme*Nme)/(1+ (k-1/2))\n",
+ "pr2=Nm1*math.pow((1+ (k-1)/2 *Nm1*Nm1),(0.5)) /math.pow((1+(k-1)/2),0.5)\n",
+ "pre=Nme*math.pow((1+ (k-1)/2 *Nme*Nme),(0.5)) /math.pow((1+(k-1)/2),0.5)\n",
+ "p1=pe/pr2 *pre\n",
+ "T1=Te/Tr2 *Tre\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Pressure at section 1 =\",p1,\"psia\")\n",
+ "print '%s %.1f %s' %(\"\\n Tempreature at section 1 =\",T1,\"R\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressure at section 1 = 21.5 psia\n",
+ "\n",
+ " Tempreature at section 1 = 535.1 R\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11 - Pg 364"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the limiting pressure and distance in both adiabatic and non-adiabatic cases\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "k=1.4\n",
+ "R=53.3 #lb-ft/lb R\n",
+ "g=32.2 #ft/s^2\n",
+ "T1=534.6 #R\n",
+ "V1=400. #ft/s\n",
+ "p1=350. #psia\n",
+ "f=0.02\n",
+ "D=6./12. #ft\n",
+ "#calculations\n",
+ "Nm1=V1/math.sqrt(k*g*R*T1)\n",
+ "Nm2= 1. /math.sqrt(k)\n",
+ "p2=p1*(Nm1)/Nm2\n",
+ "fl= math.log(Nm1/Nm2) + 1./(2.*k*Nm1*Nm1) *(1- Nm1*Nm1/Nm2*Nm2)\n",
+ "L12=fl*2*D/f\n",
+ "ps=p1*Nm1*math.pow((1+ (k-1)/2 *Nm1*Nm1),0.5) /math.pow((1+(k-1)/2),0.5)\n",
+ "Nm2=1.\n",
+ "fl2= -(k+1)/(4*k) *math.log((1+ (k-1)/2 *Nm1*Nm1)/(Nm1*Nm1 *(1+ (k-1)/2.))) + 1/(2*k*Nm1*Nm1) *(1- Nm1*Nm1 /Nm2*Nm2)\n",
+ "L2=fl2*2*D/f\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Limiting pressure =\",p2,\" psia\")\n",
+ "print '%s %.1f %s' %(\"\\n Distance =\",L12,\" ft\")\n",
+ "print '%s %.1f %s' %(\"\\n Limiting pressure in adiabatic case =\",ps,\" psia\")\n",
+ "print '%s %.1f %s' %(\"\\n Distance required =\",L2,\"ft\")\n",
+ "print '%s' %(\"the answer is a bit different due to rounding of error in textbook\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Limiting pressure = 146.2 psia\n",
+ "\n",
+ " Distance = 81.8 ft\n",
+ "\n",
+ " Limiting pressure in adiabatic case = 114.2 psia\n",
+ "\n",
+ " Distance required = 84.2 ft\n",
+ "the answer is a bit different due to rounding of error in textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 16
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Fluid_mechanics/Chapter_9.ipynb b/Fluid_mechanics/Chapter_9.ipynb new file mode 100755 index 00000000..f131ead9 --- /dev/null +++ b/Fluid_mechanics/Chapter_9.ipynb @@ -0,0 +1,450 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:6e08f75972be45750168908e0258e415f396bd3e7aae6981e62e0a4fd06177dc"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 9 - Fluid flow about immersed bodies"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1a - Pg 389"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the values of Fd\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "import numpy\n",
+ "rho=2.45 #slugs/ft^3\n",
+ "mu=9.2e-3 #lb-sec/ft^2\n",
+ "x=3.\n",
+ "v=3. #ft/s\n",
+ "B=6./12. #ft\n",
+ "L=36./12. #ft\n",
+ "#calculatons\n",
+ "Nr=v*x*rho/mu\n",
+ "y=([1.32, 1.46, 1.328])\n",
+ "Cd = numpy.zeros(len(y))\n",
+ "for i in range (0, len(y)):\n",
+ "\tCd[i]=y[i]*math.pow(Nr,(-0.5))\n",
+ "Fd = numpy.zeros(len(Cd))\n",
+ "for i in range (0, len(y)):\n",
+ "\tFd[i]=2*Cd[i]*B*L*(0.5*rho*v*v)\n",
+ "\n",
+ "#results\n",
+ "print '%s' %(\"Drag on the plates using different formulae blasius, parabola and pohlhauser in order\")\n",
+ "print '%.3f %.3f %.3f' %(Fd[0],Fd[1],Fd[2])"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Drag on the plates using different formulae blasius, parabola and pohlhauser in order\n",
+ "0.892 0.986 0.897\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1b - Pg 390"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calcualte the boundary layer thickness and the shearing thickness\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "import numpy\n",
+ "x=36./12.\n",
+ "rho=2.45 #slugs/ft^3\n",
+ "mu=9.2e-3 #lb-sec/ft^2\n",
+ "v=3. #ft/s\n",
+ "#calculatons\n",
+ "Nr=v*x*rho/mu\n",
+ "z=([4.91, 5.48, 4.65])\n",
+ "x=36./12.\n",
+ "delta = numpy.zeros(len(z))\n",
+ "for i in range (0, len(z)):\n",
+ "\tdelta[i]=z[i] /math.sqrt(Nr) *x\n",
+ "\n",
+ "\n",
+ "f=([0.332, 0.365, 0.322])\n",
+ "T=numpy.zeros(len(f))\n",
+ "for i in range (0,len(f)):\n",
+ "\tT[i]=f[i]*mu*v/x *math.sqrt(Nr)\n",
+ "\n",
+ "#results\n",
+ "print '%s' %(\"Boundary layer thickness = \")\n",
+ "print '%s' %(\"In order of Blasius, parabola and pohlhauser\")\n",
+ "print '%.3f %.3f %.3f' %(delta[0],delta[1],delta[2])\n",
+ "print '%s' %(\"Shearing stress = \")\n",
+ "print '%s' %(\"In order of Blasius, parabola and pohlhauser\")\n",
+ "print '%.3f %.3f %.3f' %(T[0],T[1],T[2])\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Boundary layer thickness = \n",
+ "In order of Blasius, parabola and pohlhauser\n",
+ "0.301 0.336 0.285\n",
+ "Shearing stress = \n",
+ "In order of Blasius, parabola and pohlhauser\n",
+ "0.150 0.164 0.145\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2a - Pg 398"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the total frictional drag and horsepower required\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "e=0.01 #ft\n",
+ "rho=2 #slugs/ft^3\n",
+ "mu=2.6e-5 #lb sec/ft^2\n",
+ "speed=10. #knots\n",
+ "L=250. #ft\n",
+ "A=30000. #ft^2\n",
+ "#calculations\n",
+ "V=speed*1.69\n",
+ "Nrl=V*L*rho/mu\n",
+ "Cdf=1.32 /math.sqrt(Nrl)\n",
+ "Fd=Cdf*A*0.5*rho*V*V\n",
+ "hp=Fd*V/550.\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Total frictional drag =\",Fd,\"lb\")\n",
+ "print '%s %.1f %s' %(\"\\n Horsepower required =\",hp,\"hp\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total frictional drag = 627 lb\n",
+ "\n",
+ " Horsepower required = 19.3 hp\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2b - Pg 397"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the total frictional drag and horsepower required\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "e=0.01 #ft\n",
+ "rho=2 #slugs/ft^3\n",
+ "mu=2.6e-5 #lb sec/ft^2\n",
+ "speed=10 #knots\n",
+ "L=250. #ft\n",
+ "A=30000. #ft^2\n",
+ "#calculations\n",
+ "V=speed*1.69\n",
+ "Nrl=V*L*rho/mu\n",
+ "Cdf=0.074/math.pow(Nrl,0.2) -1700./Nrl\n",
+ "Fd=Cdf*A*0.5*rho*V*V\n",
+ "hp=Fd*V/550.\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Total frictional drag =\",Fd,\"lb\")\n",
+ "print '%s %.1f %s' %(\"\\n Horsepower required =\",hp,\"hp\")\n",
+ "print '%s' %(\"The answer given in textbook is wrong. please use a calculator\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total frictional drag = 12537 lb\n",
+ "\n",
+ " Horsepower required = 385.2 hp\n",
+ "The answer given in textbook is wrong. please use a calculator\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2c - Pg 398"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the total frictional drag and horsepower required\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "e=0.01 #ft\n",
+ "rho=2. #slugs/ft^3\n",
+ "mu=2.6e-5 #lb sec/ft^2\n",
+ "speed=10. #knots\n",
+ "L=250. #ft\n",
+ "A=30000. #ft^2\n",
+ "#calculations\n",
+ "V=speed*1.69\n",
+ "Nrl=V*L*rho/mu\n",
+ "Cdf=1/math.pow((1.89 + 1.62*math.log10(L/e)),(2.5))\n",
+ "Fd=Cdf*A*0.5*rho*V*V\n",
+ "hp=Fd*V/550.\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Total frictional drag =\",Fd,\"lb\")\n",
+ "print '%s %.1f %s' %(\"\\n Horsepower required =\",hp,\"hp\")\n",
+ "print '%s' %(\"The answers are a bit different from textbook due to rounding off error\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total frictional drag = 35117 lb\n",
+ "\n",
+ " Horsepower required = 1079.1 hp\n",
+ "The answers are a bit different from textbook due to rounding off error\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 398"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the drag on the model\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "V=200. #ft/s\n",
+ "L=5. #ft\n",
+ "B=2. #ft\n",
+ "rho=0.00232 #slug/ft^3\n",
+ "mu=3.82e-7 #lb-sec/ft^2\n",
+ "p2=14.815 #psia\n",
+ "pa=14.7 #psia\n",
+ "#calculations\n",
+ "Nr=V*L*rho/mu\n",
+ "Cdf=0.0032\n",
+ "Fdf=Cdf*math.pi*L*B*0.5*rho*V*V\n",
+ "Fd=(p2-pa)*math.pi/4. *(B*12)*(B*12) -Fdf\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Drag on the model =\",Fd,\"lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Drag on the model = 47.36 lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4 - Pg 405"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the velocity of the flow\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "p1=14.7 #psia\n",
+ "z1=3 #ft\n",
+ "gam=62.4\n",
+ "rho=1.94 #slug/ft^3\n",
+ "pa=0.4 #psia\n",
+ "za=1 #ft\n",
+ "#calculations\n",
+ "v3=(pa-p1)*144 + (za-z1)*gam\n",
+ "V=math.sqrt(-v3*2/(3*rho))\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Velocity of flow =\",V,\" ft/s\")\n",
+ "print '%s' %(\"The answer is a bit different due to rounding off error in textbook\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Velocity of flow = 27.4 ft/s\n",
+ "The answer is a bit different due to rounding off error in textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5 - Pg 410"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the horsepower required\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "rpm=60. \n",
+ "rho=2. #slugs/ft^3\n",
+ "mu=3.5e-5 #lb-sec/ft^2\n",
+ "D=4./12. #ft\n",
+ "r=2. #ft\n",
+ "#calcualtions\n",
+ "V=rpm*2*math.pi/60. *2\n",
+ "Nr=V*D*rho/mu\n",
+ "Cd=1.1\n",
+ "Fd=Cd*math.pi/4. *(D)*D *0.5*rho*V*V\n",
+ "T=2*Fd*r\n",
+ "w=rpm*2*math.pi/60.\n",
+ "hp=T*w/550.\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Horsepower required =\",hp,\" hp\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Horsepower required = 0.69 hp\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6 - Pg 414"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the terminal velocity\n",
+ "#Initialization of variables\n",
+ "import math\n",
+ "g=32.2 #ft/s^2\n",
+ "h=60000. #ft\n",
+ "F=2000. #;b\n",
+ "d=3. #ft\n",
+ "rho=0.00231\n",
+ "#calculations\n",
+ "V=math.sqrt(2*g*h)\n",
+ "print '%s' %(\"By trail and error\")\n",
+ "Cd=0.25\n",
+ "Nm=0.87\n",
+ "A=math.pi/4. *d*d\n",
+ "Vt=math.sqrt(2*F/(Cd*A*rho))\n",
+ "#results \n",
+ "print '%s %.1f %s' %(\"terminal velocity =\",Vt,\" ft/s\")\n",
+ "print '%s' %(\"The answers are a bit different from textbook due to rounding off error\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "By trail and error\n",
+ "terminal velocity = 989.9 ft/s\n",
+ "The answers are a bit different from textbook due to rounding off error\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Fluid_mechanics/README.txt b/Fluid_mechanics/README.txt new file mode 100755 index 00000000..fe81edb3 --- /dev/null +++ b/Fluid_mechanics/README.txt @@ -0,0 +1,10 @@ +Contributed By: Jaya Pratyusha Kothuri +Course: btech +College/Institute/Organization: Sri Mittapalli College of Engineering +Department/Designation: Computer Science and Engineering +Book Title: Fluid mechanics +Author: Pao, Richard H F +Publisher: John Wiley, New York +Year of publication: 1961 +Isbn: 0486683567 +Edition: 1
\ No newline at end of file diff --git a/Fluid_mechanics/screenshots/chap2.png b/Fluid_mechanics/screenshots/chap2.png Binary files differnew file mode 100755 index 00000000..c7186e17 --- /dev/null +++ b/Fluid_mechanics/screenshots/chap2.png diff --git a/Fluid_mechanics/screenshots/chap3.png b/Fluid_mechanics/screenshots/chap3.png Binary files differnew file mode 100755 index 00000000..ea5bf942 --- /dev/null +++ b/Fluid_mechanics/screenshots/chap3.png diff --git a/Fluid_mechanics/screenshots/chap4.png b/Fluid_mechanics/screenshots/chap4.png Binary files differnew file mode 100755 index 00000000..440b52f2 --- /dev/null +++ b/Fluid_mechanics/screenshots/chap4.png diff --git a/Mastering_C/chapter1.ipynb b/Mastering_C/chapter1.ipynb index b1a0ed0e..b1a0ed0e 100644..100755 --- a/Mastering_C/chapter1.ipynb +++ b/Mastering_C/chapter1.ipynb diff --git a/Mastering_C/chapter10.ipynb b/Mastering_C/chapter10.ipynb index f65d8afa..f65d8afa 100644..100755 --- a/Mastering_C/chapter10.ipynb +++ b/Mastering_C/chapter10.ipynb diff --git a/Mastering_C/chapter11.ipynb b/Mastering_C/chapter11.ipynb index 9b5d4e2e..9b5d4e2e 100644..100755 --- a/Mastering_C/chapter11.ipynb +++ b/Mastering_C/chapter11.ipynb diff --git a/Mastering_C/chapter12.ipynb b/Mastering_C/chapter12.ipynb index fd18aaec..fd18aaec 100644..100755 --- a/Mastering_C/chapter12.ipynb +++ b/Mastering_C/chapter12.ipynb diff --git a/Mastering_C/chapter15.ipynb b/Mastering_C/chapter15.ipynb index cf449021..cf449021 100644..100755 --- a/Mastering_C/chapter15.ipynb +++ b/Mastering_C/chapter15.ipynb diff --git a/Mastering_C/chapter16.ipynb b/Mastering_C/chapter16.ipynb index e1edaa97..e1edaa97 100644..100755 --- a/Mastering_C/chapter16.ipynb +++ b/Mastering_C/chapter16.ipynb diff --git a/Mastering_C/chapter2.ipynb b/Mastering_C/chapter2.ipynb index 03566b1a..03566b1a 100644..100755 --- a/Mastering_C/chapter2.ipynb +++ b/Mastering_C/chapter2.ipynb diff --git a/Mastering_C/chapter3.ipynb b/Mastering_C/chapter3.ipynb index 9d7fda28..9d7fda28 100644..100755 --- a/Mastering_C/chapter3.ipynb +++ b/Mastering_C/chapter3.ipynb diff --git a/Mastering_C/chapter4.ipynb b/Mastering_C/chapter4.ipynb index fdd2c8c4..fdd2c8c4 100644..100755 --- a/Mastering_C/chapter4.ipynb +++ b/Mastering_C/chapter4.ipynb diff --git a/Mastering_C/chapter5.ipynb b/Mastering_C/chapter5.ipynb index 277c10b6..277c10b6 100644..100755 --- a/Mastering_C/chapter5.ipynb +++ b/Mastering_C/chapter5.ipynb diff --git a/Mastering_C/chapter6.ipynb b/Mastering_C/chapter6.ipynb index 99bf0cd9..99bf0cd9 100644..100755 --- a/Mastering_C/chapter6.ipynb +++ b/Mastering_C/chapter6.ipynb diff --git a/Mastering_C/chapter7.ipynb b/Mastering_C/chapter7.ipynb index e41cbc36..e41cbc36 100644..100755 --- a/Mastering_C/chapter7.ipynb +++ b/Mastering_C/chapter7.ipynb diff --git a/Mastering_C/chapter8.ipynb b/Mastering_C/chapter8.ipynb index b93801ac..b93801ac 100644..100755 --- a/Mastering_C/chapter8.ipynb +++ b/Mastering_C/chapter8.ipynb diff --git a/Mastering_C/chapter9.ipynb b/Mastering_C/chapter9.ipynb index 9eacd97f..9eacd97f 100644..100755 --- a/Mastering_C/chapter9.ipynb +++ b/Mastering_C/chapter9.ipynb diff --git a/Mastering_C/screenshots/interest.png b/Mastering_C/screenshots/interest.png Binary files differindex 1ac244be..1ac244be 100644..100755 --- a/Mastering_C/screenshots/interest.png +++ b/Mastering_C/screenshots/interest.png diff --git a/Mastering_C/screenshots/matrix.png b/Mastering_C/screenshots/matrix.png Binary files differindex 4225f87e..4225f87e 100644..100755 --- a/Mastering_C/screenshots/matrix.png +++ b/Mastering_C/screenshots/matrix.png diff --git a/Mastering_C/screenshots/stack.png b/Mastering_C/screenshots/stack.png Binary files differindex 6de0cc8b..6de0cc8b 100644..100755 --- a/Mastering_C/screenshots/stack.png +++ b/Mastering_C/screenshots/stack.png diff --git a/Mechanical_Engineering_Thermodynamics/Chapter_10.ipynb b/Mechanical_Engineering_Thermodynamics/Chapter_10.ipynb new file mode 100755 index 00000000..aa1e31ac --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/Chapter_10.ipynb @@ -0,0 +1,457 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 10 - Tabulated Properties : Steam Tables"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 155"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the work and heat of vaporization of water\n",
+ "#initialization of varaibles\n",
+ "P=100. #psia\n",
+ "hfg=888.8 #B/lb\n",
+ "#calculations\n",
+ "print '%s' %(\"From steam tables,\")\n",
+ "vg=4.432 #cu ft/lb\n",
+ "vf=0.001774 #cu ft/lb\n",
+ "W=P*(vg-vf)*144\n",
+ "ufg=807.1 #B/lb\n",
+ "W=hfg-ufg\n",
+ "sfg=1.1286\n",
+ "Q=788*sfg #Heat\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Work done = \",W,\"B/lb\")\n",
+ "print '%s %d %s' %(\"\\n Heat of vaporization of water =\",Q,\"B/lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From steam tables,\n",
+ "Work done = 81.7 B/lb\n",
+ "\n",
+ " Heat of vaporization of water = 889 B/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 156"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#caclulate the pressure, temperature and enthalpy\n",
+ "#initialization of varaibles\n",
+ "s=1.6315 #B/lb R\n",
+ "#calculations\n",
+ "print '%s' %(\"From table 1 \")\n",
+ "h=1180.6 #B/lb\n",
+ "t=302.92 #F\n",
+ "p=70 #psia\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Pressure = \",p,\"psia\")\n",
+ "print '%s %.2f %s' %(\"\\n Temperature =\",t,\"F\")\n",
+ "print '%s %.1f %s' %(\"\\n Enthalpy =\",h,\"B/lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From table 1 \n",
+ "Pressure = 70 psia\n",
+ "\n",
+ " Temperature = 302.92 F\n",
+ "\n",
+ " Enthalpy = 1180.6 B/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 156"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the Internal energy of the gas\n",
+ "#initialization of varaibles\n",
+ "T=250. #F\n",
+ "print '%s' %(\"From table 1,\")\n",
+ "p=29.825 #psia\n",
+ "hg=1164 #B/lb\n",
+ "vg=13.821 #cu ft/lb\n",
+ "#calculations\n",
+ "ug=hg-(p)*144*vg/778.\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Internal energy of the gas = \",ug,\"B/lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From table 1,\n",
+ "Internal energy of the gas = 1087.7 B/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4 - Pg 158"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the specific volume, Enthalpy and Entropy of the gas\n",
+ "#initialization of varaibles\n",
+ "x=0.4\n",
+ "P=100. #psia\n",
+ "#calculations\n",
+ "y=1-x\n",
+ "print '%s' %(\"From table 2,\")\n",
+ "vf=0.01774\n",
+ "vg=4.432\n",
+ "vx=x*vf+y*vg\n",
+ "hf=298.4\n",
+ "hfg=888.8\n",
+ "hx=hf+y*hfg\n",
+ "sg=1.6026\n",
+ "sfg=1.1286\n",
+ "sx=sg-x*sfg\n",
+ "#results\n",
+ "print '%s %.3f %s' %(\"Specific volume = \",vx,\"cu ft/lb\")\n",
+ "print '%s %.1f %s' %(\"\\n Enthalpy =\",hx,\"B/lb\")\n",
+ "print '%s %.4f %s' %(\"\\n Entropy = \",sx,\"B/lb R\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From table 2,\n",
+ "Specific volume = 2.666 cu ft/lb\n",
+ "\n",
+ " Enthalpy = 831.7 B/lb\n",
+ "\n",
+ " Entropy = 1.1512 B/lb R\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5 - Pg 158"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the enthalpy of the gas\n",
+ "#initialization of varaibles\n",
+ "x=0.97\n",
+ "P=100. #psia\n",
+ "#calculations\n",
+ "print '%s' %(\"From table 2,\")\n",
+ "hf=298.4\n",
+ "hfg=888.8\n",
+ "hx=hf+x*hfg\n",
+ "hg=1187.2\n",
+ "hx2=hg-(1-x)*hfg\n",
+ "#results\n",
+ "print '%s %d %s' %(\"\\n Enthalpy =\",hx,\"B/lb\")\n",
+ "print '%s %.1f %s' %(\"\\n Accurate Enthalpy =\",hx2,\"B/lb\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From table 2,\n",
+ "\n",
+ " Enthalpy = 1160 B/lb\n",
+ "\n",
+ " Accurate Enthalpy = 1160.5 B/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6 - Pg 159"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the specific volume and enthalpy of the process\n",
+ "#initialization of varaibles\n",
+ "s=1.7050 #B/lb R\n",
+ "#calculations\n",
+ "print '%s' %(\"From table 2,\")\n",
+ "sx=1.7050\n",
+ "sg=1.7549\n",
+ "sfg=1.4415\n",
+ "dx=(sg-sx)/sfg\n",
+ "hg=1150.8\n",
+ "hfg=969.7\n",
+ "hx=hg-dx*hfg\n",
+ "vg=26.29\n",
+ "vfg=26.27\n",
+ "vx=vg-dx*vfg\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Specific volume = \",vx,\"cu ft/lb\")\n",
+ "print '%s %.1f %s' %(\"\\n Enthalpy =\",hx,\"B/lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From table 2,\n",
+ "Specific volume = 25.38 cu ft/lb\n",
+ "\n",
+ " Enthalpy = 1117.2 B/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7 - Pg 159"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the enthalpy required\n",
+ "#initialization of varaibles\n",
+ "P=150 #psia\n",
+ "T=400 #F\n",
+ "#calculations\n",
+ "print '%s' %(\"From table 3,\")\n",
+ "h=1219.4 #B/lb\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Enthalpy =\",h,\"B/lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From table 3,\n",
+ "Enthalpy = 1219.4 B/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 8 - Pg 159"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the temperature of steam\n",
+ "#initialization of varaibles\n",
+ "en=1303.7 #B/lb\n",
+ "P=300 #psia\n",
+ "#calculations\n",
+ "print '%s' %(\"Given hg is less than h, steam is superheated. T=580 F\")\n",
+ "T=580 #F\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Temperature =\",T,\"F\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Given hg is less than h, steam is superheated. T=580 F\n",
+ "Temperature = 580 F\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9 - Pg 160"
+ ]
+ },
+ {
+ "cell_type": "raw",
+ "metadata": {},
+ "source": [
+ "This is a theoretical example."
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10 - Pg 161"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the Enthalpy and Volume of the gas\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "T=100. #F\n",
+ "P=1000. #psia\n",
+ "#calculations\n",
+ "print '%s' %(\"From table 4\")\n",
+ "dvf=-5.1*math.pow(10,-5)\n",
+ "dhf=2.7\n",
+ "vf=0.01613\n",
+ "hf=67.97\n",
+ "v=vf+dvf\n",
+ "h=hf+dhf\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Enthalpy =\",h,\"B/lb\")\n",
+ "print '%s %.5f %s' %(\"\\n Volume = \",v,\"cu ft/lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From table 4\n",
+ "Enthalpy = 70.67 B/lb\n",
+ "\n",
+ " Volume = 0.01608 cu ft/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11 - Pg 164"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the Quality of steam\n",
+ "#initialization of varaibles\n",
+ "h1=1183.2 #B/lb\n",
+ "hg=1198.4 #B/lb\n",
+ "hfg=843.\n",
+ "#calculations\n",
+ "x=1- (hg-h1)/hfg\n",
+ "#results\n",
+ "print '%s %.3f' %(\"Quality =\",x)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Quality = 0.982\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Mechanical_Engineering_Thermodynamics/Chapter_11.ipynb b/Mechanical_Engineering_Thermodynamics/Chapter_11.ipynb new file mode 100755 index 00000000..fc43bf01 --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/Chapter_11.ipynb @@ -0,0 +1,307 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 11 - Properties of Gases"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 172"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the volume of the appratus\n",
+ "#initialization of varaibles\n",
+ "P1=15. #psia\n",
+ "T1=80+460. #R\n",
+ "dm=3. #lb\n",
+ "T2=75+460. #R\n",
+ "P2=25. #psia\n",
+ "#calculations\n",
+ "mratio=P1*T2/(P2*T1)\n",
+ "m2=dm/(1-mratio)\n",
+ "V2=m2*55.16*T2/(P2*144.)\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Volume of the apparatus =\",V2,\"cu ft\")\n",
+ "print '%s' %(\"The answer is a bit different due to rounding off error in textbook\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Volume of the apparatus = 60.6 cu ft\n",
+ "The answer is a bit different due to rounding off error in textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 176"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the specific heats at constant pressure and volume\n",
+ "#initialization of varaibles\n",
+ "R=48.3 #ft lb/lb R\n",
+ "k=1.4\n",
+ "#calculations\n",
+ "dc=R/778.\n",
+ "cp=k*dc/(k-1)\n",
+ "cv=cp/k\n",
+ "#results\n",
+ "print '%s %.3f %s' %(\"Specific heat at constant volume = \",cv,\"B/lb R\")\n",
+ "print '%s %.3f %s' %(\"\\n Specific heat at constant pressure = \",cp,\"B/lb R\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Specific heat at constant volume = 0.155 B/lb R\n",
+ "\n",
+ " Specific heat at constant pressure = 0.217 B/lb R\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 177"
+ ]
+ },
+ {
+ "cell_type": "raw",
+ "metadata": {},
+ "source": [
+ "This is a theoretical example."
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ " Example 4 - Pg 180"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the enthalpy generated\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "P1=100. #psia\n",
+ "P2=10. #psia\n",
+ "T1=140. +460 #R\n",
+ "g=1.4\n",
+ "cp=0.248\n",
+ "#calculations\n",
+ "dh=g*55.16*T1*(math.pow((P2/P1),((g-1)/g)) -1)/(g-1)*0.01286 #0.01286 is the conversion factor\n",
+ "T2=T1*math.pow((P2/P1),((g-1)/g))\n",
+ "dh2=cp*(T2-T1)\n",
+ "#results\n",
+ "print '%s %d %s' %(\"In method 1, Enthalpy = \",dh,\"Btu/lb\")\n",
+ "print '%s %.1f %s' %(\"\\n In method 2, Enthalpy =\",dh2,\"ft lb/lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "In method 1, Enthalpy = -718 Btu/lb\n",
+ "\n",
+ " In method 2, Enthalpy = -71.7 ft lb/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5a - Pg 186"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the changes in Enthalpy and Specific Volume\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "P1=100. #psia\n",
+ "T1=2000.+460 #R\n",
+ "P2=15. #psia\n",
+ "g=1.4\n",
+ "cp=0.24\n",
+ "#calculations\n",
+ "v1=53.34*T1/(P1*144.)\n",
+ "v2=53.34*T1*math.pow((P1/P2),(1/g)) /(P1*144)\n",
+ "T2=T1*P2*v2/(P1*v1)\n",
+ "dh=cp*(T2-T1)\n",
+ "dv=v2-v1\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Change in enthalpy =\",dh,\"B/lb\")\n",
+ "print '%s %.1f %s' %(\"\\n Specific volume change = \",dv,\"cu ft/lb\")\n",
+ "print '%s' %(\"The answer is a bit different due to rounding off error in textbook\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Change in enthalpy = -247 B/lb\n",
+ "\n",
+ " Specific volume change = 26.2 cu ft/lb\n",
+ "The answer is a bit different due to rounding off error in textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5b - Pg 186"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the changes in Enthalpy and Specific Volume\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "P1=100. #psia\n",
+ "T1=2000.+460 #R\n",
+ "P2=15. #psia\n",
+ "g=1.4\n",
+ "cp=0.276\n",
+ "cv=0.207\n",
+ "T2=1520. #R\n",
+ "#calculations\n",
+ "k=cp/cv\n",
+ "v1=53.34*T1/(P1*144)\n",
+ "v2=v1*math.pow((P1/P2),(1/k))\n",
+ "dh=cp*(T2-T1)\n",
+ "dv=v2-v1\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Enthalpy change =\",dh,\"B/lb\")\n",
+ "print '%s %.1f %s' %(\"\\n Volume change =\",dv,\"cu t/lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enthalpy change = -259 B/lb\n",
+ "\n",
+ " Volume change = 28.7 cu t/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5c - Pg 186"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the changes in Enthalpy and Specific Volume\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "P1=100. #psia\n",
+ "T1=2000.+460 #R\n",
+ "P2=15. #psia\n",
+ "g=1.4\n",
+ "cp=0.276\n",
+ "cv=0.207\n",
+ "T2=1520. #R\n",
+ "#calculations\n",
+ "h1=634.4\n",
+ "pr1=407.3\n",
+ "pr2=pr1*P2/P1\n",
+ "print '%s' %(\"From table 1,\")\n",
+ "T2=1535. #R\n",
+ "h2=378.44\n",
+ "dh=h2-h1\n",
+ "v1=53.34*T1/(P1*144)\n",
+ "v2=53.34*T2/(P2*144.)\n",
+ "dv=v2-v1\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Enthalpy change = \",dh,\"B/lb\")\n",
+ "print '%s %.1f %s' %(\"\\n Volume change =\",dv,\"cu ft/lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From table 1,\n",
+ "Enthalpy change = -255.96 B/lb\n",
+ "\n",
+ " Volume change = 28.8 cu ft/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Mechanical_Engineering_Thermodynamics/Chapter_12.ipynb b/Mechanical_Engineering_Thermodynamics/Chapter_12.ipynb new file mode 100755 index 00000000..82670034 --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/Chapter_12.ipynb @@ -0,0 +1,109 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 12 - Properties of Gaseous mixtures"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 201"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the partial pressure and specific humidity\n",
+ "#initialization of varaibles\n",
+ "P=15. #psia\n",
+ "T2=70.+460 #R\n",
+ "T1=55.+460 #R\n",
+ "#calculations\n",
+ "pw=0.2141\n",
+ "pA=P-pw\n",
+ "mratio=pA*29/(pw*18.)\n",
+ "mAbym=mratio/(1+mratio)\n",
+ "mwbym=1/(1+mratio)\n",
+ "pg=0.3631 #psia\n",
+ "phi=pw/pg\n",
+ "gamma=1/mratio\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Partial pressure of water vapor = \",pA,\"psia\")\n",
+ "print '%s %.4f %s' %(\"\\n Specific humidity = \",gamma,\"lb vapor/lb air\")\n",
+ "print '%s %.2f' %(\"\\n Relative humidity = \",phi)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Partial pressure of water vapor = 14.79 psia\n",
+ "\n",
+ " Specific humidity = 0.0090 lb vapor/lb air\n",
+ "\n",
+ " Relative humidity = 0.59\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 201"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the mass of watervapor per pound of dry air\n",
+ "#initialization of varaibles\n",
+ "rh=0.75\n",
+ "pg=0.5069\n",
+ "inc=10 #in\n",
+ "pA=29.50 #psia\n",
+ "#calculations\n",
+ "pw=rh*pg\n",
+ "p=(29.50+ inc/13.6)*0.491\n",
+ "pA=p-pw\n",
+ "mratio=pw*18/(pA*29.)\n",
+ "#results\n",
+ "print '%s %.4f %s' %(\"Pounds of water vapor enter the surface per pound of dry air =\",mratio,\"lb vapor/lb air\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pounds of water vapor enter the surface per pound of dry air = 0.0163 lb vapor/lb air\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Mechanical_Engineering_Thermodynamics/Chapter_13.ipynb b/Mechanical_Engineering_Thermodynamics/Chapter_13.ipynb new file mode 100755 index 00000000..bcedae7c --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/Chapter_13.ipynb @@ -0,0 +1,623 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 13 - Process Calculations for Stationary Systems"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1a - Pg 203"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the final temperature and heat transferred from the steam\n",
+ "#initialization of varaibles\n",
+ "P1=100. #psia\n",
+ "T1=500+460. #R\n",
+ "v=10. #cu ft\n",
+ "P2=50. #psia\n",
+ "cv=0.172\n",
+ "R=53.34\n",
+ "m=2.81 #lb\n",
+ "#calculations\n",
+ "T2=T1*P2/P1\n",
+ "Q1=P1*144*v*cv*(T2-T1)/(R*T1)\n",
+ "u1=165.26 #Btu/lb\n",
+ "u2=81.77 #Btu/lb\n",
+ "du=u2-u1\n",
+ "Q2=m*du\n",
+ "#results\n",
+ "print '%s' %(\"Case 1,\")\n",
+ "print '%s %d %s' %(\"\\n Final temperature of the steam = \",T2,\"R\")\n",
+ "print '%s %.1f %s' %(\"\\n Heat transferred =\",Q1,\"Btu\")\n",
+ "print '%s %.1f %s' %(\"\\n Heat transferred in case 2 =\",Q2,\"Btu\")\n",
+ "print '%s' %(\"\\n The answer may be a bit different due to rounding off error in the textbook\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Case 1,\n",
+ "\n",
+ " Final temperature of the steam = 480 R\n",
+ "\n",
+ " Heat transferred = -232.2 Btu\n",
+ "\n",
+ " Heat transferred in case 2 = -234.6 Btu\n",
+ "\n",
+ " The answer may be a bit different due to rounding off error in the textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1b - Pg 204"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the final temperature and heat transferred\n",
+ "#initialization of varaibles\n",
+ "P1=100. #psia\n",
+ "T1=500.+460 #R\n",
+ "V=10. #cu ft\n",
+ "P2=50. #psia\n",
+ "cv=0.172\n",
+ "R=53.34\n",
+ "v=5.589 #cu ft/lb\n",
+ "#calculations\n",
+ "m=V/v\n",
+ "x2=(v-0.017)/8.498\n",
+ "print '%s' %(\"From table 2,\")\n",
+ "T2=281.01 #F\n",
+ "h1=1279.1\n",
+ "u1=h1-144*P1*v/778.\n",
+ "uf=249.93\n",
+ "ufg=845.4\n",
+ "u2=uf+x2*ufg\n",
+ "Q=m*(u2-u1)\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Final temperature =\",T2,\"F\")\n",
+ "print '%s %d %s' %(\"\\n Heat transferred =\",Q,\"Btu\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From table 2,\n",
+ "Final temperature = 281.01 F\n",
+ "\n",
+ " Heat transferred = -664 Btu\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2a - Pg 205"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the final temperature, Enthalpy and heat transferred in the process\n",
+ "#initialization of varaibles\n",
+ "T1=350+460 #R\n",
+ "v1=6 #cu ft/lb\n",
+ "m=1 #lb\n",
+ "R=53.34\n",
+ "v2=2*v1\n",
+ "cp=0.24\n",
+ "#calculations\n",
+ "P=R*T1/(v1*144)\n",
+ "W=P*144*(v2-v1)\n",
+ "T2=T1*v2/v1\n",
+ "Q=cp*(T2-T1)\n",
+ "h1=194.25\n",
+ "h2=401.09\n",
+ "dh=h2-h1\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Final temperature =\",T2-460,\"F\")\n",
+ "print '%s %.2f %s' %(\"\\n Enthalpy =\",dh,\"B/lb\")\n",
+ "print '%s %d %s' %(\"\\n Heat =\",Q,\"B/lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Final temperature = 1160 F\n",
+ "\n",
+ " Enthalpy = 206.84 B/lb\n",
+ "\n",
+ " Heat = 194 B/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2b - Pg 206"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the final temperature, Enthalpy and heat transferred in the process\n",
+ "#initialization of varaibles\n",
+ "T1=350+460. #R\n",
+ "v1=6 #cu ft/lb\n",
+ "m=1 #lb\n",
+ "R=53.34\n",
+ "v2=2*v1\n",
+ "cp=0.24\n",
+ "#calculations\n",
+ "print '%s' %(\"From steam tables,\")\n",
+ "vg=3.342 #cu ft/lb\n",
+ "P1=77.5 #psia\n",
+ "P2=P1\n",
+ "h1=1204.8 #B/lb\n",
+ "v2=2*v1\n",
+ "T2=1106 #F\n",
+ "h2=1586.7 #B/lb\n",
+ "Q=h2-h1\n",
+ "W=P1*144*(v2-v1)\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Final temperature =\",T2,\"F\")\n",
+ "print '%s %d %s' %(\"\\n Work =\",W,\"ft lb/lb\")\n",
+ "print '%s %.1f %s' %(\"\\n Heat =\",Q,\"B/lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From steam tables,\n",
+ "Final temperature = 1106 F\n",
+ "\n",
+ " Work = 66960 ft lb/lb\n",
+ "\n",
+ " Heat = 381.9 B/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3a - Pg 206"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the final pressure, work done and change in internal energy of the process\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "T1=400+460. #R\n",
+ "P1=50. #psia\n",
+ "ratio=1/10.\n",
+ "R=53.34\n",
+ "#calculations\n",
+ "P2=P1/ratio\n",
+ "W=R*T1*math.log(ratio)\n",
+ "du=0\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Final pressure =\",P2,\"psia\")\n",
+ "print '%s %.1f %s' %(\"\\n Work done =\",W,\"B/lb\")\n",
+ "print '%s %d %s' %(\"\\n Change in Internal energy \",du,\"Btu/lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Final pressure = 500 psia\n",
+ "\n",
+ " Work done = -105625.1 B/lb\n",
+ "\n",
+ " Change in Internal energy 0 Btu/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3b - Pg 207"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the final pressure, work done and change in internal energy of the process\n",
+ "#initialization of varaibles\n",
+ "T1=400+460. #R\n",
+ "P1=50. #psia\n",
+ "ratio=1/10.\n",
+ "R=53.34\n",
+ "v1=10.065 #cu ft/lb\n",
+ "vfg=1.8447 #cu ft/lb\n",
+ "vg=1.8633 #cu ft/lb\n",
+ "#calculations\n",
+ "v2=v1*ratio\n",
+ "dx=(v2-vg)/vfg\n",
+ "P2=247.3 #psia\n",
+ "print '%s' %(\"From steam tables,\")\n",
+ "u2=773. #B/lb\n",
+ "u1=1141.6 #B/lb\n",
+ "du=u2-u1\n",
+ "s1=1.7349 #B/lb R\n",
+ "s2=1.082 #B/lb R\n",
+ "W=T1*(s2-s1) - du\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Final pressure = \",P2,\"psia\")\n",
+ "print '%s %d %s' %(\"\\n Work done =\",W,\"B/lb\")\n",
+ "print '%s %d %s' %(\"\\n Change in Internal energy = \",du,\"B/lb \")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From steam tables,\n",
+ "Final pressure = 247.3 psia\n",
+ "\n",
+ " Work done = -192 B/lb\n",
+ "\n",
+ " Change in Internal energy = -368 B/lb \n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4a - Pg 208"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate final specific volume and work per pound of fluid in the problem\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "P1=150. #psia\n",
+ "T1=400.+460 #R\n",
+ "P2=15. #psia\n",
+ "g=1.4\n",
+ "R=53.34\n",
+ "#calculations\n",
+ "Tratio=math.pow((P2/P1),((g-1)/g))\n",
+ "W=53.34*T1*(Tratio-1)/(1-g)\n",
+ "T2=T1*Tratio\n",
+ "v2=R*T2/(P2*144)\n",
+ "u1=147.50\n",
+ "Pr1=7.149\n",
+ "Pr2=Pr1*P2/P1\n",
+ "print '%s' %(\"From tables,\")\n",
+ "Pr=0.7149\n",
+ "T2=447. #R\n",
+ "u2=76.13 #B/lb\n",
+ "W=-(u2-u1)\n",
+ "v2=R*T2/(P2*144)\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Final specific volume =\",v2,\"cu ft/lb\")\n",
+ "print '%s %.1f %s' %(\"\\n Work per pound of fluid =\",W,\"B/lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From tables,\n",
+ "Final specific volume = 11.0 cu ft/lb\n",
+ "\n",
+ " Work per pound of fluid = 71.4 B/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4b - Pg 209"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate final specific volume and work per pound of fluid in the problem\n",
+ "#initialization of varaibles\n",
+ "print '%s' %(\"From Steam tables,\")\n",
+ "h1=1219.4\n",
+ "P1=150 #psia\n",
+ "v1=0.59733 #cu ft/lb\n",
+ "s1=1.5995 #B/lb R\n",
+ "#calculations\n",
+ "u1=h1-P1*v1\n",
+ "sg=1.7549\n",
+ "sfg=1.4415\n",
+ "s2=s1\n",
+ "dx=(sg-s2)/sfg\n",
+ "u2=981.3\n",
+ "W=u1-u2\n",
+ "v2=23.48\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Final specific volume =\",v2,\"cu ft/lb\")\n",
+ "print '%s %.1f %s' %(\"\\n Work per pound of fluid = \",W,\"B/lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From Steam tables,\n",
+ "Final specific volume = 23.48 cu ft/lb\n",
+ "\n",
+ " Work per pound of fluid = 148.5 B/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5a - Pg 210"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the final specific volume, temperature and the net heat transferred in the process\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "P1=150. #psia\n",
+ "T1=400.+460 #R\n",
+ "P2=15. #psia\n",
+ "n=1.15\n",
+ "cv=0.172\n",
+ "R=53.34\n",
+ "#calculations\n",
+ "v2=R*T1*math.pow((P1/P2),(1/n)) /(P1*144.)\n",
+ "v1=R*T1/(P1*144.)\n",
+ "T2=T1*P2*v2/(P1*v1)\n",
+ "Q=(cv - 0.458)*(T2-T1)\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Final specific volume = \",v2,\"cu ft/lb\")\n",
+ "print '%s %d %s' %(\"\\n Final temperature =\",T2,\"R\")\n",
+ "print '%s %.1f %s' %(\"\\n Heat transferred =\",Q,\"B/lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Final specific volume = 15.7 cu ft/lb\n",
+ "\n",
+ " Final temperature = 636 R\n",
+ "\n",
+ " Heat transferred = 63.8 B/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5b - Pg 211"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the final specific volume, temperature and the net heat transferred in the process\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "print '%s' %(\"From table 3,\")\n",
+ "v1=3.223 #cu ft/lb\n",
+ "P1=150. #psia\n",
+ "T1=400.+460 #R\n",
+ "P2=15. #psia\n",
+ "n=1.15\n",
+ "#calculations\n",
+ "v2=v1*math.pow((P1/P2),(1/n))\n",
+ "T2=213 #F\n",
+ "W=144*(P2*v2-P1*v1)*0.00129/(1-n)\n",
+ "u1=1129.8 #B/lb\n",
+ "v2=23.9\n",
+ "vg=26.29\n",
+ "vfg=26.27\n",
+ "dx=(vg-v2)/vfg\n",
+ "u2=996.1\n",
+ "Q=(u2-u1)+W\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Final specific volume =\",v2,\"cu ft/lb\")\n",
+ "print '%s %d %s' %(\"\\n Final temperature =\",T2,\" F\")\n",
+ "print '%s %.1f %s' %(\"\\n Heat transferred =\",Q,\"B/lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From table 3,\n",
+ "Final specific volume = 23.9 cu ft/lb\n",
+ "\n",
+ " Final temperature = 213 F\n",
+ "\n",
+ " Heat transferred = 21.6 B/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6a - Pg 212"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the final specific volume, temperature and the net work done in the process\n",
+ "#initialization of varaibles\n",
+ "v2=15.7 #cu ft/lb\n",
+ "T2=640 #R\n",
+ "cv=0.172\n",
+ "T1=400+460. #R\n",
+ "#calculations\n",
+ "du=cv*(T2-T1)\n",
+ "W=-du\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Final specific volume =\",v2,\"cu ft/lb\")\n",
+ "print '%s %d %s' %(\"\\n Final temperature =\",T2,\"R \")\n",
+ "print '%s %.1f %s' %(\"\\n Work done =\",W,\"B/lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Final specific volume = 15.7 cu ft/lb\n",
+ "\n",
+ " Final temperature = 640 R \n",
+ "\n",
+ " Work done = 37.8 B/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6b - Pg 213"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the final specific volume, temperature and the net work done in the process\n",
+ "#initialization of varaibles\n",
+ "print '%s' %(\"From steam tables,\")\n",
+ "T2=213 #F\n",
+ "v2=23.9 #cu ft/lb\n",
+ "W=133.7 #B/lb\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Final specific volume =\",v2,\"cu ft/lb\")\n",
+ "print '%s %d %s' %(\"\\n Final temperature =\",T2,\"F\")\n",
+ "print '%s %.1f %s' %(\"\\n Work done = \",W,\" B/lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From steam tables,\n",
+ "Final specific volume = 23.9 cu ft/lb\n",
+ "\n",
+ " Final temperature = 213 F\n",
+ "\n",
+ " Work done = 133.7 B/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Mechanical_Engineering_Thermodynamics/Chapter_14.ipynb b/Mechanical_Engineering_Thermodynamics/Chapter_14.ipynb new file mode 100755 index 00000000..67743161 --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/Chapter_14.ipynb @@ -0,0 +1,258 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 14 - Vapor Cycles : The Rankine Cycle"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 219"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the heat supplied, work done, efficiency and steam rate in the process\n",
+ "#initialization of varaibles\n",
+ "P1=200. #psia\n",
+ "T1=750+460. #R\n",
+ "P2=1. #psia\n",
+ "#calculations\n",
+ "print '%s' %(\"From steam tables,\")\n",
+ "h1=1399.2\n",
+ "h2=976\n",
+ "h3=69.70\n",
+ "v3=0.01614\n",
+ "dh3=v3*(P1-P2)*144/778.\n",
+ "h4=dh3+h3\n",
+ "Q1=h1-h4\n",
+ "Wt=h1-h2\n",
+ "Wp=h4-h3\n",
+ "eta=(Wt-Wp)/Q1\n",
+ "w=2545./Wt\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Heat supplied = \",Q1,\"B/lb\")\n",
+ "print '%s %d %s' %(\"\\n Turbine work =\",Wt,\"B/lb\")\n",
+ "print '%s %.3f %s' %(\"\\n Pump work =\",Wp,\"B/lb\")\n",
+ "print '%s %.3f' %(\"\\n Efficiency =\",eta)\n",
+ "print '%s %.2f %s' %(\"\\n Steam rate =\",w,\"lb steam per hr\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From steam tables,\n",
+ "Heat supplied = 1328.9 B/lb\n",
+ "\n",
+ " Turbine work = 423 B/lb\n",
+ "\n",
+ " Pump work = 0.594 B/lb\n",
+ "\n",
+ " Efficiency = 0.318\n",
+ "\n",
+ " Steam rate = 6.01 lb steam per hr\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 228"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the engine efficiency\n",
+ "#initialization of varaibles\n",
+ "h1=1399.2 #B/lb\n",
+ "h2s=976 #B/lb\n",
+ "wt=8. #lb /hp hr\n",
+ "#calculations\n",
+ "Wt=2545/wt\n",
+ "etaT=Wt/(h1-h2s)\n",
+ "h2=h1-Wt\n",
+ "#results\n",
+ "print '%s %.3f' %(\"Engine efficiency =\",etaT)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Engine efficiency = 0.752\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3a - Pg 234"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the backwork, efficiency and steam rate for both the cycles\n",
+ "#initialization of varaibles\n",
+ "P1=200. #psia\n",
+ "P2=1. #psia\n",
+ "e=0.7\n",
+ "#calculations\n",
+ "h1=1198.4\n",
+ "h2s=863.5\n",
+ "h3r=69.7\n",
+ "h4r=70.3\n",
+ "h3c=300.7\n",
+ "h4c=355.4\n",
+ "print '%s' %(\"For Rankine cycle, \")\n",
+ "Wtr=h1-h2s\n",
+ "Q1r=h1-h4r\n",
+ "Wpr=h4r-h3r\n",
+ "Wnetr=Wtr-Wpr\n",
+ "eta1=(Wtr-Wpr)/Q1r\n",
+ "wr=2545./Wtr\n",
+ "print '%s %.1f %s' %(\"Back work =\",Wnetr,\"B/lb\")\n",
+ "print '%s %.3f' %(\"\\n Efficiency =\",eta1)\n",
+ "print '%s %.1f %s' %(\"\\n Steam rate =\",wr,\"lb/hp hr\")\n",
+ "print '%s' %(\"\\n For carnot cycle,\")\n",
+ "Wtc=h1-h2s\n",
+ "Q1c=h1-h4c\n",
+ "Wpc=h4c-h3c\n",
+ "Wnetc=Wtc-Wpc\n",
+ "eta2=(Wtc-Wpc)/Q1c\n",
+ "wc=9.1\n",
+ "print '%s %.1f %s' %(\"\\n Back work =\",Wnetc,\"B/lb\")\n",
+ "print '%s %.3f' %(\"\\n Efficiency = \",eta2)\n",
+ "print '%s %.2f %s' %(\"\\n Steam rate =\",wc,\"lb/hp hr\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "For Rankine cycle, \n",
+ "Back work = 334.3 B/lb\n",
+ "\n",
+ " Efficiency = 0.296\n",
+ "\n",
+ " Steam rate = 7.6 lb/hp hr\n",
+ "\n",
+ " For carnot cycle,\n",
+ "\n",
+ " Back work = 280.2 B/lb\n",
+ "\n",
+ " Efficiency = 0.332\n",
+ "\n",
+ " Steam rate = 9.10 lb/hp hr\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3b - Pg 234"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the backwork, efficiency and steam rate for both the cycles\n",
+ "#initialization of varaibles\n",
+ "P1=200. #psia\n",
+ "P2=1. #psia\n",
+ "e=0.7\n",
+ "#calculations\n",
+ "h1=1198.4\n",
+ "h2s=863.5\n",
+ "h3r=69.7\n",
+ "h4r=70.3\n",
+ "h3c=300.7\n",
+ "h4c=355.4\n",
+ "print '%s' %(\"For Rankine cycle with actual machines, \")\n",
+ "Wtr=e*(h1-h2s)\n",
+ "Q1r=(h1-h4r)\n",
+ "Wpr=(h4r-h3r)/e\n",
+ "Wnetr=Wtr-Wpr\n",
+ "eta1=(Wtr-Wpr)/Q1r\n",
+ "wr=2545./Wtr\n",
+ "print '%s %.1f %s' %(\"Back work =\",Wnetr,\"B/lb\")\n",
+ "print '%s %.3f '%(\"\\n Efficiency = \",eta1)\n",
+ "print '%s %.1f %s' %(\"\\n Steam rate =\",wr,\"lb/hp hr\")\n",
+ "print '%s' %(\"For carnot cycle,\")\n",
+ "Wtc=e*(h1-h2s)\n",
+ "Q1c=h1-h4c\n",
+ "Wpc=(h4c-h3c)/e\n",
+ "Wnetc=Wtc-Wpc\n",
+ "eta2=(Wtc-Wpc)/Q1c\n",
+ "wc=16.2\n",
+ "print '%s %.1f %s' %(\"Back work =\",Wnetc,\"B/lb\")\n",
+ "print '%s %.3f' %(\"\\n Efficiency = \",eta2)\n",
+ "print '%s %.1f %s' %(\"\\n Steam rate =\",wc,\"lb/hp hr\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "For Rankine cycle with actual machines, \n",
+ "Back work = 233.6 B/lb\n",
+ "\n",
+ " Efficiency = 0.207 \n",
+ "\n",
+ " Steam rate = 10.9 lb/hp hr\n",
+ "For carnot cycle,\n",
+ "Back work = 156.3 B/lb\n",
+ "\n",
+ " Efficiency = 0.185\n",
+ "\n",
+ " Steam rate = 16.2 lb/hp hr\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Mechanical_Engineering_Thermodynamics/Chapter_15.ipynb b/Mechanical_Engineering_Thermodynamics/Chapter_15.ipynb new file mode 100755 index 00000000..546b25c5 --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/Chapter_15.ipynb @@ -0,0 +1,171 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 15 - Vapor Cycles : More Efficient Cycles"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 243"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the improvement in efficiency\n",
+ "#initialization of varaibles\n",
+ "e=0.85\n",
+ "print '%s' %(\"From Mollier chart and table 3,\")\n",
+ "h1=1474.5 #B/lb\n",
+ "s1=1.5603 #B/lb R\n",
+ "h2s=1277.5 #B/lb\n",
+ "#calculations\n",
+ "h2=h1-e*(h1-h2s)\n",
+ "h3=1522.4 #B/lb\n",
+ "h4s=948 #B/lb\n",
+ "h4=h3-e*(h3-h4s)\n",
+ "h5=47.6 #B/lb\n",
+ "h6=53.5 #B/lb\n",
+ "h7s=840 #B/lb\n",
+ "h7=h1-e*(h1-h7s)\n",
+ "h8=1493.2 #B/lb\n",
+ "h9s=866 #B/lb\n",
+ "h9=h8-e*(h8-h9s)\n",
+ "h11=51.5 #B/lb\n",
+ "eta1=0.401\n",
+ "eta2=0.375\n",
+ "eta3=0.366\n",
+ "IE1=(eta1-eta2)/eta2\n",
+ "IE2=(eta1-eta3)/eta3\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Improvement in efficiency =\",IE1*100,\"percent\")\n",
+ "print '%s %.1f %s' %(\"\\nImprovement in efficiency in case 2=\",IE2*100,\"percent\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From Mollier chart and table 3,\n",
+ "Improvement in efficiency = 6.9 percent\n",
+ "\n",
+ "Improvement in efficiency in case 2= 9.6 percent\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2a - Pg 257"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the fraction of energy supplied \n",
+ "#initialization of varaibles\n",
+ "print '%s' %(\"From mollier chart and table 3,\")\n",
+ "h1=1371. #B/lb\n",
+ "h2s=1149. #B/lb\n",
+ "h3=118. #B/lb\n",
+ "e=0.9\n",
+ "print '%s' %(\"Neglecting pump work,\")\n",
+ "Q1=h1-h3\n",
+ "W=156. #B/lb\n",
+ "eta1=W/Q1\n",
+ "Q=h1-W-h3\n",
+ "UE=W+e*Q\n",
+ "fraction = UE/Q1\n",
+ "#results\n",
+ "print '%s %.2f' %(\"Fraction supplied = \",fraction)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From mollier chart and table 3,\n",
+ "Neglecting pump work,\n",
+ "Fraction supplied = 0.91\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2b - Pg 258"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the fraction of energy supplied \n",
+ "#initialization of varaibles\n",
+ "print '%s' %(\"From mollier chart and table 3,\")\n",
+ "h1=1371. #B/lb\n",
+ "h2s=1149. #B/lb\n",
+ "h3=118. #B/lb\n",
+ "e=0.23\n",
+ "e2=0.9\n",
+ "print '%s' %(\"Neglecting pump work,\")\n",
+ "Q1=h1-h3\n",
+ "W=156. #B/lb\n",
+ "eta1=W/Q1\n",
+ "Q=h1-W-h3\n",
+ "We=W/e\n",
+ "UE=We+Q\n",
+ "UE1=W+e2*Q\n",
+ "Q2=Q+We\n",
+ "fraction = UE1/UE\n",
+ "#results\n",
+ "print '%s %.2f' %(\"Fraction supplied = \",fraction)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From mollier chart and table 3,\n",
+ "Neglecting pump work,\n",
+ "Fraction supplied = 0.64\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Mechanical_Engineering_Thermodynamics/Chapter_16.ipynb b/Mechanical_Engineering_Thermodynamics/Chapter_16.ipynb new file mode 100755 index 00000000..c5f31a4f --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/Chapter_16.ipynb @@ -0,0 +1,178 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 16 - Gas Cycles"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1a - Pg 279"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the efficiency and work done per pound of fluid\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "Pb=75. #psia\n",
+ "Pc=15. #psia\n",
+ "k=1.4\n",
+ "Td=550. #R\n",
+ "Tb=1700. #R\n",
+ "cp=0.24\n",
+ "#calculations\n",
+ "print '%s' %(\"Gas law solution\")\n",
+ "Pratio=Pb/Pc\n",
+ "Ta=Td*math.pow((Pratio),((k-1)/k))\n",
+ "Tc=Tb/math.pow((Pratio),((k-1)/k))\n",
+ "Q1=cp*(Tb-Ta)\n",
+ "Q2=cp*(Tc-Td)\n",
+ "Wnet=Q1-Q2\n",
+ "eta=Wnet/Q1\n",
+ "eta2=1-Td/Ta\n",
+ "#results\n",
+ "print '%s %.3f' %(\"Efficiency in 1= \",eta)\n",
+ "print '%s %.2f' %(\"\\n Efficiency in 2 = \",eta2)\n",
+ "print '%s %d %s' %(\"\\n Work per pound of fluid =\",Wnet,\"B/lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Gas law solution\n",
+ "Efficiency in 1= 0.369\n",
+ "\n",
+ " Efficiency in 2 = 0.37\n",
+ "\n",
+ " Work per pound of fluid = 73 B/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1b - Pg 280"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the efficiency and work done per pound of fluid\n",
+ "#initialization of variables\n",
+ "import math\n",
+ "Pb=75. #psia\n",
+ "Pc=15. #psia\n",
+ "k=1.4\n",
+ "Td=550. #R\n",
+ "Tb=1700. #R\n",
+ "cp=0.24\n",
+ "#calculations\n",
+ "Prd=1.4779\n",
+ "hd=131.46 #B/lb\n",
+ "Prb=90.95\n",
+ "hb=422.59 #B/lb\n",
+ "Pratio=Pb/Pc\n",
+ "Pra=Pratio*(Prd)\n",
+ "Ta=868 #R\n",
+ "ha=208.41\n",
+ "Prc=Prb/Pratio\n",
+ "Tc=1113 #R\n",
+ "hc=269.27\n",
+ "Q1=hb-ha\n",
+ "Q2=hc-hd\n",
+ "Wnet=Q1-Q2\n",
+ "eta=Wnet/Q1\n",
+ "#results\n",
+ "print '%s %.3f' %(\"Efficiency = \",eta)\n",
+ "print '%s %.2f %s' %(\"\\n Work per pound of fluid =\",Wnet,\"B/lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Efficiency = 0.357\n",
+ "\n",
+ " Work per pound of fluid = 76.37 B/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 282"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the work done and efficiency of the process\n",
+ "#initialization of varaibles\n",
+ "e=0.75\n",
+ "Ta=870. #R\n",
+ "Tc=1075. #R\n",
+ "cp=0.24\n",
+ "Td=550. #R\n",
+ "Tb=1700. #R\n",
+ "#calculations\n",
+ "Tadash=e*(Tc-Ta) +Ta\n",
+ "Tcdash=Tc+Ta-Tadash\n",
+ "Q1=cp*(Tb-Tadash)\n",
+ "Q2=cp*(Tcdash-Td)\n",
+ "Wnet=Q1-Q2\n",
+ "eta=Wnet/Q1\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Net work done =\",Wnet,\"B/lb\")\n",
+ "print '%s %.2f' %(\"\\n efficiency = \",eta)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Net work done = 73 B/lb\n",
+ "\n",
+ " efficiency = 0.45\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Mechanical_Engineering_Thermodynamics/Chapter_17.ipynb b/Mechanical_Engineering_Thermodynamics/Chapter_17.ipynb new file mode 100755 index 00000000..3b6e3958 --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/Chapter_17.ipynb @@ -0,0 +1,289 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 17 - Fluid Flow : Nozzles and Orifices"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1a - Pg 299"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the exit area\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "w=1 #lb/sec\n",
+ "v2=36.4\n",
+ "h1=1279.1 #B/lb\n",
+ "h2=1091.7 #B/lb\n",
+ "V1=100 #fps\n",
+ "#calculations\n",
+ "a2=w*v2/(math.sqrt(2*32.2*778*(h1-h2) + V1*V1)) #sq ft\n",
+ "a2=1.705 #sq in\n",
+ "#results\n",
+ "print '%s %.3f %s' %(\"Exit area =\",a2,\"sq. in\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Exit area = 1.705 sq. in\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1b - Pg 300"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the throat area\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "w=1 #lb/sec\n",
+ "k=1.3\n",
+ "P=100 #psia\n",
+ "#calculations\n",
+ "Pratio=math.pow((2/(k+1)),(k/(k-1)))\n",
+ "Pt=Pratio*P\n",
+ "print '%s' %(\"From table 3,\")\n",
+ "ht=1221.5 #B/lb\n",
+ "vt=8.841 #cu ft/lb\n",
+ "at=w*vt/1700.\n",
+ "#results\n",
+ "print '%s %.4f %s' %(\"Throat area =\",at,\"sq ft\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From table 3,\n",
+ "Throat area = 0.0052 sq ft\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 309"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the Throat and exit areas for both frictionless and frictioned nozzles\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "k=1.3\n",
+ "P=250 #psia\n",
+ "h0=1263.4 #B/lb\n",
+ "w=10000. #lb\n",
+ "cv=0.949\n",
+ "vts=3.415 #cu ft/lb\n",
+ "#calculations\n",
+ "Pratio=math.pow((2/(k+1)),(k/(k-1)))\n",
+ "Pt=Pratio*P\n",
+ "hts=1208.2 #B/lb\n",
+ "h2s=891 #B/lb\n",
+ "Vts=math.sqrt(2*32.2*778*(h0-hts))\n",
+ "w=w/3600. #lb/sec\n",
+ "at=w*vts/(Vts)\n",
+ "V2=cv*math.sqrt(2*32.2*778*(h0-h2s))\n",
+ "etan=cv*cv\n",
+ "h2=928. #B/lb\n",
+ "print '%s' %(\"From table 3,\")\n",
+ "v2=276. #cu ft/lb\n",
+ "a2=w*v2/V2\n",
+ "a2s=0.17 #ft^2\n",
+ "Cw=0.98\n",
+ "at2=at/Cw\n",
+ "#results\n",
+ "print '%s %.5f %s' %(\"\\n Throat area =\",at,\"ft^2\")\n",
+ "print '%s %.3f %s' %(\"\\n Exit area =\",a2,\"ft^2\")\n",
+ "print '%s %.3f %s' %(\"\\n For frictionless nozzle =\",a2s,\"ft^2\")\n",
+ "print '%s %.5f %s' %(\"\\n Changed throat area =\",at2,\"ft^2 and exit area is unchanged\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From table 3,\n",
+ "\n",
+ " Throat area = 0.00570 ft^2\n",
+ "\n",
+ " Exit area = 0.187 ft^2\n",
+ "\n",
+ " For frictionless nozzle = 0.170 ft^2\n",
+ "\n",
+ " Changed throat area = 0.00582 ft^2 and exit area is unchanged\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3a - Pg 310"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the Exit velocity, throat and exit areas\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "w=1 #lb/sec\n",
+ "Pratio=0.53\n",
+ "k=1.4\n",
+ "T0=800. #R\n",
+ "cp=0.24\n",
+ "P0=150. #psia\n",
+ "P2=15. #psia\n",
+ "#calculations\n",
+ "Pt=Pratio*P0\n",
+ "Tratio=math.pow((Pratio),((k-1)/k))\n",
+ "Tts=T0*Tratio\n",
+ "Vts=math.sqrt(2*32.2*778*cp*(T0-Tts))\n",
+ "vts=53.34*Tts/(Pt*144.)\n",
+ "at=w*vts/(Vts)\n",
+ "T2s=T0*math.pow((Pt/P0),((k-1)/k))\n",
+ "T2=460. #R\n",
+ "V2=math.sqrt(2*32.2*cp*778*(T0-T2))\n",
+ "v2=53.34*T2/(144.*P2)\n",
+ "a2=w*v2/V2\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Exit velocity =\",Vts,\"fps\")\n",
+ "print '%s %.5f %s' %(\"\\n Throat area =\",at,\"ft^2\")\n",
+ "print '%s %.5f %s' %(\"\\n Exit area =\",a2,\"ft^2\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Exit velocity = 1263 fps\n",
+ "\n",
+ " Throat area = 0.00246 ft^2\n",
+ "\n",
+ " Exit area = 0.00562 ft^2\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3b - Pg 310"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the Exit velocity, throat and exit areas\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "h0=191.81 #B/lb\n",
+ "Pr0=5.526\n",
+ "w=1 #lb/sec\n",
+ "Pratio=0.53\n",
+ "k=1.4\n",
+ "T0=800. #R\n",
+ "cp=0.24\n",
+ "P0=150. #psia\n",
+ "P2=15. #psia\n",
+ "Pt=79.5 #psia\n",
+ "#calculations\n",
+ "Prt=Pratio*Pr0\n",
+ "print '%s' %(\"From keenan and kaye steam tables,\")\n",
+ "Pr=2.929\n",
+ "Tts=668 #R\n",
+ "hts=159.9 #B/lb\n",
+ "Vts=math.sqrt(2*32.2*778*(h0-hts))\n",
+ "vts=53.34*Tts/(Pt*144.)\n",
+ "at=w*vts/(Vts)\n",
+ "Pr2=P2*Pr0/P0\n",
+ "T2s=415 #R\n",
+ "h2s=99.13 #B/lb\n",
+ "h2=110.25 #B/lb\n",
+ "T2=462 #R\n",
+ "V2=math.sqrt(2*32.2*778*(h0-h2))\n",
+ "v2=53.34*T2/(144.*P2)\n",
+ "a2=w*v2/V2\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Exit velocity =\",Vts,\"fps\")\n",
+ "print '%s %.5f %s' %(\"\\n Throat area =\",at,\"ft^2\")\n",
+ "print '%s %.5f %s' %(\"\\n Exit area =\",a2,\"ft^2\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From keenan and kaye steam tables,\n",
+ "Exit velocity = 1264 fps\n",
+ "\n",
+ " Throat area = 0.00246 ft^2\n",
+ "\n",
+ " Exit area = 0.00564 ft^2\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Mechanical_Engineering_Thermodynamics/Chapter_18.ipynb b/Mechanical_Engineering_Thermodynamics/Chapter_18.ipynb new file mode 100755 index 00000000..7131f2a7 --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/Chapter_18.ipynb @@ -0,0 +1,131 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 18 - Turbines"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 336"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate work done, axial thrust and nozzle bucket efficiency\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "drop=50. #B/lb\n",
+ "cv=0.95\n",
+ "Vb=700. #fps\n",
+ "alpha=20.*math.pi/180. #radians\n",
+ "beta=30.*math.pi/180. #radians\n",
+ "Cb=0.95\n",
+ "#calculations\n",
+ "V1=cv*math.sqrt(2*32.2*778*drop)\n",
+ "y1=V1*math.cos(alpha)\n",
+ "z1=V1*math.sin(alpha)\n",
+ "y1R=y1-Vb\n",
+ "V1R=math.sqrt(y1R*y1R + z1*z1)\n",
+ "V2R=Cb*V1R\n",
+ "y2R=-V2R*math.cos(beta)\n",
+ "z2=V2R*math.sin(beta)\n",
+ "Wx=(y1R-y2R)*Vb/32.2\n",
+ "Fa=(z1-z2)/32.2\n",
+ "Vc=1582.77\n",
+ "etanb=Wx/(Vc*Vc /(2*32.2))\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Work per pound of fluid =\",Wx,\"ft lbf/lbm\")\n",
+ "print '%s %.1f %s' %(\"\\n Axial thrust =\",Fa,\"lbf/lbm/sec\")\n",
+ "print '%s %.2f' %(\"\\n Nozzle bucket efficiency = \",etanb)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Work per pound of fluid = 31221 ft lbf/lbm\n",
+ "\n",
+ " Axial thrust = 3.0 lbf/lbm/sec\n",
+ "\n",
+ " Nozzle bucket efficiency = 0.80\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 349"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the internal efficiency and the reheat factor\n",
+ "#initialization of varaibles\n",
+ "ha=1187.2 #B/lb\n",
+ "sa=1.6026 #B/lb R\n",
+ "h3s=895 #B/lb\n",
+ "h1s=1090 #B/lb\n",
+ "p1=28 #psia\n",
+ "h2s=993 #B/lb\n",
+ "p2=6.2 #psia\n",
+ "n=0.65\n",
+ "#calculations\n",
+ "print '%s' %(\"From Table 3,\")\n",
+ "h1=ha-n*(ha-h1s)\n",
+ "s1=1.65 #B/lb R\n",
+ "h2dash=1024 #B/lb\n",
+ "h2=h1-n*(h1-h2dash)\n",
+ "s2=1.706 #B/lb R\n",
+ "h3dash=953. #B/lb\n",
+ "h3=h2-n*(h2-h3dash)\n",
+ "etaT=(ha-h3)/(ha-h3s)\n",
+ "reheat=etaT/n\n",
+ "#results\n",
+ "print '%s %.3f' %(\"Internal efficiency = \",etaT)\n",
+ "print '%s %.2f' %(\"\\n Reheat factor = \",reheat)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From Table 3,\n",
+ "Internal efficiency = 0.675\n",
+ "\n",
+ " Reheat factor = 1.04\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Mechanical_Engineering_Thermodynamics/Chapter_19.ipynb b/Mechanical_Engineering_Thermodynamics/Chapter_19.ipynb new file mode 100755 index 00000000..7bea3b13 --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/Chapter_19.ipynb @@ -0,0 +1,118 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 19 - Reciprocating Expanders and Compressors"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 370"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the Horsepower output and mean effective pressure\n",
+ "#initialization of varaibles\n",
+ "print '%s' %(\"From tables,\")\n",
+ "h1=1185.3 #B/lb\n",
+ "v1=4.896 #cu ft/lb\n",
+ "v2=23.66 #cu ft/lb\n",
+ "h2=1054.3 #B/lb\n",
+ "Pd1=1 #cu ft\n",
+ "Pd2=0.98 #cu ft\n",
+ "N=300 #rpm\n",
+ "#calculations\n",
+ "Wx=h1-h2\n",
+ "Pd=Pd1+Pd2\n",
+ "Cl=0.05\n",
+ "mf=Pd*(1-Cl*(v2/v1 - 1))/v2\n",
+ "P=Wx*mf*N/(2545./60.)\n",
+ "mep=P*33000./(N*Pd)\n",
+ "#results\n",
+ "print '%s %.3f %s' %(\"Horsepower output =\",P,\"hp\")\n",
+ "print '%s %d %s' %(\"\\n Mean effective pressure =\",mep,\"psf\")\n",
+ "#The answers in the book are a bit different due to round off error.\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From tables,\n",
+ "Horsepower output = 62.679 hp\n",
+ "\n",
+ " Mean effective pressure = 3482 psf\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 370"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the mass flow rate when the clearences are 3% and 6%\n",
+ "#initialization of varaibles\n",
+ "R=53.34\n",
+ "T1=540. #R\n",
+ "P1=15. #psia\n",
+ "T2=720. #R\n",
+ "P2=60. #psia\n",
+ "PD=150. #cu ft/min\n",
+ "p1=0.03\n",
+ "p2=0.06\n",
+ "#calculations\n",
+ "v1=R*T1/(P1*144.)\n",
+ "vratio=T1*P2/(P1*T2)\n",
+ "Nmf=PD*(1-p1*(vratio-1))/v1\n",
+ "Nmf2=PD*(1-p2*(vratio-1))/v1\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"For clearance of 3 percent, Mass per min =\",Nmf,\"lb/min\")\n",
+ "print '%s %.1f %s' %(\"\\n For clearance of 6 percent, Mass per min =\",Nmf2,\"lb/min\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "For clearance of 3 percent, Mass per min = 10.6 lb/min\n",
+ "\n",
+ " For clearance of 6 percent, Mass per min = 9.9 lb/min\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Mechanical_Engineering_Thermodynamics/Chapter_2.ipynb b/Mechanical_Engineering_Thermodynamics/Chapter_2.ipynb new file mode 100755 index 00000000..97405b03 --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/Chapter_2.ipynb @@ -0,0 +1,141 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 2 - Work"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 16"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the net work done\n",
+ "#Initialization of variables\n",
+ "from numpy import math\n",
+ "g=1.4 #Gamma\n",
+ "P=100. #psia\n",
+ "V1=3. #cu ft\n",
+ "Pf=20. #psia\n",
+ "#calculations\n",
+ "V2=V1*math.pow((P/Pf),(1/g))\n",
+ "W=(Pf*V2-P*V1)*144./(1-g)\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Net work done =\",W,\"ft lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Net work done = 39810 ft lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 17"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the net work done\n",
+ "#Initialization of variables\n",
+ "Wb=-33000. #ft-lb\n",
+ "V2=3. #cu ft\n",
+ "V1=1. #cu ft\n",
+ "P=69.4 #psia\n",
+ "#calculations\n",
+ "Wa=P*(V2-V1)*144.\n",
+ "W=Wa+Wb\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Net work done =\",W,\"ft-lb\")\n",
+ "print '%s' %(\"The answer is a bit different due to rounding off error in textbook\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Net work done = -13012 ft-lb\n",
+ "The answer is a bit different due to rounding off error in textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 20"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the net work done\n",
+ "import math\n",
+ "#Initialization of variables\n",
+ "b=11. #in\n",
+ "s=15. #in\n",
+ "l=2.4 #in\n",
+ "k=80. #psi per in\n",
+ "#calculations\n",
+ "a=math.pi*b*b /4\n",
+ "L=s/12.\n",
+ "Pm=1.6/l *k\n",
+ "W=Pm*a*L\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Net work done =\",W,\"ft lb\")\n",
+ "print '%s' %(\"The answer is a bit different due to rounding off error in textbook\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Net work done = 6335 ft lb\n",
+ "The answer is a bit different due to rounding off error in textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Mechanical_Engineering_Thermodynamics/Chapter_21.ipynb b/Mechanical_Engineering_Thermodynamics/Chapter_21.ipynb new file mode 100755 index 00000000..540caef4 --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/Chapter_21.ipynb @@ -0,0 +1,261 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 21 - Gas Compression"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 387"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the work done and the net heat transferred\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "R=53.34\n",
+ "T1=540 #R\n",
+ "n=1.4\n",
+ "g=n\n",
+ "n2=1.3\n",
+ "P2=90. #psia\n",
+ "P1=15. #psia\n",
+ "cv=0.171\n",
+ "cp=0.24\n",
+ "#calculations\n",
+ "pv=R*T1\n",
+ "Wk=n*R*T1*(math.pow((P2/P1),((g-1)/g)) -1) /(n-1)\n",
+ "Wn=n2*R*T1*(math.pow((P2/P1),((n2-1)/n2)) -1) /(n2-1)\n",
+ "Wt=R*T1*math.log(P2/P1)\n",
+ "Q=cv*(n-n2)*778*T1*(math.pow((P2/P1),((n2-1)/n2)) -1) /(1-n2)*0.001305\n",
+ "#0.001305 is the conversion factor\n",
+ "#results\n",
+ "print '%s %d %s' %(\"\\n Work in case 1 =\",Wk,\"ft lb/lb\")\n",
+ "print '%s %d %s' %(\"\\n Work in case 2 =\",Wn,\"ft lb/lb\")\n",
+ "print '%s %d %s' %(\"\\n Work in case 3 =\",Wt,\"ft lb/lb\")\n",
+ "print '%s %.1f %s' %(\"\\n Heat transferred =\",Q,\"B/lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ " Work in case 1 = 67394 ft lb/lb\n",
+ "\n",
+ " Work in case 2 = 63914 ft lb/lb\n",
+ "\n",
+ " Work in case 3 = 51609 ft lb/lb\n",
+ "\n",
+ " Heat transferred = -16.0 B/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 389"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the adiabatic and isothermal efficiencies\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "R=53.34\n",
+ "T1=540 #R\n",
+ "n=1.4 #gamma\n",
+ "g=n\n",
+ "n2=1.3 #gamma\n",
+ "P2=90. #psia\n",
+ "P1=15. #psia\n",
+ "cv=0.171\n",
+ "#calculations\n",
+ "pv=R*T1\n",
+ "Wk=n*R*T1*(math.pow((P2/P1),((g-1)/g)) -1) /(n-1)\n",
+ "Wn=n2*R*T1*(math.pow((P2/P1),((n2-1)/n2)) -1) /(n2-1)\n",
+ "Wt=R*T1*math.log(P2/P1)\n",
+ "eta1=Wt/Wn\n",
+ "eta2=Wk/Wn\n",
+ "#results\n",
+ "print '%s %.2f' %(\"Adiabatic efficiency = \",eta2)\n",
+ "print '%s %.2f' %(\"\\n Isothermal efficiency = \",eta1)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Adiabatic efficiency = 1.05\n",
+ "\n",
+ " Isothermal efficiency = 0.81\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 389"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the heat transferred\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "R=53.34\n",
+ "T1=540 #R\n",
+ "n=1.4 #gamma\n",
+ "g=n\n",
+ "n2=1.3 #gamma\n",
+ "P2=90 #psia\n",
+ "P1=15 #psia\n",
+ "cv=0.171\n",
+ "eta=0.95\n",
+ "cp=0.24\n",
+ "#calculations\n",
+ "pv=R*T1\n",
+ "Wk=n*R*T1*(math.pow((P2/P1),((g-1)/g)) -1) /(n-1)\n",
+ "Wn=n2*R*T1*(math.pow((P2/P1),((n2-1)/n2)) -1) /(n2-1)\n",
+ "Wt=R*T1*math.log(P2/P1)\n",
+ "Wx=-Wk/eta\n",
+ "dh=cp*T1*(1.52 - 1)\n",
+ "Q=dh+Wx/778.\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Heat transferred =\",Q,\"B/lb\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Heat transferred = -23.8 B/lb\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4 - Pg 395"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the volumetric efficiency\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "n=1.3\n",
+ "P1=15. #psia\n",
+ "P2=75. #psia\n",
+ "eta=0.5\n",
+ "eta2=0\n",
+ "#calculations\n",
+ "Pr=math.pow((P2/P1),(1/n))\n",
+ "Cl=(1-eta)/(Pr-1)\n",
+ "Cl2=(1-eta2)/(Pr-1)\n",
+ "#results\n",
+ "print '%s %.3f' %(\"For volumetric efficiency to be 0.5, Clearance = \",Cl)\n",
+ "print '%s %.3f' %(\"\\n For volumetric efficiency to be 0, Clearance = \",Cl2)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "For volumetric efficiency to be 0.5, Clearance = 0.204\n",
+ "\n",
+ " For volumetric efficiency to be 0, Clearance = 0.408\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5 - Pg 398"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the single stage and two stage efficiencies\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "P1=5 #psia\n",
+ "P2=83.5 #psia\n",
+ "n=1.25\n",
+ "per=0.03\n",
+ "#calculations\n",
+ "nv1=1- per*(math.pow((P2/P1),(1/n)) -1)\n",
+ "nv2=1-per*(math.pow((math.sqrt(P2/P1)),(1/n)) -1)\n",
+ "#results\n",
+ "print '%s %.3f' %(\"For single stage machine = \",nv1)\n",
+ "print '%s %.3f' %(\"\\n For Two stage machine = \",nv2)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "For single stage machine = 0.745\n",
+ "\n",
+ " For Two stage machine = 0.937\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Mechanical_Engineering_Thermodynamics/Chapter_22.ipynb b/Mechanical_Engineering_Thermodynamics/Chapter_22.ipynb new file mode 100755 index 00000000..4a1a7d0c --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/Chapter_22.ipynb @@ -0,0 +1,256 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 22 - Combustion Processes : First law analysis"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5 - Pg 419"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the heat transferred from the system\n",
+ "#initialization of varaibles\n",
+ "mO=1.33\n",
+ "CO=0.155\n",
+ "mC=3.67\n",
+ "CC=0.165\n",
+ "t2=1000. #F\n",
+ "tb=68. #F\n",
+ "t1=300. #F\n",
+ "mC2=1.\n",
+ "CC2=0.17\n",
+ "mO2=4.\n",
+ "CO2=0.155\n",
+ "H=-14087 #B/lb\n",
+ "#calculations\n",
+ "dE2=mO*CO*(t2-tb) + mC*CC*(t2-tb)\n",
+ "dE1=mO2*CO2*(tb-t1) + mC2*CC2*(tb-t1)\n",
+ "Q=dE2+dE1+H\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Heat transfer from the system =\",Q,\"Btu\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Heat transfer from the system = -13513 Btu\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6 - Pg 422"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the cp value of methane\n",
+ "#initialization of varaibles\n",
+ "H1=17889 #Cal/g\n",
+ "H2=-94052 #Cal/g\n",
+ "H3=2* -68317 #Cal/g\n",
+ "#calculations\n",
+ "x=H1+H2+H3\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Constant pressure heating value of methane =\",x,\" cal/gm formula wt.\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Constant pressure heating value of methane = -212797 cal/gm formula wt.\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7 - Pg 423"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the cv value of methane\n",
+ "#initialization of varaibles\n",
+ "HV=4344 #B/lb\n",
+ "xC=56 #lb\n",
+ "R=1.986\n",
+ "T=530 #R\n",
+ "MC=56 #g/mol\n",
+ "#calculations\n",
+ "HR=xC*HV\n",
+ "Eb=-HR -R*T*(2-3)\n",
+ "HV=-Eb/MC\n",
+ "#results\n",
+ "print '%s %d %s' %(\"COnstant volume heating value =\",HV,\"B/lb \")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "COnstant volume heating value = 4325 B/lb \n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 8 - Pg 426"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the products temperature\n",
+ "#initialization of varaibles\n",
+ "dH2=14087 #B/lb\n",
+ "xc=3.67 #lb\n",
+ "xN=8.78 #lb\n",
+ "tb=100 #F\n",
+ "#calculations\n",
+ "dt2=dH2/(xc*0.196 + xN*0.248)\n",
+ "t2=dt2+tb\n",
+ "#results\n",
+ "print '%s %d %s' %(\"products temperature =\",t2,\"F\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "products temperature = 4963 F\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9 - Pg 430"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the efficiency\n",
+ "#initialization of varaibles\n",
+ "Heat=14087 #Btu/lb\n",
+ "x1=0.9 #lb\n",
+ "x2=0.05 #lb\n",
+ "x3=0.05 #lb\n",
+ "Heat2=3952 #Btu/lb\n",
+ "#calculations\n",
+ "h1=x1*Heat\n",
+ "h2=x2*Heat2\n",
+ "e=(h1+h2)/Heat\n",
+ "#results\n",
+ "print '%s %.2f' %(\"Efficiency = \",e)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Efficiency = 0.91\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10 - Pg 431"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the efficiency of the process\n",
+ "#initialization of varaibles\n",
+ "print '%s' %(\"From data and steam tables,\")\n",
+ "Q=10240000. #B/hr\n",
+ "w=700. #lb/hr\n",
+ "h=19500. #B/lb\n",
+ "#calculations\n",
+ "HV=w*h\n",
+ "e=Q/HV\n",
+ "#results\n",
+ "print '%s %.2f' %(\"Efficiency = \",e)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From data and steam tables,\n",
+ "Efficiency = 0.75\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Mechanical_Engineering_Thermodynamics/Chapter_23.ipynb b/Mechanical_Engineering_Thermodynamics/Chapter_23.ipynb new file mode 100755 index 00000000..1ecba1a2 --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/Chapter_23.ipynb @@ -0,0 +1,302 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 23 - Internal Combustion"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 437"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the efficiency, mean effective pressure and work per machine cycle\n",
+ "#initialization of varaibles\n",
+ "print '%s' %(\"from chart\")\n",
+ "T6=2600 #R\n",
+ "mratio=0.05\n",
+ "V6d=82 #cu ft\n",
+ "E6d=465 #Btu\n",
+ "H6d=655 #Btu\n",
+ "T6d=2480 #R\n",
+ "Hs=58 #Btu\n",
+ "LHV=19256\n",
+ "#calculations\n",
+ "H1=mratio*H6d + (1-mratio)*Hs\n",
+ "dV=22-3.67\n",
+ "PD=0.12\n",
+ "Work=446*PD/dV\n",
+ "pm=Work*778/(144.*PD)\n",
+ "eta=446./((1-mratio)*(LHV*0.0665))\n",
+ "#results\n",
+ "print '%s %.3f' %(\"Efficiency = \",eta)\n",
+ "print '%s %d %s' %(\"\\n Mean effective pressure =\",pm,\"psi\")\n",
+ "print '%s %.2f %s' %(\"\\n Work per machine cycle =\",Work,\"Btu\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "from chart\n",
+ "Efficiency = 0.367\n",
+ "\n",
+ " Mean effective pressure = 131 psi\n",
+ "\n",
+ " Work per machine cycle = 2.92 Btu\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 441"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the efficiency of the machine\n",
+ "#initialization of varaibles\n",
+ "f=0.03\n",
+ "T6=1500. #R\n",
+ "print '%s' %(\"from air tables,\")\n",
+ "hi=131.46 #B/lb\n",
+ "h6=381 #B/lb\n",
+ "vratio=1/15.\n",
+ "v1r=120.7\n",
+ "P1=15. #psi\n",
+ "T1=580. #R\n",
+ "x=0.5\n",
+ "Tb=520. #R\n",
+ "H=18500 #B/lb\n",
+ "mh=0.0345\n",
+ "m3=1.065\n",
+ "#calculations\n",
+ "h1=f*h6+(1-f)*hi\n",
+ "v2r=v1r*vratio\n",
+ "T2=1615 #R\n",
+ "u2=289.05 #B/lb\n",
+ "P2=T2*1/vratio *P1/T1\n",
+ "theo=0.069 #lb/lb of air\n",
+ "m=theo*x\n",
+ "h3B=0.242*Tb\n",
+ "m3=1+0.03+0.0345\n",
+ "h3=(638+284)/1.065 +h3B\n",
+ "T3=3520 #R\n",
+ "P3=626 #psi\n",
+ "v3=53.34*T3/(P3*144)\n",
+ "v3p=v3*m3\n",
+ "v1=53.35*T1/(144*P1)\n",
+ "v2=14.7/P1\n",
+ "m1=1.03\n",
+ "h3=992.\n",
+ "h4=531.\n",
+ "T3=3520. #R\n",
+ "T4=2030. #R\n",
+ "W12=m1*(98.9-289.05)\n",
+ "W23=P2*(v3p-v2)*144/778.\n",
+ "W34=m3*(h3-h4-53.4*(T3-T4)/778.)\n",
+ "W=W12+W23+W34\n",
+ "eta=W/(mh*H)\n",
+ "#results\n",
+ "print '%s %.3f' %(\"Efficiency = \",eta)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "from air tables,\n",
+ "Efficiency = 0.516\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 448"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the efficiency, Air rate and back work ratio of the process\n",
+ "#initialization of varaibles\n",
+ "print '%s' %(\"Using air tables,\")\n",
+ "h1=124.27\n",
+ "pr1=1.2147\n",
+ "p2byp1=6.\n",
+ "p1=15.\n",
+ "p4=15.\n",
+ "eta=0.8\n",
+ "#calculations\n",
+ "pr2=p2byp1*pr1\n",
+ "h2s=197.5\n",
+ "h2=h1+(h2s-h1)/eta\n",
+ "h2B=124.3\n",
+ "dhB=-18500 #B/lb\n",
+ "dh2=h2B-h2\n",
+ "T3=1910 #R\n",
+ "h3=479.85\n",
+ "pr3=144.53\n",
+ "h3B=h2B\n",
+ "dh3=h3-h3B\n",
+ "wratio=(-dh3-dh2)/(dh3+dhB)\n",
+ "pr4=28.91\n",
+ "h4s=306.9\n",
+ "h4=h3-eta*(h3-h4s)\n",
+ "Wt=(1+wratio)*(h3-h4)\n",
+ "Wc=(h2-h2B)\n",
+ "Wnet=Wt-Wc\n",
+ "E=Wnet/(wratio*-dhB)\n",
+ "rate=2545./Wnet\n",
+ "BWratio=Wc/Wnet\n",
+ "#results\n",
+ "print '%s %.3f' %(\"Efficiency = \",E)\n",
+ "print '%s %.1f %s' %(\"\\n Air rate =\",rate,\"lb air/hp hr\")\n",
+ "print '%s %.2f' %(\"\\n Back work ratio = \",BWratio)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Using air tables,\n",
+ "Efficiency = 0.182\n",
+ "\n",
+ " Air rate = 52.1 lb air/hp hr\n",
+ "\n",
+ " Back work ratio = 1.87\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4 - Pg 451"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the specific impulse, thrust and efficiency of the process\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "V1=587. #fps\n",
+ "etaD=0.9\n",
+ "etaC=0.8\n",
+ "h1=114.69\n",
+ "P1=10. #psia\n",
+ "P6=P1\n",
+ "P3=626 #psia\n",
+ "dhB=-19100. #B/lb\n",
+ "T1=480. #R\n",
+ "#calculations\n",
+ "h2s=etaD*V1*V1 /(778.*2*32.2) +h1\n",
+ "print '%s' %(\"From tables,\")\n",
+ "Pr2s=1.104\n",
+ "Pr1=0.9182\n",
+ "P2=P1*Pr2s/Pr1\n",
+ "h2=h1+(h2s-h1)/etaD\n",
+ "T2=509. #R\n",
+ "Pr2=1.127\n",
+ "Pr3s=Pr2*P3/P2\n",
+ "Pr3s=6.76\n",
+ "h3s=203.2\n",
+ "h3=(h3s-h2)/etaC +h2\n",
+ "T3=930. #R\n",
+ "P3=6*P2\n",
+ "T4=2160. #R\n",
+ "h4=549.35\n",
+ "Pr4=238.\n",
+ "h4B=126.66\n",
+ "dh4=422.7\n",
+ "h3B=h4B\n",
+ "dh3=h3-h3B\n",
+ "cp=0.5\n",
+ "Ta=480. #R\n",
+ "Tb=530. #R\n",
+ "dhf=cp*(Tb-Ta)\n",
+ "wratio=(-dh4+dh3)/(dh4+dhf+dhB)\n",
+ "h5s=425.3\n",
+ "Pr5s=93.1\n",
+ "P5=27.6\n",
+ "T5=1801 #R\n",
+ "Pr5=114.28\n",
+ "Pr6s=Pr5*P6/P5\n",
+ "h5=450.\n",
+ "h6=351.\n",
+ "V6=math.sqrt(2*32.2*778*(h5-h6))\n",
+ "SI=((1+wratio)*V6 -V1)/(32.2)\n",
+ "v1=53.34*T1/(P1*144.)\n",
+ "wa=V1/v1\n",
+ "thrust = wa*SI\n",
+ "SC=wa*0.0174*3600/1840.\n",
+ "eff=2545/(SC*-dhB)\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Specific impulse =\",SI,\"lb/lb per sec of air\")\n",
+ "print '%s %d %s' %(\"\\n Thrust =\",thrust,\"lb\")\n",
+ "print '%s %.3f' %(\"\\n Efficiency = \",eff)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From tables,\n",
+ "Specific impulse = 52.1 lb/lb per sec of air\n",
+ "\n",
+ " Thrust = 1721 lb\n",
+ "\n",
+ " Efficiency = 0.119\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Mechanical_Engineering_Thermodynamics/Chapter_24.ipynb b/Mechanical_Engineering_Thermodynamics/Chapter_24.ipynb new file mode 100755 index 00000000..bc3bc67c --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/Chapter_24.ipynb @@ -0,0 +1,76 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 24 - Refrigeration"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 461"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the cop in both cases and also the piston displacement\n",
+ "#initialization of varaibles\n",
+ "print '%s' %(\"From tables,\")\n",
+ "h1=611.8 #B/lb\n",
+ "h2=704.4 #B/lb\n",
+ "h3=127.4 #B/lb\n",
+ "h4=h3\n",
+ "T2=460. #R\n",
+ "T1=76+460. #R\n",
+ "W=10000. #B/hr\n",
+ "e=0.7\n",
+ "#calculations\n",
+ "Qe=h1-h4\n",
+ "Wc=h2-h1\n",
+ "CP=Qe/Wc\n",
+ "CP2=T2/(T1-T2)\n",
+ "w=W/(Qe*60.)\n",
+ "v1=9.116 #cu ft/lb\n",
+ "PD=w*v1/(e)\n",
+ "#results\n",
+ "print '%s %.2f' %(\"Coefficient of performance in case 1 = \",CP)\n",
+ "print '%s %.2f' %(\"\\n Coefficient of performance in case 2 = \",CP2)\n",
+ "print '%s %.2f %s' %(\"\\n Piston displacement =\",PD,\"cu ft/min\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From tables,\n",
+ "Coefficient of performance in case 1 = 5.23\n",
+ "\n",
+ " Coefficient of performance in case 2 = 6.05\n",
+ "\n",
+ " Piston displacement = 4.48 cu ft/min\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Mechanical_Engineering_Thermodynamics/Chapter_25.ipynb b/Mechanical_Engineering_Thermodynamics/Chapter_25.ipynb new file mode 100755 index 00000000..8b36d41a --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/Chapter_25.ipynb @@ -0,0 +1,294 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 25 - Air - Water Vapor Mixtures"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 482"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the specific humidity and dew temperature\n",
+ "#initialization of varaibles\n",
+ "Pg=0.4298 #steam tables psi\n",
+ "phi=0.5\n",
+ "P=14.7 #psi\n",
+ "#calculations\n",
+ "pw=phi*Pg\n",
+ "Pa=P-pw\n",
+ "gamma=0.622*pw/Pa\n",
+ "T=55 #F from dew point tables \n",
+ "#results\n",
+ "print '%s %.5f %s' %(\"Specific humidity =\",gamma,\"lb water/lb dry air\")\n",
+ "print '%s %d %s' %(\"\\n Dew temperature =\",T,\"F\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Specific humidity = 0.00923 lb water/lb dry air\n",
+ "\n",
+ " Dew temperature = 55 F\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 486"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the enthalpy, relative and specific humidities, Dew point temperature of the liquid\n",
+ "#initialization of varaibles\n",
+ "print '%s' %(\"From psychrometric chart ,\")\n",
+ "hgdp=1061.8 \n",
+ "cpw=0.44\n",
+ "tdb=72 #F\n",
+ "cp=0.24\n",
+ "g=0.0071\n",
+ "#calculations\n",
+ "rh=0.42\n",
+ "sp=g\n",
+ "tdp=58 #F\n",
+ "hw=hgdp+cpw*tdb\n",
+ "h=cp*tdb+g*hw\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Enthalpy =\",h,\" B/lb dry air\")\n",
+ "print '%s %.2f' %(\"\\n relative humidity = \",rh)\n",
+ "print '%s %.2f' %(\"\\n specific humidity = \",sp)\n",
+ "print '%s %d %s' %(\"\\n Dew point temperature =\",tdp,\"F\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From psychrometric chart ,\n",
+ "Enthalpy = 25.04 B/lb dry air\n",
+ "\n",
+ " relative humidity = 0.42\n",
+ "\n",
+ " specific humidity = 0.01\n",
+ "\n",
+ " Dew point temperature = 58 F\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 488"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the water and heat to be supplied\n",
+ "#initialization of varaibles\n",
+ "print '%s' %(\"From the psychrometric chart,\")\n",
+ "ha=12.9 #B/lb\n",
+ "g1=0.0032 #lb water/ lb dry air\n",
+ "g2=0.0078 #lb water/ lb dry air\n",
+ "hl=13 #B/lb\n",
+ "hd=25.33 #B/lb\n",
+ "p=14.7 #psia\n",
+ "phi=0.6\n",
+ "cp=0.24\n",
+ "t2=70 #F\n",
+ "#calculations\n",
+ "wl=g2-g1\n",
+ "Q=hd-ha-wl*hl\n",
+ "pg=0.1217 #psia\n",
+ "pa=p-pg\n",
+ "G1=0.622*pg*phi/pa\n",
+ "G2=0.00788\n",
+ "wl2=G2-G1\n",
+ "t1=40 #F\n",
+ "hw1=1061.8 + 0.44*t1\n",
+ "hw2=1092.6 #B/lb\n",
+ "Q2=cp*(t2-t1) + G2*hw2 -G1*hw1 - wl2*hl\n",
+ "#results\n",
+ "print '%s' %(\"Method 1\")\n",
+ "print '%s %.4f %s' %(\"\\n Water to be supplied =\",wl,\"lb/lb of dry air\")\n",
+ "print '%s %.1f %s' %(\"\\n heat supplied =\",Q,\"B/lb of dry air\")\n",
+ "print '%s' %(\"\\n Method 2\")\n",
+ "print '%s %.5f %s' %(\"\\n Water to be supplied =\",wl2,\"lb/lb of dry air\")\n",
+ "print '%s %.1f %s' %(\"\\n heat supplied =\",Q2,\"B/lb of dry air\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From the psychrometric chart,\n",
+ "Method 1\n",
+ "\n",
+ " Water to be supplied = 0.0046 lb/lb of dry air\n",
+ "\n",
+ " heat supplied = 12.4 B/lb of dry air\n",
+ "\n",
+ " Method 2\n",
+ "\n",
+ " Water to be supplied = 0.00476 lb/lb of dry air\n",
+ "\n",
+ " heat supplied = 12.4 B/lb of dry air\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4 - Pg 489"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the air supplied, temperature and humidity of air\n",
+ "#initialization of varaibles\n",
+ "print '%s' %(\"From psychrometric charts,\")\n",
+ "e=0.7\n",
+ "phi=0.5\n",
+ "g1=0.0131 #lb water/lb dry air\n",
+ "h1=32.36 #B/lb of dry air\n",
+ "g3=0.0073\n",
+ "h3=24.26 #B/lb\n",
+ "pg=0.3390 #psia\n",
+ "T3=528 #R\n",
+ "V3=1000\n",
+ "Rw=85.8\n",
+ "#calculations\n",
+ "pw3=phi*pg\n",
+ "ww3=pw3*144*V3/(Rw*T3)\n",
+ "wa3=ww3/g3\n",
+ "wa1=phi*wa3\n",
+ "wa2=phi*wa3\n",
+ "ww1=g1*wa1\n",
+ "ww2=ww3-ww1\n",
+ "g2=ww2/wa2\n",
+ "h2=(wa3*h3-wa1*h1)/wa2\n",
+ "tdb=61 #F\n",
+ "#results\n",
+ "print '%s %.3f %s' %(\"Air supplied =\",ww2,\"lb/min\")\n",
+ "print '%s %d %s' %(\"\\n temperature =\",tdb,\"F\")\n",
+ "print '%s %.5f %s' %(\"\\n Humidity =\",g2,\"lb water/lb dry air\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From psychrometric charts,\n",
+ "Air supplied = 0.055 lb/min\n",
+ "\n",
+ " temperature = 61 F\n",
+ "\n",
+ " Humidity = 0.00150 lb water/lb dry air\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5 - Pg 493"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the cooling temperature, heat transfer and fraction of heat removed\n",
+ "#initialization of varaibles\n",
+ "print '%s' %(\"From psychrometric charts,\")\n",
+ "g1=0.0131 #lb water/lb dry air\n",
+ "g2=0.0093 #lb water/lb dry air\n",
+ "h1=32.36 #B/lb dry air\n",
+ "h2=27.03\n",
+ "hd2=23.4 #B/lb dry air\n",
+ "hf=23.4 #B/lb dry air\n",
+ "hw1=1094.5\n",
+ "#calculations\n",
+ "tdp=55.3 #F\n",
+ "wratio=g1-g2\n",
+ "Qc=hd2-h1+wratio*hf\n",
+ "Qh=h2-hd2\n",
+ "Heat=wratio*(hw1-hf)\n",
+ "frac=-Heat/Qc\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Cooling temperature = \",tdp,\"F\")\n",
+ "print '%s %.2f %s' %(\"\\n heat transfer = \",Heat,\"B/lb dry air\")\n",
+ "print '%s %.2f' %(\"\\n Fraction of heat removed =\",frac)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "From psychrometric charts,\n",
+ "Cooling temperature = 55.3 F\n",
+ "\n",
+ " heat transfer = 4.07 B/lb dry air\n",
+ "\n",
+ " Fraction of heat removed = 0.46\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Mechanical_Engineering_Thermodynamics/Chapter_3.ipynb b/Mechanical_Engineering_Thermodynamics/Chapter_3.ipynb new file mode 100755 index 00000000..f5793d78 --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/Chapter_3.ipynb @@ -0,0 +1,240 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 3 - Temperature and Heat"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 33"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the mass of water required per pound of iron \n",
+ "import math\n",
+ "#Initialization of variables\n",
+ "T1=500 #F\n",
+ "T2=100 #F\n",
+ "Tf=75 #F\n",
+ "cpi=0.120 #B/lb F\n",
+ "cpw=1.0 #B/lb F\n",
+ "#calculations\n",
+ "Qw=1*cpw*(T2-Tf)\n",
+ "Qi=-1*cpi*(T2-T1)\n",
+ "mw=Qi/Qw\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Mass of water = \",mw,\"lb water/lb iron\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mass of water = 1.92 lb water/lb iron\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 34"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the net heat transferred\n",
+ "import math\n",
+ "import scipy\n",
+ "from scipy import integrate\n",
+ "#Initialization of variables\n",
+ "m=5 #lb\n",
+ "T1=1540+460 #R\n",
+ "T2=540+460 #R\n",
+ "#calculations\n",
+ "def q(T):\n",
+ "\tcp=m*(0.248+0.448*math.pow(10,-8) *T*T)\n",
+ "\treturn cp;\n",
+ "\n",
+ "Q=scipy.integrate.quad(q,T1,T2)\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Heat transferred =\",Q[0],\"Btu\")\n",
+ "print '%s' %(\"The answer is a bit different due to rounding off error in textbook\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Heat transferred = -1292 Btu\n",
+ "The answer is a bit different due to rounding off error in textbook\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 36"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the heat required for the process\n",
+ "#Initialization of variables\n",
+ "Tm=235 #F\n",
+ "Tb=832 #F\n",
+ "T=70 #F\n",
+ "cps=0.18 #B/lb F\n",
+ "cpl=0.235 #B/lb F\n",
+ "Lf=15.8 #B/lb\n",
+ "Lv=120 #B/lb\n",
+ "m=10 #lb\n",
+ "#calculations\n",
+ "Qa=m*cps*(Tm-T)\n",
+ "Qb=m*Lf\n",
+ "Qc=m*cpl*(Tb-Tm)\n",
+ "Qd=m*Lv\n",
+ "Q=Qa+Qb+Qc+Qd\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Heat required =\",Q,\"Btu\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Heat required = 3057.9 Btu\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4 - Pg 36"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the mass of ice required for the process\n",
+ "#Initialization of variables\n",
+ "T1=22 #F\n",
+ "T2=32 #F\n",
+ "T3=40 #F\n",
+ "T4=70 #F\n",
+ "cps=0.501 #B/lb F\n",
+ "cpw=1 #B/lb F\n",
+ "Lf=143.3 #B/lb\n",
+ "m=40 #lb\n",
+ "#calculations\n",
+ "Qa=cps*(T2-T1)\n",
+ "Qb=Lf\n",
+ "Qc=cpw*(T3-T2)\n",
+ "Qd=m*cpw*(T3-T4)\n",
+ "mi=-Qd/(Qa+Qb+Qc)\n",
+ "#results\n",
+ "print '%s %.2f %s' %(\"Mass of ice required =\",mi,\"lb ice\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mass of ice required = 7.68 lb ice\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5 - Pg 37"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the extra mass of ice required\n",
+ "#Initialization of variables\n",
+ "T1=22 #F\n",
+ "T2=32 #F\n",
+ "T3=40 #F\n",
+ "T4=70 #F\n",
+ "cps=0.501 #B/lb F\n",
+ "cpw=1 #B/lb F\n",
+ "Lf=143.3 #B/lb\n",
+ "m=40 #lb\n",
+ "cp=0.092\n",
+ "mc=10\n",
+ "#calculations\n",
+ "Qa=cps*(T2-T1)\n",
+ "Qb=Lf\n",
+ "Qc=cpw*(T3-T2)\n",
+ "Qe=mc*cp*(T3-T4)\n",
+ "mi=-Qe/(Qa+Qb+Qc)\n",
+ "#results\n",
+ "print '%s %.3f %s' %(\"Extra Mass of ice required =\",mi,\"lb ice\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Extra Mass of ice required = 0.177 lb ice\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Mechanical_Engineering_Thermodynamics/Chapter_5.ipynb b/Mechanical_Engineering_Thermodynamics/Chapter_5.ipynb new file mode 100755 index 00000000..ef287258 --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/Chapter_5.ipynb @@ -0,0 +1,225 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 5 - First Law of Thermodynamics"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 59"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the change in internal energy\n",
+ "#initialization of varaibles\n",
+ "V1=10 #cu ft\n",
+ "P1=15 #psia\n",
+ "V2=5 #cu ft\n",
+ "H=34.7 #Btu\n",
+ "#calculations\n",
+ "W=P1*(V2-V1)*144\n",
+ "dE=-H-W/778.\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Internal energy change =\",dE,\"Btu\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Internal energy change = -20.8 Btu\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 59"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the work done and the change in Internal energy\n",
+ "#initialization of varaibles\n",
+ "dT=35 #F\n",
+ "H=34 #Btu\n",
+ "cv=1.2 #B/lb F\n",
+ "m= 2 #lb\n",
+ "#calculations\n",
+ "U=cv*dT*m\n",
+ "W=H-U\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Work done =\",W,\"Btu\")\n",
+ "print '%s %.1f %s' %(\"\\n Internal energy change =\",U,\"Btu\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Work done = -50 Btu\n",
+ "\n",
+ " Internal energy change = 84.0 Btu\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 60"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the change in internal energy in both cases\n",
+ "#initialization of varaibles\n",
+ "p=500 #psia\n",
+ "V2=0.9278 #cu ft\n",
+ "V1=0.0197 #cu ft\n",
+ "h2=1204.4 #B/lb\n",
+ "h1=449.4 #B/lb\n",
+ "#calculations\n",
+ "W=p*(V2-V1)*144.\n",
+ "du=h2-h1-144*p*(V2-V1)/778.\n",
+ "du2=h2-h1-W/778.\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Change in internal energy = \",du,\"Btu\")\n",
+ "print '%s %.1f %s' %(\"\\n Method 2, Internal energy change = \",du2,\"Btu\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Change in internal energy = 671.0 Btu\n",
+ "\n",
+ " Method 2, Internal energy change = 671.0 Btu\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4a - Pg 61"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the heat liberated\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "P1=75. #psia\n",
+ "P2=15. #psia\n",
+ "V1=6. #cu ft\n",
+ "g=1.2 #gamma\n",
+ "m=3. #lb\n",
+ "#calculations\n",
+ "V2=V1*math.pow((P1/P2),(1/g))\n",
+ "U=0.48*(P2*V2-P1*V1)\n",
+ "W=(P2*V2-P1*V1)*144./((1-g)*778.)\n",
+ "Q=U+W\n",
+ "#results\n",
+ "print '%s %.3f %s' %(\"Heat = \",Q,\"Btu\")\n",
+ "#The answer given in textbook is wrong. please check using a calculator\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Heat = 47.162 Btu\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4b - Pg 62"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the net work done\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "P1=75. #psia\n",
+ "P2=15. #psia\n",
+ "V1=6. #cu ft\n",
+ "g=1.2 #gamma\n",
+ "m=3 #lb\n",
+ "#calculations\n",
+ "Q=30 #Btu\n",
+ "V2=V1*math.pow((P1/P2),(1/g))\n",
+ "U=0.48*(P2*V2-P1*V1)\n",
+ "W=Q-U\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Work done =\",W,\" Btu\")\n",
+ "#The answer given in textbook is wrong. please check using a calculator\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Work done = 80.8 Btu\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Mechanical_Engineering_Thermodynamics/Chapter_6.ipynb b/Mechanical_Engineering_Thermodynamics/Chapter_6.ipynb new file mode 100755 index 00000000..49800538 --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/Chapter_6.ipynb @@ -0,0 +1,154 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 6 - Flow processes : First law analysis"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 76"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the power output of the machine\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "u1=1111.9 #Btu/lb\n",
+ "P1=170. #psia\n",
+ "v1=2.675 #cu ft/lb\n",
+ "v2=100.9 #cu ft/lb\n",
+ "z1=10. #ft\n",
+ "V1=6000./60. #ft/sec\n",
+ "Q=-1000.\n",
+ "u2=914.6 #B/lb\n",
+ "P2=3. #psia\n",
+ "V2=300. #ft/sec\n",
+ "rate=2500. #lb/hr\n",
+ "#calculations\n",
+ "Wx=rate*(u1-u2 + (P1*v1-P2*v2)*144/778 +(V1*V1 -V2*V2)/(2*32.2*778.) +z1/778. +Q/rate)\n",
+ "f=3.92*math.pow(10,-4)\n",
+ "power = Wx*f\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Power output of turbine = \",Wx,\"B/hr\")\n",
+ "print '%s %.1f %s' %(\"\\n Power output in hp =\",power,\"hp\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Power output of turbine = 558647 B/hr\n",
+ "\n",
+ " Power output in hp = 219.0 hp\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 78"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the flow rate\n",
+ "#initialization of varaibles\n",
+ "w1=500. #lb/min\n",
+ "h1=132.9 #lb/min\n",
+ "h2=1150. #B/lb\n",
+ "h3=180. #B/lb\n",
+ "#calculations\n",
+ "w2=(w1*h1-w1*h3)/(h3-h2)\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Flow rate =\",w2,\"lb/min\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Flow rate = 24.3 lb/min\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 79"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the average velocity and rate of flow\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "v2=5.434 #cu ft/lb\n",
+ "v1=4.937 #cu ft/lb\n",
+ "h1=1227.6\n",
+ "h2=1223.9\n",
+ "A1=math.pi/144\n",
+ "#calculations\n",
+ "Vratio=v2/v1\n",
+ "V1=math.sqrt(64.4*(h1-h2)*778./(Vratio*Vratio -1))\n",
+ "V2=V1*Vratio\n",
+ "w=A1*V1/v1\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Average velocity at 1 =\",V1,\"fps\")\n",
+ "print '%s %d %s' %(\"\\n Average velocity at 2 =\",V2,\"fps\")\n",
+ "print '%s %.2f %s' %(\"\\n Rate of flow = \",w,\"lb/sec\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Average velocity at 1 = 936 fps\n",
+ "\n",
+ " Average velocity at 2 = 1030 fps\n",
+ "\n",
+ " Rate of flow = 4.14 lb/sec\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Mechanical_Engineering_Thermodynamics/Chapter_8.ipynb b/Mechanical_Engineering_Thermodynamics/Chapter_8.ipynb new file mode 100755 index 00000000..fe970912 --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/Chapter_8.ipynb @@ -0,0 +1,244 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 8 - Basic Applications of the Second Law"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1 - Pg 130"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the Max Efficiency possible\n",
+ "#initialization of varaibles\n",
+ "T1=85+460. #R\n",
+ "T2=50+460. #R\n",
+ "#calculations\n",
+ "eta=(T1-T2)/T1\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Max. efficiency =\",eta*100,\"percent\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Max. efficiency = 6.4 percent\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2 - Pg 130"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the Max Efficiency possible\n",
+ "#initialization of varaibles\n",
+ "T1=1050+460. #R\n",
+ "T2=90+460. #R\n",
+ "#calculations\n",
+ "eta=(T1-T2)/T1\n",
+ "#results\n",
+ "print '%s %d %s' %(\"Max. possible efficiency = \",eta*100,\"percent\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Max. possible efficiency = 63 percent\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3 - Pg 130"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the change in entropy\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "T1=50+460. \t#R\n",
+ "T2=150+460. #R\n",
+ "m=1.\n",
+ "cp=0.240\n",
+ "#calculations\n",
+ "ds=m*cp*(math.log(T2) - math.log(T1))\n",
+ "#results\n",
+ "print '%s %.4f %s' %(\"Change in entropy =\",ds,\"B/ F abs\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Change in entropy = 0.0430 B/ F abs\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4 - Pg 131"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#calculate the change in entropy\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "T1=50+460. #R\n",
+ "T2=150+460. #R\n",
+ "m=1\n",
+ "cp=0.240\n",
+ "#calculations\n",
+ "ds=m*cp*(math.log(T2) - math.log(T1))\n",
+ "#results\n",
+ "print '%s %.4f %s' %(\"Change in entropy = \",ds,\"B/ F abs\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Change in entropy = 0.0430 B/ F abs\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5 - Pg 131"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the total change in entropy\n",
+ "#initialization of varaibles\n",
+ "import math\n",
+ "Q=826. #B/lb\n",
+ "T=860. #R\n",
+ "T1=2000+460. #R\n",
+ "T2=1000+460. #R\n",
+ "#calculations\n",
+ "ds=Q/T\n",
+ "dsgas=Q*(math.log(T2)-math.log(T1))/(T1-T2)\n",
+ "dst=ds+dsgas\n",
+ "#results\n",
+ "print '%s %.3f %s' %(\"Total entropy change =\",dst,\"B/R\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total entropy change = 0.530 B/R\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6 - Pg 132"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the loss in energy and increase in unavailable energy\n",
+ "#initialization of varaibles\n",
+ "T0=540. #R\n",
+ "Q=826. #B/lb\n",
+ "ds=0.534\n",
+ "ds2=0.431\n",
+ "#calculations\n",
+ "tds=T0*ds\n",
+ "tds2=T0*ds2\n",
+ "H=Q-tds2\n",
+ "Loss=tds/H\n",
+ "#results\n",
+ "print '%s %.1f %s' %(\"Increase in unavailable energy = \",tds,\"Btu\")\n",
+ "print '%s %.1f %s' %(\"Loss =\",Loss*100,\"percent\")\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Increase in unavailable energy = 288.4 Btu\n",
+ "Loss = 48.6 percent\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Mechanical_Engineering_Thermodynamics/README.txt b/Mechanical_Engineering_Thermodynamics/README.txt new file mode 100755 index 00000000..2046585c --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/README.txt @@ -0,0 +1,10 @@ +Contributed By: Chaitanya Potti +Course: btech +College/Institute/Organization: IITB +Department/Designation: Chemical engineering +Book Title: Mechanical Engineering Thermodynamics +Author: Mooney D A +Publisher: Prentice Hall, London +Year of publication: 1953 +Isbn: 1466511796 +Edition: 1
\ No newline at end of file diff --git a/Mechanical_Engineering_Thermodynamics/screenshots/chap23.png b/Mechanical_Engineering_Thermodynamics/screenshots/chap23.png Binary files differnew file mode 100755 index 00000000..0eed9ce1 --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/screenshots/chap23.png diff --git a/Mechanical_Engineering_Thermodynamics/screenshots/chap24.png b/Mechanical_Engineering_Thermodynamics/screenshots/chap24.png Binary files differnew file mode 100755 index 00000000..4ff3b58c --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/screenshots/chap24.png diff --git a/Mechanical_Engineering_Thermodynamics/screenshots/chap25.png b/Mechanical_Engineering_Thermodynamics/screenshots/chap25.png Binary files differnew file mode 100755 index 00000000..850e306c --- /dev/null +++ b/Mechanical_Engineering_Thermodynamics/screenshots/chap25.png diff --git a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C10_1.ipynb b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C10_1.ipynb index 1b13f377..1b13f377 100644..100755 --- a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C10_1.ipynb +++ b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C10_1.ipynb diff --git a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C11_1.ipynb b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C11_1.ipynb index 057dd53b..057dd53b 100644..100755 --- a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C11_1.ipynb +++ b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C11_1.ipynb diff --git a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C12_1.ipynb b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C12_1.ipynb index ca52f7c0..ca52f7c0 100644..100755 --- a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C12_1.ipynb +++ b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C12_1.ipynb diff --git a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C13_1.ipynb b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C13_1.ipynb index 19a9a8b1..19a9a8b1 100644..100755 --- a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C13_1.ipynb +++ b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C13_1.ipynb diff --git a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C14_1.ipynb b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C14_1.ipynb index 5eaa01c3..5eaa01c3 100644..100755 --- a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C14_1.ipynb +++ b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C14_1.ipynb diff --git a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C15_1.ipynb b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C15_1.ipynb index 27c99a7a..27c99a7a 100644..100755 --- a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C15_1.ipynb +++ b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C15_1.ipynb diff --git a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C16_1.ipynb b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C16_1.ipynb index 6ba96200..6ba96200 100644..100755 --- a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C16_1.ipynb +++ b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C16_1.ipynb diff --git a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C2_1.ipynb b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C2_1.ipynb index c91c71a1..c91c71a1 100644..100755 --- a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C2_1.ipynb +++ b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C2_1.ipynb diff --git a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C3_1.ipynb b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C3_1.ipynb index e799a9b7..e799a9b7 100644..100755 --- a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C3_1.ipynb +++ b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C3_1.ipynb diff --git a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C4_1.ipynb b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C4_1.ipynb index 7fb262ec..7fb262ec 100644..100755 --- a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C4_1.ipynb +++ b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C4_1.ipynb diff --git a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C5_1.ipynb b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C5_1.ipynb index e04d327d..e04d327d 100644..100755 --- a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C5_1.ipynb +++ b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C5_1.ipynb diff --git a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C6_1.ipynb b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C6_1.ipynb index 7bc13612..7bc13612 100644..100755 --- a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C6_1.ipynb +++ b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C6_1.ipynb diff --git a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C7_1.ipynb b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C7_1.ipynb index 5a018ea4..5a018ea4 100644..100755 --- a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C7_1.ipynb +++ b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C7_1.ipynb diff --git a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C8_1.ipynb b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C8_1.ipynb index c5da6d5b..c5da6d5b 100644..100755 --- a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C8_1.ipynb +++ b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C8_1.ipynb diff --git a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C9_1.ipynb b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C9_1.ipynb index e0e0173e..e0e0173e 100644..100755 --- a/Operational_Amplifiers_and_Linear_Integrated_Circuit/C9_1.ipynb +++ b/Operational_Amplifiers_and_Linear_Integrated_Circuit/C9_1.ipynb diff --git a/Operational_Amplifiers_and_Linear_Integrated_Circuit/README.txt b/Operational_Amplifiers_and_Linear_Integrated_Circuit/README.txt index 39ab128f..39ab128f 100644..100755 --- a/Operational_Amplifiers_and_Linear_Integrated_Circuit/README.txt +++ b/Operational_Amplifiers_and_Linear_Integrated_Circuit/README.txt diff --git a/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/2_2.png b/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/2_2.png Binary files differindex 5dcd3d82..5dcd3d82 100644..100755 --- a/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/2_2.png +++ b/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/2_2.png diff --git a/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/2_2_(1).png b/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/2_2_(1).png Binary files differindex 5dcd3d82..5dcd3d82 100644..100755 --- a/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/2_2_(1).png +++ b/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/2_2_(1).png diff --git a/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/3_4.png b/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/3_4.png Binary files differindex b1de058b..b1de058b 100644..100755 --- a/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/3_4.png +++ b/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/3_4.png diff --git a/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/3_4_(1).png b/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/3_4_(1).png Binary files differindex b1de058b..b1de058b 100644..100755 --- a/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/3_4_(1).png +++ b/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/3_4_(1).png diff --git a/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/4_1.png b/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/4_1.png Binary files differindex 97c0dd2f..97c0dd2f 100644..100755 --- a/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/4_1.png +++ b/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/4_1.png diff --git a/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/4_1_(1).png b/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/4_1_(1).png Binary files differindex 97c0dd2f..97c0dd2f 100644..100755 --- a/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/4_1_(1).png +++ b/Operational_Amplifiers_and_Linear_Integrated_Circuit/screenshots/4_1_(1).png diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_10.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_10.ipynb index 077ac9f5..077ac9f5 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_10.ipynb +++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_10.ipynb diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_11.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_11.ipynb index fd7eec66..fd7eec66 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_11.ipynb +++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_11.ipynb diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_12.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_12.ipynb index 38f7d751..38f7d751 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_12.ipynb +++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_12.ipynb diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_13.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_13.ipynb index 3392b3ce..3392b3ce 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_13.ipynb +++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_13.ipynb diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_14.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_14.ipynb index 80d85c26..80d85c26 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_14.ipynb +++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_14.ipynb diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_2.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_2.ipynb index 81d67649..81d67649 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_2.ipynb +++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_2.ipynb diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_3.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_3.ipynb index 44b64c87..44b64c87 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_3.ipynb +++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_3.ipynb diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_4.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_4.ipynb index 7a8733a2..7a8733a2 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_4.ipynb +++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_4.ipynb diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_5.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_5.ipynb index 3b95860b..3b95860b 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_5.ipynb +++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_5.ipynb diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_6.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_6.ipynb index fa4189b4..fa4189b4 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_6.ipynb +++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_6.ipynb diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_7.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_7.ipynb index 7150478c..7150478c 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_7.ipynb +++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_7.ipynb diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_8.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_8.ipynb index ef4b2404..ef4b2404 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_8.ipynb +++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_8.ipynb diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_9.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_9.ipynb index 42d197be..42d197be 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_9.ipynb +++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_9.ipynb diff --git a/Optical_Fiber_Communications_Principles_and_Practice/README.txt b/Optical_Fiber_Communications_Principles_and_Practice/README.txt index 7fb62b0e..7fb62b0e 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/README.txt +++ b/Optical_Fiber_Communications_Principles_and_Practice/README.txt diff --git a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_001.png b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_001.png Binary files differindex effd888e..effd888e 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_001.png +++ b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_001.png diff --git a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_001_1.png b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_001_1.png Binary files differindex effd888e..effd888e 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_001_1.png +++ b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_001_1.png diff --git a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_002.png b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_002.png Binary files differindex 394be49f..394be49f 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_002.png +++ b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_002.png diff --git a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_002_1.png b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_002_1.png Binary files differindex 394be49f..394be49f 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_002_1.png +++ b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_002_1.png diff --git a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel.png b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel.png Binary files differindex e92adc62..e92adc62 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel.png +++ b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel.png diff --git a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_1.png b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_1.png Binary files differindex e92adc62..e92adc62 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_1.png +++ b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_1.png diff --git a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes.png b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes.png Binary files differindex e92adc62..e92adc62 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes.png +++ b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes.png diff --git a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_1.png b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_1.png Binary files differindex e92adc62..e92adc62 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_1.png +++ b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_1.png diff --git a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_2.png b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_2.png Binary files differindex e92adc62..e92adc62 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_2.png +++ b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_2.png diff --git a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_3.png b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_3.png Binary files differindex e92adc62..e92adc62 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_3.png +++ b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_3.png diff --git a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_4.png b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_4.png Binary files differindex e92adc62..e92adc62 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_4.png +++ b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_4.png diff --git a/Optical_Fiber_Communications_Principles_and_Practice/techsupport b/Optical_Fiber_Communications_Principles_and_Practice/techsupport index e69de29b..e69de29b 100644..100755 --- a/Optical_Fiber_Communications_Principles_and_Practice/techsupport +++ b/Optical_Fiber_Communications_Principles_and_Practice/techsupport diff --git a/Principles_Of_Fluid_Mechanics/README.txt b/Principles_Of_Fluid_Mechanics/README.txt index 89034682..89034682 100644..100755 --- a/Principles_Of_Fluid_Mechanics/README.txt +++ b/Principles_Of_Fluid_Mechanics/README.txt diff --git a/Principles_Of_Fluid_Mechanics/ch1.ipynb b/Principles_Of_Fluid_Mechanics/ch1.ipynb index 947959aa..947959aa 100644..100755 --- a/Principles_Of_Fluid_Mechanics/ch1.ipynb +++ b/Principles_Of_Fluid_Mechanics/ch1.ipynb diff --git a/Principles_Of_Fluid_Mechanics/ch10.ipynb b/Principles_Of_Fluid_Mechanics/ch10.ipynb index 83f386c6..83f386c6 100644..100755 --- a/Principles_Of_Fluid_Mechanics/ch10.ipynb +++ b/Principles_Of_Fluid_Mechanics/ch10.ipynb diff --git a/Principles_Of_Fluid_Mechanics/ch11.ipynb b/Principles_Of_Fluid_Mechanics/ch11.ipynb index c955d372..c955d372 100644..100755 --- a/Principles_Of_Fluid_Mechanics/ch11.ipynb +++ b/Principles_Of_Fluid_Mechanics/ch11.ipynb diff --git a/Principles_Of_Fluid_Mechanics/ch2.ipynb b/Principles_Of_Fluid_Mechanics/ch2.ipynb index a8c9b316..a8c9b316 100644..100755 --- a/Principles_Of_Fluid_Mechanics/ch2.ipynb +++ b/Principles_Of_Fluid_Mechanics/ch2.ipynb diff --git a/Principles_Of_Fluid_Mechanics/ch3.ipynb b/Principles_Of_Fluid_Mechanics/ch3.ipynb index b45e37c3..b45e37c3 100644..100755 --- a/Principles_Of_Fluid_Mechanics/ch3.ipynb +++ b/Principles_Of_Fluid_Mechanics/ch3.ipynb diff --git a/Principles_Of_Fluid_Mechanics/ch4.ipynb b/Principles_Of_Fluid_Mechanics/ch4.ipynb index b908467d..b908467d 100644..100755 --- a/Principles_Of_Fluid_Mechanics/ch4.ipynb +++ b/Principles_Of_Fluid_Mechanics/ch4.ipynb diff --git a/Principles_Of_Fluid_Mechanics/ch5.ipynb b/Principles_Of_Fluid_Mechanics/ch5.ipynb index 2be5eb9c..2be5eb9c 100644..100755 --- a/Principles_Of_Fluid_Mechanics/ch5.ipynb +++ b/Principles_Of_Fluid_Mechanics/ch5.ipynb diff --git a/Principles_Of_Fluid_Mechanics/ch6.ipynb b/Principles_Of_Fluid_Mechanics/ch6.ipynb index cd7afbaa..cd7afbaa 100644..100755 --- a/Principles_Of_Fluid_Mechanics/ch6.ipynb +++ b/Principles_Of_Fluid_Mechanics/ch6.ipynb diff --git a/Principles_Of_Fluid_Mechanics/ch7.ipynb b/Principles_Of_Fluid_Mechanics/ch7.ipynb index bbf860be..bbf860be 100644..100755 --- a/Principles_Of_Fluid_Mechanics/ch7.ipynb +++ b/Principles_Of_Fluid_Mechanics/ch7.ipynb diff --git a/Principles_Of_Fluid_Mechanics/ch8.ipynb b/Principles_Of_Fluid_Mechanics/ch8.ipynb index 85eb3fee..85eb3fee 100644..100755 --- a/Principles_Of_Fluid_Mechanics/ch8.ipynb +++ b/Principles_Of_Fluid_Mechanics/ch8.ipynb diff --git a/Principles_Of_Fluid_Mechanics/ch9.ipynb b/Principles_Of_Fluid_Mechanics/ch9.ipynb index d60bcd33..d60bcd33 100644..100755 --- a/Principles_Of_Fluid_Mechanics/ch9.ipynb +++ b/Principles_Of_Fluid_Mechanics/ch9.ipynb diff --git a/Principles_Of_Fluid_Mechanics/screenshots/10TheBoundaryLayer.png b/Principles_Of_Fluid_Mechanics/screenshots/10TheBoundaryLayer.png Binary files differindex 87f14437..87f14437 100644..100755 --- a/Principles_Of_Fluid_Mechanics/screenshots/10TheBoundaryLayer.png +++ b/Principles_Of_Fluid_Mechanics/screenshots/10TheBoundaryLayer.png diff --git a/Principles_Of_Fluid_Mechanics/screenshots/1BasicConcepts.png b/Principles_Of_Fluid_Mechanics/screenshots/1BasicConcepts.png Binary files differindex 7d530f7c..7d530f7c 100644..100755 --- a/Principles_Of_Fluid_Mechanics/screenshots/1BasicConcepts.png +++ b/Principles_Of_Fluid_Mechanics/screenshots/1BasicConcepts.png diff --git a/Principles_Of_Fluid_Mechanics/screenshots/9PotentialFlow.png b/Principles_Of_Fluid_Mechanics/screenshots/9PotentialFlow.png Binary files differindex 76999ba9..76999ba9 100644..100755 --- a/Principles_Of_Fluid_Mechanics/screenshots/9PotentialFlow.png +++ b/Principles_Of_Fluid_Mechanics/screenshots/9PotentialFlow.png diff --git a/Principles_of_Data_structures_using_C_and_C++/README.txt b/Principles_of_Data_structures_using_C_and_C++/README.txt index 7fc96069..7fc96069 100644..100755 --- a/Principles_of_Data_structures_using_C_and_C++/README.txt +++ b/Principles_of_Data_structures_using_C_and_C++/README.txt diff --git a/Principles_of_Data_structures_using_C_and_C++/chapter2.ipynb b/Principles_of_Data_structures_using_C_and_C++/chapter2.ipynb index 5293973c..5293973c 100644..100755 --- a/Principles_of_Data_structures_using_C_and_C++/chapter2.ipynb +++ b/Principles_of_Data_structures_using_C_and_C++/chapter2.ipynb diff --git a/Principles_of_Data_structures_using_C_and_C++/chapter3.ipynb b/Principles_of_Data_structures_using_C_and_C++/chapter3.ipynb index 8a5b19bf..8a5b19bf 100644..100755 --- a/Principles_of_Data_structures_using_C_and_C++/chapter3.ipynb +++ b/Principles_of_Data_structures_using_C_and_C++/chapter3.ipynb diff --git a/Principles_of_Data_structures_using_C_and_C++/chapter4.ipynb b/Principles_of_Data_structures_using_C_and_C++/chapter4.ipynb index 2459282d..2459282d 100644..100755 --- a/Principles_of_Data_structures_using_C_and_C++/chapter4.ipynb +++ b/Principles_of_Data_structures_using_C_and_C++/chapter4.ipynb diff --git a/Principles_of_Data_structures_using_C_and_C++/chapter5.ipynb b/Principles_of_Data_structures_using_C_and_C++/chapter5.ipynb index d2c1e55b..d2c1e55b 100644..100755 --- a/Principles_of_Data_structures_using_C_and_C++/chapter5.ipynb +++ b/Principles_of_Data_structures_using_C_and_C++/chapter5.ipynb diff --git a/Principles_of_Data_structures_using_C_and_C++/chapter6.ipynb b/Principles_of_Data_structures_using_C_and_C++/chapter6.ipynb index a11edf95..a11edf95 100644..100755 --- a/Principles_of_Data_structures_using_C_and_C++/chapter6.ipynb +++ b/Principles_of_Data_structures_using_C_and_C++/chapter6.ipynb diff --git a/Principles_of_Data_structures_using_C_and_C++/chapter7.ipynb b/Principles_of_Data_structures_using_C_and_C++/chapter7.ipynb index 94558c7a..94558c7a 100644..100755 --- a/Principles_of_Data_structures_using_C_and_C++/chapter7.ipynb +++ b/Principles_of_Data_structures_using_C_and_C++/chapter7.ipynb diff --git a/Principles_of_Data_structures_using_C_and_C++/chapter8.ipynb b/Principles_of_Data_structures_using_C_and_C++/chapter8.ipynb index fd46edee..fd46edee 100644..100755 --- a/Principles_of_Data_structures_using_C_and_C++/chapter8.ipynb +++ b/Principles_of_Data_structures_using_C_and_C++/chapter8.ipynb diff --git a/Principles_of_Data_structures_using_C_and_C++/chapter9.ipynb b/Principles_of_Data_structures_using_C_and_C++/chapter9.ipynb index a76b358b..a76b358b 100644..100755 --- a/Principles_of_Data_structures_using_C_and_C++/chapter9.ipynb +++ b/Principles_of_Data_structures_using_C_and_C++/chapter9.ipynb diff --git a/Principles_of_Data_structures_using_C_and_C++/screenshots/graph.png b/Principles_of_Data_structures_using_C_and_C++/screenshots/graph.png Binary files differindex a1112571..a1112571 100644..100755 --- a/Principles_of_Data_structures_using_C_and_C++/screenshots/graph.png +++ b/Principles_of_Data_structures_using_C_and_C++/screenshots/graph.png diff --git a/Principles_of_Data_structures_using_C_and_C++/screenshots/queue.png b/Principles_of_Data_structures_using_C_and_C++/screenshots/queue.png Binary files differindex 5e19e23a..5e19e23a 100644..100755 --- a/Principles_of_Data_structures_using_C_and_C++/screenshots/queue.png +++ b/Principles_of_Data_structures_using_C_and_C++/screenshots/queue.png diff --git a/Principles_of_Data_structures_using_C_and_C++/screenshots/stack.png b/Principles_of_Data_structures_using_C_and_C++/screenshots/stack.png Binary files differindex 0324ae7d..0324ae7d 100644..100755 --- a/Principles_of_Data_structures_using_C_and_C++/screenshots/stack.png +++ b/Principles_of_Data_structures_using_C_and_C++/screenshots/stack.png diff --git a/Principles_of_physics/Chapter12.ipynb b/Principles_of_physics/Chapter12.ipynb new file mode 100755 index 00000000..d7cd7474 --- /dev/null +++ b/Principles_of_physics/Chapter12.ipynb @@ -0,0 +1,540 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:1f479e444a408fcb9cb7e4430e1c4545dad453af571a814f51ef48ce1d81ede8"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 12 Direct current circut"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.1 page no 192"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "R=(6,6.0,12) #Resistances from circuit diagram 12.34 on page no.192 in ohms\n",
+ "V=(5,2) #Voltage in V from circuit diagram 12.20 on page no.192\n",
+ "\n",
+ "#Calculations\n",
+ "Re=(R[2]*R[1])/(R[2]+R[1])\n",
+ "Re2=Re+R[1]\n",
+ "I=V[0]/Re2\n",
+ "Ve=I*Re\n",
+ "I1=Ve/R[2]\n",
+ "RE=(R[0]*R[1])/(R[0]+R[1])\n",
+ "RE2=RE+R[2]\n",
+ "I2=Ve/RE2\n",
+ "Itotal=I1-I2\n",
+ "\n",
+ "#Output\n",
+ "print\"The current is \",round(Itotal,2),\"A\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The current is 0.03 A\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.2 page no 193"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "R=(3,5,6,7) #Resistances from circuit diagram 12.36(a) on page no. 193 in ohms\n",
+ "V=12 #Voltage in V from circuit diagram 12.36(a) on page no. 193\n",
+ "\n",
+ "#Calculations\n",
+ "Vth=(V*R[2])/(R[2]+R[3]+R[1])\n",
+ "Rth=R[0]+(V*R[2])/(V+R[2])\n",
+ "\n",
+ "#Output\n",
+ "print\"Thevenin equivalent resistance is \",Rth,\"ohms\" \n",
+ "print\"Thevenin equivalent voltage is \",Vth,\"V\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Thevenin equivalent resistance is 7 ohms\n",
+ "Thevenin equivalent voltage is 4 V\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.3 page no 193"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "R=(2,3,4.0) #Resistances from circuit diagram 12.37(a) on page no.194 in ohms\n",
+ "V=5 #Voltage in V from circuit diagram 12.37(a) on page no.194\n",
+ "\n",
+ "#Calculations\n",
+ "RN=(V*R[2])/(V+R[2])\n",
+ "IN=V/(R[0]+R[1])\n",
+ "\n",
+ "#Output\n",
+ "print\"Nortons equivalent resistance is \",round(RN,1),\"ohms\"\n",
+ "print\"Nortons equivalent current is \",IN,\"A\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Nortons equivalent resistance is 2.2 ohms\n",
+ "Nortons equivalent current is 1 A\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.4 page no 194 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "C=10*10**-6 #Capicitance in F\n",
+ "R=10.0*10.0**3 #Resistance in ohms\n",
+ "e=6 #Emf of the battery in V\n",
+ "\n",
+ "#Calculations\n",
+ "t=C*R\n",
+ "Qm=(C*e)/10.0**-6\n",
+ "Im=(e/R)*1000\n",
+ "\n",
+ "#Output\n",
+ "print\"Time constant of the circuit is \",t,\"s\" \n",
+ "print\"Maximum charge on the capacitor is \",Qm,\"micro C\" \n",
+ "print\"Maximum current in the circuit is \",Im,\"mA\" \n",
+ "print\"Charge at time t is Q(t) = \",Qm,\"micro C\"\n",
+ "print\"Currrent at time t is I(t) = \",Im,\"mA\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Time constant of the circuit is 0.1 s\n",
+ "Maximum charge on the capacitor is 60.0 micro C\n",
+ "Maximum current in the circuit is 0.6 mA\n",
+ "Charge at time t is Q(t) = 60.0 micro C\n",
+ "Currrent at time t is I(t) = 0.6 mA\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.5 page no 194"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "L=50 #Inductance in mH\n",
+ "R=5.0 #Resistance in ohms\n",
+ "V=6 #Volatage of the battery in V\n",
+ "t=5 #Time in ms\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "t1=(L/R)\n",
+ "I=(V/R)*(1-math.exp(-t/t1))\n",
+ "\n",
+ "#Output\n",
+ "print\"The time constant of the circuit is \",t1,\"ms\" \n",
+ "print\"The current in the circuit is \",round(I,2),\"A\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The time constant of the circuit is 10.0 ms\n",
+ "The current in the circuit is 0.47 A\n"
+ ]
+ }
+ ],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.6 page no 194"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "L=6 #Inductance in mH\n",
+ "C=12 #Capacitance in pF\n",
+ "V=6 #Voltage of the battery in V\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "f=(1/(2.0*3.14*math.sqrt(L*10**-3*C*10**-12)))/10**5\n",
+ "Qm=(C*10**-12*V)/10.0**-12\n",
+ "Im=(2*3.14*f*10**5*Qm*10**-12)/10.0**-6\n",
+ "\n",
+ "#Output\n",
+ "print\"Frequency of oscillation is \",round(f,2),\"*10^5 Hz\" \n",
+ "print\"The maximum value of charge on capacitor is \",Qm,\"*10**-12 C\" \n",
+ "print\"The current in the circuit is \",round(Im,0),\"micro A\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Frequency of oscillation is 5.93 *10^5 Hz\n",
+ "The maximum value of charge on capacitor is 72.0 *10**-12 C\n",
+ "The current in the circuit is 268.0 micro A\n"
+ ]
+ }
+ ],
+ "prompt_number": 23
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.e.1 Page no 175"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "V=10 #voltage in V from fig.12.7 on page no.175\n",
+ "R=10.0 #Resistance in ohms from fig.12.7 on page no.175\n",
+ "\n",
+ "#Calculations\n",
+ "I=(V/R)\n",
+ "\n",
+ "#Output\n",
+ "print\"Current in the circuit shown in fig.12.7 is \",I,\"A\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Current in the circuit shown in fig.12.7 is 1.0 A\n"
+ ]
+ }
+ ],
+ "prompt_number": 24
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.e.2 Page no 175"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "R=(6,6,3.0) #Resistances in the circuit from circuit diagram 12.9 on page no. 175 in ohms\n",
+ "V=(24,16) #Voltages in the circuit from circuit diagram 12.9 on page no. 175 in V\n",
+ "\n",
+ "#Calculations\n",
+ "Re=(R[1]*R[2])/(R[1]+R[2])\n",
+ "Re1=Re+R[0]\n",
+ "I=V[0]/Re1\n",
+ "Ve=I*Re\n",
+ "Ie=Ve/R[2]\n",
+ "RE=(R[0]*R[1])/(R[0]+R[1])\n",
+ "RE1=RE+R[2]\n",
+ "I1=V[1]/RE1\n",
+ "VE=R[2]*I1\n",
+ "I2=VE/R[0]\n",
+ "Itotal=Ie+I2\n",
+ "#Output\n",
+ "print\"The current shown in the circiut is \",round(Itotal,1),\"A\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The current shown in the circiut is 3.3 A\n"
+ ]
+ }
+ ],
+ "prompt_number": 23
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.e.3 Page no 177"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "R=(4,12,2.0,12) #Resistances from circuit diagram 12.12 on page no. 177 in ohms\n",
+ "V=12 #Voltage in V from circuit diagram 12.12 on page no. 177\n",
+ "\n",
+ "#Calculations\n",
+ "Rth=((R[0]+R[2])*R[1])/(R[0]+R[2]+R[1])\n",
+ "Vth=(V*R[1])/(R[0]+R[2]+R[1])\n",
+ "I=(Vth/(Rth+R[3]))\n",
+ "\n",
+ "#Output\n",
+ "print\"The current through the resistor is \",I,\"A\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The current through the resistor is 0.5 A\n"
+ ]
+ }
+ ],
+ "prompt_number": 24
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.e.4 Page no 178"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "R=(2,3,6) #Resistances from circuit diagram 12.15 on page no. 178 in ohms\n",
+ "I=2 #Current in A from circuit diagram 12.15 on page no. 178\n",
+ "\n",
+ "#Calculations\n",
+ "Rth=(R[1]+R[2])\n",
+ "Vth=(R[2]*I)\n",
+ "\n",
+ "#Output\n",
+ "print\"Thevenin equivalent resistance is \",Rth,\"ohms\" \n",
+ "print\"Thevenin equivalent voltage is \",Vth,\"V\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Thevenin equivalent resistance is 9 ohms\n",
+ "Thevenin equivalent voltage is 12 V\n"
+ ]
+ }
+ ],
+ "prompt_number": 26
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.e.5 Page no 178"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "R=(12,8.0,3.0,6) #Resistances from circuit diagram 12.17 on page no.179 in ohms\n",
+ "V=12 #Voltage in V from circuit diagram 12.17 on page no.179\n",
+ "\n",
+ "#Calculations\n",
+ "Rth=((R[2]*R[0])/(R[2]+R[0]))+((R[1]*R[3])/(R[1]+R[3]))\n",
+ "Vth=V*((R[1]*R[3])/(R[1]+R[3]))/(R[0]+R[2])\n",
+ "\n",
+ "#Output\n",
+ "print\"Thevenin equivalent resistance is \",round(Rth,2),\"ohms\" \n",
+ "print\"Thevenin equivalent voltage is \",round(Vth,2),\"V\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Thevenin equivalent resistance is 5.83 ohms\n",
+ "Thevenin equivalent voltage is 2.74 V\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.e.6 Page no 180"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "R=(4,12,2,12) #Resistances from circuit diagram 12.20 on page no.180 in ohms\n",
+ "V=12 #Voltage in V from circuit diagram 12.20 on page no.180\n",
+ "\n",
+ "#Calculations\n",
+ "RN=((R[0]+R[2])*R[1])/(R[0]+R[2]+R[1])\n",
+ "IN=V/(RN+R[2])\n",
+ "\n",
+ "#Output\n",
+ "print\"Nortons equivalent resistance is \",RN,\"ohms\"\n",
+ "print\"Nortons equivalent current is \",IN,\"A\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Nortons equivalent resistance is 4 ohms\n",
+ "Nortons equivalent current is 2 A\n"
+ ]
+ }
+ ],
+ "prompt_number": 32
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.e.7 Page no 181"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "R=(4.0,5,6) #Resistances from circuit diagram 12.22 on page no.181 in ohms\n",
+ "I=2 #Current in A from circuit diagram 12.22 on page no.181\n",
+ "\n",
+ "#Calculations\n",
+ "RN=(R[0]+R[1]+R[2])\n",
+ "IN=(R[0]*I)/RN\n",
+ "\n",
+ "#Output\n",
+ "print\"Nortons equivalent resistance is \",RN,\"ohms\"\n",
+ "print\"Nortons equivalent current is \",round(IN,2),\"A\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Nortons equivalent resistance is 15.0 ohms\n",
+ "Nortons equivalent current is 0.53 A\n"
+ ]
+ }
+ ],
+ "prompt_number": 35
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Principles_of_physics/Chapter13.ipynb b/Principles_of_physics/Chapter13.ipynb new file mode 100755 index 00000000..7a510f42 --- /dev/null +++ b/Principles_of_physics/Chapter13.ipynb @@ -0,0 +1,352 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:a93967e9e262485d7a93dbdce7f33a1a65f797a1b1bf83e41cb800f1ff62d528"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 13 Alternating current circuits"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.1 page no 217"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "Vm=100 #Maximum voltage in V\n",
+ "R=50 #resitance in ohms\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "Vrms=(Vm/math.sqrt(2))\n",
+ "Irms=(Vrms/R)\n",
+ "Im=(Vm/R)\n",
+ "\n",
+ "#Output\n",
+ "print\"rms current is \",round(Irms,2),\"A and maximum current is \",Im,\"A\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "rms current is 1.41 A and maximum current is 2 A\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.2 page no 218"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "c=50 #Capacitor in micro F\n",
+ "Vm=220 #Maximum voltage in V\n",
+ "f=50 #Frequency in Hz\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "Xc=(1/(2.0*3.14*c*10**-6*f))\n",
+ "I=(Vm/Xc)\n",
+ "Irms=I/math.sqrt(2)\n",
+ "\n",
+ "#Output\n",
+ "print\"rms current is \",round(Irms,2),\"A\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "rms current is 2.44 A\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.3 page no 218"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "L=2 #Inductance in H\n",
+ "Vrms=220 #rms voltage in V\n",
+ "f=50 #Frequency in Hz\n",
+ "\n",
+ "#Calculations\n",
+ "Xl=(2*3.14*f*L)\n",
+ "Irms=(Vrms/Xl)\n",
+ "\n",
+ "#Output\n",
+ "print\"rms current is \",round(Irms,3),\"A\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "rms current is 0.35 A\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.4 page no 218"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "Vm=220 #Maximum voltage in V\n",
+ "f=50 #frequency in Hz\n",
+ "R=2000 #Resistance in ohms\n",
+ "C=5*10**-6 #Capacitor in F\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "Xc=(1/(2*3.14*f*C))\n",
+ "Z=math.sqrt(R**2+Xc**2)\n",
+ "Vc=(Vm*Xc)/Z\n",
+ "\n",
+ "#Output\n",
+ "print\"Maximum potential difference across the capacitor is \",round(Vc,1),\"V\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Maximum potential difference across the capacitor is 66.8 V\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.5 page no 218"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "R=5000 #Resistance in ohms\n",
+ "L=2 #Inductance in H\n",
+ "Vrms=200 #rms Voltage in V\n",
+ "f=50 #Frequency in Hz\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "Xl=(2*3.14*f*L)\n",
+ "Z=math.sqrt(R**2+Xl**2)\n",
+ "Vl=(Vrms*Xl)/Z\n",
+ "\n",
+ "#Output\n",
+ "print\"rms potential difference across the inductor is \",round(Vl,2),\"V\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "rms potential difference across the inductor is 24.92 V\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.6 page no 218"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "R=10.0 #Resistance in ohms\n",
+ "L=5*10**-3 #Inductance in H\n",
+ "C=10.0*10**-6 #Capacitance in F\n",
+ "V=100 #Voltage in V\n",
+ "f=50.0 #Frequency in Hz\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "Xc=1/(2.0*3.14*f*C)\n",
+ "Xl=(2*3.14*f*L)\n",
+ "Z=math.sqrt(R**2+(Xl-Xc)**2)\n",
+ "I=(V/Z)\n",
+ "q=math.atan((Xl-Xc)/R)*180/3.14\n",
+ "Vr=(I*R)\n",
+ "Vc=(I*Xc)\n",
+ "Vl=(I*Xl)\n",
+ "\n",
+ "#Output\n",
+ "print\"Total impedence is \",round(Z,1),\"ohms\" \n",
+ "print\"Current is \",round(I,2),\"A\" \n",
+ "print\"Phase angle is \",round(q,1),\"degrees\" \n",
+ "print\"Voltage across resistor is \",round(Vr,2),\"V\" \n",
+ "print\"Voltage across capacitor is \",round(Vc,0),\"V\" \n",
+ "print\"Voltage across inductor is \",round(Vl,3),\"V\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total impedence is 317.1 ohms\n",
+ "Current is 0.32 A\n",
+ "Phase angle is -88.2 degrees\n",
+ "Voltage across resistor is 3.15 V\n",
+ "Voltage across capacitor is 100.0 V\n",
+ "Voltage across inductor is 0.495 V\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.7 page no 219"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "R=5.0 #Resistance in ohms\n",
+ "L=2.0*10**-3 #Inductance in H\n",
+ "C=25.0*10**-6 #Capacitance in F\n",
+ "V=50 #Voltage in V\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "w=1/math.sqrt(L*C)\n",
+ "f=(w/(2.0*3.14))\n",
+ "Q=(w*L)/R \n",
+ "\n",
+ "#Output \n",
+ "print\"Resonating frequency is \",round(f,0),\"Hz\" \n",
+ "print\"Q factor is \",round(Q,2)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Resonating frequency is 712.0 Hz\n",
+ "Q factor is 1.79\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.8 page no 219"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "L=(20*10**-3) #Inductance in H\n",
+ "Q=8.0 #Q factor\n",
+ "f=1000 #Frequency in Hz\n",
+ "\n",
+ "#Calculations\n",
+ "R=(2*3.14*f*L)/Q\n",
+ "C=(1/((2.0*3.14*f)**2*L))/10**-6\n",
+ "\n",
+ "#Output\n",
+ "print\"Capacitance and resistance of coil is \",round(C,2),\"micro F and\",R,\"ohms respectively\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Capacitance and resistance of coil is 1.27 micro F and 15.7 ohms respectively\n"
+ ]
+ }
+ ],
+ "prompt_number": 26
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Principles_of_physics/README.txt b/Principles_of_physics/README.txt new file mode 100755 index 00000000..c2a67b8c --- /dev/null +++ b/Principles_of_physics/README.txt @@ -0,0 +1,10 @@ +Contributed By: Ruchi Mittal +Course: others +College/Institute/Organization: Aggarwal public school, Ballabgarh +Department/Designation: commerce +Book Title: Principles of physics +Author: P.V.Naik +Publisher: Prentice hall,New delhi +Year of publication: 2004 +Isbn: 8120326466 +Edition: 2nd
\ No newline at end of file diff --git a/Principles_of_physics/chapter1.ipynb b/Principles_of_physics/chapter1.ipynb new file mode 100755 index 00000000..af9f2d94 --- /dev/null +++ b/Principles_of_physics/chapter1.ipynb @@ -0,0 +1,537 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:aa8849d14e0b72277789cfe0c1cc3e7e66ca9061ac47dccbae27561c50c68d32"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 1 Motion"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.1 Page no 17"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "d=180 #Distance of satellite above the surface of earth in km\n",
+ "t=90 #Time taken to complete one revolution of the earth in minutes\n",
+ "r=6400 #Radius of the earth in kms\n",
+ "\n",
+ "#Calculations\n",
+ "R=(r+d)*1000\n",
+ "T=t*60\n",
+ "v=(2*3.14*R)/T\n",
+ "a=(v**2/R)\n",
+ "\n",
+ "#Output\n",
+ "print\"Orbital speed is \",round(v,0),\"m/s\" \n",
+ "print\"Centripetal acceleration is \",round(a,1),\"m/s**2\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Orbital speed is 7652.0 m/s\n",
+ "Centripetal acceleration is 8.9 m/s**2\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.2 Page no 17"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "m=0.05 #Mass of the stone in kg\n",
+ "r=0.4 #Radius of the string in m\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "vh=math.sqrt(9.8*r)\n",
+ "vl=math.sqrt((2/m)*(((1/2.0)*m*vh**2)+(m*9.8*2*r)))\n",
+ "\n",
+ "#Output\n",
+ "print\"Minimum speed when the stone is at the top of the circle is \",round(vh,2),\"m/s\" \n",
+ "print\"Minimum speed when the stone is at the bottom of the circle is \",round(vl,2),\"m/s\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Minimum speed when the stone is at the top of the circle is 1.98 m/s\n",
+ "Minimum speed when the stone is at the bottom of the circle is 4.43 m/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.3 Page no 17"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "m=0.2 #Mass of the ball in kg\n",
+ "r=1.5 #Radius of vertical circle in m\n",
+ "q=35 #Angle made by the ball in degrees\n",
+ "v=6 #Velocity of the ball in m/s\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "T=(m*((v**2/r)+(9.8*math.cos(q*3.14/180.0))))\n",
+ "at=9.8*math.sin(q*3.14/180.0)\n",
+ "ar=(v**2/r)\n",
+ "a=math.sqrt(at**2+ar**2)\n",
+ "\n",
+ "#Output\n",
+ "print\"Tension in the string is \",round(T,1),\"N\" \n",
+ "print\"Tangential acceleration is \",round(at,2),\"m/s**2\" \n",
+ "print\"Radial acceleration is \",ar,\"m/s**2\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Tension in the string is 6.4 N\n",
+ "Tangential acceleration is 5.62 m/s**2\n",
+ "Radial acceleration is 24.0 m/s**2\n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.4 Page no 17"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "#A small ball is released from height of 4r measured from the bottom of the loop, where r is the radius of the loop\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "ar=(6*9.8)\n",
+ "at=(9.8*math.sin(90*3.14/180.0))\n",
+ "\n",
+ "#Output\n",
+ "print\"Radial acceleration is \",ar,\"m/s**2\"\n",
+ "print\"Tangential acceleration is \",round(at,1),\"m/s**2\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Radial acceleration is 58.8 m/s**2\n",
+ "Tangential acceleration is 9.8 m/s**2\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.5 Page no 18"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "l=0.95 #Length of the strring in m\n",
+ "m=0.15 #Mass of the bob in kg\n",
+ "r=0.25 #Radius of the circle in m\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "h=math.sqrt(l**2-r**2)\n",
+ "t=2*3.14*math.sqrt(h/9.8)\n",
+ "\n",
+ "#Output\n",
+ "print\"The period of rotation is \",round(t,2),\"s\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The period of rotation is 1.92 s\n"
+ ]
+ }
+ ],
+ "prompt_number": 21
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.6 Page no 18"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "N=40.0 #Minimum speed of rotor in rpm\n",
+ "r=2.5 #Radius of rotor in m\n",
+ "\n",
+ "#Calculations\n",
+ "t=60/N\n",
+ "u=(9.8*t**2)/(4.0*3.14**2*r)\n",
+ "\n",
+ "#Output\n",
+ "print\"The coefficient of limiting friction between the object and the wall of the rotor is \",round(u,3)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The coefficient of limiting friction between the object and the wall of the rotor is 0.224\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.7 Page no 18"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "a=30 #Angle of inclination in degrees\n",
+ "t=3 #Time in s\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "a=(9.8*math.sin(a*3.14/180.0))\n",
+ "v=(0+a*t)\n",
+ "\n",
+ "#Output\n",
+ "print\"Speed of the block after \",t,\"s is \",round(v,1),\"m/s\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Speed of the block after 3 s is 14.7 m/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 27
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.8 Page no 19"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "m=10.0 #Mass of the block in kg\n",
+ "F1=40 #Horizontal force to start moving in N\n",
+ "F2=32 #Horizontal force to move with constant velocity in N\n",
+ "\n",
+ "#Calculations\n",
+ "u1=(F1/(m*9.8))\n",
+ "u2=(F2/(m*9.8))\n",
+ "\n",
+ "#Output\n",
+ "print\"Coefficient of static friction is \",round(u1,3)\n",
+ "print\"Coefficient of kinetic friction is \",round(u2,4)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Coefficient of static friction is 0.408\n",
+ "Coefficient of kinetic friction is 0.3265\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.9 Page no 19"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "m=(3,12) #Masses of the blocks in kg\n",
+ "q=50 #Angle made by the string in degrees\n",
+ "a=3 #Acceleration of 12kg block in m/s^2\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "T=m[0]*(9.8+a)\n",
+ "u=(m[1]*(9.8*math.sin(q*3.14/180.0)-a)-T)/(m[1]*9.8*math.cos(q*3.14/180.0))\n",
+ "\n",
+ "#Output\n",
+ "print\"Tension in the string is \",T,\"N\" \n",
+ "print\"The coefficient of kinetic friction is \",round(u,3)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Tension in the string is 38.4 N\n",
+ "The coefficient of kinetic friction is 0.207\n"
+ ]
+ }
+ ],
+ "prompt_number": 54
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.e.1 Page no 9"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "w=50 #Weight in N\n",
+ "a=(40,50) #Angles made by two cables in degrees\n",
+ "\n",
+ "#Calculations\n",
+ "#Solving two equations obtained from fig. 1.10 on page no.10\n",
+ "#-T1cos40+T2cos50=0\n",
+ "#T1sin40+T2sin50=50\n",
+ "import math\n",
+ "A = array([[math.cos(a[1]*3.14/180.0),-math.cos(a[0]*3.14/180.0)], \n",
+ " [math.sin(a[0]*3.14/180.0),math.sin(a[1]*3.14/180.0)]])\n",
+ "b = array([0,50])\n",
+ "X = solve(A, b)\n",
+ "T2=X[1]\n",
+ "print \"T2=\",round(T2,1),\"N\"\n",
+ "T1=(math.cos(a[1]*3.14/180.0)/math.cos(a[0]*3.14/180.0))*T2\n",
+ "print \"T1\",round(T1,1),\"N\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "T2= 32.7 N\n",
+ "T1 27.4 N\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.e.5 Page no 13"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "m=100.0 #Mass of block in kg\n",
+ "F=500 #Force in N\n",
+ "q=30 #Angle made with the horizontal in degrees\n",
+ "u=0.4 #Coefficient of sliding friction\n",
+ "\n",
+ "#Calculations\n",
+ "R=m*9.8\n",
+ "f=(u*R)\n",
+ "a=(F*math.cos(q*3.14/180.0)-f)/m\n",
+ "\n",
+ "#Output\n",
+ "print\"The acceleration of the block is \",round(a,2),\"m/s**2\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The acceleration of the block is 0.41 m/s**2\n"
+ ]
+ }
+ ],
+ "prompt_number": 56
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.e.6 Page no 14"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "m=(20.0,80.0) #Masses of blocks in kg\n",
+ "F=1000 #Force with which 20kg block is pulled in N\n",
+ "\n",
+ "#Calculations\n",
+ "a=F/(m[0]+m[1])\n",
+ "T=F-(m[0]*a)\n",
+ "\n",
+ "#Output\n",
+ "print\"The acceleration produced is \",a,\"m/s^2\" \n",
+ "print\"The tension in the string connecting the blocks is \",T,\"N\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The acceleration produced is 10.0 m/s^2\n",
+ "The tension in the string connecting the blocks is 800.0 N\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.e.8 Page no 15"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "w=588 #Weight of the person in N\n",
+ "a=3 #Acceleration in m/s^2\n",
+ "b=180\n",
+ "\n",
+ "#Calculations\n",
+ "m=(w/9.8)\n",
+ "P=(w+(m*a))\n",
+ "p=w-b\n",
+ "\n",
+ "#Output\n",
+ "print\"Weight of the person when the elevator is accelerated upwards is \",P,\"N\"\n",
+ "print\"Weight of the person when the elevator is accelerated upwards is \",p,\"N\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Weight of the person when the elevator is accelerated upwards is 768.0 N\n",
+ "Weight of the person when the elevator is accelerated upwards is 408 N\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Principles_of_physics/chapter10.ipynb b/Principles_of_physics/chapter10.ipynb new file mode 100755 index 00000000..3b53a368 --- /dev/null +++ b/Principles_of_physics/chapter10.ipynb @@ -0,0 +1,203 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:3f76c4dafe83129bfa41f6667339b27d23cec6e550015e787119c4ce10873761"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 10 Difraction"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.1 Page no 154"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "D=1 #Distance of screen from the slit in m\n",
+ "w=6000 #Wavelength in Angstrom\n",
+ "w1=0.6 #Slit width in mm\n",
+ "\n",
+ "#Calculations\n",
+ "x=((2*D*w*10**-10)/(w1*10**-3))*1000\n",
+ "\n",
+ "#Output\n",
+ "print\"Width of central band is \",x,\"mm\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Width of central band is 2.0 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.2 Page no 155"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "d1=6000.0 #Diffraction grating have number of lines per cm\n",
+ "q=50 #Diffracted second order spectral line observed in degrees\n",
+ "n=2 #Second order\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "w=(math.sin(q*3.14/180.0)/(d1*n))*10**8\n",
+ "\n",
+ "#Output\n",
+ "print\"Wavelength of radiation is \",round(w,1),\"Angstrom\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Wavelength of radiation is 6381.3 Angstrom\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.3 Page no 155"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "d1=6000 #Diffraction grating have number of lines per cm\n",
+ "w=6000 #Wavelength in Angstrom\n",
+ "\n",
+ "#Calculations\n",
+ "n=(1/(d1*w*10**-8))\n",
+ "\n",
+ "#Output\n",
+ "print\"Maximum order of diffraction that can be observed is \",round(n,2)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Maximum order of diffraction that can be observed is 2.78\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.4 Page no 155"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "B=(3*3.14)/2 #First secondary maxima at B\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "I=(math.sin(B)/B)**2\n",
+ "\n",
+ "#Output\n",
+ "print\"Ratio of intensity of central maxima to first secondary maxima is \",round(I,3)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Ratio of intensity of central maxima to first secondary maxima is 0.045\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.5 Page no 155"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "w=6400 #Wave length of light in Angstrom\n",
+ "w1=0.3 #Slit width in mm\n",
+ "d=110 #Distance of screen from the slit in cm\n",
+ "n=3 #order\n",
+ "\n",
+ "#Calculations\n",
+ "x=((n*w*10**-10*(d/100.0))/(w1*10**-3))*1000\n",
+ "\n",
+ "#Output\n",
+ "print\"Distance between the centre of the central maximum and the third dark fringe is \",x,\"mm\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Distance between the centre of the central maximum and the third dark fringe is 7.04 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Principles_of_physics/chapter11.ipynb b/Principles_of_physics/chapter11.ipynb new file mode 100755 index 00000000..844520a2 --- /dev/null +++ b/Principles_of_physics/chapter11.ipynb @@ -0,0 +1,95 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:f15639ca9ab333759d79a28745654a5d04bddafc03a306e9cfbbbfeaf4928ceb"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 11 Polarization"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.1 Page no 169"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "r1=1.538 #Refractive index of the crown glass for violet\n",
+ "r2=1.52 #Refractive index of the crown glass for red\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "ip1=math.atan(r1)*180/3.14\n",
+ "ip2=math.atan(r2)*180/3.14\n",
+ "\n",
+ "#Output\n",
+ "print\"Polarizing angles for violet and red are \",round(ip1,3),\"degrees and\",round(ip2,3),\"degrees\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Polarizing angles for violet and red are 56.997 degrees and 56.688 degrees\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.2 Page no 169"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "I=0.09\n",
+ "I0=1\n",
+ "\n",
+ "#calculation\n",
+ "import math\n",
+ "X=math.sqrt(I/I0)\n",
+ "x=math.acos(X)*180/3.14\n",
+ "print\"angle is \",round(x,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "angle is 72.58\n"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Principles_of_physics/chapter15.ipynb b/Principles_of_physics/chapter15.ipynb new file mode 100755 index 00000000..0bee9bed --- /dev/null +++ b/Principles_of_physics/chapter15.ipynb @@ -0,0 +1,216 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:59edd30f642482e981d4bbdb68206500dec6663b6b414fcdfbc2ce9fb1f1258c"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 15 Motion of a charged particle"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 15.1 Page no 254"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "E=5000 #Intensity of electric field in N/C\n",
+ "d=0.02 #Distance in m\n",
+ "e=(1.6*10**-19) #Charge of the electron in C\n",
+ "m=(9.1*10**-31) #Mass of the electron in kg\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "v=math.sqrt(2*e*E*d/m)/10**6\n",
+ "\n",
+ "#Output\n",
+ "print\"Speed of the electron is \",round(v,2),\"*10**6 m/s\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Speed of the electron is 5.93 *10**6 m/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 15.2 Page no 255"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "v=(5*10**6) #Velocity of the electron in m/s\n",
+ "E=2000 #Intensity of electric field in N/C\n",
+ "d=0.06 #Distance in m\n",
+ "e=(1.6*10**-19) #Charge of the electron in C\n",
+ "m=(9.1*10**-31) #Mass of the electron in kg\n",
+ "\n",
+ "\n",
+ "#Calculations\n",
+ "y=((-e*E*d**2)/(2*m*v**2))*100\n",
+ "\n",
+ "#Output\n",
+ "print\"Vertical displacement of the electron when it just leaves the electric field is \",round(y,2),\"cm\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Vertical displacement of the electron when it just leaves the electric field is -2.53 cm\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 15.3 Page no 255"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "v=(4*10**5) #Velocity of the positively charged particle in m/s\n",
+ "E=300 #Intensity of electric field in N/C\n",
+ "e=(1.6*10**-19) #Charge of the positively charged particle in C\n",
+ "m=(1.67*10**-27) #Mass of the positively charged particle in kg\n",
+ "q=35 #Angle made by the particle in degrees\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "t=((v*math.sin(q*3.14/180.0)*m)/(e*E))/10**-6\n",
+ "\n",
+ "#Output\n",
+ "print\"Time required by the particle to reach the maximum height in the electric field is \",round(t,2),\"micro s\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Time required by the particle to reach the maximum height in the electric field is 7.98 micro s\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 15.4 Page no 255"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "r=0.3 #Radius of circular orbit in m\n",
+ "B=0.38 #Magnetic field strength in T\n",
+ "e=(1.6*10**-19) #Charge of the proton in C\n",
+ "m=(1.672*10**-27) #Mass of the proton in kg\n",
+ "\n",
+ "#Calculations\n",
+ "v=((e*B*r)/m)/10**6\n",
+ "\n",
+ "#Output\n",
+ "print\"Orbital speed of the proton is \",round(v,0),\"*10**6 m/s\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Orbital speed of the proton is 11.0 *10**6 m/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 15.5 Page no 255"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "e=(1.6*10**-19) #Charge of the proton in C\n",
+ "m=(1.67*10**-27) #Mass of the proton in kg\n",
+ "B=0.8 #Magnetic field strength in T\n",
+ "v=(4*10**6,3*10**6) #Velocity of charged particle in vxi+vyj form in m/s\n",
+ "\n",
+ "#Calculations\n",
+ "p=(v[0]*2*3.14*m)/(e*B)\n",
+ "R=(m*v[1])/(e*B)\n",
+ "\n",
+ "#Output\n",
+ "print\"The pitch of the helix is \",round(p,3),\"m\" \n",
+ "print\"Radius of the trajectory is \",round(R,3),\"m\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The pitch of the helix is 0.328 m\n",
+ "Radius of the trajectory is 0.039 m\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Principles_of_physics/chapter16.ipynb b/Principles_of_physics/chapter16.ipynb new file mode 100755 index 00000000..82ff85eb --- /dev/null +++ b/Principles_of_physics/chapter16.ipynb @@ -0,0 +1,101 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:15ba15ce3635a11f8889cf96adb08a8de4e1e5c63e5f5177ed54dd77e97a3365"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 16 Electrons, Ions, Isotopes and nucleus"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 16.1 Page no 268"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "E=(200*100) #Electric field in V/m\n",
+ "B=0.2 #Magnetic field in T\n",
+ "B1=0.3 #Magnetic field in the main chamber in T\n",
+ "q=(1.6*10**-19) #Charge of the electron in coloumbs\n",
+ "m=(12,13) #Carbon isotopes C12 and C13\n",
+ "M=(1.67*10**-27) #AMU(Atomic Mass Unit) in kg\n",
+ "\n",
+ "#Calculations\n",
+ "v=(E/B)\n",
+ "s=(2*v*(m[1]-m[0])*M*100)/(q*B1)\n",
+ "\n",
+ "#Output\n",
+ "print\"Seperation on photographic plate is \",round(s,4),\"cm\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Seperation on photographic plate is 0.6958 cm\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 16.2 Page no 268"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "a=20 #Atomic number of Ca\n",
+ "m=40.0 #mass number of Ca\n",
+ "M=39.962591 #Mass of Ca nucleus in u\n",
+ "mp=1.007276 #Mass of proton in AMU\n",
+ "mn=1.008665 #Mass of neutron in AMU\n",
+ "\n",
+ "#Calculations\n",
+ "BE=(1/m)*((a*mp)+(a*mn)-M)*1000\n",
+ "\n",
+ "#Output\n",
+ "print\"BE per nucleon is \",round(BE,1),\"MeV\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "BE per nucleon is 8.9 MeV\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Principles_of_physics/chapter17.ipynb b/Principles_of_physics/chapter17.ipynb new file mode 100755 index 00000000..1e73b78e --- /dev/null +++ b/Principles_of_physics/chapter17.ipynb @@ -0,0 +1,216 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:57d22a7adb4054841cc52259e77089014f3c25ca9c50bc1dab4a74d78f09ccf3"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 17 Quantum theory"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.1 Page no 284"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "w=4000.0 #Wavelength of the light in Angstrom units\n",
+ "wf=2.25 #Work function of potassium in eV\n",
+ "m=(9.1*10**-31) #Mass of the electron in kg\n",
+ "v=(3*10**8) #Velocity of light in m/s\n",
+ "c=(1.6*10**-19) #Charge of the electron in coloumbs\n",
+ "h=6.626*10**-34 #Plancks constant in Js\n",
+ "\n",
+ "#Calculations\n",
+ "E=(h*v)/(w*10**-10*c)\n",
+ "KE=(E-wf)\n",
+ "\n",
+ "#Output\n",
+ "print\"Maximum kinetic energy of photoelectron is \",round(KE,3),\"eV\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Maximum kinetic energy of photoelectron is 0.856 eV\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.2 Page no 284"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "wf=1.9 #Workfunction of the material in eV\n",
+ "w=3000 #Wavelength of the light in Angstrom units\n",
+ "v=(3*10**8) #Velocity of light in m/s\n",
+ "c=(1.6*10**-19) #Charge of the electron in coloumbs\n",
+ "h=6.626*10**-34 #Plancks constant in Js\n",
+ "\n",
+ "#Calculations\n",
+ "V=(1/c)*(((h*v)/(w*10**-10))-(wf*c))\n",
+ "\n",
+ "#Output\n",
+ "print\"Stopping potential is \",round(V,2),\"V\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Stopping potential is 2.24 V\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.3 Page no 284"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "V=(70*10**3) #Accelerating potential in V\n",
+ "v=(3*10**8) #Velocity of light in m/s\n",
+ "c=(1.6*10**-19) #Charge of the electron in coloumbs\n",
+ "h=6.626*10**-34 #Plancks constant in Js\n",
+ "\n",
+ "#Calculations\n",
+ "lmin=((h*v)/(c*V))/10**-9\n",
+ "\n",
+ "#Output\n",
+ "print\"Shortest wavelength of X-rays produced is \",round(lmin,4),\"mm\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Shortest wavelength of X-rays produced is 0.0177 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.4 Page no 284"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "w1=2 #Wavelength in Angstrom \n",
+ "Z1=24 #Target one\n",
+ "Z2=42.0 #Target two\n",
+ "a=1 #Constant value\n",
+ "\n",
+ "#Calculations\n",
+ "w2=w1*(Z1-a)**2/(Z2-a)**2\n",
+ "\n",
+ "#Output\n",
+ "print\"Wavelength is \",round(w2,2),\"Angstrom\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Wavelength is 0.63 Angstrom\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.5 Page no 284"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "w=3 #Wavelength of the light in Angstrom\n",
+ "v=(3*10**8) #Velocity of light in m/s\n",
+ "h=6.626*10**-34 #Plancks constant in Js\n",
+ "q=40 #Scattering angle in degrees\n",
+ "m=(9.11*10**-31) #Mass of electron in kg\n",
+ "c=(1.6*10**-19) #Charge of the electron in coloumbs\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "dl=(h/(m*v))*(1-math.cos(q*3.14/180.0))/10.0**-10\n",
+ "l=(w+dl)\n",
+ "\n",
+ "#Output\n",
+ "print\"Wavelength of scattered X-rays is \",round(l,4),\"Angstrom\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Wavelength of scattered X-rays is 3.0057 Angstrom\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Principles_of_physics/chapter2.ipynb b/Principles_of_physics/chapter2.ipynb new file mode 100755 index 00000000..74df1c9c --- /dev/null +++ b/Principles_of_physics/chapter2.ipynb @@ -0,0 +1,323 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:1378ee9b7b5e64639ff100ad2dca16b71e72eadb106daabd3ad20e87834e8b65"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 2 Work, Energy and Power"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.1 Page no 26"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "F=(6,2) #Constant force in vector form 6i+2j in N\n",
+ "s=(3,5) #Displacement in vector form 3i+5j in N\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "W=(F[0]*s[0])+(F[1]*s[1])\n",
+ "q=math.acos(W/(math.sqrt(F[0]**2+F[1]**2)*math.sqrt(s[0]**2+s[1]**2)))*180/3.14\n",
+ "\n",
+ "#Output\n",
+ "print\"Workdone by the force is \",W,\"J\" \n",
+ "print\"Angle between Force and displacement is \",round(q,1),\"degrees\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Workdone by the force is 28 J\n",
+ "Angle between Force and displacement is 40.6 degrees\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.2 Page no 26"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "m=10 #Mass of block in kg\n",
+ "q=40 #Angle made by the force with horizontal in degrees\n",
+ "s=5 #Horizontal displacement of the block in m\n",
+ "u=0.3 #Coefficient of kinematic friction \n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "F=(u*m*9.8)/(math.cos(q*3.14/180.0)+(u*math.sin(q*3.14/180.0)))\n",
+ "W=(F*math.cos(q*3.14/180.0))*s\n",
+ "\n",
+ "#Output\n",
+ "print\"Workdone by the pulling force is \",round(W,1),\"J\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Workdone by the pulling force is 117.5 J\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.3 Page no 27"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#plot\n",
+ "import matplotlib.pyplot as plt\n",
+ "fig = plt.figure()\n",
+ "x=[0,1,2,3,4,5]\n",
+ "F=[0,6,6,12,12,0]\n",
+ "xlabel(\"x (m)\") \n",
+ "ylabel(\"F (N)\") \n",
+ "plt.xlim((0,5))\n",
+ "plt.ylim((0,14))\n",
+ "a=plot(x,F)\n",
+ "show(a)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nJEmSJCk5/w8BWpyAvuV2cgAAAABJRU5ErkJggg==\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x883ac30>"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.4 Page no 27"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "m=0.05 #Mass of the body in kg\n",
+ "v=(3,5) #Velocity in vector form 3i+4j in m/s\n",
+ "\n",
+ "#Calculations\n",
+ "ke=(1/2.0)*m*(v[0]**2+v[1]**2)\n",
+ "\n",
+ "#Output\n",
+ "print\"Kinetic energy is \",ke,\"J\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Kinetic energy is 0.85 J\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.5 Page no 27"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "k=50 #Spring force constant in N/m\n",
+ "x=-0.02 #Length of compression in m\n",
+ "\n",
+ "#Calculations\n",
+ "W=(1/2.0)*k*(x)**2\n",
+ "\n",
+ "#Output\n",
+ "print\"Work done by the spring when the block comes from the compressed position to the equilibrium position is \",W,\"J\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Work done by the spring when the block comes from the compressed position to the equilibrium position is 0.01 J\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.6 Page no 27"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "x=0.03 #Length stretched by the spring in m\n",
+ "m=0.25 #Mass of the body in kg\n",
+ "\n",
+ "#Calculations\n",
+ "k=(m*9.8)/x\n",
+ "\n",
+ "#Output\n",
+ "print\"Force constant of the spring is \",round(k,3),\"N/m\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Force constant of the spring is 81.667 N/m\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.7 Page no 27"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "m=5 #Mass of block in kg\n",
+ "F=20 #Constant force in N\n",
+ "x=6 #Distance moved by the block in m\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "W=(F*x)\n",
+ "v=math.sqrt((2*W)/m)\n",
+ "\n",
+ "#Output\n",
+ "print\"Speed of the block when it moves through a distance of \",x,\"m is\",round(v,2),\"m/s\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Speed of the block when it moves through a distance of 6 m is 6.93 m/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.8 Page no 28"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "m=50 #Mass of the object in kg\n",
+ "v=8 #Speed in m/s\n",
+ "t=4 #Time taken in s\n",
+ "\n",
+ "#Calculations\n",
+ "a=(v-0)/t\n",
+ "s=(v**2/(2.0*a))\n",
+ "W=(m*a*s)\n",
+ "P=(W/t)\n",
+ "\n",
+ "#Output\n",
+ "print\"Workdone on the object is \",W,\"J\" \n",
+ "print\"The average power delivered by the force in the first \",t,\"s is \",P,\"watt\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Workdone on the object is 1600.0 J\n",
+ "The average power delivered by the force in the first 4 s is 400.0 watt\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Principles_of_physics/chapter3.ipynb b/Principles_of_physics/chapter3.ipynb new file mode 100755 index 00000000..e57500e1 --- /dev/null +++ b/Principles_of_physics/chapter3.ipynb @@ -0,0 +1,222 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:754c71c2e29646e743d2602122b6349e57c8b539ae4803d803ea41cdce275af3"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 3 Potential energy"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.1 page no 35"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "m=0.04 #Mass of stone in kg\n",
+ "vi=25 #Initial velocity in m/s\n",
+ "vf=0 #Final velocity in m/s\n",
+ "yi=0 #Initial height in m\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "Ui=(m*9.81*yi)\n",
+ "Ki=(1/2.0)*m*vi**2\n",
+ "Etotal=(Ui+Ki)\n",
+ "h=(Etotal/(m*9.8))\n",
+ "#when the stone is at (2/3)h, total energy is again same\n",
+ "v=math.sqrt((Etotal-(m*9.8*(2/3.0)*h))/((1/2.0)*m))\n",
+ "\n",
+ "#Output\n",
+ "print\"Maximum height it will reach is \",round(h,1),\"m\" \n",
+ "print\"velocity when it is at the two-third of its maximum height is \",round(v,2),\"m/s\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Maximum height it will reach is 31.9 m\n",
+ "velocity when it is at the two-third of its maximum height is 14.43 m/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.2 page no 36"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "m=0.5 #Mass of the sphere in kg\n",
+ "vi=100 #Initial velocity in m/s\n",
+ "vf=20 #Final velocity in m/s\n",
+ "\n",
+ "#Calculations\n",
+ "h=(vi**2-vf**2)/(2.0*9.8)\n",
+ "PE=(m*9.8*h)\n",
+ "\n",
+ "#Calculations\n",
+ "print\"Potential energy of the sphere is \",PE,\"J\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Potential energy of the sphere is 2400.0 J\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.3 page no 36"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "m=0.5 #Mass of the block in kg\n",
+ "x=0.05 #Distance to which block is pulled in m\n",
+ "k=300 #Force constant of the spring in N/m\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "U=(1/2.0)*k*x**2\n",
+ "v=x*math.sqrt(k/m)\n",
+ "\n",
+ "#Output\n",
+ "print\"Potential energy of the block when spring is in stretched position is \",U,\"J\" \n",
+ "print\"Velocity of the block when it passes through the equilibrium position is \",round(v,2),\" m/s\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Potential energy of the block when spring is in stretched position is 0.375 J\n",
+ "Velocity of the block when it passes through the equilibrium position is 1.22 m/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.4 page no 37"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "l=0.8 #Length of a simple pendulum in m\n",
+ "q=30 #Angle with the vertical through which the bob is released in degrees\n",
+ "q1=10 #Required angle in degrees\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "v=math.sqrt(2*9.8*l*(math.cos(q1*3.14/180.0)-math.cos(q*3.14/180.0)))\n",
+ "\n",
+ "#Output\n",
+ "print\"Speed when the bob is at the angle of \",q1,\"degrees with the vertical is \",round(v,2),\"m/s\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Speed when the bob is at the angle of 10 degrees with the vertical is 1.36 m/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.5 page no 37"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "m=(9.1*10**-31) #Mass of the electron in kg\n",
+ "v=(3*10**8) #Velocity of light in m/s\n",
+ "c=(1.6*10**-19) #Charge of the electron in coloumbs\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "Re=(m*v**2)/(c*10**6)\n",
+ "E=(Re/math.sqrt(1-0.9**2))\n",
+ "\n",
+ "#Output\n",
+ "print\"Rest energy of the electron is \",round(Re,3),\"MeV\" \n",
+ "print\"Total energy is \",round(E,2),\"MeV\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Rest energy of the electron is 0.512 MeV\n",
+ "Total energy is 1.17 MeV\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Principles_of_physics/chapter4.ipynb b/Principles_of_physics/chapter4.ipynb new file mode 100755 index 00000000..5aa2ceb9 --- /dev/null +++ b/Principles_of_physics/chapter4.ipynb @@ -0,0 +1,210 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:b7bd6954751643f92d25f5c6d00ec1b3a41e28e3d14c6105ad117f2707f6395b"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 4 Rotational motion of Rigid objects"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.1 Page no 54"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "w=4 #Angular velocity in rad/s\n",
+ "m=(1,2,3,4) #Masses in kg from the figure 4.17 on page no.54 \n",
+ "r=(2.5,1.5) #Centre position in m\n",
+ "\n",
+ "#Calculations\n",
+ "I=(m[0]+m[1]+m[2]+m[3])*(r[0]**2+r[1]**2)\n",
+ "KE=(1/2.0)*I*w**2\n",
+ "\n",
+ "#Output\n",
+ "print\"The moment of inertia is \",I,\"kg.m**2\" \n",
+ "print\"Kinetic energy of the system is \",KE,\"J\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The moment of inertia is 85.0 kg.m**2\n",
+ "Kinetic energy of the system is 680.0 J\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.2 Page no 55"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "q=30 #Angle of inclination in degrees\n",
+ "h=1 #Height in m\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "v=math.sqrt((10/7.0)*9.8*h)\n",
+ "a=(5/7.0)*9.8*math.sin(q*3.14/180.0)\n",
+ "\n",
+ "#Output\n",
+ "print\"Velocity and acceleration of the centre of mass of the sphere is \",round(v,2),\"m/s and \",round(a,1),\"m/s**2\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Velocity and acceleration of the centre of mass of the sphere is 3.74 m/s and 3.5 m/s**2\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.3 Page no 55"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "m=1.2 #Mass of the rod in kg\n",
+ "l=0.8 #Length of the rod in m\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "T=2*3.14*math.sqrt((2*l)/(3.0*9.8))\n",
+ "\n",
+ "#Output\n",
+ "print\"Period of oscillation is \",round(T,2),\"s\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Period of oscillation is 1.47 s\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.4 Page no 55"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "r=0.2 #Radius of uniform disc in m\n",
+ "d=0.15 #Distance from the centre in m\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "T=2*3.14*math.sqrt((17*r)/(12.0*9.8))\n",
+ "\n",
+ "#Output\n",
+ "print\"The period of oscillation is \",round(T,3),\"s\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The period of oscillation is 1.068 s\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.5 Page no 55"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "m=3 #Mass of the rotor in kg\n",
+ "I=0.03 #Moment of inertia in kg.m^2\n",
+ "d=0.25 #Distance of pivot from the centre in m\n",
+ "p=30 #Precession in rpm\n",
+ "\n",
+ "#Calculations\n",
+ "T=m*9.8*d\n",
+ "w=(p*2*3.14)/60.0\n",
+ "w1=(T/(I*w))\n",
+ "\n",
+ "#Output\n",
+ "print\"Angular speed of rotation of the rotor is \",round(w1,0),\"rpm\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Angular speed of rotation of the rotor is 78.0 rpm\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Principles_of_physics/chapter5.ipynb b/Principles_of_physics/chapter5.ipynb new file mode 100755 index 00000000..525b7c92 --- /dev/null +++ b/Principles_of_physics/chapter5.ipynb @@ -0,0 +1,332 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:8d1a6e24325b21ce86c3b6da78ff6614496eb66a81611477ea9a7b9f8a72ae03"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 5 Properties of matter"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.1 Page no 76"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "m=1 #Mass of torsional pendulum in kg\n",
+ "R=0.06 #Radius of torsional pendulum in m\n",
+ "l=1.2 #Length of the wire in m\n",
+ "r=0.0008 #Radius of wire in m\n",
+ "S=(9*10**9) #Modulus of rigidity of the material in N/m^2\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "I=(1/2.0)*m*R**2\n",
+ "C=(3.14*S*r**4)/(2*l)\n",
+ "T=2*3.14*math.sqrt(I/C)\n",
+ "\n",
+ "#Output\n",
+ "print\"Period of pendulum is \",round(T,1),\"s\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Period of pendulum is 3.8 s\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.2 Page no 76"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "l=0.8 #Length of the wire in m\n",
+ "d=(1.8*10**-3) #Diameter of the wire in m\n",
+ "a=1.5 #Angle of twist in degrees\n",
+ "S=(1.8*10**11) #Modulus of rigidity of the material in N/m^2\n",
+ "\n",
+ "#Calculations\n",
+ "r=(a*3.14)/180.0\n",
+ "W=((3.14*S*(d/2.0)**4*r**2)/(4*l))/10.0**-5\n",
+ "\n",
+ "#Output\n",
+ "print\"Work required to twist the wire is \",round(W,2),\"*10^-5 J\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Work required to twist the wire is 7.93 *10^-5 J\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.3 Page no 76"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "l=2 #Length of wire in m\n",
+ "d=(0.4*10**-3) #Diameter of the wire in m\n",
+ "x=(1.03*10**-3) #Extension in length in m\n",
+ "L=2 #Load in kg\n",
+ "C=(4.52*10**-6) #Couple in N/m\n",
+ "a=0.03 #Twist angle in radians\n",
+ "\n",
+ "#Calculations\n",
+ "Y=((L*9.8*l)/(x*3.14*(d/2.0)**2))/10**11\n",
+ "S=((C*2*l)/(3.14*(d/2.0)**4*a))/10**11\n",
+ "s=(Y/(2*S))-1\n",
+ "\n",
+ "#Output\n",
+ "print\"Youngs modulus is \",round(Y,2),\"*10**11 N/m^2\"\n",
+ "print\"Modulus of rigidity is \",round(S,2),\"*10**11 N/m^2\"\n",
+ "print\"Poissons ratio is \",round(s,2)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Youngs modulus is 3.03 *10**11 N/m^2\n",
+ "Modulus of rigidity is 1.2 *10**11 N/m^2\n",
+ "Poissons ratio is 0.26\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.4 Page no 76"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "r=0.003 #Radius of drop of glycerine in m\n",
+ "T=(63.1*10**-3) #Surface tension of glycerine in N/m\n",
+ "\n",
+ "#Calculations\n",
+ "P=((2*T)/r)\n",
+ "\n",
+ "#Output\n",
+ "print\"Excess pressure inside the drop of glycerine is \",round(P,2),\"N/m^2\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Excess pressure inside the drop of glycerine is 42.07 N/m^2\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.5 Page no 76"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "r1=0.001 #Initial radius in m\n",
+ "r2=0.004 #Final radius in m\n",
+ "t=2*10**-3 #Time in s\n",
+ "s=(7*10**-2) #Surface tension of water in N/m\n",
+ "\n",
+ "#Calculations\n",
+ "P=((2*s)*((1/r2)-(1/r1)))/(t*10**4)\n",
+ "\n",
+ "#Output\n",
+ "print\"Rate of change of pressure is \",P,\"*10**4 N/m**2 s\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Rate of change of pressure is -5.25 *10**4 N/m**2 s\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.6 Page no 77"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "d=0.02 #Diamter of soap bubble in m\n",
+ "s=(25*10**-3) #Surface tension in N/m\n",
+ "#Initial surface area of the bubble is zero and final area is 2*4*pie*r^2 where r is the radius of the bubble\n",
+ "\n",
+ "#Calculations\n",
+ "W=(s*2*4*3.14*(d/2.0)**2)/10.0**-5\n",
+ "\n",
+ "#Output\n",
+ "print\"Work done in blowing a soap bubble is \",W,\"*10**-5 J\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Work done in blowing a soap bubble is 6.28 *10**-5 J\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.7 Page no 77"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "r=0.01 #Radius of liquid drop in m\n",
+ "n=500 #Number of drops\n",
+ "s=(63*10**-3) #Surface tension in N/m\n",
+ "\n",
+ "#Calculations\n",
+ "r1=(((4*3.14*r**3)/3.0)/((n*4*3.14)/3.0))**(1/3.0)\n",
+ "As=(n*4*3.14*r1**2)\n",
+ "A=4*3.14*r**2\n",
+ "W=(s*(As-A))/10.0**-4\n",
+ "\n",
+ "#Output\n",
+ "print\"Energy required to break up a drop of a liquid is \",round(W,1),\"*10**-4 J\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Energy required to break up a drop of a liquid is 5.5 *10**-4 J\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.8 Page no 77"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "d=0.04 #Inside diameter of garden hose in m\n",
+ "D=0.01 #Diamter of nozzle opening in m\n",
+ "v1=0.6 #speed of flow of water in the hose in m/s\n",
+ "\n",
+ "#calculations\n",
+ "a=3.14*(d/2.0)**2\n",
+ "A=3.14*(D/2.0)**2\n",
+ "v2=(v1*a)/A\n",
+ "\n",
+ "#Output\n",
+ "print\"Speed of flow through the nozzle is \",v2,\"m/s\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Speed of flow through the nozzle is 9.6 m/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Principles_of_physics/chapter6.ipynb b/Principles_of_physics/chapter6.ipynb new file mode 100755 index 00000000..4159f312 --- /dev/null +++ b/Principles_of_physics/chapter6.ipynb @@ -0,0 +1,219 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:07e7b9e13f5186e21c37c016dc92fe3d2ec9f35cd561874f30d6be57401876f8"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 6 Real Gas and Transport Processes in gas"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "EXample 6.1 Page no 89"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "a=(2.1*10**-2) #Vanderwaals constant a for neon gas in Nm^4/mol^2\n",
+ "b=(1.71*10**-5) #Vanderwaals constant b for neon gas in m^3/mol\n",
+ "R=8.314 #Gas constant in J/mol.K\n",
+ "\n",
+ "#Calculations\n",
+ "Tc=(8*a)/(27*b*R)\n",
+ "Vc=(3*b)/10.0**-5\n",
+ "Pc=(a/(27*b**2))/10.0**6\n",
+ "\n",
+ "#Output \n",
+ "print\"Critical temperature is \",round(Tc,2),\"K\" \n",
+ "print\"Critical volume is \",round(Vc,2),\"* 10**-5 m**3/mol\"\n",
+ "print\"Critical pressure is \",round(Pc,3),\"* 10**6 N/m**2\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Critical temperature is 43.77 K\n",
+ "Critical volume is 5.13 * 10**-5 m**3/mol\n",
+ "Critical pressure is 2.66 * 10**6 N/m**2\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.2 Page no 89"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "n=181*10**-6 #Coefficient of viscosity of a gas in p\n",
+ "v=3*10**4 #Average speed of molecules in cm/s\n",
+ "d=1.2929*10**-3 #Density in g/cm^3\n",
+ "\n",
+ "#Calculations\n",
+ "lembda=((3*n)/(d*v))/10**-6\n",
+ "\n",
+ "#Output\n",
+ "print\"Mean free path is \",round(lembda,0),\"* 10^-6 cm\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mean free path is 14.0 * 10^-6 cm\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.3 Page no 89"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "m=(28*1.66*10**-27) #Molecular mass of a gas in kg\n",
+ "d=(3.48*10**-10) #Diameter in m\n",
+ "k=(1.38*10**-23) #Boltzmans constant in J/K\n",
+ "P=1.01*10**5 #Pressure at STP in N/m^2\n",
+ "T=273 #Temperature at STP in K\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "D=((1/(P*3*d**2*math.sqrt(m)))*((2*k*T)/3.14)**(3/2.0))/10.0**-5\n",
+ "\n",
+ "#Output\n",
+ "print\"Diffusion coefficient of a gas at STP is \",round(D,2),\"* 10**-5 m^2/s\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Diffusion coefficient of a gas at STP is 1.49 * 10**-5 m^2/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.4 Page no 89"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "m=(32*1.66*10**-27) #Molecular mass of a gas in kg\n",
+ "d=(3.65*10**-10) #Diameter in m\n",
+ "k=(1.38*10**-23) #Boltzmans constant in J/K\n",
+ "P=1.01*10**5 #Pressure at STP in N/m^2\n",
+ "T=273 #Temperature at STP in K\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "n=((1/(3.14*d**2))*math.sqrt((8*k*T*m)/(9*3.14)))/10**-5\n",
+ "\n",
+ "#Output\n",
+ "print\"Viscosity of a gas at STP is \",round(n,3),\"*10^-5 N.s/m^2\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Viscosity of a gas at STP is 1.799 *10^-5 N.s/m^2\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.5 Page no 89"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "v=460 #Average speed of molecules in m/s\n",
+ "l=(720*10**-10) #Mean free path in m\n",
+ "Cv=21.06 #Specific heat at constant volume in J/K.mol\n",
+ "k=(1.38*10**-23) #Boltzmans constant in J/K\n",
+ "P=1.01*10**5 #Pressure at STP in N/m^2\n",
+ "T=273 #Temperature at STP in K\n",
+ "N=6.022*10**23 #Avagadro constant\n",
+ "\n",
+ "#Calculations\n",
+ "K=((1/3.0)*(Cv/N)*(P/(k*T))*v*l)/10.0**-2\n",
+ "\n",
+ "#Output\n",
+ "print\"Thermal conductivity of the gas at STP is \",round(K,5),\"*10**-2 W/m-K\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Thermal conductivity of the gas at STP is 1.03506 *10**-2 W/m-K\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Principles_of_physics/chapter7.ipynb b/Principles_of_physics/chapter7.ipynb new file mode 100755 index 00000000..7db9675d --- /dev/null +++ b/Principles_of_physics/chapter7.ipynb @@ -0,0 +1,191 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:b663d37f11172deb3563f162b70ebad3fa6ba55d33d2460355cbcd711fb7c2ba"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 7 Thin Lens, Coaxial Systems and Aberrations "
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7.1 Page no 114"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "f1=-12.0 #Focal length of a converging lens in cm\n",
+ "f2=25.0 #Focal length of a diverging lens in cm\n",
+ "d=8 #Distance between the lens in cm\n",
+ "\n",
+ "#Calculations\n",
+ "C=(1/f1)+(1/f2)+(d/(f1*f2))\n",
+ "D=(d/f2)+1\n",
+ "A=(d/f1)+1\n",
+ "O1F1=(-D/C)\n",
+ "O2F2=(A/C)\n",
+ "O1H1=(1-D)/C\n",
+ "O2H2=(A-1)/C\n",
+ "\n",
+ "#Output\n",
+ "print\"Position of cardinal points are O1F1 = \",round(O1F1,3),\"cm, O2F2 = \",round(O2F2,3),\"cm, O1H1 = \",round(O1H1,3),\"cm, O2H2 = \",round(O2H2,3),\"cm\"\n",
+ "print\"The system is in air, therfore, nodal points coincide with unit points\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Position of cardinal points are O1F1 = 18.857 cm, O2F2 = -4.762 cm, O1H1 = 4.571 cm, O2H2 = 9.524 cm\n",
+ "The system is in air, therfore, nodal points coincide with unit points\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7.2 Page no 115"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "f=15.0 #Focal length of achromatic doublet made up of crown and flint glasses in cm\n",
+ "fl=(0.01506,0.02427) #Dispersive power of crown and flint glasses respectively \n",
+ "\n",
+ "#Calculations\n",
+ "#Solving two equations\n",
+ "#(1/f)=(1/f1)+(1/f2)\n",
+ "#(f1/f2)=(-0.01506/0.02427)\n",
+ "fx=(fl[0]/fl[1])\n",
+ "f2=(-(1/fx)+1)/(1/f)\n",
+ "f1=(-fx*f2)\n",
+ "\n",
+ "#Output\n",
+ "print\"Focal length of converging lens is \",round(f2,1),\"cm\" \n",
+ "print\"Focal length of diverging lens is \",round(f1,1),\"cm\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Focal length of converging lens is -9.2 cm\n",
+ "Focal length of diverging lens is 5.7 cm\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7.3 Page no 115"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "f=20.0 #Focal length in cm\n",
+ "fl=(0.015,0.019) #Dispersive powers of crown and flint glasses respectively\n",
+ "r=(1.495,1.53) #Refractive indices respectively\n",
+ "\n",
+ "#Calculations\n",
+ "fx=-(fl[0]/fl[1])\n",
+ "#Solving two equations\n",
+ "#(1/f)=(1/f1)+(1/f2)\n",
+ "#(f1/f2)=(-0.015/0.019)\n",
+ "f2=((1/fx)+1)/(1.0/f)\n",
+ "f1=(fx*f2)\n",
+ "r2=(r[1]-1)*f2\n",
+ "r1=1/(((1/f1)/(r[0]-1))+(1/r2))\n",
+ "\n",
+ "#Output\n",
+ "print\"Radius of curvature of converging lens is \",round(r2,1),\"cm\" \n",
+ "print\"Radius of curvature of diverging lens is \",round(r1,1),\"cm\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Radius of curvature of converging lens is -2.8 cm\n",
+ "Radius of curvature of diverging lens is 7.9 cm\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7.4 Page no 116"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "r=1.5 #Refractive index of the material of a thin lens\n",
+ "f=-20.0 #Focal length of the lens in cm\n",
+ "rx=-6.0 #Ratio of radii of curvature of lens\n",
+ "\n",
+ "#Calculations\n",
+ "r1=1/((1/f)/((r-1)*(1-(1/rx))))\n",
+ "r2=(rx*r1)\n",
+ "\n",
+ "#Output\n",
+ "print\"Radii of curvature of lens are \",round(r1,2),\"cm and\",r2,\"cm\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Radii of curvature of lens are -11.67 cm and 70.0 cm\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Principles_of_physics/chapter9.ipynb b/Principles_of_physics/chapter9.ipynb new file mode 100755 index 00000000..d098f46c --- /dev/null +++ b/Principles_of_physics/chapter9.ipynb @@ -0,0 +1,214 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:483ac761a0ac81598a32958276222effb2c60791a86a62e2445fc0aaf9c0e97b"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 9 Interference"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.1 Page no 136"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "t=0.2 #Thickness of film in micro m\n",
+ "r=1.25 #Refractive index of liquid\n",
+ "w=(4000,5000) #Range of wavelength in Angstrom\n",
+ "q=35 #Angle observed in degrees\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "u=math.asin(math.sin(q*3.14/180.0)/r)*180/3.14\n",
+ "w1=(2*t*10**-6*r*math.cos(u*3.14/180.0))/10**-10\n",
+ "w2=w1/2.0 \n",
+ "\n",
+ "#Output\n",
+ "print\"Wavelength absent in reflected light is \",round(w2,0),\"Angstrom\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Wavelength absent in reflected light is 2222.0 Angstrom\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.2 Page no 136"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "r=1.39 #Refractive index of the film \n",
+ "q=30 #Angle observed in degrees\n",
+ "w=(5125,5000) #Wavelengths of two consecutive dark bands in Angstrom\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "r1=math.asin(math.sin(q*3.14/180.0)/r)*180/3.14\n",
+ "n=w[1]/(w[0]-w[1])\n",
+ "t=((n*w[0]*10**-8)/(2.0*r*math.cos(r1*3.14/180.0)))/10**-4\n",
+ "\n",
+ "#Output\n",
+ "print\"Thickness of the film is \",round(t,4),\"*10**-4 cm\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Thickness of the film is 7.9026 *10**-4 cm\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.3 Page no 137"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "r=1.4 #Refractive index of the material\n",
+ "w=5893 #Wavelength of yellow light in Angstrom\n",
+ "n=10 #Number of bands\n",
+ "w1=0.009 #Width of band in m\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "b=math.asin((w*10**-8)*180/3.14/(2.0*r*n*w1))\n",
+ "\n",
+ "#Output\n",
+ "print\"Angle of wedge is \",round(b,4),\"degrees\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Angle of wedge is 0.0134 degrees\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.4 Page no 137"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "r=1.0 #Refractive index\n",
+ "n=4 #Number of bands\n",
+ "w=6500 #Wavelength in Angstrom\n",
+ "\n",
+ "#Calculations\n",
+ "t=(((n+(1/2.0))*w*10**-8)/(2*r))/10.0**-4\n",
+ "\n",
+ "#Output\n",
+ "print\"Thickness of wedge shaped air film is \",t,\"*10**-4 cm\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Thickness of wedge shaped air film is 1.4625 *10**-4 cm\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.5 Page no 137"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#given\n",
+ "d=0.5 #Diameter of the ring in cm\n",
+ "n=4 #number of bands\n",
+ "w=5893 #Wavelength of light in Angstrom\n",
+ "q=30 #Angle at which light enters in degrees\n",
+ "\n",
+ "#Calculations\n",
+ "import math\n",
+ "R=((d**2*math.cos(q*3.14/180.0))/(2.0*(2*n+1)*w*10**-8))\n",
+ "\n",
+ "#Output\n",
+ "print\"Radius of curvature of lens is \",round(R,1),\"cm\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Radius of curvature of lens is 204.1 cm\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/Principles_of_physics/screenshots/image_1.png b/Principles_of_physics/screenshots/image_1.png Binary files differnew file mode 100755 index 00000000..6df661fa --- /dev/null +++ b/Principles_of_physics/screenshots/image_1.png diff --git a/Principles_of_physics/screenshots/image_2.png b/Principles_of_physics/screenshots/image_2.png Binary files differnew file mode 100755 index 00000000..46886dcb --- /dev/null +++ b/Principles_of_physics/screenshots/image_2.png diff --git a/Principles_of_physics/screenshots/image_3.png b/Principles_of_physics/screenshots/image_3.png Binary files differnew file mode 100755 index 00000000..1650e1a0 --- /dev/null +++ b/Principles_of_physics/screenshots/image_3.png diff --git a/Programming_With_Java_A_Primer/README.txt b/Programming_With_Java_A_Primer/README.txt index 215ec20a..215ec20a 100644..100755 --- a/Programming_With_Java_A_Primer/README.txt +++ b/Programming_With_Java_A_Primer/README.txt diff --git a/Programming_With_Java_A_Primer/chapter10.ipynb b/Programming_With_Java_A_Primer/chapter10.ipynb index 47f27579..47f27579 100644..100755 --- a/Programming_With_Java_A_Primer/chapter10.ipynb +++ b/Programming_With_Java_A_Primer/chapter10.ipynb diff --git a/Programming_With_Java_A_Primer/chapter11.ipynb b/Programming_With_Java_A_Primer/chapter11.ipynb index 66fe04c8..66fe04c8 100644..100755 --- a/Programming_With_Java_A_Primer/chapter11.ipynb +++ b/Programming_With_Java_A_Primer/chapter11.ipynb diff --git a/Programming_With_Java_A_Primer/chapter12.ipynb b/Programming_With_Java_A_Primer/chapter12.ipynb index ea0f31a7..ea0f31a7 100644..100755 --- a/Programming_With_Java_A_Primer/chapter12.ipynb +++ b/Programming_With_Java_A_Primer/chapter12.ipynb diff --git a/Programming_With_Java_A_Primer/chapter13.ipynb b/Programming_With_Java_A_Primer/chapter13.ipynb index 7c07d269..7c07d269 100644..100755 --- a/Programming_With_Java_A_Primer/chapter13.ipynb +++ b/Programming_With_Java_A_Primer/chapter13.ipynb diff --git a/Programming_With_Java_A_Primer/chapter16.ipynb b/Programming_With_Java_A_Primer/chapter16.ipynb index 8bd99a77..8bd99a77 100644..100755 --- a/Programming_With_Java_A_Primer/chapter16.ipynb +++ b/Programming_With_Java_A_Primer/chapter16.ipynb diff --git a/Programming_With_Java_A_Primer/chapter17.ipynb b/Programming_With_Java_A_Primer/chapter17.ipynb index c8344546..c8344546 100644..100755 --- a/Programming_With_Java_A_Primer/chapter17.ipynb +++ b/Programming_With_Java_A_Primer/chapter17.ipynb diff --git a/Programming_With_Java_A_Primer/chapter18.ipynb b/Programming_With_Java_A_Primer/chapter18.ipynb index 3760aefe..3760aefe 100644..100755 --- a/Programming_With_Java_A_Primer/chapter18.ipynb +++ b/Programming_With_Java_A_Primer/chapter18.ipynb diff --git a/Programming_With_Java_A_Primer/chapter3.ipynb b/Programming_With_Java_A_Primer/chapter3.ipynb index 15da94c7..15da94c7 100644..100755 --- a/Programming_With_Java_A_Primer/chapter3.ipynb +++ b/Programming_With_Java_A_Primer/chapter3.ipynb diff --git a/Programming_With_Java_A_Primer/chapter4.ipynb b/Programming_With_Java_A_Primer/chapter4.ipynb index fd3a6d08..fd3a6d08 100644..100755 --- a/Programming_With_Java_A_Primer/chapter4.ipynb +++ b/Programming_With_Java_A_Primer/chapter4.ipynb diff --git a/Programming_With_Java_A_Primer/chapter5.ipynb b/Programming_With_Java_A_Primer/chapter5.ipynb index 12e20bd5..12e20bd5 100644..100755 --- a/Programming_With_Java_A_Primer/chapter5.ipynb +++ b/Programming_With_Java_A_Primer/chapter5.ipynb diff --git a/Programming_With_Java_A_Primer/chapter6.ipynb b/Programming_With_Java_A_Primer/chapter6.ipynb index 3ffd656c..3ffd656c 100644..100755 --- a/Programming_With_Java_A_Primer/chapter6.ipynb +++ b/Programming_With_Java_A_Primer/chapter6.ipynb diff --git a/Programming_With_Java_A_Primer/chapter7.ipynb b/Programming_With_Java_A_Primer/chapter7.ipynb index 66904b83..66904b83 100644..100755 --- a/Programming_With_Java_A_Primer/chapter7.ipynb +++ b/Programming_With_Java_A_Primer/chapter7.ipynb diff --git a/Programming_With_Java_A_Primer/chapter8.ipynb b/Programming_With_Java_A_Primer/chapter8.ipynb index 85db9833..85db9833 100644..100755 --- a/Programming_With_Java_A_Primer/chapter8.ipynb +++ b/Programming_With_Java_A_Primer/chapter8.ipynb diff --git a/Programming_With_Java_A_Primer/chapter9.ipynb b/Programming_With_Java_A_Primer/chapter9.ipynb index af0b5898..af0b5898 100644..100755 --- a/Programming_With_Java_A_Primer/chapter9.ipynb +++ b/Programming_With_Java_A_Primer/chapter9.ipynb diff --git a/Programming_With_Java_A_Primer/screenshots/chapter13.png b/Programming_With_Java_A_Primer/screenshots/chapter13.png Binary files differindex 3d211895..3d211895 100644..100755 --- a/Programming_With_Java_A_Primer/screenshots/chapter13.png +++ b/Programming_With_Java_A_Primer/screenshots/chapter13.png diff --git a/Programming_With_Java_A_Primer/screenshots/chapter18.png b/Programming_With_Java_A_Primer/screenshots/chapter18.png Binary files differindex 68c1c7e5..68c1c7e5 100644..100755 --- a/Programming_With_Java_A_Primer/screenshots/chapter18.png +++ b/Programming_With_Java_A_Primer/screenshots/chapter18.png diff --git a/Programming_With_Java_A_Primer/screenshots/chapter9.png b/Programming_With_Java_A_Primer/screenshots/chapter9.png Binary files differindex 9e456528..9e456528 100644..100755 --- a/Programming_With_Java_A_Primer/screenshots/chapter9.png +++ b/Programming_With_Java_A_Primer/screenshots/chapter9.png diff --git a/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter01.ipynb b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter01.ipynb new file mode 100755 index 00000000..88d398a5 --- /dev/null +++ b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter01.ipynb @@ -0,0 +1,879 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:49c580cddfa6fee61cb89005e8162fda0d32dc5e946341e173242a32280cb578"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 1: Introduction to Engineering Principles and Units"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.3-1, Page number 6"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Finding mole mass or weight fraction of solution \n",
+ "\n",
+ "#Variable declaration\n",
+ "mNaOH = 50. #Mass of NaOH in solution in gram\n",
+ "mH2O = 50. #Mass of H2O in solution in gram\n",
+ "MWNaOH = 40 #Molecular weight of NaOH\n",
+ "MWH2O = 18.02 #Molecular weight of H2O\n",
+ "masstolbm = 1/453.6 #Conversion factor for Mass to Lb mass\n",
+ "\n",
+ "#Calculation\n",
+ "mT = mNaOH + mH2O #Total mass of solution\n",
+ "mfNaOH = mNaOH/mT #mfNaOH mass fraction of NaOH \n",
+ "mfH2O = mH2O/mT #mfNaOH mass fraction of H2O\n",
+ "nNaOH = mNaOH/MWNaOH #Number of moles of NaOH\n",
+ "nH2O = mH2O/MWH2O #Number of moles of H2O\n",
+ "nT = nNaOH + nH2O #Total number of moles in solution\n",
+ "xNaOH = nNaOH/nT #xNaOH mole fraction of NaOH\n",
+ "xH2O = nH2O/nT #xH2O mole fraction of H2O\n",
+ "lbmNaOH = mNaOH*masstolbm \n",
+ "lbmH2O = mH2O*masstolbm\n",
+ "\n",
+ "#Result\n",
+ "print \"Mass fraction of NaOH\", mfNaOH\n",
+ "print \"Mass fraction of H2O\", mfH2O \n",
+ "print \"Mole fraction of NaOH\", round(xNaOH,3) \n",
+ "print \"Mole fraction of H2O\", round(xH2O,3)\n",
+ "print \"Mass of NaOH in Lb mass\",round(lbmNaOH,4), \"lbm\"\n",
+ "print \"Mass of H2O in Lb mass\", round(lbmH2O,4), \"lbm\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mass fraction of NaOH 0.5\n",
+ "Mass fraction of H2O 0.5\n",
+ "Mole fraction of NaOH 0.311\n",
+ "Mole fraction of H2O 0.689\n",
+ "Mass of NaOH in Lb mass 0.1102 lbm\n",
+ "Mass of H2O in Lb mass 0.1102 lbm\n"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.4-1, Page number 8"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculate the value of gas law constant\n",
+ "\n",
+ "#Variable declaration \n",
+ "P = 14.7 #Pressure (psia)\n",
+ "V = 359. #Volume of gas(ft3)\n",
+ "Tf = 32 #Temperature in (degF)\n",
+ "n = 1. #Number of moles of Ideal Gas (lbmol)\n",
+ "\n",
+ "#Calculation\n",
+ "Tr = 460 + Tf #Deg F to deg Rankine conversion\n",
+ "R = P*V/(n*Tr) #R Gas constant in ft3.psia/(lbmol.degR)\n",
+ "\n",
+ "#Result\n",
+ "print 'Gas law constant in lbmole, ft3, \u00b0R, and psia units %5.2f ft3.psia/(lbmol.degR)'%(R)\n",
+ "\n",
+ "#Variable declarationSI units\n",
+ "P = 101325 #Pressure (Pa)\n",
+ "V = 22.414 #Volume of gas(m3)\n",
+ "T = 0 #Temperature in (deg C)\n",
+ "n = 1. #Number of moles of Ideal Gas (kgmol)\n",
+ "\n",
+ "#Calculation\n",
+ "TK = 273.15 + T #Deg C to Kelvin conversion\n",
+ "R = P*V/(n*TK) #R Gas constant in m3.pa/(kgmol.K)\n",
+ "\n",
+ "#Result\n",
+ "print 'Gas law constant in kgmole, m3, K, and pa units %5.2f m3.pa/(kgmol.K)'%(R)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Gas law constant in lbmole, ft3, \u00b0R, and psia units 10.73 ft3.psia/(lbmol.degR)\n",
+ "Gas law constant in kgmole, m3, K, and pa units 8314.47 m3.pa/(kgmol.K)\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.4-2, Page number 9"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Composition of Gas\n",
+ "\n",
+ "#Variable declaration\n",
+ "pCO2 = 75. #Partial pressure of CO2 (mmHg)\n",
+ "pCO = 50. #Partial pressure of CO (mmHg)\n",
+ "pN2 = 595. #Partial pressure of N2 (mmHg) \n",
+ "pO2 = 26. #Partial pressure of O2 (mmHg)\n",
+ "\n",
+ "#Calculation\n",
+ "#Total pressure by Dalton's law\n",
+ "P = pCO2 + pCO + pN2 + pO2\n",
+ "xCO2 = pCO2/P\n",
+ "xCO = pCO/P\n",
+ "xN2 = pN2/P\n",
+ "xO2 = pO2/P\n",
+ "\n",
+ "\n",
+ "#Result\n",
+ "print \"Total Pressure P\",P, \"mmHg\"\n",
+ "print \"mole fraction of CO2\", round(xCO2,3)\n",
+ "print \"mole fraction of CO\", round(xCO,3)\n",
+ "print \"mole fraction of N2\", round(xN2,3)\n",
+ "print \"mole fraction of O2\", round(xO2,3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total Pressure P 746.0 mmHg\n",
+ "mole fraction of CO2 0.101\n",
+ "mole fraction of CO 0.067\n",
+ "mole fraction of N2 0.798\n",
+ "mole fraction of O2 0.035\n"
+ ]
+ }
+ ],
+ "prompt_number": 19
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.5-1, Page number 10"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Concentration of Orange Juice using evaporator\n",
+ "\n",
+ "#Variable declaration\n",
+ "F = 1000. #Feed rate of orange juice to evaporator (kg/hr)\n",
+ "MpSi = 7.08 #Mass percent of solids in incomming juice\n",
+ "MpSo = 58. #Mass percent of solids in concentrated juice\n",
+ "xW = 0.0\n",
+ "#Calculation\n",
+ " #Overall Mass Balance\"\n",
+ " #$F = W + C$\"\n",
+ " #Component Mass Balance on solids\"\n",
+ " #$F.xF = W.xW + C.xC$\n",
+ "\n",
+ "C = F*MpSi/(100)/(MpSo/100)\n",
+ "#Using overall Balance equation\n",
+ "W = 1000-C\n",
+ "\n",
+ "#Results\n",
+ "print \"Flow rate of Concentrated juice stream\", round(C,1) ,\"kg/hr\"\n",
+ "print \"Flow rate of evaporated water stream\", round(W,1) ,\"kg/hr\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Flow rate of Concentrated juice stream 122.1 kg/hr\n",
+ "Flow rate of evaporated water stream 877.9 kg/hr\n"
+ ]
+ }
+ ],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.5-2, Page number 11"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Crystallization of KNO3 and Recycle\n",
+ "\n",
+ "#Variable declaration\n",
+ "\n",
+ "F = 1000. #F: Feed to the process, kg/hr\n",
+ "xW = 0. #xW: Weight % of KNO3 in water vaopor stream\n",
+ "xF = 20. #xF: Weight % of KNO3 in Feed\n",
+ "xP = 96. #xP: Weight % of KNO3 in product stream\n",
+ "xR = 37.5 #xR: Weight % of KNO3 in Recycle\n",
+ "xS = 50. #xS: Weight % of KNO3 in stream from evaporator to crystallizer\n",
+ "#Calculation\n",
+ " #Overall material Balance\n",
+ " # F = W + P\n",
+ " # Component material balance on KNO3\n",
+ " # F.xF = W.xW + P.xP\n",
+ " # Solving for P\n",
+ "P = (F*xF/100)/(xP/100) #P: Product rate from process, kg/hr\n",
+ " #Balance over crystallizer\n",
+ " # S = R + P --> P = S - R\n",
+ " #Component balance over crystallizer\n",
+ " # S.xS = R.xR + P.xP --> (R + P).xS = R.xR + P.xP --> ((R + P).xS - P.xP )/xR = \n",
+ "R = P*(xP-xS)/(xS-xR) #R: REcycle rate, kg/hr\n",
+ "S = R + P #S: Concentrate rate from evaporator to crystallizer, kg/hr\n",
+ "\n",
+ "#Result\n",
+ "print \"Product rate from the process is\",round(P,1), \"kg/hr\"\n",
+ "print \"Recycle rate from the process is\",round(R,1), \"kg/hr\"\n",
+ "print \"Stream leaving evaporator \",round(S,1), \"kg/hr\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Product rate from the process is 208.3 kg/hr\n",
+ "Recycle rate from the process is 766.7 kg/hr\n",
+ "Stream leaving evaporator 975.0 kg/hr\n"
+ ]
+ }
+ ],
+ "prompt_number": 21
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.5-3, Page number 12"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Combustion of fuel gas\n",
+ "\n",
+ "#Variable declaration\n",
+ " #Basis 100 kg mol of feed, moles = mole%x100/100\n",
+ "H2=3.1 #Moles of H2 in feed\n",
+ "CO=27.2 #moles of CO in feed\n",
+ "CO2=5.6 #Moles of CO2 in feed\n",
+ "O2=0.5 #Moles of O2 in feed\n",
+ "N2=63.6 #Moles of N2 in feed\n",
+ " #98% CO reacts to form CO2\n",
+ "\n",
+ "#Calculation\n",
+ " #CO + (0.5)O2 ----> CO2\n",
+ " #H2 +(0.5)O2 ----> H2O\n",
+ " #Accounting the total number of moles of O2 in the fuel gas theoretically\n",
+ "\n",
+ "MthO2=(0.5)*CO + 0.5*H2 - O2 #theoretically required O2 moles\n",
+ "\n",
+ " #For 20% excess moles required \n",
+ "MactO2=(1.2)*MthO2 #Actual moles of O2 required \n",
+ "\n",
+ " #Since air contains 79 mol% of N2\n",
+ "MN2=(79./21)*MactO2 #moles of N2 in air\n",
+ " #2% CO does not react\n",
+ "MTN2 = MN2 + N2\n",
+ "MO2in = O2 + MactO2\n",
+ "#Mflueg = moles of water + unreacted CO + CO2 (from reacted CO and CO2 in feed ) + N2 + O2 \n",
+ "MH2Oflueg = H2\n",
+ "MN2flueg = MTN2\n",
+ "MCOflueg = 0.02*CO\n",
+ "MCO2flueg = CO2 + 0.98*CO\n",
+ "MO2flueg = MO2in - (0.5*H2 + 0.98*CO/2 )\n",
+ "\n",
+ "Mflueg = MH2Oflueg + 0.02*CO + CO2 + 0.98*CO + MTN2 + (MO2in - (0.5*H2 + 0.98*CO/2 ))\n",
+ "\n",
+ "\n",
+ "#Result\n",
+ "print \"Moles of CO in exit flue\",round(MCOflueg,2),\"mol\"\n",
+ "print \"Moles of CO2 in exit flue\",round(MCO2flueg,2),\"mol\"\n",
+ "print \"Moles of O2 in exit flue\",round(MO2flueg,2),\"mol\"\n",
+ "print \"Moles of N2 in exit flue\",round(MTN2,1),\"mol\"\n",
+ "print \"Moles of H2O in exit flue\",round(MH2Oflueg,2),\"mol\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Moles of CO in exit flue 0.54 mol\n",
+ "Moles of CO2 in exit flue 32.26 mol\n",
+ "Moles of O2 in exit flue 3.2 mol\n",
+ "Moles of N2 in exit flue 129.7 mol\n",
+ "Moles of H2O in exit flue 3.1 mol\n"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.6-1, Page number 14"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Heating of N2 Gas\n",
+ "\n",
+ "#Variable declaration\n",
+ "\n",
+ "M=3. #Moles of N2\n",
+ "T1=298. #Temperature of N2 gas (K)\n",
+ "T2=673. #Temperature of N2 gas (K)\n",
+ "T3=1123. #Temperature of N2 gas (K)\n",
+ "\n",
+ "# Data\n",
+ "Cpm1=29.68 #Mean heat capacity of N2 gas ranging 298K-673K (J/gmol.k)\n",
+ "Cpm2=31.00 #Mean heat capacity of N2 gas ranging 298K-1123K (J/gmol.k)\n",
+ "\n",
+ "#Calculation\n",
+ "#Heat required (Hi)=M*Cpmi*(del T)\n",
+ "H1 = M*Cpm1*(T2-T1) #Heat required in (J)\n",
+ "H2 = M*Cpm2*(T3-T1) #Heat required in (J)\n",
+ "H3 = H2-H1 #Heat required in (J) Since there is no mean heat capacity for the interval 673K-1123K\n",
+ "\n",
+ "#Result\n",
+ "print \"(a) Heat required to raise the temperature from 298K-673K\",H1,\"J\"\n",
+ "print \"(b) Heat required to raise the temperature from 298K-1123K\",H2,\"J\"\n",
+ "print \"(c) Heat required to raise the temperature from 673K-1123K\",H3,\"J\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "(a) Heat required to raise the temperature from 298K-673K 33390.0 J\n",
+ "(b) Heat required to raise the temperature from 298K-1123K 76725.0 J\n",
+ "(c) Heat required to raise the temperature from 673K-1123K 43335.0 J\n"
+ ]
+ }
+ ],
+ "prompt_number": 23
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.6-2, Page number 16"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Heating of Milk\n",
+ "\n",
+ "#Variable declaration\n",
+ "\n",
+ "mdot = 4536. #Mass rate of kg/hr\n",
+ "Ti = 4.4 #Temeprature of incomming milk, deg C\n",
+ "To = 54.4 #Temperature of milk leaving exhanger, deg C\n",
+ "C = 3.85 #Heat capacity of cow milk, kJ/(kg.K)\n",
+ "#Data\n",
+ "\n",
+ "#Calculation\n",
+ "Mdot = mdot/3600 #Mass rate of kg/s\n",
+ "delT = To - Ti #delT: Temperature difference between milk temperature at outlet and inlet \n",
+ "Q = Mdot*C*delT #Q: Heat required, kW\n",
+ "#Result\n",
+ "print \"Rate of Heat Addition: \",Q, \"kJ/s or kW\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Rate of Heat Addition: 242.55 kJ/s or kW\n"
+ ]
+ }
+ ],
+ "prompt_number": 24
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.6-3, Page number 17"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Use of Steam Table\n",
+ "\n",
+ "#Variable declaration\n",
+ "\n",
+ "m = 1 # mass of water in kg or lbm\n",
+ "\n",
+ "#Part A SI Units\n",
+ "# Data\n",
+ "H21_11 = 88.60 # Enathalpy at 21.11 degC, kJ/kg\n",
+ "H60 = 251.13 # Enathalpy at 60 degC, kJ/kg \n",
+ "#Calculation\n",
+ "\n",
+ "delH = H60 - H21_11\n",
+ "\n",
+ "#Result\n",
+ "print \"Enthalpy change for heating 1kg of steam\", delH, \"kJ/kg\"\n",
+ "\n",
+ "#Part A British Units\n",
+ "# Data\n",
+ "H70 = 38.09 # Enathalpy at 70 degF, btu/lbm\n",
+ "H140 = 107.96 # Enathalpy at 140 degF, btu/lbm\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "delH = H140 - H70\n",
+ "\n",
+ "#Result\n",
+ "print \"Enthalpy change for heating 1 lbm of steam\", delH, \"Btu/lbm\"\n",
+ "\n",
+ "#Part B SI Units\n",
+ "# Data\n",
+ "H21_11 = 88.60 # Enathalpy at 21.11 degC, kJ/kg\n",
+ "H115_6 = 2699.9 # Enathalpy at 115.6 degC, kJ/kg at 172.2 kPa\n",
+ "\n",
+ "#Calculation\n",
+ "delH = H115_6 - H21_11\n",
+ "\n",
+ "#Result\n",
+ "print \"Enthalpy change for heating 1kg of steam\", delH, \"kJ/kg\"\n",
+ "\n",
+ "#Part B British Units\n",
+ "# Data\n",
+ "H70 = 38.09 # Enathalpy at 70 degF, btu/lbm\n",
+ "H240 = 1160.7 # Enathalpy at 140 degF, btu/lbm at 24.97 psia\n",
+ "\n",
+ "#Calculation\n",
+ "delH = H240 - H70\n",
+ "\n",
+ "#Result\n",
+ "print \"Enthalpy change for heating 1 lbm of steam\", delH, \"Btu/lbm\"\n",
+ "\n",
+ "#Part C SI Units\n",
+ "# Data\n",
+ "Hv_115_6 = 2699.9 # Enathalpy at 115.6 degC, kJ/kg at 172.2 kPa\n",
+ "Hl_115_6 = 484.9 # Enathalpy at 115.6 degC, kJ/kg at 172.2 kPa\n",
+ "\n",
+ "#Calculation\n",
+ "LambdaV = Hv_115_6 - Hl_115_6\n",
+ "\n",
+ "#Result\n",
+ "print \"Enthalpy of vaporization 1 kg of steam\", LambdaV, \"kJ/kg\"\n",
+ "\n",
+ "#Part C British Units\n",
+ "# Data\n",
+ "Hv_115_6 = 1160.7 #Enathalpy water vapor at 240 degF, Btu/lbm at 24.97 psia\n",
+ "Hl_115_6 = 208.44 #Enathalpy saturated water at 240 degF, Btu/lbm at 24.97 psia\n",
+ "\n",
+ "#Calculation\n",
+ "LambdaV = Hv_115_6 - Hl_115_6\n",
+ "#Result\n",
+ "print \"Enthalpy of vaporization 1 kg of steam\", LambdaV, \"Btu/lbm\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enthalpy change for heating 1kg of steam 162.53 kJ/kg\n",
+ "Enthalpy change for heating 1 lbm of steam 69.87 Btu/lbm\n",
+ "Enthalpy change for heating 1kg of steam 2611.3 kJ/kg\n",
+ "Enthalpy change for heating 1 lbm of steam 1122.61 Btu/lbm\n",
+ "Enthalpy of vaporization 1 kg of steam 2215.0 kJ/kg\n",
+ "Enthalpy of vaporization 1 kg of steam 952.26 Btu/lbm\n"
+ ]
+ }
+ ],
+ "prompt_number": 25
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.6-4, Page number 18"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Combustion of Carbon\n",
+ "\n",
+ "#Variable declaration\n",
+ "n = 10. # gmol of Carbon \n",
+ "nCO2 = 90. #Percent of Carbon converted to CO2\n",
+ "nCO = 10. #Percent of Carbon converted to CO\n",
+ "DelHcCO2 = -393513 # Standard enthalpy change of combustion for CO2 in kJ/kmol\n",
+ "DelHcCO = -110523 # Standard enthalpy change of combustion for CO2 in kJ/kmol\n",
+ " \n",
+ "#Calculation\n",
+ "n1 = n/1000\n",
+ "delHc = n1*nCO2*DelHcCO2/100 + n1*nCO*DelHcCO/100\n",
+ "\n",
+ "#Result\n",
+ "print \" Entahlpy change on incomplete combustion of Carbon:\", round(delHc), \"kJ\"\n",
+ "\n",
+ "#Data kcal Units \n",
+ "DelHcCO2 = -94.0518 # Standard enthalpy change of combustion for CO2 in kcal/gmol\n",
+ "DelHcCO = -26.4157 # Standard enthalpy change of combustion for CO2 in kcal/gmol\n",
+ "\n",
+ "#Calculation\n",
+ "delHc = n*nCO2*DelHcCO2/100 + n*nCO*DelHcCO/100\n",
+ "\n",
+ "#Result\n",
+ "print \" Entahlpy change on incomplete combustion of Carbon:\", round(delHc), \"kcal\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Entahlpy change on incomplete combustion of Carbon: -3652.0 kJ\n",
+ " Entahlpy change on incomplete combustion of Carbon: -873.0 kcal\n"
+ ]
+ }
+ ],
+ "prompt_number": 26
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.6-5, Page number 18"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Reaction of Methane\n",
+ "\n",
+ "#Variable declaration\n",
+ "molCH4=1. #MOles of CH4 (kg)\n",
+ "press=101.32 #Pressure (kPa)\n",
+ "temp=298. #temperature (K)\n",
+ "delHfCH4=-74848. #Heat of Formation of CH4 (kJ/kg mol)\n",
+ "delHfH2O=-285840. #Heat of Formation of H2O (kJ/kg mol)\n",
+ "delHfCO=-110523. #Heat of Formation of CO (kJ/kg mol)\n",
+ "delHfH2=0 #Heat of Formation of H2 (kJ/kg mol)\n",
+ "\n",
+ "#Calculation\n",
+ " #delH= delHf(products)-delHf(reactants) \n",
+ "\n",
+ "delH= (delHfCO + 3*delHfH2) - (delHfCH4 + delHfH2O)\n",
+ "\n",
+ "#Result\n",
+ "print 'The standard heat of Formation %5.2e'%(delH),\"kJ/kg mol (Endothermic)\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The standard heat of Formation 2.50e+05 kJ/kg mol (Endothermic)\n"
+ ]
+ }
+ ],
+ "prompt_number": 27
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.7-1, Page number 19"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Heating of Fermentation Medium\n",
+ "\n",
+ "#Variable declaration SI Units \n",
+ "\n",
+ "F=2000. #Feed rate of Liquid (kg/h)\n",
+ "TLi=30. #Initial temperature of the liquid (\u00b0C)\n",
+ "TLo=70. #Final temperature of the liquid (\u00b0C)\n",
+ "TWi=95. #Temperature of water while entering (\u00b0C)\n",
+ "TWo=85. #Temperature of water while leaving (\u00b0C)\n",
+ "Tref=25. #Reference temperature (\u00b0C)\n",
+ "CL=4.06 #Enthalpy of liquid at 25 degC (kJ/kg)\n",
+ "Cw=4.21 #Enthalpy of water at 25 degC (kJ/kg)\n",
+ "\n",
+ "#Calculations \n",
+ "\n",
+ "delTLi=TLi-Tref\n",
+ "delTLo=TLo-Tref\n",
+ "delTW=TWi-Tref\n",
+ " #Input streams\n",
+ "HLi=F*CL*delTLi\n",
+ " #Output streams\n",
+ "HLo=F*CL*delTLo \n",
+ " #Heat gained by the system = Heat gained at outlet - heat at inlet\n",
+ "QL = HLo-HLi\n",
+ " #Heat gained by liquid = Heat lost by water \n",
+ "W = QL/(Cw*(TWi-TWo))\n",
+ "\n",
+ "#Result\n",
+ "print 'Rate Enthalpy of the liquid entering %5.2e kJ/kg'%HLi\n",
+ "print 'Rate Enthalpy of the liquid leaving %5.2e kJ/kg'%HLo\n",
+ "print 'Heat added to fermentation medium %5.4e'%(QL),\"kJ/h\"\n",
+ "print \"Feed rate of water supplied\",round(W,2),\"kg/h\"\n",
+ "print 'The answer has been checked using calculator and \\ndiffers from answer given in book because of truncation'\n",
+ "print \"Heat added to fermentation medium:\",round(QL/3600,2),\"kW\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Rate Enthalpy of the liquid entering 4.06e+04 kJ/kg\n",
+ "Rate Enthalpy of the liquid leaving 3.65e+05 kJ/kg\n",
+ "Heat added to fermentation medium 3.2480e+05 kJ/h\n",
+ "Feed rate of water supplied 7714.96 kg/h\n",
+ "The answer has been checked using calculator and \n",
+ "differs from answer given in book because of truncation\n",
+ "Heat added to fermentation medium: 90.22 kW\n"
+ ]
+ }
+ ],
+ "prompt_number": 28
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.7-2, Page number 21"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Heat and Material Balance in Combustion\n",
+ "\n",
+ "#Variable declaration SI Units \n",
+ "mCO = 1. #Moles of CO burnt in furnace (kmol/h)\n",
+ "delHc=-282989. #Standard heat of combustion of CO (kJ/kmol)\n",
+ "CpmCO = 29.38 #Mean Heat capacity of CO between temperature 298k-478k\n",
+ "CpmCO2 = 49.91 #Mean Heat capacity of CO2 between temperature 298k-478k\n",
+ "CpmN2 = 31.43 #Mean Heat capacity of N2 between temperature 298k-478k\n",
+ "CpmO2 = 33.25 #Mean Heat capacity of O2 between temperature 298k-478k\n",
+ "Cpmair = 29.29 #Mean Heat capacity of Air between temperature 298k-478k\n",
+ "Tref = 298. #Reference temperature for enthalpy calculation\n",
+ "TCOi = 473. #Temperature of CO inlet stream \n",
+ "Tair = 373. #Temperature of inlet air stream\n",
+ "Texit = 1273. #Temperature of outgoing stream\n",
+ "\n",
+ "#Calculation\n",
+ " #CO(g) + (0.5)O2(g) ---> CO2(g)\n",
+ " #Since from the above equation we get that 1 mole of CO will require 0.5 mole O2\n",
+ "MthO2 = (0.5)*1. #Theoretically required O2 moles (kmol/h)\n",
+ "MactO2 = (1.9)*(MthO2) #Moles of O2 actually added\n",
+ "MN2 = (0.79/0.21)*MactO2 #Moles of N2 added\n",
+ "xO2 = MactO2 - MthO2 #Moles of O2 in exit flue\n",
+ "xCO2 = mCO #Moles of CO2 formed is equal to moles of CO added\n",
+ "xN2 = MN2 #Moles of N2 in the exit flue\n",
+ "MAir = xN2 + MactO2\n",
+ "\n",
+ " #Input streams \n",
+ "HinAir = MAir*Cpmair*(Tair-Tref)\n",
+ "HinCO = mCO*CpmCO*(TCOi-Tref)\n",
+ "HCO2 = xCO2*CpmCO2*(Texit-Tref)\n",
+ "HN2 = xN2*CpmN2*(Texit-Tref)\n",
+ "HO2 = xO2*CpmO2*(Texit-Tref)\n",
+ "Qr = mCO*delHc #Heat removed = total enthalpy of leaving streams - total enthalpy of incoming streams + heat added due to reaction\n",
+ "q = HCO2 + HO2 + HN2 - (HinAir + HinCO-Qr)\n",
+ "\n",
+ "#Result\n",
+ "print 'moles of O2 actually added %4.3f kgmol/h'%MactO2\n",
+ "print 'moles of N2 added %4.3f kgmol/h, Notice this value differs from \\nthan in book hence following values also change but are correct'%xN2\n",
+ "print 'moles of air added %4.3f kgmol/h'%(MactO2+MN2)\n",
+ "print 'moles of O2 in exit flue gas %4.3f kgmol/h'%xO2\n",
+ "print 'Enthalpy of air entering %4.3f kJ/h'%HinAir\n",
+ "print 'Enthalpy of CO entering %4.3f kJ/h'%HinCO\n",
+ "print 'Enthalpy of CO2 leaving %4.3f kJ/h'%HCO2\n",
+ "print 'Enthalpy of N2 leaving %4.3f kJ/h'%HN2\n",
+ "print 'Enthalpy of O2 leaving %4.3f kJ/h'%HO2\n",
+ "print \"Heat Removed: \", round(q), \"kJ/hr\"\n",
+ "print \"Heat Removed: \", round(q*1000./3600.),\"W\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "moles of O2 actually added 0.950 kgmol/h\n",
+ "moles of N2 added 3.574 kgmol/h, Notice this value differs from \n",
+ "than in book hence following values also change but are correct\n",
+ "moles of air added 4.524 kgmol/h\n",
+ "moles of O2 in exit flue gas 0.450 kgmol/h\n",
+ "Enthalpy of air entering 9937.679 kJ/h\n",
+ "Enthalpy of CO entering 5141.500 kJ/h\n",
+ "Enthalpy of CO2 leaving 48662.250 kJ/h\n",
+ "Enthalpy of N2 leaving 109516.713 kJ/h\n",
+ "Enthalpy of O2 leaving 14588.437 kJ/h\n",
+ "Heat Removed: -125301.0 kJ/hr\n",
+ "Heat Removed: -34806.0 W\n"
+ ]
+ }
+ ],
+ "prompt_number": 29
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.7-3, Page number 22"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Oxidation of LactoseC12H22O11\n",
+ "\n",
+ "#Variable declaration\n",
+ " #HLact37, Total Enthalpy of Lactose stream in at 37 deg C \n",
+ " #HO237, Total Enthalpy of Oxygen stream in at 37 deg C \n",
+ " #HH2O37, Total Enthalpy of Water out at 37 deg C \n",
+ " #HCO237, Total Enthalpy of CO2 stream out at 37 deg C \n",
+ " #delHcLact37, Heat of combustion for Lactose, J/mol\n",
+ "\n",
+ "\n",
+ "nLact = 1. #Mass of Lactose in gmol\n",
+ "nO2 = 12. #Moles oo O2 fed\n",
+ "nCO2 = 12. #Moles oo CO2 \n",
+ "nH2O = 11. #Moles oo H2O \n",
+ "MWLact = 342.3 #Molecular weight of lactose\n",
+ "MWH2O = 18.02 #Molecular weight of water\n",
+ "CpmLact = 1.2 #Mean specific heat of Lactose, J/g.K\n",
+ "CpmO2 = 29.38 #Mean specific heat of O2, J/mol.K\n",
+ "CpmH2O = 4.18 #Mean specific heat of H2O, J/mol.K\n",
+ "CpmCO2 = 37.45 #Mean specific heat of CO2, J/mol.K\n",
+ "delHcLact = 5648.8e3 #Std. Heat of combustion for Lactose, J/mol\n",
+ "Tref = 25. #Reference temperature, deg C\n",
+ "Ts = 37. #Stream temperature, deg C\n",
+ "\n",
+ "\n",
+ "#Calculation\n",
+ " #H = n*Cpmi*(T-Tref)\n",
+ " #Del T in degC = Del T in K\n",
+ "mLact = nLact*MWLact\n",
+ "HLact37 = mLact*CpmLact*(Ts-Tref)\n",
+ "HO237 = nO2*CpmO2*(Ts-Tref)\n",
+ "HCO237 = nCO2*CpmCO2*(Ts-Tref)\n",
+ "HH2O37 = nH2O*MWH2O*CpmH2O*(Ts-Tref)\n",
+ "delHcLact37 = HCO237 + HH2O37 - (HLact37 + HO237 + delHcLact)\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"Enthalpy of Lactose stream in at 37 deg C:\",round(HLact37),\"J/gmol\"\n",
+ "print \"Enthalpy of Oxygen stream in at 37 deg C :\",round(HO237), \"J/gmol\" \n",
+ "print \"Enthalpy of Water out at 37 deg C :\",round(HH2O37), \"J/gmol\" \n",
+ "print \"Enthalpy of CO2 stream out at 37 deg C :\",round(HCO237), \"J/gmol\"\n",
+ "print \"Heat of combustion for Lactose :\",round(HLact37),\"J/gmol\"\n",
+ "print 'Heat of combustion of Lactose at 37 deg C:%6.3e'%(delHcLact37),\"J/gmol\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enthalpy of Lactose stream in at 37 deg C: 4929.0 J/gmol\n",
+ "Enthalpy of Oxygen stream in at 37 deg C : 4231.0 J/gmol\n",
+ "Enthalpy of Water out at 37 deg C : 9943.0 J/gmol\n",
+ "Enthalpy of CO2 stream out at 37 deg C : 5393.0 J/gmol\n",
+ "Heat of combustion for Lactose : 4929.0 J/gmol\n",
+ "Heat of combustion of Lactose at 37 deg C:-5.643e+06 J/gmol\n"
+ ]
+ }
+ ],
+ "prompt_number": 30
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter02.ipynb b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter02.ipynb new file mode 100755 index 00000000..47b8388a --- /dev/null +++ b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter02.ipynb @@ -0,0 +1,1564 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:2983d20baa7ffdc8f712c1d56291b4f0f9e932dcec505cf5db8d7f9e1f38e4b6"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 2: Principles of Momentum Transfer and Overall Balances"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.2-1, Page number 32"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Units and Dimensions of Force\n",
+ "# Variable declaration\n",
+ "m = 3. #Mass of the body (lbm)\n",
+ "g_fps = 32.174 #Acceleration due to gravity in fps units (ft/s2)\n",
+ "confaclbmtolbf = 32.174 #Conversion factor from lbm to lbf(lbm.ft/lbf.s2)\n",
+ "confaclbmtog = 453.59 #Conversion factor from lbm to gram (g/lbm)\n",
+ "g_mks = 980.665 #Acceleration due to gravity in mks units (cm/s2)\n",
+ "confaclbtokg = 2.2046 #Conversion factor from lbm to kg (kg/lbm)\n",
+ "g_SI = 9.80665 #Acceleration due to gravity in SI units (m/s2)\n",
+ " # Data SI Units \n",
+ "#Calculation\n",
+ "#(a)\n",
+ " #Fa = m*g_fps*ga\n",
+ "Fa = m*g_fps/confaclbmtolbf\n",
+ " #Fb = m*g_mks*mb\n",
+ "Fb = m*g_mks*confaclbmtog\n",
+ " #Fc = m*g_si*gc\n",
+ "Fc = m*g_SI/confaclbtokg\n",
+ "#Result\n",
+ "print \"(a) The force in lbf is \",round(Fa,4),\"lbf\"\n",
+ "print '(b) The force in dynes is %6.4e'%(Fb),\"dyne\"\n",
+ "print \"(c) The force in Newton is \",round(Fc,2),\"N\"\n",
+ "print 'The answers are correct because of book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "(a) The force in lbf is 3.0 lbf\n",
+ "(b) The force in dynes is 1.3345e+06 dyne\n",
+ "(c) The force in Newton is 13.34 N\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.2-2, Page number 34"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Pressure in Storage Tank\n",
+ "# Variable declaration\n",
+ "Ht = 3.66 #Height of the tank (m)\n",
+ "P = 1. #Pressure exerted (atm)\n",
+ "Hto = 3.05 #Height of tank filled with oil (m)\n",
+ "Htw = 0.61 #Height of tank filled with water (m)\n",
+ "Rho_oil = 917. #Density of oil (kg/m3)\n",
+ "Rho_H2O = 1000. #Density of H2O (kg/m3)\n",
+ "g = 9.8 #Gravitational acceleration (m/s2)\n",
+ " # Data \n",
+ "Patm_psia = 14.696 #Atmospheric pressure (psia)\n",
+ "P_pa = 101325. #Atmospheric pressure (pa)\n",
+ "Ht_ft = 12. #Height of the tank (ft)\n",
+ "Hto_ft = 10. #Height of tank filled with oil (ft)\n",
+ "Htw_ft = 2. #Height of tank filled with water (ft)\n",
+ "confacsitofps = 0.06243 #conversion factor for density(kg/m3) to (lbm/ft3)\n",
+ "confacft2toin2 = 1./144. #Conversion factor (ft2) to (in2) \n",
+ "# Calculation\n",
+ " #In fps units\n",
+ " #Pressure exerted by oil in fps units \n",
+ " #P1f = Hto_ft*Rho_oil*confacsitofps*confacft2toin2 + P_psia\n",
+ "P1f = (Hto_ft*Rho_oil*confacsitofps*confacft2toin2 + Patm_psia) \n",
+ " #P2f = Htw_ft*Rho_H2O*confacsitofps*confacft2toin2 + P1f\n",
+ "P2f= Htw_ft*Rho_H2O*confacsitofps*confacft2toin2 + P1f \n",
+ " #Pressure exerted in SI units\n",
+ "#Pressure exerted by oil in SI units \n",
+ "P1si = Hto*Rho_oil*g + P_pa\n",
+ "#Pressure exerted by water in SI\n",
+ "P2si = Htw*Rho_H2O*g + P1si\n",
+ "Pgage = P2f - Patm_psia\n",
+ "#Result\n",
+ "print \"Pressure exerted by oil in fps \",round(P1f,2),\"psia\"\n",
+ "print 'Pressure exerted by oil in SI %6.3e Pa'%(P1si)\n",
+ "print \"Pressure exerted by water in fps \",round(P2f,2),\"psia\"\n",
+ "print 'Pressure exerted by H2O in SI %6.3e Pa'%(P2si)\n",
+ "print 'Gage pressure at the bottom of tank %5.2f psig'%(Pgage)\n",
+ "print 'The answers are correct because of book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressure exerted by oil in fps 18.67 psia\n",
+ "Pressure exerted by oil in SI 1.287e+05 Pa\n",
+ "Pressure exerted by water in fps 19.54 psia\n",
+ "Pressure exerted by H2O in SI 1.347e+05 Pa\n",
+ "Gage pressure at the bottom of tank 4.84 psig\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.2-3, Page number 36"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Conversion of a pressure to head of a fluid \n",
+ "\n",
+ "# Variable declaration\n",
+ "P = 101325. #Standard atmospheric pressure (kN/m2)\n",
+ "# Data \n",
+ "Rho_H2O = 1000. #Density of H2O at 4 deg C (kg/m3)\n",
+ "Rho_Hg = 13.5955 #Density of Hg at 0 deg C (g/cm3)\n",
+ "g = 9.80665 #Gravitational acceleration (m/s2)\n",
+ "Rho_H2O_cgs = 1. #Density of H2O at 4 deg C (g/cm3)\n",
+ " \n",
+ " # Calculation\n",
+ "#Pressure head in terms of H2O\n",
+ " # H_H2O = Pressure/(density of H2O*Gravitational acceleration)\n",
+ "H_H2O = P/(Rho_H2O*g)\n",
+ " #H_Hg = Pressure/(density of Hg*Gravitational acceleration)\n",
+ "H_Hg = H_H2O*Rho_H2O_cgs/Rho_Hg\n",
+ "\n",
+ "#Result\n",
+ "print \"Pressure head of H2O \",round(H_H2O,2),\"m of water at 4\u00b0C\"\n",
+ "print \"Pressure head of Hg \",round(H_Hg,3),\"mmHg\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressure head of H2O 10.33 m of water at 4\u00b0C\n",
+ "Pressure head of Hg 0.76 mmHg\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.2-4, Page number 37"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Pressure Difference in a Manometer\n",
+ "# Variable declaration\n",
+ "R_cgs = 32.7 #Reading of manometer (cm)\n",
+ "# Data \n",
+ "Rho_H2O = 1000. #Density of H2O (g/cm3)\n",
+ "Rho_Hg = 13600. #Density of Hg (g/cm3)\n",
+ "g = 9.80665 #Gravitational acceleration (m/s2)\n",
+ "R_SI = 0.327 #Reading of manometer (m) \n",
+ " # Calculation\n",
+ "#Pressure difference in SI units\n",
+ " #delP = R_SI*(Rho_Hg-Rho_H2O)*g\n",
+ "delP = R_SI*(Rho_Hg-Rho_H2O)*g \n",
+ "#Result\n",
+ "print ' The pressure difference in SI units %10.3e'%(delP),\"N/m2\"\n",
+ "print 'The answer is correct because of book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " The pressure difference in SI units 4.041e+04 N/m2\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.3-1, Page number 41"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Molecular Transport of a Property at Steady State \n",
+ "# Variable declaration\n",
+ "C1 = 0.0137 #Concentration at point 1 (property/m3)\n",
+ "C2 = 0.0072 #Concentration at point 2 (property/m3)\n",
+ "z1 = 0 #Distance at point 1 (m)\n",
+ "z2 = 0.4 #Distance at point 2 (m)\n",
+ "z = 0.2 #Midpoint (m)\n",
+ "delta = 0.013 #Diffusivty (m2/s)\n",
+ "# Calculation\n",
+ " #Calculation for part (a)\n",
+ " #Flux = delta*(C1-C2)/(z2-z1)\n",
+ "Flux = delta*(C1-C2)/(z2-z1)\n",
+ " #Calculation for part (c)\n",
+ "C = C1 + Flux*(z1-z)/delta \n",
+ "#Result\n",
+ "print '(a) The flux is %6.3e property/s.m2'%(Flux)\n",
+ "print '(c) The concentration at the midpoint is %6.3e property/m3'%(C)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "(a) The flux is 2.113e-04 property/s.m2\n",
+ "(c) The concentration at the midpoint is 1.045e-02 property/m3\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.4-1, Page number 45"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculation of Shear Stress in a Liquid\n",
+ "# Variable declaration\n",
+ "confaccgstofps = 0.0020875\n",
+ "confaccgstosi = 1/10.\n",
+ "dely = 0.5 #The distance between the two plates (cm)\n",
+ "delVz = 10. #The velocity change (cm/s)\n",
+ "u = 0.0177 #The viscosity of liquid (g/cm.s) \n",
+ "#Calculation\n",
+ " #Calculation for part (a)\n",
+ " #Calculation of shear stress \n",
+ " #Tyz = u(delVz)/(dely)\n",
+ "Tyz_cgs = u*(delVz)/(dely)\n",
+ " #Calculation of Shear Rate\n",
+ " #Shear Rate = delVz/dely\n",
+ "Vyz_cgs = delVz/dely\n",
+ " #Calculation for part (b)\n",
+ "Tyz_fps = Tyz_cgs*confaccgstofps\n",
+ " #Calculation for part (c)\n",
+ "Tyz_SI = Tyz_cgs*confaccgstosi\n",
+ "#Result\n",
+ "print \"(a)Shear stress in cgs is\",round(Tyz_cgs,4),\"dyne/cm2\"\n",
+ "print \" Shear Rate in cgs is\",round(Vyz_cgs,4),\"1/s\"\n",
+ "print '(b)Shear stress in fps %10.3e'%(Tyz_fps),\"lbf/ft2\"\n",
+ "print \" Shear Rate in fps is\",round(Vyz_cgs,4),\"1/s\"\n",
+ "print \"(c)Shear stress in SI is\",round(Tyz_SI,4),\"N/m2\"\n",
+ "print \" Shear Rate in SI is\",round(Vyz_cgs,4),\"1/s\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "(a)Shear stress in cgs is 0.354 dyne/cm2\n",
+ " Shear Rate in cgs is 20.0 1/s\n",
+ "(b)Shear stress in fps 7.390e-04 lbf/ft2\n",
+ " Shear Rate in fps is 20.0 1/s\n",
+ "(c)Shear stress in SI is 0.0354 N/m2\n",
+ " Shear Rate in SI is 20.0 1/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.5-1, Page number 49"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Reynolds Number in a pipe \n",
+ "from math import pi\n",
+ "\n",
+ "# Variable declaration\n",
+ "F = 10. #The flowrate of water (gal/min)\n",
+ "d = 2.067 #The inner diameter of pipe (in)\n",
+ "spg = 0.996 #specific gravity,M/M\n",
+ "d_SI = 0.0525 #Diameter in SI units (m)\n",
+ "mu = 0.8007 #Viscosity, cp\n",
+ "\n",
+ "#Calculation English units\n",
+ "F_fps = F*(1./7.481)*(1./60)\n",
+ "d_fps = d/12\n",
+ "A = pi*d_fps**2/4\n",
+ "V = F_fps/A\n",
+ "mu_fps = mu*6.7197e-4 #convert in lbm/ft.s\n",
+ "rho = spg*62.43\n",
+ "Nre_fps = d_fps*V*rho/(mu_fps)\n",
+ "\n",
+ "#Calculation SIh units\n",
+ "\n",
+ "d_SI = d*2.54e-2\n",
+ "V_SI = V/3.2808\n",
+ "mu_SI = mu*1e-3 #convert in Pa.s\n",
+ "rho = spg*1000\n",
+ "Nre_SI = d_SI*V_SI*rho/(mu_SI)\n",
+ "\n",
+ "#Result \n",
+ "print 'The reynolds number in fps units is %6.3e'%(Nre_fps)\n",
+ "print 'The reynolds number in SI units is %6.3e'%(Nre_SI)\n",
+ "print 'The answers are correct because book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The reynolds number in fps units is 1.903e+04\n",
+ "The reynolds number in SI units is 1.903e+04\n",
+ "The answers are correct because book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.6-1, Page number 51"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Flow of a Crude Oil and Mass Balance\n",
+ "\n",
+ "#Variable declaration\n",
+ "rho = 892. #Density of Crude Oil kh/m3\n",
+ "F = 1.388e-3 #Total Volumetric flow rate m3/s\n",
+ "d1 = 2.067 #Diamete of pipe 1 in inches\n",
+ "d3 = 1.610 #Diamete of pipe 3 in inches\n",
+ "\n",
+ "#Calculations\n",
+ "intom = 0.0254 #conversion factor for in to meter\n",
+ "A1 = pi*(d1*intom)**2/4 #Area of pipe 1\n",
+ "A3 = pi*(d3*intom)**2/4 #Area of pipe 3\n",
+ "m1 = F*rho #Mass flow rate of Crude Oil through pipe 1\n",
+ "m3 = m1/2 #Mass flow rate of Crude Oil through pipe 3\n",
+ "v1 = m1/(rho*A1) #velocity of Crude Oil through pipe 1\n",
+ "v3 = m3/(rho*A3) #velocity of Crude Oil through pipe 3\n",
+ "G1 = m1/A1 #Mass flux of cride oil through pipe 1\n",
+ "\n",
+ "#Result\n",
+ "print \"(a) Mass flow rate of Crude Oil through pipe 1:\",round(m1,3), \"kg/s\"\n",
+ "print \" Mass flow rate through pipe 3:\",round(m3,3), \"kg/s\"\n",
+ "print \"(b) Velocity of Crude Oil through pipe 1:\",round(v1,3), \"m/s\"\n",
+ "print \" Velocity of Crude Oil through pipe 3:\",round(v3,3), \"m/s\"\n",
+ "print \"(c) Mass velocity of Crude Oil through pipe 1:\",round(G1), \"m/s\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "(a) Mass flow rate of Crude Oil through pipe 1: 1.238 kg/s\n",
+ " Mass flow rate through pipe 3: 0.619 kg/s\n",
+ "(b) Velocity of Crude Oil through pipe 1: 0.641 m/s\n",
+ " Velocity of Crude Oil through pipe 3: 0.528 m/s\n",
+ "(c) Mass velocity of Crude Oil through pipe 1: 572.0 m/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.7-1, Page number 61"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Energy Balance on Steam boiler\n",
+ "\n",
+ "#Variable Declaration\n",
+ "Twin = 18.33 #Inlet temperature of water to boiler, degC\n",
+ "Pwin = 137.9 #Inlet pressure of water to boiler, kPa\n",
+ "Vwin = 1.52 #Inlet temperature of water to boiler, m/s\n",
+ "Hwin = 0. #Water Inlet height, m\n",
+ "Hsout = 15.2 #Height of steam outlet above water inlet, m \n",
+ "Psout = 137.9 #Outlet pressure of steam to boiler, kPa\n",
+ "Tsout = 148.9 #Inlet temperature of water to boiler, degC\n",
+ "Vsout = 9.14 #Inlet temperature of water to boiler, m/s\n",
+ "H1 = 76.97 #Entalpy of Incomming water to boiler, kJ/kg\n",
+ "H2 = 2771.4 #Entalpy of steam leaving boiler, kJ/kg\n",
+ "g = 9.80665 #Gravitational acceleration, m/s2\n",
+ "#Calcualtion\n",
+ "\n",
+ "# Heat Added = Del PE + Del KE + Del Enthalpy\n",
+ "Q = (Hsout-Hwin)*g + (Vsout**2-Vwin**2)/2 + (H2-H1)*1000\n",
+ "\n",
+ "#Result \n",
+ "print 'Heat Added per kg of water %5.4e'%(Q),\"J/kg\"\n",
+ "print 'The answers are correct because of book uses rounded of numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Heat Added per kg of water 2.6946e+06 J/kg\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.7-2, Page number 62"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Energy Balance on a flow system with a Pump\n",
+ "\n",
+ "#Variable Declaration\n",
+ "F = 0.567 #Water pumped from the tank (m3/min.)\n",
+ "E1 = 7450. #Energy supplied by the pump (W)\n",
+ "E2 = 1408000 #Energy lost in heat exchanger (W)\n",
+ "Rho = 968.5 #Density of water at 85 deg C (kg/m3)\n",
+ "Z1 = 0. #Height of first second tank (m)\n",
+ "Z2 = 20. #Height of second tank (m)\n",
+ "H1 = 355900 #Enthalpy of steam (kJ/kg)\n",
+ "delV = 0. #The kintic energy changes\n",
+ "g = 9.80665 #Gravitational acceleration (m/s2)\n",
+ "\n",
+ "#Calcualtion\n",
+ "m1 = F*Rho/60 #Water pumped from the tank (kg/s)\n",
+ "Ws = -E1/m1 \n",
+ "Q = -E2/m1 \n",
+ "\n",
+ " # H2 - H1 + 1/2*delV + g(Z2 - Z1) = Q - Ws\n",
+ " # H2 = Q - Ws + H1 - 1/2*delV - g(Z2 - Z1)\n",
+ "H2 = Q - Ws + H1 - 0.5*delV - g*(Z2 - Z1)\n",
+ "\n",
+ "#Result \n",
+ "print 'Heat Added per kg of water %5.3e'%(H2), \"J/kg\"\n",
+ "print \"The value of heat added corresponds to 48.41 \u00b0C\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Heat Added per kg of water 2.027e+05 J/kg\n",
+ "The value of heat added corresponds to 48.41 \u00b0C\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.7-3, Page number 62"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Energy Balance in flow Calorimeter \n",
+ "#Variable Declaration\n",
+ "F = 0.3964 #Flowrate of water entering the calorimeter (kg/min)\n",
+ "E1 = 19.630 #Heat added to the water for complete vaporization (kW)\n",
+ "Z1 = 0. #Height of first second tank (m)\n",
+ "Z2 = 0. #Height of second tank (m)\n",
+ "delV = 0. #The kintic energy changes\n",
+ "g = 9.80665 #Gravitational acceleration (m/s2)\n",
+ "Ws = 0. #Shaft work\n",
+ "H1 = 0 #Initial Enthalpy\n",
+ "P1 = 150. #Pressure at point 2 (kPa)\n",
+ "#Calcualtion\n",
+ "M1 = F/60 #Flowrate of water entering the calorimeter (kg/s)\n",
+ " # Q = E1/M1\n",
+ "Q = E1/M1\n",
+ " # H2 - H1 + 0.5*delV + g(Z2 - Z1) = Q - Ws\n",
+ " # H2 = Q - Ws + H1 - 1/2*delV - g(Z2 - Z1)\n",
+ "H2 = Q - Ws + H1 - 0.5*delV - g*(Z2 - Z1)\n",
+ "#Result \n",
+ "print \"Heat Added per kg of water\",round(H2), \"J/kg\"\n",
+ "print \"The corresponding value of enthalpy from steam table is 2972.7 kJ/kg\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Heat Added per kg of water 2971.0 J/kg\n",
+ "The corresponding value of enthalpy from steam table is 2972.7 kJ/kg\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.7-4, Page number 64"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Mechanical-Energy Balance on Pumping System\n",
+ "\n",
+ "#Variable Declaration\n",
+ "P1 = 68900. #The entrance pressure of fluid (N/m2)\n",
+ "E = 155.4 #Energy supplied to the fluid (J/kg)\n",
+ "P2 = 137800. #The exit pressure of fluid (N/m2) \n",
+ "Nre = 4000 #Reynolds number \n",
+ "Rho_H2O = 998. #Density of water (kg/m3)\n",
+ "z1 = 0 #Height of entrance pipe (m)\n",
+ "z2 = 3.05 #Height of exit pipe (m)\n",
+ "alpha = 1 #For turbulent flow value of alpha\n",
+ "Ws = -155.4 #Mechanical energy added to the fluid (J/kg)\n",
+ "g = 9.806 #Gravitational accleration (m/s2)\n",
+ "#Calcualtion\n",
+ " #(V1 - V2)/2*alpha = 0\n",
+ " #F = -Ws + 0 + g*(z1-z2) + (P1 - P2)/Rho_H2O\n",
+ "F = -Ws + 0 + g*(z1-z2) + (P1 - P2)/Rho_H2O\n",
+ "#Result \n",
+ "print \"The frictional losses calculated are \",round(F,1), \"J/kg\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The frictional losses calculated are 56.5 J/kg\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.7-5, Page number 65"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Pump Horsepower in Flow System\n",
+ "\n",
+ "#Variable Declaration\n",
+ "F = 69.1 #Volume of liquid drawn by the pump (gal/min)\n",
+ "F_fps = F/(60*7.481) #Volume of liquid drawn bby the pump (ft3/s)\n",
+ "Rho = 114.8 #Density of liquid (lbm/ft3)\n",
+ "A1 = 0.05134 #Cross sectional area of suction pipe (in2)\n",
+ "A2 = 0.0233 #Cross sectional area of discharge pipe (in2)\n",
+ "z1 = 0. #Height of suction line (m)\n",
+ "z2 = 50. #Height of discharge pipe (m)\n",
+ "f = 10.0 #Frictional losses (ft.lbf/lbm)\n",
+ "n = 0.65 #Efficiency of the pump \n",
+ "g = 32.174 #Gravitational accleration (m/s2)\n",
+ "gc = 32.174 #Conversion factor for mks to fps \n",
+ "v1 = 0. #Velocity of liquid in storage feed tank (m/s)\n",
+ "alpha = 1. #Since the flow is turbulent \n",
+ "fc = 550. #Conversion factor from fps to horse power\n",
+ "z3 = 0. \n",
+ "z4 = 0.\n",
+ "ga = 144. #Conversion factor for area from ft2 to in2\n",
+ "\n",
+ "#Calcualtion\n",
+ " #v2 = flowrate/cross sectional area\n",
+ "v2 = F_fps/A2\n",
+ " #(P1-P2)/Rho = 0 \n",
+ " #Ws = (z1-z2)*g/gc + (v1*v1 - v2*v2)/(2*gc) + 0 + f \n",
+ "Ws = (z1-z2)*g/gc + (v1*v1 - v2*v2)/(2*gc) + 0 - f\n",
+ "Wp = -Ws/n\n",
+ "m = F_fps*Rho \n",
+ "P = m*Wp/fc\n",
+ "v3 = F_fps/A1\n",
+ "v4 = F_fps/A2 \n",
+ " #delP = P4 - P3 \n",
+ "delP = Rho*((z4-z3)*g/gc +(v3*v3 - v4*v4)/(2*gc) - Ws - 0. )/ga\n",
+ "#Result \n",
+ "print \"Power required by the pump \",round(P,0), \"hp\"\n",
+ "print \"Pressure developed is \",round(delP,0),\"lbf/in2\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Power required by the pump 3.0 hp\n",
+ "Pressure developed is 48.0 lbf/in2\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.8-2, Page number 73"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Momentum Balance for Horizontal Nozzle \n",
+ "from math import pi\n",
+ "#Variable Declaration\n",
+ "F = 0.03154 #Flowrate of water (m3/s)\n",
+ "d1 = 0.0635 #Dia of pipe at section 1 (m)\n",
+ "d2 = 0.0286 #Dia of pipe at section 2 (m)\n",
+ "Rho_H2O = 1000. #Density of water (kg/m3)\n",
+ "P2 = 0. #Pressure (N/m2)\n",
+ "#Calcualtion\n",
+ "m = F*Rho_H2O\n",
+ "A1 = pi*d1**2/4\n",
+ "A2 = pi*d2**2/4\n",
+ "v1 = F/A1\n",
+ "v2 = F/A2\n",
+ "P1 = Rho_H2O*((v2**2 - v1**2)/2 + P2/Rho_H2O)\n",
+ "Rx = m*(v2-v1) + P2*A2 - P1*A1\n",
+ "#Result\n",
+ "print \"The resultant force on the nozzle is\",round(Rx,1), \"N\"\n",
+ "print 'The answer is correct because of book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The resultant force on the nozzle is -2425.3 N\n",
+ "The answer is correct because of book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.8-5, Page number 76"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Force of Free Jet on a Curved,Fixed Vane\n",
+ "from math import pi\n",
+ "\n",
+ "#Variable Declaration\n",
+ "V = 30.5 #Velocity of jet stream of water (m/s)\n",
+ "Rho_H2O = 1000. #Density of water (kg/m3)\n",
+ "d = 2.54e-2 #Diameter of pipe, m\n",
+ "alpha = 60 #Angle made by exit stream, deg\n",
+ "\n",
+ "A = pi*d**2/4\n",
+ "m = V*A*Rho_H2O \n",
+ "#Calculation\n",
+ "#Rx is the x component of the force\n",
+ " #Rx = m*V*(cos60 - 1)\n",
+ "Rx = m*V*(cos(alpha*pi/180)-1)\n",
+ "#Ry is the y component of the force\n",
+ " #Ry = m*V*(sin60)\n",
+ "Ry = m*V*sin(alpha*pi/180)\n",
+ "#Result\n",
+ "print \"The force in x direction is \",round(-Rx,1),\"N\"\n",
+ "print \"The force in y direction is \",round(-Ry,1),\"N\"\n",
+ "print 'The answers are correct because of book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The force in x direction is 235.7 N\n",
+ "The force in y direction is -408.2 N\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.9-1, Page number 82"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Falling Film Velocity and Thickness\n",
+ "#Variable Declaration\n",
+ "d = 0.0017 #Thickness of the film (m)\n",
+ "Rho_oil = 820 #Density of oil (kg/m3)\n",
+ "mu = 0.20 #Viscosity of oil (Pa.s)\n",
+ "g = 9.806 #Gravitational acceleration (m/s2)\n",
+ "\n",
+ "#Calculation\n",
+ "Gama = Rho_oil*Rho_oil*d**3*g/(3*mu)\n",
+ "Nre = 4*Gama/mu\n",
+ "Vz = Rho_oil*g*d**2/(3*mu)\n",
+ "\n",
+ "#Result\n",
+ "print \"The mass flowrate per unit width of the wall\",round(Gama,6),\"kg/s.m\"\n",
+ "print \"Reynolds number is\",round(Nre,3)\n",
+ "print \"The average velocity is\",round(Vz,6),\"m/s\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The mass flowrate of the wall 0.05399 kg/s.m\n",
+ "Reynolds number is 1.08\n",
+ "The average velocity is 0.03873 m/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.10-1, Page number 85"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Metering of Small Liquid flows \n",
+ "from math import pi\n",
+ "#Variable Declaration\n",
+ "\n",
+ "d = 0.00222 #Diameter of capillary (m)\n",
+ "l = 0.317 #Length of capillary (m)\n",
+ "Rho = 875 #Density of liquid (kg/m3)\n",
+ "mu = 0.00113 #Viscosity of liquid (pa.s)\n",
+ "h = 0.0655 #Heightof water (m)\n",
+ "Rho_H2O = 996 #Density of water (kg/m3)\n",
+ "g = 9.80665 #Gravitational acceleration (m/s2)\n",
+ "\n",
+ "#Calculation\n",
+ "delP = h*Rho_H2O*g\n",
+ " #v = delP*d*d/(32*mu*l)\n",
+ " #Flow assumed to be laminar\n",
+ "v = delP*d**2/(32*mu*l)\n",
+ "F = v*pi*d**2/(4)\n",
+ " #Checking whether the flow is laminar\n",
+ "Nre = d*v*Rho/(mu)\n",
+ "#Result\n",
+ "print 'The pressure drop over capillary is %3.0f N/m2'%(delP)\n",
+ "print 'The velocity through capillary is %4.3f m/s'%(v)\n",
+ "print 'The mass flowrate through the capillary is %5.3e m3/s'%(F)\n",
+ "print 'Reynolds number is %3.0f, Hence flow is laminar'%(Nre)\n",
+ "print 'The answers are correct because of book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The pressure drop over capillary is 640 N/m2\n",
+ "The velocity through capillary is 0.275 m/s\n",
+ "The mass flowrate through the capillary is 1.065e-06 m3/s\n",
+ "Reynolds number is 473, Hence flow is laminar\n",
+ "The answers are correct because of book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.10-2, Page number 87"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Use of Friction Factor in Laminar Flow \n",
+ " \n",
+ "#Variable Declaration\n",
+ "d = 0.00222 #Diameter of capillary (m)\n",
+ "l = 0.317 #Length of capillary (m)\n",
+ "V = 0.275 #Velocity of liquid (m/s)\n",
+ "Rho = 875 #Density of liquid (kg/m3)\n",
+ "mu = 0.00113 #Viscosity of liquid (pa.s)\n",
+ "h = 0.0655 #Heightof water (m)\n",
+ "Rho_H2O = 996 #Density of water (kg/m3)\n",
+ "g = 9.80665 #Gravitational acceleration (m/s2)\n",
+ "#Calculation\n",
+ "Nre = d*V*Rho/(mu)\n",
+ " #f = 16/Nre\n",
+ "f = 16/Nre\n",
+ " #delp = 4*f*Rho*l*V*V/(2*D)\n",
+ "delp = 4*f*Rho*l*V**2/(2*d)\n",
+ "#Result\n",
+ "print 'Reynolds number is %3.0f, Hence flow is laminar'%(Nre)\n",
+ "print 'friction factor is %0.4f'%(f)\n",
+ "print 'The pressure drop through capillary is %3.0f N/m2'%(delp)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Reynolds number is 473, Hence flow is laminar\n",
+ "friction factor is 0.0338\n",
+ "The pressure drop through capillary is 640 N/m2\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.10-3, Page number 89"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Use of Friction Factor in Turbulent Flow \n",
+ "\n",
+ "#Variable Declaration\n",
+ "d = 0.0525 #Diameter of capillary (m)\n",
+ "l = 36.6 #Length of capillary (m)\n",
+ "V = 4.57 #Velocity of liquid (m/s)\n",
+ "Rho = 801. #Density of liquid (kg/m3)\n",
+ "mu = 4.46 #Viscosity of liquid (cp)\n",
+ "g = 9.806 #Gravitational acceleration (m/s2)\n",
+ "e = 0.000046 #Equvivalent Roughness (m)\n",
+ "f = 0.0060 #Friction factor \n",
+ "#Calculation\n",
+ "mu = mu*1e-3 #Convert Viscosity to (kg/m.s)\n",
+ "Nre = d*V*Rho/(mu)\n",
+ " #delp = 4*f*Rho*l*V*V/(2*D)\n",
+ "delp = 4*f*Rho*l*V**2/(2*d)\n",
+ " #F = 4*f*l*V*V/(2*d)\n",
+ "F = 4*f*l*V**2/(2*d)\n",
+ "#Result\n",
+ "print 'Reynolds number is %3.0f, Hence flow is turbulent'%(Nre)\n",
+ "print 'friction factor from chart is %0.4f'%(f)\n",
+ "print \"The friction loss is %3.1f J/kg\" %(F)\n",
+ "print 'The answers are correct because of book uses rounded numbers, and varified using calculator'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Reynolds number is 43090, Hence flow is turbulent\n",
+ "friction factor from chart is 0.0060\n",
+ "The friction loss is 174.7 J/kg\n",
+ "The answers are correct because of book uses rounded numbers, and varified using calculator\n"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.10-4, Page number 90"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Trial and Error Solution to Calculate Pipe Diameter\n",
+ "from scipy.optimize import root\n",
+ "from sympy import *\n",
+ "from math import pi, log\n",
+ "\n",
+ "#Variable Declaration\n",
+ "l = 305. #Length of steel pipe (m)\n",
+ "mu = 1.55e-3 #Viscosity of fluid (kg/m.s)\n",
+ "Q = 150.0 #Rate of flow of fluid (gal/min)\n",
+ "g = 9.80665 #Gravitational acceleration, m/s2\n",
+ "ep = 4.6e-5 #Roughness of commercial steel pipe, m\n",
+ "rho = 1000. #Density of water, kg/m3\n",
+ "z = 6.1 #Head available, m\n",
+ "\n",
+ "#Calculation\n",
+ "Qsi = Q*(1./7.481)*(1./60)*0.02831 #Multipliers in equation are conversion factors for conversion to SI Units\n",
+ "Ff = z*g\n",
+ "er = 12.\n",
+ "x = Symbol('x')\n",
+ "D = 0.089\n",
+ "while er >= 0.01:\n",
+ " epbyd = ep/D\n",
+ " A = pi*D**2/4.\n",
+ " u = Qsi/A \n",
+ " Re = D*u*rho/mu\n",
+ " sol = solve(1/sqrt(x)+4*(log(epbyd/3.7,10)+1.255/(Re*sqrt(x))),x)\n",
+ " f = sol[0]\n",
+ " d = 4*f*l*u**2/(2*Ff)\n",
+ " er = abs((D-d)/D)\n",
+ " if er > 0.01:\n",
+ " print 'Error %6.5f and diameter calculated %6.5f'%(er, d)\n",
+ " D = float(raw_input(\"Not Converged...:Enter the value of guess diameter \"))\n",
+ "#Result\n",
+ "print '\\nConverged...Diameter of the pipe is %4.3f m or %4.3f in'%(D,D*12./0.3048)\n",
+ "print 'The value calculated is accurate than answer in book\\nbecause book reads the friction factor from chart whereas\\nequations for friction factor are used in this'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Error 0.11457 and diameter calculated 0.09920\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Not Converged...:Enter the value of guess diameter 0.092\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Error 0.06269 and diameter calculated 0.08623\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Not Converged...:Enter the value of guess diameter 0.093\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Error 0.11416 and diameter calculated 0.08238\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Not Converged...:Enter the value of guess diameter 0.094\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Error 0.16230 and diameter calculated 0.07874\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Not Converged...:Enter the value of guess diameter 0.094\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Error 0.16230 and diameter calculated 0.07874\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Not Converged...:Enter the value of guess diameter 0.098\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Error 0.32616 and diameter calculated 0.06604\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Not Converged...:Enter the value of guess diameter 0.099\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Error 0.36096 and diameter calculated 0.06327\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Not Converged...:Enter the value of guess diameter 0.1\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Error 0.39363 and diameter calculated 0.06064\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Not Converged...:Enter the value of guess diameter 0.14\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Error 0.89524 and diameter calculated 0.01467\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Not Converged...:Enter the value of guess diameter 0.15\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Error 0.92689 and diameter calculated 0.01097\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Not Converged...:Enter the value of guess diameter 0.16\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Error 0.94777 and diameter calculated 0.00836\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Not Converged...:Enter the value of guess diameter 0.091\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "Converged...Diameter of the pipe is 0.091 m or 3.583 in\n",
+ "The value calculated is accurate than answer in book\n",
+ "because book reads the friction factor from chart whereas\n",
+ "equations for friction factor are used in this\n"
+ ]
+ }
+ ],
+ "prompt_number": 33
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.10-5, Page number 91 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Flow of Gas in Line and Pressure Drop \n",
+ "#Variable Declaration\n",
+ "d = 0.010 #Inside diameter of tube (m)\n",
+ "G = 9. #Rate of feed (kg/s.m2)\n",
+ "l = 200. #Length of Tube (m)\n",
+ "mu = 0.0000177 #Viscosity of liquid (Pa.s)\n",
+ "R = 8314.3 #Gas constant (J/kg.mol.K)\n",
+ "P1 = 202650. #Pressure at entrance (Pa)\n",
+ "f = 0.0090 #Friction factor \n",
+ "T1 = 25. #Temperature at inlet (degC)\n",
+ "T2 = 298.15 #Temperature at outlet (degC)\n",
+ "M = 28.02 #Molecular weight of 1 kmol N2 (kmol)\n",
+ "#Calculation\n",
+ "Nre = d*G/mu\n",
+ "f = 0.079*Nre**(-0.25) #for smooth pipes\n",
+ "P2 = sqrt(P1**(2) - 4*f*l*G**2*R*T2/(d*M))\n",
+ " \n",
+ "#Result\n",
+ "print \"for Reynolds Number \", round(Nre,2), \"friction factor for smooth pipe is\", round(f,6)\n",
+ "print 'The pressure at outlet %6.4e Pa, '%(P2)\n",
+ "print 'The answer is correct than the book because of book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "for Reynolds Number 5084.75 friction factor for smooth pipe is 0.009355\n",
+ "The pressure at outlet 1.8895e+05 Pa, \n",
+ "The answer is correct than the book because of book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 23
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.10-6, Page number 94"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Friction Losses and mechanical energy balance\n",
+ "#Variable Declaration\n",
+ "Q = 0.223 #Desired flowrate of water (ft3/s)\n",
+ "Rho_fps = 60.52 #Density of water in fps units (lbm/m3)\n",
+ "u_fps = 0.000233 #Viscosity of water in fps units (lbm/ft.s)\n",
+ "D3 = 0.3353 #Diameter of the third pipe (ft)\n",
+ "D4 = 0.1722 #Diameter of the third pipe (ft)\n",
+ "A3 = 0.0884 #Area of third pipe (ft2)\n",
+ "A4 = 0.0233 #Area of third pipe (ft2)\n",
+ "g_fps = 32.174 #Gravitational acceleration in fps units (ft/s2)\n",
+ "e = 0.00015 #Roughness factor (ft)\n",
+ "f2 = 0.0047 #Fanning friction factor for 4-in pipe\n",
+ "f5 = 0.0048 #Fanning friction factor for 2-in pipe\n",
+ "delL_4 = 20. #Length of 4-in pipe (ft)\n",
+ "delL_2 = 185. #Length of 2-in pipe (ft)\n",
+ "delP = 0. #Since pressure at both end is atmspheric pressure \n",
+ "Kf = 0.75\n",
+ "alpha = 1.\n",
+ "Ws = 0. #Shaft work (j)\n",
+ "#Calculation\n",
+ "V1 = 0.\n",
+ "V3 = Q/A3\n",
+ "V4 = Q/A4\n",
+ " #\n",
+ " #(1) Contraction losses at tank exit\n",
+ "#Kc = 0.55*(1-A3/A1)\n",
+ "Kc1 = 0.55\n",
+ "hc1 = Kc1*V3**2/(2*g_fps)\n",
+ " #(2) Friction in 4-in pipe \n",
+ "Nre2 = D3*V3*Rho_fps/(u_fps)\n",
+ "F2 = 4*f2*delL_4*V3**2/(D3*2*g_fps)\n",
+ " #(3) Friction in 4-in elbow\n",
+ "hf = Kf*V3**2/(2*g_fps)\n",
+ " #(4) Contraction loss from 4-in to 2-in pipe \n",
+ "Kc4 = 0.55*(1-A4/A3)\n",
+ "hc4 = Kc4*V4**2/(2*g_fps)\n",
+ " #(5)Friction in 2-in pipe \n",
+ "Nre5 = D4*V4*Rho_fps/u_fps\n",
+ "F5 = 4*f5*delL_2*V4**2/(D4*2*g_fps)\n",
+ " #(6) Friction in 2-in elbows\n",
+ "hc6 = 2*Kf*V4**2/(2*g_fps)\n",
+ " #F = hc1 + F2 + hf + hc4 + F5 + hc6\n",
+ "F = hc1 + F2 + hf + hc4 + F5 + hc6\n",
+ " #delH*g_fps = delP/Rho_fps + (V4**2 - V1**2)/(2*alpha*g_fps) + Ws + F\n",
+ " #delH = (delP/Rho_fps + (V4**2 - V1**2)/(2*alpha*g_fps) + Ws + F)/g_fps\n",
+ "delH = (delP/Rho_fps + (V4**2 - V1**2)/(2*alpha*g_fps) + Ws + F) \n",
+ "#Result\n",
+ "print \"The height of water level above the discharge outlet \",round(delH,2),\"ft\"\n",
+ "print 'The answer is correct because of book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The height of water level above the discharge outlet 33.74 ft\n",
+ "The answer is correct because of book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 24
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.10-7, Page number 97"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Friction Losses with pump in mechanical energy balance\n",
+ "#Variable Declaration\n",
+ "Q = 0.005 #Desired flowrate of water (m3/s)\n",
+ "Rho = 998.2 #Density of water in fps units (kg/m3)\n",
+ "u = 0.001005 #Viscosity of water in fps units (Pa/s)\n",
+ "D1 = 0.1023 #Diameter of the third pipe (m)\n",
+ "A1 = 0.008291 #Area of pipe (m2)\n",
+ "g = 9.806 #Gravitational acceleration in fps units (ft/s2)\n",
+ "e = 0.000046 #Roughness factor (ft)\n",
+ "f2 = 0.0051 #Fanning friction factor for 4-in pipe\n",
+ "z1 = 0. #Height of storage tank (m)\n",
+ "z2 = 15. #Height of elevated tank (m)\n",
+ "delL = 170. #Length of 4-in pipe (ft)\n",
+ "delL_2 = 185. #Length of 2-in pipe (ft)\n",
+ "delP = 0. #Since pressure at both end is atmospheric pressure \n",
+ "delV2 = 0.\n",
+ "Kf = 0.75\n",
+ "Kex = 1. \n",
+ "alpha = 1.\n",
+ "n = .65 #Efficiency of the pump\n",
+ "#Calculation\n",
+ "V1 = Q/A1\n",
+ "Nre = D1*V1*Rho/(u)\n",
+ " \n",
+ " #(1) Contraction losses at tank exit\n",
+ "#Kc = 0.55*(1-A3/A1)\n",
+ "Kc1 = 0.55\n",
+ "hc1 = Kc1*V1**2/(2*alpha)\n",
+ " #(2) Friction in straight pipe \n",
+ "\n",
+ "F2 = 4*f2*delL*V1**2/(D1*2)\n",
+ " #(3) Friction in the two elbows\n",
+ "hf = 2*V1**2/(2)\n",
+ " #(4) Expansion loss at tank entrance\n",
+ "hc4 = Kex*V1**2/(2)\n",
+ " #F = hc1 + F2 + hf + hc4 \n",
+ "F = hc1 + F2 + hf + hc4\n",
+ " #1*(delV2)/(2*alpha) + g*(z2 - z1) +delP/Rho + F + Ws = 0.\n",
+ "Ws = -(1*(delV2)/(2*alpha) + g*(z2 - z1) +delP/Rho + F)\n",
+ " #m = Q*Rho\n",
+ "m = Q*Rho\n",
+ " #Ws = -n*Wp\n",
+ "Wp = Ws/-n\n",
+ " #P = m*Wp\n",
+ "P = m*Wp/1000\n",
+ "#Result\n",
+ "print \"The power required by the pump is \",round(P,3),\"kW\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The power required by the pump is 1.182 kW\n"
+ ]
+ }
+ ],
+ "prompt_number": 23
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.10-8, Page number 100"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Entry Length for a Fluid in a Pipe \n",
+ "#Variable Declaration\n",
+ "d = 0.010 #Diameter of tube (m)\n",
+ "V = 0.10 #Velocity of water (m/s)\n",
+ "mu = 0.001005 #Viscosity of water (Pa.s)\n",
+ "Rho = 998.2 #Density of water (kg/m3)\n",
+ "#Calculation\n",
+ "Nre = d*V*Rho/mu\n",
+ " #For laminar flow \n",
+ " #Le = 0.0575*Nre\n",
+ "\n",
+ "Le_l = 0.0575*Nre*d\n",
+ "Le_t = 50*d \n",
+ "#Result\n",
+ "print \"Reynolds Number is\",round(Nre,1)\n",
+ "print \"For laminar flow the entry length is \",round(Le_l,3),\"m\"\n",
+ "print \"For turbulent flow the entry length is \",round(Le_t,4),\"m\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Reynolds Number is 993.2\n",
+ "For laminar flow the entry length is 0.571 m\n",
+ "For turbulent flow the entry length is 0.5 m\n"
+ ]
+ }
+ ],
+ "prompt_number": 25
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.11-1, Page number 102"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Compressible Flow of a gas in a pipe line\n",
+ "from math import log, pi\n",
+ "#Variable Declaration\n",
+ "d = 1.016 #Diameter of pipe (m)\n",
+ "G = 2.077 #The molar flow rate of the gas (kg mol/s)\n",
+ "mu = 1.04e-5 #Viscosity of methane at 288.8 k (Pa.s) \n",
+ "p2 = 170.3e3 #The pressure at the outlet (Pa)\n",
+ "L = 1.609e5 #The length of the pipe (m) \n",
+ "R = 8314.34 #Gas constant (N.m/kg.mol.K)\n",
+ "T = 288.8 #Temperature of methane gas (K)\n",
+ "M = 16. #Molecular weight of methane \n",
+ "epsilon = 4.6e-5 #Pipe roughness\n",
+ "\n",
+ "#Calculation\n",
+ "A = pi*d**2/4\n",
+ "Gm = G*M/A\n",
+ "Nre = d*Gm/mu\n",
+ "f = 0.0027 #from friction factor chart\n",
+ " #P1**2 - P2**2 = (4*f*L*(G_mass**2)*R*T)/(D*M) + (2*(G**2)*R*T*log(p1/P2)/16)\n",
+ " #P1 = sqrt(P2**2 + (4*f*L*(G_mass**2)*R*T)/(D*M) + (2*(G**2)*R*T*log(p1/P2)/16))\n",
+ "er = 1.2\n",
+ "p1 = 500.e3\n",
+ "while er>0.001:\n",
+ " p1c = sqrt(p2**2 + 4*f*L*Gm**2*R*T/(d*M) + (2*Gm**2*R*T*log(p1/p2)/M))\n",
+ " er = abs(p1-p1c)/p1c\n",
+ " p1 = p1c\n",
+ "#Result\n",
+ "print 'The final pressure is %10.4e Pa.'%(p1)\n",
+ "print 'The answers are correct because of book uses rounded of numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The final pressure is 6.7895e+05 Pa.\n",
+ "The answers are correct because of book uses rounded of numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 26
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.11-2, Page number 103"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Maximum Flow for Compressible Flow of a Gas\n",
+ "#Variable Declaration\n",
+ "R = 8314. #Gas constant ()\n",
+ "T = 288.8 #Temperature of fluid (K)\n",
+ "M = 16.\n",
+ "P2 = 170300. #Pressure at discharge tube (Pa)\n",
+ "G = 41. \n",
+ "#Calculation\n",
+ "Vmax = sqrt(R*T/M)\n",
+ "V2 = R*T*G/(P2*M)\n",
+ "#Result\n",
+ "print \"The maximum velocity in the tube is \",round(Vmax,1),\"m/s\"\n",
+ "print \"The actual velocity is \",round(V2,2),\"m/s\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The maximum velocity in the tube is 387.4 m/s\n",
+ "The actual velocity is 36.13 m/s\n"
+ ]
+ }
+ ]
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter03.ipynb b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter03.ipynb new file mode 100755 index 00000000..ee81c3cf --- /dev/null +++ b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter03.ipynb @@ -0,0 +1,897 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:894c0bbedc753b4e771216e4f5b7d444de9bb7d1db18785ff9578b78d3ec1593"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 3: Principles of Momentum Transfer and Applications"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.1-1, Page number 117"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Force on submerged sphere \n",
+ "from math import pi \n",
+ "\n",
+ "# Variable declaration\n",
+ "Rho_air = 1.137 #Density of air at 37.8 degC (kg/m3)\n",
+ "u = 0.000019 #Viscosity of air (Pa.s)\n",
+ "Dp = 0.042 #Diameter of the sphere (m)\n",
+ "V = 23.0 #velocity of the sphere (m/s)\n",
+ " \n",
+ "# Data SI Units \n",
+ "#Calculation\n",
+ "Nre = Dp*Rho_air*V/(u)\n",
+ "Cd = 0.47 #Drag coefficient from fig 3.1-2\n",
+ "Ap = pi*Dp**2/4\n",
+ "Fd = Cd*V**2*Rho_air*Ap/2\n",
+ "#Result\n",
+ "print 'Reynolds number %4.3e'%Nre\n",
+ "print \"The drag coefficient of the sphere is\",Cd\n",
+ "print \"The force on the cylinder is\", round(Fd,4),\"N\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Reynolds number 5.781e+04\n",
+ "The drag coefficient of the sphere is 0.47\n",
+ "The force on the cylinder is 0.1958 N\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.1-2, Page number 117"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Force on a cylinder in a tunnel\n",
+ "# Variable declaration\n",
+ "V = 1. #Velocity of water in the tunnel (m/s)\n",
+ "d = 0.09 #Diameter of cylinder (m)\n",
+ "Rho_H2O = 997.2 #Density of water (kg/m3)\n",
+ "L = 1. #Length of the tunnel (m)\n",
+ "mu = 0.0009142 #Viscosity of water (Pa.s)\n",
+ "T = 24. #Temerature of water (\u00b0C)\n",
+ "\n",
+ "# Data SI Units \n",
+ "#Calculation\n",
+ "Nre = d*Rho_H2O*V/(mu)\n",
+ "Cd = 1.4 #Drag Coefficient for cylinder from fig 3.1-2\n",
+ "Ap = L*d\n",
+ "Fd = Cd*V**2*Rho_H2O*Ap/2\n",
+ "#Result\n",
+ "print 'Reynolds number %4.3e'%Nre\n",
+ "print \"The drag coefficient of the cylinder is\",Cd\n",
+ "print \"The force on the sphere is \",round(Fd,2),\"N\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Reynolds number 9.817e+04\n",
+ "The drag coefficient of the cylinder is 1.4\n",
+ "The force on the sphere is 62.82 N\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.1-3, Page number 119"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Surface area in Packed Bed of Cylinders\n",
+ "# Variable declaration\n",
+ "D = 0.02 #Diamter of the cylinder (m)\n",
+ "h = 0.02 #Length of the cylinder (m)\n",
+ "d_pb = 962. #Density of packed bed (kg/m3)\n",
+ "d_sc = 1600. #Density of solid cylinders (kg/m3)\n",
+ "m_pb = 962. #Mass of the packed bed (kg)\n",
+ "v_pb = 1. #Volume of packed bed (m3)\n",
+ "v_t = 1. #Total volume of the bed (m3)\n",
+ " # Calculation\n",
+ "v_sc = m_pb/d_sc\n",
+ " #(a) Calculate void fraction\n",
+ " #e = Volume of voids in bed/total volume of bed\n",
+ "e = (v_pb - v_sc)/v_t\n",
+ " #(b)Calculate the effective Diameter of the particle \n",
+ " #Dp = 6/(6/D)\n",
+ "Dp = 6/(6/D)\n",
+ " #(c) Calculate the value of \"a\"\n",
+ " # a = 6*(1-e)/Dp\n",
+ "a = 6*(1-e)/Dp\n",
+ "#Result\n",
+ "\n",
+ "print \"(a) The void fraction of bed is\",round(e,3)\n",
+ "print \"(b) The effective diameter of the particle is\",round(Dp,4),\"m\"\n",
+ "print \"(c) The calculated value of 'a' is \",round(a,2), \"1/m\"\n",
+ "print 'The answers are correct because of book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "(a) The void fraction of bed is 0.399\n",
+ "(b) The effective diameter of the particle is 0.02 m\n",
+ "(c) The calculated value of 'a' is 180.38 1/m\n",
+ "The answers are correct because of book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.1-4, Page number 121"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Pressure drop and flow of gases through packed beds\n",
+ "from math import pi\n",
+ "from scipy.optimize import root\n",
+ "# Variable declaration\n",
+ "d = 0.0127 #Diameter of the pipe (m)\n",
+ "e = 0.38 #Void fraction\n",
+ "d_bed = 0.61 #Bed diameter (m)\n",
+ "h = 2.44 #Height of bed (m)\n",
+ "p1 = 1.1 #Pressure P1 (atm)\n",
+ "T = 311. #Temperature of water (K)\n",
+ "R = 8314.34 #Gas constant \n",
+ "M = 28.97 #Molecular weight of air \n",
+ "L = 2.44 #Length of the bed (m)\n",
+ "Mdot = 0.358 #Mass rate of air, kg/s\n",
+ "\n",
+ "# Data\n",
+ "mu = 0.000019 #Viscosity of water (Pa.s)\n",
+ "# Calculation\n",
+ "A = pi*d_bed**2/4\n",
+ "G = Mdot/A\n",
+ "Nre = d*G/((1-e)*mu)\n",
+ " #Rho_av = M*Pav/(R*T)\n",
+ "p1 = p1*101325. #convert to pascal\n",
+ "er = 0.1\n",
+ "\n",
+ "f = lambda dp:dp*(M*(p1+0.5*dp)/(R*T))*d*e**3/(G**2*L*(1-e))-(150./Nre + 1.75)\n",
+ "sol = root(f,0.049e5)\n",
+ "dp = sol.x[0]\n",
+ "\n",
+ "#Result\n",
+ "print \"The calclated Reynolds number is\",round(Nre,0)\n",
+ "print 'The calculated pressure drop is %6.5e Pa'%(dp)\n",
+ "print 'The answer is difference than book because of method of solution, and is more correct.\\nBook assumes a pressure drop and calculates density at average pressure'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The calclated Reynolds number is 1321.0\n",
+ "The calculated pressure drop is 4.75988e+03 Pa\n",
+ "The answer is differencethan book because of method of solution and is more correct.\n",
+ "Book assumes a pressure drop and calculates density at average pressure\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.1-5, Page number 122"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Mean Diameter for a Particle\n",
+ "# Variable declaration\n",
+ "# Data \n",
+ "x1 = 0.25\n",
+ "x2 = 0.40\n",
+ "x3 = 0.35\n",
+ "Dp1 = 25.\n",
+ "Dp2 = 50.\n",
+ "Dp3 = 75.\n",
+ "fi = 0.68\n",
+ "\n",
+ "# Calculation\n",
+ " #Dpm = 1/(x1/(fi*Dp1) + x2/(fi*Dp2) + x3/(x3/(fi*Dp3))\n",
+ "Dpm = 1/((x1/(fi*Dp1)) + (x2/(fi*Dp2)) + (x3/(fi*Dp3)))\n",
+ "#Result\n",
+ "print \"The calculated effective mean diameter is \",round(Dpm,4),\"mm\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The calculated effective mean diameter is 30.0 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.1-6, Page number 125 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Minimum Velocity for Fluidization\n",
+ "from scipy.optimize import root\n",
+ "\n",
+ "# Variable declaration\n",
+ "d = 0.12 #Size of the particle (mm)\n",
+ "fi = 0.88 #Shape of the particle \n",
+ "P = 2. #Pressure of the fluidized bed (atm)\n",
+ "v = 0.42 #Voidage \n",
+ "A = 0.30 #Cross section of the bed (m2)\n",
+ "M = 300. #Weight of the solid (kg)\n",
+ "ep1 = 0.\n",
+ "ep_mf = 0.42 #voidage at minimum fluidisation\n",
+ " #Data\n",
+ "mua = 1.85e-5 #Viscosity of air (Pa.s)\n",
+ "rhoa = 2.374 #Density of air at 2 atm, kg/m3\n",
+ "p = 2.0165e5 #Pressure, Pa\n",
+ "rhop = 1000 #Density of particle, kg/m3\n",
+ "Dp = 0.00012 #Particle diameter, m\n",
+ "g = 9.80665 #m/s2\n",
+ "# Calculation\n",
+ "\n",
+ "#Part A \n",
+ "V = M/rhop\n",
+ "L1 = V/A\n",
+ "Lmf = L1*(1. - ep1)/(1 - ep_mf) \n",
+ "\n",
+ "#Part B\n",
+ "delp = Lmf*(1.-ep_mf)*(rhop-rhoa)*g\n",
+ "\n",
+ "#Part C\n",
+ "#Nremf = d*umf*rhoa/mua\n",
+ "Nrea = Dp*rhoa/mua\n",
+ "\n",
+ "f = lambda u: 1.75*(Nrea*u)**2/(fi*ep_mf**3)+150*(1.-ep_mf)*(Nrea*u)/(fi**2*ep_mf**3)-Dp**3*rhoa*(rhop-rhoa)*g/mua**2\n",
+ "sol = root(f,0.001)\n",
+ "umf = sol.x[0]\n",
+ "Nremf = Dp*rhoa*umf/mua\n",
+ "\n",
+ "f1 = lambda u: Dp*rhoa*u/mua - sqrt(33.7**2 + 0.0408*Dp**3*rhoa*(rhop-rhoa)*g/mua**2) + 33.7\n",
+ "sol = root(f1,umf)\n",
+ "umfn = sol.x[0]\n",
+ "#Result\n",
+ "print \"(a) The minimum height of the fluidized bed is\",round(Lmf,3),\"m\"\n",
+ "print '(b) Pressure drop under conditions of minimum fluidization is %5.4e'%(delp),\"Pa\"\n",
+ "print \"(c) Minimum fluidozation velocity\",round(umf,6), \"m/s\"\n",
+ "print \" Reynold number at Minimum fluidization is\",round(Nremf,5)\n",
+ "print '(d) Minimum fluidozation velocity using simplified relation %7.6f'%umfn\n",
+ "print 'The answer is correct because of book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "(a) The minimum height of the fluidized bed is 1.724 m\n",
+ "(b) Pressure drop under conditions of minimum fluidization is 9.7834e+03 Pa\n",
+ "(c) Minimum fluidozation velocity 0.005015 m/s\n",
+ " Reynold number at Minimum fluidization is 0.07723\n",
+ "(d) Minimum fluidozation velocity using simplified relation 0.004605\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.1-7, Page number 126"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Expansion of Fluidized Bed \n",
+ "from scipy.optimize import root\n",
+ "\n",
+ "# Variable declaration\n",
+ "Nre_mf = 0.07723 #From previous problem\n",
+ "vmf = 0.005015\n",
+ "epmf = 0.42\n",
+ "\n",
+ "#Calculation\n",
+ "f = lambda K:vmf-K*epmf**3/(1-epmf)\n",
+ "sol = root(f,0.01)\n",
+ "K = sol.x[0]\n",
+ "vop = 3*vmf\n",
+ "\n",
+ "f1 = lambda ep:vop-K*ep**3/(1-ep)\n",
+ "sol = root(f1,0.1)\n",
+ "ep1 = sol.x[0]\n",
+ "#Result\n",
+ "print 'Operating velocity %6.5f m/s'%vop\n",
+ "print 'Voidage of bed at operating velocity %4.3f m/s'%(ep1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Operating velocity 0.01505 m/s\n",
+ "Voidage of bed at operating velocity 0.555 m/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.2-1, Page number 128"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Flow Measurement Using a Pitot Tube\n",
+ "from math import pi\n",
+ "\n",
+ "# Variable declaration\n",
+ "d = 600. #Diameter of circular duct (m)\n",
+ "dh1 = 10.7 #Pitot tube reading (mm)\n",
+ "dh2 = 205. #Pitot tube reading (mm)\n",
+ "Cp = 0.98 #Pitot tube coefficient \n",
+ "mu = 0.0000203 #Viscosity of air (Pa.s)\n",
+ "rhoa = 1.043 #Density of air (kg/m3)\n",
+ "delh = 0.205 #Head loss in height of water (m)\n",
+ "rhow = 1000. #Density of water (kg/m3)\n",
+ "g = 9.80665 #Gravitational accleration (m/s2)\n",
+ "\n",
+ "#Calculation \n",
+ "d = 600./1e3\n",
+ "dp1 = (dh2/1e3)*(rhow - rhoa)*g\n",
+ "p1abs = 101325 + dp1\n",
+ "rhoac = rhoa*p1abs/101325\n",
+ "dp = (dh1/1e3)*g*(rhow - rhoa)\n",
+ "v = Cp*sqrt(2*dp/rhoa)\n",
+ "Nre = d*v*rhoa/mu\n",
+ "A = 3.14*d**2/4\n",
+ "vav = 0.85*v\n",
+ "Q = A*vav\n",
+ "\n",
+ "#Result \n",
+ "print 'Total absolute pressure %7.1f Pa'%p1abs\n",
+ "print 'Corrected density of air %5.4f kg/m3'%rhoac\n",
+ "print 'Velocity at centre %5.3f m/s'%v\n",
+ "print 'Average velocity through pipe %3.2f m/s'%vav\n",
+ "print 'Reynolds number %5.3f'%Nre\n",
+ "print \"The Volumetric flow rate is\",round(Q,4),\"m/s\"\n",
+ "print 'The answers are correct because of book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total absolute pressure 103333.3 Pa\n",
+ "Corrected density of air 1.0637 kg/m3\n",
+ "Velocity at centre 13.894 m/s\n",
+ "Average velocity through pipe 11.81 m/s\n",
+ "Reynolds number 428315.769\n",
+ "The Volumetric flow rate is 3.3375 m/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.2-2, Page number 132"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Metering Oil Flow by an Orifice\n",
+ "from math import pi\n",
+ "\n",
+ "#Variable declaration\n",
+ "d0 = 0.0566 #Diameter of orifice (m)\n",
+ "d1 = 0.1541 #Diameter of pipe (m)\n",
+ "Rhooil = 878. #Density of oil (kg/m3)\n",
+ "mu = 0.0041 #Viscoity of oil (cp)\n",
+ "dP = 93200. #Pressure diffrence across orifice (kN/m2)\n",
+ "Co = 0.61 #Coeficient of discharge of orifice \n",
+ "\n",
+ "#Calculations\n",
+ "beta = d0/d1\n",
+ "v = Co*sqrt(2*dP/Rhooil)/sqrt(1 - beta**4)\n",
+ "Q = v*pi*d0**2/4\n",
+ "Nre = d0*v*Rhooil/mu\n",
+ "\n",
+ "#Result\n",
+ "print 'Velocity of oil %5.3f m/s'%v\n",
+ "print \"The volumetric flowrate\",round(Q,5), \"m3/s\"\n",
+ "print 'Reynolds number %5.4e'%Nre\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Velocity of oil 8.970 m/s\n",
+ "The volumetric flowrate 0.02257 m3/s\n",
+ "Reynolds number 1.0872e+05\n"
+ ]
+ }
+ ],
+ "prompt_number": 26
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.3-1, Page number 135"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculation of Brake Horse Power of a Pump\n",
+ "\n",
+ "#Variable declaration\n",
+ "m = 40. #Flowrate for the Pump (gal/min)\n",
+ "mfps = 5.56 #Flowrate of the Pump in fps units (lbm/s)\n",
+ "D = 62.4 #Density of water in fps units (lbm/ft3)\n",
+ "n = .60 #Efficiency of the pump \n",
+ "H = 38.5 #Developed Head (ft)\n",
+ "\n",
+ "#Calculations\n",
+ "mfps = m*(1./60)*(1./7.481)*62.4\n",
+ "Ws = -H\n",
+ "Bhp = -Ws*mfps/(n*550)\n",
+ "\n",
+ "#Result\n",
+ "print \"The Calculated Brake Horse Power is \",round(Bhp,2), \"hp\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Calculated Brake Horse Power is 0.65 hp\n"
+ ]
+ }
+ ],
+ "prompt_number": 27
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.3-2, Page number 137"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Brake-kQ Power of a Centrifugal Fan\n",
+ "#Variable declaration\n",
+ "m = 28.32 #Flowrate of the air (m3/min)\n",
+ "Ma = 28.97 #Molecular weight of air \n",
+ "V = 22.414 #Volume of 1 kg air at 101.3 atm pressure and 273.2 K\n",
+ "T1 = 273.2 #Temperature of air at atmospheric pressure (K) \n",
+ "T2 = 366.3 #Temperature of air at suction (K)\n",
+ "T3 = 294.1\n",
+ "P1 = 760. #Atmospheric pressure of air (mm Hg)\n",
+ "P2 = 741.7 #Suction Pressure of air (mm Hg)\n",
+ "P3 = 769.6 #Discharge Pressure of air (mm Hg)\n",
+ "n = 60. #Efficiency of the pump\n",
+ "confac = 101325. #Conversion factor pressure from (mm Hg) to (N/m2) (N/m2.atm)\n",
+ "rhow = 0.958 #Density of water (kg/m3)\n",
+ "V1 = 0. #Velocity of air at suction (m/s2)\n",
+ "V2= 45.7 #Velocity of air at discharge (m/s2)\n",
+ "z1 = 0. #Height at suction (m)\n",
+ "z2 = 0. #Height at discharge (m)\n",
+ "g = 9.8 #Gravitational accleration (m/s)\n",
+ "F = 0.\n",
+ "#Calculations\n",
+ "n = n/100\n",
+ "Rho1 = Ma*T1*P2/(V*T2*P1)\n",
+ "Rho2 = Rho1*P3/P2\n",
+ "Rhoavg = (Rho1 + Rho2)/2\n",
+ "mmks = m*(1./60)*(1./22.414)*(T1/T3)*(Ma)\n",
+ "P = (P3 - P2)*confac/(P1*rhow)\n",
+ "\n",
+ " #z1*g + V1**2/2 + P1/Rho_avg + Ws = z2*g + V2**2/2 + P2/Rho_avg + F\n",
+ "#-Ws = -z1*g - V1**2/2 - P1/Rho_avg +z2*g + V2**2/2 + P2/Rho_avg + F \n",
+ "Ws = -z1*g - V1**2/2 + P +z2*g + V2**2/2 + F \n",
+ "BkW = Ws*mmks/(n*1000)\n",
+ "\n",
+ "#Result\n",
+ "print \"The Calculated Brake Horse Power is\",round(BkW,2), \"kW\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Calculated Brake Horse Power is 4.65 kW\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.3-3, Page number 140"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Compression of Methane\n",
+ "from math import log\n",
+ "#Variable Declaration\n",
+ "Q = 0.00756 #Flowrate of methane (kg.mol/s)\n",
+ "P1 = 137.9 #Initial pressure (kPa)\n",
+ "P2 = 551.6 #Final pressure (kPa)\n",
+ "T1 = 26.7 #Temperature of methane (degC)\n",
+ "M_CH4 = 16. #Molecular weight of Methane\n",
+ "gama = 1.31 \n",
+ "R = 8314.3 #Gas constant \n",
+ "n = .8 #Efficiency of compressor\n",
+ "#Calculation\n",
+ " #(a) Calculation for part (a)\n",
+ "T1_K = T1 + 273.2\n",
+ "Q_mks = Q*M_CH4\n",
+ "Ws = gama*R*T1_K*((P2/P1)**((gama - 1)/gama) - 1)/((gama - 1)*M_CH4)\n",
+ "B_kW = Ws*Q_mks/(n*1000)\n",
+ "#(b) Calculation for part (b)\n",
+ " # Ws_b = 2.3026*R*T1_K*math.log10(P2/P1)/M_CH4\n",
+ "Ws_b = (2.3026/M_CH4)*R*T1_K*log(P2/P1,10)\n",
+ "B_kW_b = Ws_b*Q_mks/(n*1000)\n",
+ "#Result \n",
+ "print \"The power required for adiabatic compression\",round(B_kW,2),\"kW\"\n",
+ "print \"The power required for isothermal compression\",round(B_kW_b,2),\"kW\"\n",
+ "print 'The answers are correct because of book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The power required for adiabatic compression 38.66 kW\n",
+ "The power required for isothermal compression 32.67 kW\n",
+ "The answers are correct because of book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 30
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.4-1, Page number 145"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Power Consumption by an Agitator\n",
+ "\n",
+ "#Variable Declaration\n",
+ "Dt = 1.83 #The tank diameter (m)\n",
+ "W = 0.122 #Width of the tank (m)\n",
+ "Da = 0.61 #The turbine diameter (m)\n",
+ "J = 0.15 #Width of baffle (m)\n",
+ "Vrpm = 90. #Speed of the turbine (rpm)\n",
+ "Rho = 929. #Density of liquid (kg/m3)\n",
+ "mu = 10. #Viscosity of liquid (cp)\n",
+ "mub = 100000. #Viscosity of the in part (b)liquid (cp)\n",
+ "\n",
+ "#Calcualtion\n",
+ "mu = mu*1e-3\n",
+ "mub = mub*1e-3\n",
+ " #Calculation for (a)\n",
+ "Vrps = Vrpm/60.\n",
+ "Nre = Da**2*Vrps*Rho/mu\n",
+ "NpT = 5. \n",
+ "P = NpT*Rho*Vrps**3*Da**5/1000.\n",
+ " #Calculation for (b)\n",
+ "Nreb = Da*Vrps*Rho/mub\n",
+ "NpL = 14.\n",
+ "Pb = NpL*Rho*Vrps**3*Da**5/1000.\n",
+ "\n",
+ "#Result \n",
+ "print \"(a)The power required by the mixer is\",round(P,3),\"kW\"\n",
+ "print \"(b)The power requird by the mixer is for higher viscosity\",round(Pb,2),\"kW\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "(a)The power required by the mixer is 1.324 kW\n",
+ "(b)The power requird by the mixer is for higher viscosity 3.71 kW\n"
+ ]
+ }
+ ],
+ "prompt_number": 31
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.4-3, Page number 149 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Scale-up of Turbine Agitation System\n",
+ "from math import pi\n",
+ "#Variable Declaration\n",
+ "Dt1 = 1.83 #Tank diameter (m)\n",
+ "Da1 = 0.61 #Diameter of turbine (m)\n",
+ "W1 = 0.122 #Width of turbine (m)\n",
+ "J1 = 0.15 #Width of baffle (m)\n",
+ "N1 = 1.5 #Speed of the turbine (rev/s)\n",
+ "Rho = 929. #Density of fluid (kg/m3)\n",
+ "mu = 0.01 #Viscosity of the fluid (Pa.s)\n",
+ "H1 = Dt1\n",
+ "Np = 5.0 \n",
+ "\n",
+ "#Calcualtion\n",
+ "V1 = pi*Dt1**2*H1/4.\n",
+ "V2 = 3.*V1\n",
+ "R = (V2/V1)**(1./3)\n",
+ "Dt2 = R*Dt1\n",
+ "Da2 = R*Da1\n",
+ "W2 = R*W1\n",
+ "J2 = R*J1\n",
+ "P1 = Np*Rho*N1**3*Da1**5\n",
+ "P1_kW = P1/1000.\n",
+ " #(a)Calculation for equal rate of mass transfer\n",
+ "n = 2./3\n",
+ "N2 = N1*(1/R)**n\n",
+ "Nre = Da2**2*N2*Rho/mu\n",
+ "\n",
+ "P2 = Np*Rho*N2**3*Da2**5\n",
+ "P2_kW = P2/1000.\n",
+ " #The power per unit volume\n",
+ "P_v1 = P1_kW/V1 \n",
+ "P_v2 = P2_kW/V2\n",
+ " #(b)Calculation for equal liquid motion\n",
+ "n= 1.\n",
+ "N2_b = N1*(1./R)**n\n",
+ "P2_b = Np*Rho*N2_b**3*Da2**5\n",
+ "P2_vb = P2_b/V2\n",
+ "\n",
+ "#Result \n",
+ "print \"(a) For equal mass transfer\"\n",
+ "print ' Total power for smaller tank %5.3f W and \\n power required per unit volume is %5.4f W' %(P1,P_v1)\n",
+ "print ' Total power for larger tank %5.3f W and \\n power required per unit volume is %5.4f W' %(P2,P_v2)\n",
+ "print \"(b) The power per unit volume for equal liquid motion is\",round(P2_vb/1000,4),\"kW\"\n",
+ "print 'The answers are different than book because book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "(a) For equal mass transfer\n",
+ " Total power for smaller tank 1324.063 W and \n",
+ " power required per unit volume is 0.2751 W\n",
+ " Total power for larger tank 3972.189 W and \n",
+ " power required per unit volume is 0.2751 W\n",
+ "(b) The power per unit volume for equal liquid motion is 0.1907 kW\n",
+ "The answers are correct because of book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 35
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.5-1, Page number 158"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Pressure Drop of Power-Law Fluid in Laminar Flow\n",
+ "#Variable Declaration\n",
+ "Rho = 1041. #Density of fluid (kg/m3)\n",
+ "L = 14.9 #Length of the tube (m)\n",
+ "D = 0.0524 #Inside diameter of the tube (m)\n",
+ "V = 0.0728 #Average Velocity of the flowing fluid (m/s)\n",
+ "K = 15.23 #Rheological properties of fluid \n",
+ "n = 0.4\n",
+ "\n",
+ "#Calcualtion\n",
+ " #Calculation for part (a)\n",
+ "delP = (K*4*L/D)*(8*V/D)**n\n",
+ "Ff = delP/Rho\n",
+ "Nre = ((D**n)*(V**(2-n))*Rho)/(K*8**(n-1))\n",
+ "print 'Nre = %5.4f is in Laminar range' %Nre\n",
+ " #Calculation for part (b)\n",
+ "f = 16./Nre\n",
+ "delPb = 4*f*Rho*L*V**2/(D*2)\n",
+ "\n",
+ "#Result \n",
+ "print \"(a) The pressure drop calculated is\",round(delP,0),\"N/m2\"\n",
+ "print \" The friction loss calculated is\",round(Ff,2),\"J/kg\"\n",
+ "print \"(b) The pressure drop calculated by using the friction factor method is\",round(delP/1000,2),\"kN/m2\"\n",
+ "print 'The answers are different than book because book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Nre = 1.1060 is in Laminar range\n",
+ "(a) The pressure drop calculated is 45391.0 N/m2\n",
+ " The friction loss calculated is 43.6 J/kg\n",
+ "(b) The pressure drop calculated by using the friction factor method is 45.39 kN/m2\n"
+ ]
+ }
+ ],
+ "prompt_number": 36
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.5-2, Page number 160"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Turbulent Flow of Power-Law Fluid\n",
+ "#Variable Declaration\n",
+ "Rho = 961. #Density of fluid (kg/m3)\n",
+ "Di = 0.0508 #Inner diameter of circular tube (m)\n",
+ "V_av = 6.1 #Average velocity of fluid (m/s)\n",
+ "K = 2.744 #Consisitency index\n",
+ "n = 0.30 #Flow behaiviour index\n",
+ "L = 30.5 #Length of tubing, m \n",
+ "f = 0.0032 #Friction factor for turbulent flow\n",
+ "#Calcualtion\n",
+ "Nre = Di**n*V_av**(2-n)*Rho/K*8**(n-1)\n",
+ "delP = 4*f*Rho*L*V_av**2/(2*Di)\n",
+ "delP_kN = delP/1000 \n",
+ "#Result \n",
+ "print \"The frictional pressure drop for turbine is\",round(delP_kN,1), \"kN/m2\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The frictional pressure drop for turbine is 137.4 kN/m2\n"
+ ]
+ }
+ ],
+ "prompt_number": 37
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter04.ipynb b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter04.ipynb new file mode 100755 index 00000000..006f8bc0 --- /dev/null +++ b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter04.ipynb @@ -0,0 +1,1902 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:0fc1c228b620788d89524e97706118d770bd4b5cefa6e66c9b45d50f744933c6"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 4: Principles of Steady-State Heat Transfer"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.1-1, Page number 217"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Heat Loss Through Insulating Wall\n",
+ "\n",
+ "#Variable declaration\n",
+ "L = 0.0254 #Thickness of fibre insulating board\n",
+ "T1 = 352.7 #Temperature of hot face, \u00b0C\n",
+ "T2 = 297.1 #Temperature of cold face, \u00b0C\n",
+ "A = 1.0 #Suface area, m2\n",
+ "k = 0.048 #Thermal conductivity of fibre insulating board, W/(m.K)\n",
+ "\n",
+ "#Calculation\n",
+ "q = k*(T1-T2)/L\n",
+ "\n",
+ "#Result\n",
+ "print \"Heat loss per unit area:\", round(q,1), \"W/m2\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Heat loss per unit area: 105.1 W/m2\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.2-1, Page number 222"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Length of tubing for Cooling Coil\n",
+ "from math import log, pi\n",
+ "\n",
+ "#Variable declaration \n",
+ "ri = 0.005 #Inside radius of tubing\n",
+ "ro = 0.02 #Outside radius of tubing\n",
+ "k = 0.151 #Thrmal conductivity of rubber tubing, W/mK\n",
+ "Ti = 274.9 #Inside wall temaperature, K\n",
+ "To = 297.1 #Outside wall temaperature, K\n",
+ "Q = 14.65 #Total heat tranfer rate, W\n",
+ "\n",
+ "#Calculation\n",
+ "Ai = 2*pi*ri*1.0\n",
+ "Ao = 2*pi*ro*1.0\n",
+ "Alm = (Ai-Ao)/(log(Ai/Ao))\n",
+ "Q1 = k*Alm*(To-Ti)/(ro-ri)\n",
+ "L = Q/Q1\n",
+ "\n",
+ "#Result\n",
+ "print \"Length of tubing required \",round(L,3) , \"m\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Length of tubing required 0.964 m\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.3-1, Page number 223"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Heat Flow Through an Insulated Wall of a Cold Sorage\n",
+ "\n",
+ "#Variable declaration\n",
+ "L1 = 0.0127 #Thickness of inner wall, m\n",
+ "L2 = 0.1016 #Thickness of middle wall, m\n",
+ "L3 = 0.0762 #Thickness of outer wall, m\n",
+ "k1 = 0.151 #Thermal conductivity of inner wall, W/mK\n",
+ "k2 = 0.0433 #Thermal conductivity of middle wall, W/mK\n",
+ "k3 = 0.768 #Thermal conductivity of outer wall, W/mK\n",
+ "A = 1.0 #Heat Area area, m2\n",
+ "Ti = 255.4 #Inner wall surface temperature, K\n",
+ "To = 297.1 #outer wall surface temperature, k\n",
+ "\n",
+ "#Calculation\n",
+ "R1 = L1/(k1*A) # Resistance of the inner wall, K/W\n",
+ "R2 = L2/(k2*A) # Resistance of the middle wall, K/W\n",
+ "R3 = L3/(k3*A) # Resistance of the outer wall, K/W\n",
+ "Rt = R1 + R2 + R3 \n",
+ "q = (Ti-To)/Rt\n",
+ "T2 = Ti - q*R1\n",
+ "\n",
+ "#Result\n",
+ "print 'Resistance offered by 1st wall %5.4f K/W'%(R1)\n",
+ "print 'Resistance offered by 2nd wall %5.4f K/W'%(R2)\n",
+ "print 'Resistance offered by 3rd wall %5.4f K/W'%(R3)\n",
+ "print 'Total Resistance of composite wall %5.4f K/W'%(Rt)\n",
+ "print \"Heat loss\",round(q,2),'W/m2'\n",
+ "print \"Temperature at interface between pine wood and cork\",round(T2,2), \"K\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Resistance offered by 1st wall 0.0841 K/W\n",
+ "Resistance offered by 2nd wall 2.3464 K/W\n",
+ "Resistance offered by 3rd wall 0.0992 K/W\n",
+ "Total Resistance of composite wall 2.5297 K/W\n",
+ "Heat loss -16.48 W/m2\n",
+ "Temperature at interface between pine wood and cork 256.79 K\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.3-2, Page number 225"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Heat Loss from an Insulated pipe\n",
+ "from math import log, pi\n",
+ "\n",
+ "#Variable declaration\n",
+ "ks = 21.63 #Heat transfer coefficient of the pipe (W/K.m)\n",
+ "ki = 0.2423 #Heat transfer coefficient of the insulation (W/K.m)\n",
+ "d1 = 0.0254 #Inner diameter of the pipe (m)\n",
+ "d2 = 0.0508 #Inner diameter of the insulation (m)\n",
+ "thks = 0.0254 \n",
+ "T1 = 811 #The wall temperature of the pipe (K)\n",
+ "T3 = 310.8 #The temperature of the outside wall of the insulation (k)\n",
+ "L = .305 #Length of the pipe (m)\n",
+ "\n",
+ "#Calculation\n",
+ "r1 =d1/2.\n",
+ "r2 = d2/2.\n",
+ "r3 = r2 + thks\n",
+ "A1 = 2*pi*r1*L\n",
+ "A2 = 2*pi*r2*L\n",
+ "A3 = 2*pi*r3*L\n",
+ "A12lm = (A1-A2)/log(A1/A2)\n",
+ "A23lm = (A2-A3)/log(A2/A3)\n",
+ "R12 = (r2-r1)/(ks*A12lm)\n",
+ "R23 = (r3-r2)/(ki*A23lm)\n",
+ "Q = (T1-T3)/(R12+R23)\n",
+ "T2 = T1 - Q*R12\n",
+ "\n",
+ "#Results\n",
+ "print \"Temperature of Interface\", round(T2,1) ,\"K\"\n",
+ "print \"Heat loss\", round(Q,1) ,\"W\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Temperature of Interface 805.5 K\n",
+ "Heat loss 331.4 W\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.3-3, Page number 228"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Heat Loss by Convection and Conduction and Overall U\n",
+ "from math import log, pi\n",
+ "\n",
+ "#Variable declaration\n",
+ "di = 0.824 #Inner diameter of the pipe (m)\n",
+ "do = 1.05 #Outer diameter of the pipe (m)\n",
+ "thki = 1.5\n",
+ "hi = 1000 #Convective heat transfer coefficient (btu/h.ft2)\n",
+ "ho = 2. #Convective heat transfer coefficient on the outside (btu/h.ft2) \n",
+ "km = 26. #Mean thermal cunductivity of metal (btu/h.ft)\n",
+ "ki = 0.037 #Mean thermal cunductivity of insulation (btu/h.ft)\n",
+ "Ts = 267 #Surface temperature of the pipe (F)\n",
+ "Ta = 80 #Surrounding air temperature (F)\n",
+ "L = 1. \n",
+ "\n",
+ "#Calculation\n",
+ "ri = di/(12.*2.)\n",
+ "r1 = do/(12.*2.)\n",
+ "ro = r1 + thki/12.\n",
+ "Ai = 2*pi*ri*L\n",
+ "A1 = 2*pi*r1*L\n",
+ "Ao = 2*pi*ro*L\n",
+ "Ai1lm = (Ai-A1)/log(Ai/A1)\n",
+ "A1olm = (A1-Ao)/log(A1/Ao)\n",
+ "Ri1 = (r1-ri)/(km*Ai1lm)\n",
+ "R1o = (ro-r1)/(ki*A1olm)\n",
+ "Ri = 1./(hi*Ai)\n",
+ "Ro = 1./(ho*Ao)\n",
+ "Rt = Ri+Ri1+R1o+Ro\n",
+ "Q = (Ts-Ta)/(Rt)\n",
+ "Ui = 1./(Ai*Rt)\n",
+ "Q1 = Ui*Ai*(Ts-Ta)\n",
+ "\n",
+ "#Result\n",
+ "print \"Heat lost to the surrounding using resistance\",round(Q,1), \"Btu/hr\"\n",
+ "print \"Heat lost to the surrounding using Overall Heat TRansfer Coeff\",round(Q1,1), \"Btu/hr\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Heat lost to the surrounding using resistance 29.8 Btu/hr\n",
+ "Heat lost to the surrounding using Overall Heat TRansfer Coeff 29.8 Btu/hr\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.3-4, Page number 231"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Heat Generation in a cylinder\n",
+ "from math import pi\n",
+ "#Variable declaration\n",
+ "i = 200. #Current through the wire, A\n",
+ "r = 0.001268 #radius of the wire, m\n",
+ "L = 0.91 #Length of wire, m\n",
+ "R = 0.126 #Resistance of stainless steel, ohm\n",
+ "Tw = 422.1 #Wall temperature of the wire, K\n",
+ "k = 22.5 #Thermal conductivity of steel, W/mK \n",
+ "\n",
+ "#Calculation\n",
+ "Q = i**2*R\n",
+ "qdot = Q/(pi*r**2*L)\n",
+ "To = Tw + qdot*r**2/(4*k)\n",
+ "\n",
+ "#Result\n",
+ "print \"Temperature at the centre of the wire\",round(To,1),\"K\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Temperature at the centre of the wire 441.7 K\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.3-5, Page number 232"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Insulating an Electrical Wire and Critical Radius\n",
+ "from math import log, pi\n",
+ "\n",
+ "#Variable declaration\n",
+ "d = 1.5 #Diameter of electrical wire, mm\n",
+ "thki = 2.5 #Thickness of insulation, mm\n",
+ "Ta = 300. #Temrature of air, K\n",
+ "ho = 20. #Outside Heat transfer coefficient, W/m2.K\n",
+ "ki = 0.4 #Thermal conductivity of insulation, W/mK\n",
+ "Tw = 400. #Surface temperature of the wire, K\n",
+ "L = 1. #Length of wire, m\n",
+ "#Calculation\n",
+ "r1 = d*1e-3/2.\n",
+ "r2 = r1+thki*1e-3\n",
+ "r2c = ki/ho\n",
+ "A1 = 2*pi*r1*L\n",
+ "Q = ho*A1*(Tw-Ta)\n",
+ "\n",
+ "Qi = 2*pi*L*(Tw-Ta)/(log(r2/r1)/ki + 1./(ho*r2))\n",
+ "#Result\n",
+ "print \"(a) Critical radius of insulation\",round(r2c*1e3,1),\"mm\"\n",
+ "print \"(b) Heat Transfer rate without insulation\",round(Q,2),\"W/m\"\n",
+ "print \"(c) Heat Transfer rate with insulation\",round(Qi,2),\"W/m\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "(a) Critical radius of insulation 20.0 mm\n",
+ "(b) Heat Transfer rate without insulation 9.42 W/m\n",
+ "(c) Heat Transfer rate with insulation 32.98 W/m\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.4-1, Page number 235"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Two dimenssional conduction by Graphical Proceedure \n",
+ "\n",
+ "#Variable declaration\n",
+ "T1 = 600. #Inside temperature, K\n",
+ "T2 = 400. #Outside temperature, K\n",
+ "k = 0.9 #Thermal conductivity, W/mK\n",
+ "L = 5. #Length of flue, m\n",
+ "N = 4 #Number of temperature subdivisions\n",
+ "M = 9.25 #\n",
+ "#Calculation\n",
+ "\n",
+ "Q = 4*(M*k*L*(T1-T2)/4.)\n",
+ "\n",
+ "#Result\n",
+ "print \"Heat Transfer Rate :\",round(Q), \"W\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Heat Transfer Rate : 8325.0 W\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.5-1, Page number 240"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Heating of Air in Turbulent Flow\n",
+ "\n",
+ "#Variable declaration\n",
+ "Tc = 477.6 #Average temperature of air, K\n",
+ "v = 7.62 #Velocity of air, m/s\n",
+ "di = 0.0254 #inner diameter, m \n",
+ "Ts = 488.7 #Steam temperature, K\n",
+ "muab = 2.6e-5 #Viscosity of air, Pa.s\n",
+ "ka = 0.03894 #Thermal conductivity of air, W/mK\n",
+ "Npr = 0.686\n",
+ "muw = 2.64e-5 #Viscosity of air at wall temperature, Pa.s\n",
+ "P = 206.8 #Pressure, kPa \n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "rhoa =28.97*(1./22.414)*(P/101.325)*273.2/Tc\n",
+ "Nre = di*v*rhoa/muab\n",
+ "Nnu = 0.027*Nre**0.8*Npr**(1./3)*(muab/muw)**0.14\n",
+ "hL = Nnu*ka/di\n",
+ "q = hL*(Ts-Tc)\n",
+ "\n",
+ "#Result\n",
+ "print \"Average Heat Transfer Coefficient for L/D > 60\", round(hL,2), \"W/m2.K\"\n",
+ "print \"Heat Flux\", round(q,2), \"W/m2\"\n",
+ "print 'The answers different than book, because of book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Average Heat Transfer Coefficient for L/D > 60 63.36 W/m2.K\n",
+ "Heat Flux 703.33 W/m2\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.5-2, Page number 241"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Water Heated by Steam, Trial and Error Solution\n",
+ "from math import pi\n",
+ "\n",
+ "#Variable declaration\n",
+ "di = 0.0266 #Inner diameter of the pipe (m)\n",
+ "do = 0.0334 #Outer diameter of the pipe (m)\n",
+ "L = 0.305 #Lenth of pipe, m\n",
+ "T = 65.6 #Average temperature of the steel pipe (deg C)\n",
+ "v = 2.44 #Velocity of the water flow (m/s)\n",
+ "Ts = 107.8 #Temperature of the steam (deg C)\n",
+ "ho = 10500. #Heat transfer coefficient on the steam side (W/m2.K)\n",
+ "# Properties of water at T=65.6\u00b0C\n",
+ "Npr = 2.72 #Prandtl number\n",
+ "rho = 980. #Density of water (kg/m3)\n",
+ "kw = 0.663 #Thermal conductivity of Water (W/m.K)\n",
+ "mu = 4.32e-4 #Viscosity of water (Pa.s)\n",
+ "k = 45. #Thermal conductivity of metal wall (W/m.K)\n",
+ "# Properties of water at T=80\u00b0C\n",
+ "muw = 3.56e-4\n",
+ "\n",
+ "#Calculation\n",
+ "#Part A\n",
+ "Nre = di*v*rho/mu\n",
+ "Nnu = 0.027*(Nre**0.8)*(Npr**(1./3))*(mu/muw)**0.14\n",
+ "hi = Nnu*kw/di\n",
+ "\n",
+ "#Part B\n",
+ "Ai = pi*di*L\n",
+ "Ao = pi*do*L\n",
+ "Am = pi*L*(do+di)/2\n",
+ "Ri = 1./(hi*Ai)\n",
+ "Ro = 1./(ho*Ao)\n",
+ "Rm = (do-di)/(2*k*Am)\n",
+ "SR = Ri+Ro+Rm\n",
+ "DelT = (Ts-T)\n",
+ "DelTw = Ri*DelT/SR\n",
+ "Tw = T + DelTw\n",
+ "\n",
+ "Ui = 1.0/(Ai*SR)\n",
+ "Q = Ui*Ai*DelT\n",
+ "#Result\n",
+ "print \"Inside Heat Transfer Coefficient:\", round(hi), \"W/m2.K\"\n",
+ "print \"The assumed temperature of water 80\u00b0C is comparable with Calculated\", round(Tw,2)\n",
+ "print \"Heat Transfer Rate\", round(Q),\"W\"\n",
+ "print 'The answers are different than book, because of book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Inside Heat Transfer Coefficient: 13153.0 W/m2.K\n",
+ "The assumed temperature of water 80\u00b0C is comparable with Calculated 80.26\n",
+ "Heat Transfer Rate 4914.0 W\n",
+ "The answers are different than book, because of book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.5-3, Page number 243"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Liquid-Metal Heat Transfer Inside a Tube\n",
+ "from math import pi\n",
+ "\n",
+ "#Variable declaration\n",
+ "mdot = 4. #Flowrate of liquid metal (kg/s)\n",
+ "di = 0.05 #Inner diameter of pipe (m)\n",
+ "Ti = 500. #Initial temperature of liquid entering (K)\n",
+ "To = 505. #Final temperature of liquid leaving (K)\n",
+ "mu = 7.1e-4 #Viscosity of the liquid (Pa.s) \n",
+ "rho = 7400. #Density of the liquid (kg/m3)\n",
+ "cp = 120. #Specific heat (J/kg.K)\n",
+ "k = 13. #Heat transfer coefficient (W/m.K)\n",
+ "delT = 30.\n",
+ "\n",
+ "#Calculation\n",
+ "Ac = pi*di**2/4.\n",
+ "G = mdot/Ac\n",
+ "Nre = di*G/mu\n",
+ "Npr = cp*mu/k\n",
+ "Npe = Nre*Npr\n",
+ "Nnu = 0.625*Npe**0.4\n",
+ "hL = Nnu*k/di\n",
+ "Q = mdot*cp*(To-Ti)\n",
+ "As = Q/(hL*delT) \n",
+ "L = As/(pi*di)\n",
+ "\n",
+ "#Result\n",
+ "print \"Heat Transfer coefficient\",round(hL,2),\"W/m2.K\"\n",
+ "print \"The Length of the tube required\",round(L,3),\"m\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Heat Transfer coefficient 2512.75 W/m2.K\n",
+ "The Length of the tube required 0.203 m\n"
+ ]
+ }
+ ],
+ "prompt_number": 16
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.5-4, Page number 245"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Heat Transfer Area and Log Mean Temperature Difference\n",
+ "from math import log\n",
+ "#Variable declaration \n",
+ "cpm = 2300. #Specific heat of the hydrocarbon oil (J/kg.K)\n",
+ "Ti = 371.9 #Initial temperature of the oil (K)\n",
+ "To = 349.7 #Final temperature of the oil (K)\n",
+ "mdotoil = 3630. #Flowrate of oil (kg/h)\n",
+ "mdotw = 1450. #Flowrate of water (kg/h)\n",
+ "cpw = 4187. #Specific heat of water (J/kg.K)\n",
+ "Twi = 288.6 #Temperature of the inlet water (K)\n",
+ "Ui = 340. #Overall heat tranfer coefficient (W/m2.K)\n",
+ "\n",
+ "#Calculations \n",
+ "Q = mdotoil*cpm*(Ti-To)/3600\n",
+ "Two = Twi + Q/((mdotw/3600)*cpw)\n",
+ " #Contercurrent\n",
+ "delT1 = To - Twi\n",
+ "delT2 = Ti - Two\n",
+ "deltLM = (delT1-delT2)/log(delT1/delT2)\n",
+ "Ai = Q/(Ui*deltLM)\n",
+ "#Result\n",
+ "print \"Heat lost by oil\",round(Q,1),\"W\"\n",
+ "print \"Outlet Temperature of cooling water\",round(Two,1),\"K\"\n",
+ "print \"Area required for cooling in Countercurrent flow:\",round(Ai,2),\"m2\"\n",
+ "\n",
+ " #Co-current/Parallel flow\n",
+ "delT1 = Ti - Twi\n",
+ "delT2 = To - Two\n",
+ "deltLM = (delT1-delT2)/log(delT1/delT2)\n",
+ "Ai = Q/(Ui*deltLM)\n",
+ "\n",
+ "#Result\n",
+ "print \"Area required for cooling in Co-current/Parallel flow:\",round(Ai,2),\"m2\"\n",
+ "print 'The answers different than book because book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Heat lost by oil 51485.5 W\n",
+ "Outlet Temperature of cooling water 319.1 K\n",
+ "Area required for cooling in Countercurrent flow: 2.66 m2\n",
+ "Area required for cooling in Co-current/Parallel flow: 2.88 m2\n",
+ "The answers different than book because book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.5-5, Page number 246"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Laminar Heat Transfer and Trial and Error\n",
+ "from scipy import interpolate\n",
+ "from math import pi\n",
+ "\n",
+ "#Variable declaration SI Units \n",
+ "Ti = 150. #Initial temperature of the hydrocarbon oil (F) \n",
+ "di = 0.0303 #Inside diameter of the pipe (ft)\n",
+ "L = 15. #Length of the tube (ft)\n",
+ "mdot = 80. #Flowrate of the oil (lbm/h)\n",
+ "Tw = 350. #Inside wall temperature of the wall (F)\n",
+ "Cp = 0.5 #Specific heat of oil (btu/lbm)\n",
+ "km = 0.083 #Thermal conductivity, Btu/(h.ft.\u00b0F) \n",
+ "T=[150,200,250,300,350] #Temperature of hydrocarbon oil, \u00b0F\n",
+ "mu=[6.5,5.05,3.8,2.82,1.95] #Viscosity of hydrocarbon oil, \u00b0F\n",
+ "cf = 2.4191 #Specific Heat of hydrocarbon oil, \u00b0F\n",
+ "\n",
+ "#Calculations \n",
+ "f = interpolate.interp1d(T,mu)\n",
+ "muw = cf*f(Tw)\n",
+ "Ac = pi*di**2/4.\n",
+ "G = mdot/Ac\n",
+ "Toass = 250.\n",
+ "xx = 1.2\n",
+ "#Calculation\n",
+ "while(xx > 0.0001):\n",
+ " Tb = int((Ti+Toass)/2.)\n",
+ " mub = cf*f(Tb)\n",
+ " Nre = di*G/mub\n",
+ " Npr = Cp*mub/km\n",
+ " Nnu = 1.86*(Nre*Npr*di/L)**(1./3)*(mub/muw)**0.14\n",
+ " h = Nnu*km/di\n",
+ " tau = h*pi*di*L/(mdot*Cp)\n",
+ " tau2 = tau/(1+tau/2.)\n",
+ " To = (tau*(Tw-Ti/2.)+Ti)/(1+tau/2.)\n",
+ " xx = abs((Toass - To)/Toass)\n",
+ " Toass = To\n",
+ "\n",
+ "#Result\n",
+ "print \"The outlet temperature of the oil\",round(Toass,0),\"\u00b0F\"\n",
+ "print \"The heat transfer coefficient calculated is\",round(h,2),\"Btu/(hr.ft2)\"\n",
+ "print 'The answers are different than book because book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The outlet temperature of the oil 255.0 \u00b0F\n",
+ "The heat transfer coefficient calculated is 20.03 Btu/(hr.ft2)\n",
+ "The answers are different than book because book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.6-1, Page number 248"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Cooling of Cooper Fin\n",
+ "\n",
+ "#Variable declaration\n",
+ "l = 0.051 #length of square fin, m\n",
+ "T = 82.2 #Temperature of fin, \u00b0C\n",
+ "Ta = 15.6 #Temperature of air, \u00b0C\n",
+ "P = 1. #Absolute Pressure of air, atm\n",
+ "v = 12.2 #Velocity of air, m/s\n",
+ "k = 0.028 #Thermal conductivity of air at 48.9\u00b0C, W/(m.K)\n",
+ "rho = 1.097 #Density of air at 48.9\u00b0C, kg/m3\n",
+ "mu = 1.95e-5 #viscosity of air at 48.9\u00b0C, W/(m.K)\n",
+ "Npr = 0.704 #Prandtl numbe for air at 48.9\u00b0C, W/(m.K)\n",
+ "\n",
+ "#Calculation\n",
+ "Tf = (T+Ta)/2.\n",
+ "Nre = l*v*rho/mu\n",
+ "Nnu = 0.664*Nre**0.5*Npr**(1./3.)\n",
+ "ha = Nnu*k/l\n",
+ "\n",
+ "Nnu = 0.0366*Nre**0.8*Npr**(1./3.)\n",
+ "hb = Nnu*k/l\n",
+ "#Result\n",
+ "print \" A) Heat Transfer Coeficient for Laminar Flow\", round(ha,1),\"W/(m2.K)\"\n",
+ "print \" B) Heat Transfer Coeficient for Turbulent Conditions\", round(hb,1),\"W/(m2.K)\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " A) Heat Transfer Coeficient for Laminar Flow 60.7 W/(m2.K)\n",
+ " B) Heat Transfer Coeficient for Turbulent Conditions 77.2 W/(m2.K)\n"
+ ]
+ }
+ ],
+ "prompt_number": 23
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.6-2, Page number 249"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Cooling of Sphere\n",
+ "\n",
+ "#Variable declaration\n",
+ "d = 0.051 #Diameter of sphere, m\n",
+ "T = 82.2 #Temperature of fin, \u00b0C\n",
+ "Ta = 15.6 #Temperature of air, \u00b0C\n",
+ "P = 1. #Absolute Pressure of air, atm\n",
+ "v = 12.2 #Velocity of air, m/s\n",
+ "k = 0.028 #Thermal conductivity of air at 48.9\u00b0C, W/(m.K)\n",
+ "rho = 1.097 #Density of air at 48.9\u00b0C, kg/m3\n",
+ "mu = 1.95e-5 #viscosity of air at 48.9\u00b0C, W/(m.K)\n",
+ "Npr = 0.704 #Prandtl numbee for air at 48.9\u00b0C, W/(m.K)\n",
+ "hflat = 77.2 #Film coeff for heat transfer from flat plate, W/(m2.K)\n",
+ "\n",
+ "#Calculation\n",
+ "Tf = (T+Ta)/2.\n",
+ "Nre = d*v*rho/mu\n",
+ "Nnu = 2.+ 0.6*Nre**0.5*Npr**(1./3.)\n",
+ "h = Nnu*k/d\n",
+ "#Result\n",
+ "print \"Reynolds number\", round(Nre)\n",
+ "print \"Heat transfer coeffiecient\", round(h,1), \"W/(m2.K) is less than Heat Transfer coeff for flat plate in prevoius problem\"\n",
+ "print 'The answers are different than book because book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Reynolds number 35003.0\n",
+ "Heat transfer coeffiecient 55.9 W/(m2.K) is less than Heat Transfer coeff for flat plate in prevoius problem\n",
+ "The answers are different than book because book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 26
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.6-3, Page number 250"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Heating of air by a bank of tubes\n",
+ "from math import pi\n",
+ "\n",
+ "#Variable declaration\n",
+ "do = 0.0254 #Outside Diameter of tube,m\n",
+ "L = 0.305 #Length of tube bank,m \n",
+ "Sn = 0.0381 #Normal Tube spacing, m\n",
+ "Sp = 0.0381 #Parallel tube spacing,m\n",
+ "Nt = 40 #Number of tubes in bank\n",
+ "Tw = 57.2 #Surface temperature of tubes, \u00b0C\n",
+ "Ti = 15.6 #Air inlet temperature, \u00b0C\n",
+ "To = 21.1 #Assumed oultet temperature of air, \u00b0C\n",
+ "P = 1. #Air Pressure, atm abs \n",
+ "v = 7.62 #Velocity of air, m/s\n",
+ "rho = 1.137 #Density of air, kg/m3\n",
+ "mu = 1.9e-5 #Viscosity of air, Pa.s\n",
+ "Cp = 1004.8 #Specific heat of air, kJ/(kg.K)\n",
+ "Npr = 0.705 #Prandtl number of air\n",
+ "k = 0.027 #Thermal conductivity of air,W/(m.K)\n",
+ "rho156 = 1.2224 #Density of air at 15.6\u00b0C, kg/m3\n",
+ "#Calculation\n",
+ "snd = Sn/do\n",
+ "spd = Sp/do\n",
+ "#From table 4.6-2 \n",
+ "C, m = 0.278, 0.620\n",
+ "er = 1.0\n",
+ "while er >= 0.2:\n",
+ " Tb = (Ti+To)/2.\n",
+ " Tf = (Tw+Tb)/2.\n",
+ " vmax = v*Sn/(Sn-do)\n",
+ " Nre = do*vmax*rho/mu\n",
+ " Nnu = C*Nre**m*Npr**(1./3.)\n",
+ " h = Nnu*k/do\n",
+ " #Correction factor for heat transfer coefficient from table4.3-3 for four transverse tubes\n",
+ " #is 0.9 \n",
+ " hc = 0.9*h\n",
+ " A =Nt*pi*do*L\n",
+ " Q = hc*A*(Tw-Tb)\n",
+ " Af = 10*Sn*L #Frontal Area\n",
+ " m = Af*v*rho156\n",
+ " delT = Q/(m*Cp)\n",
+ " Tout = Ti + delT\n",
+ " er = abs(To-Tout)\n",
+ " To = (To+Tout)/2\n",
+ " \n",
+ "#Result\n",
+ "print \"Total Heat transfer Rate\", round(Q),\"W\"\n",
+ "print 'The calculated outlet bulk gas temperature is %4.2f \u00b0C'%To\n",
+ "print 'The answers are different than book because book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total Heat transfer Rate 5852.0 W\n",
+ "The calculated outlet bulk gas temperature is 21.04 \u00b0C\n",
+ "The answers are different than book because book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 34
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.7-1 Page Number 254"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Natural Convection from Vertical Wall of an Oven\n",
+ "\n",
+ "#Variable Declaration\n",
+ "H = 1. #Height of the wall (ft)\n",
+ "Tw = 450 #Temperature of the wall (deg F)\n",
+ "Tb = 100. #Temperature of the wall in contact (F)\n",
+ "L = 1. #Length of the wall (m)\n",
+ "k = 0.0198 #Heat transfer cofficient of the wall (btu/h.ft.F)\n",
+ "rho = 0.0541 #Density of air (lbm/ft3)\n",
+ "Pr = 0.69 #Prandtl number\n",
+ "mu = 0.0562 #Viscosity of air (cp)\n",
+ "g = 32.174 #Graitational accleration (ft/s2)\n",
+ "\n",
+ "#Calculations\n",
+ " #English Units\n",
+ "Tf = (Tw+Tb)/2.\n",
+ "beta = 1./(460.+Tf)\n",
+ "delT = Tw - Tb\n",
+ "Gr = L**3*rho**2*g*beta*3600**2*delT/(mu**2)\n",
+ "a = 0.59\n",
+ "m = 1./4.\n",
+ "Nu = a*(Gr*Pr)**m\n",
+ "h = k*Nu/L\n",
+ "A = L*H\n",
+ "Q = h*A*delT\n",
+ "\n",
+ "#Results\n",
+ "print \"In English Units\"\n",
+ "print \"The heat transfer cofficient is \",round(h,2),\"btu/h.ft2.F\"\n",
+ "print \"The heat transfer rate across the wall is \",round(Q),\"btu/h\"\n",
+ "\n",
+ " #SI Units\n",
+ "H = 0.305 #Height of the wall (m)\n",
+ "Tw = 505.4 #Temperature of the wall (K)\n",
+ "Tb = 311.0 #Temperature of the wall in contact (K)\n",
+ "L = 0.305 #Length of the wall (m)\n",
+ "k = 0.0343 #Thermal conductivity of the wall (W/(m.K)\n",
+ "rho = 0.867 #Density of air (kg/m3)\n",
+ "Pr = 0.69 #Prandtl number\n",
+ "mu = 2.32e-5 #Viscosity of air (cp)\n",
+ "g = 9.806 #Graitational accleration (m/s2)\n",
+ "\n",
+ "#Calculations\n",
+ "Tf = (Tw + Tb)/2\n",
+ "beta = 1./Tf\n",
+ "delT = Tw - Tb\n",
+ "Gr = L**3*rho**2*g*beta*delT/(mu**2)\n",
+ "a = 0.59\n",
+ "m = 1./4.\n",
+ "Nu = a*(Gr*Pr)**m\n",
+ "h = k*Nu/L\n",
+ "A = L*H\n",
+ "Q = h*A*delT\n",
+ "\n",
+ "#Results\n",
+ "print \"In SI Units\"\n",
+ "print \"The heat transfer cofficient is \",round(h,2),\"W/(m2.K)\"\n",
+ "print \"The heat transfer rate across the wall is \",round(Q,1),\"W\"\n",
+ "\n",
+ "print 'The answers are different than book because book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "In English Units\n",
+ "The heat transfer cofficient is 1.24 btu/h.ft2.F\n",
+ "The heat transfer rate across the wall is 434.0 btu/h\n",
+ "In SI Units\n",
+ "The heat transfer cofficient is 7.05 W/(m2.K)\n",
+ "The heat transfer rate across the wall is 127.5 W\n",
+ "The answers are different than book because book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 36
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.7-2 Page Number 257"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Natural Convection and Simplified Equation\n",
+ "\n",
+ "#Variable Declaration\n",
+ "#From previous Example 4.7-1 Page Number 254\n",
+ "L = 0.305 #Length of the wall (m)\n",
+ "delT = 194.4 #Temperature diffrence (K)\n",
+ "\n",
+ "\n",
+ "#Calculation\n",
+ "A = 0.305*0.305 #Area of the wall (m2)\n",
+ "h = 1.37*(delT/L)**.25\n",
+ "Q = h*A*delT\n",
+ "\n",
+ "#Results\n",
+ "print \"The heat transfer coefficient calculated is \",round(h,2),\"W/m2/K\"\n",
+ "print \"The heat transfer rate across the wall is \",round(Q,2),\"W\"\n",
+ "print 'The answers are different than book because book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The heat transfer coefficient calculated is 6.88 W/m2/K\n",
+ "The heat transfer rate across the wall is 124.48 W\n",
+ "The answers are different than book because book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.7-3 Page Number 258"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Natural Convection in Enclosed Vertical Space\n",
+ "\n",
+ "#Variable Declaration\n",
+ "L = 0.6 #Length of the plate (m) \n",
+ "W = 0.4 #Width of the plates (m)\n",
+ "d = 0.03 #Distance between the plates (m)\n",
+ "T1 = 394.3 #Temperature at one side of the plate (k)\n",
+ "T2 = 366.5 #Temperature at the other side of the plate (k)\n",
+ "rho = 0.9295 #Density of air (kg/m3)\n",
+ "mu = 2.21e-5 #Viscosity of air (Pa.s)\n",
+ "k = 0.03219 #Heat transfer coefficient of wall (W/m.K)\n",
+ "Pr = 0.693 #Prandtl number\n",
+ "g = 9.806 #Gravitational accleration (m/s)\n",
+ "\n",
+ "#Calculations\n",
+ "Tf = (T1 + T2)/2.\n",
+ "beta = 1/Tf\n",
+ "Gr = d**3*rho**2*g*beta*(T1-T2)/(mu**2)\n",
+ "h = k/d*0.2*(Gr*Pr)**(1./4.)/(L/d)**(1./9.)\n",
+ "A = L*W\n",
+ "Q = h*A*(T1-T2)\n",
+ "\n",
+ "#Results\n",
+ "print \"Heat Transfer Coefficient\", round(h,3),\"W/m2.K\"\n",
+ "print \"Heat Transfer Rate\", round(Q,2),\"W\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Heat Transfer Coefficient 1.909 W/m2.K\n",
+ "Heat Transfer Rate 12.74 W\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.8-1 Page Number 261"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Rate of Heat Transfer in a Jacketed Kettle \n",
+ "\n",
+ "#Variable Declaration\n",
+ "Tjs = 115.6 #Temperature of steam being condensed (deg C)\n",
+ "dki = 0.656 #Inside diameter of the kettle (m)\n",
+ "hk = 0.984 #Height of the kettle (m)\n",
+ "tw = 0.0032 #Thickness of the wall of the jacket (m)\n",
+ "k = 16.27 #Heat transfer coefficient of the wall (W/m.K)\n",
+ "hi = 10200. #Condensing steam cofficient (W/m2.K)\n",
+ "Tsat = 100. #Saturation temperature (deg C)\n",
+ "A = 1.0\n",
+ "\n",
+ "#Calculations\n",
+ "Twa = 110.\n",
+ "Ri = 1./(hi*A)\n",
+ "Rw = tw/(k*A)\n",
+ "Riw = Ri + Rw\n",
+ "\n",
+ "xx = 1.2\n",
+ "while(xx > 0.1):\n",
+ " delT = Twa - Tsat \n",
+ " ho = 5.56*delT**3\n",
+ " q = ho*delT\n",
+ " Ro = 1./(ho*A)\n",
+ " Rs = Riw + Ro\n",
+ " delTc = Ro*(Tjs-Tsat)/Rs\n",
+ " Tw = Tsat + delTc\n",
+ " xx = abs(Tw-Twa)\n",
+ " Twa = (Tw + Twa)/2.\n",
+ "#Results vary because more iterations are done\n",
+ "#Result\n",
+ "print \"Ri:%5.2e\" %Ri\n",
+ "print \"Rw:%5.2e\" %Rw\n",
+ "print \"Ro:%5.2e\" %Ro\n",
+ "print 'Wall Temperature: %4.1f'%Tw\n",
+ "print \"Boiling Heat Transfer Coefficient\", round(ho,1),\"W/(m2.K)\"\n",
+ "print \"Results vary because more iterations are done\"\n",
+ "print 'The answers are different than book because book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Ri:9.80e-05\n",
+ "Rw:1.97e-04\n",
+ "Ro:3.28e-04\n",
+ "Wall Temperature: 108.2\n",
+ "Boiling Heat Transfer Coefficient 3051.0 W/(m2.K)\n",
+ "Results vary because more iterations are done\n",
+ "The answers are different than book because book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.8-2 Page Number 265"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Condensation on Vertical Tubes\n",
+ "from math import pi\n",
+ "#Variable Declaration English Units\n",
+ "Ps, Tsat = 10., 193 #Saturation Pressure ans temperature, psia and \u00b0F\n",
+ "L , do = 1., 1./12 #Lenght and ouside diameter of the tube, m\n",
+ "Tw = 187. #Wall temperature, \u00b0F\n",
+ "hv, hl = 1143.3, 161. #Latent heat of evaporation and enthalpy of liquid \n",
+ "vl,vg = 0.01657, 40.95 #specific volume of liquid and vapor, ft3/lbm\n",
+ "mul = 0.324 #Viscosity of liquid, lbm/(ft.hr)\n",
+ "kl = 0.390 #Thermal conductivity of liquid, Btu/(ft.hr.\u00b0F)\n",
+ "g = 32.174 #Gravitational acceleration, ft/s2\n",
+ "\n",
+ "#Calculation English Units\n",
+ "g = g*3600**2\n",
+ "mul = mul*2.4191\n",
+ "rhol , rhov = 1./vl , 1./vg\n",
+ "Tf = (Tw + Tsat)/2.\n",
+ "hfg = hv-hl\n",
+ "delT = Tsat - Tw\n",
+ "Nu = 1.13*(rhol**2*g*hfg*L**3/(mul*kl*delT))**(1./4)\n",
+ "h=Nu*kl/L\n",
+ "A = pi*do*L\n",
+ "Q = h*A*delT\n",
+ "mdot = Q/hfg\n",
+ "Re = 4*mdot/(pi*do*mul)\n",
+ "print \"Average heat transfer coefficient\",round(h,2),\"Btu/(h.ft2.\u00b0F)\"\n",
+ "print \"Reynolds number is,\", round(Re,1), \"hence flow is laminar\"\n",
+ "\n",
+ "#Variable Declaration SI Units\n",
+ "Ps, Tsat = 68.9, 89.44\n",
+ "L , do = 0.305, 0.0254\n",
+ "Tw = 86.11\n",
+ "hv, hl = 2657800, 374600\n",
+ "vl,vg = 0.01657/16, 40.95/16\n",
+ "mul = 3.24e-4\n",
+ "kl = 0.675\n",
+ "g = 9.806\n",
+ "\n",
+ "#Calculation SI Units\n",
+ "\n",
+ "rhol , rhov = 1./vl , 1./vg\n",
+ "Tf = (Tw + Tsat)/2.\n",
+ "hfg = hv-hl\n",
+ "delT = Tsat - Tw\n",
+ "Nu = 1.13*(rhol**2*g*hfg*L**3/(mul*kl*delT))**(1./4)\n",
+ "h=Nu*kl/L\n",
+ "A = pi*do*L\n",
+ "Q = h*A*delT\n",
+ "mdot = Q/hfg\n",
+ "Re = 4*mdot/(pi*do*mul)\n",
+ "\n",
+ "#Results\n",
+ "print \"Average heat transfer coefficient\",round(h,2),\"W/(m2.K)\"\n",
+ "print \"Reynolds number is,\", round(Re,1), \"hence flow is laminar\"\n",
+ "print 'The answers are different than book because book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Average heat transfer coefficient 2353.51 Btu/(h.ft2.\u00b0F)\n",
+ "Reynolds number is, 73.4 hence flow is laminar\n",
+ "Average heat transfer coefficient 13354.93 W/(m2.K)\n",
+ "Reynolds number is, 73.3 hence flow is laminar\n",
+ "The answers are different than book because book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.9-1 Page Number 271"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Temperature Correction Factor for a Heat Exchanger\n",
+ "\n",
+ "#Variable Declration\n",
+ "mdotc = 2.52 #Mass flow rate of water, kg/s \n",
+ "Tci, Tco = 21.1, 54.4 #Inlet and outlet temperature of cold water, \u00b0C\n",
+ "Thi, Tho = 115.6, 48.9 #Inlet and outlet temperature of hot water, \u00b0C\n",
+ "Ao = 9.3 #Outside surface area of exchanger, m2\n",
+ "Cp = 4187. #mean specific heat of water, J/(kg.K)\n",
+ "\n",
+ "#Calculations\n",
+ "Qc= mdotc*Cp*(Tco-Tci)\n",
+ "delT1 = Thi-Tco\n",
+ "delT2 = Tho-Tci\n",
+ "delTLM = (delT1-delT2)/log(delT1/delT2)\n",
+ "Z = (Thi-Tho)/(Tco-Tci)\n",
+ "Y = (Tco-Tci)/(Thi-Tci)\n",
+ " #PART \"A\" 1-2 pass \n",
+ "Fta = 0.74 # correction factor for Z and Y values in part a from chart\n",
+ "delTMa = Fta*delTLM\n",
+ "Uoa = Qc/(Ao*delTMa)\n",
+ " #PArt \"B\" 2-4\n",
+ "Ftb = 0.94 # correction factor for Z and Y values in part b from chart\n",
+ "delTMb = Ftb*delTLM\n",
+ "Uob = Qc/(Ao*delTMb)\n",
+ "#Result\n",
+ "print \"PART A\"\n",
+ "print \"Mean Temperature Difference for 1-2 pass Heat Exchanger\", round(delTMa,1),\"\u00b0C or K\"\n",
+ "print \"Required Overall outside Heat Transfer coefficient for 1-2 pass\", round(Uoa,1),\"W/(m.K)\"\n",
+ "\n",
+ "print \"PART B\"\n",
+ "print \"Mean Temeperature Difference for 2-4 pass Heat Exchanger\", round(delTMb,1),\"\u00b0C or K\"\n",
+ "print 'The answers are different than book because book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "PART A\n",
+ "Mean Temperature Difference for 1-2 pass Heat Exchanger 31.3 \u00b0C or K\n",
+ "Required Overall outside Heat Transfer coefficient for 1-2 pass 1206.2 W/(m.K)\n",
+ "PART B\n",
+ "Mean Temeperature Difference for 2-4 pass Heat Exchanger 39.8 \u00b0C or K\n",
+ "The answers are different than book because book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.9-2 Page Number 275"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Effectiveness of Heat Exchanger\n",
+ "from math import exp\n",
+ "#Variable Declaration\n",
+ "mc, mh = 0.667, 2.85 #mass flow rate of cold water and hot oil,kg/s\n",
+ "cpc, cph = 4192., 1890. #Specific heat of cold water and hot oil,kJ/(kg.K)\n",
+ "Tci,Thi = 308., 383. #Inlet temperatures of cold water and hot oil, \u00b0C\n",
+ "U,A = 300., 15. #Overall heat transfer coefficient W/(m2.K) and Surface area, m2\n",
+ "\n",
+ "#Calcualtions\n",
+ "Cc = mc*cpc #(m*cp)C\n",
+ "Ch = mh*cph #(m*cp)H\n",
+ "if Cc > Ch:\n",
+ " Cmin = Ch\n",
+ " Cmax = Cc\n",
+ "else:\n",
+ " Cmin = Cc\n",
+ " Cmax = Ch\n",
+ "\n",
+ "NTU = U*A/Cmin\n",
+ "Cminbymax = Cmin/Cmax\n",
+ "\n",
+ "#Using figure \"a\" on page 274\n",
+ "Enum = 1. - exp(-NTU*(1-Cminbymax))\n",
+ "Eden = 1. - Cminbymax*exp(-NTU*(1-Cminbymax))\n",
+ "Tco= 350.\n",
+ "epsilon = Enum/Eden\n",
+ "\n",
+ "Q = epsilon*Cmin*(Thi-Tci)\n",
+ "Tco = Q/Cmin + Tci\n",
+ "\n",
+ "#Results \n",
+ "print \"Heat Tranfer Rate\", round(Q,2),\"W\" \n",
+ "print \"Outlet Temperature of cold fluid\", round(Tco,1),\"K\"\n",
+ "print 'The answers are different than book because book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "0.708413929951\n",
+ "Heat Tranfer Rate 148557.8 W\n",
+ "Outlet Temperature of cold fluid 361.1 K\n",
+ "The answers are different than book because book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.10-1 Page Number 279"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Radiation to Metal Tube\n",
+ "import scipy.constants as sc\n",
+ "from math import pi\n",
+ "\n",
+ "#Variable Declaration\n",
+ "do, L = 0.0254, 0.61 #Outside diameter of tube, and length, m \n",
+ "Ts = 588. #Surface temperature of the tube, K\n",
+ "ep = 0.6 #emmisivity of metal tube at 1088 K\n",
+ "Te = 1088. #Temperature of surrounding air, K\n",
+ "\n",
+ "#Calculations \n",
+ " #SI Units\n",
+ "A = pi*do*L\n",
+ "Q = ep*A*5.676e-8*(Ts**4-Te**4)\n",
+ "\n",
+ "print \"Heat Transferred to tube from the surrounding in SI units\", round(Q,1), \"W\"\n",
+ "\n",
+ "#Variable Declaration\n",
+ "do, L = 1./12, 2.0 #Outside diameter of tube, and length, ft \n",
+ "Ts = 600 #Surface temperature of the tube, \u00b0F\n",
+ "ep = 0.6 #emmisivity of metal tube at 1500 \u00b0F\n",
+ "Te = 1500. #Temperature of surrounding air, \u00b0F\n",
+ "\n",
+ "#Calculations \n",
+ " #English Units\n",
+ "A = pi*do*L\n",
+ "Q = ep*A*0.1714e-8*((Ts+460)**4-(Te+460)**4)\n",
+ "print \"Heat Transferred to tube from the surrounding in English units\", round(Q,1), \"Btu/hr\"\n",
+ "print 'The answers are different than book, because of book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Heat Transferred to tube from the surrounding in SI units -2124.7 W\n",
+ "Heat Transferred to tube from the surrounding in English units -7266.9 Btu/hr\n",
+ "The answers are different than book, because of book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.10-2 Page Number 280"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Combined Covection Plus Radiation from a Tube\n",
+ "import scipy.constants as sc\n",
+ "from math import pi\n",
+ "\n",
+ "#Variable declaration\n",
+ "do, L = 0.0254, 0.61 #Outside diameter of tube, and length, m \n",
+ "Ts = 588. #Surface temperature of the tube, K\n",
+ "ep = 0.6 #emmisivity of metal tube at 1088 K\n",
+ "Te = 1088. #Temperature of surrounding air, K\n",
+ "\n",
+ "#Calculations\n",
+ "A = pi*do*L\n",
+ "hc = 1.32*((Te-Ts)/do)**0.25\n",
+ "hr = ep*5.676e-8*(Te**4-Ts**4)/(Te-Ts)\n",
+ "Q = A*(hc + hr)*(Ts-Te)\n",
+ "#Results\n",
+ "print \"Convective Heat Transfer Coefficient\",round(hc,2)\n",
+ "print \"Radiation Heat Transfer Coefficient\",round(hr,2)\n",
+ "print \"Heat Transferred to the tube from the surrounding\", round(Q,2), \"W\"\n",
+ "print 'The answers are different than book, because of book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Convective Heat Transfer Coefficient 15.64\n",
+ "Radiation Heat Transfer Coefficient 87.3\n",
+ "Heat Transferred to the tube from the surrounding -2505.23 W\n",
+ "The answers are different than book, because of book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 16
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.11-1 Page Number 285"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Radiation between Parallel Plated\n",
+ "import scipy.constants as sc\n",
+ "\n",
+ "#Variable declaration \n",
+ "ep1, ep2 = 0.8, 0.7 #emmissivities of plate 1 and 2\n",
+ "T1, T2 = 866.5, 588.8 #Temperatures of surface 1 and 2, K\n",
+ "\n",
+ "#Calculations PART \"SI\"\n",
+ "q12 = 5.676e-8*(T1**4-T2**4)/(1./ep1+1./ep2-1.)\n",
+ "q12b = 5.676e-8*(T1**4-T2**4)\n",
+ "#Results\n",
+ "print \"SI Units\"\n",
+ "print \"a) Heat Flux from Plate 1 to Plate 2\", round(q12,2),\"W/m2\"\n",
+ "print \"b) Heat Flux from Plate 1 to Plate 2 when both surfaces are balck body\", round(q12b,2),\"W/m2\"\n",
+ "#Variable declaration \n",
+ "\n",
+ "\n",
+ "#Calculations PART \"British\"\n",
+ "ep1, ep2 = 0.8, 0.7 #emmissivities of plate 1 and 2\n",
+ "T1, T2 = 1100, 600 #Temperatures of surface 1 and 2, \u00b0F\n",
+ "\n",
+ "q12 = 0.1714e-8*((T1+460)**4-(T2+460)**4)/(1./ep1+1./ep2 -1.)\n",
+ "q12b = 0.1714e-8*((T1+460)**4-(T2+460)**4)\n",
+ "\n",
+ "#Results\n",
+ "print \"English Units\"\n",
+ "print \"a) Heat Flux from Plate 1 to Plate 2\", round(q12,2),\"Btu/ft2.h\"\n",
+ "print \"b) Heat Flux from Plate 1 to Plate 2 when both surfaces are balck body\", round(q12b,2),\"Btu/ft2.h\"\n",
+ "print 'The answers are different than book, because of book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "SI Units\n",
+ "a) Heat Flux from Plate 1 to Plate 2 14998.18 W/m2\n",
+ "b) Heat Flux from Plate 1 to Plate 2 when both surfaces are balck body 25175.52 W/m2\n",
+ "English Units\n",
+ "a) Heat Flux from Plate 1 to Plate 2 4758.29 Btu/ft2.h\n",
+ "b) Heat Flux from Plate 1 to Plate 2 when both surfaces are balck body 7987.12 Btu/ft2.h\n",
+ "The answers are different than book, because of book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.11-7 Page Number 296"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Gas Radiation to a Furnace Enclosure\n",
+ "import scipy.constants as sc\n",
+ "\n",
+ "#Variable Declaration\n",
+ "L = 0.3 #Inside length of cubical furnace, m \n",
+ "P = 1. #Pressure of gas inside furnace, atm\n",
+ "Tg = 1100. #Temperature of gas, K\n",
+ "Tw = 600. #Temperature of furnace wall, K \n",
+ "xco2 = 0.1 #mole fraction of CO2 \n",
+ "\n",
+ "#Calculations\n",
+ "Lbm = .60*L\n",
+ "pco2 = P*xco2\n",
+ "pgL = pco2*Lbm\n",
+ " #from figure 4.11-10\n",
+ "epg = 0.064\n",
+ "alphag600 = pgL*(Tw/Tg)\n",
+ "alphaguc = 0.048\n",
+ "alphagc = alphaguc*(Tg/Tw)**0.65\n",
+ "q = sc.sigma*(epg*Tg**4-alphagc*Tw**4)\n",
+ "A = L*L*6\n",
+ "Q = q*A\n",
+ "\n",
+ "#Results\n",
+ "print \"Heat Transfer rate in Gas radiation\", round(Q/1000,3), \"kW\"\n",
+ "print 'The answer is different than book, because of book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Heat Transfer rate in Gas radiation 2.587 kW\n",
+ "The answers are different than book, because of book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 19
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.12-1 Page Number 298"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Heating a Non-Newtonian Fluid in Laminar Flow\n",
+ "from scipy.optimize import root\n",
+ "\n",
+ "#Variable Declaration\n",
+ "mdot = 7.56e-2 #Mass flow rate of non-Newtonian fluid, kg/s\n",
+ "di = 0.0254 #Inside Diameter of the tube, m\n",
+ "L = 1.524 #Length of the tube, m\n",
+ "Ti = 37.8 #Inlet temperature of the fluid, \u00b0C \n",
+ "Tw = 93.3 #Inside wall temperature, \u00b0C\n",
+ "rho = 1041. #density of fluid, kg/m3\n",
+ "cpm = 2.093e3 #specific heat of fluid, J/(kg.K)\n",
+ "k = 1.212 #Thermal conductivity of fluid, W/(m.K) \n",
+ "n = 0.4 #Rheological constants for fluid\n",
+ "K378 = 139.9 \n",
+ "K933 = 62.5\n",
+ "\n",
+ "#Calculations\n",
+ "Tbo = 54.4\n",
+ "Tb = (Ti + Tbo)/2.0\n",
+ "slope = (log(K378)-log(K933))/(Ti-Tw)\n",
+ "c = log(139.9)-slope*Ti\n",
+ "Kb = exp(slope*Tb+c)\n",
+ "Kw = exp(slope*Tw+c)\n",
+ "delta = (3.*n+1)/(4*n)\n",
+ "NGz = mdot*cpm/(k*L)\n",
+ "gamabw = Kb/Kw\n",
+ "Nu = 1.75*delta**(1./3)*NGz**(1./3)*gamabw**0.14\n",
+ "\n",
+ "ha = k*Nu/di\n",
+ "Tk = (2.*Tw-Ti)/2.\n",
+ "mT = 1./2\n",
+ "\n",
+ "f = lambda T: mdot*cpm*(T-Ti)-ha*pi*di*L*(Tk-mT*T)\n",
+ "sol = root(f,25)\n",
+ "Tbo = sol.x[0]\n",
+ "\n",
+ "#Results\n",
+ "print \"Gratez Number\", round(NGz,1)\n",
+ "print \"Heat Transfer Coefficient\", round(ha,1),\"W/m2.K\"\n",
+ "print \"Oultlet bulk temperature of the fluid\",round(Tbo,1),\"\u00b0C\" \n",
+ "print 'The answers are different than book, because of book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Gratez Number 85.7\n",
+ "Heat Transfer Coefficient 450.5 W/m2.K\n",
+ "Oultlet bulk temperature of the fluid 54.2 \u00b0C\n",
+ "The answers are different than book, because of book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ },
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Example 4.13-1 Page Number 301"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Heat Transfer Coefficient in Agitated Vessel\n",
+ "\n",
+ "#Variable Declaration\n",
+ "Dt = 1.83 #Diameter of agitated vessel,m\n",
+ "Tl = 300. #Temperature of liquid to be heated, K\n",
+ "Da = 0.61 #Diameter of agitator vessel,m\n",
+ "N = 100. #RPM of agitator\n",
+ "Tw = 355.4 #Wall temperature of Jaket, K\n",
+ "rho = 961. #Density of liquid, kg/m3\n",
+ "cp = 2500. #Density of liquid, K/(kg.K)\n",
+ "k = 0.173 #Thermal conductivity of liquid, W/(m.K)\n",
+ "mu = 1.0 #Viscosity of liquid at 300K, Pa.s\n",
+ "muw = 0.084 #Viscosity of liquid at Wall temperature 355.5K, Pa.s\n",
+ "\n",
+ "#Calculations\n",
+ "Nre = Da**2*(N/60)*rho/mu\n",
+ "Npr = cp*mu/k\n",
+ "#for equation 4.13-1 a = 0.74, b=2/3\n",
+ "a = 0.74\n",
+ "b = 2./3\n",
+ "Nu = a*Nre**b*Npr**(1./3)*(mu/muw)**0.14\n",
+ "h = Nu*k/Dt\n",
+ "\n",
+ "#Results\n",
+ "print 'Reynolds number is %3.0f'%Nre\n",
+ "print 'Prandtl number is %5.0f'%Npr\n",
+ "print \"Heat transfer coefficient to the wall of jacket\",round(h,1),\"W/(m2.K)\"\n",
+ "print 'The answers are different than book, because of book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Reynolds number is 596\n",
+ "Prandtl number is 14451\n",
+ "Heat transfer coefficient to the wall of jacket 170.7 W/(m2.K)\n",
+ "The answers are different than book, because of book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 29
+ },
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Example 4.13-2 Page Number 306"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Fin efficiency and Heat Loss from Fin\n",
+ "\n",
+ "#Variable Declaration\n",
+ "k = 222. #W/(m.K)\n",
+ "r1 = 0.04 #Outer radius of tube, m\n",
+ "L = 0.04 #Fin length, m \n",
+ "To = 523.2 #Fin base temperature, K\n",
+ "Ta = 343.2 #Surrounding Temperature, K\n",
+ "t = 2./1000 #Thickness of fin, m\n",
+ "h = 30. #Surrounding convective coefficient, W/(m2.K)\n",
+ "\n",
+ "#Calculation\n",
+ "Lc = L + t/2\n",
+ "asbc = Lc*(h/k*t)**0.5\n",
+ "param = (Lc+r1)/r1\n",
+ "#From fig4.13-5 b for parameter and abscisa value eff = 0.89\n",
+ "eff = 0.89\n",
+ "Afc = 2*pi*((Lc+r1)**2-r1**2)\n",
+ "qf = eff*h*Afc*(To-Ta)\n",
+ "\n",
+ "#Result\n",
+ "print \"Efficiency of the fin is\", round(eff,4)\n",
+ "print \"Rate of Heat Loss\", round(qf,1),\"W\"\n",
+ "print 'The answers are different than book, because of book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Efficiency of the fin is 0.89\n",
+ "Rate of Heat Loss 149.8 W\n"
+ ]
+ }
+ ],
+ "prompt_number": 30
+ },
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Example 4.15-1 Page Number 313"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Steady State Heat Conduction in Two Directions\n",
+ "import numpy as np\n",
+ "\n",
+ "#Variable Declaration\n",
+ "D = 8.0 #Ouside dimention of square, m\n",
+ "Hi = 4.0 #Inside Height of chamber, m\n",
+ "Wi = 2.0 #Inside width of chamber, m\n",
+ "Ti = 600.0 #Inside Temperature of chamber, K\n",
+ "To = 300.0 #Outside Temperature of chamber, K\n",
+ "k = 1.5 #Thermal conductivity of material, W/(m.K)\n",
+ "Gl = Gw = 1.0 #Grid size in Height and width Directions, m\n",
+ "L = 1.0 #Length of Chamber, m\n",
+ "\n",
+ "#Calculations\n",
+ "np.set_printoptions(precision=1)\n",
+ "#Column indices used are one less than used in book\n",
+ "T0 = np.zeros(3)\n",
+ "T1 = np.zeros(3)\n",
+ "T2 = np.zeros(6)\n",
+ "T3 = np.zeros(6)\n",
+ "T4 = np.zeros(6)\n",
+ "T5 = np.zeros(6)\n",
+ " \n",
+ "def printT():\n",
+ " print 'Temperature at various nodes are as follows'\n",
+ " print 'T 2 3 4 5'\n",
+ " print 1,T1[1:2]\n",
+ " print 2,T2[1:2]\n",
+ " print 3,T3[1:5]\n",
+ " print 4,T4[1:5]\n",
+ "\n",
+ "\n",
+ "#Initialize\n",
+ "T0[2]=T1[2]=T2[2]=T2[3]=T2[4]=T2[5]=600. #INNER NODES \n",
+ "T0[0]=T1[0]=T2[0]=T3[0]=T4[0]=T5[0]=T5[1]=T5[2]=T5[3]=T5[4]=T5[5]=300 #outer nodes\n",
+ "T1[1]=T3[3]=450.\n",
+ "T2[1]=T3[1]=T3[2]=T4[4]=400.\n",
+ "T3[4]=500.\n",
+ "T4[1]=325.\n",
+ "T4[2]=350.\n",
+ "T4[3]=375.\n",
+ "T0[1]=T2[1]\n",
+ "T3[5]=T3[3]\n",
+ "T4[5]=T4[3]\n",
+ "\n",
+ "r = 1.2 #Initial value of residue\n",
+ "\n",
+ "#Calculations\n",
+ "while abs(r)>0.001:\n",
+ " r11 = T1[0]+T1[2]+T0[1]+T2[1]-4*T1[1]\n",
+ " T1[1]=(T1[0]+T1[2]+T0[1]+T2[1])/4\n",
+ " r21 = (T2[0]+T2[2]+T1[1]+T3[1]-4*T2[1])\n",
+ " T2[1]=T0[1]=(T2[0]+T2[2]+T1[1]+T3[1])/4\n",
+ " r31=(T3[0]+T3[2]+T2[1]+T4[1]-4*T3[1])\n",
+ " T3[1]=(T3[0]+T3[2]+T2[1]+T4[1])/4\n",
+ " r32 = T2[2]+T4[2]+T3[1]+T3[3]-4*T3[2]\n",
+ " T3[2] =(T2[2]+T4[2]+T3[1]+T3[3])/4\n",
+ " r33 = T3[2]+T3[4]+T2[3]+T4[3]-4*T3[3]\n",
+ " T3[3]=T3[5]=(T3[2]+T3[4]+T2[3]+T4[3])/4\n",
+ " r34 = T3[3]+T3[5]+T2[4]+T4[4]-4*T3[4]\n",
+ " T3[4]=(T3[3]+T3[5]+T2[4]+T4[4])/4\n",
+ " r41 = T4[0]+T4[2]+T3[1]+T5[1]-4*T4[1]\n",
+ " T4[1]=(T4[0]+T4[2]+T3[1]+T5[1])/4\n",
+ " r42 = T4[1]+T4[3]+T3[2]+T5[2]-4*T4[2]\n",
+ " T4[2]=(T4[1]+T4[3]+T3[2]+T5[2])/4\n",
+ " r43 = T4[2]+T4[4]+T3[3]+T5[3]-4*T4[3]\n",
+ " T4[3]=T4[5]=(T4[2]+T4[4]+T3[3]+T5[3])/4\n",
+ " r44 = T4[3]+T4[5]+T3[4]+T5[4]-4*T4[4]\n",
+ " T4[4] = (T4[3]+T4[5]+T3[4]+T5[4])/4\n",
+ " r = r11+r21+r31+r32+r33+r34+r41+r42+r43+r44\n",
+ " \n",
+ "#Results\n",
+ "print 'Recidue at convergence %10.8f'%r\n",
+ "printT()\n",
+ "Q1 = 4*k*(0.5*(T1[2]-T1[1]) + (T2[2]-T2[1]) + (T2[2]-T3[2]) + (T2[3]-T3[3]) + 0.5*(T2[4]-T3[4]))\n",
+ "Q2 = 4*k*(0.5*(T1[1]-T1[0]) + (T2[1]-T2[0]) + (T3[1]-T3[0]) + (T4[1]-T4[0]) + (T4[1]-T5[1])+(T4[2]-T5[2])+(T4[3]-T5[3])+0.5*(T4[4]-T5[4]))\n",
+ "print 'Heat transfer from inner surface %5.1f into the solid'%Q1\n",
+ "print 'Heat transfer from outer surface %5.1f out from solid'%Q2\n",
+ "Qavg = (Q1+Q2)*0.5\n",
+ "print \"Average Heat loss per unit chamber length\",round(Qavg,1),\"W/m\"\n",
+ "print 'Book is using rounded values of temperature throughout the iterations hence answers are different'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Recidue at convergence 0.00090090\n",
+ "Temperature at various nodes are as follows\n",
+ "T 2 3 4 5\n",
+ "1 [ 440.3]\n",
+ "2 [ 430.6]\n",
+ "3 [ 382. 459.2 483.7 489.5]\n",
+ "4 [ 338.2 370.9 386.3 390.5]\n",
+ "Heat transfer from inner surface 3369.8 into the solid\n",
+ "Heat transfer from outer surface 3369.8 out from solid\n",
+ "Average Heat loss per unit chamber length 3369.8 W/m\n",
+ "Book is using rounded values of temperature throughout the iterations hence answers are different\n"
+ ]
+ }
+ ],
+ "prompt_number": 19
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter05.ipynb b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter05.ipynb new file mode 100755 index 00000000..163b766b --- /dev/null +++ b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter05.ipynb @@ -0,0 +1,895 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:2e72bac4245ea0d7ffb20474fbd7477dd537a5d43e72a324996bb189620d2ad0"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 5: Principles of Unsteady-State Heat Transfer"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.2-1, Page number 333"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Cooling of a Steel Ball\n",
+ "from math import pi, exp\n",
+ "\n",
+ "\n",
+ "#Variable declaration #English Units\n",
+ "r = 1./12 #Radius of a Steel Ball, ft\n",
+ "Tbi = 800. #Initial uniform temperature of the steel ball, \u00b0F\n",
+ "Tinf = 250. #Temeperature of a constant temperature bath, \u00b0F\n",
+ "h = 2.0 #Convective Heat Transfer Coefficient, Btu/(h.ft2\u00b0F)\n",
+ "t = 1. #Time at which temperature of the ball is to be determined, s\n",
+ "k = 25. #Thermal conductivity of the steel ball, Btu/(h.ft\u00b0F)\n",
+ "rho = 490. #Density of a steel ball, lbm/ft3\n",
+ "cp = 0.11 #Specific heat of steel ball, Btu/(lbm.\u00b0F)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "x1 = r/3\n",
+ "NBi = h*x1/k\n",
+ "A = 4*pi*r**2\n",
+ "V = 4*pi*r**3/3.\n",
+ "tau = h*A/(cp*rho*V)\n",
+ "Tb = Tinf + (Tbi - Tinf)*exp(-tau*t)\n",
+ "#Result\n",
+ "print \"Temperature of ball after one hour: \", round(Tb),\"\u00b0F\"\n",
+ "\n",
+ "\n",
+ "#Variable declaration # SI Units\n",
+ "\n",
+ "r = 0.0254 #Radius of a Steel Ball, m\n",
+ "Tbi = 699.9 #Initial uniform temperature of the steel ball, K\n",
+ "Tinf = 394.3 #TEmeperature of a constant temperature bath, K\n",
+ "h = 11.36 #Convective Heat Transfer Coefficient, W/(m2K)\n",
+ "t = 3600. #Time at which temperature of the ball is to be determined, s\n",
+ "k = 43.3 #Thermal conductivity of the steel ball, W/(mK)\n",
+ "rho = 7849. #Density of a steel ball, kg/m3\n",
+ "cp = 460.6 #Specific heat of steel ball, J/(kg.K)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "x1 = r/3\n",
+ "NBi = h*x1/k\n",
+ "A = 4*pi*r**2\n",
+ "V = 4*pi*r**3/3.\n",
+ "tau = h*A/(cp*rho*V)\n",
+ "Tb = Tinf + (Tbi - Tinf)*exp(-tau*t)\n",
+ "#Result\n",
+ "print \"Temperature of ball after one hour: \", round(Tb,1),\"\u00b0C\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Temperature of ball after one hour: 395.0 \u00b0F\n",
+ "Temperature of ball after one hour: 474.6 \u00b0C\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.2-2, Page Number 334"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Total amount of heat in cooling\n",
+ "from math import pi \n",
+ "\n",
+ "#Variable declaration\n",
+ "r = 0.0254 #Radius of a Steel Ball, m\n",
+ "Tbi = 699.9 #Initial uniform temperature of the steel ball, K\n",
+ "Tinf = 394.3 #TEmeperature of a constant temperature bath, K\n",
+ "h = 11.36 #Convective Heat Transfer Coefficient, W/(m2K)\n",
+ "t = 3600. #Time at which temperature of the ball is to be determined, s\n",
+ "k = 43.3 #Thermal conductivity of the steel ball, W/(mK)\n",
+ "rho = 7849. #Density of a steel ball, kg/m3\n",
+ "cp = 460.6 #Specific heat of steel ball, J/(kg.K)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "x1 = r/3\n",
+ "NBi = h*x1/k\n",
+ "A = 4*pi*r**2\n",
+ "V = 4*pi*r**3/3.\n",
+ "tau = cp*rho*V/(h*A)\n",
+ "Q = cp*rho*V*(Tbi-Tinf)*(1-exp(-t/tau))\n",
+ "#Result\n",
+ "\n",
+ "print 'Amount of Heat Transffered %6.4e'%(Q),\"J\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Amount of Heat Transffered 5.5901e+04 J\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.3-1, Page number 336"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Freezing Temperature in the ground\n",
+ "from math import pi, erfc, exp\n",
+ "\n",
+ "# Variable declaration\n",
+ "Ti = 15.6 #Earths constant temperature, degC\n",
+ "Tc = -17.8 #Cold wave temperature, deg C\n",
+ "h = 11.36 #Convective heat transfer coefficient, W/(m2K)\n",
+ "alpha = 4.65e-7 #THermal diffusivity of soil, m2/s\n",
+ "k = 0.865 #Thermal conductivity of soil, W/(mK)\n",
+ "t = 5*3600 #Time in seconds\n",
+ "x = 0. #Surface position , m\n",
+ "T0 = 0. #Freezing temperature for water\n",
+ "\n",
+ "# Calculation SI units\n",
+ "absc = x/(2*sqrt(alpha*t))\n",
+ "param = h*sqrt(alpha*t)/k\n",
+ "corr = erfc(absc) - exp(param*(2*absc+param))*erfc(absc+param)\n",
+ "T = Ti + (Tc - Ti)*(erfc(absc) - exp(param*(2*absc+param))*erfc(absc+param))\n",
+ "\n",
+ "ordi = (T0-Ti)/(Tc-Ti)\n",
+ "abscOrd = .16\n",
+ "x0 = 2*sqrt(alpha*t)*abscOrd\n",
+ "\n",
+ "#Results\n",
+ "print \"(a) Temperature of the surface after 5 hour:\", round(T,1), \"\u00b0C\"\n",
+ "print \"(b) Location of Freezing Temperature after 5 hour:\",round(x0,4),\"m\"\n",
+ "\n",
+ "\n",
+ "# Variable declaration English units\n",
+ "Ti = 60. #Earths constant temperature, degF\n",
+ "Tc = -0. #Cold wave temperature, deg F\n",
+ "h = 2. #Convective heat transfer coefficient, Btu/(ft2Fhr)\n",
+ "alpha = 0.018 #THermal diffusivity of soil, ft2/hr\n",
+ "k = 0.5 #Thermal conductivity of soil, Btu/(ft F)\n",
+ "t = 5 #Time in hr\n",
+ "x = 0. #Surface position , ft\n",
+ "T0 = 32. #Freezing temperature for water\n",
+ "\n",
+ "# Calculation SI units\n",
+ "absc = x/(2*sqrt(alpha*t))\n",
+ "param = h*sqrt(alpha*t)/k\n",
+ "corr = erfc(absc) - exp(param*(2*absc+param))*erfc(absc+param)\n",
+ "T = Ti + (Tc - Ti)*(erfc(absc) - exp(param*(2*absc+param))*erfc(absc+param))\n",
+ "\n",
+ "ordi = (T0-Ti)/(Tc-Ti)\n",
+ "abscOrd = .16\n",
+ "x0 = 2*sqrt(alpha*t)*abscOrd\n",
+ "\n",
+ "#Result\n",
+ "print \"(a) Temperature of the surface after 5 hour:\", round(T,1), \"\u00b0F\"\n",
+ "print \"(b) Location of Freezing Temperature after 5 hour:\",round(x0,4),\"ft\"\n",
+ "print 'The answers are different than book, because of book uses rounded numbers and rounded values of \\ncomplimentary error function whereas code used built in erfc function'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "(a) Temperature of the surface after 5 hour: -5.2 \u00b0C\n",
+ "(b) Location of Freezing Temperature after 5 hour: 0.0293 m\n",
+ "(a) Temperature of the surface after 5 hour: 22.7 \u00b0F\n",
+ "(b) Location of Freezing Temperature after 5 hour: 0.096 ft\n",
+ "The answers are different than book, because of book uses rounded numbers and rounded values of \n",
+ "complimentary error function whereas code used built in erfc function\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.3-2, Page number 338"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Heat Conduction in the slab\n",
+ "\n",
+ "# Variable declaration\n",
+ "x1 = .0462 #Thickness of the slab, m\n",
+ "T0 = 277.6 #Uniform temperature of the slab, K\n",
+ "T1 = 297.1 #Ambient temperature of the fluid, K\n",
+ "h = 8.52 #Convective heat transfer coefficient, W/m2.K\n",
+ "t = 5*3600 #Time, s\n",
+ "rho = 998. #Density of H2O at 4 deg C (kg/m3)\n",
+ "k = 0.197 #Thermal conductivity of butter, W/m.K\n",
+ "cp = 2300 #Specific heat of butter, J/kg.K\n",
+ "\n",
+ " \n",
+ "# Calculation\n",
+ "alpha = k/(rho*cp) #Thermal diffusivity, m2/s\n",
+ "\n",
+ "#PART A Calculation of temperature at the surface\n",
+ "param = k/(h*x2)\n",
+ "X = alpha*t/x2**2\n",
+ "x = 0.0462 #Distance from surface at which temperature needs to be calculated, m\n",
+ "n = x/x2\n",
+ "Y = 0.25 #From fig 5.3-5 \n",
+ "T = T1 - Y*(T1-T0)\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"Answers to part A\"\n",
+ "print \"Paramenter m for fig 5.3-5:\", round(param,3)\n",
+ "print \"Abscisa X for fig 5.3-2:\", round(X,3) \n",
+ "print \"Parameter n for fig 5.3-2:\", round(n,3)\n",
+ "print \"Temeprature of the surface at .0462 m after 5 hour\", round(T,1), \"K\", round(T-273.2,1), \"\u00b0C\"\n",
+ "\n",
+ "#PART B Calculation of temperature at 25.4 mm below the surface \n",
+ "param = k/(h*x2)\n",
+ "X = alpha*t/x2**2\n",
+ "x = 0.0208 #Distance from surface at which temperature needs to be calculated, m\n",
+ "n = x/x2\n",
+ "Y = 0.45 #From fig 5.3-5 \n",
+ "T = T1 - Y*(T1-T0)\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"Answers to part B\"\n",
+ "print \"Paramenter m for fig 5.3-5:\", round(param,3)\n",
+ "print \"Abscisa X for fig 5.3-2:\", round(X,3) \n",
+ "print \"Parameter n for fig 5.3-2:\", round(n,3)\n",
+ "print \"Temeprature of the surface at .0208 m after 5 hour\", round(T,1), \"K\", round(T-273.2,1), \"\u00b0C\"\n",
+ "\n",
+ "#PART C Calculation of temperature at 46.2 mm below the surface\n",
+ "param = k/(h*x1)\n",
+ "X = alpha*t/x1**2\n",
+ "n = x/x1\n",
+ "Y = 0.5 #From fig 5.3-5 \n",
+ "T = T1 - Y*(T1-T0)\n",
+ "\n",
+ "#Result\n",
+ "print \"Answers to part B\"\n",
+ "print \"Paramenter m for fig 5.3-5:\", round(param,2)\n",
+ "print \"Abscisa X for fig 5.3-2:\", round(X,2) \n",
+ "print \"Parameter n for fig 5.3-2:\", round(n,1)\n",
+ "print \"Temeprature of the surface at .0462 m after 5 hour\", round(T,1), \"K\", round(T-273.2,1), \"\u00b0C\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Answers to part A\n",
+ "Paramenter m for fig 5.3-5: 0.5\n",
+ "Abscisa X for fig 5.3-2: 0.724\n",
+ "Parameter n for fig 5.3-2: 1.0\n",
+ "Temeprature of the surface at .0462 m after 5 hour 292.2 K 19.0 \u00b0C\n",
+ "Answers to part B\n",
+ "Paramenter m for fig 5.3-5: 0.5\n",
+ "Abscisa X for fig 5.3-2: 0.724\n",
+ "Parameter n for fig 5.3-2: 0.45\n",
+ "Temeprature of the surface at .0208 m after 5 hour 288.3 K 15.1 \u00b0C\n",
+ "Answers to part B\n",
+ "Paramenter m for fig 5.3-5: 0.5\n",
+ "Abscisa X for fig 5.3-2: 0.72\n",
+ "Parameter n for fig 5.3-2: 0.5\n",
+ "Temeprature of the surface at .0462 m after 5 hour 287.4 K 14.2 \u00b0C\n"
+ ]
+ }
+ ],
+ "prompt_number": 21
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.3-3, Page number 342"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Transient Heat Conduction in a Can of Pea Puree\n",
+ "\n",
+ "# Variable declaration\n",
+ "D = 0.0681 #Diameter of a Can, m\n",
+ "T0 = 29.4 #Uniform temperature of the slab, deg C\n",
+ "T1 = 115.6 #Ambient temperature of the steam, deg C\n",
+ "h = 4540 #Convective heat transfer coefficient, W/m2.K\n",
+ "t = 0.75*3600 #Time, s\n",
+ "x = 0.0 #Centre of the Can, m\n",
+ "k = 0.830 #Thermal conductivity of butter, W/m.K\n",
+ "alpha = 2.007e-7 #THermal diffusivity, m2/s\n",
+ " \n",
+ "# Calculation\n",
+ "x1 = D/2.\n",
+ "n = x/x1\n",
+ "param = k/(h*x1)\n",
+ "X = alpha*t/x1**2\n",
+ "Y = 0.13 #From fig 5.3-8\n",
+ "T = T1 - Y*(T1-T0)\n",
+ " \n",
+ "#Result\n",
+ "print \"Paramenter m for fig 5.3-8:\", round(param,5)\n",
+ "print \"Abscisa X for fig 5.3-8:\", round(X,3) \n",
+ "print \"Parameter n for fig 5.3-8:\", n\n",
+ "print \"Temeprature at the centre after 0.75 hour\", round(T,1),\"\u00b0C \""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Paramenter m for fig 5.3-8: 0.00537\n",
+ "Abscisa X for fig 5.3-8: 0.467\n",
+ "Parameter n for fig 5.3-8: 0.0\n",
+ "Temeprature at the centre after 0.75 hour 104.4 \u00b0C \n"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.3-4, Page number 347"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Two-Dimensional Conduction in a Short Cylinder \n",
+ "\n",
+ "# Variable declaration\n",
+ "\n",
+ "D = 0.0681 #Diameter of a Can, m\n",
+ "H = 0.1016 #Height of a Can, m\n",
+ "T0 = 29.4 #Uniform temperature of the slab, deg C\n",
+ "T1 = 115.6 #Ambient temperature of the steam, deg C\n",
+ "h = 4540 #Convective heat transfer coefficient, W/m2.K\n",
+ "t = 0.75*3600 #Time, s\n",
+ "x = 0.0 #Centre of the Can in radial direction, m\n",
+ "y = 0.0 #Centre of the Can in axial direction, m\n",
+ "k = 0.830 #Thermal conductivity of butter, W/m.K\n",
+ "alpha = 2.007e-7 #THermal diffusivity, m2/s\n",
+ "\n",
+ "# Calculation\n",
+ "\n",
+ "x1 = D/2.\n",
+ "y1 = H/2.\n",
+ "\n",
+ "#Radial direction\n",
+ "n = x/x1\n",
+ "m = k/(h*x1)\n",
+ "X = alpha*t/x1**2\n",
+ "Yx = 0.13 #From fig 5.3-8\n",
+ "\n",
+ "print \"Prameters for Radial Direction\"\n",
+ "print \"Paramenter m for fig 5.3-8:\", round(m,5)\n",
+ "print \"Abscisa X for fig 5.3-8:\", round(X,4) \n",
+ "print \"Parameter n for fig 5.3-8:\", n\n",
+ "print \"Parameter Yx from figure 5.3-8:\", round(Yx,3)\n",
+ "\n",
+ "#Axial Direction\n",
+ "n = y/y1\n",
+ "m = k/(h*y1)\n",
+ "X = alpha*t/y1**2\n",
+ "Yy = 0.8 #From Fig 5.3.6\n",
+ "\n",
+ "print \"\\nPrameters for Axial Direction\"\n",
+ "print \"Paramenter m for fig 5.3-8:\", round(m,5)\n",
+ "print \"Abscisa X for fig 5.3-8:\", round(X,4) \n",
+ "print \"Parameter n for fig 5.3-8:\", n\n",
+ "print \"Parameter Yy from figure 5.3-8:\", round(Yy,3)\n",
+ "Yxy = Yx*Yy\n",
+ "Txy = T1 - Yxy*(T1-T0)\n",
+ "#Result\n",
+ "\n",
+ "print \"\\nThe Temperature at the Centre of short cylinder:\", round(Txy,1), \"\u00b0C\" "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Prameters for Radial Direction\n",
+ "Paramenter m for fig 5.3-8: 0.00537\n",
+ "Abscisa X for fig 5.3-8: 0.4674\n",
+ "Parameter n for fig 5.3-8: 0.0\n",
+ "Parameter Yx from figure 5.3-8: 0.13\n",
+ "\n",
+ "Prameters for Axial Direction\n",
+ "Paramenter m for fig 5.3-8: 0.0036\n",
+ "Abscisa X for fig 5.3-8: 0.21\n",
+ "Parameter n for fig 5.3-8: 0.0\n",
+ "Parameter Yy from figure 5.3-8: 0.8\n",
+ "\n",
+ "The Temperature at the Centre of short cylinder: 106.6 \u00b0C\n"
+ ]
+ }
+ ],
+ "prompt_number": 16
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.4-1, Page number 353"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Unsteady State Conduction and the Schmidt Numerical Method\n",
+ "import matplotlib.pyplot as plt\n",
+ "import copy \n",
+ "\n",
+ "#Variable declaration\n",
+ "thk = 1.0 #Thickness of slab, m\n",
+ "Ti = 100. #Initial uniform temperature of slab, \u00b0C\n",
+ "Ta = 0. #Constant Temperature of environment, \u00b0C\n",
+ "alpha = 2.0e-5 #Thermal diffusivity of slab, m2/s\n",
+ "ns = 5 #Number of slices\n",
+ "M = 2.0 #M for Schmidt numerical method\n",
+ "tmax = 6000 #Time at which temperature of the slab at various location to be calculated, s\n",
+ "#Calculation and Result\n",
+ "\n",
+ "dx = thk/ns\n",
+ "x = [0,.2,.4,.6,.8,1.]\n",
+ "dt = dx**2/(alpha*M)\n",
+ "ylim(-1.,110.)\n",
+ "xlim(0,1.1)\n",
+ "#m = tmax/dt\n",
+ "t=0\n",
+ "T = [Ti,Ti,Ti,Ti,Ti,Ti]\n",
+ "plt.plot(x,T,'ko-',label='Initial Temperature Profile')\n",
+ "T[0] = Ta\n",
+ "Tcal = [0,0,0,0,0,0]\n",
+ "for i in range(1,7,1):\n",
+ " t = int(dt*i)\n",
+ " for j in range(len(T)):\n",
+ " if j==0:\n",
+ " Tcal[j]= Ta\n",
+ " #print Tcal[j]\n",
+ " elif j>=1 and j<(len(T)-1):\n",
+ " Tcal[j]=(T[j-1]+T[j+1])/2.\n",
+ " #print T[j-1], T[j+1],Tcal[j]\n",
+ " else:\n",
+ " Tcal[j]=((M-2)*T[j]+2*T[j-1])/M\n",
+ " #print Tcal[j]\n",
+ " T = copy.copy(Tcal)\n",
+ " plt.plot(x,T, 'o-',label=str(i)+'th iteration Temp. Profile.')\n",
+ "print \"At 6000s\"\n",
+ "for i in range(1,7,1):\n",
+ " print \"Temperature of the node\",i,\"is\", round(T[i-1],2),\"\u00b0C\"\n",
+ "plt.xlabel('Node number')\n",
+ "plt.ylabel('Temperature, degC')\n",
+ "plt.legend(loc='lower right',fontsize='small' )\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "At 6000s\n",
+ "Temperature of the node 1 is 0.0 \u00b0C\n",
+ "Temperature of the node 2 is 31.25 \u00b0C\n",
+ "Temperature of the node 3 is 54.69 \u00b0C\n",
+ "Temperature of the node 4 is 78.13 \u00b0C\n",
+ "Temperature of the node 5 is 85.94 \u00b0C\n",
+ "Temperature of the node 6 is 93.75 \u00b0C\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "pyout",
+ "prompt_number": 7,
+ "text": [
+ "<matplotlib.legend.Legend at 0x8a65e30>"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nhGrs/wHG815QFkaRdwAAAABJRU5ErkJggg==\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x8959210>"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.4-2, Page number 356"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Unsteady-State Conduction Using the Digital Computer \n",
+ "\n",
+ "import copy \n",
+ "\n",
+ "#Variable declaration\n",
+ "thk = 1. #Thickness of slab, m\n",
+ "Ti = 100. #Initial uniform temperature of slab, \u00b0C\n",
+ "Ta = 0. #Constant Temperature of environment, \u00b0C\n",
+ "alpha = 2.0e-5 #Thermal diffusivity of slab, m2/s\n",
+ "ns = 20 #Number of slices\n",
+ "M = 2.0 #M for Schmidt numerical method\n",
+ "tmax = 6000 #Time at which temperature of the slab at various location to be calculated, s\n",
+ "\n",
+ "#Calculation and Result\n",
+ "dx = thk/ns\n",
+ "x = range(21)\n",
+ "dt = dx**2/(alpha*M)\n",
+ "m = tmax/dt\n",
+ "\n",
+ "t=0\n",
+ "T = [Ti,Ti,Ti,Ti,Ti,Ti,Ti,Ti,Ti,Ti,Ti,Ti,Ti,Ti,Ti,Ti,Ti,Ti,Ti,Ti,Ti]\n",
+ "T[0] = Ta\n",
+ "Tcal = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]\n",
+ "\n",
+ "for i in range(1,96,1):\n",
+ " t = int(dt*i)\n",
+ " for j in range(len(T)):\n",
+ " if j==0:\n",
+ " Tcal[j]= Ta\n",
+ " #print Tcal[j]\n",
+ " elif j>=1 and j<(len(T)-1):\n",
+ " Tcal[j]=(T[j-1]+T[j+1])/2.\n",
+ " #print T[j-1], T[j+1],Tcal[j]\n",
+ " else:\n",
+ " Tcal[j]=((M-2)*T[j]+2*T[j-1])/M\n",
+ " #print Tcal[j]\n",
+ " T = copy.copy(Tcal)\n",
+ " #plt.plot(x,T, 'o-',label=str(i)+'th iteration Temp. Profile.')\n",
+ "print \"At 6000s\"\n",
+ "\n",
+ "for i in range(1,22,4):\n",
+ " print \"Temperature of the node\",i,\"is\", round(T[i-1],2),\"\u00b0C\"\n",
+ "\n",
+ "print 'The difference in the answers is due to rounding error'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "At 6000s\n",
+ "Temperature of the node 1 is 0.0 \u00b0C\n",
+ "Temperature of the node 5 is 31.81 \u00b0C\n",
+ "Temperature of the node 9 is 58.72 \u00b0C\n",
+ "Temperature of the node 13 is 77.81 \u00b0C\n",
+ "Temperature of the node 17 is 88.64 \u00b0C\n",
+ "Temperature of the node 21 is 92.08 \u00b0C\n",
+ "The difference in the answers is due to rounding error\n"
+ ]
+ }
+ ],
+ "prompt_number": 25
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.4-3, Page number 357"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Unsteady-State conduction with Convective Boundary Conditions\n",
+ "\n",
+ "import copy \n",
+ "\n",
+ "#Variable declaration\n",
+ "thk = 1.0 #Thickness of slab, m\n",
+ "Ti = 100. #Initial uniform temperature of slab, \u00b0C\n",
+ "Ta = 0. #Constant Temperature of environment, \u00b0C\n",
+ "alpha = 2.0e-5 #Thermal diffusivity of slab, m2/s\n",
+ "ns = 5 #Number slices\n",
+ "h = 25.0 #Covective coefficient, W/m2K\n",
+ "k = 10.0 #Thermal conductivity of slab, W/mK\n",
+ "M = 2.0 #M for Schmidt numerical method\n",
+ "tmax = 6000 #Time at which temperature of the slab at various location to be calculated, s\n",
+ "\n",
+ "#Calculation and Result\n",
+ "\n",
+ "dx = thk/ns\n",
+ "N = h*dx/k\n",
+ "M = 2*N+2\n",
+ "M =round(M+1)\n",
+ "dt = dx**2/(alpha*M)\n",
+ "m = tmax/dt\n",
+ "T = [Ti,Ti,Ti,Ti,Ti,Ti]\n",
+ "Tcal = [0,0,0,0,0,0]\n",
+ "x = range(6)\n",
+ "\n",
+ "for i in range(1,13,1):\n",
+ " for j in range(len(T)):\n",
+ " if j==0:\n",
+ " Tcal[j]= (1/M)*(2*N*Ta+(M-(2*N+2))*T[j]+2*T[j+1])\n",
+ " elif j>=1 and j<(len(T)-1):\n",
+ " Tcal[j]=(1/M)*(T[j+1]+(M-2)*T[j]+T[j-1])\n",
+ " else:\n",
+ " Tcal[j]=(1/M)*((M-2)*T[j]+2*T[j-1])\n",
+ " T = copy.copy(Tcal)\n",
+ " print 'i:%3d and time %5d s'%(i,i*dt)\n",
+ " for i in range(len(T)):\n",
+ " print \"Temperature of the node\",i+1,\"is\", round(T[i],2),\"\u00b0C\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "i: 1 and time 500 s\n",
+ "Temperature of the node 1 is 75.0 \u00b0C\n",
+ "Temperature of the node 2 is 100.0 \u00b0C\n",
+ "Temperature of the node 3 is 100.0 \u00b0C\n",
+ "Temperature of the node 4 is 100.0 \u00b0C\n",
+ "Temperature of the node 5 is 100.0 \u00b0C\n",
+ "Temperature of the node 6 is 100.0 \u00b0C\n",
+ "i: 2 and time 1000 s\n",
+ "Temperature of the node 1 is 68.75 \u00b0C\n",
+ "Temperature of the node 2 is 93.75 \u00b0C\n",
+ "Temperature of the node 3 is 100.0 \u00b0C\n",
+ "Temperature of the node 4 is 100.0 \u00b0C\n",
+ "Temperature of the node 5 is 100.0 \u00b0C\n",
+ "Temperature of the node 6 is 100.0 \u00b0C\n",
+ "i: 3 and time 1500 s\n",
+ "Temperature of the node 1 is 64.06 \u00b0C\n",
+ "Temperature of the node 2 is 89.06 \u00b0C\n",
+ "Temperature of the node 3 is 98.44 \u00b0C\n",
+ "Temperature of the node 4 is 100.0 \u00b0C\n",
+ "Temperature of the node 5 is 100.0 \u00b0C\n",
+ "Temperature of the node 6 is 100.0 \u00b0C\n",
+ "i: 4 and time 2000 s\n",
+ "Temperature of the node 1 is 60.55 \u00b0C\n",
+ "Temperature of the node 2 is 85.16 \u00b0C\n",
+ "Temperature of the node 3 is 96.48 \u00b0C\n",
+ "Temperature of the node 4 is 99.61 \u00b0C\n",
+ "Temperature of the node 5 is 100.0 \u00b0C\n",
+ "Temperature of the node 6 is 100.0 \u00b0C\n",
+ "i: 5 and time 2500 s\n",
+ "Temperature of the node 1 is 57.71 \u00b0C\n",
+ "Temperature of the node 2 is 81.84 \u00b0C\n",
+ "Temperature of the node 3 is 94.43 \u00b0C\n",
+ "Temperature of the node 4 is 98.93 \u00b0C\n",
+ "Temperature of the node 5 is 99.9 \u00b0C\n",
+ "Temperature of the node 6 is 100.0 \u00b0C\n",
+ "i: 6 and time 3000 s\n",
+ "Temperature of the node 1 is 55.35 \u00b0C\n",
+ "Temperature of the node 2 is 78.96 \u00b0C\n",
+ "Temperature of the node 3 is 92.41 \u00b0C\n",
+ "Temperature of the node 4 is 98.05 \u00b0C\n",
+ "Temperature of the node 5 is 99.68 \u00b0C\n",
+ "Temperature of the node 6 is 99.95 \u00b0C\n",
+ "i: 7 and time 3500 s\n",
+ "Temperature of the node 1 is 53.31 \u00b0C\n",
+ "Temperature of the node 2 is 76.42 \u00b0C\n",
+ "Temperature of the node 3 is 90.45 \u00b0C\n",
+ "Temperature of the node 4 is 97.05 \u00b0C\n",
+ "Temperature of the node 5 is 99.34 \u00b0C\n",
+ "Temperature of the node 6 is 99.82 \u00b0C\n",
+ "i: 8 and time 4000 s\n",
+ "Temperature of the node 1 is 51.54 \u00b0C\n",
+ "Temperature of the node 2 is 74.15 \u00b0C\n",
+ "Temperature of the node 3 is 88.59 \u00b0C\n",
+ "Temperature of the node 4 is 95.97 \u00b0C\n",
+ "Temperature of the node 5 is 98.89 \u00b0C\n",
+ "Temperature of the node 6 is 99.58 \u00b0C\n",
+ "i: 9 and time 4500 s\n",
+ "Temperature of the node 1 is 49.96 \u00b0C\n",
+ "Temperature of the node 2 is 72.11 \u00b0C\n",
+ "Temperature of the node 3 is 86.83 \u00b0C\n",
+ "Temperature of the node 4 is 94.86 \u00b0C\n",
+ "Temperature of the node 5 is 98.33 \u00b0C\n",
+ "Temperature of the node 6 is 99.23 \u00b0C\n",
+ "i: 10 and time 5000 s\n",
+ "Temperature of the node 1 is 48.54 \u00b0C\n",
+ "Temperature of the node 2 is 70.25 \u00b0C\n",
+ "Temperature of the node 3 is 85.15 \u00b0C\n",
+ "Temperature of the node 4 is 93.72 \u00b0C\n",
+ "Temperature of the node 5 is 97.69 \u00b0C\n",
+ "Temperature of the node 6 is 98.78 \u00b0C\n",
+ "i: 11 and time 5500 s\n",
+ "Temperature of the node 1 is 47.26 \u00b0C\n",
+ "Temperature of the node 2 is 68.55 \u00b0C\n",
+ "Temperature of the node 3 is 83.57 \u00b0C\n",
+ "Temperature of the node 4 is 92.57 \u00b0C\n",
+ "Temperature of the node 5 is 96.97 \u00b0C\n",
+ "Temperature of the node 6 is 98.23 \u00b0C\n",
+ "i: 12 and time 6000 s\n",
+ "Temperature of the node 1 is 46.09 \u00b0C\n",
+ "Temperature of the node 2 is 66.98 \u00b0C\n",
+ "Temperature of the node 3 is 82.06 \u00b0C\n",
+ "Temperature of the node 4 is 91.42 \u00b0C\n",
+ "Temperature of the node 5 is 96.19 \u00b0C\n",
+ "Temperature of the node 6 is 97.6 \u00b0C\n"
+ ]
+ }
+ ],
+ "prompt_number": 29
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.5-1, Page number 361"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Chilling Dressed Beef\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "rho = 1073. #Density of a beef, kg/m3\n",
+ "cp = 3480. #Specific heat of Beef, J/(kg.K)\n",
+ "k = 0.498 #Thermal conductivity of beef, W/(m.K)\n",
+ "thk = 0.203 #Thickness of beef slab, m\n",
+ "Ti = 37.8 #Initial beef temperature, deg C\n",
+ "Tf = 1.7 #Uniform fluid temeperature, deg C\n",
+ "T = 10. #Temperature of the centre, deg C\n",
+ "h = 39.7 #Convective heat Transfer coefficient, W/(m2.K)\n",
+ "x = 0\n",
+ "#Calculation\n",
+ "\n",
+ "alpha = k/(rho*cp) #Thermal diffusivity of beef slab, m2/s\n",
+ "x1 = thk/2 #Centre of slab, m\n",
+ "n = x/x1\n",
+ "m = k/(h*x1)\n",
+ "Y = (Tf-T)/(Tf-Ti)\n",
+ "X = 0.90 \n",
+ "t = X*x1**2/alpha\n",
+ "#Result\n",
+ "print \"The parameter to be used in association with Fig. 5.3-6\"\n",
+ "print \"n: \", n\n",
+ "print \"m: \", round(m,4)\n",
+ "print \"Y: \", round(Y,4)\n",
+ "print \"Time required to attend 10\u00b0C: \", round(t,1),\"s OR\", round(t/3600,1), \"hr\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The parameter to be used in association with Fig. 5.3-6\n",
+ "n: 0.0\n",
+ "m: 0.1236\n",
+ "Y: 0.2299\n",
+ "Time required to attend 10\u00b0C: 69522.3 s OR 19.3 hr\n"
+ ]
+ }
+ ],
+ "prompt_number": 19
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.5-2, Page number 364"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Freezing of Meat \n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "rho = 1057. #Density of a meat, kg/m3\n",
+ "cp = 3480. #Specific heat of Beef, J/(kg.K)\n",
+ "k = 1.038 #Thermal conductivity of meat, W/(m.K)\n",
+ "a = 0.0635 #Thickness of beef slab, m\n",
+ "Tf = 270.4 #Initial meat temperature, deg C\n",
+ "T1 = 244.3 #Uniform air blast temeperature, K\n",
+ "h = 17.0 #Convective heat Transfer coefficient, W/(m2.K)\n",
+ "Lambdafw = 335000 #Latent heat of fusion of for Water, J/kg\n",
+ "\n",
+ "#Calculations\n",
+ "\n",
+ "Lambdameat = 0.75*Lambdafw\n",
+ "t = Lambdameat*rho/(Tf-T1)*(a/(2*h)+a**2/(8*k))\n",
+ "\n",
+ "#Results\n",
+ "print \"Latent heat of freezing of meat:\", round(Lambdameat/1000,1), \"kJ/kg\"\n",
+ "print 'Time required for freezing:%4.3e s OR %3.2f'%(t,t/3600)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Latent heat of freezing of meat: 251.3 kJ/kg\n",
+ "Time required for freezing:2.394e+04 s OR 6.65\n"
+ ]
+ }
+ ],
+ "prompt_number": 33
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter06.ipynb b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter06.ipynb new file mode 100755 index 00000000..0ae50546 --- /dev/null +++ b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter06.ipynb @@ -0,0 +1,715 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:4a12202353f3cb1cbe50fd7930d91773aa80f5f97a640a6132154b29fdca09cb"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 6: Principles of Mass Transfer"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.1-1, Page number 384"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Molecular Diffusion of Helium in Nitrogen\n",
+ "\n",
+ "#Variable declaration\n",
+ "z1 = 0.0 #Location of one end of pipe, m\n",
+ "z2 = 0.2 #Location of other end of pipe, m\n",
+ "T = 298 #Temeperature of gas, K\n",
+ "pA1 = 0.6 #Partial pressure of Helium at end 1, atm\n",
+ "pA2 = 0.2 #Partial pressure of Helium at end 2, atm\n",
+ "DAB = 0.687e-4 #Diffusivity of Helium in Nitrogen, m2/s\n",
+ "P = 1. #Total pressure, atm\n",
+ "R = 82.057e-3 #Gas Constant,m3.atm/(kmol.K)\n",
+ "\n",
+ "#Calculation SI Units\n",
+ "JAz = DAB*(pA1-pA2)/(R*T*(z2-z1))\n",
+ "\n",
+ "#Result\n",
+ "print 'Flux of Helium through the Nitrogen in SI units: %5.2e'%(JAz), \"kmol/(m2.s)\"\n",
+ "\n",
+ "#Variable declaration cgs Units\n",
+ "z1 = 0.0 #Location of one end of pipe, m\n",
+ "z2 = 20 #Location of other end of pipe, m\n",
+ "DAB = 0.687 #Diffusivity of Helium in Nitrogen, cm2/s\n",
+ "R = 82.057 #Gas Constant,cm3.atm/(gmol.K)\n",
+ "\n",
+ "#Calculation cgs Units\n",
+ "JAz = DAB*(pA1-pA2)/(R*T*(z2-z1))\n",
+ "\n",
+ "#Result\n",
+ "print 'Flux of Helium through the Nitrogen in cgs units: %5.2e'%(JAz), \"gmol/(cm2.s)\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Flux of Helium through the Nitrogen in SI units: 5.62e-06 kmol/(m2.s)\n",
+ "Flux of Helium through the Nitrogen in cgs units: 5.62e-07 gmol/(cm2.s)\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.2-1, Page Number 386"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Equimolar Counterdiffusion\n",
+ "\n",
+ "#Variable declaration\n",
+ "z1 = 0.0 #Location of one end of pipe, m\n",
+ "z2 = 0.1 #Location of other end of pipe, m\n",
+ "T = 298 #Temeperature of gas, K\n",
+ "pA1 = 1.013e4 #Partial pressure of Ammonia at end 1, Pa\n",
+ "pA2 = 0.507e4 #Partial pressure of Ammonia at end 2, Pa\n",
+ "DAB = 0.23e-4 #Diffusivity of Ammonia in Nitrogen, m2/s\n",
+ "P = 1.0132e5 #Total pressure, Pa\n",
+ "R = 8314.3 #Gas Constant,m3.Pa/(kmol.K)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "JAz = DAB*(pA1-pA2)/(R*T*(z2-z1))\n",
+ "pB1 = P - pA1\n",
+ "pB2 = P - pA2\n",
+ "JBz = DAB*(pB1-pB2)/(R*T*(z2-z1))\n",
+ "#Result\n",
+ "\n",
+ "print 'Flux of Ammonia through the Nitrogen:%10.2e '%(JAz), \"kmolA/(m2.s)\"\n",
+ "print 'Flux of Nitrogen through the Ammonia:%10.2e '%(JBz), \"kmolB/(m2.s)\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Flux of Ammonia through the Nitrogen: 4.70e-07 kmolA/(m2.s)\n",
+ "Flux of Nitrogen through the Ammonia: -4.70e-07 kmolB/(m2.s)\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.2-2, Page number 389"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Diffusion of Water Through Stagnant, Nondiffusing Air\n",
+ "from math import log\n",
+ "\n",
+ "#Variable declaration English Units\n",
+ "z1 = 0.0 #Location of one end of pipe, ft\n",
+ "z2 = 0.5 #Location of other end of pipe, ft\n",
+ "T = 68 #Temeperature of gas, \u00b0F\n",
+ "DAB = 0.25e-4 #Diffusivity of Water in Air, m2/s\n",
+ "p0w = 17.54 #Vapor pressure of Water at 68 \u00b0F, mmHg\n",
+ "R = 0.73 #Gas Constant, ft3.atm/(lbmol.\u00b0R)\n",
+ "P = 1.\n",
+ "\n",
+ "#Calculation English units\n",
+ "DAB = DAB*3.875e4\n",
+ "p0w = p0w/760\n",
+ "pA1 = p0w\n",
+ "pA2 = 0.\n",
+ "T = T + 460.\n",
+ "\n",
+ "pB1 = P - pA1\n",
+ "pB2 = P - pA2\n",
+ "pBM = (pB2-pB1)/log(pB2/pB1)\n",
+ "NA = DAB*P*(pA1-pA2)/(R*T*(z2-z1)*pBM)\n",
+ "#Result\n",
+ "print 'Rate of evaporation of water at steady state:English Units %10.3e'%(NA), \"lbmol/(ft2.hr)\"\n",
+ "\n",
+ "#Variable declaration SI Units\n",
+ "z1 = 0.0 #Location of one end of pipe, m\n",
+ "z2 = 0.1524 #Location of other end of pipe, m\n",
+ "T = 293 #Temeperature of gas, K\n",
+ "p0w = 17.54 #Vapor pressure of Water at 293 K, mmHg\n",
+ "DAB = 0.25e-4 #Diffusivity of Water in Air, m2/s\n",
+ "P = 1.01325e5 #Total pressure, Pa\n",
+ "R = 8314.3 #Gas Constant,m3.Pa/(kmol.K)\n",
+ "\n",
+ "#Calculation SI units\n",
+ "\n",
+ "p0wSI = p0w*P/760\n",
+ "pA1 = p0wSI\n",
+ "pA2 = 0.\n",
+ "JAz = DAB*(pA1-pA2)/(R*T*(z2-z1))\n",
+ "\n",
+ "pB1 = P - pA1\n",
+ "pB2 = P - pA2\n",
+ "pBM = (pB2-pB1)/log(pB2/pB1)\n",
+ "NA = DAB*P*(pA1-pA2)/(R*T*(z2-z1)*pBM)\n",
+ "\n",
+ "#Result\n",
+ "print 'Rate of evaporation of water at steady state SI Units:%10.3e'%(NA), \"kmol/(m2.s)\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Rate of evaporation of water at steady state:English Units 1.174e-04 lbmol/(ft2.hr)\n",
+ "Rate of evaporation of water at steady state SI Units: 1.593e-07 kmol/(m2.s)\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.2-4, Page number 392"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Evaporation of Napthalene Sphere\n",
+ "\n",
+ "# Variable declaration\n",
+ "r = 2. #Radius of Napthalene ball, mm\n",
+ "Tair = 318. #Ambient temperature of air, K\n",
+ "Tball = 318. #Temperature of the Napthalene ball, K\n",
+ "p0N = 0.555 #Vapor pressure of Napthalene at 318K, mmHg\n",
+ "DAB = 6.92e-6 #Diffusion Coefficient, m2/s\n",
+ "P = 101325. #Atmospheric pressure, Pa \n",
+ "R = 8314. #Gas constant, m3.Pa/(kmol.K)\n",
+ "\n",
+ "# Calculation\n",
+ "pA1 = p0N*P/760\n",
+ "r = r/1000\n",
+ "pA2 = 0.\n",
+ "pB1 = P - pA1\n",
+ "pB2 = P- pA2\n",
+ "pBM = (pB1+pB2)/2.\n",
+ "NA = DAB*P*(pA1-pA2)/(R*Tair*r*pBM)\n",
+ " \n",
+ "#Result\n",
+ "print 'Rate of evaporation of Napthalene from surface is:%10.3e'%(NA),\"kmol A/(m2.s)\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Rate of evaporation of Napthalene from surface is: 9.687e-08 kmol A/(m2.s)\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.2-5, Page number 397"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Estimation of diffusivity of a Gas Mixture\n",
+ "from math import sqrt\n",
+ "\n",
+ "# Variable declaration\n",
+ "P = 1. #Pressure in atmosphere\n",
+ "MA = 74.1 #Molecular weight of Butanol\n",
+ "MB = 29. #Molecular weight of Air\n",
+ "T1 = 0. #Temperature, deg C\n",
+ "T2 = 25.9 #Temperature, deg C\n",
+ "T3 = 0. #Temperature, deg C\n",
+ "P3 = 2.\n",
+ "# Calculation\n",
+ "def BinaryDiffusivity(P,T):\n",
+ " dab = 1.0e-7*T**1.75*sqrt(1./MA+1./MB)/(P*(SvA**(1./3)+ SvB**(1./3))**2)\n",
+ " print \"The binary diffusivity Butanol in Air at\",round(P,2),\"&\",T,'K is %5.3e'%(dab),\"m2/s\" \n",
+ " return dab\n",
+ "\n",
+ "#Atomic Diffusion volumes using table 6.2-2 pp-396\n",
+ "SvA = 4*16.5+10*1.98+1*5.48\n",
+ "SvB = 20.1\n",
+ "T1 = 273 + T1\n",
+ "DAB1 = BinaryDiffusivity(P,T1)\n",
+ "T2 = 273 + T2\n",
+ "DAB2 = BinaryDiffusivity(P,T2)\n",
+ "DAB3 = DAB1*(1./2.)\n",
+ "print 'The binary diffusivity Butanol in Air at %3.1f & %4.1f K is %5.3e m2/s'%(P3,T1,DAB3)\n",
+ "#OR\n",
+ "#DAB3 = BinaryDiffusivity(P3,T1)\n",
+ "#Result\n",
+ "print 'The answers different than book because of book uses rounded numbers'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The binary diffusivity Butanol in Air at 1.0 & 273.0 K is 7.701e-06 m2/s\n",
+ "The binary diffusivity Butanol in Air at 1.0 & 298.9 K is 9.025e-06 m2/s\n",
+ "The binary diffusivity Butanol in Air at 2.0 & 273.0 K is 3.851e-06 m2/s\n",
+ "The answers different than book because of book uses rounded numbers\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.3-1, Page number 399"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Diffusion of Ethanol(A) through Water(B)\n",
+ "\n",
+ "#Variable declaration\n",
+ "\n",
+ "T = 298 #Temperature of solution, K\n",
+ "rho1 = 972.8 #Density of solution at 16.8% wt, kg/m3\n",
+ "rho2 = 998.1 #Density of solution at 6.8% wt, kg/m3\n",
+ "DAB = 0.740e-9 #Diffusivity of Ethanol, m2/s\n",
+ "MA = 46.05 #Molecular wt of ethanol\n",
+ "MB = 18.02 #Molecular wt of Water\n",
+ "xw1 = 16.8 #weight % of Ethanol at 1\n",
+ "xw2 = 6.8 #weight % of Ethanol at 2\n",
+ "z1 = 0. #Location 1, m\n",
+ "z2 = 2.e-3 #Location 2, m\n",
+ "#Calculation\n",
+ "\n",
+ "xmA1 = xw1/MA/(xw1/MA+(100-xw1)/MB)\n",
+ "xmA2 = xw2/MA/(xw2/MA+(100-xw2)/MB)\n",
+ "xmB1 = 1. - xmA1\n",
+ "xmB2 = 1. - xmA2\n",
+ "MW1 = MA*xmA1 + MB*xmB1\n",
+ "MW2 = MA*xmA2 + MB*xmB2\n",
+ "Cav = (rho1/MW1+rho2/MW2)/2.\n",
+ "xBM = (xmB1+xmB2)/2.\n",
+ "NA = DAB*Cav*(xmA1-xmA2)/(xBM*(z2-z1))\n",
+ "\n",
+ "#Result\n",
+ "print 'Steady State flux of Ethanol: %4.3e'%(NA), \"kgmol/(m2.s)\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Steady State flux of Ethanol: 8.998e-07 kmol/(m2.s)\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.3-2, Page number 402"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Prediction of Liquid Diffusivity \n",
+ "from math import sqrt\n",
+ "#Variable declaration\n",
+ "T1 = 25 #Temperature of solution, degC\n",
+ "T2 = 50 #Temperature of solution, degC\n",
+ "mu25B = 0.8937e-3 #Viscosity of Water at 25 degC, Pa.s\n",
+ "mu50B = 0.5494e-3 #Viscosity of Water at 50 degC, Pa.s\n",
+ "MB = 18.02\n",
+ "\n",
+ "\n",
+ "#Calculation\n",
+ "mvA = 3*0.0148 + 6*0.0037 + 1*0.0074\n",
+ "si = 2.6\n",
+ "\n",
+ "def LiquidDiffusivity(muB,T):\n",
+ " dab = 1.173e-16*sqrt(si*MB)*T/(muB*mvA**0.6)\n",
+ " print 'Liquid diffusivity of Acetone in Water at %5.3f \u00b0C is %5.3e m2/s' %(T,dab)\n",
+ " return \n",
+ "\n",
+ "LiquidDiffusivity(mu25B,T1+273)\n",
+ "LiquidDiffusivity(mu50B,T2+273)\n",
+ "#Result\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Liquid diffusivity of Acetone in Water at 298.000 \u00b0C is 1.277e-09 m2/s\n",
+ "Liquid diffusivity of Acetone in Water at 323.000 \u00b0C is 2.251e-09 m2/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.4-1, Page number 405"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Prediction of Diffusivity of Albumin\n",
+ "\n",
+ "#Variable declaration\n",
+ "T = 298 #Temperature, K\n",
+ "MA = 67500 #Molecular Weight of Albumin\n",
+ "muw298 = 0.8937e-3 #Viscosity of water at 298 K, Pa.s\n",
+ "\n",
+ "#Calculations\n",
+ "DAB = 9.4e-15*T/(muw298*MA**(1./3))\n",
+ "\n",
+ "#Result\n",
+ "print 'Diffusivity of Albumin in Water at 298 K %3.2e m2/s'%(DAB)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Diffusivity of Albumin in Water at 298 K 7.70e-11 m2/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.4-2, Page number 407"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Diffusion of urea in Agar\n",
+ "\n",
+ "#Variable Declaration\n",
+ "CA1 = 0.2 #Concentration at one end of tube\n",
+ "CA2 = 0.0 #Concentration at other end of tube\n",
+ "z1 = 0.0\n",
+ "z2 = 0.04 #Location of other end of tube from end 1\n",
+ "DAB = 0.727e-9 #Diffusivity of urea \n",
+ "\n",
+ "#Calculation\n",
+ "NA = DAB*(CA1-CA2)/(z2-z1)\n",
+ "\n",
+ "#Result\n",
+ "print 'Steady State Flux of urea through agar solution:%4.3e kgmol/(m2.s)'%(NA)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Steady State Flux of urea through agar solution:3.635e-09 kmol/(m2.s)\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.5-1, Page number 409"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Diffusion of H2 through Neoprene Membrance\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "T = 17 #Temnperature of hydrogen, deg C\n",
+ "pH21 = 0.01 #Partial pressure of H2 on one end of membrane, atm\n",
+ "z = 0.5 #Membrane thickness, mm\n",
+ "pH22 = 0.0 #Partial pressure of H2 on other end of membrane, atm\n",
+ "S = 0.051 #Solubility of H2 in Neoprene, [m3 at STP/(m3solid.atm)]\n",
+ "DAB = 1.03e-10 #Diffusivity at 17 deg C, m2/s\n",
+ "\n",
+ "#Calculations\n",
+ "cA1 = S*pH21/22.414\n",
+ "cA2 = S*pH22/22.414\n",
+ "NA = DAB*(cA1-cA2)/(z/1000.)\n",
+ "\n",
+ "#Results\n",
+ "print 'concentrations at face 1 and face 2 are %3.2e and %3.2e kgmol H2/m3 solid respectively'%(cA1,cA2)\n",
+ "print 'Steady State Flux of Hydrogen through Neoprene membrane:%5.2e'%(NA),\"kgmol H2/(m2.s)\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "concentrations at face 1 and face 2 are 2.28e-05 and 0.00e+00 kgmol H2/m3 solid respectively\n",
+ "Steady State Flux of Hydrogen through Neoprene membrane:4.69e-12 kgmol H2/(m2.s)\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.5-2, Page number 411"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Diffusion through a Packaging Film using Permeability\n",
+ "\n",
+ "#Variable Declaration\n",
+ "z = 0.00015 #Thickness of the pkg film, m\n",
+ "T = 30. #Temperature of the film, deg C\n",
+ "pO21 = 0.21 #Partial pressure of O2 outside the film, atm\n",
+ "pO22 = 0.01 #Partial pressure of O2 inside the film, atm\n",
+ "PM = 4.17e-12 #Permeability of the film m3 solute STP/(s.m2.atm/m)\n",
+ "\n",
+ "#Calcualtions\n",
+ "NA = PM*(pO21-pO22)/(22.414*z)\n",
+ "\n",
+ "#Result\n",
+ "print 'Diffusional flux of the Oxygen through the polyethylene film:%10.3e kgmol/(m2.s)'%(NA)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Diffusional flux of the Oxygen through the polyethylene film: 2.481e-10 kgmol/(m2.s)\n"
+ ]
+ }
+ ],
+ "prompt_number": 16
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.5-3, Page number 412"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Diffusion of KCl in porous Silica\n",
+ "\n",
+ "#Variable Declaration\n",
+ "z = 0.002 #Thickness of Silica, m\n",
+ "DAB = 1.87e-9 #Diffusivity of KCl in water, m2/s\n",
+ "cA1 = 0.1 #Concentration of KCl, kmol/m3\n",
+ "cA2 = 0.0 #Concentration of KCl on other side of Silica\n",
+ "epps = 0.3 #Porosity of Silica\n",
+ "tau = 4.0 #Tortuosity\n",
+ "\n",
+ "#Calculation\n",
+ "NA = epps*DAB*(cA1-cA2)/(tau*z)\n",
+ "\n",
+ "#Results\n",
+ "print 'Diffusional flux of the KCl through the Porous Silica: %5.2e kmol/(m2.s)'%(NA)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Diffusional flux of the KCl through the Porous Silica: 7.01e-09 kmol/(m2.s)\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.6-1, Page number 416"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Numerical Method for Convection and Steady State Diffusion\n",
+ "import numpy as np\n",
+ "\n",
+ "#Variable Declaration\n",
+ "ci = 6.00e-3 #Inside concentration, kmol/m3\n",
+ "kc = 2.0e-7 #Outside convective coefficient, m/s\n",
+ "cinf = 2.00e-3 #Outside concentration, kmol/m3\n",
+ "DAB = 1.0e-9 #Diffusivity in solid, m2/s\n",
+ "dx = dy = 0.005 #Grid size in x and y directions, m\n",
+ "K = 1.0 #Distribution coefficient\n",
+ "\n",
+ "#Calculations\n",
+ "kdxbyD = kc*dx/DAB\n",
+ "\n",
+ "#Index used are one less as in book\n",
+ "c1 = np.zeros(5)\n",
+ "c2 = np.zeros(5)\n",
+ "c3 = np.zeros(5)\n",
+ "\n",
+ "\n",
+ "cinf = cinf*1e3\n",
+ "ci = ci*1e3\n",
+ "np.set_printoptions(precision=2)\n",
+ "\n",
+ "#Initializations\n",
+ "c1[2] = c1[3] = ci\n",
+ "c2[1] = 3.8\n",
+ "c1[1] = c2[2] = c2[4] = 4.2\n",
+ "c2[3] = 4.4\n",
+ "c3[0] = 2.5\n",
+ "c3[1] = c2[0] = 2.7\n",
+ "c3[2] = c3[4] = 3.0\n",
+ "c3[3] = 3.2\n",
+ "\n",
+ "for j in range(3):\n",
+ " N22 = c1[1]+c3[1]+c2[0]+c2[2]-4*c2[1]\n",
+ " c2[1] = (c1[1]+ c3[1]+c2[0]+c2[2])/4\n",
+ " N23 = c2[1]+c2[3]+c1[2]+c3[2]-4*c2[2]\n",
+ " c2[2] = c2[4] = c1[1] = (c2[1]+c2[3]+c1[2]+c3[2])/4\n",
+ " N24 = c2[2]+c2[4]+c1[3]+c3[3]-4*c2[3]\n",
+ " c2[3] = (c2[2]+c2[4]+c1[3]+c3[3])/4\n",
+ " N31 = kdxbyD*cinf + (c2[0]+c3[1])/2 - (kdxbyD+1)*c3[0] \n",
+ " c3[0] = (kdxbyD*cinf + (c2[0]+c3[1])/2)/(kdxbyD+1) \n",
+ " N32 = kdxbyD*cinf + (2*c2[1]+c3[0]+c3[2])/2 - (kdxbyD+2)*c3[1]\n",
+ " c3[1] = c2[0] =(kdxbyD*cinf + (2*c2[1]+c3[0]+c3[2])/2)/(kdxbyD+2)\n",
+ " N33 = kdxbyD*cinf + (2*c2[2]+c3[1]+c3[3])/2-(kdxbyD+2)*c3[2]\n",
+ " c3[2] = c3[4] = (kdxbyD*cinf + (2*c2[2]+c3[1]+c3[3])/2)/(kdxbyD+2)\n",
+ " N34 = kdxbyD*cinf + (2*c2[3]+c3[2]+c3[4])/2 -(kdxbyD+2)*c3[3]\n",
+ " c3[3] = (kdxbyD*cinf + (2*c2[3]+c3[2]+c3[4])/2)/(kdxbyD+2)\n",
+ " \n",
+ " \n",
+ "c1[0] = c3[2]\n",
+ "c1[4] = c1[2]\n",
+ "\n",
+ "No = kc*(dx*1.)*((c3[0]-cinf)/2+(c3[1]-cinf)+(c3[2]-cinf)+(c3[3]-cinf)/2)*1e-3\n",
+ "Ni = DAB*(dx*1.)*((c1[2]-c2[2])+(c1[3]-c2[3])/2)*1e-3/dy\n",
+ "#Results\n",
+ "print \"Concentration Values at nodes are as follows\"\n",
+ "print \"C 1 2 3 4 \"\n",
+ "print 1,c1[:4]\n",
+ "print 2,c2[:4]\n",
+ "print 3,c3[:4]\n",
+ "\n",
+ "print '\\nThe average flux is %6.3e kmol/s'%((Ni+No)*.5)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Concentration Values at nodes are as follows\n",
+ "C 1 2 3 4 \n",
+ "1 [ 3.06 4.23 6. 6. ]\n",
+ "2 [ 2.73 3.48 4.23 4.41]\n",
+ "3 [ 2.36 2.73 3.06 3.15]\n",
+ "\n",
+ "The average flux is 2.554e-12 kmol/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 47
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter07.ipynb b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter07.ipynb new file mode 100755 index 00000000..a72ea66f --- /dev/null +++ b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter07.ipynb @@ -0,0 +1,947 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:bf40b679afe76f70c4240c30eab7a27a1947dac701038fe19ff02bcbe2341496"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 7: Principles of Unsteady-State and Convective Mass Transfer"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7.1-1, Page number 431 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Unsteady State Diffusion in a Slab of Agar\n",
+ "\n",
+ "#Variable declaration\n",
+ "c0 = 0.1 #Concentration of Urea in slab (kg.mol/m3)\n",
+ "c1 = 0. #Concentration of Urea in water (kg.mol/m3)fficient bution \n",
+ "tk = 10.16 #thickness of slab in mm\n",
+ "DAB = 4.72e-10 #Diffusivity of urea in m2/s\n",
+ "t = 10 #Time in hr\n",
+ "kc = inf\n",
+ "xa = 0.0 #Location at centre\n",
+ "xb = 2.54 #Distance from surface in mm\n",
+ "\n",
+ "#Calculation\n",
+ "K = 1. #Equilibrium distribution coefficient since aqueous solution and ouside solution have very simillar properties\n",
+ "x1 = tk/(1000*2)\n",
+ "X = DAB*(t*3600)/x1**2\n",
+ "n = xa/x1\n",
+ "m = DAB/(K*kc*x1)\n",
+ "#from fig 5.3-5\n",
+ "X = 0.658\n",
+ "Y =0.275\n",
+ "#Calculation for part (a)\n",
+ "ca1 = (c1/K) - Y*(c1/K - c0)\n",
+ "\n",
+ "x = (tk/2 - xb)/1000\n",
+ "n = xb/x1\n",
+ "#from fig 5.3-5\n",
+ "Y = 0.172\n",
+ "ca2 = (c1/K) - Y*(c1/K - c0) \n",
+ "#Calculation for part (b)\n",
+ "\n",
+ "X = X/(0.5**2)\n",
+ "#from fig 5.3-5\n",
+ "Y = 0.0020\n",
+ "cb = (c1/K) - Y*(c1/K - c0)\n",
+ "#Result\n",
+ "print 'Part a'\n",
+ "print \"The concentration at x=0 \",ca1,\"kmol/m3\"\n",
+ "print \"The concentration at 2.54 mm \",ca2,\"kmol/m3\"\n",
+ "print 'Part b'\n",
+ "print 'The concentration at the mid-point of the slab %4.1e'%(cb),\"kmol/m3\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Part a\n",
+ "The concentration at x=0 0.0275 kmol/m3\n",
+ "The concentration at 2.54 mm 0.0172 kmol/m3\n",
+ "Part b\n",
+ "The concentration at the mid-point of the slab 2.0e-04 kmol/m3\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7.1-2, Page Number 431 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Unsteady-State Diffusion in Semi-Infinite Slab \n",
+ "from math import sqrt\n",
+ "\n",
+ "#Variable declaration\n",
+ "\n",
+ "c0 = 1.e-2 #Concentration of solute A in slab (kg.mol A/m3)\n",
+ "c1 = 0.1 #Concentration of solute A in moving fluid (kg.mol A/m3)\n",
+ "Kc = 2.e-7 #Convective coeffcient (m/s)\n",
+ "K = 2. #Equilibrium distribution coefficient \n",
+ "x1 = 0.0 #Location where cetre lies\n",
+ "x2 = 0.01 #LOcation from the centre, m\n",
+ "t = 3.e4 #Given time (s)\n",
+ "DAB = 4.e-9 #Diffusivity in the solid (m2/s)\n",
+ "cb = 3.48e-2 #Value taken from the Fig. 7.1-3b\n",
+ "\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "absc = x2/sqrt(DAB*t)\n",
+ "param = K*Kc*sqrt(DAB*t)/DAB\n",
+ "# from fig 5.3-3 1-Y = 0.26\n",
+ "ord = 0.26\n",
+ "Y = 1.-ord\n",
+ "cs = (1 - Y)*(c1/K - c0) + c0\n",
+ "# At surface \n",
+ "absc = x1/2*sqrt(DAB*t)\n",
+ "#from fig 5.3-3 1-Y = 0.62 at x=0 and absc\n",
+ "ord =0.62\n",
+ "Y = 1 - ord\n",
+ "ca = (1 - Y)*(c1/K - c0) + c0\n",
+ "CLi = K*cb\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"The concentration of solid at surface (x=0) is \",cs,\"kmol/m3\"\n",
+ "print 'The concentration of solid at (x=0.01m) is %5.2e'%(ca),\"kmol/m3\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The concentration of solid at surface (x=0) is 0.0204 kmol/m3\n",
+ "The concentration of solid at (x=0.01m) is 3.48e-02 kmol/m3\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7.2-1, Page number 436"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Vaporizing A and Convective Mass Trasfer\n",
+ "from math import log\n",
+ "\n",
+ "# Variable declaration\n",
+ "\n",
+ "P = 2. #Total Pressure over the nevaporating surface (atm)\n",
+ "Pa1 = 0.2 #Partial vapour pressure of A over the surface (atm) \n",
+ "Pa2 = 0. #Partial vapour pressure of B over the surface (atm) \n",
+ "Kydash = 6.78e-5 \n",
+ "\n",
+ "# Calculation\n",
+ "Ya1 = Pa1/P\n",
+ "Ya2 = Pa2/P\n",
+ "Yb1 = 1. - Ya1\n",
+ "Yb2 = 1. - Ya2\n",
+ "Ybm = (Yb2 - Yb1)/log(Yb2/Yb1)\n",
+ "ky = Kydash/Ybm #eqn A\n",
+ "\n",
+ "kg1 = ky/(P*101325) #eqn B\n",
+ "kg2 = ky/P #eqn C\n",
+ "Na = ky*(Ya1 - Ya2) #eqn 1\n",
+ "pa1 = Pa1*101325.\n",
+ "pa2 = Pa2*101325.\n",
+ "\n",
+ "Na1 = kg1*(pa1-pa2) #eqn 2\n",
+ "Na2 = kg2*(Pa1-Pa2) #eqn 3\n",
+ "\n",
+ "#Result\n",
+ "print 'The calculated value of ky is %5.3e kgmol/s.m2.molfrac from #eqn A'%(ky)\n",
+ "print 'The calculated value of kg is %5.3e kgmol/s.m2.Pa #eqn B'%(kg1)\n",
+ "print 'The calculated value of kg is %5.3e kgmol/s.m2.atm #eqn C'%(kg2) \n",
+ "print 'The calculated value of the Flux is %5.3e kgmol/s.m2 #eqn 1'%(Na) \n",
+ "print 'The calculated value of the Flux is %5.3e kgmol/s.m2 from #eqn 2'%(Na1) \n",
+ "print 'The calculated value of the Flux is %5.3e kgmol/s.m2 from #eqn 3'%(Na2) "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The calculated value of ky is 7.143e-05 kgmol/s.m2.molfrac from #eqn A\n",
+ "The calculated value of kg is 3.525e-10 kgmol/s.m2.Pa #eqn B\n",
+ "The calculated value of kg is 3.572e-05 kgmol/s.m2.atm #eqn C\n",
+ "The calculated value of the Flux is 7.143e-06 kgmol/s.m2 #eqn 1\n",
+ "The calculated value of the Flux is 7.143e-06 kgmol/s.m2 from #eqn 2\n",
+ "The calculated value of the Flux is 7.143e-06 kgmol/s.m2 from #eqn 3\n"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7.3-1, Page number 443"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Mass Transfer Inside a Tube \n",
+ "\n",
+ "# Variable declaration\n",
+ "Dab = 6.92e-6 #Diffusivity of solid (m2/s)\n",
+ "Pai = 74. #Vapor pressure of A (Pa)\n",
+ "R = 8314.3 #Gas constant in (Pa.m3/(K.Kmol))\n",
+ "T = 318. #Temperature in (K)\n",
+ "Cao = 0.0 #Inlet concentration (kg.mol A/m3)\n",
+ "mu = 1.932e-5 #Viscosity of air (Pa.s)\n",
+ "Rho = 1.114 #Density of air (kg/m3)\n",
+ "D = 0.02 #Diameter of the tube (m)\n",
+ "L = 1.1 #Length of the tube (m)\n",
+ "V = 0.8 #Velocity of fluid (m/s)\n",
+ " \n",
+ "# Calculation\n",
+ "Cai = Pai/(R*T)\n",
+ "Nsc = mu/(Rho*Dab)\n",
+ "Nre = D*V*Rho/mu\n",
+ " #Hence the flow is laminar \n",
+ "abscisa = Nre*Nsc*D*pi/(4*L) #From fig 7.3-2\n",
+ "ordinate = 0.55\n",
+ "Ca = Cao + ordinate*(Cai-Cao)\n",
+ "\n",
+ "#Result\n",
+ "print 'Schmidt Number %4.3f'%Nsc\n",
+ "print 'Reynolds Number %4.1f'%Nre\n",
+ "print 'Concentration of Napthalene in exit Air: %5.3e' %(Ca),\"kmol/m3\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Schmidt Number 2.506\n",
+ "Reynolds Number 922.6\n",
+ "Concentration of Napthalene in exit Air: 1.539e-05 kmol/m3\n"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7.3-2, Page number 444"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Mass Transfer from a Flat Plate \n",
+ "\n",
+ "# Variable declaration\n",
+ "L = 0.244 #Length of the flat plate (m)\n",
+ "V = 0.061 #Velocity of water (m/s)\n",
+ "mu = 8.71e-4 #Viscosity of water (Pa.s)\n",
+ "Rho = 996. #Density of water (kg/m3)\n",
+ "Dab = 1.245e-9 #Diffusivity of benzoic acid (m2/s)\n",
+ "Ca1 = 2.948e-2 #Initial concentration (kg.mol A/m3)\n",
+ "Ca2 = 0. #Final concentration (kg.mol A/m3)\n",
+ "\n",
+ "# Calculation\n",
+ "Nsc = mu/(Rho*Dab)\n",
+ "Nre = L*V*Rho/mu\n",
+ "Jd = 0.99*Nre**-0.5\n",
+ "Kcd = Jd*V/Nsc**(2./3.)\n",
+ " #Since the solution is very dilute \n",
+ "Xbm = 1.\n",
+ "Kc = Kcd \n",
+ "Na = Kc*(Ca1 - Ca2)/Xbm\n",
+ "\n",
+ "#Result\n",
+ "print 'Schmidt Number %4.3f'%Nsc\n",
+ "print 'Reynolds Number %4.3e'%Nre\n",
+ "print 'Mass Transfer Coefficient %5.2e m/s'%(Kc)\n",
+ "print 'Flux of A through liquid:%5.3e kmol/(s.m2)'%(Na)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Schmidt Number 702.408\n",
+ "Reynolds Number 1.702e+04\n",
+ "Mass Transfer Coefficient 5.86e-06 m/s\n",
+ "Flux of A through liquid:1.727e-07 kmol/(s.m2)\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7.3-3, Page number 446"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Mass Transfer from a Sphere \n",
+ "from math import pi\n",
+ "\n",
+ "#Variable declaration SI units\n",
+ "Tdeg = 45 #Temperature in deg C\n",
+ "v = 0.305 #Velocity of air m/s\n",
+ "dp = 0.0254 #Diameter of the sphere m\n",
+ "Dab = 6.92e-6 #Diffusivity of napthalene in air (m2/s)\n",
+ "pa0 = 0.555 #Vapor pressure of solid napthalene mm Hg\n",
+ "mu = 1.93e-5 #Viscosity of air (Pa.s)\n",
+ "rho = 1.113 #Density of air (kg/m3)\n",
+ "R = 8314 #Gas constant (Pa.m3/K.Kmol)\n",
+ "P = 760 #Atmospheric pressure in mm Hg\n",
+ "\n",
+ "#Calculation\n",
+ "Tk = Tdeg+ 273\n",
+ "Nsc = mu/(Dab*rho)\n",
+ "Nre = dp*v*rho/mu\n",
+ "Nsh = 2 + 0.552*Nre**0.53*Nsc**(1./3)\n",
+ "kcd = Nsh*Dab/dp\n",
+ "kGd = kcd/(R*Tk)\n",
+ " # For dilute solutions kgd = kg, ybm = 1\n",
+ "kG = kGd\n",
+ "pa1 = pa0/P\n",
+ "pa1 = pa1*101325\n",
+ "pa2 = 0.0 #for pure air\n",
+ "Na = kG*(pa1-pa2)\n",
+ "A = pi*dp**2 \n",
+ "Ae = Na*A\n",
+ "\n",
+ "#Result\n",
+ "print \"Results in SI units\"\n",
+ "print 'Schmidt Number %4.3f'%Nsc\n",
+ "print 'Reynolds Number %4.0f'%Nre\n",
+ "print 'Mass transfer coefficient kcd= %5.3e' %(kcd),\"m/s\"\n",
+ "print 'Mass transfer coefficient KGd= %5.3e' %(kGd),\"kmol/(s.m2)\"\n",
+ "print \"Flux of Napthalene evaporation\", round(Na,10),\"kmol/(s.m2)\"\n",
+ "print 'Total amount evaporated: %5.3e kmol/s'%Ae\n",
+ "\n",
+ "print \n",
+ "\n",
+ "#Calculation\n",
+ "R = 0.73\n",
+ " #Unit conversion to English units\n",
+ "mu = mu*2.4191e3 #Viscosity of air (lbm/(ft.h))\n",
+ "Dab = Dab*3.875e4 #Diffusivity of napthalene in air (ft2/h)\n",
+ "dp = dp*3.2808 #Diameter of the sphere ft\n",
+ "rho = rho/16.0185 #Density of air (lbm/ft3)\n",
+ "v = v*3600*3.2808 #Velocity of air ft/h\n",
+ "T = Tk*1.8 #Temperature in Rankine\n",
+ "\n",
+ "Nsc = mu/(Dab*rho)\n",
+ "Nre = dp*v*rho/mu\n",
+ "Nsh = 2 + 0.552*Nre**0.53*Nsc**(1./3)\n",
+ "#print Nsc, Nre, Nsh\n",
+ "kcd = Nsh*Dab/dp\n",
+ "kGd = kcd/(R*T)\n",
+ "\n",
+ " # For dilute solutions kgd = kg, ybm = 1\n",
+ "kG = kGd\n",
+ "pa1 = pa0/P\n",
+ "pa2 = pa2/P #for pure air\n",
+ "Na = kG*(pa1-pa2)\n",
+ "A = pi*dp**2 \n",
+ "Ae = Na*A\n",
+ "\n",
+ "#Result\n",
+ "print \"Results in English units\" \n",
+ "print 'Schmidt Number %4.3f'%Nsc\n",
+ "print 'Reynolds Number %4.0f'%Nre\n",
+ "print 'Mass transfer coefficient kcd=%5.1f' %(kcd),\"ft/h\"\n",
+ "print 'Mass transfer coefficient KGd= %6.5f' %(kGd),\"lbmol/(h.ft2)\"\n",
+ "print 'Flux of Napthalene evaporation %5.2e'%(Na),\"lbmol/(h.ft2)\"\n",
+ "print 'Total amount evaporated: %5.3e lbmol/h'%Ae\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Results in SI units\n",
+ "Schmidt Number 2.506\n",
+ "Reynolds Number 447\n",
+ "Mass transfer coefficient kcd= 5.730e-03 m/s\n",
+ "Mass transfer coefficient KGd= 2.167e-09 kmol/(s.m2)\n",
+ "Flux of Napthalene evaporation 1.604e-07 kmol/(s.m2)\n",
+ "Total amount evaporated: 3.250e-10 kmol/s\n",
+ "\n",
+ "Results in English units\n",
+ "Schmidt Number 2.506\n",
+ "Reynolds Number 447\n",
+ "Mass transfer coefficient kcd= 67.7 ft/h\n",
+ "Mass transfer coefficient KGd= 0.16196 lbmol/(h.ft2)\n",
+ "Flux of Napthalene evaporation 1.18e-04 lbmol/(h.ft2)\n",
+ "Total amount evaporated: 2.580e-06 lbmol/h\n"
+ ]
+ }
+ ],
+ "prompt_number": 23
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7.3-4, Page number 449"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Mass Transfer of a Liquid in a Packed Bed\n",
+ "from scipy.optimize import root\n",
+ "from math import pi,log\n",
+ "\n",
+ "#Variable declaration\n",
+ "Tdeg = 26.1 #Temperature in deg C\n",
+ "Q = 5.514e-7 #Flowrate of benzoic acid (m3/s)\n",
+ "d = 0.006375 #Diameter of sphere (m)\n",
+ "As = 0.01198 #Total surface area of the sphere m2\n",
+ "epsilon = 0.436 #Void fraction \n",
+ "Dt = 0.0667 #Diameter of the tower in m\n",
+ "Cai = 2.948e-2 #Inlet concentration (kg.mol A/m3)\n",
+ "Ca1 = 0.0\n",
+ "kce = 4.665e-6 #Experimental value of the mass transfer coefficient in m2/s\n",
+ "mu261 = 0.8718e-3 #Viscosity of solution at 26.1 deg C (Pa.s)\n",
+ "rho261 = 996.7 #Density of the solution in (kg/m3)\n",
+ "mu250 = 0.8940e-3 #Viscosity of solution at 25 deg C (Pa.s)\n",
+ "Dab = 1.21e-9 #DIffusivity of benzoic acid (m2/s)\n",
+ "\n",
+ "#Calculation\n",
+ "Tk = Tdeg + 273\n",
+ " #Dab ~ T/mu\n",
+ "Dab261 = Dab*(Tk/298)*(mu250/mu261) \n",
+ "At = pi*Dt**2/4\n",
+ "v = Q/At\n",
+ "Nsc = mu261/(rho261*Dab261) \n",
+ "Nre = d*v*rho261/mu261\n",
+ "Jd = (1.09/epsilon)*Nre**(-2./3) \n",
+ "kcd = Jd*v/Nsc**(2./3) \n",
+ "\n",
+ "f = lambda x:Q*(x-Ca1)-As*kcd*(((Cai-Ca1)-(Cai-x))/log((Cai-Ca1)/(Cai-x)))\n",
+ "sol = root(f,1e-3)\n",
+ "Ca2 = sol.x[0]\n",
+ "\n",
+ "#Result\n",
+ "print 'Schmidt Number %4.1f'%Nsc\n",
+ "print 'Reynolds Number %4.3f'%Nre\n",
+ "print 'Mass Transfer Coefficient:%5.2e m/s This compares with expt. value of %5.3e m/s'%(kcd,kce)\n",
+ "print 'Concentration of Benzoic acid in Water:%5.3e'%(Ca2),\"kgmol/m3\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Schmidt Number 702.3\n",
+ "Reynolds Number 1.150\n",
+ "Mass Transfer Coefficient:4.55e-06 m/s This compares with expt. value of 4.665e-06 m/s\n",
+ "Concentration of Benzoic acid in Water:2.774e-03 kgmol/m3\n"
+ ]
+ }
+ ],
+ "prompt_number": 29
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7.4-1, Page number 451"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Mass Transfer from Air Bubbles in Fermentation\n",
+ "\n",
+ "# Variable declaration\n",
+ "P = 1.0 #Absolute pressure of bubbles, atm\n",
+ "d = 100e-6 #Diameter of bubbles, m\n",
+ "Ca1 = 2.26e-4 #Solubility of O2 in water, kmol O2/m3\n",
+ "D = 3.25e-9 #Diffusivity of O2 in water, m2/s\n",
+ "mu37 = 6.947e-4 #Viscosity of water at 37 \u00b0C, Pa.s\n",
+ "rhow = 994 #density of water at 37 \u00b0C, kg/m3\n",
+ "rhoa = 1.13 #Density of air at 37 \u00b0C, kg/m3\n",
+ "g = 9.806 #Gravitational acceleration (m/s2)\n",
+ "Ca2 = 0.0\n",
+ "#Calculations\n",
+ "Nsc = mu37/(rhow*D)\n",
+ "delP = rhow-rhoa\n",
+ "kld = 2*D/d + 0.31*Nsc**(-2./3)*(delP*mu37*g/rhow**2)**(1./3)\n",
+ "kl = kld\n",
+ "Na = kl*(Ca1-Ca2)\n",
+ "\n",
+ "#Result\n",
+ "print 'Schmidt Number %4.1f'%Nsc\n",
+ "print 'Maximum rate of absorption per unit area is %3.2e kmol O2/m2' %Na "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Schmidt Number 215.0\n",
+ "Maximum rate of absorption per unit area is 5.18e-08 kmol O2/m2\n"
+ ]
+ }
+ ],
+ "prompt_number": 32
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7.5-2, Page number 458 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Diffusion of Chemical Reaction at Boundary\n",
+ "from scipy.optimize import root\n",
+ "from math import log\n",
+ "\n",
+ "#Variable Declaration\n",
+ "Pa1 = 101.32 #Partial pressure of gas A (kPA)\n",
+ "d = 2.e-3 #Distance between point A and B (m)\n",
+ "Pt = 101.32 #Total pressure (kPa)\n",
+ "T = 300. #Temperature in K\n",
+ "Dab = 0.15e-4 #Diffusivity of gas A (m2/s)\n",
+ "K1 = 5.63e-3\n",
+ "R =8314.\n",
+ "#Calculation\n",
+ " #Calculation for part (a)\n",
+ "c = Pt*1000./(R*T)\n",
+ "xa1 = Pa1*1000./(Pt*1000.)\n",
+ "xa2 = 0./ Pt\n",
+ "Na = c*Dab*log((1+xa1)/(1+xa2))/d\n",
+ "\n",
+ "#Calculation for part (b)\n",
+ "f = lambda z: z - c*Dab/d*log((1+xa1)/(1+z/(c*K1)))\n",
+ "sol = root(f,0.00005)\n",
+ "Nb = sol.x[0]\n",
+ "xa2b = Nb/(c*K1)\n",
+ "#Result\n",
+ "\n",
+ "print 'a) The calculated value of flux for instantaneous rate of reaction is %4.3e kgmol A/s.m2'%(Na)\n",
+ "print 'b) The calculated value of flux for slow reaction is %5.3e kgmol A/s.m2'%(Nb)\n",
+ "print 'c) The fraction of A in liquid for slow reaction is %4.3f'%(xa2b)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "a) The calculated value of flux for instantaneous rate of reaction is 2.112e-04 kgmol A/s.m2\n",
+ "b) The calculated value of flux for slow reaction is 1.003e-04 kgmol A/s.m2\n",
+ "c) The fraction of A in liquid for slow reaction is 0.439\n"
+ ]
+ }
+ ],
+ "prompt_number": 33
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7.5-3, Page number 460"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Reaction and Unsteady State Diffusion\n",
+ "from math import erf, sqrt,pi,e\n",
+ "\n",
+ "#Variable Declaration\n",
+ "P = 101.32 #Pressure in (kPa)\n",
+ "k = 35. #First order reaction (1/s)\n",
+ "Dab = 1.5e-9 #Diffusivity of CO2 in (m2/s)\n",
+ "s = 2.961e-7 #Solubility of CO2 (kg mol/m3.Pa)\n",
+ "t = 0.01 #Time for which surface is exposed to gas (s) \n",
+ "\n",
+ "#Calculations\n",
+ "Ca0 = s*P*1000.\n",
+ "Q = Ca0*sqrt(Dab/k)*((k*t+0.5)*erf(sqrt(k*t)) + sqrt(k*t/pi)*e**(-k*t))\n",
+ "#Results\n",
+ "print 'CO2 absorbed on the surface %5.3e kgmolCO2/m2'%(Q)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "CO2 absorbed on the surface 1.459e-07 kgmolCO2/m2\n"
+ ]
+ }
+ ],
+ "prompt_number": 34
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7.5-4, Page number 461"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Diffusion of A Through Nondiffusing B and C\n",
+ "from math import log\n",
+ "\n",
+ "#Variable Declaration\n",
+ "P = 1. #Total presure in (atm)\n",
+ "P_SI = 1.01325e5 #Total pressure in (Pa)\n",
+ "T = 298. #Temperature in (K)\n",
+ "z1 = 0. #Starting point (m)\n",
+ "z2 = 0.005 #End point (m)\n",
+ "pa1 = 0.4 #Initial Partial pressure of methane (atm)\n",
+ "pb1 = 0.4 #Initial Partial pressure of argon (atm)\n",
+ "pc1 = 0.2 #Initial Partial pressure of helium (atm)\n",
+ "pa2 = 0.1 #Final Partial pressure of methane (atm)\n",
+ "pb2 = 0.6 #Final Partial pressure of argon (atm)\n",
+ "pc2 = 0.3 #Final Partial pressure of helium (atm)\n",
+ "Dab = 2.02e-5 #Binary Diffusivities (m2/s)\n",
+ "Dac = 6.75e-5 #Binary Diffusivities (m2/s)\n",
+ "Dbc = 7.29e-5 #Binary Diffusivities (m2/s)\n",
+ "R = 82.06e-3 #Gas constant (atm.m3/Kmol.K)\n",
+ "R_SI = 8314 #Gas constant (Pa.m3/Kmol.K)\n",
+ "\n",
+ "#Calculations\n",
+ "xb_1 = pb1/(1-pa1)\n",
+ "xb_2 = pb2/(1 - pb1)\n",
+ "xc_ = pc1/(1 - pa1)\n",
+ "Dam = 1/((xb_1/Dab)+(xc_/Dac))\n",
+ "pi1 = P - pa1\n",
+ "pi2 = P - pa2\n",
+ "pim = (pi2-pi1)/log(pi2/pi1)\n",
+ "pim_SI = pim*(1.01325e5)\n",
+ "pa1_SI = pa1*(1.01325e5)\n",
+ "pa2_SI = pa2*(1.01325e5)\n",
+ "Na_SI = Dam*P_SI*(pa1_SI - pa2_SI)/(R_SI*T*(z2-z1)*pim_SI)\n",
+ "Na = Dam*P*(pa1 - pa2)/(R*T*(z2-z1)*pim)\n",
+ "\n",
+ "#Results\n",
+ "print 'The flux calculated is NA= %5.2e kgmol A/(s.m2) using Pa pressure units'%Na_SI\n",
+ "print 'The flux calculated is NA= %5.2e kgmol A/(s.m2) using atm pressure units'%Na"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The flux calculated is NA= 8.74e-05 kgmol A/(s.m2) using Pa pressure units\n",
+ "The flux calculated is NA= 8.74e-05 kgmol A/(s.m2) using atm pressure units\n"
+ ]
+ }
+ ],
+ "prompt_number": 38
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7.6-1, Page number 463"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Knudsen Diffusion of Hydrogen\n",
+ "\n",
+ "#Variable Declaration\n",
+ "P = 1.01325e4 #Total pressure in (Pa)\n",
+ "T = 373. #Temperature in (K)\n",
+ "r = 60. #Radius of the pore in (angstorm)\n",
+ "Ma = 2.016 \n",
+ "#Calculations \n",
+ "r_SI = r*1.e-10 #Radius in(m)\n",
+ "Dka = 97.*r_SI*(T/Ma)**0.5\n",
+ "\n",
+ "#Results\n",
+ "print 'The calculated Knudsen Diffusivity is %4.2e m2/s'%(Dka)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The calculated Knudsen Diffusivity is 7.92e-06 m2/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 69
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7.6-2, Page Number 466"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Transition-Region Diffusion of He and N2\n",
+ "from math import sqrt\n",
+ "\n",
+ "#Variable Declaration\n",
+ "T = 298. #Temperature of gas (K)\n",
+ "r = 2.5e-6 #Radius of the capillary (m)\n",
+ "L = 0.01 #Length of the capillary (m)\n",
+ "P = 1.013e4 #Total Pressure of the gas mixture (Pa)\n",
+ "xa1 = 0.8 #Mole fraction of N2 at one end\n",
+ "xa2 = 0.2 #Mole fraction of N2 at another end \n",
+ "Dab = 6.98e-5 #Molecular Diffusivty at one atmosphere (m2/s)\n",
+ "Ma = 28.02 #Molecular weight of nitrogen \n",
+ "Mb = 4.003 \n",
+ "R = 8314.\n",
+ "\n",
+ "#Calculations\n",
+ "Dabc = Dab/0.1 #Molecular Diffusivity at 0.1 (m2/s)\n",
+ "Dka = 97.0*r*(T/Ma)**.5\n",
+ "NbbyNa = -sqrt(Ma/Mb)\n",
+ "alpha = 1. + NbbyNa\n",
+ "\n",
+ "Na = Dabc*P/(alpha*R*T*L)*log( (1. - alpha*xa2 + Dabc/Dka)/(1. - alpha*xa1 + Dabc/Dka))\n",
+ "Dnad = 1./(1./Dabc + 1./Dka)\n",
+ "Naf = Dnad*P*(xa1 - xa2)/(R*T*L) #Eqn A\n",
+ "\n",
+ "xAav = (xa1 + xa2)/2.\n",
+ "Dacc = 1./( 1./Dka + (1. - alpha*xAav)/Dabc)\n",
+ "Nacc = Dacc*P*(xa1 - xa2)/(R*T*L) #Eqn B\n",
+ "#Results\n",
+ "print 'The flux at steady state is NA= %5.2e kg mol/s.m2'%(Na)\n",
+ "print 'The approximate flux at steady state using two different equations\\nA) %5.2e kgmol/(s.m2) by Eqn A and'%(Naf)\n",
+ "print 'B) %5.2e kgmol/(s.m2) by eqn B' %(Nacc)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The flux at steady state is NA= 6.40e-05 kg mol/s.m2\n",
+ "The approximate flux at steady state using two different equations\n",
+ "A) 9.10e-05 kgmol/(s.m2) by Eqn A and\n",
+ "B) 6.33e-05 kgmol/(s.m2) by eqn B\n"
+ ]
+ }
+ ],
+ "prompt_number": 44
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7.7-1, Page Number 471"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Numerical Solution for Unsteady-State Diffusion with a Distribution Coefficient\n",
+ "import numpy as np\n",
+ "import copy \n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "#Variable Declaration\n",
+ "t = 0.004 #Thickness of the material (m)\n",
+ "Dab = 1.e-9 #Diffusivity of material (m2/s)\n",
+ "ca = 6.e-3 #Concentration of fluid (kg mol A/m3)\n",
+ "K = 1.5 #Distribution coefficient\n",
+ "delx = 0.001\n",
+ "M = 2.\n",
+ "tmax = 2500\n",
+ "xm = np.arange(1,5,1)\n",
+ "c = np.array([1.e-3,1.25e-3,1.5e-3,1.75e-3,2.e-3])\n",
+ "n = np.array([1,2,3,4,5])\n",
+ "#Calculations\n",
+ "plt.plot(n,c, 'bo-')\n",
+ "plt.xlabel('Node number, n')\n",
+ "plt.ylabel('concentration c, kgmol/m3')\n",
+ "delt = delx**2/(2*Dab)\n",
+ "\n",
+ "m = tmax/int(delt)\n",
+ "Ccal = [0,0,0,0,0]\n",
+ "t = 0\n",
+ "print \"After\",t,\"s\"\n",
+ "for i in range(len(n)):\n",
+ " print \"At \",i+1,'th node, the value of concentration is %6.3e kgmol/m3'%c[i]\n",
+ "for i in range(1,6,1):\n",
+ " t = delt*i\n",
+ " #print c\n",
+ " for j in range(len(c)):\n",
+ " if j==0:\n",
+ " if i == 1:\n",
+ " Ccal[j]= (ca/K+c[j])/2\n",
+ " else:\n",
+ " Ccal[j]= ca/K \n",
+ " elif j>=1 and j<(len(c)-1):\n",
+ " Ccal[j]=(c[j-1]+c[j+1])/2.\n",
+ " #print c[j-1], c[j+1], Ccal[j]\n",
+ " else:\n",
+ " Ccal[j]=c[j-1]\n",
+ " c = copy.copy(Ccal)\n",
+ " print \"After\",t,\"s\"\n",
+ " for i in range(len(n)):\n",
+ " print \"At \",i+1,'th node, the value of concentration is %6.3e kgmol/m3'%c[i]\n",
+ "\n",
+ "#Results\n",
+ "plt.plot(n,c,'ro-')\n",
+ "print 'The results are different than book because for first iteration at second node\\nThe value of c(0,1)= 1e-3 is taken as 2.5e-3, which is wrong substitution' "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "After 0 s\n",
+ "At 1 th node, the value of concentration is 1.000e-03 kgmol/m3\n",
+ "At 2 th node, the value of concentration is 1.250e-03 kgmol/m3\n",
+ "At 3 th node, the value of concentration is 1.500e-03 kgmol/m3\n",
+ "At 4 th node, the value of concentration is 1.750e-03 kgmol/m3\n",
+ "At 5 th node, the value of concentration is 2.000e-03 kgmol/m3\n",
+ "After 500.0 s\n",
+ "At 1 th node, the value of concentration is 2.500e-03 kgmol/m3\n",
+ "At 2 th node, the value of concentration is 1.250e-03 kgmol/m3\n",
+ "At 3 th node, the value of concentration is 1.500e-03 kgmol/m3\n",
+ "At 4 th node, the value of concentration is 1.750e-03 kgmol/m3\n",
+ "At 5 th node, the value of concentration is 1.750e-03 kgmol/m3\n",
+ "After 1000.0 s\n",
+ "At 1 th node, the value of concentration is 4.000e-03 kgmol/m3\n",
+ "At 2 th node, the value of concentration is 2.000e-03 kgmol/m3\n",
+ "At 3 th node, the value of concentration is 1.500e-03 kgmol/m3\n",
+ "At 4 th node, the value of concentration is 1.625e-03 kgmol/m3\n",
+ "At 5 th node, the value of concentration is 1.750e-03 kgmol/m3\n",
+ "After 1500.0 s\n",
+ "At 1 th node, the value of concentration is 4.000e-03 kgmol/m3\n",
+ "At 2 th node, the value of concentration is 2.750e-03 kgmol/m3\n",
+ "At 3 th node, the value of concentration is 1.813e-03 kgmol/m3\n",
+ "At 4 th node, the value of concentration is 1.625e-03 kgmol/m3\n",
+ "At 5 th node, the value of concentration is 1.625e-03 kgmol/m3\n",
+ "After 2000.0 s\n",
+ "At 1 th node, the value of concentration is 4.000e-03 kgmol/m3\n",
+ "At 2 th node, the value of concentration is 2.906e-03 kgmol/m3\n",
+ "At 3 th node, the value of concentration is 2.188e-03 kgmol/m3\n",
+ "At 4 th node, the value of concentration is 1.719e-03 kgmol/m3\n",
+ "At 5 th node, the value of concentration is 1.625e-03 kgmol/m3\n",
+ "After 2500.0 s\n",
+ "At 1 th node, the value of concentration is 4.000e-03 kgmol/m3\n",
+ "At 2 th node, the value of concentration is 3.094e-03 kgmol/m3\n",
+ "At 3 th node, the value of concentration is 2.313e-03 kgmol/m3\n",
+ "At 4 th node, the value of concentration is 1.906e-03 kgmol/m3\n",
+ "At 5 th node, the value of concentration is 1.719e-03 kgmol/m3\n",
+ "The results are different than book because for first iteration at second node\n",
+ "The value of c(0,1)= 1e-3 is taken as 2.5e-3, which is wrong substitution\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nLCsr4+LFi7Ru3dq+SJ1Mkoyw+P13eOop2LxZ2+q5gW3AJ0R90u122ahRo/j9998tjy9cuEB4eHid\nX0gIl9OyJfz73/DOO/DXv8Kjj8KFC86OSohGxWqSKSoqok2bNpbHbdu25YL8QxSNyahR2jTn06eh\nf3/48ktnRyREo2E1ybRu3Zp9+/ZZHn/11Ve0bNlS16CEqHft22v71Dz/PNxxh/bf0lJnRyVEg2d1\nTObLL78kJiaGzp07A3Ds2DE2bdrEwIED6yVAR5MxGWFVQYFWJeD0aVi3Dnr1cnZEQjidrmVliouL\nyc7OBqB37954NuDyHJJkhE2UghUrtHI0L7yglacxGJwdlRBOo+s6GU9PT/r27Uvfvn3rlGCSk5Px\n9/fHz8+PJUuWVHtMbGwsfn5+mEwmMjMzrbZ94oknCAgIwGQycffdd3PmzBlAK+jZsmVLQkJCCAkJ\nYcaMGTbHKUQVBgPMnAlffKFtiDZmDBw75uyohGh4lE5KS0uV0WhUZrNZFRcXK5PJpLKysiodk5SU\npCIjI5VSSqWnp6vQ0FCrbVNSUlRZWZlSSqm5c+equXPnKqWUMpvNqk+fPlbj0vEti8aquFipZ55R\nqmNHpTZvdnY0QjiFvZ+dutUuy8jIwNfXFx8fHzw8PIiJiSEhIaHSMYmJiUyePBmA0NBQTp8+zfHj\nx2ttGx4ejpubm6VNfn6+Xm9BCI2HBzz3nFYD7amntNI0l3rQQoja2ZRkCgoK2L17N2lpaezcuZO0\ntDSb2nS9rDaUt7c3BQUFNh1TWFhotS3AqlWriIqKsjw2m82EhIQQFhbGF198YctbE8J2oaGQmQlt\n2kC/ftp+NUKIWrlbO2Du3Lls2rSJwMBAy6p/gOHDh9fazmDjIKmycxB+0aJFeHp6MmHCBAC6dOlC\nXl4e1157Lfv372fs2LEcPHiQttXsjLhw4ULL92FhYYSFhdkVg2iCWrfWJgRs3w4TJ0JMDCxapBXd\nFKIRSU1NJdUBf0hZTTIffvgh2dnZNG/evE4n9vLyIi8vz/I4Ly8Pb2/vWo/Jz8/H29ubkpKSWtuu\nWbOGbdu28dlnn1me8/T0tExK6N+/P0ajkSNHjtC/f/8qsV2eZISwS2QkfPONNuts4EBtjU1wsLOj\nEsJhrvwD/LnnnrPrPFZvlxmNRoqLi+t84oEDB3LkyBFyc3MpLi5m06ZNREdHVzomOjqatWvXApCe\n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\nrkJggg==\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x112b7a30>"
+ ]
+ }
+ ],
+ "prompt_number": 86
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter08.ipynb b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter08.ipynb new file mode 100755 index 00000000..8a328185 --- /dev/null +++ b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter08.ipynb @@ -0,0 +1,390 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:fc87d6d9b6be61c481eaede8b73c8cf240680807ed293ac553e78b065098e01d"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 8: Evaporation"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 8.4-1, Page number 498"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Heat Transfer Area in a Single-Effect Evaporator\n",
+ "\n",
+ "#Variable declaration\n",
+ "F = 9072. #Feed rate to the evaporator, kg/hr\n",
+ "xF = 1. #weight percent of salt, kg/kg\n",
+ "TF = 311.0 #Temperature of feed, K\n",
+ "xL = 1.5 #Weight percentage of concentrated product, kg/kg \n",
+ "P = 101.325 #Pressure of vapor space, kPa\n",
+ "Ps = 143.3 #Pressure of saturated steam used for heating, kPa\n",
+ "U = 1704. #Overall heat transfer coefficient, W/m2K\n",
+ "cpF = 4.140 #Specific heat of Feed to the evaporator, kJ/(kg.K)\n",
+ "Hv373 = 2257. #Latent heat of evaporation of water at 373.2 K\n",
+ "Hv143 = 2230. #Latent heat of evaporation of saturated water at 143.3 kPa\n",
+ "Ts = 383.2 #Temperature of Saturated steam at 143.3 kPa\n",
+ "TL = 373.2 #Temperature of concentrated Liquid enthalpy calculation, K\n",
+ "Tref = 373.2 #Reference temperature for enthalpy calculation, K\n",
+ "\n",
+ "#Calculation \n",
+ "L = F*xF/xL\n",
+ "V = F-L\n",
+ " #Energy Balance\n",
+ "hF = F*cpF*(TF-Tref)\n",
+ "hL = L*cpF*(TL-Tref)\n",
+ "hV = Hv373*V\n",
+ "#hF + q = hL + hV\n",
+ "q = (hL+hV-hF)\n",
+ "S = q/(Hv143)\n",
+ "qsi = q*1000/3600\n",
+ "A = qsi/(U*(Ts-TL))\n",
+ "\n",
+ "#Result\n",
+ "print 'Concetrated liquid Rate: %5.1f kg/h'%L\n",
+ "print 'Vapor rate from evaporator: %5.1f kg/h'%V\n",
+ "print 'Heat Transfer area required: %4.1f m2'%(A)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Concetrated liquid Rate: 6048.0 kg/h\n",
+ "Vapor rate from evaporator: 3024.0 kg/h\n",
+ "Heat Transfer area required: 149.3 m2\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 8.4-2, Page Number 499"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Use of Duhring Chart for Boiling point rise\n",
+ "\n",
+ "#Variable declaration\n",
+ "P = 25.6 #Pressure in the evaporator, kPa\n",
+ "C = 30 #Weight % of NaOH in solution, K\n",
+ "Tb256 = 65.6 #Boiling point of water at 25.6 kPa, \u00b0C or 150 \u00b0C\n",
+ "\n",
+ "#Calculation\n",
+ "#From Fig. 8.4-2 for 30% wt of NaoOH and boiling point of water 150 \u00b0F\n",
+ "Ts = 175 #Boiling point of solution \u00b0F\n",
+ "TsC = 79.5 #Boiling point of solution \u00b0C\n",
+ "BPR = TsC-Tb256\n",
+ "#Result\n",
+ "\n",
+ "print \"Boiling point rise: \",BPR,\"\u00b0C\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Boiling point rise: 13.9 \u00b0C\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 8.4-3, Page number 501"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Evaporation of NaOH Solution\n",
+ "\n",
+ "# Variable declaration\n",
+ "F = 4536. #Feed rate to the evaporator, kg/hr\n",
+ "xF = 0.2 #weight percent of NaOH, kg/kg\n",
+ "TF = 60.0 #Temperature of feed, \u00b0C\n",
+ "xL = 0.5 #Weight percentage of concentrated product, kg/kg \n",
+ "P = 11.7 #Pressure of vapor space, kPa\n",
+ "Ps = 172.4 #Pressure of saturated steam used for heating, kPa\n",
+ "U = 1560. #Overall heat transfer coefficient, W/m2K\n",
+ "cpS = 1.884 #Specific heat of steam 11.7 kPa , kJ/(kg.K)\n",
+ "Hv895 = 2667. #Enthalpy of steam at 11.7 kPa and 89.5\u00b0C\n",
+ "Hv489 = 2590. #Enthalp of steam at 11.7 kPa and 49.5\u00b0C\n",
+ "LambdaV1724 = 2214 #Latent heat of evaporation of water at 172.4 kPa and at 115.6\u00b0C\n",
+ "Ts = 115.6 #Saturation temperature of 172.4kPa in \u00b0C\n",
+ "\n",
+ "# Calculation\n",
+ "L = F*xF/xL\n",
+ "V = F - L\n",
+ "BPw117 = 48.9 #BP of Water From steam table, \u00b0C\n",
+ "BPs117 = 89.5 #BP of Soln From Duhring Chart Fig 8.4-2, \u00b0C\n",
+ "BPR = BPs117-BPw117\n",
+ "hF = 214. #Enthalpy of 20% feed at 60\u00b0C, KJ/Kg from fig 8.4-3 \n",
+ "hL = 505. #Enthalpy of 50% feed at 89.5\u00b0C, KJ/Kg\n",
+ "HV = Hv489 + cpS*BPR\n",
+ "S = (L*hL+V*HV-F*hF)/LambdaV1724\n",
+ "Q = S*LambdaV1724/3600 #Heat addition rate in kW\n",
+ "#Newtons law of cooling \n",
+ "\n",
+ "A = Q*1000/(U*(Ts-BPs117))\n",
+ "SteamEco = V/S\n",
+ "#Result\n",
+ "print \"The steam used\",round(S,1),\"kg steam/h\"\n",
+ "print \"The calculated steam economy is \",round(SteamEco,3)\n",
+ "print \"The heating surface area is \", round(A,1),\"m2\"\n",
+ "print 'Difference in answers is due to machin precision'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The steam used 3253.2 kg steam/h\n",
+ "The calculated steam economy is 0.837\n",
+ "The heating surface area is 49.1 m2\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 8.5-1, Page number 505"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Evaporation of Sugar Solution in a Triple-Effect Evaporator\n",
+ "import numpy as np\n",
+ "from scipy.interpolate import interp1d\n",
+ "\n",
+ "# Variable declaration\n",
+ "xF = 0.1 #wt fraction of sugar in Feed\n",
+ "xP = 0.5 #wt fraction of sugar in Product\n",
+ "Ts1 = 121.1 #Saturation temperature of the steam at 205.5kPa in \u00b0C\n",
+ "F = 22680. #Feed Rate kg/hr\n",
+ "TF = 26.7 #Temperature of the feed, \u00b0C\n",
+ "U1 = 3123. #Overall heat transfer coefficient for evaporator 1, W/(m2K) \n",
+ "U2 = 1987. #Overall heat transfer coefficient for evaporator 2, W/(m2K)\n",
+ "U3 = 1136. #Overall heat transfer coefficient for evaporator 3, W/(m2K)\n",
+ "T = np.array([50.,60.,70.,80.,90.,100.,110.,120,126.])\n",
+ "H = np.array([2592.2,2609.7,2626.9,2643.8,2660.1,2676.0,2691.3,2706.0,2714.4])\n",
+ "h = np.array([209.3,251.1,293.0,334.9,376.9,419.1,461.3,503.7,529.2])\n",
+ "lamb = np.array([2382.9,2358.6,2334.0,2308.8,2283.2,2256.9,2230.0,2202.2,2185.2])\n",
+ "cp = np.array([])\n",
+ "\n",
+ "# Calculation\n",
+ "def BPRDegC(xw):\n",
+ " return 1.78*xw+6.22*xw*xw\n",
+ "\n",
+ "def SpecHeat(xw):\n",
+ " return 4.19-2.35*xw\n",
+ "\n",
+ "fH = interp1d(T,H)\n",
+ "fh = interp1d(T,h)\n",
+ "flamb = interp1d(T,lamb)\n",
+ "\n",
+ "#Step 1\n",
+ "BPR3 = BPRDegC(xP)\n",
+ "Tvs3 = 51.67 #Saturation temperature of steam at 13.4 kPa for 3rd evaporator\n",
+ "T3 = Tvs3 + BPR3\n",
+ "\n",
+ "#Step 2\n",
+ "L3 = F*xF/xP #Concentrated product rate, kg/hr\n",
+ "V = F - L3 #Total water vaporised from three evaporators (V = V1 + v2 +v3 ), kg/hr\n",
+ "V1 = V/3 #Assuming V1 = V2 = V3\n",
+ "V2 = V1\n",
+ "V3 = V1\n",
+ "#Making liquid balance on each evaporator \n",
+ "L1 = F - V1 #Concentrated liquid rate from evaporator 1, kg/hr\n",
+ "L2 = L1 - V2 #Concentrated liquid rate from evaporator 2, kg/hr\n",
+ "L3 = L2 - V3\n",
+ "#Making Solid balance on each evaporator \n",
+ "x1 = F*xF/L1\n",
+ "x2 = L1*x1/L2\n",
+ "x3 = xP\n",
+ "\n",
+ "#Step 3\n",
+ "BPR1 = BPRDegC(x1)\n",
+ "BPR2 = BPRDegC(x2)\n",
+ "BPR3 = BPRDegC(x3)\n",
+ "SDelT = Ts1 - Tvs3 - (BPR1+BPR2+BPR3)\n",
+ "ISU13 = 1/U1+1/U2+1/U3\n",
+ "DelT1 = SDelT*(1/U1)/ISU13\n",
+ "DelT2 = SDelT*(1/U2)/ISU13\n",
+ "DelT3 = SDelT*(1/U3)/ISU13\n",
+ "T1 = Ts1 - DelT1\n",
+ "T2 = T1 - BPR1 - DelT2\n",
+ "Ts2 = T1 - BPR1\n",
+ "T3 = T2 -BPR2 - DelT3\n",
+ "Ts3 = T2 - BPR2\n",
+ "Ts4 = T3 - BPR3\n",
+ "\n",
+ "#Step4: \n",
+ "CpF = SpecHeat(xF) #Calculate Heat Capacities\n",
+ "Cp1 = SpecHeat(x1)\n",
+ "Cp2 = SpecHeat(x2)\n",
+ "Cp3 = SpecHeat(x3)\n",
+ "\n",
+ "H1 = fH(Ts2) + 1.884*BPR1 #for effect 1\n",
+ "lambdas1 = fH(Ts1)-fh(Ts1) \n",
+ "H2 = fH(Ts3) + 1.884*BPR2 #for effect 2\n",
+ "lambdas2 = fH(Ts2)-fh(Ts2) \n",
+ "H3 = fH(Ts4) + 1.884*BPR3 #for effect 3\n",
+ "lambdas3 = fH(Ts3)-fh(Ts3) \n",
+ "\n",
+ "a11 = Cp1*T1 - lambdas2 - H2\n",
+ "a12 = -(Cp2*T2 - H2)\n",
+ "b1 = -F*lambdas2\n",
+ "a21 = lambdas3\n",
+ "a22 = Cp2*T2 - lambdas3 - H3\n",
+ "b2 = L3*Cp3*T2 - L3*H3\n",
+ "\n",
+ "\n",
+ "a = np.array([[a11,a12], [a21,a22]])\n",
+ "b = np.array([b1,b2])\n",
+ "L1,L2 = np.linalg.solve(a, b)\n",
+ "V1 = F - L1\n",
+ "V2 = L1 - L2\n",
+ "V3 = L2 - L3\n",
+ "S = (L1*Cp1*T1 + V1*H1 - F*CpF*TF)/lambdas1\n",
+ "\n",
+ "#Step5:\n",
+ "q1 = S*lambdas1*1000/3600\n",
+ "q2 = V1*lambdas2*1000/3600\n",
+ "q3 = V2*lambdas3*1000/3600\n",
+ "\n",
+ "A1 = q1/(U1*DelT1)\n",
+ "A2 = q2/(U2*DelT2)\n",
+ "A3 = q3/(U3*DelT3)\n",
+ "\n",
+ "Am = Am1 = (A1+A2+A3)/3\n",
+ "\n",
+ "#Step6:\n",
+ "x1 = F*xF/L1\n",
+ "x2 = L1*x1/L2\n",
+ "x3 = L2*x2/L3\n",
+ "\n",
+ "#Step7:\n",
+ "BPR1 = BPRDegC(x1)\n",
+ "BPR2 = BPRDegC(x2)\n",
+ "BPR3 = BPRDegC(x3)\n",
+ "SDelT = Ts1 - Tvs3 - (BPR1+BPR2+BPR3)\n",
+ "\n",
+ "DelT1 = DelT1*A1/Am\n",
+ "DelT2 = DelT2*A2/Am\n",
+ "DelT3 = DelT3*A3/Am\n",
+ "\n",
+ "T1 = Ts1 - DelT1\n",
+ "T2 = T1 - BPR1 - DelT2\n",
+ "Ts2 = T1 - BPR1\n",
+ "T3 = T2 -BPR2 - DelT3\n",
+ "Ts3 = T2 - BPR2\n",
+ "Ts4 = T3 - BPR3\n",
+ "\n",
+ "\n",
+ "#Step8: \n",
+ "CpF = SpecHeat(xF) #Calculate Heat Capacities\n",
+ "Cp1 = SpecHeat(x1)\n",
+ "Cp2 = SpecHeat(x2)\n",
+ "Cp3 = SpecHeat(x3)\n",
+ "\n",
+ "H1 = fH(Ts2) + 1.884*BPR1 #for effect 1\n",
+ "lambdas1 = fH(Ts1)-fh(Ts1) \n",
+ "H2 = fH(Ts3) + 1.884*BPR2 #for effect 2\n",
+ "lambdas2 = fH(Ts2)-fh(Ts2) \n",
+ "H3 = fH(Ts4) + 1.884*BPR3 #for effect 3\n",
+ "lambdas3 = fH(Ts3)-fh(Ts3) \n",
+ "\n",
+ "a11 = Cp1*T1 - lambdas2 - H2\n",
+ "a12 = -(Cp2*T2 - H2)\n",
+ "b1 = -F*lambdas2\n",
+ "a21 = lambdas3\n",
+ "a22 = Cp2*T2 - lambdas3 - H3\n",
+ "b2 = L3*Cp3*T2 - L3*H3\n",
+ "\n",
+ "a = np.array([[a11,a12], [a21,a22]])\n",
+ "b = np.array([b1,b2])\n",
+ "L1,L2 = np.linalg.solve(a, b)\n",
+ "V1 = F - L1\n",
+ "V2 = L1 - L2\n",
+ "V3 = L2 - L3\n",
+ "S = (L1*Cp1*T1 + V1*H1 - F*CpF*TF)/lambdas1\n",
+ "\n",
+ "q1 = S*lambdas1*1000/3600\n",
+ "q2 = V1*lambdas2*1000/3600\n",
+ "q3 = V2*lambdas3*1000/3600\n",
+ "\n",
+ "A1 = q1/(U1*DelT1)\n",
+ "A2 = q2/(U2*DelT2)\n",
+ "A3 = q3/(U3*DelT3)\n",
+ "Am = (A1+A2+A3)/3\n",
+ "SEconomy = (V1+V2+V3)/S\n",
+ "\n",
+ "#Results\n",
+ "print 'Area A1 A2 and A3 for 1st 2nd and 3rd effect are %4.3f, %4.3f,and %4.3f'%(A1,A2,A3) \n",
+ "print \"The Average area of each effect\",round(Am,2),\"as compared to average area\",round(Am1,2),\"in first trial\" \n",
+ "print \"Steam Economy for tripple effect evaporator:\", round(SEconomy,3) \n",
+ "print 'Difference in answers is due to machin precision'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Area A1 A2 and A3 for 1st 2nd and 3rd effect are 111.421, 113.714,and 111.640\n",
+ "The Average area of each effect 112.26 as compared to average area 112.08 in first trial\n",
+ "Steam Economy for tripple effect evaporator: 1.999\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter09.ipynb b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter09.ipynb new file mode 100755 index 00000000..94a1924e --- /dev/null +++ b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter09.ipynb @@ -0,0 +1,985 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:f28b10e862601fa7c238c02abbd33f9e5034b01e48fba8ea70e2e847c96ba3bd"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 9: Drying of Process Material"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.3-1 Page Number 526"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Humidity from Vapor-pressure Data\n",
+ "\n",
+ "#Variable declaration\n",
+ "Pas = 3.5 #Vapor pressure of water at 26.7 deg C (kPa)\n",
+ "Pa = 2.76 #Partial pressure of water vapor (kPa)\n",
+ "P = 101.3 #Pressure at room temperature (kPa)\n",
+ "\n",
+ "#Calculation\n",
+ " #Calculation for part (a)\n",
+ "H = 18.02*Pa/(28.97*(P - Pa))\n",
+ " #Calculation for part (b)\n",
+ "Hs = 18.02*Pas/(28.97*(P - Pas))\n",
+ "Hp = 100.*H/Hs \n",
+ " #Calculation for part (c)\n",
+ "Hr = 100.*Pa/Pas\n",
+ "#Result\n",
+ "print \"(a) The Humidity is\",round(H,5),\"kg H2O/(kg dry air)\"\n",
+ "print \"(b) The saturation humidity is\",round(Hs,5),\"kg H2O/(kg dry air)\"\n",
+ "print \"(b) The percentage humidity is\",round(Hp,1),\"%\"\n",
+ "print \"(c) The precentage relative humidity is\",round(Hr,1),\"%\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "(a) The Humidity is 0.01742 kg H2O/(kg dry air)\n",
+ "(b) The saturation humidity is 0.02226 kg H2O/(kg dry air)\n",
+ "(b) The percentage humidity is 78.3 %\n",
+ "(c) The precentage relative humidity is 78.9 %\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.3-2 Page Number 528"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Use of Humidity Chart\n",
+ "\n",
+ "#Variable declaration\n",
+ "T = 60. #Dry bulb temperature of air (deg C)\n",
+ "T_F = 140. #Temperature in FPS units (deg F)\n",
+ "Td = 26.7 #Dew point of air (deg C)\n",
+ "\n",
+ "#Calculation\n",
+ "H = 0.0225 #Actual humid heat (Value determined from the Psychrometric chart)\n",
+ "\n",
+ "Cs_SI = 1.005 + 1.88*H\n",
+ "Cs_Eng = 0.24 + 0.45*H\n",
+ "Vh_SI = (2.83e-3 + 4.56e-3*H)*(T + 273.)\n",
+ "Vh_Eng = (0.0252 + 0.0405*H)*(T_F + 460.)\n",
+ "\n",
+ "#Result\n",
+ "print 'Actual humidity determine using Humidity chart= %5.4f kgH2O/kgdry air'%H\n",
+ "print \"The calculated Humid Heat in SI units is\",round(Cs_SI,3),\"kJ/(kg dry air.K)\"\n",
+ "print \"The calculated Humid Heat in English units is\",round(Cs_Eng,3),\"btu/(lbm dry air.\u00b0C)\"\n",
+ "print \"The calculated Humid Volume in SI units is \",round(Vh_SI,3),\"m3/kg dry air\"\n",
+ "print \"The calculated Humid Volume in English units is\",round(Vh_Eng,2),\"ft3/lbm dry air\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Actual humidity determine using Humidity chart= 0.0225 kgH2O/kgdry air\n",
+ "The calculated Humid Heat in SI units is 1.047 kJ/(kg dry air.K)\n",
+ "The calculated Humid Heat in English units is 0.25 btu/(lbm dry air.\u00b0C)\n",
+ "The calculated Humid Volume in SI units is 0.977 m3/kg dry air\n",
+ "The calculated Humid Volume in English units is 15.67 ft3/lbm dry air\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.3-3 Page Number 531 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Adiabatic Saturation of Air\n",
+ "\n",
+ "#Variable declaration\n",
+ "Ha = 0.030 #Humidity of dry air (kg H2O/kg dry air)\n",
+ "\n",
+ "#Calculation\n",
+ " #Calculation for (a)\n",
+ "Hb = 0.0500 #Value determined from Humidity chart for 90 % saturation (kg H2O/kg dry air)\n",
+ "T = 42.5 #Value determined from Humidity chart for 90 % saturation (deg C)\n",
+ " #Calculation for (b)\n",
+ "Hb = 0.0505 #Value determined from Humidity chart for 100 % saturation (kg H2O/kg dry air)\n",
+ "Tb = 40.5 #Value determined from Humidity chart for 90 % saturation (deg C)\n",
+ "#Result\n",
+ "print \"(a) The value of humidity at 90 % saturation is \",Ha,\"(kg H2O/kg dry air)\"\n",
+ "print \" The value of temperature at 90 % saturation is \",T,\"deg C\"\n",
+ "print \"(b) The value of humidity at 100 % saturation is \",Hb,\"(kg H2O/kg dry air)\"\n",
+ "print \" The value of temperature at 100 % saturation is \",Tb,\"deg C\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "(a) The value of humidity at 90 % saturation is 0.03 (kg H2O/kg dry air)\n",
+ " The value of temperature at 90 % saturation is 42.5 deg C\n",
+ "(b) The value of humidity at 100 % saturation is 0.0505 (kg H2O/kg dry air)\n",
+ " The value of temperature at 100 % saturation is 40.5 deg C\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.3-4 Page Number 532 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Wet Bulb Temperature and Humidity\n",
+ "\n",
+ "#Variable declaration\n",
+ "T = 60. #Dry bulb temperature of vapor-air mixture (deg C)\n",
+ "Tw = 29.5 #Obtained wet bulb temperature (deg C)\n",
+ "\n",
+ "#Calculation\n",
+ "H = 0.0135 #Humidity obtained from the adiabatic saturation curve (kg H2O/kg dry air)\n",
+ "\n",
+ "#Result\n",
+ "print \"The humidity obtained from the adiabatic curve is\",H,\"(kg H2O/kg dry air)\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The humidity obtained from the adiabatic curve is 0.0135 (kg H2O/kg dry air)\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.6-1 Page Number 541"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Time of Drying from Drying Curve\n",
+ "\n",
+ "#Variable declaration\n",
+ "X1 = 0.38 #Initial Moisture content (kg H2O/kg dry solid)\n",
+ "X2 = 0.25 #Final Moisture content (kg H2O/kg dry solid)\n",
+ "t1 = 1.28 #Time required for drying solid (h) (Value determined from fig. 9.5-1A)\n",
+ "t2 = 3.08 #Time required for drying solid (h) (Value determined from fig. 9.5-1A)\n",
+ "\n",
+ "#Calculation\n",
+ "t = t2 - t1 \n",
+ "#Result\n",
+ "print \"The time required is \",t,\"h\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The time required is 1.8 h\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.6-2 Page Number 541"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Time of Drying from Drying Curve\n",
+ "\n",
+ "#Variable declaration\n",
+ "X1 = 0.38 #Initial Moisture content (kg H2O/kg dry solid)\n",
+ "X2 = 0.25 #Final Moisture content (kg H2O/kg dry solid)\n",
+ "LsbyA = 21.5 #From Fig.9.5-1b\n",
+ "Rc = 1.51 #From Fig.9.5-1b\n",
+ "#Calculation\n",
+ "t = LsbyA*(X1 - X2)/Rc\n",
+ "#Result\n",
+ "print \"The time required is \",round(t,2),\"h\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The time required is 1.85 h\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.6-3 Page Number 543 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Prediction of Constant-Rate Drying\n",
+ "\n",
+ "#Varialbe declaration\n",
+ "A_eng = 1.5*1.5 #Area of pan (ft2)\n",
+ "H = 0.01 #Humidity of air stream (kg H2O/kg dry air) or (lbm H2O/lbm dry air)\n",
+ "Hw = 0.026 #Saturated Humidity (kg H2O/kg dry air) or (lbm H2O/lbm dry air)\n",
+ "\n",
+ "#Variable declaration SI units\n",
+ "A = 0.457*0.457 #Area of pan (m2)\n",
+ "T = 65.6 #Dry bulb temperature (deg C)\n",
+ "Tw = 28.9 #Wet bulb temperature (deg C) \n",
+ "v = 6.1 #Velocity of air stream flowing parallel to the surface (m/s)\n",
+ "lambdaw = 2433. #Value determined from steam table (kJ/kg)\n",
+ "lambdaw_eng = 1046. #Value determined from steam table (btu/lbm) \n",
+ "\n",
+ "#Calculation\n",
+ "Vh = (2.83e-3 + 4.56e-3*H)*(T + 273.)\n",
+ "Rho = (1. + H)/0.974\n",
+ "G = v*3600.*Rho\n",
+ "h = 0.0204*G**0.8\n",
+ "Tw = 28.9\n",
+ "Rc_SI = (h/(lambdaw*1000.))*(T - Tw)*3600.\n",
+ "R = Rc_SI*A\n",
+ "\n",
+ "print \"Results in SI units\"\n",
+ "print \"The calculated total rate of evaporation in SI Units \",round(R,3),\"kg H2O/h\"\n",
+ "\n",
+ "#Variable declaration English units\n",
+ "T_eng = 150. #Dry bulb temperature (F)\n",
+ "Tw = 28.9 #Wet bulb temperature (deg C) \n",
+ "v_eng = 20. #Velocity of air stream flowing parallel to the surface (ft/s)\n",
+ "lambdaw_eng = 1046. #Value determined from steam table (btu/lbm) \n",
+ "Tw_eng = 84.\n",
+ "\n",
+ "#Calculation\n",
+ "Vh_eng = (0.0252 + 0.0405*H)\n",
+ "Rho_eng = 0.0647\n",
+ "G_eng = v_eng*3600.*Rho_eng\n",
+ "h_eng = 0.0128*G_eng**0.8\n",
+ "Rc_Eng = h_eng*(T_eng - Tw_eng)/lambdaw_eng\n",
+ "R_eng = Rc_Eng*A_eng\n",
+ "\n",
+ "#Result\n",
+ "print \"Results in English units\"\n",
+ "print \"The calculated total rate of evaporation in English Units\",round(R_eng,3),\"lbm H2O/h\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Results in SI units\n",
+ "The calculated total rate of evaporation in SI Units 0.708 kg H2O/h\n",
+ "Results in English units\n",
+ "The calculated total rate of evaporation in English Units 1.563 lbm H2O/h\n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.7-1 Page Number 545"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Graphical Integration in Falling-Rate Drying Period\n",
+ "import numpy as np\n",
+ "from scipy.interpolate import interp1d\n",
+ "import scipy.integrate as integrate\n",
+ "from matplotlib.pylab import plot,fill_between\n",
+ "\n",
+ "#Variable declaration\n",
+ "X1 = 0.38 #Free moisture content (kg H2O/kg dry soild)\n",
+ "X2 = 0.04 #Dry solid (kg H2O/kg dry soild)\n",
+ "Ls = 399. #Weight of dry solid (kg)\n",
+ "A = 18.58 #Area of top drying surface (m2)\n",
+ "\n",
+ "Xc = 0.195 #Critical free moisture content (kg H2O/kg dry soild)\n",
+ "Rc = 1.51 \n",
+ "#Calculation\n",
+ "LsbyA = Ls/A\n",
+ "tc = LsbyA*(X1 - Xc)/Rc #Time required for drying under constant rate period\n",
+ "\n",
+ "X = np.array([0.195,0.150,0.1,0.065,0.05,0.04])\n",
+ "R = np.array([1.51,1.21,0.9,0.71,0.37,0.27])\n",
+ "InvR = 1/R\n",
+ "plot(X,InvR,'ro-')\n",
+ "f = interp1d(X,InvR)\n",
+ "AUC = -integrate.simps(InvR,X) #Time required for drying under falling rate period\n",
+ "tf = AUC*LsbyA\n",
+ "\n",
+ "tfs = str(round(tf,2))\n",
+ "plot([Xc,Xc],[0.,InvR[0]])\n",
+ "plot([X2,X2],[0.,InvR[len(X)-1]])\n",
+ "xlabel(\"Moisture content, Kg H2O/kg Dry solid\")\n",
+ "ylabel(\"Drying Rate, kg H2O/(h.m2)\")\n",
+ "fill_between(X,InvR,0,color='0.8')\n",
+ "#Result\n",
+ "print \"Total drying time:\", round(tc+tf,3), \"h\"\n",
+ "title('Area under curve in falling rate period')\n",
+ "text(0.1,0.5,'Area='+tfs)\n",
+ "\n",
+ "print 'Because of numerical integration answer is different than graphical'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total drying time: 6.536 h\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "pyout",
+ "prompt_number": 15,
+ "text": [
+ "<matplotlib.text.Text at 0x63fdd70>"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x6370f70>"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.7-2 Page Number 547 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Approximation of Straight Line for Falling-Rate Period\n",
+ "\n",
+ "#Variable declaration\n",
+ "Rc = 1.51\n",
+ "Xc = 0.195 #Critical free moisture content (kg H2O/kg dry soild)\n",
+ "X2 = 0.040 #Dry solid (kg H2O/kg dry soild)\n",
+ "Ls = 399. #Weight of dry solid (kg)\n",
+ "A = 18.58 #Area of top drying surface (m2)\n",
+ "LsbyA = Ls/A\n",
+ "\n",
+ "#Calculation\n",
+ "t = LsbyA*Xc*log(Xc/X2)/(Rc)\n",
+ "#Result\n",
+ "print \"The falling rate period is\",round(t,2),\"h\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The falling rate period is 4.39 h\n"
+ ]
+ }
+ ],
+ "prompt_number": 16
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.8-1 Page Number 550"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Constant-Rate Drying When Radiation and Convention are Present \n",
+ "import numpy as np\n",
+ "from scipy.interpolate import interp1d\n",
+ "from scipy.optimize import root\n",
+ "\n",
+ "#Variable declaration\n",
+ "t2 = np.array([293,298,303,308,313,318,323])\n",
+ "Hs = np.array([14.8,20.2,27.6,36.,49.,65.,87.])\n",
+ "\n",
+ "t1 = np.array([280,285,290,295,300,305,310,315,320,325,330,335,340])\n",
+ "lambds = np.array([2485.4,2473.9,2462.2,2450.3,2438.4,2426.3,2414.3,2402.0,2389.8,2377.6,2365.3,2353.0,2340.5])\n",
+ "\n",
+ "T = 65.6 #Temperature of the bottom metal surface (deg C)\n",
+ "Zs = 0.0254 #Depth of the pan (m)\n",
+ "Km = 43.3 #Thermal conductivity of pan (W/m.K)\n",
+ "Ks = 0.865 #Thermal conductivity of material (W/m.K)\n",
+ "Zm = 0.00061 #Thickness of the metal pan (m)\n",
+ "e = 0.92 #Emissivity of the solid \n",
+ "H = 0.010 #Humidity of dry air (kg H2O/kg dry air)\n",
+ "Tw = 28.9 #Wet bulb temperature (deg C)\n",
+ "Ts = 32.2\n",
+ "Tr = 93.3 #Temperature of the surface (deg C)\n",
+ "lams = 2424. #Value determined from steam table (kJ/kg)\n",
+ "tsg = 32.2\n",
+ "u = 6.1 #m/s\n",
+ "\n",
+ "#Calculation\n",
+ "fHs = interp1d(t2,Hs)\n",
+ "flambd = interp1d(t1,lambds)\n",
+ "T1 = Tr + 273.2\n",
+ "T2 = Ts + 273.2\n",
+ "cs = (1.005 + 1.88*H)*1e3\n",
+ "Rho = (1. + H)/0.974\n",
+ "G = u*3600.*Rho\n",
+ "hc = 0.0204*G**0.8\n",
+ "UK = 1/(1/hc+Zm/Km+Zs/Ks)\n",
+ "er = 1.02\n",
+ "Tsg = 303.5\n",
+ "while er >= 0.1:\n",
+ " print \"Watch function value displyed to fall near to zero\"\n",
+ " Tsg = float(raw_input(\"Enter the guess temperature \")) + 273.2\n",
+ " hr = e*5.676*((T1/100)**4-((Tsg)/100)**4)/(T1-(Tsg))\n",
+ " Hs = fHs(Tsg)*1e-3\n",
+ " lambdas = flambd(Tsg)*1e3\n",
+ " k1 = (Hs-0.01)*lambdas/cs\n",
+ " k2 = 1+UK/hc\n",
+ " k3 = hr/hc\n",
+ " f = lambda tsc: -k1 + k2*(T-tsc) + k3*(Tr-tsc)\n",
+ " sol = root(f,T)\n",
+ " tsc = sol.x[0]\n",
+ " er = abs(Tsg-(tsc+273.2))\n",
+ " print er\n",
+ " if er <= 0.01: break\n",
+ " Tsg = tsc+273.2\n",
+ "\n",
+ "Rc = ((hc+UK)*(T-tsc)+hr*(Tr-tsc))*3600./lambdas\n",
+ "#Result\n",
+ "\n",
+ "print \"Rate of constant drying to \", round(Rc,2),\"kg/(h.m2)\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Watch function value displyed to fall near to zero\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter the guess temperature 34.4\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "6.79133441651\n",
+ "Watch function value displyed to fall near to zero\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter the guess temperature 32.5\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "0.0923167102895\n",
+ "Rate of constant drying to 4.86 kg/(h.m2)\n"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.9-1 Page Number 553"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Drying slabs of wood when Diffusion of Moisture Controls\n",
+ "\n",
+ "#Variable declaration\n",
+ "Dl = 2.97e-6 #Experimental average diffusion cofficient (m2/h)\n",
+ "X_ = 0.04 #Moisture content of wood (kg H2O/kg dry wood)\n",
+ "Xt1 = 0.29 #Initial average moisture content \n",
+ "Xt = 0.09 #Final average moisture content \n",
+ "d = 25.4 #Thickness of the wooden plank (mm)\n",
+ "#Calculation\n",
+ "X1 = Xt1 - X_ #The free moisture content \n",
+ "X = Xt - X_\n",
+ "x1 = d/(2*1000.)\n",
+ "t = 4*(x1**2)*log(8*X1/((pi**2)*X))/((pi**2)*Dl)\n",
+ "Ea = X/X1\n",
+ "Dltbyx12 = 0.56\n",
+ "t_g = x1**2*Dltbyx12/Dl\n",
+ "#Result\n",
+ "print \"The time needed for drying by calculation is\",round(t,1),\"h\"\n",
+ "print \"The time needed for drying by graph is\",round(t_g,1),\"h\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The time needed for drying by calculation is 30.8 h\n",
+ "The time needed for drying by graph is 30.4 h\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.9-2 Page Number 555"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Diffusion Coefficient in the Tapoica Root\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "from scipy.interpolate import interp1d\n",
+ "from scipy.optimize import root\n",
+ "#Variable declaration\n",
+ "XbyXc = np.array([1.,0.8,0.63,0.55,0.4,0.3,0.23,0.18])\n",
+ "t = np.array([0.,0.15,0.27,0.40,0.6,0.8,0.94,1.07])\n",
+ "xbyxc = 0.2\n",
+ "\n",
+ "#Calculation\n",
+ "x1 = 3./2.\n",
+ "plt.gca().set_yscale('log')\n",
+ "f = interp1d(t,XbyXc)\n",
+ "f1 = lambda tt: f(tt)-xbyxc\n",
+ "sol = root(f1,.97)\n",
+ "txbyxc = sol.x[0]\n",
+ "\n",
+ "plot(t,XbyXc,'bo-')\n",
+ "plot([0.0,txbyxc,txbyxc],[0.2,0.2,0.1],'k')\n",
+ "#plot([txbyxc,txbyxc],[0.2,0.1],'k')\n",
+ "xlabel('$Time, h$')\n",
+ "ylabel('$X/X_c$')\n",
+ "# for xbyxc = 0.2 from fig 9.9-1 Dl*t/x**2 = 0.56\n",
+ "absc = 0.56\n",
+ "DL =absc*x1**2/(txbyxc*3600)\n",
+ "#Result\n",
+ "print \"Time required for drying to\", xbyxc,\"is \", round(txbyxc,2),\"hr\"\n",
+ "print 'Average moisture diffusivity %6.2e' %(DL),'m2/s'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Time required for drying to 0.2 is 1.02 hr\n",
+ "Average moisture diffusivity 3.44e-04 m2/s\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nAFhCkQAALKFIAACWUCRAA+3fv1833XSTFi5cqGHDhmnKlClauHChevfurbFjxzba71m9erUGDhzY\naN8HNJWg3SIFsMvOnTu1evVqRUVF6c0339SDDz6oLl266Morr1RGRkaj/Z7ExERdf/31jfZ9QFNh\nRgI0UGJioqKioiSZs5MuXbpIUu1/NpbNmzeHxG65CH3MSIAG6t27tyTz4VROp1OSVFpaqoKCAn38\n8ce67bbbtHHjRq1YsUJDhgyRYRhyu90aMWKEjh49Kkm68847JUlr1qzR3r171axZM916661q165d\n7e/ZsmWLEhIStHz5clVXV+v222/380gB7zAjAXxUWFiofv36SZK++uortW7dWpWVlZJ+fNBRfHy8\nxowZo5KSEg0ePFg333yzduzYIUn69NNP9fjjj2v69Onq1q2bfvjhhzrfv3fvXk2ePFlpaWlBsasz\nwhdFAvioqKiotkgGDBigVatW1T5468Ybb1Rpaan69u2rkydPqnXr1rrsssu0ZcsW9erVS5L01ltv\nKTExUe+8844cDocSEhJqv/uHH35Qq1at1KZNmzqfAQIRRQL4qKioSH379pUkHT9+XA6HQyUlJZKk\nU6dOKSYmRpK0bdu22kXz1atXa9CgQSopKVHz5s01atQo3XzzzRo0aJAOHz6sgwcP1n53//79az8z\nYMCA2pkMEGgoEqCBiouL9dRTT6mkpERvvvmmDh8+rOrqarVt21YVFRWSpF27dmnIkCGSpI8++khD\nhw6VJLVv315bt25VcnKyMjIyVFJSory8PC1fvlxVVVUaNmyYJPO01pnPXHXVVSoqKlLPnj1tGC1w\ncTzYCgggbrdbqampdscAGoQZCRBAzsxogGDCjAQAYAkzEgCAJRQJAMASigQAYAlFAgCwhCIBAFhC\nkQAALKFIAACWUCQAAEv+H0HymmNUDGStAAAAAElFTkSuQmCC\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x6406150>"
+ ]
+ }
+ ],
+ "prompt_number": 19
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.10-1 Page Number 559"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Through Circulation Drying in a Bed\n",
+ "import numpy as np\n",
+ "from scipy.interpolate import interp1d\n",
+ "\n",
+ "#Variable declaration\n",
+ "Xt1 = 1. #Initial total moisture content (kg H2O/kg dry air)\n",
+ "Xs = 0.01 #The equilibrium moisture content (kg H2O/kg dry air)\n",
+ "Rho = 1602. #Density of dry solid (kg/m3)\n",
+ "Rhos = 641. #Density of dry solid (kg/m3)\n",
+ "H1 = 0.04 #Inlet air humidity (kg H2O/kg dry air)\n",
+ "T1 = 121.1 #Temperature of air (deg C)\n",
+ "v = 0.811 #Gas superficial velocity (m/s)\n",
+ "Xtc = 0.5 #The total critical moisture content \n",
+ "Xt = 0.1 #Final total moisture content (kg H2O/kg dry air) \n",
+ "x1 = 0.0508 #Depth of packed cylinders\n",
+ "mu = 2.15e-5 #Viscosity of air, kg/(m.s) \n",
+ "\n",
+ "T = np.array([280,285,290,295,300,305,310,315,320,325,330,335,340])\n",
+ "lambds = np.array([2485.4,2473.9,2462.2,2450.3,2438.4,2426.3,2414.3,2402.0,2389.8,2377.6,2365.3,2353.0,2340.5])\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "flambd = interp1d(T,lambds)\n",
+ "lambdaw = flambd(320.2)\n",
+ "X1 = Xt1 - Xs\n",
+ "Xc = Xtc - Xs\n",
+ "X = Xt - Xs\n",
+ "Vh = (2.83e-3 + 4.56e-3*H1)*(T1 + 273.)\n",
+ "RhoH = (1. + H1)/Vh\n",
+ "Ga = v*RhoH*3600.*(1./(1.+ H1))\n",
+ "H = 0.05 #Approximate average \n",
+ "Gt = (2459. + 2459.*H)/3600.\n",
+ "e = 1 - Rhos/Rho #Void fraction (m3)\n",
+ "h = 0.0254 #The length of solid cylinder (m)\n",
+ "Dc = 0.00635 #Diameter \n",
+ "a = 4*(1 - e)*(h + 0.5*Dc)/(Dc*h)\n",
+ "Dp = (Dc*h + 0.5*Dc**2)**0.5\n",
+ "Nre = Dp*Gt/mu\n",
+ "h = 0.151*(Gt*3600)**0.59/Dp**0.41\n",
+ "Tw = 47.2\n",
+ "Cs = (1.005 + 1.88*H)*1000.\n",
+ "G = Ga/3600.\n",
+ "tc = Rhos*lambdaw*1000.*x1*(X1 - Xc)/(G*Cs*(T1 - Tw)*(1 - exp(-h*a*x1/(G*Cs))))\n",
+ "tf = Rhos*lambdaw*1000.*x1*Xc*log(Xc/X)/(G*Cs*(T1 - Tw)*(1 - exp(-h*a*x1/(G*Cs))))\n",
+ "t = tc+tf\n",
+ "\n",
+ "#Result\n",
+ "print \"Total drying time\", round(t/3600,3),\"h or\", round(t),\"s\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total drying time 0.628 h or 2260.0 s\n"
+ ]
+ }
+ ],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.10-2 Page Number 562"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Heat Balance on a Dryer\n",
+ "from scipy.optimize import root\n",
+ "\n",
+ "#Variable declaration\n",
+ "Ls = 453.6 #Feed rate,kg of dry solids/h\n",
+ "X1 = 0.04 #moisture content in feed,kg of moisture/kg dry solids\n",
+ "X2 = 0.002 #moisture content in feed,kg of moisture/kg dry solids\n",
+ "cpA = 4.187 #Specific Heat of moisture, kJ/(kg water.K)\n",
+ "cpS = 1.465 #Specific Heat of solid, kJ/(kg dry solid.K)\n",
+ "Ts1 = 26.7 #Temperature of feed at inlet, \u00b0C \n",
+ "Ts2 = 62.8 #Temperature of product at outlet, \u00b0C\n",
+ "Tg2 = 93.3 #Temperature of air at inlet, \u00b0C \n",
+ "Tg1 = 37.8 #Temperature of air at outlet, \u00b0C\n",
+ "H2 = 0.01 #Humidity of incomming air, kg water/kg dry air\n",
+ "Tref = 0.0 #Reference Temperature, \u00b0C\n",
+ "\n",
+ "#Calculation\n",
+ "#Enthalpy of Entering Air, \n",
+ "#Latent heat of water from steam table = 2501 kJ/kg @93.3\u00b0C \n",
+ "lambda0 = 2501.\n",
+ "cs2 = 1.005 + 1.88*H2\n",
+ "Hg2 = cs2*(Tg2-Tref) + lambda0*H2 \n",
+ "Hs1 = cpS*(Ts1-Tref)+X1*cpA*(Ts1-Tref)\n",
+ "Hs2 = cpS*(Ts2-Tref)+X2*cpA*(Ts2-Tref)\n",
+ "We = Ls*(X2-X1) #Water Transfered to air\n",
+ "delHs = Ls*(Hs1-Hs2) #Enthalpy change of solid\n",
+ "a = 37.99 #Constants in simplified relation for Humidity dependence of Enthalpy of leaving gas\n",
+ "b = 2572.\n",
+ "er = 5.\n",
+ "h = 0.011\n",
+ "while er>=0.001:\n",
+ " g = We/(H2-h)\n",
+ " hc = ((g*Hg2+delHs)/g-a)/b\n",
+ " gc = We/(H2-hc) \n",
+ " er = (abs(h-hc)+abs(g-gc))/2 \n",
+ " h = hc\n",
+ " g = gc\n",
+ "\n",
+ "#Results\n",
+ "print \"Air flow rate\",round(g,2), \"kg Dry Air/h\"\n",
+ "print \"Humidity of air leaving\",round(h,4), \"kg of Water/kg Dry Air\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Air flow rate 1170.92 kg Dry Air/h\n",
+ "Humidity of air leaving 0.0247 kg of Water/kg Dry Air\n"
+ ]
+ }
+ ],
+ "prompt_number": 23
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.12-1 Page Number 573"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Sterlization of Cans\n",
+ "\n",
+ "#Variable declaration\n",
+ "t1 = 20.\n",
+ "t2 = 40. - 20.\n",
+ "t3 = 73. - 40.\n",
+ "T1 = 160.\n",
+ "T2 = 210.\n",
+ "T3 = 230.\n",
+ "T1_C = 71.1\n",
+ "T2_C = 98.9\n",
+ "T3_C = 110.\n",
+ "z = 18.\n",
+ "z_SI = 10.\n",
+ "#Calculation\n",
+ "t0_eng = t1*10.**((T1 - 250.)/z) + t2*10.**((T2 - 250.)/z) + t3*10.**((T3 - 250.)/z)\n",
+ "t0_SI = t1*10.**((T1_C - 121.1)/z_SI) + t2*10.**((T2_C - 121.1)/z_SI) + t3*10.**((T3_C - 121.1)/z_SI)\n",
+ "\n",
+ "#Result\n",
+ "print \"The calculated time of sterlization in English units is \",round(t0_eng,2),\"min\"\n",
+ "print \"The calculated time of sterlization in SI units is \",round(t0_SI,2),\"min\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The calculated time of sterlization in English units is 2.68 min\n",
+ "The calculated time of sterlization in SI units is 2.68 min\n"
+ ]
+ }
+ ],
+ "prompt_number": 24
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.12-2 Page Number 574"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Thermal Process Evaluation by Graphical Integration\n",
+ "import numpy as np\n",
+ "from scipy.integrate import quad\n",
+ "from scipy.interpolate import interp1d\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "#Variable declaration\n",
+ "t = np.array([0.,15.,25.,30.,40.,50.,64.])\n",
+ "T = np.array([80.,165.,201.,212.5,225.,230.5,235.])\n",
+ "F0 = 2.45\n",
+ "z = 18\n",
+ "#Calculation\n",
+ "y = 10**((T-250.)/z)\n",
+ "f = interp1d(t,y,'cubic')\n",
+ "plt.plot(t,y)\n",
+ "plt.fill_between(t,y,0,color='0.8')\n",
+ "xlabel('$Time, min$')\n",
+ "ylabel('$10^(T-250)/z$')\n",
+ "I = quad(f,0,64)\n",
+ "title('Figure showing area by integration')\n",
+ "txt = 'Area='+str(round(I[0],1))+' m2'\n",
+ "text(45,0.02,txt)\n",
+ "#Result\n",
+ "\n",
+ "print \"The process time required is \",round(I[0],1),\"is greater than\", F0,\"hence sterilization is adequet\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The process time required is 2.5 is greater than 2.45 hence sterilization is adequet\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x66e1310>"
+ ]
+ }
+ ],
+ "prompt_number": 29
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.12-3 Page Number 576"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Pasteurization of Milk\n",
+ "#Variable declaration\n",
+ "F150 = 9. #Typical value (min)\n",
+ "D150 = 0.6\n",
+ "#Calculation\n",
+ "N0byN = 10.**(F150/D150)\n",
+ "#Result\n",
+ "print 'The reduction in number of viable cells is %10.3e'%(N0byN) "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The reduction in number of viable cells is 1.000e+15\n"
+ ]
+ }
+ ],
+ "prompt_number": 30
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter10.ipynb b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter10.ipynb new file mode 100755 index 00000000..5ecdf3c9 --- /dev/null +++ b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter10.ipynb @@ -0,0 +1,1048 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:c9327f5447c5ed20590fdd2b6e8f56cfc44897791f24134460ab88ebde554f57"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 10: Stage and Contineous Gas-Liquid Seaparation Procesess"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.2-1 Page Number 587 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Dissolved Oxygen Concentration in Water\n",
+ "\n",
+ "#Variable Declaration\n",
+ "H = 4.38e4 #Henry's law constant atm/mol fraction\n",
+ "yO2 = 0.21 #mol fraction\n",
+ "\n",
+ "#Calculations\n",
+ " #y = Hx\n",
+ "xO2 = yO2/H\n",
+ "\n",
+ "#Results\n",
+ "print 'Mol fraction of oxygen in water, xA: %5.3e'%xO2"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mol fraction of oxygen in water, xA: 4.795e-06\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.3-1 Page Number 589 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Equilibrium Stage Contact for CO2-Air-Water\n",
+ "from scipy.optimize import root\n",
+ "\n",
+ "#Variable Declaration\n",
+ "P = 1. #Absolute pressure of gas mixture (atm)\n",
+ "yA2 = 0.2 #Mole fraction of CO2\n",
+ "Vm = 100. #Feed inlet \n",
+ "Lm = 300. #Flowarte of liquid entering (kg mol water/hr)\n",
+ "xC0 = 1.\n",
+ "xB0 = 0.\n",
+ "xA0 = 0\n",
+ "H = 0.142e4 #Henry's law constant from appendix A.3 in atm/mol frac\n",
+ "\n",
+ "#Calculations\n",
+ "Lmd = Lm\n",
+ "Vmd = (1-yA2)*Vm\n",
+ "Hd = H/P\n",
+ "#Lmd*xA0/(1-xA0) + Vmd*yA2/(1-yA2) = Lmd*xA1/(1-xA1) + Vmd*yA1/(1-yA1)\n",
+ "#yA1 = Hd* xA1 \n",
+ "RHS = (Vmd*yA2)/(1-yA2)\n",
+ "f = lambda xA1: Lmd*xA1/(1-xA1) + Vmd*Hd*xA1/(1-Hd*xA1)-Vmd*yA2/(1-yA2)\n",
+ "sol = root(f, 0.0001)\n",
+ "xA1 = sol.x[0]\n",
+ "#Results\n",
+ "yA1 = Hd*xA1\n",
+ "L1 = Lmd/(1-xA1)\n",
+ "V1 = Vmd/(1-yA1)\n",
+ "\n",
+ "print 'Outlet liquid and vapor phase compositions are xA1: %5.2e and yA1: %4.2f'%(xA1,yA1)\n",
+ "print 'Liquid and vapor rates from colums are L1:%4.1f kgmol/h V1: %4.1f kgmol/h respectively'%(L1,V1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Outlet liquid and vapor phase compositions are xA1: 1.41e-04 and yA1: 0.20\n",
+ "Liquid and vapor rates from colums are L1:300.0 V1: 100.0 respectively\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.3-2 Page Number 591"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Absorption of Acetone in a Countercurrent Stage Tower\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "#Variable Declaration\n",
+ "VN1 = 30. #Inlet Gas Flow Rate, kg mol/hr\n",
+ "L0 = 90. #Inlet Liquid Flow Rate, kg mol/hr\n",
+ "xA0 = 0.0 #Mole fraction of Acetone in entering Water\n",
+ "yAN1 = 0.01 #Mole fraction of Acetone in entering Air\n",
+ "AAAds = 90. #Percent of acetone absorbed\n",
+ "H = 2.53\n",
+ "\n",
+ "\n",
+ "#Calculations\n",
+ " # moles of acetone entering\n",
+ "\n",
+ "AVi = yAN1*VN1\n",
+ "Ai = (1-yAN1)*VN1\n",
+ "AVo = (1-AAAds/100)*AVi\n",
+ "ALo = AAAds*AVi/100\n",
+ "V1 = AVo + Ai \n",
+ "yA1 = AVo/Ai\n",
+ "LN = L0 + ALo\n",
+ "xAN = ALo/LN\n",
+ "\n",
+ "\n",
+ "y = np.arange(0,0.012,0.0005)\n",
+ "x = y/H\n",
+ "\n",
+ "plt.plot(x,y)\n",
+ "plt.text(.0035, .007, r'Equilibrium Curve')\n",
+ "plt.text(.001, .009, r'Operating Line')\n",
+ "plt.plot(xAN,yAN1,'ro')\n",
+ "plt.annotate('$(x_{AN},y_{AN+1})$', xy=(xAN,yAN1), xytext=(xAN,yAN1))\n",
+ "plt.plot(xA0,yA1,'ro')\n",
+ "plt.annotate('$(x_{A0},y_{A1})$', xy=(xA0,yA1), xytext=(xA0,yA1+0.001))\n",
+ "\n",
+ "m = (yAN1-yA1)/(xAN-xA0)\n",
+ "\n",
+ "def ypos(xop):\n",
+ " return m*xop + yA1\n",
+ "\n",
+ "def xpos(yop):\n",
+ " return yop/H\n",
+ "\n",
+ "yy = m*x + yA1\n",
+ "plt.plot(x,yy,'r-')\n",
+ "plt.xlabel('Mole fraction of acetone in water, $x_A$')\n",
+ "plt.ylabel('Mole fraction of acetone in air, $y_A$')\n",
+ "plt.plot([xAN,xAN],[0.0,yAN1],'b--')\n",
+ "plt.plot([0.0,xAN],[yAN1,yAN1],'b--')\n",
+ "x1 = xA0\n",
+ "y1 = yA1\n",
+ "n = 0\n",
+ "while x1 <= xAN:\n",
+ " x2 = xpos(y1)\n",
+ " y2 = y1\n",
+ " if x2 > xAN:\n",
+ " plot([x1,x2], [y1,y2], 'k-', lw=1) #Draw Horizontal line to equilibrium curve\n",
+ " dxt = x2-x1\n",
+ " dx = xAN-x1\n",
+ " dxbydxt = dx/dxt\n",
+ " n = n + dxbydxt\n",
+ " break\n",
+ " plt.text(x2, y2-0.0007, str(n+1))\n",
+ " plot([x1,x2], [y1,y2], 'k-', lw=1) #Draw Horizontal line to equilibrium curve\n",
+ " x1 = x2\n",
+ " y1 = y2\n",
+ " y2 = ypos(x1) \n",
+ " plot([x1, x2], [y1, y2], 'k-', lw=1) #Draw a vertical line to operating line\n",
+ " n = n+1\n",
+ " x1 = x2\n",
+ " y1 = y2 \n",
+ " \n",
+ "print \"Acetone laden air rate from the absorber:\",V1, \"kgmol air/hr\"\n",
+ "print \"Acetone concentration in leaving stream\", round(yA1,6)\n",
+ "print \"Acetone + Water rate from the absorber:\", LN, \"kmol/hr\"\n",
+ "print \"Acetone concentrqtion in liquid leaving absorber:\",round(xAN,5)\n",
+ "print \"Amount of acetone etering with air\", round(AVi,4),\"kmol acetone/hr\"\n",
+ "print \"Amount of air entering \", round(Ai,4), \" kgmol air/hr\"\n",
+ "print \"Amount of acetone leaving with treated air\", round(AVo,4), \"kgmol/hr\"\n",
+ "print \"Amount of acetone leaving with Water\", round(ALo,4), \"kgmol/hr\"\n",
+ "print \"Number of Stages:\", round(n,1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Acetone laden air rate from the absorber: 29.73 kgmol air/hr\n",
+ "Acetone concentration in leaving stream 0.00101\n",
+ "Acetone + Water rate from the absorber: 90.27 kmol/hr\n",
+ "Acetone concentrqtion in liquid leaving absorber: 0.00299\n",
+ "Amount of acetone etering with air 0.3 kmol acetone/hr\n",
+ "Amount of air entering 29.7 kgmol air/hr\n",
+ "Amount of acetone leaving with treated air 0.03 kgmol/hr\n",
+ "Amount of acetone leaving with Water 0.27 kgmol/hr\n",
+ "Number of Stages: 5.1\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nYII=\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x661c3b0>"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.3-3 Page Number 593"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Number of Stages by Analytical Equation\n",
+ "\n",
+ "import numpy as np\n",
+ "\n",
+ "#Variable Declaration\n",
+ "VN1 = 30. #Inlet Gas Flow Rate, kg mol/hr\n",
+ "L0 = 90. #Inlet Liquid Flow Rate, kg mol/hr\n",
+ "xA0 = 0.0 #Mole fraction of Acetone in entering Water\n",
+ "yAN1 = 0.01 #Mole fraction of Acetone in entering Air\n",
+ "AAAds = 90. #Percent of acetone absorbed\n",
+ "m = 2.53\n",
+ "\n",
+ "\n",
+ "#Calculations\n",
+ " # moles of acetone entering\n",
+ "AVi = yAN1*VN1\n",
+ "Ai = (1-yAN1)*VN1\n",
+ "AVo = (1-AAAds/100)*AVi\n",
+ "ALo = AAAds*AVi/100\n",
+ "V1 = AVo + Ai \n",
+ "yA1 = AVo/Ai\n",
+ "LN = L0 + ALo\n",
+ "xAN = ALo/LN\n",
+ "\n",
+ "A1 = L0/(m*V1)\n",
+ "AN = LN/(m*VN1)\n",
+ "Agm = sqrt(A1*AN)\n",
+ "\n",
+ "N = log((yAN1-m*xA0)/(yA1-m*xA0)*(1-1/Agm)+1/Agm)/log(Agm)\n",
+ "\n",
+ "#Results\n",
+ "print \"Geometric mean Absorption Factor:\", round(Agm,3)\n",
+ "print \"Number of stages required for separation:\", round(N,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Geometric mean Absorption Factor: 1.193\n",
+ "Number of stages required for separation: 5.05\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.4-1 Page Number 597"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Number of Stages by Analytical Equation\n",
+ "\n",
+ "import numpy as np\n",
+ "from scipy.interpolate import interp1d\n",
+ "from scipy.optimize import root\n",
+ "\n",
+ "#Variable Declaration\n",
+ "yAG = 0.380 #Inlet Gas Flow Rate, kg mol/hr\n",
+ "xAL = 0.100 #Inlet Liquid Flow Rate, kg mol/hr\n",
+ "ky = 1.465e-3 #Gas phase mass transfer coefficient, kmol/(m2.s)\n",
+ "kx = 1.967e-3 #Gas phase mass transfer coefficient, kmol/(m2.s)\n",
+ "xA = np.array([0.00,0.05,0.10,0.15,0.20,0.25,0.30,0.35])\n",
+ "yA = np.array([0.00,0.022,0.052,0.087,0.131,0.187,0.265,0.385])\n",
+ "\n",
+ "#Calculations\n",
+ "f = interp1d(xA, yA, kind='cubic')\n",
+ "y = f(xA)\n",
+ "plot(xA,yA,'ro-')\n",
+ "#(1-xA)iM = 1., (1-yA)iM = 1.\n",
+ "#Slope of operating line -(kxd/(1-xA)iM )/(kyd/(1-yA)iM)\n",
+ "m = -kx/ky\n",
+ "c = yAG - m*xAL\n",
+ "plot(xAL, yAG,'bo')\n",
+ "xlabel('$mol\\ fraction\\ in\\ liquid\\ phase,\\ x_A$')\n",
+ "ylabel('$mol\\ fraction\\ in\\ gas\\ phase,\\ y_A$')\n",
+ "ff = lambda x: f(x) - (m*x+c)\n",
+ "def lm(a,b):\n",
+ " return ((1-a)-(1-b))/log((1-a)/(1-b))\n",
+ "\n",
+ "def flux(k,a,b):\n",
+ " return k*(a-b)/lm(a,b)\n",
+ "\n",
+ "n = 4\n",
+ "er = 1.0\n",
+ "i=0\n",
+ "while er>= 0.065:\n",
+ " i+=1\n",
+ " sol = root(ff, 0.002)\n",
+ " xAi = sol.x[0]\n",
+ " yAi = f(xAi)\n",
+ " plot(xAi, yAi,'o-',label=str(i))\n",
+ " plot([xAL,xAi], [yAG, yAi], lw=0.3)\n",
+ " ylm = lm(yAi,yAG)\n",
+ " xlm = lm(xAi,xAL)\n",
+ " mc = -kx/xlm/(ky/ylm)\n",
+ " NAy = flux(ky,yAG,yAi)\n",
+ " NAx = flux(kx,xAi,xAL)\n",
+ " #er = abs((NAx-NAy)/NAx)\n",
+ " er = abs((m-mc)/m)\n",
+ " m = (n*m + mc)/(n+1)\n",
+ "legend(loc='lower right') \n",
+ "#Results\n",
+ "print \"Liquid phase Interphase concentration:\", round(xAi,3)\n",
+ "print \"Gas phase Interphase concentration:\", round(yAi,3)\n",
+ "print 'Flux in Gas phase: %4.2e'%(NAy)\n",
+ "print 'Flux in Liquid phase: %4.2e'%(NAx)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Liquid phase Interphase concentration: 0.257\n",
+ "Gas phase Interphase concentration: 0.196\n",
+ "Flux in Gas phase: 3.80e-04\n",
+ "Flux in Liquid phase: 3.78e-04\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "iVBORw0KGgoAAAANSUhEUgAAAZQAAAEUCAYAAAAMdcB4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XtcVHX++PHXCMhNFAS8ABoKimhqJmiaFzQRlSQ1Ne9d\nzNx2U/vtftu2q3Zx12rbLbSLmZZmknfRUERU8C5qeUUN8YYoCgIiCAMznN8fx1jJsWZkmBng/Xw8\neiycOedz3mep857PXaMoioIQQghRRfWsHYAQQojaQRKKEEIIs5CEIoQQwiwkoQghhDALSShCCCHM\nQhKKEEIIs7B4QomPj6ddu3a0adOGDz744J7nHThwAHt7e1avXm3ytUIIISxPY8l5KHq9nqCgIBIT\nE/H19SU0NJSYmBiCg4PvOi88PBwXFxeeffZZnnzySaOvFUIIYR0WraGkpKQQGBiIv78/Dg4OjBkz\nhtjY2LvOmzt3LiNHjsTb29vka4UQQliHRRNKZmYmLVq0qPjdz8+PzMzMu86JjY3lxRdfBECj0Rh9\nrRBCCOuxaEL5NTn8npdffpk5c+ag0WhQFIVfW+SMuVYIIYT12FvyZr6+vmRkZFT8npGRgZ+fX6Vz\nDh06xJgxYwDIyclh06ZNODg4GHUtQGBgIOnp6dX0BEIIUTsFBARw5syZqhWiWFBZWZnSunVr5dy5\nc4pWq1U6d+6spKam3vP8Z555Rlm9erVJ11r4kcxu5syZ1g7hvtXk2BVF4rc2id+6zPHutGgNxd7e\nnnnz5hEREYFer2fy5MkEBwczf/58AKZOnWrytUIIIWyDRRMKwODBgxk8eHClY/dKJN98880fXiuE\nEMI2yEx5GxMWFmbtEO5bTY4dJH5rk/hrPotObLSEX0eHCSGE+GM74uJIiI5mdkJCld+dklCEEKKO\n2hEXx+YZM5idno4GqvzulCYvIYSooxKio5ltxmkWFu+UF7VPXNwOoqMT0GrtcXTUMX36QCIj+1g7\nLCHEH7DXas1bnllLE3VOXNwOZszYTHr67Ipj6elvAEhSEcLG6RwczFqeNHmJKomOTqiUTADS02cz\nd+4WK0UkhDDWQFdX3nB1NVt5klBElWi1/6vkTnrkTR7vPBeAkhI7a4UkhDBGQgJ9Dh0iYsEC3oqI\nMEuRklBElTg66ip+XrLvfQpd4K9dZuBqb962WSGEGWVnw7PPwuLF9Bk7lvfi481SrCQUUSXTpw8k\nIOCNit+T9k5jg7OeXs7Z/Byz0YqRCSEMUhSYPBkmTID+/c1atMxDEVUWF7eDuXO3UFJih5OTnmnT\nwuk3MJR/v/dPOly1Y0T062gc61s7TCEEwBdfwNdfw969UP9//12a490pCUVUq/9u/RbX+ccY+qfx\nNO//sLXDEaJuS02FPn1g924ICqr0kSQUAySh2J6kSwfY9d9YHqvfjB7vvwh20mEvhMVptdC9O/zl\nLzBlyl0fS0IxQBKKbcouyuaj9Yvp9mMBEa9Mwu2hQGuHJETd8te/wvnzsHo1GNgBVxKKAZJQbJe+\nXM+/f1qK85IMwn38Cf77OKgn40KEqHYJCWpH/OHD4Olp8BRJKAZIQrF9G85s58DuY/TZUUyf18ZS\nP7CltUMSovbKzoaHHoLvvvvdUV2SUAyQhFIzpF1P49tTWwn64RZhDwbS8oWhBqvhQogqUBR44gkI\nDoYPPvjdUyWhGCAJpeYoLC3kv0dW43ZYS4/DxYS+8RT1fJpZOywhao97DBE2RBKKAZJQahZFUVh2\ncj0ZeXm0XVZE795BeI8ZYO2whKj5fmeIsCHmeHdavEc0Pj6edu3a0aZNGz4wUAWLjY2lc+fOdOnS\nha5du7Jt27aKz/z9/enUqRNdunShW7dulgxbVBONRsP49k/Q/4H2nHjBmx+vZXL0lQWQm2vt0ISo\nubRaGDcO/vUvo5KJuVi0hqLX6wkKCiIxMRFfX19CQ0OJiYkhODi44pyioiJcb69+eezYMYYPH86Z\nM2cAaNWqFYcOHaJx48b3vIfUUGquyzcvs+h0Mj7FGnyWF9IrMogGg3tbOywhap4/GCJsSI2roaSk\npBAYGIi/vz8ODg6MGTOG2NjYSue43rGUcmFhIV5eXpU+l2RRe/m4+fD3Lk+ib6iQ/ucmrD+WyZlZ\ni+HmTWuHJkTNkZAAK1fCggUWH+hi0YSSmZlJixYtKn738/MjMzPzrvPWrVtHcHAwgwcPJjo6uuK4\nRqNhwIABhISEsGDBAovELCyrvl19pnQeS5v6zlyJ8ubQo05se2MNpTv3Wzs0IWzfHasI32u+SXWy\naELRGJkthw0bxsmTJ9mwYQMTJ06sOL57925+/vlnNm3axGeffcbOnTurK1RhZQMDwxns2ZzMpk7k\nvdSI2OSrXPpwGRQXWzs0IWxTNa4ibCyLbgHs6+tLRkZGxe8ZGRn4+fnd8/zevXuj0+m4fv06np6e\nNG/eHABvb2+GDx9OSkoKvXvf3cY+a9asip/DwsIICwsz2zMIy2nv3R4fNx+Wpa6n/vhADhwrJ+PN\ntXQfF0y9rl2sHZ4QtuXLLyEzE1atMur0pKQkkpKSzBqCRTvldTodQUFBbN26FR8fH7p163ZXp3x6\nejqtW7dGo9Hw008/MWrUKNLT07l16xZ6vR43NzeKiooYOHAgM2fOZODAgZUfSDrla51ypZzVqWvI\ncWpNUEkaeSs96Oudi9eUEX84tl6IOsHEIcKGmOPdadEair29PfPmzSMiIgK9Xs/kyZMJDg5m/vz5\nAEydOpXVq1ezZMkSHBwcaNCgAT/88AMAWVlZjBgxAlAT0/jx4+9KJqJ2qqepx6gOI9l9cTepOm+a\nPAc793gRMGsVncZ3hg4drB2iENZjpSHChsjERlGjnM8/T+KFvdg17kLbaz+Tva45AwJyaDBhGNhb\n9PuRELbhPoYIGyIz5Q2QhFL7FZcVs/LEKjRePWijHOPCFl8ezjhDm3Gh0KaNtcMTwnKMWEXYWJJQ\nDJCEUjcoisLGtI0UOjTBsT54nb9MYYIH/TvkUn9klCyLL2o/I1cRNpYkFAMkodQth7MOczovg5JG\nnelWupufNz1EnxuH8BvbGx54wNrhCVE9TFhF2FiSUAyQhFL3XCu6xqa0eBo0fwy/8tMUptpjv7uc\nXg8VYTd0iCyLL2qfL76AhQthzx6zjXSUhGKAJJS6SVeuY1XqKho17kKxBjoWHuRg/KOE63fi9dQA\nuD2HSYgaLzUV+vaFXbvMOqpLEooBklDqtu3ntlOqsSfLMZDemn2kHgyi6dFMQkJAMzDc2uEJUTVa\nLXTvDn/5C0yZYtaiJaEYIAlF/HL9F36+chjnZv1oWn4Bl6uXSN3alcj622kwegj8ZsFRIWqMv/0N\nzp2r8hBhQyShGCAJRQDc1N5kzck1BLYI50qZjkeVnezZ3Z/2538iOLSB2mQgRE1ixiHChkhCMUAS\niviVoijEno6leaPWnNY0obd9KjnnHMjc04IhDXaqw4sbNbJ2mEL8MTMPETZEEooBklDEb+2/tJ/8\nkhvoPLriRS4+t/axa8dwelzfin9oE+jRw9ohCnFv1TBE2BBJKAZIQhGGXCq4RNL5JB70f5wzxSX0\nqbeXX063o+hnO8LdD1BvxDC4Y3M3IWxGNQwRNkQSigGSUMS9aHVaVqauJLRFX/ZrHejrmEl5/kX2\n7IgkvGg9Tbq3gq5drR2mEP9TTUOEDZGEYoAkFPFHNp/ZjLuTO9edA2lcT4u/divHjkXgdOYavdyP\noxkxHBwdrR2mqOuqcYiwIZJQDJCEIoxx/Npx0q6n0bZFOKm3btHP/ii5OU6k7OpGlH4tDR9pDx07\nWjtMUZdV4xBhQyShGCAJRRgrtziX9afXE9F2GFsKSujvWohd4T4OHBhJi+xUujRMh+HDZVl8YXnV\nPETYEEkoBkhCEaYoV8pZlbqKh5o+RLrGEw97Da2128jK6kTqQT+Ga9bh2LOr1TcuEnWIBYYIG2K1\nhFJcXExWVhZXrlwhKyuL3bt38/HHH1cpEHORhCLux84LO9GV62jWpBvHiooY6HSB4qLL7NoVxUMl\n+2nT4Io6dFOWxRfVyUJDhA2xWkL561//SlZWFr169aKgoABPT0+mWKDTyBiSUMT9Opt3lpTMFAYF\nDWf99Twec9Ngd3MzGRmRXEp1IIr12PV5FFq1snaooray0BBhQ6za5HXy5EmOHTuGq6srkZGRVQrC\nnCShiKq4VXaLVamrGBw4mEMl9WhkZ0db/T5KShqSlNSTfvY78XG9AZGRsiy+MC8LDhE2xBzvzvuu\nvwcHBzN69Gjs7Oz46KOPjL4uPj6edu3a0aZNGz4wUKWLjY2lc+fOdOnSha5du7Jt2zajrxWiqlwc\nXJjYaSL7Lu2jWVkG7g4ObNU/TCMPbwYMWEZas+5sKeqJ8t1SyMy0driittBqYdw4+Ne/anR/nVk6\n5Xfv3s2jjz76h+fp9XqCgoJITEzE19eX0NBQYmJiCA4OrjinqKgI19szlo8dO8bw4cM5c+aMUdeC\n1FCE+fx05Seu3LxC39YRrMnJYUAjV+wK4igpCSU5OYAol0Tc3fQwcKDUVkTVWHiIsCEWr6E888wz\nvPLKK6xbt46rV69WHDcmmQCkpKQQGBiIv78/Dg4OjBkzhtjY2ErnuN6x/EVhYSFet5caN+ZaIczp\n4eYPE+ITwpoTyxjl2Yijt0o56zQYd/drDBmykT0uj7GvuLM6Gic729rhipoqIQFWrIAFC2r8FxOT\nEsq3337Lc889R15eHm+//TYhISF8+OGHRme1zMxMWrRoUfG7n58fmQaaDdatW0dwcDCDBw8mOjra\npGuFMKemDZoy9sGxrD21lnZ2N2ns4EC8NgDXBl15+OHvaNzeie/rTaRk10HYvt3a4YqaJjsbnn0W\nFi+22HyT6mRSQtm3bx/5+fk8++yzzJ8/n1dffZVhw4axcOFCo67XGJl9hw0bxsmTJ9mwYQMTJ06U\nJixhVQ52DozrOI703HSuXz/MUE9PVuUr6N1H07jxDoZEHiSufDDHiwPU2kp+vrVDFjWBoqiTFydM\nsOh8k+pk0hTgxMREHBwc+OSTT3BxcaFly5Z4eXnRtGlTo6739fUlIyOj4veMjAz8/PzueX7v3r3R\n6XTk5ubi5+dn9LWzZs2q+DksLIywsDCj4hPi9zzW+jFO5Zxi4+m1jA8ewZa8fNwc+tLZPpPevZdz\n+fKTrCgYz5Pbf8SuiScY2RQs6qgvv4TLl2HVKqvcPikpiaSkJPMWqpjg2LFjyv79+ysdW7BggRIf\nH2/U9WVlZUrr1q2Vc+fOKVqtVuncubOSmppa6ZwzZ84o5eXliqIoyqFDh5TWrVsbfe3tAQamPJIQ\nJrtRckP55udvlLziPOVUUZHyw9WrSklpoZKV9b2Sk3Ne+f57RTmfmKYo332nKDdvWjtcYYtOnFAU\nLy9FOXXK2pFUMMe70+JLr2zatImXX34ZvV7P5MmTee2115g/fz4AU6dO5cMPP2TJkiU4ODjQoEED\n/vOf/xAaGnrPa39LRnkJS1AURe1X8WqHf+MgVmdn09/DA9fifZSXl3LyZDh5OXoiy9aheaAl3P53\nWIiKVYRfegmef97a0VSQtbwMkIQiLGnfpX3c1N4kPCCchNxcXO3sCHEqJC9vGxrNMBIS3Bj8QCpe\nmUfUhSadnKwdsrA2GxgibIgkFAMkoQhLu3jjIjsu7GB0h9Gc1+r46eZNnvTyJD93PY6Ordmz5yFc\n7Evpc30ttGsHnTtbO2RhLVZYRdhYklAMkIQirKFEV8LKEysZ0HoA7i5NWJWdTT93dxqVnaKkJJ3C\nwuHs3l2PEa0P45JxGkaMAAcHa4ctLMlKqwgby6oJ5dy5cwwYMICFCxei1WqJiIioUiDmIglFWNOm\ntE14u3oT4hPCltxcnOvV45EGduTkrKNhw/7Ex/vSqlkxXS6sU18uv1npQdRSVlxF2FhWr6FkZmbi\n6+tbpQDMTRKKsLajV49yLu8cUUFRnCku5tDNmzzp7c3N/K3Uq1efjIy+nDwJI/xSsM+6pL5o7Oys\nHbaoTlZcRdhYFk8oWVlZFBYWEhgYyLVr12jUqBGONrb3tiQUYQuu37rOj7/8yMj2I6ln58Tq7Gz6\nurvjpWRRULCbBg1GsH69M6HBhQSeiIVHHoGAAGuHLarDyZPQp4/VVhE2lsXX8lq9ejUXL15k+/bt\nNG7cmFVWmpAjhK3zdPFkQqcJxKXFkXnjHBOaNeP0rVsc1Lrj7f0URUUbiIpKJbu4ARsajke5fAXW\nr1ebRkTtodXC2LE1fhVhY5mUUEpLS+nfvz9FRUXY29vj7u5eXXEJUePZ1bNjdIfRXL55meTzyQxo\n3Jjm9euzPPs6Hl4j0esLadMmlp49Fb4714urbXvD0qVwx4oQooZ7/XW15jl5srUjsQiTEkq7du3o\n3bs3q1evZt26dRw6dKi64hKi1ujzQB98G/ryw/EfaOXkyHAvL5Zfu8aN+p1o1KgPZWXf8dRT2Ry5\n6MF2v4mQlgbx8VJbqel+XUX4q69sar5JdTKpD6WoqIicnBxiY2NxcnLiqaeeolGjRtUZn8mkD0XY\nqqLSIlalriKybSReLl5szcvDQaOhd6NG5OZuwt7egxs3epCcDMMfvUaDXfEQEQFGrpUnbIiNDxE2\nxOKd8vPnz8fR0ZE1a9bg5eXF6NGjGTRoUJUCMDdJKMKWKYrChl824O/uT6emnUgvLmZ/QQGjvL0p\nKznDzZuH8PR8kg0b6tPCTyHk+mZ1vspjj1k7dGGsGjBE2BCLd8o7OzvTvn17cnNzWbRoEQUFBVW6\nuRB1jUajISooilJ9KZvSNhHg7MwILy9WZGeTU68l3t4juH59NRERZ3B20bD8xiBKWwXBkiWQl2ft\n8IUxfl1F+L33rB2JxZlUQzl+/DiLFi1iwoQJHD16lPr16zNu3LjqjM9kUkMRNcWVm1dIPJvIqA6j\ncLJ3YlteHnYaDX3d3blxYzc6XQEuLoNYt07Dw10UgtJ+BHd36N3b2qGLe6khQ4QNserExi1bttCk\nSRM629i6RJJQRE1Spi9jZepKerXsRctGLTlbXMy+ggJGenuDLpvc3M14ekZx6JA7V69C1INn0ezd\nozapuLlZO3wB7IiLIyE6GvviYnQ//8zAZ5+lz+2dZmsSq8+Ut0WSUERNtCV9Cw3qN6BHix5oy8tZ\nlZ1Nr0aNaOlYn5yc9Tg5tUCv78qGDfBYmB6fg+vBx0ddBl1YzY64ODbPmMHs9PSKY28EBBDx6af0\niYy0YmSms3gfytdff82+ffvQarXs3r1bJjYKYSbhAeE0cmrE6tTV1NdoGN+0KenFxey4UYC39zA0\nGkdKS1cyfryO1NN2bGs0HBo1gmXLoLjY2uHXWQnR0ZWSCcDs9HS2zJ1rpYisy6SEcu3aNZKTk3n2\n2WeZM2cOu3btqq64hKhz2nu357HWj7H4yGIKtAX09/CgpaMjy65epb5Lezw9I7l27Qd69bpI27aw\nJKUdNwaOgg0b4OefrR1+nWSv1Ro8bldSYuFIbINJe8r7+fkxadIkQJ01HxsbWy1BCVFXuTu5M6nz\nJNaeXEuHJh1o59UOH0dHVmZn07NhQ1o1m0Be3nZcXdOYMOEx1q93wMd/NN3sjsLy5eomXja6+GBt\npLvHSFd9Hd1IzaQaioODA8888wxr1qwhLS2NS5cuVVdcQtRZ9TT1eLL9k+QW57L17FYc69VjfNOm\nnC8pYXteHh4e/XB2bsu1a98xdGgRbm4Qc6IT2kFPwJo1kJpq7UeoGxYvZuDZs7zxmxXXXw8IIHza\nNCsFZV0md8r/8ssvLF26lIMHDzJr1iy6detWXbHdF+mUF7XJhfwL7M7Yzaj2o3Cwc+BccTF7bo8C\nq69RyM5ei4tLWxwcOrF2rboZZHDRQTh/Xq2tyLL41eOjj+CzzyA+nh23+0zsSkrQOzkRPm1ajeuQ\nByuM8lq2bBkpKSl07tyZRx99lAMHDjB+/HiTbhgfH8/LL7+MXq/n+eef59VXX630+ffff8+HH36I\noii4ubnxxRdf0KlTJwD8/f1p2LAhdnZ2ODg4kJKScvcDSUIRtUyJroQVJ1YwMGAgzRo0o/T2KLAe\nDRvSytmZmzd/oqTkAl5eT3DgQD0uX4aox4qot34ddOsGbdpY+xFqj/Jy+Pvf1bXW4uPBz8/aEZmN\nxRPK8uXLCQ8PZ9++faxfvx5vb2/eM2E2qF6vJygoiMTERHx9fQkNDSUmJobgO3at27t3L+3bt6dR\no0bEx8cza9Ys9u3bB0CrVq04dOgQjRs3vvcDSUIRtZCiKGw6s4mmrk3p6tMVgKS8PBSgn4cHOt0N\ncnJi8fAYSElJM9avh379wO/iHrh2DaKioJ5JLdzit8rK1FWD09PVgRC/8x6qiSySUB599FG6detG\nSEgImZmZPPfcc3h5ed3Xzfbu3cs777xDfHw8AHPmzAHgH//4h8Hz8/Ly6NixY0VfTatWrTh48CCe\nnp73fiBJKKIWO5x1mIs3LjK07VA0Gg3ni4vZfbsJzLFePXJzN1Ovngvu7r3ZulVdVmpASL76Auzb\nF1q2tPYj1ExFRTB6tLpq8IoV4OJi7YjMziLzUF599VVeeOEFtFotZ86cYcSIEQwbNowPPvjAYJPT\n78nMzKRFixYVv/v5+ZGZmXnP8xcuXMiQIUMqftdoNAwYMICQkBAWLFhg0r2FqA0eavYQPfx6sOTI\nEm6V3cLf2ZlR3t6syc7mbHExjRtH4Ojoy9WrywgLK6F9e1iy3p38oRPh7FnYuFGWxTfV9eswYAB4\ne8PatbUymZjLHw4bjoqKAiA4OJjnnnsOUJexP3DgAIcOHTKpU15jwp4A27dvZ9GiRezevbvi2O7d\nu2nevDnZ2dmEh4dX7M8iRF3i7erN+E7jWZW6im6+3Wjt0ZqxTZuSnJ/P+ZIS+nu0xtGxBTk5a2jU\nqDMTJrRjwwZo2jSMRx7MUZdUDw+H5s2t/Si2LyND3UJg6FCYM6fO7Gtyv0yah/Lxxx+zceNGsrKy\neOKJJ5g1a5ZJN/P19SXjjt3oMjIy8DPQqXX06FGmTJlCfHw8Hh4eFceb3/4PwNvbm+HDh5OSkmIw\nodwZV1hYGGFhYSbFKYSts69nz5gHx5B0PonMgkx6P9Cbvu7uXCgpYWlWFiO9vWnS5Clu3NhHbu6P\nREVF8ssvGmK2eDFi9EQcd2yBEyfUb97CsJMnYdAgmD4d/vY3a0djdklJSSQlJZm3UMUEGzZsUBRF\nUcrLy5XExETlrbfeMuVypaysTGndurVy7tw5RavVKp07d1ZSU1MrnXPhwgUlICBA2bt3b6XjRUVF\nSkFBgaIoilJYWKj07NlT2bx58133MPGRhKjxfsn5RVl+fLmi0+sURVEUrV6vfJ+VpZy5dUtRFEUp\nLc1RrlxZrJSW5iharaL88IOinDihKEpmpqIsXqwoOTlWjN5G7dmjKE2bKsqSJdaOxGLM8e40aZTX\n119/jY+PD3369KFBgwZs2LCBoUOHmpTANm3aVDFsePLkybz22mvMnz8fgKlTp/L888+zdu1aWt7u\nPPx1ePDZs2cZMWIEADqdjvHjx/Paa6/dVb50you6qLC0kFWpq4gKiqKxszr6KDk/n7LycgY0boyi\nKFy/Hkf9+t40bNidgwfV1pwnohTqxW9UVy7u08fKT2EjNm2CSZPUPWgGD7Z2NBZj8WHDM2fOxM3N\njf3793P9+nV0Oh0vvPACmZmZd80nsRZJKKKuUhSFdafWEdg4kI5NOwJwsaSE5Px8Rnl742RnR1HR\nKYqKjuDlNYLCQgfWr1fzSMvy87Bzp7osfsOG1n0Qa/ruO3jlFVi3Dh55xNrRWJTFE8pPP/1EcXEx\njz76KADp6ens2bOHr7/+muTk5CoFYi6SUERdl5KZQm5xLoMC1e25y25PhAx1cyPQxQW9voScnDU0\nbPgIzs6t2b4dSkth4IByNOtj1c76OvYyBeDjjyE6Wp2weMfcuLrCZvZDuXLlSkWHubVJQhECMgsy\n2XZuG6M7jMbR3hGAnfn5aG83gQHk5++kvLyYxo0HcuUKbNmiDmbyyP4FDhxQl26pC0NkFQVefRV+\n/BE2b4Y7pjbUJTaTUGyJJBQhVKX6UlaeWElf/774NVRHU2aUlJCUn89Ib2+c7ezQaq+Ql7cFL69h\n2Nk15McfwcsLeoTq1DkXrVtD165WfpJqVFYGU6bA6dNqQvmdSdO1nSQUAyShCFFZQnoCjRwb0d1P\n3d2xrLyc1dnZhNxuAlOUcnJyYnFy8sfNrQtpaf+roDinH4fjx9VfHB2t/CRmduuWOvu9vBxWrgRX\nV2tHZFUWTyhFRUUUFhbStGnTKt20OklCEeJuJ66d4PT10wxvN7xigvGu/HyKy8sJv90EVlh4lFu3\nfsHbezg6nR1r10L79vBgG63aSd2hAzz4oDUfw3xyc9X2vYAAWLgQHBysHZHVWTyhzJ8/H0dHR9as\nWYOXlxejR49m0KBBVQrA3CShCGFYXnEesadjeTL4Sdwc3QC4VFLCttujwJzt7NDpCsnJWYe7exhO\nTn4cOqSuhD9sGNgdPqQu3zJ8ONibNCfatly6pE5YHDQIPvxQFs28zeJ7yjs7O9O+fXtyc3NZtGgR\nBffYrUwIYXs8nD2Y1HkS8WfiOZ1zGgA/JyfGNWlCbE4Ov9y6hb19A5o1m8CtW6fIy9tO167qyiMx\nMXDBqytERqo7Q54+beWnuU+nTkGvXvD00/Dvf0syMTOTaijHjx9n0aJFTJgwgaNHj1K/fn3GjRtX\nnfGZTGooQvyxXRd3UaovpX+r/v87lp/PrfJyBt5uAispuUB+/k68vUdgZ+dCcjIUF6sJRrNvL1y9\nWrOWxd+/X51n88EHakIRlVi1U37Lli00adKEzp07VykAc5OEIoRxzuWdY9+lfYzqMAr7emoTVqZW\ny9a8PEZ6e+NiZ0d5uY6cnDW4uLSnQYMHuXoVEhJgyBDwdCiA9evVb/z+/tZ9mD8SH6/Ofl+0CB5/\n3NrR2CSLJ5Svv/6aBx98kC5dunDw4EEuX77MqFGjqhSAuUlCEcJ4t8pusfLESga3GUwT1yYA6MrL\nWZ2TQ5f/vgBWAAAgAElEQVQGDWh7ex5KQcFBtNpLeHk9AWjYuBHc3eHRR4HkZLh5U20Os8XVeL//\nHv76V3UYdM+e1o7GZlk8ofzzn//Ezs6OI0eOcPPmTQICAvjkk0+qFIC5SUIRwjSKohCXFoevmy9d\nmnepOL7nxg0K9fqKJrCysnyuX19P48aDqF+/CWfOQErK7eHFt65DXJy6erGPj7Ue5W6ffKLOgI+P\nV0epiXuyeEJZsmQJkyZNAqC0tJTY2FipoQhRS/x85Wcyb2YS2SayYmjx5dtNYE/ebgJTFIXc3Hjs\n7RvSqNGj6G7PfwwKgk6dUKfbl5fDwIHWra0oCrz+ujrcefNm2anSCBYf5eXg4MAzzzzDmjVrSEtL\nq9iaVwhR83Vp3oVQn1C+O/odxWXFAPg4OjK2SRM2XL/OqaIiNBoNnp6DcXBoytWrMdSrp2XUKNDr\nYdUq0PcPh86d1UUWs7Ot8yA6HTz/PGzfri54KcnEYkzulP/ll19YunQpeXl5TJo0idDQ0OqK7b5I\nDUWIqtGV61hxYgU9/HrQyqNVxfE9N25QoNMx6PbyJOXlpWRnr8HN7WFcXNpSVKRWCHr2hFb+iroM\nvIsLWHKDu+JiGDMGtFpYvbrOz343hcWbvKZOnYqrqys9evSgZ8+e+Pr6Vunm1UESihDmse3cNhzt\nHHm05aMVxy5rtSTebgJztbMD4MaNPeh0eTRuPASNRsOOHVBYqG4lorl4Qe20j4pSe/GrU16eep+W\nLeGbb6B+/eq9Xy1j8YSyePFiwsPD2b9/P8nJyezfv5+OHTsya9YsfGykI04SihDmczrnNEeuHmFk\n+5HU06gt5HpFYXV2Nh1dXQm+XQMoLc0mN3cTnp5DcXDwIDtbraAMGQJejcthwwbw9q6+UVaZmerM\n9wED1E74mjI3xoZYPKG8//77vPzyyzRo0ACA1atXM2DAAL766iteeeWVKgViLpJQhDCvAm0Ba06u\n4YmgJ/Bw9qg4vvfGDfJ1OgbfbgJTd4XcQP36zWnYMBTldquXmxv07g2kpamTC4cPN29T1OnTajL5\n05/g73+3zaHLNYDFE8rly5d58cUXURSFoKAg7OzsmDNnDuvWrWPYsGFVCsRcJKEIYX6/7gbZ1rMt\nHZr8b/jtFa2WLb9pAisqSqWo6DheXiOoV8+es2dh797b26s46tWOlgcegJCQqgd24IDazDV7Njz3\nXNXLq8OsNlP+/Pnz5Ofn07FjR3JycvjHP/7BN998U6VAzEUSihDVZ9+lfRRoCxgYMLDimKEmML2+\n+PaukI/i7OyPTqfmkcBAeOgh4MQJOHpUzTJOTvcXTEICTJgAX3+tJhVRJWZ5dyoWtmnTJiUoKEgJ\nDAxU5syZc9fnS5cuVTp16qR07NhR6dmzp3LkyBGjr1UURbHCIwlRp1zMv6h8d+Q7RavTVjq+Nz9f\nicvJUcrLyyuO5eUlKdevb6n4/fBhRVmxQlHKyhRF0WoV5YcfFOWO/8aNtmyZojRpoig7d97vY4jf\nMMe706JvX51OpwQEBCjnzp1TSktLlc6dOyupqamVztmzZ4+Sn5+vKIqaQLp37270tYoiCUUISygp\nK1GWHF6iZBZkVjp+paREWXzlinKzrOx/55ZcUq5cWaKUlRUoiqIoRUWK8v33inLmzO0TfvpJUZYv\nV5TSUuNu/umniuLnpyhHj5rjUcRt5nh33vdQiL1795KRkWHSNSkpKQQGBuLv74+DgwNjxowhNja2\n0jk9evSgUaNGAHTv3r1i8qQx1wohLMPR3pGJnSdy9OpRUjJTKo43c3RkfNOmbMrNJbWoSD3X0Zem\nTceRl5dAYeERXFxg3Di4ckVdrUV5qIu62dXKlery8veiKPDGG/DZZ+qExY4dq/sxhYlMSijvv/8+\nTz/9NJMnT+bChQusWbPGpJtlZmbSokWLit/9/PzIzMy85/kLFy5kyJAh93WtEKL6DQochLO9M+tO\nratof7fTaBjVpAk39Xrirl9HURQ0Gju8vZ9EURSys9egKOX06gXdu6uT6q/ddFazzI0bsGaNOvX+\nTjodvPCCurTLrl22v7pxHWXStmsdOnTgzTff5MaNG2zcuJGAgACTbqYxYTjf9u3bWbRoEbt37zb5\nWiGE5XRs2hEfNx8WH1nMyPYjaVBfnVbQvWFDrpaWsuTqVUZ4eeFmb4+b20M4Owdw9er3eHg8hpeX\nDxMnqms3urpCnz7d1ZWLY2KgZ0/i0k8SvfQTtCd+xrFUYfr784n09rbyE4t7MXkfzwMHDhAaGsrY\nsWNNvpmvr2+lZrKMjAz8/PzuOu/o0aNMmTKF+Ph4PDw8TLoWYNasWRU/h4WFEWbJpR+EqIM8XTyZ\n2Gkiq0+upkuzLrTxbANA0/r1mdC0KWuys2nv6koHV1fs7d1o1mwiubkJFBen4e7el8GD4dw5WLoU\nhg1zI9nDgzWPD+JG6XkSJpRBa/U+6Yv+Ac7ORIZHWvFpa4ekpCSSkpLMWqZJw4ZffvllANLT03Fy\ncqJv37689NJLRt9Mp9MRFBTE1q1b8fHxoVu3bsTExBAcHFxxzsWLF+nfvz9Lly7lkUceMelakGHD\nQljbjgs7KFfKCfMPq3Q8paCAa6WlRHp6VrQ4FBefo6BgD15eI7Czc0avh7ffPsSSJe9wqXwDHhMg\n7Dysbf+/ciIuRBC/KN5yD1RHmOPdaVIN5cknn0Sj0dCrVy+Ki4s5ceKEaTezt2fevHlERESg1+uZ\nPHkywcHBzJ8/H1DXCnv33XfJy8vjxRdfBNQVjlNSUu55rRDCtvR5oA/puen8cPwHRrUfhV09dcJj\nt4YNufabJjBn51Y4OvqRk7MWV9eO7E+6wnfzn+HS9UbwgBd5LjmVkglASXmJFZ5KGOO+twC2VVJD\nEcI2FJUWsTJ1JZFtIvF2/V+/R7misDYnh3YuLnS4YwmWbZs+Z8fX61i35ipHOAo+Gnjh7v+WpYZS\nPSyyH8qdfSWrVq1i2bJlFBYWsmfPHrZv316lmwshai/X+q483flp9l7ay5GsIxXH62k0POntzS29\nnh9zcvhs1iye8vLi/aGfE7blJRw8CtUTcxRYWbnMgJ8CmDZ2mgWfQpjiDxPKkiVLKn6+fPkyiqLw\n3HPP8emnn5o8bFgIUbdoNBqigqLQleuI+yWu0mehDRtyYv58VqWksKC4mI56e7jZkBF5z+ODD5QC\nacBX4PSDEw8ffJhPX/pUOuRtmElNXmfPniUrK4uePXtSUFCAXq+vGIVlK6TJSwjblFWYxZb0LYzq\nMIqtm1OIjk7g1ravSNbnsLZ3b7bsuc4Y3TwA9rKXtayllFLyPPP4fPHnREZKIqlOVlsc0pZJQhHC\ndpXpy3j9+3dZ8XEeF4/Ooy9hJJEMwDaciaE745lZcf7SgKWM+3Qc/SP7WyvkCo0bNyYvL8/aYVSZ\nh4cHubm5dx23+CgvIYSoCgc7B45+r3CxcBi02ENRhmPFZ/0pBvazlqmctG9I8GM9GTfNNpIJQF5e\nXq34slqdk8QtupaXEEJoc4rh7AAobMoppvEU/1txoz/FlNifZdgbkXwa/6nNJBNhHJNqKO+//z5p\naWnY29sTHh5OSkoKM2bMqK7YhBC1SUkJvPcejsf2qb/nBVBIABvREMpcvOz208jdjj4vvcSf71jt\nQtQcJtVQOnTowOLFi/nPf/6Doigmr+UlhKij9u6FLl3g1CmmL3yFgIA3Kj4qJJK8gId5KTaWH3Jy\nJJnUYCZ1yq9duxY/Pz9CQ0OrM6YqkU55IWxIURG8+SYsXw7R0TByJABxcTuYO3cLJSV2ODnpmTYt\nnMjIPlYO9vfVlnfLvZ7D4qO8qrqWlyXUlj+6EDXetm0wZQr07AmffAKentaOqEps9d0yb948vv32\nW44fP87YsWP/cDv26kwoFl3LSwhRB9y4Aa+8oq5J/+WXcHtPo9oqLm4H0dEJaLX2ODrqmD59oMm1\nraqU4evry1tvvcXmzZspLi6+n0cwG5MSipeXF59//jkJCQlMnDiRkJCQ6opLCFET/fgjvPiimkSO\nHYPbu6/WVnFxO5gxYzPp6bMrjqWnq/1DxiaEqpYxfPhwAA4ePFixw621mNQpHxcXx4svvkiPHj2Y\nM2cOmzZtqq64hBA1SU4OTJgAM2bAkiUwf36tTyYA0dEJlRIBQHr6bObO3WLRMgCbaI4zKaF4e3vT\nvn17Bg8ezMKFC7l27Vp1xSWEqAkUBVasUPd3b9IEjh6Ffv2sHZXFaLWGG3k2b7ZDo8GofxISDJdR\nUmJnUiy2sKutSU1enp6ejBkzhvHjx9OyZUtJKELUZVeuwJ//DKdPq/vA9+hh7YgsztFRZ/B4RISe\neCNX2I+I0JGQcPdxJye9SbHUuBrK448/zjvvvMPevXv57rvviIqKqq64hBC2SlHg22+hc2fo0AF+\n/rlOJhOA6dMHVppTAxAQ8DrTpoVbtAyogTUUgKCgIP75z39WRyxCCFt38SK88AJcvQqbN6uTFeuw\nXzvN58596445NYNMGuVV1TL0ej1lZWXodDr0ej1arRZ7e3vs7ExrMjOHP5yHMnbsWGJiYgB1g63S\n0lKioqI4evQoWq2WfjbWXmqrY8WFqNHKy9UhwDNnwv/7f+qwYAcHa0dlUbb6bpk1axbvvvvuXcfe\nfvttg+dbdWJjWVkZDrf/xYmOjsbT05PY2Fg0Gg1NmjRh7ty5VQrA3Gz1jy5EjZWWBs8/D2VlsHAh\nBAdbOyKrqC3vlupMKH/Yh+Jwx7eQkJAQWrVqxYoVK1iwYMFdWdEY8fHxtGvXjjZt2vDBBx/c9fmp\nU6fo0aMHTk5OfPzxx5U+8/f3p1OnTnTp0oVu3bqZfG8hhAl0Ovj3v9X+keHDYefOOptMhHGM6kP5\n5z//SZcuXbh06RJTpkwB4PTp0xQWFprU5KXX63nppZdITEzE19eX0NBQoqKiCL7jX1JPT0/mzp3L\nunXr7rpeo9GQlJRE48aNjb6nEOI+HD8Ozz0Hbm6QkgKtW1s7IlEDGDXKa/jw4Zw7d44vv/ySoUOH\nMmXKFA4fPkxycrJJN0tJSSEwMBB/f38cHBwYM2YMsbGxlc7x9vYmJCSkUs3oTrWhyimEzSothXfe\nUeeSTJkCiYmSTITRjKqhBAcHExwcTKtWrRg8eDBZWVkcOHCAhx9+2KSbZWZm0qJFi4rf/fz82L9/\nv9HXazQaBgwYgJ2dHVOnTq2oLQkhzODgQbVW0rKlOhTYz8/aEYkaxqRhwx06dACgWbNmdO3aFR8f\nH5NuVtVx0rt376Z58+ZkZ2cTHh5Ou3bt6N27d5XKFKLOKy6GWbPUuSX/+Q+MG6dO4RbCRCYllFdf\nfZVvv/0WR0dH9Ho9mzZtYvDgwUZf7+vrW2nb4IyMDPxM+BbUvHlzQG0WGz58OCkpKQYTyqw7NugJ\nCwsjLCzM6HsIUafs2gWTJ6uTFI8ehaZNrR2RsJCkpCSSkpLMWqZJCWXgwIE4OjoC0KJFCw4fPmzS\nzUJCQkhLS+P8+fP4+PiwfPnyijkuv/XbvpJbt26h1+txc3OjqKiIhIQEZs6cafDaWbLjmxC/r7AQ\nXntNXTJl3jx1FJeoU377Zfudd96pcpkmJZQmTZrw1FNPMWHCBFq2bMnx48cZOnSo8Tezt2fevHlE\nRESg1+uZPHkywcHBzJ8/H4CpU6eSlZVFaGgoBQUF1KtXj08//ZTU1FSuXbvGiBEjANDpdIwfP56B\nAweaEr4QAmDLFrXDvV8/dTSXh4e1IxK1hEk7NgL88ssvfPvtt+h0Ov70pz/R2sZGgNSWyUdCmF1e\nHvztb7B1q7q8/KBB1o6oRqkt7xarTmy809dff01ubi4zZ87kiSee4KeffqrSzYUQFhIbqy4x7+ys\n1kokmdQapaWlTJ48GX9/fxo2bEiXLl2IN3apYzMzqcnr2rVrJCcnEx0dzc2bNwkICGDkyJHVFZsQ\noqqys2H6dHVI8PffQ9++1o6o1tkRF0dCdDT2Wi06R0cGTp9On8hIi5Wh0+lo2bIlO3bsoGXLlsTF\nxTF69GiOHTvGAw88cD+PdP8UEyxevLjiZ61Wq6xYscKUyy3CxEcSonYqL1eUZcsUpWlTRfm//1OU\noiJrR1TjGXq3JP/4o/J6QICiqIv6KwoorwcEKMk//mh0ueYo47c6deqkrFmzxujn+L3jpjCphuLg\n4MAzzzxDVFQUQUFBVt+/WAhh4NvtuHH0Wb0azp6F9etB1r2rNgnR0cxOT690bHZ6Om/NnWt0DcMc\nZdzp6tWr/PLLLxXzBi3JpITi5+fHa6+9xtKlS9m+fTuTJk2qrriEEEbYERfH5hkzKr2Q3khMhNGj\n6XPoENwe5i+qh71Wa/C43ebNRk8OvddL2K6kxOR4ysrKGD9+PM888wxt27Y1+fqqMqlT/rPPPsPf\n35/33nuPuXPnEhoaWl1xCSGMYPDbbXk5W/LyJJlYgO4e/x/rIyLuaMD6/X9095j+oHdyMimW8vJy\nJk6ciJOTE/PmzTP5WczBpITi7u5OcnIyZWVl1RWPEMIE9jduGDx+P99uhekGTp/OGwEBlY69HhBA\n+LRpFi1DURQmT55MdnY2q1evtspujWBik5e7uzsHDhzgiy++QKvV0rVrV957773qik0IcS+ZmTB7\nNrpDhwx+bOq3W3F/fu3jeGvuXOxKStA7OTFo2jST+j7MUcaLL77IqVOnSExMrFjNxBr+cGLjunXr\neOihh/D392fXrl14e3sTFBSEoihcvHjR8sPS/kBtmXwkhEFXr8KcObB4MUyezI4uXdj89tuVmr1e\nDwhg0Kef3leHrrg3W323XLhwgVatWuHk5FSpZvLVV18xduzYu86vzomNf1hDSU5Oxs/PD39/f65f\nv06vXr0qbm5ryUSIWuv6dfjoI1iwAMaPhxMnoHlz+gA0alSlb7eiZnvggQcoLy+3dhiAETWUbdu2\nMXfuXEpKSiguLiYyMpKOHTvSsWNHfH19LRWn0Wz1W4QQ9yU/H/77X/jsM3jySXjzTbhjTyFhObXl\n3VKdNRST1vL6+OOPCQkJ4cSJExw/fpzLly/j5+fHtGnTCAoKqlIg5lJb/uiijisshOhoNZk8/ji8\n9ZbsnGhlteXdYjMJxZAffviBjIwMXnnllSoFYi615Y8u6qhbt+CLL+DDD+Gxx2DmTLCRL2t1XW15\nt1i1D+WP1K9fn3bt2lW1GCHqNq0WvvoK/vUv6NFDXRH4wQetHZUQJqlyDcXW1JZvEaKOKCuDb76B\n99+HTp3g3Xfh4YetHZUwoLa8W2y6hiKEuA86nbr677vvqn0jK1bAI49YOyohqkQSihCWVF6uJo9Z\ns6BJE7V20qePtaMSwiz+cOmVt956i7i4OHJyciod3759O9evX6+2wISoVRQF1q6Fzp3hk09g7lxI\nTpZkImqVP6yhFBcXc/HiRVatWsW1a9fw8PCgW7duhISEsHDhQv7+979bIk4haiZFgU2b1GG/iqLO\nch8yxOiVaIWoUUzdQOXGjRtKYmKiMmfOHGXlypUmb8CyadMmJSgoSAkMDFTmzJlz1+cnT55UHnnk\nEcXR0VH597//bdK1iiIbbAkbUV6uKFu2KMojjyhKhw6Ksnq1ouj11o5KVIEtv1vGjx+vNGvWTHFz\nc1NatWqlvP/++/c8917PYY7nM2mU18mTJ/n8889xd3dn4sSJJq+3r9frCQoKIjExEV9fX0JDQ4mJ\niSE4OLjinOzsbC5cuMC6devw8PDgb3/7m9HXQu0ZiSFqsJ071RrJlStqX8no0WCl1V+F+dzr3bIt\nbhvroteh0WpQHBWGTR9G/8j+JpVd1TJOnDhBQEAATk5OnD59mr59+/Ltt98yaNAgo5/D4qO84uLi\nePHFF7lw4QIffPABI0eOZPDgwUZfn5KSQmBgIP7+/gCMGTOG2NjYSknB29sbb29v4uLiTL5WCKtK\nSVETSVoavP02TJgA9jLupTbbFreNmBkxjE8fX3Hs+/TvAYxOCOYo47e7M9rb29OkSROjrjUnk/ZD\n8fb2pn379gwePJiFCxdy7do1k26WmZlJizvWIfLz8yMzM7ParxWiWh0+DFFR6lpbI0bAqVPwzDOS\nTOqAddHrKiUCgPHp44mdG2vRMgD+/Oc/4+rqSocOHXjzzTd52ArzmUz6N97T05MxY8Ywfvx4WrZs\naXJC0VShI9KUa2fNmlXxc1hYGGFhYfd9XyHu6cQJdWmUPXvgH/9QhwPLPiR1ikZr+L10Y/MNkjRJ\nRpVRQIHhD0zcI+3zzz/ns88+Izk5mZEjR/Lwww/TrVu3e56flJREUpJxMRrLpITy+OOP07ZtWxYv\nXsw333zD7NmzTbqZr68vGRkZFb9nZGTg5+dn9mvvTChCmF1amto3kpgIr7wCS5aAi4u1oxJWoDga\n7nNoFNGIsPgwo8pYE7EGEgx8cB/fTTQaDWFhYYwaNYqYmJjfTSi//bL9zjvvmH7D3zCpyWvJkiV8\n/vnnBAYG8tFHH/Hzzz+bdLOQkBDS0tI4f/48paWlLF++nKioKIPn/rZzyJRrhagW58/Dc89Bz57Q\nvj2cOQP/93+STOqwYdOH8X3A95WOLQ1YyhPTnrBoGb9VVlaGq6vrfV9/v0xu5H377bfZt28fH330\nEc2bNzftZvb2zJs3j4iICPR6PZMnTyY4OJj58+cDMHXqVLKysggNDaWgoIB69erx6aefkpqaSoMG\nDQxeK0S1u3QJZs+GlSvhz39Wayju7taOStiAXzvN185dqzZROcG4aeNMGqFV1TKys7PZunUrQ4cO\nxcnJicTERFauXEliYqKpj1NlJg0b3rhxI3369KFBgwbVGVOVyLBhYTZZWepExO++gylT1OYtT09r\nRyWsxFbfLTk5OYwcOZIjR46gKApt27blzTffvGcLjs3shzJ9+nSOHj2Kp6cn3bp1o1+/fr/bRmcN\ntvpHF7ZrR1wcCdHR2Gu16BwdGfj00/Q5cgS+/homTVI73Js2tXaYwspqy7vFZuahhIWFER0dza1b\ntzh48CAHDx60uYQihCl2xMWxecYMZqenVxx7IzERBg1Sk4qRg0aEECZ2yms0Gg4cOICLiwt9+vTh\nz3/+c3XFJYRFJERHV0omALPLy9mi10syEcJEJtVQkpOTAXj33XdxcnKib9++vPTSS9USmBDVSqeD\nH3/EPiXF4Md2JSZOAhBCmJZQnnzySTQaDb169aK4uJgTJ05UV1xCVI/MTLVvZMEC8PdH5+cH+fl3\nnaaXCYpCmMykJq/evXvTq1cvAJydnQkJCamWoIQwq/JySEhQl0Xp2BGuXYONG2HXLgbOmcMbAQGV\nTn89IIDwadOsFKwQNZfsKS9qr5wcdUfE+fPBzQ1efBHGjlV/vsOOuDi2zJ2LXUkJeicnwqdNo09k\npJWCFraqtrxbbGbYcE1QW/7o4j4pirq21hdfQFwcPPGEmki6dZNNrUSV1JZ3iyQUE9SWP7owUUEB\nLF0KX34JWi386U/w9NPQuLG1IxO1RG15t9jMPBQhbM7PP6tJZMUKCA9X92vv109qI0JYgUmd8kLY\nhOJiWLwYHnkEhg2Dli0hNVVNKv37SzIRdVZaWhpOTk5MnDjRKveXhCJqjtOn4a9/hRYt1OTxxhtw\n9qz6vyYuVCqEucTFxREREUFYWBgRERF37TZrqTIA/vKXv9CtW7cq7T1VFdLkJWxbWRmsW6c2a504\noS4ff+AAtGpl7ciEIC4ujhkzZpB+x2oLv/4caeRIQXOUAfDDDz/g4eFB+/btOXPmjNHXmZPUUIRt\nungR3nxTbc767DN44QX12D//KclE2Izo6OhKiQDUZDB37lyLllFQUMDMmTP573//a9WBA1JDEbZD\nr4fNm9Uhv3v2wIQJsG0byL43wkZptVqDxzdv3lzlZqcSE5b/eeutt3j++efx8fGxWnMXSEIRtuDq\nVVi0CL76Cry91SG/y5fLTojC5jk6Oho8HhERQXx8vFFlREREkJBw9x7ATkYu/3P48GG2bt1asYOu\n1FBE3aMokJys9o1s3gwjR8KqVdC1q7UjE8Jo06dPJz09vVKTVUBAANNMWLqnqmUkJydz/vx5WrZs\nCUBhYSF6vZ6TJ09y8OBBo+MwB5nYKCwrP18d8vvll1CvnlobmThRttQVNu9e75a4uDjmzp1LSUkJ\nTk5OTJs2zaTO9KqWUVxczM2bNwG1dvLvf/+b8+fP8+WXX+JpYIdRmSlvAkkoNurAATWJrFkDgwer\niaR3b5kzImqMmvJueeedd0hPT2fJkiUGP69VCSU+Pp6XX34ZvV7P888/z6uvvnrXOdOnT2fTpk24\nuLjw7bff0qVLFwD8/f1p2LAhdnZ2ODg4kGJgL4ua8kevTe7aQnf6dHVxxaIiiIlRE0luLkydCs8+\nC02aWDtkIUxWW94t1ZlQUCxIp9MpAQEByrlz55TS0lKlc+fOSmpqaqVz4uLilMGDByuKoij79u1T\nunfvXvGZv7+/cv369d+9h4Ufqc5L/vFH5fWAAEVRe0UUBZTXW7RQkiMjFaVxY0WJilKUTZsURa+3\ndqhCVEltebfc6znM8XwW7ZRPSUkhMDAQf39/AMaMGUNsbCzBdwwLXb9+PU8//TQA3bt3Jz8/n6tX\nr9K0adNfE6AlQxZ/wOAWuhkZvFW/Pn0OH1ZntQsh6gSLTmzMzMykxR0vGD8/PzIzM40+R6PRMGDA\nAEJCQliwYIFlghb3VlaG/ZUrBj+y8/OTZCJEHWPRGoqxE27uVQvZtWsXPj4+ZGdnEx4eTrt27ejd\nu/dd582aNavi57CwMMLCwu4nXGFIeTns3QvLlsHKlehKSw2eJlvoCmHbkpKSSEpKMmuZFk0ovr6+\nZGRkVPyekZGBn5/f755z6dIlfH19AfDx8QHA29ub4cOHk5KS8ocJRZiBosDRo2oHe0wMNGgA48fD\nvn0MPHmSN2bMqNTs9XpAAINkC10hbNpvv2y/8847VS7TogklJCSEtLQ0zp8/j4+PD8uXLycmJqbS\nOQuzR/EAABJ5SURBVFFRUcybN48xY8awb98+3N3dadq0Kbdu3UKv1+Pm5kZRUREJCQnMnDnTkuHX\nPenp/0siRUXq9rkbNqj7st+ubfZp3RqAt+7YQneQbKErRJ1k0YRib2/PvHnziIiIQK/XM3nyZIKD\ng5k/fz4AU6dOZciQIWzcuJHAwEBcXV355ptvAMjKymLEiBEA6HQ6xo8fz8CBAy0Zft1w5Yq6NHxM\nDJw7B6NGwYIF0KPHPeeM9ImMlAQihJCJjQJ19vqaNWq/yKFDEBUF48bBY4+BvazOIwTUnndLrZrY\nWN1qyx+92hUXw48/qklk2zY1eYwbB5GR4Oxs7eiEsDm15d0iCcUEteWPXi3KymDrVjWJbNgAoaFq\nv8jw4bKWlhB/wJbfLWFhYezfvx/72y0Kfn5+nDx50uC51ZlQpD2jtisvV/cWiYmBlSshIEBNIh9+\nCM2aWTs6IWq8uC1xRC+LRqtocdQ4Mn3cdCLDTVwcsoplaDQaPvvsM5577jlTwzcrSSi10a/DfJct\ngx9+qDTMl9ujsoQQVRe3JY4Zn80gvcsd2/d+dnv7XiMTgjnKANtYRUSavGoTQ8N8x46tNMxXCHF/\nDL1bIp6NIMH/7s2xIi5EEL/IyA22zFBGv379OHHiBIqiEBQUxOzZs+nbt6/Bc6XJS9zbr8N8ly1T\nh/mOHq3ufNijh7rfiBCi2miVe2wBfHYzmneM/BJ3DvC/+3BJufFbAH/wwQd06NCB+vXrExMTw9Ch\nQzl8+DCtLdwiIQmlJjI0zPfdd2WYrxAW5qi5xxbArSOIn2lkDeV8BAkY2AK4nvHLF3Xr1q3i50mT\nJhETE8PGjRt56aWXjC7DHOQrbE1RXKx2qg8fDg88oA75/dOf4PJldQfEiAhJJkJY2PRx0wn4OaDS\nsYCfApg21oQtgM1Qhq2QN5CNMLhJ1cCBkJio9omsX68O8x03Dr75Rob5CmEDfu00nxszl5LyEpzq\nOTHtpWkmdaZXtYwbN26wb98++vbti729PcuXL2fnzp3MnTvX9AeqIumUtwE74uLY/JsFFt9o2JAI\noE/79mrH+ujRMsxXCCuy1XdLTk4OQ4YM4dSpU9jZ2REcHMx7773HY489ZvB8mdhoAlv9o/+eNwcM\n4P2tW+86/lbv3ry3Y4cVIhJC/FZNfLcYIqO8ahutVp0Tsn07bNuG/e7dBk+zk1FaQogaRN5YlqDT\nqQnkX/+C8HDw8oL/+z+1o/2NN9D162fwMtmkSghRk0gNpTqUl8ORI+qii9u3w86d4O8P/frBtGnq\naK07OtUH6nS8cf68bFIlhKjRpA/FHBQFTp78XwJJSgJvbzWB9O8PYWH/v737j2nqXv8A/iazIgEU\nrKB2YJDyMyoFrUNAmNzAdSpBRTfdBM3muHpjZuKPm3uTuWzJ3Ygk84/ryKLZdDh1hEUZRYrAMnBX\nsIUC2woMkF9j/EZgCFXkl5/vH72cLxWE0pbS455XchJrz3PO83mKfTznwzlH+3oa/5XL8f2Eh1RF\n0kOqCLEoNIeix7apoRiAMaChQdtAxpvIokXaCwvDw7XL/x5bTAh5MVBD0WPb1FD01NzMTaIjP197\nK/i//EW7hIcDq1ebfp+EEItBDWVmNIfyPJ2d2lNX40chf/zx/6ew/vUvwNubbrhIyJ+Io6MjrF6A\nf/OOjo5ztm2z/5ZXdnY2fHx84OnpicTExCnXOX78ODw9PSGRSPDTTz/NKtZgf/wBpKcDx48Da9dq\nG8b164CvL3DjBtDVpZ1M//vfAR8faiaE/Mn09vaCMcb7pbe3d+6KxMxodHSUicVi1tjYyIaHh5lE\nImG//vqrzjpyuZxt27aNMcaYUqlkgYGBescyxpjeQ+rvZ0wuZ+z0acbWr2fMzo6xv/6VsbNnGSsu\nZmxkxLjBGig/P39e9msKfM6dMcp/vlH+88sU7cCsRyjFxcXw8PCAm5sbBAIB9u/fD5lMprNORkYG\nDh06BAAIDAxEX18fOjo69Iodd2brVvxXLtf9y8FB7eNvz5wBgoOBlSu1Ty20twf+8x+gpwfIyQH+\n+U/tPbPm6UaLd+7cmZf9mgKfcwco//lG+fOfWb81W1tb4erqyr12cXFBUVHRjOu0traira1txthx\nH+fm4v26OqCyEmFDQ9o5EJUK8PPTzoP8+9/apmJjY+IREkLIn5dZG4q+E1rMBL9J8UlDAz74+GOE\n/e1vwD/+AYSGao9GCCGEzA3jz7zpT6FQsK1bt3KvExIS2NmzZ3XWOXLkCEtJSeFee3t7s46ODr1i\nGWNMDDDQQgsttNAyq0UsFhv9HW/WIxSpVIra2lr89ttvEIlESE1NRUpKis460dHRSEpKwv79+6FU\nKuHg4IDly5dDKBTOGAsAdS/A74kTQggfmbWhLFiwAElJSdi6dSvGxsZw+PBh+Pr64uLFiwCAI0eO\nYPv27cjKyoKHhwdsbW3x1VdfTRtLCCHEMrxwV8oTQgiZH7y5fb3FXhCpJ2Pyd3Nzg5+fHwICAvDK\nK6+YK2UdM+VfXV2NoKAgLFq0COfOnZtVrDkYkz8f6n/9+nVIJBL4+fkhJCQEarVa79i5ZkzufKi9\nTCaDRCJBQEAANmzYgLy8PL1jzcGY/Gddf6NnYczAHBdEWmr+jDHm5ubGenp6zJrzRPrk39XVxVQq\nFXv//ffZp59+OqtYS86fMX7U/969e6yvr48xxtjt27ct5uffmNwZ40ftNRoN92e1Ws1Nbs937Y3N\nn7HZ158XRyjmuiDS0vLv7Ozk3mfzeGZSn/ydnJwglUohEAhmHTvXjMl/nKXXPygoCEuWLAGg/flp\naWnRO9ZScx9n6bW3tbXl/qzRaLBs2TK9Yy05/3GzqT8vGsrzLnbUZ52pLoh8NnauGZM/oL1+JyIi\nAlKpFF988YV5ktYzt7mMNRVjc+Bb/S9duoTt27cbFGtqxuQO8Kf26enp8PX1xbZt23D+/PlZxc4l\nY/IHZl9/Xtxt2JwXRM4FY/MvKCiASCTCgwcPEBkZCR8fH4SGhpoyxWkZc4dVS7g7q7E5FBYWYuXK\nlbyof35+Pi5fvozCwsJZx84FY3IH+FP7Xbt2YdeuXbh79y7i4uJQXV09x5npx9D8a2pqAMy+/rw4\nQnn55ZfR3NzMvW5uboaLi8u067S0tMDFxUWv2LlmaP4v/+8hXSKRCID2tMzu3btRXFxshqyfn9ts\nasiX+k9n5cqVACy//mq1GvHx8cjIyOBuUT7f9Tcmd4A/tR8XGhqK0dFR9Pb2wsXFhXc/++P59/T0\nADCg/sZM+JjLyMgIc3d3Z42NjWxoaGjGSW2FQsFN7OkTa8n5P3r0iPX39zPGtJNnwcHBLCcnx+Ly\nH/fhhx/qTGrzpf7jns2fL/VvampiYrGYKRSKWcdaau58qX1dXR17+vQpY4yx0tJS5u7urnesJedv\nSP150VAYYywrK4t5eXkxsVjMEhISGGOMXbhwgV24cIFb59ixY0wsFjM/Pz9WWlo6bay5GZp/fX09\nk0gkTCKRsDVr1lhs/u3t7czFxYUtXryYOTg4MFdXVzYwMPDcWL7kz5f6Hz58mC1dupT5+/szf39/\ntnHjxmlj+ZA7X2qfmJjI1qxZw/z9/dnmzZtZcXHxtLF8yd+Q+tOFjYQQQkyCF3MohBBCLB81FEII\nISZBDYUQQohJUEMhhBBiEtRQCCGEmAQ1FEIIISZBDYUQQohJUEMhhBBiEtRQiMU4ffo0Pvjgg+e+\nn5eXhxMnTiA9Pd0k+xsZGcGbb75p1m1MHKOh+58qrra2FuvWrePuwTSdjIwMhISEzHq/hMyEGgqx\nGGKxGJs2bXru+5999hkOHDgAf39/g/dRVVWFhIQEAIBAIEBKSorB2zJkGxPHaOj+p4rz9PSEh4cH\nhELhjPGenp7z9vRD8mKjhkIsRnFxMQIDA5/7/pMnTyCVSuHm5mbwPvLz8xEQEGBwvLFmGqOhHj9+\njMWLF+u1rkKhgFQqNXkOhPDieSiEX+7evYubN2/i1VdfBWMMd+7cwWuvvYbu7m4AwMGDB5GZmYme\nnh48ePAAO3bsgK+vL7q6uiY9LW7cuXPnMDg4CJlMBqFQiMzMTPT19aGvrw/Hjh1DS0sLRkZG0NLS\nAmdnZ7z77ruQy+Xo6upCbm4uEhMTUVlZiUuXLuHo0aO4d+8eSkpKIBKJsHfvXgCYlFN3dzc3DgCo\nrKzEmTNnuJwaGhqQmZnJbWPiuKdaHwA3xvr6esjlcp39f/PNNxgZGcHQ0BCePHmC/v5+REREYNOm\nTYiLi8PVq1cnxY3H1NXVYePGjTr7Kisrg0wmg6urK1asWIGamhqcOnUKSqUSHh4eSE1NxdjYGN56\n6y0AQEpKyqQaVlRUoKysDIODg4iNjYWtrS1u376N6upqLFy4EHv27MGKFSsmfV5jY2NITU1FQ0MD\nXF1dUVxcjFOnTsHd3X3WP0+EP+gIhZjc+EN9XFxcEBMTA7VajbCwMERFRaGsrAz379/HtWvXcOjQ\nIWzfvh2ff/45+vv7dZ6D8SypVIodO3Zg586dcHJygr29PWJiYnDlyhU4OzsjJycHBw8exEsvvYS1\na9fi/v37+Prrr/H2228jOTkZq1atwrZt2yASiRAfHw8AEAqFGB4eBgDU1NRMymniOHbv3o3a2lqd\nnDo6OnS2MdP6Dx8+5MbY2dk5af+5ubk4dOgQuru7odFoIBAIwBhDY2Mj7OzsdOKGhoZ0Yuzs7CYd\n+QwODsLe3h4ikQhRUVHIysoCAFRXV+Odd95BZGQk93yLmpqaSTUEgMuXL8PHxwfW1tbQaDRoampC\nQkICTpw4AV9fX2g0mik/r19++QV79uyBu7s7nj59itdff517tgZ5cVFDISa3efNm1NfXY+PGjXj8\n+DGEQiHs7OygVCohkUhw5coVHDhwAADQ1NQEBwcHqFSqac/rV1ZWYt26dQAAb29vlJSUIDw8HNbW\n1rh27Rqio6MBaL/IAgICkJycjNjYWACAtbU1AG0DGP/fdHBwMGQyGRf3bE6Ojo4643j48CEWLNA9\noH92GzOtP3GMz8ZOHENZWRlOnDiBsrIyBAUF4d69ewgODp4UNzFGrVZPmlsKCQlBUVERwsLCwBhD\nR0cHHj16hKVLl2LZsmVQKpVczFQ1BIDY2FicPHkSaWlpWL58OdLT0+Hp6YnMzExYWVnBw8Njys9r\n/fr1sLa2hkKhwJYtW7BlyxbY2NjorHPy5EkMDg5OGU/4iRoKMbnBwUEsWrQIAFBSUsJ9iWZkZCAs\nLAxVVVVYtWoVAODGjRuIi4tDSUkJpFIp8vPzp9xmRUUF11AYYxgaGoJAIAAA9PX1wdvbG8PDwxgY\nGEBJSQlGR0e5fTQ3N6OtrY37QlepVOjv74eVlRXUajUAYHh4eFJOE8eRlZWFyMhIKBQKLqdntzHT\n+qWlpdwYBwYGdGInjuHx48ewsbHhvoAVCgXWr1+PoqIiLq68vFwnRqPRQKlUTqpbT08P7OzskJeX\nh507d0KlUiEoKIj7PIKDg1FWVjZlDb///nuo1WoUFBRwpyJtbGwQHR2NqKgohIaGoqurCwDQ2Nio\ns1+VSoXu7m5UVFRg9erVuHv3rs77VVVV6OjoQEdHx5SfN+EnaijE5CorK7l5hIqKCoSHhwPQPk60\nqKgIn3zyCXJzc3HlyhXs3bsXXl5eEIvFKCgogJ+f35TbbGtr4x6J/Pvvv2PDhg3cewcPHkRubi5k\nMhnEYjHa29tx9OhRZGVl4datW6ioqIBIJIJIJEJrays0Gg3Gxsbg7OyMoaEhAEB8fLxOTp6enjrj\nsLe3R2dnp87jU5/dxkzrj49RIpFgdHRUJzYuLg45OTk4f/48vLy8AACurq64efMmFixYgB9++AFr\n1qzRiZs4bnd3d+7LfVx9fT1GR0dx69Yt/Pjjj/joo49QVVXFfR5OTk5QqVTw8/ObVMO2tjY4Oztj\n4cKF+Pbbb/HGG28AAPbt2we1Wg25XI7U1FQsWbIEra2tiIiI0Nl3dnY20tLSEBISgu+++27S51le\nXo7Nmzejvb19ys+b8BM9YItYtLS0NAwPD6OgoABJSUnznc6cS05Oho2NDfbt22f0tq5evQorKyvu\n1N9cunPnDrZs2aLXutnZ2RgbG0N5eTm8vLwQExMzt8kRs6EjFGLRBAIBmpub8d577813KnPu559/\nxsWLF9HS0mL0ttrb2/Hll1+itbXVBJnNbPxIayaFhYUoLy/Hjh07IBQKUVhYOMeZEXOiIxRCCCEm\nQUcohBBCTIIaCiGEEJOghkIIIcQkqKEQQggxCWoohBBCTIIaCiGEEJOghkIIIcQkqKEQQggxCWoo\nhBBCTOL/AMYcuoSlk302AAAAAElFTkSuQmCC\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x5fcfd50>"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.4-2 Page Number 601"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Overall Mass Transfer Coefficients from Film Coefficients\n",
+ "import numpy as np\n",
+ "from scipy.interpolate import interp1d\n",
+ "from scipy.optimize import root\n",
+ "\n",
+ "#Variable Declarion\n",
+ "yAG = 0.380 #Inlet Gas Flow Rate, kg mol/hr\n",
+ "xAL = 0.100 #Inlet Liquid Flow Rate, kg mol/hr\n",
+ "ky = 1.465e-3 #Gas phase mass transfer coefficient, kmol/(m2.s)\n",
+ "kx = 1.967e-3 #Gas phase mass transfer coefficient, kmol/(m2.s)\n",
+ "xA = np.array([0.00,0.05,0.10,0.15,0.20,0.25,0.30,0.35])\n",
+ "yA = np.array([0.00,0.022,0.052,0.087,0.131,0.187,0.265,0.385])\n",
+ "xAi = 0.2572\n",
+ "yAi = 0.1964\n",
+ "\n",
+ "f = interp1d(xA, yA, bounds_error=False, fill_value=-10)\n",
+ "\n",
+ "def flux(k,a,b):\n",
+ " return k*(a-b)/lm(a,b)\n",
+ "\n",
+ "def lm(a,b):\n",
+ " return ((1-a)-(1-b))/log((1-a)/(1-b))\n",
+ "\n",
+ "#f2 = lambda x: f(x)- yAG #sol = root(f2, 0.3, method='hybr') xAs = sol.x[0] print xAs\n",
+ "yAs = f(xAL)\n",
+ "md = (yAi-yAs)/(xAi-xAL)\n",
+ "yLMs = lm(yAs,yAG)\n",
+ "yLM = lm(yAi,yAG)\n",
+ "xLM = lm(xAi,xAL)\n",
+ "InvKydby_yLMsGas = 1/(ky/yLM) \n",
+ "InvKydby_yLMsLiquid = md/(kx/xLM)\n",
+ "InvKydby_yLMs = InvKydby_yLMsGas + InvKydby_yLMsLiquid\n",
+ "Kyd = (1/InvKydby_yLMs)*yLMs\n",
+ "Rgasper = InvKydby_yLMsGas*100/InvKydby_yLMs \n",
+ "Rliquidper = InvKydby_yLMsLiquid*100/InvKydby_yLMs\n",
+ "NA = Kyd*(yAG-yAs)/yLMs\n",
+ "#Results\n",
+ "print \"Individual Film resistances for Gas and Liquid film are:\", round(InvKydby_yLMsGas,2),round(InvKydby_yLMsLiquid,2), \"respectively\"\n",
+ "print 'Overall Mass Transfer Coefficient: %5.3e'%(Kyd), \"kgmol/(m2.s)\"\n",
+ "print \"Percentage Resistance in Gas and Liquid film is:\", round(Rgasper,1),\"&\", round(Rliquidper,1),\"respectively\"\n",
+ "print 'The Flux of A is: %5.3e'%(NA), \"kgmol/(m2.s)\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Individual Film resistances for Gas and Liquid film are: 483.16 382.41 respectively\n",
+ "Overall Mass Transfer Coefficient: 8.924e-04 kgmol/(m2.s)\n",
+ "Percentage Resistance in Gas and Liquid film is: 55.8 & 44.2 respectively\n",
+ "The Flux of A is: 3.789e-04 kgmol/(m2.s)\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.5-1 Page Number 608"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Design of Water-Cooling Tower Using Film Coefficients\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "from scipy.interpolate import interp1d\n",
+ "from scipy.optimize import root\n",
+ "import scipy.integrate as integrate\n",
+ "\n",
+ "#Variable Declarion\n",
+ "P = 101325 #Atmospheric pressure\n",
+ "G = 1.356 #Inlet Gas Flow Rate, kg mol/hr\n",
+ "L = 1.356 #Inlet Liquid Flow Rate, kg mol/hr\n",
+ "TL1 = 29.4 #Initial temperature of water in \u00b0C\n",
+ "TL2 = 43.3 #Final temperature of water in \u00b0C\n",
+ "TG1 = 29.4 #Inlet air temperature of air in \u00b0C\n",
+ "Tw = 23.9 #Wet bulb temperature of air in \u00b0C\n",
+ "kGa = 1.207e-7 #Mass Transfer Coefficient, kmol/(m2.s.Pa)\n",
+ "K = 4.187e4 #J/(kg.K)\n",
+ "cL = 4187. #J/(kg.K)\n",
+ "T0 = 0.0\n",
+ "H1 = 0.0165 #Humidity of entering air, kgWater/kgDryAir\n",
+ "Mb = 29.\n",
+ " \n",
+ "\n",
+ "#Calculation\n",
+ "t = np.array([15.6,26.7,29.6,32.2,35.0,37.8,40.6,43.3,46.1])\n",
+ "H = np.array([43.68e3,84.0e3,97.2e3,112.1e3,128.9e3,148.2e3,172.1e3,197.2e3,224.5e3])\n",
+ "\n",
+ "f = interp1d(t,H,kind='cubic',bounds_error=False)\n",
+ "T = np.arange(28.,46.,1)\n",
+ "Hy = f(T)\n",
+ "\n",
+ "Hy1 = (1.005+1.88*H1)*1e3*(TG1-0.0)+2.501e6*H1\n",
+ "Hy2 = L*cL*(TL2-TL1)/G + Hy1\n",
+ "plt.figure(1)\n",
+ "plt.plot(t,H,'k-',T,Hy,'k-')\n",
+ "plt.plot([TL1,TL2],[Hy1,Hy2],'ro-')\n",
+ "plt.xlabel('$Liquid Temperature, C$')\n",
+ "plt.ylabel('$Enthalpy Hy, J/kg$')\n",
+ "\n",
+ "m1=(Hy2-Hy1)/(TL2-TL1)\n",
+ "c1=Hy1-m1*TL1\n",
+ "m2 = K\n",
+ "TT = linspace(TL1,TL2,11)\n",
+ "plt.xlim(25,45)\n",
+ "plt.ylim(40000,200000)\n",
+ "Hyi = ()\n",
+ "Hy = ()\n",
+ "cnt = 0\n",
+ "for i in TT:\n",
+ " y1 = m1*i+c1\n",
+ " c2 = y1-m2*i\n",
+ " ff = lambda xx: f(xx)-y1+K*(xx-i)\n",
+ " sol = root(ff,40)\n",
+ " x2 = sol.x[0]\n",
+ " y2 = f(x2)\n",
+ " Hy = np.append(Hy,y1)\n",
+ " Hyi = np.append(Hyi,y2) \n",
+ " cnt = cnt + 1\n",
+ " plt.plot([i,x2],[y1,y2],'o-')\n",
+ "InvHyimHy = 1/(Hyi-Hy)\n",
+ "\n",
+ "z = (G/(Mb*kGa*P))*integrate.simps(InvHyimHy,Hy)\n",
+ "plt.figure(2)\n",
+ "plt.plot(Hy,InvHyimHy)\n",
+ "plt.fill_between(Hy,InvHyimHy,0,color='0.6')\n",
+ "plt.text(90000, 0.00002, 'Area = '+str(round(z,2))+' m')\n",
+ "plt.xlabel('$Hy$')\n",
+ "plt.ylabel('$1/(Hyi-Hy)$')\n",
+ "plt.show()\n",
+ "#Results\n",
+ "print \"Height of packed cooling tower:\", round(z,2),\"m\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nRcTGxjJo0KBbVofOmEwwZgz8z/9Ydzj2yx++zJX6K/x32H9bJf+jmZm8n5DAK+fPW4696O5OWGQk\nkz77DM6cgdmzzcvhTJli3YsV4g4l84C6gbUDUEtLC7m5uaSnp7Nv3z4qKyuZP38+ixYtwqeTEVW2\nFBBgXkRg4kTrlZFnzCM+LZ7CXxdaJf8/hIXxl6ysdsf/6OzM/37rLfN7xj5WfP0nRA8gr+DsVE1N\nDVlZWezbt4/MzEycnZ2Jiori7bffJjAw0Gav2H6Ka6/hrBmAHnB9gIraCi5UXcB9kHv3Zt7QgIPR\n2OGP7vL2Nvd8hBC3nF099datW8f999+Pr68vTzzxBA0NDVRWVhIaGoqnpyfTp0+n6oYl79etW4de\nr8fb25usG/66zc/Px9fXF71eT0JCguV4Q0MDsbGx6PV6goODuXjxolWvx2Aw8OabbxIREcGwYcN4\n88038ff3Jzc3l08//ZRXXnmF8ePH23XwgVszHLuXphfho8O7bzj2tS0OliwBV1eaOwlALX1lto4Q\nNvPz1j7tPsXFxWrkyJGqvr5eKaVUTEyMeuedd9Rzzz2nXn31VaWUUklJSWrNmjVKKaU+//xz5efn\npxobG1VxcbHy8PCwrEQcGBiocnNzlVJKRUREqPe+Wwn5jTfeUMuWLVNKKZWamqpiY2M7rMvNNktr\na6s6efKk+tOf/qT8/f2Vo6Ojmj9/vtq1a5eqqqq6qTztQVOTUoMHK2UwWLecHWd2qFk7Zt18Bq2t\nSuXkKJWQoNSwYUoFBCj12mtKlZSoDzMy1AseHurGpb5/7+GhPszI6L4LEKKH6+qz024C0OXLl5Wn\np6eqrKxUTU1NaubMmSorK0t5eXkpk8mklFKqrKxMeXl5KaWUWrt2rUpKSrKkDwsLU8ePH1fffPON\n8vb2thzfuXOnWrp0qeWcnJwcpZRSTU1NasiQIR3WpSuNWFtbqzIyMtTSpUuVq6ur0uv1atWqVerD\nDz9UTU1NXWsEOxYbq9SWLdYto+I/FWrA2gGqvqm+awk/+0ypF1+8vsXBn/+s1Nmz7U77MCND/SEs\nTP158mT1h7AwCT5CdLOuBiC7+Q7I0dGRVatWMWLECPr160dYWBihoaGUl5fj7OwMgLOzM+Xl5YB5\nKZrg4GBLep1Oh9FopHfv3uhu2NDLzc0N43evX4xGI8OHDwfAwcGBgQMHUllZiaOjY5fqWl5eTmZm\n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\nrkJggg==\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x624b5d0>"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x63dd2b0>"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Height of packed cooling tower: 7.01 m\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.6-1 Page Number 614"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Absorption of SO2 in Plate Tray\n",
+ "from scipy.optimize import root\n",
+ "from scipy.interpolate import interp1d\n",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy as np\n",
+ "\n",
+ "#Variable Declaration\n",
+ "ysiP = 0.20 #Mole fraction of SO2 entering\n",
+ "ysoP = 0.02 #Mole fraction of SO2 leaving \n",
+ "P = 101325. #Total pressure at which SO2 is leaving in Pa\n",
+ "Fair = 150 #Flowrate of air in kg/hrm2\n",
+ "Fwat = 6000 #Flowrate of water in kg/hrm2\n",
+ "effP = 0.25 #Fractional efficiency\n",
+ "MWair = 29 #Molecular weight of air \n",
+ "MWW = 18 #Molecular weight of water \n",
+ "x = np.array([0.0000,0.0005,0.001,0.0015,0.002,0.0025,0.003,0.0035,0.004,0.0045,0.005,0.0055,0.006]) \n",
+ "y = np.array([0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.]) \n",
+ "xe = np.array([0.0,0.0000562,0.0001403,0.000280,0.000422,0.000564,0.000842,0.001403,0.001965,0.00279,0.00420,0.00698]) \n",
+ "ye = np.array([0.0,0.000658,0.00158,0.00421,0.00763,0.0112,0.01855,0.0342,0.0513,0.0775,0.121,0.212]) \n",
+ "\n",
+ "#Calculations\n",
+ "Vd = Fair/MWair\n",
+ "Ld = Fwat/MWW\n",
+ "k1 = Vd*ysiP/(1-ysiP)\n",
+ "k2 = Vd*ysoP/(1-ysoP)\n",
+ "f = lambda x: k1 -( Ld*(x/(1-x)) + k2) \n",
+ "sol = root(f,0.002)\n",
+ "xn = sol.x[0]\n",
+ "\n",
+ "for i in range(len(y)):\n",
+ " k1 = Vd*ysoP/(1-ysoP) + Ld*(x[i]/(1-x[i]))\n",
+ " ff = lambda yy: Vd*(yy/(1-yy))-k1\n",
+ " sol = root(ff,.1)\n",
+ " y[i] = sol.x[0]\n",
+ "\n",
+ "f1 = interp1d(x,y, bounds_error=False)\n",
+ "f11 = interp1d(y,x, bounds_error=False)\n",
+ "f2 = interp1d(ye,xe, bounds_error=False)\n",
+ "plt.plot(x,y,'r-',xe,ye,'b-')\n",
+ "\n",
+ "plt.text(.0037, .1, 'Equilibrium Curve')\n",
+ "plt.text(.0025, .22, 'Operating Line')\n",
+ "plt.annotate('$(x_N,y_{N+1})$', xy=(xn,ysiP), xytext=(0.004,0.2))\n",
+ "plt.annotate('$(x_0,y_1)$', xy=(0,ysoP), xytext=(0.0003,0.12))\n",
+ "def ypos(xop):\n",
+ " return f1(xop)\n",
+ "\n",
+ "def xpos(yop):\n",
+ " return f2(yop)\n",
+ "\n",
+ "xmax = f11(ysiP)\n",
+ "x1 = x[0]\n",
+ "y1 = y[0]\n",
+ "plot(x[0],y[0],'ro-')\n",
+ "plot([0.,xn], [ysiP,ysiP], 'k--', lw=1)\n",
+ "plot([xn,xn], [ysiP,0.], 'k--', lw=1)\n",
+ "plot(xn,ysiP,'bo-')\n",
+ "xlabel(\"Liquid phase mole fraction\")\n",
+ "ylabel(\"Vapor phase mole fraction\")\n",
+ "n = 0\n",
+ "while x1 <= xmax:\n",
+ " x2 = xpos(y1)\n",
+ " y2 = y1\n",
+ " plt.text(x2, y2-0.013, str(n+1))\n",
+ " plot([x1,x2], [y1,y2], 'k-', lw=1) #Draw Horizontal line to equilibrium curve\n",
+ " if x2 > xmax:\n",
+ " dxt = x2-x1\n",
+ " dx = xmax-x1\n",
+ " dxbydxt = dx/dxt\n",
+ " n = n + dxbydxt\n",
+ " break\n",
+ " x1 = x2\n",
+ " y1 = y2\n",
+ " y2 = ypos(x1)\n",
+ " plot([x1, x2], [y1, y2], 'r-', lw=1) #Draw a vertical line to operating line\n",
+ " n = n+1\n",
+ " x1 = x2\n",
+ " y1 = y2 \n",
+ "\n",
+ "print 'Number of Stages for separation', round(n,2)\n",
+ "print 'Actual Number of stages', round(n/effP,1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Number of Stages for separation 2.26\n",
+ "Actual Number of stages 9.0\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "iVBORw0KGgoAAAANSUhEUgAAAZIAAAEPCAYAAABoekJnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdY01cXB/BvVBwtVutWUJGlKFOWs6IiqLitFlcd1I2z\nddaBC3eH2rfiHm3dA1fRquBAKIooIC4QFFAUBUUExCT3/eNKCjLCyC+L83keHk34jcPKyV3nihhj\nDIQQQkgpVVB1AIQQQjQbJRJCCCFlQomEEEJImVAiIYQQUiaUSAghhJQJJRJCCCFlImgi8fPzQ4sW\nLWBiYoLVq1fn+7yvry+srKxgY2MDW1tbXLx4sdjnEkIIUQ8iodaRSCQSNG/eHOfPn4eenh7s7e2x\nb98+mJmZyY559+4dPv/8cwBAREQE+vfvj+jo6GKdSwghRD0I1iIJCQmBsbExDAwMoKOjA3d3d/j6\n+uY5JieJAEB6ejrq1KlT7HMJIYSoB8ESSWJiIho3bix7rK+vj8TExHzHHT9+HGZmZujRowc2bNhQ\nonMJIYSonmCJRCQSFeu4fv364e7duzh58iRGjBgBqthCCCGapZJQF9bT00N8fLzscXx8PPT19Qs9\nvmPHjhCLxUhJSYG+vn6xzjU2NkZMTIxiAyeEEC1nZGSE6OhoxV2QCeTDhw/M0NCQxcbGsvfv3zMr\nKysWFRWV55jo6GgmlUoZY4yFhoYyQ0PDYp/7cZKAUOErxeLFi1UdQplQ/KqlyfFrbOxiMWN797LF\nzs6qjqRMFP3aKViLpFKlSti0aRNcXV0hkUjg4eEBMzMz+Pj4AADGjx+PI0eOYM+ePdDR0YGuri72\n799f5LmEEKISjAGnTgHz5wNffAGYmqo6IrUiWCIBgB49eqBHjx55nhs/frzs/7Nnz8bs2bOLfS4h\nhCjdlSvA3LlAWhrg7Q306gUsWaLqqNSKoImEFM3JyUnVIZQJxa9amhy/RsR++zZvgURFAUuXAkOH\nAhUrAtCQ+JVIsAWJyiASiWiWFyFEsWJigEWLgIsXgR9/BMaOBapUUXVUCqXo106qtUUIIQDw7Bkw\naRLg6AiYmQEPHwKenlqXRIRAiYQQUr69fs27sMzNgc8+A+7dAxYsAHR1VR2ZxqBEQggpnzIygDVr\nABMT4MUL4NYtYN064GOpJlJ8lEgIIeXLhw+Ajw9PINev81lZ27YBucoykZKhWVuEkPJBKgUOHeLd\nVgYGwPHjgL29qqPSCpRICCHajTHg7Fk+DlKxIvD774Czs6qj0iqUSAgh2isoCJg3D0hK4osJ+/cH\nillQlhQfjZEQQrTPnTtAv37AN98A334LREYCAwZQEhEIJRJCiPZ4+hTw8AA6dwa++gp48AAYMwao\nRJ0vQqJEQgjRfOnpgJcXYGEB1K3LFxPOnAlUrarqyMoFSiSEEM0lkQDbtwPNm/PkERoKrFoF1Kih\n6sjKFWrvEUI009mzwKxZQM2aNJVXxSiREEI0S0QETyCPHvGV6X370iC6ilHXFiFEMzx7xivxOjsD\nbm7/zcyiJKJylEgIIert3Tu+kZS5OfDll8D9+8CUKYCOjqojIx9RIiGEqCeJBNixg29re+8eH0hf\ns4aPiRC1QmMkhBD1888/wA8/8P3Rjx7le4QQtUWJhBCiPiIj+UB6dDSwejWVNNEQ1LVFCFG9pCRg\n3DigSxegRw8+kE4lTTQGJRJCiOq8ewcsW8YH0mvU4APpU6cClSurOjJSAtS1RQhRPokE2LuX7w3S\noQMQEgIYGqo6KlJKlEgIIcoVEADMmMH3Rz98GGjTRtURkTKiREIIUY4nT/hMrH//5Xujf/01jYFo\nCRojIYQIKzOTLyi0sQFatQLu3gUGDaIkokWoRUIIEQZjwJEjvBXi4ADcvAk0barqqIgAKJEQQhQv\nIgKYNg14+RLYtQtwclJ1RERAgnZt+fn5oUWLFjAxMcHq1avzff7PP/+ElZUVLC0t0b59e4SHh8s+\nZ2BgAEtLS9jY2MDBwUHIMAkhipKSwutgde0KDBzIWyGURLSeYC0SiUQCT09PnD9/Hnp6erC3t0ef\nPn1gZmYmO8bQ0BCXL19GjRo14Ofnh3HjxiE4OBgAIBKJEBAQgFq1agkVIiFEUSQSYOtWYPFinkDu\n3gVq11Z1VERJBEskISEhMDY2hoGBAQDA3d0dvr6+eRJJ27ZtZf93dHREQkJCnmswxoQKjxCiKJcv\n80WENWoA584BVlaqjogomWBdW4mJiWjcuLHssb6+PhITEws9fvv27ejZs6fssUgkgrOzM+zs7LB1\n61ahwiSElFZ8PDBkCDB8ODB/Pl8fQkmkXBKsRSIqwdQ+f39/7NixA4GBgbLnAgMD0bBhQyQnJ6Nb\nt25o0aIFOnbsKESohJCSyMwE1q8Hfv4Z8PTke6Z/9pmqoyIqJFgi0dPTQ3x8vOxxfHw89PX18x0X\nHh6OsWPHws/PD19++aXs+YYNGwIA6tati/79+yMkJKTAROLl5SX7v5OTE5xoYI8QYTDG90afORNo\n3Rq4cQNo1kzVUZFiCAgIQEBAgGDXFzGBBiLEYjGaN2+OCxcuoFGjRnBwcMC+ffvyjJE8efIEXbp0\nwR9//IE2ucokZGRkQCKRoHr16nj37h1cXFywePFiuLi45A1eJKJxFEKU4c4dPp03KQn49Vc+K4to\nLEW/dgrWIqlUqRI2bdoEV1dXSCQSeHh4wMzMDD4+PgCA8ePHY+nSpUhNTcXEiRMBADo6OggJCUFS\nUhIGDBgAgCekYcOG5UsihBAleP0a8PIC/vwTWLQImDgRqETLz0hegrVIlIFaJIQIRCLhYx+LFgH9\n+vFS73XrqjoqoiAa0yIhhGio4GBg8mQ+gP7337xGFiFFoERCCOFSUoB584CTJ4G1a4GhQ6mwIikW\nqv5LSHnHGLBnD6/MW6kSEBUFDBtGSYQUG7VICCnPoqKASZOAt2+BEycAe3tVR0Q0ELVICCmPMjJ4\nN1anTrw2VkgIJRFSapRICClvTp3i3VhxcUB4OK/WW7GiqqMiGqxYXVuBgYGIi4uDWCwGwKeOffvt\nt4IGRghRsCdP+KLCO3eALVuAbt1UHRHREnITyfDhw/Ho0SNYW1ujYq53LZRICNEQHz4Av/wCrF7N\nq/Tu2wdUrarqqIgWkZtIQkNDERUVVaIijIQQNXH1Kl+N3qgRXx9ibKzqiIgWkjtGYm5ujmfPnikj\nFkKIorx8CXh4AO7uwMKFgJ8fJREiGLktkuTkZLRs2RIODg6oUqUKAD5GcuLECcGDI4SUkFQK7NzJ\n9wcZMoRP7/3iC1VHRbSc3ESSU6Y9p2uLMUbdXERpEhISMHnyZNy9exdSqRS9evXC2rVroaOjI+h9\nd+/eDRcXF9l2BmPHjsXMmTPzVK8uLV1dXaSnp+d5zsfHB5999hlGjBhR+gtHRAATJgBiMW+BUGkT\noiTFKtqYlJSE69evQyQSwcHBAfXq1VNGbHJR0UbtxhiDo6MjJk+ejJEjR0IqlWLcuHGoVasW1qxZ\nU+brS6VSVKhQcO9u586dsW7dOtja2pb5Pp+qXr063r59q7gLpqfzCr179gBLlwJjx9J0XlIkRb92\nyh0jOXjwIBwdHXHo0CEcPHgQDg4OOHTokMICIKQwFy9eRLVq1TBy5EgAQIUKFfDzzz9jx44dyMzM\nxK5du9C3b1907twZpqamWLp0qezcP/74A46OjrCxscGECRMglUoB8NbADz/8AGtrawQFBWHZsmVw\ncHCAhYUFxo8fDwA4fPgwbty4gWHDhqF169bIysqCk5MTbt68KbvGggULYG1tjbZt2+LFixcAgJiY\nGLRp0waWlpZYsGABqlevXuyv1cvLC+vXrwfAN2ibO3cuHB0d0bx5c1y9ehUAIJFIMGvWLDg4OMDK\nygpbfHyAY8eAli2BFy/+a5FQEiHKxuSwsLBgz58/lz1+8eIFs7CwkHeaUhQjfKLBfv31VzZjxox8\nz9vY2LDw8HC2c+dO1rBhQ5aSksIyMzOZubk5u3HjBouKimK9e/dmYrGYMcbYxIkT2Z49exhjjIlE\nInbo0CHZtVJSUmT/HzFiBDt58iRjjDEnJycWGhoq+1zuxyKRiJ06dYoxxtjs2bPZ8uXLGWOMubm5\nsf379zPGGNu8eTPT1dUt8Osq6HkvLy+2fv162b1++OEHxhhjZ86cYc7Ozowxxnx8fGT3yrp7l9nV\nqMFiDQ0Z8/cv/JtISAEU/dopt0XCGEPdXPsQ1K5dm7qTiFIUNRYnEokgEong4uKCL7/8ElWrVsWA\nAQNw9epVXLhwAaGhobCzs4ONjQ0uXryI2NhYAEDFihUxcOBA2XUuXrwoa0VcvHgRUVFRss8V9nte\nuXJluLm5AQBsbW0RFxcHAAgODsagQYMAAEOGDCnT156zsVvr1q1l1z937hz27NkDGz09tDE3R0rF\niojetAmg7aWJiskdbO/evTtcXV0xdOhQMMZw4MAB9OjRQxmxkXKuZcuWOHz4cJ7n0tLS8OTJExgb\nG+PGjRt5PsdyTQQZOXIkvL29812zatWqsmOysrIwefJkhIaGQk9PD0uWLEFWVpbs2MISWe6B/goV\nKsgqPihSzgzJihUr/nf9N2+wiTF0a94cuHwZMDJS+H0JKQ25LZI1a9Zg/PjxuH37NiIiIjB+/HiF\nDHQSIk/Xrl2RkZGBvXv3AuBjBN9//z1Gjx6Nqh9XZv/zzz9ITU1FZmYmfH190aFDB3Tt2hWHDx9G\ncnIyACAlJQVPnjzJd/2cpFG7dm2kp6fnGfurXr060tLSShRvmzZtZIlv//79Jf56C23pMwYsXAjX\n4GD87/PPIT57FjAywoMHD5CRkVHi+xCiaHJbJCKRCAMHDszTHUCIshw7dgyTJk3CsmXLIJVK4ebm\nJmtp5MwiHDhwIBISEjBixAi0bt0aALB8+XK4uLhAKpVCR0cH//vf/9CkSZM8rYyaNWti7NixMDc3\nR4MGDeDo6Cj73KhRozBhwgR89tlnuHbtWp6Ycl8jp4sNAH755RcMHz4c3t7ecHV1RY0aNQr8mjIy\nMtC4cWPZ45kzZ+a7rsy//0L09CkQGYnv7t1D3P/+h9a2tmCMoV69ejh27FhJvp2ECKLQ6b/t27dH\nYGAgdHV18/2Ci0SiEr9bEwJN/y3fdu3ahdDQUGzcuFHVoQAAMjMzUa1aNQC8RXLgwIHSv9C/fcsX\nFR45AmzYwEu90/otoiBK27M9MDAQAPItnCJEXeRuDaiD0NBQeHp6gjGGL7/8Ejt27Cjdhfz8+DTe\nzp2ByEigVi3FBkqIgsldkDhixAhZH3VRz6kCtUiIVnn1CpgxA7hyBfDxAVxcVB0R0VJKX5AYGRmZ\n57FYLEZoaKjCAiCk3GMMOHAAMDcHatfmCwspiRANUmjXlre3N1auXInMzMw8K3R1dHQwbtw4pQRH\niNZLSOB7pj96xFept2mj6oiIFgsO5qXYFK3QFsn8+fPx9u1bzJo1C2/fvpV9pKSkYNWqVYqPhJDy\nRCoFNm/mhRVtbYGbN8ucRN6/f6+g4BQr99ocoho3bgBubsDgwcDHWfEKJbdry97eHq9fv5Y9fv36\nNY4fP674SAgpLx484APpu3YBAQHA4sVA5cpluuSpU6cUWwhSgRISEnD+/HlVh1Eu3boF9O0L9OvH\nE8nDh0D//oq/j9xEsmTJEtSsWVP2uGbNmrLS8oSQEhCL+Xa37drxv+bAQKBVqzJf9tmzZ0hLS0Od\nOnUUEKTiGRsbIyoqCpmZmaoOpdyIjAS+/hro0QPo0gWIjuY9qB8LJihcsWptfUoikQgSDCFaKywM\ncHAALlwArl8Hpk9XWJXenTt3or8QbzMVyM3NDfv27VN1GFrv3j2+n1nXrrynNCYGmDYN+FgIQjBy\nE4mtrS1mzpyJmJgYREdHY8aMGYLs0UCIVsrMBObNA1xd+V/02bNAs2YKvcWLFy9QrVo1SCQS/PXX\nX1i+fDl2796NyZMn49GjRyW6VmRkJJYvX47g4GAAfIW/IhgZGSEiIkIh1yL5RUcD334LfPUVYGXF\nE8gPPwCffaac+8tNJBs3boSOjg6++eYbuLu7o2rVqvjtt9+KdXE/Pz+0aNECJiYmWL16db7P//nn\nn7CysoKlpSXat2+P8PDwYp9LiNq7cgWwtuZ/1eHhwMiRgqxOzxnMvn37NgYOHAhDQ0NIpVIMGjRI\ntsNjcWVkZEBHRweMMdy9ezdP5e+yEqK4ZXkXGwuMGcNbHyYmPKHMnQvo6io5EIUWpc9FLBYzIyMj\nFhsby7Kzs5mVlRWLiorKc8y1a9fY69evGWOM/f3338zR0bHY535cSClU+ISUyKlTl5iLy4+sU6fF\nzKXrHHaq52DG9PQYO3ZM8HuPGTMmz2NPT0/26NGjPM9FRkay1q1bs+zsbBYdHc3mzp3LMjMzC7ze\n4MGDGWOM7dixgx37GH9Jzs9x/PhxlpiYWGicpPQeP2Zs3DjGatVibOFCxlJTS3a+ol875bZIXrx4\ngR9++AE9e/ZE586d0blzZ3Tp0kVuggoJCYGxsTEMDAygo6MDd3d3+Pr65jmmbdu2ssJ2jo6OSEhI\nKPa5hKiL06cvY9q0szh3bjkuXfLCuQurMO1KdZxev4VPlxFYxY9jLdevX8fLly8RGRmJZs2a4cqV\nK7JjPnz4gDlz5uDYsWOoVq0aJk2aJKugDEC2XwsAfPaxPyQ4OBht27Yt1vmJiYl5YkpKSsLu3bvz\njLEWtq0xKb7ERMDTk88ar1WLTwBcuhTINR9KJeT+ZIcNG4YWLVrg0aNH8PLygoGBAezs7OReODEx\nMU+FU319/Xy/bLlt374dPXv2LNW5hKjShg3nEBOzIs9zMW+3YePOIKXcP+eF38/PD0ePHkX79u3z\nFYt89+4dBg0ahLNnz+Lx48d5/r4SExPh7Owse9ykSRMcOnQIoaGhqF+/vtzzAeDevXt5Hjdo0ABW\nVlayx4yxEm09TPJKSuLzMywsgGrVgLt3gZUreSEEdSA3kbx69QrfffcdKleujE6dOmHnzp24ePGi\n3AuXpJiev78/duzYIRsLKcm5OYX7cn8UNj3Zy8uLjqfjFX78/fCYAo/PylLO3un6+vpITU3FwoUL\nMW7cOCxfvhz9+/dHx44dZcfkxGpoaIiHDx/mOV9PTw/bt28HAGzbtg1OTk6wsrLC4MGD5Z4fHR2N\ns2fP4saNGzh79izOnTtX4EzP8PDwPGX6SfEkJwOzZgEtW/LHUVHA2rVAvXolu05AQAC8vLxkHwon\nr+8rZ9yiW7du7OTJkyw0NJQZGhrK7TMLCgpirq6ussfe3t5s1apV+Y67ffs2MzIyYg8fPizxucUI\nnxDhvH/P2MKFzEWnHeMFs/J+uLouUEoYr1+/Zj4+PoV+Pjg4mK1Zs4YxxtjTp0/Z1q1b8x3j5+cn\n+/fEiRNs69atTCqVFvv88+fP53n8/PlzNmTIELZ3717GGGPr169nEomkFF9d+fTyJWPz5vExkEmT\nGEtIUOz1Ff3aKfdqJ0+eZKmpqSw8PJx16tSJ2djYMF9fX7kX/vDhAzM0NGSxsbHs/fv3BQ6YP378\nmBkZGbGgoKASn8sYJRKiQuHhjNnYMObmxk7tOcqMjObnSSJGRvPYqVOXlBbO5cuX2ePHj5V2v0/5\n+/sX+rnIyEh269Yt5QWjwVJTGVu0iLHatflgulA/UqUmErFYzNavX1/qi585c4aZmpoyIyMj5u3t\nzRhjbPPmzWzz5s2MMcY8PDxYrVq1mLW1NbO2tmb29vZFnpsveEokRNnEYsZWrWKsTh3Gtm9n7OO7\n9lOnLjFX1wUM6MRcXRcoNYkQzffmDWNLl/Jfq9GjGYuJEfZ+in7tlLsfib29Pa5fv674PjUFoP1I\niFI9fMjXglStCuzYARgY5DuEfidJSaSnA5s2AT/9xNesLlrE14MITen7kXTo0AGenp64cuUKbt68\nidDQUNy8eVNhARCi9qRS/tfeti2vP3H+fIFJhJDiysgA1q8HjI2B27eBS5eAvXuVk0SEUOh+JDnC\nwsIgEomwaNGiPM/7+/sLFhQhauPxY750OCMDuHYNMDUt8vDFixcrKTCiibKy+OaXObU7z5/n+5lp\nukK7tn799VdMmzYNV69eRYcOHZQdV7FQNwIRDGO8zPvs2cD33/PCRZXkvu8ipEDv3wPbtwPe3nz7\nmSVLePUcVVH0a2ehicTKygq3b9+GjY0NwsLCFHZDRaJEQgTx7BkwbhwQHw/s2QNYWqo6IqKhPnzg\n70eWL+ctjyVLgGKs5xacol87C32L1bJlS5iYmCAxMREWFhb5gshdYJEQrXHwIDBlCk8kR46UecMp\nUj6JxcAff/DyJcbGwP79fIhNWxU5ayspKQkuLi44efJkvuxloAaDjdQiIQrz6hUweTIf+dy9m+8d\nQkgJSSTAvn285aGvzxNJrgIDakNpXVuagBIJUYhTp4Dx44FvvgFWrODFjAgpAakUOHQI8PLi9a+W\nLeO7KasrpU//JURrpaUBHh7A1KnAX3/xyfxlTCK0DXX5IpUCR4/yzaR+/hn49Ve+DY06JxEhUIuE\nlE8XL/Jpva6uwLp1gIIq09LvZPnAGG/ILlrEd0xeupTvjy7AvmWCUNpg+6cyMjJk5aoJ0VjZ2cCC\nBcCffwLbtvG/fkKKiTHAz48nkOxsnkD69NGcBCIUuV1b165dQ8uWLdG8eXMAwK1btzBp0iTBAyNE\n4R484KvA7t0Dbt2iJEKKjTG+eLB9e76kaM4cICwM6NuXkghQjEQyffp0+Pn5oU6dOgAAa2trXLp0\nSfDACFEYxnhtrPbteXeWry+gwL3IiXa7dAlwcuKT+qZMAcLDga+/BmjDx/8Uq2urSZMmeU+iFb5E\nU6SmAhMm8B2B/P21ox4FUYrAQN6F9fgxsHgxL7NGL30Fk5tTmzRpgsDAQABAdnY21q1bBzMzM8ED\nI6TMrlzhdSjq1wdCQpSSRKjWlub791+ge3dg+HBg2DC+re2IEZREiiJ31lZycjKmTZuG8+fPgzEG\nFxcXbNiwAbXVYLNgmiFDCiQW81HQLVv4gHqvXqqOiGiAmzd5CyQ8HPjxR2D0aO0tbEALEnOhRELy\niY3lbyOrV+dFjho2VHVERM2Fh/Ouq5AQYN48YOxYoEoVVUclLKVN/50yZUqRQWzYsEFhQRCiEH/9\nBUybxl8Npk+n0VBSpDt3eCmTK1f4LKy//qKiBqVVaCKxtbWF6OO8tk8zl4jmuxF1kpYGeHryt5Tn\nzgE2NqqOiKix+/d5ArlwgU/l3bkT+PxzVUel2YrdtfX27VuIRCLo6uoKHVOxUdcWwb//AkOHAl27\n8hoV9IpAChETw4fOzpwBZszgU3kVVNBA4yi91lZERARsbGzQqlUrtGzZEra2toiMjFRYAISUikTC\ndwnq3RtYs4YPrKtBEqFaW+onLg747jvA0REwMgKio4H588tvEhGC3BZJ27Zt4e3tjc4fq5AFBARg\n/vz5uHbtmlICLAq1SMqp+HhgxAiIaGEsKYGUFIYvv1R1FOpB6S2SjIwMWRIBACcnJ7x7905hARBS\nIkeP8i3mXFzAwMfv1OkDahhTeftITGTw9GSoVYthzhyG5GT+PCUR4chNJM2aNcOyZcsQFxeH2NhY\nLF++HIaGhsqIjZD/vHvHdy2cNQs4cYL3TRCSy/PnwMyZfN1p5cp8IeGqVcDH6k5EQHITyY4dO/Di\nxQsMGDAAAwcORHJyMnbs2KGM2AjhwsIAW1sgK4v/39FR1RERNfLyJZ++27IlHzq7cwdYvx6oV++/\nY7KysuDo6Ahra2u0bNkS8+bNU13AWogWJBL1JZUCv/wCrFzJ/x02LO/nRSJekFGN0O+k8qSk8L3I\nfv+db245fz7f3rYwOVthiMVidOjQAevWrUOHDh2UF7AaUfp+JNevX4e3tzfi4uIgFotlQYSHhyss\nCELySUoCRo7ka0T+/RfQkO5UqrUlvNev+fuKTZuA/v15aZOmTeWfl7OfUnZ2NiQSCWrVqiVwpOWH\n3BaJqakp1q1bB3Nzc1TItVLYwMBA6Njkond/WurCBV4lz8ODFz/S0Sn4ODVskRDhvH0LbNjAk0iv\nXnx/MiOj4p8vlUrRunVrxMTEYOLEiVizZo1wwao5pbdI6tatiz59+ijshoQUSioFVqwA/vc/4I8/\n+CJDUu69ewf89hsf9+jWjZd3NzUt+XUqVKiAW7du4c2bN3B1dUVAQACcnJwUHm95JHewffHixfDw\n8MC+fftw5MgRHDlyBEePHi3Wxf38/NCiRQuYmJhg9erV+T5/7949tG3bFlWrVsX69evzfM7AwACW\nlpawsbGBg4NDMb8corGSk/mOhf/8A4SGUhIhyMzkYyBGRvxXwt+fv78oTRLJrUaNGnBzc8ONGzcU\nEyiR3yLZvXs37t+/D7FYnKdra8CAAUWeJ5FI4OnpifPnz0NPTw/29vbo06dPnr1MateujY0bN+L4\n8eP5zheJRAgICKB+zPIgMBBwd+eD6cuX08YP5VxWFrB1K5+66+jI31tYWJTtmi9fvkSlSpVQs2ZN\nZGZm4p9//qHxLAWS+xd748YN3Lt3r8SFGkNCQmBsbCwbS3F3d4evr2+eRFK3bl3UrVsXp0+fLvAa\nNP6h5RjjbznXrAG2b6d9Q8q57Gy+I/KKFbzu5smTQOvWirn2s2fPMHLkSEilUkilUowYMQJdqdWr\nMHITSbt27RAVFYVWrVqV6MKJiYlo3Lix7LG+vj7+/fffYp8vEong7OyMihUrYvz48Rg7dmyJ7k/U\nXGoq3zno6VM+K0sNJm8ogpeXF9XbKqEPH4A9e4BlywAzM+DIEUDRvdkWFha4efOmYi9KZOQmkqCg\nIFhbW6NZs2ao8nG3l+JM/y1rqfnAwEA0bNgQycnJ6NatG1q0aIGOHTvmOy73H62TkxMNnmmC0FBg\n0CBecPHgQa3ahm7JkiWUSIpJLAb+/JNX5DU05PuBtGun6qi0U0BAAAICAgS7vtxE4ufnV6oL6+np\nIT4+XvY4Pj4e+kWtFvpEw48729WtWxf9+/dHSEiI3ERC1BxjfPWYlxefmfX116qOiKiARAIcOMD3\nBGnQgHflmWQsAAAgAElEQVRndeqk6qi026dvspcsWaLQ68tNJKVdL2JnZ4eHDx8iLi4OjRo1woED\nB7Bv374Cj/10LCQjIwMSiQTVq1fHu3fvcO7cORoY03Rv3/JaWXfv8sF1ExNVR0SUTCrl3VZeXkCN\nGvy9RJcufDkQ0WyCTY+pVKkSNm3aBFdXV0gkEnh4eMDMzAw+Pj4AgPHjxyMpKQn29vZIS0tDhQoV\n8OuvvyIqKkpW2wsAxGIxhg0bBhcXF6FCJUKLiOBdWR07AkFBtJ9pOcMYcPw43xe9alU+v8LFhRKI\nNqFaW0RYu3fz/UzXrwe+/Vax11bDle30O/kfxoDTp3lxAoCPhbi5UQJRB0pf2Q4AcXFxiI6OhrOz\nMzIyMiAWi/HFF18oLAiihTIz+V6mgYFAQABQwll/moq6YHkCOXeOJ5DMTD4W0q8fJRBtJrdFsmXL\nFmzduhUpKSmIiYnBgwcPMHHiRFy4cEFZMRaK3v2pqQcPeFeWuTng4wPo6gpzHzVskZRnjPHV54sW\n8cq8Xl58PkUFufUziLIpfYfE3377DVevXpW1QExNTfHixQuFBUC0zKFDQIcOwKRJvJ6FUEmEqJXL\nl4HOnYEJE/iPPiICGDyYkkh5Ibdrq0qVKrL1IwAf/C7rGhGihd6/52MhZ84Afn6KW5JM1FpQEG+B\nPHrE/x02jCrclEdy3y906tQJK1asQEZGBv755x8MGjQIvXv3VkZsRFPExfEZWYmJfLEhJRGtd/06\nr7Hp7s43lbp3j28fQ0mkfJI7RiKRSLB9+3acO3cOAODq6orvvvtOLVolNEaiBk6d4vuGzJ0LTJ+u\n3BFVGiNRurAwPo03LAz48UdgzBitKkxQbij6tbNE039TUlIQHx8PKysrhQVQFpRIVEgs5q8k+/fz\nj7ZtlR+DGiYSba21FRHBB8+DgoB584CxY/maEKKZlJ5IOnXqhJMnT0IsFsPW1hZ169ZF+/bt8fPP\nPyssiNKiRKIiL17wkdRq1YC9e4E6dVQThxomEm37nbx7lyeQS5eA2bOBiRNpPak2UPqsrTdv3uCL\nL77A0aNH8e233yIkJATnz59XWABEw4SGAvb2wFdf8dVmqkoiRFAPHwLDhwNOToCtLRATA8ycSUmE\nFExuIpFIJHj27BkOHjwINzc3AGWv7KuO3r9/L+j1s7KyBL2+Uuzdy0dYf/6ZL1OmuZ1a59EjXt2/\nXTte0j06mrdEPv9c1ZERdSb3lWDRokVwdXWFkZERHBwcEBMTAxMtK7h36tQpvH37VtB7JCQkaG5L\nTizmb0eXLuUrzuTsjkk0z+PHvKamgwPQtClvkfz4I1C9uqojI5qg3NfaevbsGfz9/TF06FAFRVW4\nDRs2YOzYsaimSf0DL1/y+Z2VK/MNI778UtUR/YfGSMosIQHw9uZl3SdO5O8XaHdr7af0WluZmZnY\nvn07oqKikJmZKQtix44dCgtClXbu3IkZM2Yo5V5ubm7Yt28fxowZo5T7ldnt20D//jyRLF8OVKyo\n6ojUnqbU2nr2jO+J/scfwHffAffv03AXKT25XVsjRozA8+fP4efnBycnJyQkJEBXi8pevHjxAtWq\nVYNEIsFff/2F5cuXY/fu3Zg8eTIePXok9/zIyEgsX74cwcHBAIBRo0YVeqyRkREiIiIUFbqw9u8H\nnJ35q83KlZREikndp/6+eMELEJib8x9pVBSwejUlEVI2chNJdHQ0li1bBl1dXYwcORJnzpwp0d7r\n6i5nEPz27dsYOHAgDA0NIZVKMWjQINkujUXJyMiAjo4OGGO4e/cu6tatW+TxYrFYIXELRiIB5swB\n5s8Hzp/n03yJxnv1iq8ZNTPj1WwiIvi+IPXrqzoyog3kJpLKH5et1qhRAxEREXj9+jWSk5MFD0xZ\nPnz4AABo3bo1qlSpgqCgINm2lNWqVZNNd87ZkOtTDg4OuHnzJtq2bYvg4GC0b98eAODr64unT5/m\nOz4jI0O4L6asUlKAnj35FN/r1wE1WXhKSi81FVi4EDA1Bd68AW7dAjZuBBo1UnVkRJvITSRjx45F\nSkoKli9fjj59+qBly5aYPXu2MmJTioofu2yuX7+Oly9fIjIyEs2aNcOVK1cAAAcPHoSzszPev3+P\nJ0+eyM6LjY2V/f+zzz4DAAQHB6Nt27ZISkrC7t27CxzMqqCuU2YjI/mUHQsLXnSxdm1VR0TK4NUr\nXsrExISPh4SGAr//DjRurOrIiDaSO9g+duxYAHyFe+4XT22RkwT8/PxQv359tG/fHseOHUOdj53G\nOS0IXV1dPH/+HE2aNEFiYiKcnZ0RExMDAGjSpAkOHTqE0NBQ1P/YV1BQGRnGGKqr43zKI0d4/e+f\nf+ar0IjGevaMd1nt2MFnaf/7L2BkpOqoiLaTm0iysrJw5MgRxMXFQSKRgDEGkUiERTn7Z2o4fX19\npKamYuHChQV+vkaNGgCA169fy5KEnp4etm/fDgDYtm0bnJycoKenh8FyxhPCw8Ph6OiowOjLSCrl\ntb//+AM4e5aq9iqAqmptxcUBa9cC+/YBI0bwLixqfRBlkdvP0rdvX5w4cQI6Ojr4/PPPZR/aYuzY\nsTh06FChn+/Zsyf8/f1RoUIFNGnSRPZ8zkr4xo0bIz09HZcvX8YPP/wAgM8Eu3//Pvz9/fNc68KF\nCxg0aJAAX0UpvHkD9OkDXL0KhIRQElGQJUuWKPV+9+8Do0bxMiY1avBy7r/+SkmEKJfcBYnm5uaI\njIxUVjwloqhFNVeuXEHTpk3zJApFu3PnDsRisXpUTr57l2+i7eoKrF8P6OioOqLSKccLEm/d4gsJ\nAwKAqVMBT0+gZk3Bb0u0hNIXJLZr1w7h4eGwtLRU2E3VTceOHQW/R6tWrQS/R7GcOMFXoK1ezYsq\nEY1y7RqwYgVPJN9/z8dCtGhZF9FQhbZILCwsAPCijQ8fPkSzZs1kW+6KRCKEh4crL8pCaFo5CpWS\nSoFly4Bt24DDhwF1GqsprXLSImEMuHCBJ5C4OL7MZ9Qo2g+ElJ7SWiQnT57Md2MA9MKtidLSgG+/\nBZKT+fqQBg1UHREpBqmUb0C5YgXw9i3fUMrdXXN7Ion2KjSRGBgYyP4fGhqKq1evokKFCmjfvj1a\n08Cs5njwgI+HfPUVcPAg7YsqMEXU2pJIgEOH+BhIpUq8Cm///lS1n6gvub+aS5cuxahRo5CSkoLk\n5GSMHj0ay5YtU0ZspKzOnAE6dOB7qW/eTElECUoz9bdixYqwsbGBtbUNmjSxQf36a7BpEx/GCg0F\nBg4sfhLJqawQFxcn656+ceMGpk2bJotv/fr1JbqWoiUlJcHd3R3Gxsaws7ODm5sbHj58KMi9iJIw\nOUxMTFhmZqbscUZGBjMxMZF3mlIUI/zySSplbNUqxho1YiwwUNXRCEdLfv66urpswwbGGjdmzMWF\nsYAA/iMsi9jYWGZubp7veS8vL7Zu3boiz/3w4UPZbl4EqVTK2rRpw3x8fGTP3b59m125cqXY15BI\nJEKEVq4o+rVT7vscPT09Wfl4gC9Q1NfXFzC1kTLJzuazsg4c4OtD2rVTdUSkEGlpvNXx7h1w8SIv\nMHD2LNCpE59H4OfnBzMzM9ja2mLq1Kno3bs3gPytCnNzc1n5noIqcwcEBMjOBXiB0nbt2sHU1BTb\ntm2THdOxY0f07dsX5ubmea716fmenp7YvXs3AN4FPn/+fNjY2MDOzg43b96Ei4sLjI2NC6xP5+/v\nj8qVK2PcuHGy5ywtLdGhQwe595k7dy5sbW2xdu3aPAt74+LiZLNKQ0ND4eTkBDs7O3Tv3h1JSUny\nfxCkzOQmki+++AKtWrXCqFGjMGrUKJibm6NGjRqYMmUKpk6dWuS5fn5+aNGiBUxMTLB69ep8n793\n7x7atm2LqlWr5mtuyzuXFCA1FejenW9GdfkyoKen6ohIAV694gUFjIyA8HCgQoVMxMXZYNw4G9jY\n2ODQoUPIysrCuHHjcOrUKYSGhuL58+eyCS+fbnWd+7G8bbAZYwgPD4e/vz+CgoKwdOlSPHv2DAAQ\nFhaGDRs24N69e0VeSyQS5YmladOmCAsLw1dffYVRo0bh2LFjCA4OLnC8KDIyEra2tsX6Pn16nzp1\n6iA0NBRz5sxBdnY24uLiAAAHDhyAu7s7xGIxpkyZgiNHjuDGjRsYPXo0fvzxx2Ldi5SN3HUk/fv3\nR//+/QHwH6aTk5Ns6lhRv7QSiQSenp44f/489PT0YG9vjz59+sDMzEx2TO3atbFx40YcP368xOeS\nT0RHA716AW5uwJo1tH+IGnr2jK//3LGDj3sEBQHGxsCJE9UQFhaW59hbt26hWbNmMPpYKGv48OHY\nsmVLmWMQiUTo168fqlSpgipVqqBz584ICQlBzZo14eDggKZNm5b4mn369AHAlwy8e/dOVv2iSpUq\nSEtLwxdffJHn/qX1zTffyP4/ePBgHDhwAHPmzMHBgwdx8OBB3Lt3D3fu3IGzszMA/jrSiMocK4Xc\nRFLURk1FCQkJgbGxsWz2l7u7O3x9ffMkg7p166Ju3bo4ffp0ic8luVy9Cnz9NeDlxYsvEpUpqNZW\nXBzP7fv38zpYt2/LL2Hy6QsuyzXtvlKlSpBKpbLHOXvqlFZORerCSh99er/cXd0AZOvLKlSoINt2\nIufxp/vvtGrVCocPHy7VfXLH980332DQoEEYMGAARCKRbNO4Vq1a4dq1a4V+rUQYgk0oTExMRONc\nfy36+vpITEwU/Nxy588/eZnXPXsoiaiB3LW27t0DRo7kdbBq1ixZHazmzZsjLi5Otkvnvn37ZMnF\nwMAAN2/eBADcvHmzRFW5GWPw9fXF+/fv8erVKwQEBMDe3r7I9WFNmzZFVFQUsrOz8fr1a1y8eLHQ\na8vTpUsXvH//Hlu3bpU9Fx4ejqtXr8LAwKBY9wEAQ0NDVKxYEcuWLYO7uzsA/j1LTk6W7Vb64cMH\nREVFyY2JlJ3cFklplaUJW5Jzc7/7y9mQqlxgDFiyBNi9m4/UfhwgJaoXFsbXgFy6xOtgxcQUXQcr\nMzMTNjY2ssc9evSAt7c3tmzZAjc3N3z22Wfo2LGjbNuCgQMHYs+ePTA3N4ejoyOaN28uO7ew8ZLc\nYw2Wlpbo3LkzXr58iUWLFqFBgwa4f/9+oWMvjRs3xuDBg2Fubo5mzZoVuo4s95jGp/fP7dixY5g+\nfTpWr16NqlWrolmzZvjll1+gr69frPvk+OabbzB79mwsX74cAN+E7/Dhw5g6dSrevHkDsViMGTNm\noGXLlkVepzwICAhAQECAcDcoakqXWCxm33//fammgwUFBTFXV1fZY29vb7Zq1aoCj/10SmJxz5UT\nvvbKzGRs6FDGHB0ZS0pSdTSqo2Y//8BA/jvZqBFjP/3E2Nu3irt2QEAA69Wrl+IuSMo1Rb92Ftki\nqVixIq5evSp3YL0gdnZ2ePjwIeLi4tCoUSMcOHAA+/btKyyZlfrccic5mS9zbtQI8PcHqlVTdUTl\nWu46WI8f8+cePQI+DhsoVFla+YQISW4Z+QkTJuDp06cYNGiQbDdBkUiEAQMGyL3433//jenTp0Mi\nkcDDwwPz5s2TzS0fP348kpKSYG9vj7S0NFSoUAHVq1dHVFQUdHV1Czw3X/DlrWjjvXt8Vpa7Oy/A\nWN5rZqiwaKNUCpw8ybuwcupgDRkC6OiUs99JopEU/dopN5HkzNr69N3Qzp07FRZEaZWrRHLxIn+l\nWr2al34lKkkkEgkvWebtzYsnfloHS1U7JBJSEkpPJOqs3CSS7duB+fP5avXyMpmgOJSYSLKzgb17\ngVWrgPr1eQLp3p2HQIimUfRrp9y+kfj4ePTv31+25mPgwIFISEhQWACkCFIpMHcusHIlX6lOSUTp\nMjKADRv4wsGDB3lOv3oV6NGDkgghOeQmktGjR6NPnz54+vQpnj59it69e2M07awnvIwMYPBgIDAQ\nCA4Gck3xJMJLS+OtD0NDPqchpw7WV1+pOjJC1I/cRJJTOl5HRwc6OjoYNWoUXrx4oYzYyq+kJN76\nqFYNOH8eqFNH1RGVGy9f/lcHKzKSf/uPHQPs7VUdGSHqS24iqV27Nvbu3QuJRAKxWIw//vgDdeiF\nTTgREUCbNkDv3ny1uhDzSEk+T5/yPdBNTXkeDw4G/viD1nkSUhxyE8mOHTtw8OBBNGjQAA0bNsSh\nQ4fUYsaWVvr7b6BLFz4msnAhdcIrQVwcMHEiTxgSCa/Gu2ULb5GUBs3YIuURzdpSF7/9BixfDhw+\nDAi0M53WKcOsrXv3eL4+dQoYP55vIlmvniJC0qLfSaK1lD5rKyYmBr1790adOnVQt25d9O3bV1ZI\njiiARMJfxTZt4tOBKIkIKiwMGDSIbx5lasrrYHl7KyaJEFJeyU0kQ4cOxeDBg/Hs2TPZCvchQ4Yo\nIzbt9/Yt0LcvHxe5dq30/SlErsBAoGdPvmVLu3a8jMmPPxZdTJEQUjxyE0lmZiZGjBghm7U1fPjw\nMu9/QAAkJAAdOwINGgB+fsCXX6o6Iq3DGPDPP3wC3IgRPGc/egTMmAEUsvUGIaQU5I6RzJkzBzVr\n1pS1Qg4cOIDU1FTMnj0bAFCrVi3hoyyExvZHR0XxFW2TJgGzZ9OgemkVMkaSUwdrxQogPf2/OliV\nBNs0IXdIGvo7ScoVpZdIMTAwKHLvZlWOl2jkH21QENCvH7BuHX+bTErvk0SSuw5W5cq866pfP+XW\ntqRaW0QTUK2tXDQukZw6BYwezdeH9Oih6mg038dEIhYD+/bxSW916vCZ066u1NAjpDCKfu0sVmM/\nMjISUVFRecZGvv32W4UFUS7s3Mn7WE6dAhwdVR2N1ti1i3dhNWoE/P470LkzJRBClE1uIvHy8sKl\nS5dw584duLm54e+//0aHDh0okRQXY7z0++bNQEAA0KKFqiPSeB8+8EadB/i/W7dSPUtCVElu15a5\nuTlu376N1q1b4/bt23j+/DmGDRuG8+fPKyvGQql915ZUCsycCVy4AFFkpKqj0ToMUNnGVoRoMqUv\nSKxWrRoqVqyISpUq4c2bN6hXrx7i4+MVFoDWys4Ghg8Hbt4ELl/Gx02S6aMUH1lZDP/7H0OTJgyu\nrgyBgfx5SiKEqAe5icTOzg6pqakYO3Ys7OzsYGNjg3bt2ikjNs319i1f+ZaRwWuP0xqRUsnK4gv+\njY350NLBg3zJTc6vX3x8PDp37oxWrVrB3NwcGzZsUG3AoFpbpHwqtGtr0qRJGDp0KDp06CB7LjY2\nFmlpabCyslJagEVRy66tFy/4EurWrYH//e+/xQsq3F9c02Rm8sKJa9YAtra8rLudXf7jkpKSkJSU\nBGtra6Snp8PW1hbHjx+HmZmZ8oP+SC1/Jwn5hNK6tkxNTTFr1iw0bdoUs2fPRlhYGJo1a6Y2SUQt\nxcbyWlk9ewI+PspZAadF3r0DfvqJbyYVEMBbISdOFJxEAKBBgwawtrYGAOjq6sLMzAxPnz5VXsCE\nEADFGGyPi4vD/v37ceDAAWRkZGDo0KEYMmQITE1NlRVjodTq3d+tW4CbG99bffLk/J+nFkmh0tP5\n1N3163nVmAULgJK+X4mLi0OnTp1w584d6OrqChNoMajV7yQhhVDpgsSwsDCMHj0aERERkEgkCgui\ntNTmjzYggG+L+9tvvLRsQSiR5PP2Lf+W/fwzX/+xYEHpNpJKT0+Hk5MTFixYgH79+ik+0BJQm99J\nQoqg9FlbYrEYJ06cwNChQ9G9e3e0aNECR48eVVgAGu/wYZ5E9u8vPImQPN684YsIjYx44WN/f/7t\nK00S+fDhAwYOHIjhw4erPIkQUl4V2ol/7tw57N+/H6dPn4aDgwOGDBmCLVu2qLTbQO38/juvy3H2\nLGBjo+po1N7r18Cvv/KZWD16AFeuAM2bl/56jDF4eHigZcuWmD59uuICLYPFixerOgRClK7Qrq0u\nXbpgyJAhGDhwoEor/BZFZd0IjAFeXsBff/EkYmgo/5xy3LWVkgL88gufxNa7Nx9GMjEp+3WvXr2K\nr776CpaWlrLCoitXrkT37t3LfnFCtBgVbcxFJYlEIuHl32/cAM6cAerXL9555TCRvHrFZ2Ft3gz0\n788TSHFyLiFEWCop2kg+ysoChg4F0tL4AHv16qqOSC0lJ/MZWFu3Al9/DYSGAgYGqo6KECIUJe7U\noOFev+a1yStXBk6fpiRSgOfPgVmz+LhHWhrfH93Hh5IIIdpO0ETi5+eHFi1awMTEBKtXry7wmKlT\np8LExARWVlYICwuTPW9gYABLS0vY2NjAwcFByDDle/oU+Oorvrjhr7+AKlVUG4+aefaM16Y0M+ON\ntvBwPh7SpImqIyOEKAUTiFgsZkZGRiw2NpZlZ2czKysrFhUVleeY06dPsx49ejDGGAsODmaOjo6y\nzxkYGLBXr14VeQ8Bw//PvXuMGRgw5u3NmFRa+usoI1YlS0hgbOpUxr78krFp0xhLTFR1RKq3ePFi\nVYdAiFyKfu0UrEUSEhICY2NjGBgYQEdHB+7u7vD19c1zzIkTJzBy5EgAgKOjI16/fo3nz5/nTnJC\nhVc8ISFAp058y71582jHpI/i4wFPT8DCgleBiYris7IaNVJ1ZKq3ZMkSVYdAiNIJlkgSExPRuHFj\n2WN9fX0kJiYW+xiRSARnZ2fY2dlh69atQoVZuH/+4SVPtm4FxoxR/v3VUHQ0MG4c7+H77DPg3j0+\nqN6ggaojI4SokmCztkTFfPdeWKvj6tWraNSoEZKTk9GtWze0aNECHTt2VGSIhTt5EvDwAI4e5cWf\nyrnbt4FVq4Dz54GJE4EHD/je6IQQAgiYSPT09PJsgBUfHw99ff0ij0lISICenh4AoNHHfpK6deui\nf//+CAkJKTCR5N7/wcnJCU5l3XP18GFedPHUKUDVg/wqdvUqsHIlr0c5YwYv7U6T1QjRPAEBAQgI\nCBDuBgodccnlw4cPzNDQkMXGxrL379/LHWwPCgqSDba/e/eOpaWlMcYYS09PZ+3atWNnz57Ndw+F\nh793L2MNGjAWFqbY6zKmMYPtUiljp08z1qEDY4aGjG3ezFhmpqqj0hwC/kkRojCK/j0VrEVSqVIl\nbNq0Ca6urpBIJPDw8ICZmRl8fHwAAOPHj0fPnj1x5swZGBsb4/PPP8fOnTsB8A2LBgwYAIAXjRw2\nbBhcXFyECpXbtg1YvBi4cAFo2VLYe6khiQQ4dIh3YUmlfG7BoEG0pUpJUa0tUh5RiRSAVxFcu5YP\nAiiiCFRB1LREyvv3wJ49fDfCevV4AnFzowlqhGgzKpGiaGvX8mJQly6VqyXY6el81flPPwGWlsD2\n7XxeASUQQkhJld9EwhiwbBnw5588iXwyEUBbvXoFbNjAV5537sznFFAFfEJIWZTPWluM8VK0hw4B\nly+XiySSkMDLmJiYAImJQGAgcPAgJRFCSNmVv0TCGDB9Ot9HxN+/+GXgNdSDB8B33/HuK4DXwdq2\nDTA1VW1chBDtUb4SiVQKTJjAS59cvKjVq+rCwvgOwO3bA3p6PKH89FO5aHypVO51TYSUF+Vn1pZY\nzFerx8XxgQFlr6xTwqwtxvj2tStX8pbHzJm8pAktIlQele3aSUgJ0Kyt0vjwARg+HEhNBf7+mxeK\n0iJSKd+sceVKvifI7NnA8eNU7Z4Qohzan0jev+d9PFIpcOIEULWqqiNSmPR0vgZk40aeNObO5TsS\n0iJCQogyafdLTkYGMGAAoKvLN6SqXFnVESnE48d8DeXOnXztx++/82r3tAaEEKIK2jvYnp7Ol2jX\nqQPs36/xSYQxPlN54ECgdWvewLp+HTh2DHByoiRCCFEd7WyRvHkD9OjBa2b5+AAVK6o6olLLyuJ5\n8NdfgXfvgKlTgV27aABdXVGtLVIead+srVevAFdXoE0bvoS7gpo0uko4a+vZM95ltWUL30hq2jSg\ne3f1+XIIIZpL0bO2tOtl6cULXvejc2c+Aq2Br7o3bgAjRvDGVHIyXzN59izQs6dGfjmEkHJAe16a\nnj7lI879+/NStho0aCAW83Il7dvzMRBLS+DRI94iMTNTdXSEEFI07RgjefwY6NqVLzicN0/V0RTb\nq1d8S/jffgOaNeMLCPv2pem7hBDNovEtkgUdO+KyvT3g6akxSeTOHb7i3NgYuHsX8PX9b0YWJRFC\niKbR+ESy/OpVnAVwWagNqRTo1CnA2Zl/6OkB9+4Bu3fz6bxEO1CtLVIeaf6srY//X+jqimV+fiqN\npyBpaXy67tRpItjZMkybxhfaU/kS7US1togmUPTvqcYnEk3BADAp06Q5AKQUKJEQTUDTfz/BPn4s\ncHUFY0ylH9nZDIcPM3TtylCvHsOcOQyPH/PPgVESIYRoJ60Y2p1vZITuU6ao7P6JiXz21datgKEh\nMHEiHzjP3X01ZswYnD59GvXq1UNERITKYiWEEEXT+BbJQldXdP/1V3zl5qbU+0qlwPnzPGFYWPDF\ng35+fD+QoUPzj4GMHj0afmo4hkMIIWWl8S0SZQ+wp6TwwfPNm4Fq1Xjrozi1rzp27Ii4uDglREhU\niWptkfJI4xOJMjDGK+3+/juvtturF08ebdtq1AJ6ogQ0/ZeUR5RIipCayrcx2baNFxSeMIFXX6lb\nV9WREUKI+qBE8omcfT+2bQNOnuQVd9euBbp0oaKJhBBSEEokHz17BuzdyxOIjg4wdizw8898XyxC\nCCGFK9fvsbOyeNVdNzdetv3+fV6yJDISmD5dsUlkyJAhaNeuHR48eIDGjRtj586dirs4IYSokKCJ\nxM/PDy1atICJiQlWr15d4DFTp06FiYkJrKysEBYWVqJzS4MxICQEmDSJ17vasgUYMgRISAC2bxdu\nAH3fvn14+vQp3r9/j/j4eIwePVrxNyEqR4PtpFxiAhGLxczIyIjFxsay7OxsZmVlxaKiovIcc/r0\nadajRw/GGGPBwcHM0dGx2Ocyxlhxw8/OZiwggLFZsxhr3pwxIyPGli1jLC6ujF9kGfn7+6s2gDKi\n+DOeQIAAAA4gSURBVPMT8E8qH03+/mty7IxpfvyK/j0VrEUSEhICY2NjGBgYQEdHB+7u7vD19c1z\nzIkTJzBy5EgAgKOjI16/fo2kpKRinStPcjKwZw/wzTdA/fp8r4+qVflzDx8CCxYATZsq7MstlYCA\nANUGUEYUv2ppcvyaHDug+fErmmCD7YmJiWjcuLHssb6+Pv7991+5xyQmJuLp06dyz80hlQJxcXxc\nIzKS7/UREfHfXldubsAvvwANGyr26yOEEMIJlkiKW5mXlbECZc2awBdf8DIl5uaAiwswYwZ/TKXa\nCSFEeIIlEj09PcTHx8sex8fHQ19fv8hjEhISoK+vjw8fPsg9FwCMjIwQEyPC27e8cKImlrJasmSJ\nqkMoE4o/P2Vub6DJ339Njh3Q7PiNjIwUej3BEomdnR0ePnyIuLg4NGrUCAcOHMC+ffvyHNOnTx9s\n2rQJ7u7uCA4ORs2aNVG/fn3Url1b7rkAEB0dLVT4hBBCikmwRFKpUiVs2rQJrq6ukEgk8PDwgJmZ\nGXx8fAAA48ePR8+ePXHmzBkYGxvj888/l62tKOxcQggh6kejd0gkhBCiemq1sl2IBYwpKSno1q0b\nTE1N4eLigtevX2tM7IcOHUKrVq1QsWJF3Lx5U5C4hYx/1qxZMDMzg5WVFQYMGIA3b95oVPwLFy6E\nlZUVrK2t0bVr1zzjdpoQf47169ejQoUKSElJ0aj4vby8oK+vDxsbG9jY2Ai2n49Q3/uNGzfCzMwM\n5ubmmDNnjiCxCxW/u7u77PverFkz2NjYFB2EQlellIFQCxhnzZrFVq9ezRhjbNWqVWzOnDkaE/vd\nu3fZ/fv3mZOTEwsNDVV43ELHf+7cOSaRSBhjjM2ZM0eQ772Q8aelpcnO37BhA/Pw8NCo+Blj7MmT\nJ8zV1ZUZGBiwV69eaVT8Xl5ebP369YLELHTsFy9eZM7Oziw7O5sxxtiLFy80Kv7cvv/+e7Zs2bIi\n41CbFolQCxhznzNy5EgcP35cY2Jv0aIFTE1NFR6vsuLv1q0bKnwsmezo6IiEhASNir96rt3K0tPT\nUUegCp5CLt6dOXMm1qxZI0jcyoifCdzzLlTsv//+O+bNmwcdHR0AQF2B9p4QeuE3YwwHDx7EkCFD\nioxDbRJJYYsTi3NMQQsYc859/vw56tevDwCoX78+nj9/rjGxK4sy4t+xYwd69uwpQPTCxv/jjz+i\nSZMm2L17N+bOnatR8fv6+kJfXx+WlpaCxC10/ADvHrKysoKHh4cg3dJCxf7w4UNcvnwZbdq0gZOT\nE27cuKHw2IWMP8eVK1dQv359udOF1SaRKHIBI2OswOuJRCJB5vgra/GlUISOf8WKFahcuTKGDh1a\nqvPlETL+FStW4MmTJxg1ahRmzJhR4vOLQ4j4MzMz4e3tnWetg1C/f0J9/ydOnIjY2FjcunULDRs2\nxPfff1+a8IokVOxisRipqakIDg7G2rVrMXjw4NKEJ5fQf7v79u0r1t+t2uxHosgFjAkJCdDT0wPA\nWyFJSUlo0KABnj17hnr16ql17IUtvhSSkPHv2rULZ86cwYULFzQy/hxDhw4VrEUlRPwxMTGIi4uD\nlZWV7HhbW1uEhIQo/G9AqO9/7ji/++479O7dW6FxCxm7vr4+BgwYAACwt7dHhQoV8OrVK9SuXVsj\n4gd4Mjx27FjxJvqUYZxHoT58+MAMDQ1ZbGwse//+vdxBo6CgINmgUVHnzpo1i61atYoxxtjKlSsF\nGfAVKvYcTk5O7MaNGwqPW+j4//77b9ayZUuWnJwsWOxCxv/gwQPZ+Rs2bGDDhw/XqPhzE3KwXaj4\nnz59Kjv/p59+YkOGDNGY2Ddv3swWLVrEGGPs/v37rHHjxgqPXcj4GeN/v05OTsWKQ20SCWOMnTlz\nhpmamjIjIyPm7e3NGOM/kM2bN8uOmTx5MjMyMmKWlpZ5ZjIVdC5jjL169Yp17dqVmZiYsG7durHU\n1FSNif3o0aNMX1+fVa1aldWvX591795dkNiFit/Y2Jg1adKEWVtbM2trazZx4kSNin/gwIHM3Nyc\nWVlZsQEDBrDnz59rVPy5NWvWTLBEIlT8I0aMYBYWFszS0pL17duXJSUlaUzs2dnZbPjw4czc3Jy1\nbt1a0LLzQv3ujBo1ivn4+BQrBlqQSAghpEzUZrCdEEKIZqJEQgghpEwokRBCCCkTSiSEEELKhBIJ\nIYSQMqFEQgghpEwokRBB6Orq5nvOx8cHe/fuLfU13dzckJaWlu95Ly8vrF+/vtjX2bVrF6ZMmVLq\nOJRp1KhROHLkSLGPT05OhqOjI2xtbREYGFimez9+/DjPzqShoaGYNm1ama5JtJPalEgh2qWgGkDj\nx48v0zVPnz5d7HsVRZl7qpdVSevDXbhwAZaWlti6dWu+z0mlUlk15uKIjY3FX3/9Jav8amtrC1tb\n22KfT8oPapEQpcndcggNDZVtGjVr1ixYWFgAyN9a6NWrFy5fvgwAMDAwkG3OtGLFCjRv3hwdO3bE\n/fv3C7zfqFGjMGHCBNjb26N58+Z5EtHTp0/Ro0cPmJqa5tl0aNKkSbC3t4e5uTm8vLxkz8+dOxet\nWrWClZUVZs2aBYC/+//666/h4OAABwcHXLt2LV8Mu3btQr9+/eDi4oJmzZph06ZNWLduHVq3bo22\nbdsiNTUVAHDr1i20adNGtglY7kq3OWuGQ0ND4eTkBDs7O3Tv3h1JSUl57nXr1i3MmTMHvr6+aN26\nNbKysqCrq4sffvgB1tbWCAoKwrJly+Dg4AALC4s8iT06OhrOzs6wtraGnZ0dHj16hLlz5+LKlSuw\nsbHBL7/8goCAAFm9q5SUFPTr1w9WVlZo27YtIiIiZD/jMWPGoHPnzjAyMsLGjRsL/NkQLVPW5fmE\nFERXVzffc7k3KrKwsGBXrlxhjPF6aBYWFowxxnbu3Mk8PT1l5/Tq1YtdunSJMfZfvagbN24wCwsL\nlpmZydLS0pixsXGBGyCNGjVKVmPo4cOHTF9fn2VlZbGdO3cyQ0NDlpaWxrKysljTpk1ZQkICY4yx\nlJQUxhjf9MfJyYmFh4ezly9fsubNm8uu++bNG8YYY0OGDGFXr15ljDH2+PFjZmZmli+GnTt3MmNj\nY5aens6Sk5PZF198ISs7MWPGDPbLL7/Ivh+XL19mjDG2aNEiNn36dNnXcOTIEZadnc3atm3LXr58\nyRhjbP/+/WzMmDH57rdr1y42ZcoU2WORSMQOHToke5zz9THGS5CcPHmSMcaYg4MDO378OGOMsffv\n37OMjAwWEBDAevXqJTve399f9tjT05MtXbqUMcY3cbK2tmaMMbZ48WLWvn17lp2dzV6+fMlq167N\nxGJxvjiJdqGuLaJ0b978v727e4mqiQM4/h3Xl6WldUUUyReyhHR9WffGbjQTRYg2hUS6CnxBFARB\n/wDBa1FBJBAvRKSLUKKLwJsUQYOSAgtMu1CRQBEpXE+tJzw1z0V4Hn06Rs+zj4/P0/P7XO2cc+Y3\nZ2Zh5rwMZ8KEw2FKS0sBuHv3LlNTUz+VV2vN3Nwct2/fxu1243a7qampOfEz2Yef787JyeHSpUus\nrKyglKKystJeuMrv97OxsUF6ejoPHjxgZGQEy7LY2tpieXkZv9+P2+2mubmZUChEKBQC4MmTJywv\nL9tlGYZBJBLh3Llz9jalFBUVFXg8HjweDz6fz76qLyws5PXr1+zt7REOhykrKwO+LcBWX19/rM5v\n375laWmJqqoqAL58+cKFCxcc2+doW7hcLurq6uz0zMwMvb29RCIRPnz4QEFBAeXl5WxublJbWwtA\nfHy8HeskT58+5eHDhwBUVFTw/v17DMNAKcXNmzeJi4sjOTmZ1NRUtre3Hc9V/DpkIBFn7miHFRsb\ny9evX+20aZrfHa+UOpbnRx2eU16AhIQEe5vL5cKyLNbX1+nr6+PFixckJibS2NjI/v4+LpeLhYUF\npqenmZycZGhoiOnpabTWPH/+3O54T3K0rJiYGDsdExODZVnfHX9SffLz8x0fnznV75Db7ba3maZJ\ne3s7L1++JD09nZ6eHkzT/MvvjE46z6Ptcdi24tcm70jEP0prTWJiIj6fz55VdP/+fXv/xYsXWVxc\nRGvNu3fvWFhYOJZfKcW1a9d49OgRpmliGAaPHz927Ay11kxMTKC1ZnV1lbW1NXJzcx07QK01hmHg\n8Xjwer1sb28zNTWFUopPnz6xu7vLjRs36O/v59WrVwBUV1czODhox1hcXHSM+6O2APB6vSQlJTE/\nPw/A+Pg4169fP1bnK1eusLOzw7NnzwA4ODjgzZs3f6q8w0E5OTmZjx8/MjExAXybYZeRkWEvs/r5\n82f29/fxer0YhuEYq6yszP7fZmdnSUlJ4fz58//axdvE6ZI7EnEqIpHIsWU8u7q6gN+vmEdHR2lq\nakIpRXV1tX1caWkp2dnZ+P1+8vLyHGcJBYNB7ty5QyAQIDU1lZKSEsdzUEqRlZVFSUkJe3t7DA8P\nEx8f7zgTSilFUVERwWCQ3NxcMjMz7UdvhmFQW1uLaZporRkYGABgcHCQ9vZ2AoEAlmVRXl7OvXv3\nvot7tKw//j5Mj42N0dbWRiQS4fLly4yOjh6LExcXx+TkJB0dHYTDYSzLorOzE7/f/9Pl+Xw+Wlpa\nKCgoIC0tjatXr9r7xsfHaW1tpbu72y6rqKgIl8tFcXExDQ0NBINBO97hS/VAIIDH42FsbMyxfPH/\nIJ+RF2duY2ODUChkz/z5uzQ2NnLr1i17pTohxOmQR1vizGmt5SpWiP8wuSMRQggRFbkjEUIIERUZ\nSIQQQkRFBhIhhBBRkYFECCFEVGQgEUIIERUZSIQQQkTlN9kAlumd805PAAAAAElFTkSuQmCC\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x8875710>"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.6-2 Page Number 621 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Absorption of Acetone in a PAcked Tower\n",
+ "from scipy.optimize import root\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "#Variable Declaration\n",
+ "P, T= 101325., 293. #column pressure and temperature\n",
+ "y1, y2 = 0.026, 0.005 #Compositions in gas phase\n",
+ "x2 = 0.0 #Composition of fresh solvent feed\n",
+ "V, L = 13.65, 45.36 #Vapor and liquid rates to the coloumn \n",
+ "kyd, kxd = 3.78e-2, 6.16e-2 #Film coefficient for gas and liquid phase, (kmol/(s.m3.mol frac))\n",
+ "xA, pA, PmmHg = 0.0333, 30., 760. #liquid equilibrium mole frac at partial presure \n",
+ "A = 0.186 #Tower cross sectional area\n",
+ "#Calculations\n",
+ "def func1(s1,c1,s2,c2,s3,x0,y0):\n",
+ " c3 = c1 - (s3-s1)*x0\n",
+ " x = (c3 - c2)/(s2 - s3)\n",
+ " y = s2*x + c2\n",
+ " return [x,y]\n",
+ "\n",
+ "def lm(a,b,c,d):\n",
+ " return ((a-b)-(c-d))/log((a-b)/(c-d))\n",
+ "\n",
+ "S = (pA/PmmHg)/xA\n",
+ "k1 = V*y1/(1-y1)-V*y2/(1-y2)\n",
+ "k1 = k1/L\n",
+ "x1 = k1/(1+k1)\n",
+ "yA = pA/PmmHg\n",
+ "me = yA/xA\n",
+ "ce = 0.0\n",
+ "mop = (y2-y1)/(x2-x1)\n",
+ "cop = y2 - mop*x2\n",
+ "xe = np.arange(0.,0.015,0.001)\n",
+ "ye = me*xe\n",
+ "plt.plot(xe,ye,'b-')\n",
+ "plt.plot([x1,x2], [y1,y2], 'ko-', lw=0.5)\n",
+ "m1 = -(kxd/(1-x1))/(kyd/(1-y1))\n",
+ "m2 = -(kxd/(1-x2))/(kyd/(1-y2))\n",
+ "[xi1,yi1]=func1(mop,cop,me,ce,m1,x1,y1)\n",
+ "plt.plot([x1,xi1], [y1,yi1], 'ko-', lw=0.5)\n",
+ "[xi2,yi2]=func1(mop,cop,me,ce,m2,x2,y2)\n",
+ "plt.plot([x2,xi2], [y2,yi2], 'ko-', lw=0.5)\n",
+ "\n",
+ "plt.text(.006, .006, 'Equilibrium Curve')\n",
+ "plt.text(.001, .02, 'Operating Line')\n",
+ "\n",
+ "plt.annotate('$(x_1,y_1)$', xy=(x1,y1), xytext=(x1,y1+0.002),\n",
+ " arrowprops=dict(facecolor='black', shrink=0.05),\n",
+ " )\n",
+ "\n",
+ "plt.annotate('$(x_2,y_2)$', xy=(0,y2), xytext=(0.0005,y2),\n",
+ " arrowprops=dict(facecolor='black', shrink=0.05),\n",
+ " )\n",
+ "plt.xlabel(\"Liquid phase mole fraction, $x$\")\n",
+ "plt.ylabel(\"Vapor phase mole fraction, $y$\")\n",
+ "plt.plot([0,x1,x1], [y1,y1,0], 'ko-', lw=0.5)\n",
+ "plt.plot([0,xi1,xi1], [yi1,yi1,0], 'ko-', lw=0.5)\n",
+ "plt.plot([0,xi2,xi2], [yi2,yi2,0], 'ko-', lw=0.5)\n",
+ "V1 = V/(1-y1)\n",
+ "V2 = V/(1-y2)\n",
+ "V = (V1+V2)*.5/3600.\n",
+ "L = L/3600.\n",
+ "dyyilm = lm(y1,yi1,y2,yi2)\n",
+ "zy = V*(y1-y2)/(kyd*dyyilm*A)\n",
+ "dxxilm = lm(xi1,x1,xi2,x2)\n",
+ "zx = L*(x1-x2)/(kxd*dxxilm*A)\n",
+ "y1s = me*x1\n",
+ "y2s = me*x2\n",
+ "plt.plot([0,x1,x1], [y1s,y1s,0], 'ko-', lw=0.5)\n",
+ "d1yilm1 = lm(1.,yi1,1.,y1)\n",
+ "d1yilm2 = lm(1.,yi2,1.,y2)\n",
+ "d1yilm = (d1yilm1 + d1yilm2)/2.\n",
+ "d1xilm = lm(1.,x1,1.,xi1)\n",
+ "d1ys1lm = lm(1.,y1s,1.,y1)\n",
+ "d1ys2lm = lm(1.,y2s,1.,y2)\n",
+ "d1yslm = (d1ys1lm + d1ys2lm)/2.\n",
+ "Kya = 1./(d1yslm*(1/(kyd/d1yilm) + me/(kxd/d1xilm)))\n",
+ "dyyslm = lm(y1,y1s,y2,y2s)\n",
+ "z = V*(y1-y2)/(A*Kya*dyyslm)\n",
+ "#Results\n",
+ "print \"The values of kya, kxa, Kya are:\", round(kyd,4),round(kxd,4),round(Kya,4),\" kgmol/(s.m2. mol frac) respectively\"\n",
+ "print \"Tower Height calculated using kya:\", round(zy,4),'m'\n",
+ "print \"Tower Height calculated using kxa:\", round(zx,4),'m'\n",
+ "print \"Tower Height calculated using Kya:\", round(z,4),'m'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The values of kya, kxa, Kya are: 0.0378 0.0616 0.0223 kgmol/(s.m2. mol frac) respectively\n",
+ "Tower Height calculated using kya: 1.9489 m\n",
+ "Tower Height calculated using kxa: 1.9394 m\n",
+ "Tower Height calculated using Kya: 1.8973 m\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nrkJggg==\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x61d7b30>"
+ ]
+ }
+ ],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.6-3 Page Number 625"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Use of Transfer Unit for Packed Tower\n",
+ "\n",
+ "#Variable Declaration\n",
+ "kyd = 0.0378 #Film coefficient in kmol/s.m3\n",
+ "kxd = 0.0616 #Film coefficient in kmol/s.m3 \n",
+ "Kya = 0.022523 #Overall mass transfer coefficient\n",
+ "V = 3.852e-3 #Molar flowrate kmol/s\n",
+ "A = 0.186 #Cross sectional area of the tower m2\n",
+ "y1 = 0.026\n",
+ "y2 = 0.005\n",
+ " #From answers to previous problem\n",
+ "yi1 = 0.0154\n",
+ "yi2 = 0.0020\n",
+ "d1yilm = 0.97925\n",
+ "d1yilm1 = 0.979249088369\n",
+ "d1yilm2 = 0.996443506323\n",
+ "d1xilm = 0.99023 \n",
+ "d1yslm = 0.98313\n",
+ "dyyilm = 0.00590\n",
+ "d1yslm = 0.983131759622 \n",
+ "d1ys2m = 0.997497911442\n",
+ "dyyslm = 0.0102576937583\n",
+ "\n",
+ "#Calculations\n",
+ " #PART A\n",
+ "HG = V/(kyd*A)\n",
+ "NG1 = (d1yilm1/(1-y1) + d1yilm2/(1-y2) )/2.\n",
+ "NG2 = (y1-y2)/dyyilm\n",
+ "NG = NG1*NG2\n",
+ "z = HG*NG \n",
+ "#Results\n",
+ "print \"Answers to Part A\"\n",
+ "print \"Height of gas transfer unit\",round(HG,3)\n",
+ "print \"Number of gas transfer unit\",round(NG,3)\n",
+ "print \"Total Height of tower\", round(z,4),'m'\n",
+ "\n",
+ " #PART B\n",
+ "HoG = V/(Kya*A)\n",
+ "NoG1 = (d1ys1lm/(1-y1) + d1ys2lm/(1-y2))/2.\n",
+ "NoG2 = (y1-y2)/dyyslm\n",
+ "NoG = NoG1*NoG2\n",
+ "z = HoG*NoG \n",
+ "\n",
+ "#Results\n",
+ "print \"Answers to Part B\"\n",
+ "print \"Height of Overall gas transfer unit\",round(HoG,3)\n",
+ "print \"Number of Overall gas transfer unit\",round(NoG,3)\n",
+ "print \"Total Height of tower\", round(z,4),'m'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Answers to Part A\n",
+ "Height of gas transfer unit 0.548\n",
+ "Number of gas transfer unit 3.571\n",
+ "Total Height of tower 1.9567\n",
+ "Answers to Part B\n",
+ "Height of Overall gas transfer unit 0.919\n",
+ "Number of Overall gas transfer unit 2.059\n",
+ "Total Height of tower 1.8936\n"
+ ]
+ }
+ ],
+ "prompt_number": 21
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.7-1 Page Number 628"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Desing of an Absorption Tower with Concentrated Gas Mixture\n",
+ "from scipy.interpolate import interp1d\n",
+ "import numpy as np\n",
+ "import scipy.integrate as integrate\n",
+ "\n",
+ "#Variable Declaration\n",
+ "dp = 0.0254 #Diameter of the rings ,m\n",
+ "x2 = 0.0 \n",
+ "P = 101325 #Total pressure ,Pa\n",
+ "y1 = 0.20 #Inlet Mole fraction of SO2 \n",
+ "y2 = 0.02 #Outlet Mole fraction of SO2 \n",
+ "Vd = 6.53e-4 #Molar flowrate of air ,kmol/s\n",
+ "Ld = 4.20e-2 #Molar flowrate of water ,kmol/s\n",
+ "AT = 0.0929 #Tower cross sectional area,m2\n",
+ "xe = np.array([0.0,0.0000562,0.0001403,0.000280,0.000422,0.000564,0.000842,0.001403,0.001965,0.00279,0.00420,0.00698])\n",
+ "ye = np.array([0.0,0.000658,0.00158,0.00421,0.00763,0.0112,0.01855,0.0342,0.0513,0.0775,0.121,0.212])\n",
+ "yop = np.array([0.02,0.04,0.07,0.13,0.20])\n",
+ "xop = np.zeros(len(yop))\n",
+ "Gy = np.zeros(len(yop))\n",
+ "Gx = np.zeros(len(yop))\n",
+ "V = np.zeros(len(yop))\n",
+ "L = np.zeros(len(yop))\n",
+ "kyda = np.zeros(len(yop))\n",
+ "kxda = np.zeros(len(yop))\n",
+ "xi = np.array([0.00046,0.00103,0.00185,0.00355,0.00565])\n",
+ "yi = np.array([0.0090,0.0235,0.0476,0.1015,0.1685])\n",
+ "d1y = 1.-yop\n",
+ "dyyi = yop-yi\n",
+ "d1yyilm = ((1.-yop)-(1.-yi))/log((1.-yop)/(1.-yi))\n",
+ "\n",
+ "#Calcualations\n",
+ "def funkxda(gx):\n",
+ " return 0.152*gx**0.82\n",
+ "\n",
+ "def funkyda(gx,gy):\n",
+ " return 0.0594*gx**0.25*gy**0.7\n",
+ "\n",
+ "k1 = (Ld*x2/(1.-x2)+Vd*(y1/(1.-y1)-y2/(1.-y2)))/Ld\n",
+ "x1 = k1/(1.+k1)\n",
+ "\n",
+ "for j in range(len(yop)):\n",
+ " k1 = (Ld*x1/(1.-x1)+Vd*(-y1/(1.-y1)+yop[j]/(1.-yop[j])))/Ld\n",
+ " xop[j] = k1/(1+k1)\n",
+ " Gy[j] = (Vd*29.+Vd*yop[j]*64.1/(1.-yop[j]))/AT\n",
+ " Gx[j] = (Ld*18.+Ld*xop[j]*64.1/(1.-xop[j]))/AT\n",
+ " V[j] = Vd/(1.-yop[j])\n",
+ " L[j] = Ld/(1.-xop[j])\n",
+ " kxda[j] = funkxda(Gx[j])\n",
+ " kyda[j] = funkyda(Gx[j],Gy[j])\n",
+ "\n",
+ "fyop = V/((kyda*AT/d1yyilm)*d1y*dyyi)\n",
+ "Height = integrate.simps(fyop,yop)\n",
+ "\n",
+ "#Results\n",
+ "print \"Height of the tower:\",round(Height,3), \"m\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Height of the tower: 1.574 m\n"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.8-1 Page Number 633"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Prediction of Film Coefficients for Ammonia Absorption\n",
+ "\n",
+ "#Variable Declaration\n",
+ "T = 303 #Temperature of the tower in K\n",
+ "dp = .0254 #Diameter of the ring m\n",
+ "P = 101325 #Total pressure in Pa\n",
+ "Gx = 2.543 #Flowrate in kg/s.m2\n",
+ "Gy = 0.339 #Flowrate in kg/s.m2 \n",
+ "m = 1.2\n",
+ "mua = 1.86e-5 #Viscosity of air in Pa.s\n",
+ "rhoa = 1.168 #Density of air in kg/m3\n",
+ "DAB = 2.379e-5 #Diffusivity of NH3 in water , m2/s\n",
+ "alpha = 0.557 #Constant in correlation for gas phase mass transfer coefficient\n",
+ "beta = 0.32 #Constant in correlation for gas phase mass transfer coefficient\n",
+ "gama = -0.51 #Constant in correlation for gas phase mass transfer coefficient\n",
+ "muw15 = 1.1404e-3 #Viscosity of water at 15\u00b0C\n",
+ "muw30 = 0.8007e-3 #Viscosity of water at 30\u00b0C\n",
+ "DABw15 = 1.77e-9 #Diffusivity of NH3 in water at 15\u00b0C\n",
+ "rhow = 996. #Desity of water in kg/m3\n",
+ "theta = 2.35e-3 #Constant in correlation for liquid phase mass transfer coefficient\n",
+ "eta = 0.22 #Constant in correlation for liquid phase mass transfer coefficient\n",
+ "#Calcualations\n",
+ "V = Gy/(29.0)\n",
+ "L = Gx/18.0\n",
+ "Sca = mua/(rhoa*DAB)\n",
+ "HG = alpha*Gy**beta*Gx**gama*Sca**0.5\n",
+ "DABw = muw15*303/(muw30*288)*DABw15\n",
+ "Scw = muw30/(rhow*DABw)\n",
+ "HL = theta*(Gx/muw30)**eta*Scw**0.5\n",
+ "kyda = V/HG\n",
+ "kxda = L/HL\n",
+ "Kyda = 1./(1./kyda + m/kxda)\n",
+ "ResGf = (1./kyda)/(1./Kyda)*100\n",
+ "\n",
+ "#Results\n",
+ "print \"Predicted film coefficients are as follows \"\n",
+ "print \"Gas phase film cofficient \",round(kyda,4),\"kmol/(s.m3.mol frac)\"\n",
+ "print \"Liquid phase film cofficient \",round(kxda,3),\"kmol/(s.m3.mol frac)\"\n",
+ "print \"Overall Gas phase film cofficient \",round(Kyda,4),\"kmol/(s.m3.mol frac)\"\n",
+ "print \"Percentage resistance in gas film is \",round(ResGf,1), \"%\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Predicted film coefficients are as follows \n",
+ "Gas phase film cofficient 0.0584 kmol/(s.m3.mol frac)\n",
+ "Liquid phase film cofficient 0.586 kmol/(s.m3.mol frac)\n",
+ "Overall Gas phase film cofficient 0.0521 kmol/(s.m3.mol frac)\n",
+ "Percentage resistance in gas film is 89.3 %\n"
+ ]
+ }
+ ],
+ "prompt_number": 25
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter11.ipynb b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter11.ipynb new file mode 100755 index 00000000..80b018bd --- /dev/null +++ b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter11.ipynb @@ -0,0 +1,1277 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:86e26476cb7579fc0837e325085ec3630b6741d9df94034464f5fb6b2f13155a"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 11: Vapor-Liquid Separation Processes"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.1-1 Page Number 641"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Use of Raoult's Law for Boiling Point Diagram\n",
+ "import numpy as np\n",
+ "from scipy.interpolate import interp1d\n",
+ "from scipy.optimize import root\n",
+ "import scipy.integrate as integrate\n",
+ "\n",
+ "#Variable Declaration\n",
+ "T = 95 #Equlibrium temperature in deg C\n",
+ "P = 101.32 #Vapor pressure from table 11.1-1\n",
+ "PA = 155.7 #Vapor pressure of benzene from table 11.1-1 in kPa\n",
+ "PB = 63.3 #Vapor pressure of toulene from table 11.1-1 in kPa\n",
+ "fPT = lambda x:PA*x + PB*(1.-x)-P\n",
+ "sol = root(fPT,0.05)\n",
+ "xA = sol.x[0]\n",
+ "xB = 1.- xA\n",
+ "yA = PA*xA/P\n",
+ "yB = 1.- yA\n",
+ "\n",
+ "#Result\n",
+ "print \"Liquid and Vapor composions of benzene at 95\u00b0C:\",round(xA,3),round(yA,3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Liquid and Vapor composions of benzene at 95\u00b0C: 0.411 0.632\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.2-1 Page Number 642"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Equilibrium Contact of Vapor-Liquid Mixture\n",
+ "import numpy as np\n",
+ "from scipy.interpolate import interp1d\n",
+ "from scipy.optimize import root\n",
+ "import matplotlib.pylab as plt\n",
+ "\n",
+ "#Variable Declaration\n",
+ "P = 101.32 #Presure of the vapor in kPa\n",
+ "yA2 = 0.4 #Mole fraction of benzene \n",
+ "yB2 = 0.6 #Mole fraction of toulene \n",
+ "V2 = 100. \n",
+ "L0 = 110.\n",
+ "xA0 = 0.3\n",
+ "xB0 = 0.7\n",
+ "xe = np.array([0.000,0.130,0.258,0.411,0.581,0.780,1.000])\n",
+ "ye = np.array([0.000,0.261,0.456,0.632,0.777,0.900,1.000])\n",
+ "#Calculations\n",
+ "#for equimolal overflow \n",
+ "L1 = L0\n",
+ "V1 = V2\n",
+ "fyxe = interp1d(xe,ye, kind='cubic',bounds_error=False)\n",
+ "x = np.arange(0.,1.05,0.05)\n",
+ "y = fyxe(x)\n",
+ "plt.plot(x,y,'r-',xe,xe,'k-')\n",
+ "x1 = 0.4\n",
+ "y1 = (L0*xA0 +V2*yA2 - L1*x1)/V1\n",
+ "x2 = 0.2\n",
+ "y2 = (L0*xA0 +V2*yA2 - L1*x2)/V1\n",
+ "plt.plot([x1,x2],[y1,y2],'k-')\n",
+ "f = lambda x: L0*xA0 +V2*yA2 - L1*x - V1*fyxe(x)\n",
+ "sol = root(f,0.1)\n",
+ "xA1 = sol.x[0]\n",
+ "yA1 = fyxe(xA1)\n",
+ "plt.grid(True)\n",
+ "plt.xlabel('Liquid phase mole fraction, xA')\n",
+ "plt.ylabel('Vapor phase mole fraction, yA')\n",
+ "plt.plot(xA1,yA1,'ro')\n",
+ "\n",
+ "#Results\n",
+ "print \"Equilibrium compositions of liquid and vapor are:\",round(xA1,4),round(yA1,4)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Equilibrium compositions of liquid and vapor are: 0.254 0.4506\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\ngg==\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x62e2b70>"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.3-1 Page Number 645"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Relative Volatility for Benzene-Toluene System\n",
+ "\n",
+ "#Variable Declaration\n",
+ "PA85 = 116.9 #Pressure of benzene at 85 deg C\n",
+ "PB85 = 46.0 #Pressure of tuolene at 85 deg C\n",
+ "\n",
+ "PA = 204.2 #Pressure of benzene at 105 deg C\n",
+ "PB = 86.0 #Pressure of toulene at 105 deg C\n",
+ "\n",
+ "#Calculation\n",
+ "alpha85 = PA85/PB85\n",
+ "alpha = PA/PB\n",
+ "\n",
+ "#Results\n",
+ "print 'Relative Volatility for Benzene-Toluene at 85\u00b0C is %4.2f and at 105\u00b0C is %4.2f'%(alpha85,alpha)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Relative Volatility for Benzene-Toluene at 85\u00b0C is 2.54 and at 105\u00b0C is 2.37\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.3-2 Page Number 647"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Simple Differential Distillation\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt \n",
+ "from scipy.interpolate import interp1d\n",
+ "from scipy.optimize import root\n",
+ "from scipy.integrate import quad, simps, romberg\n",
+ "\n",
+ "#Variable Declaration\n",
+ "L1 = 100 #Feed, mol\n",
+ "xfnp = 0.5 #Mole fraction of n-pentane\n",
+ "xfnh = 0.5 #Mole fraction of n-heptane\n",
+ "P = 101.3 #Pressure in kPa\n",
+ "V = 40. #Distilled moles\n",
+ "x = np.array([0.000,0.059,0.145,0.254,0.398,0.594,0.867,1.000])\n",
+ "y = np.array([0.000,0.271,0.521,0.701,0.836,0.925,0.984,1.000])\n",
+ "\n",
+ "#Calculations\n",
+ "L2 = L1-V\n",
+ "lnL1L2 = log(L1/L2)\n",
+ "\n",
+ "f1 = interp1d(x,y,kind = 'cubic',bounds_error=False)\n",
+ "xx = np.arange(0.20,.601,0.001)\n",
+ "yy = f1(xx)\n",
+ "ff = 1./(yy-xx)\n",
+ "f = interp1d(xx,ff,bounds_error=False)\n",
+ "def Integrant(x):\n",
+ " return f(x)\n",
+ "\n",
+ "er = 12. \n",
+ "ub = 0.5\n",
+ "\n",
+ "for j in range(len(xx)):\n",
+ " lb = xx[j+1]\n",
+ " zz = romberg(Integrant, lb, ub)\n",
+ " er = abs(zz-lnL1L2)\n",
+ " if er <=0.005:\n",
+ " xL = xx[j]\n",
+ " break\n",
+ "yav = (L1*xfnp-L2*xL)/V\n",
+ "plt.xlim(0.2,0.55)\n",
+ "plt.ylim(0,3.5)\n",
+ "plt.plot(xx,ff,'k-')\n",
+ "xxx = np.arange(xL,xfnp+0.001,0.001)\n",
+ "yyy = f1(xxx)\n",
+ "fff = 1./(yyy-xxx)\n",
+ "plt.fill_between(xxx,fff,0,color='0.6')\n",
+ "plt.text(0.35,1.0,'Area='+str(round(lnL1L2,3)))\n",
+ "plt.xlabel('$x$')\n",
+ "plt.ylabel('$1/(y-x)$')\n",
+ "plt.grid(True)\n",
+ "#Results\n",
+ "print \"Residue concentration : \", round(xL,3)\n",
+ "print \"Average Distillate concentration:\", round(yav,3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Residue concentration : 0.276\n",
+ "Average Distillate concentration: 0.836\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "iVBORw0KGgoAAAANSUhEUgAAAY8AAAEPCAYAAAC6Kkg/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlcFPf9P/DXAuuxcosgl3KWw2MXNRITTaEmMWJUGs0j\npHkkkuTREEtrbZseSfPoYZK2aVJjWpKUmqbUR1qTR/VRpRVptWWNERCK4oUuEgE5FDwAQW52fn/w\n3fmFcO0uu/vZwdfz8diHzM7M7osR5s1n3jOzKkmSJBAREVnARXQAIiJSHhYPIiKyGIsHERFZjMWD\niIgsxuJBREQWY/EgIiKLObx4dHd3IzExETqdDvHx8XjxxReHLaPX6+Hl5YWEhAQkJCTg1VdfdXRM\nIiIag5uj33DatGkoKCiARqNBf38/li9fjk8//RTLly8fstyXv/xl5ObmOjoeERGZQchhK41GAwDo\n7e3FwMAAfH19hy3DaxeJiJyXkOJhNBqh0+kQEBCA5ORkxMfHD5mvUqlQWFgIrVaLlJQUVFRUiIhJ\nRESjEFI8XFxcUF5ejvr6enzyySfQ6/VD5i9atAh1dXU4deoUvvWtbyE1NVVETCIiGoVK9L2tXnnl\nFUyfPh0vvPDCqMuEh4ejrKxs2OGt4OBgNDY22jsiEdGkEhkZiaqqqgm9hsNHHtevX0draysAoKur\nC4cOHUJCQsKQZZqamuSeR0lJCSRJGrEv0tjYCEmSFPv46U9/KjzDnZid+cU/mF/s47PPPpvwvtzh\nZ1tduXIFmzZtgtFohNFoxJNPPomVK1ciOzsbAJCRkYE9e/bgvffeg5ubGzQaDT766CNHx3SImpoa\n0RGspuTsAPOLxvzK5/DisWDBApw4cWLY8xkZGfLXmZmZyMzMdGQsIiKyAK8wFyg9PV10BKspOTvA\n/KIxv/IJb5hPhEqlgoLjExEJYYt9J0ceAn3xFGUlUXJ2gPlFY37lY/EgIiKL8bAVEdEdhoetiIhI\nCBYPgZR83FTJ2QHmF435lY/Fg4iILMaeBxHRHYY9DyIiEoLFQyAlHzdVcnaA+UVjfuVj8SAiIoux\n50FEdIdhz4OIiIRg8RBIycdNlZwdYH7RmF/5WDyIiMhi7HkQEd1h2PMgIiIhWDwEUvJxUyVnB5hf\nNOZXPhYPIiKyGHseRER3GPY8iIhICBYPgZR83FTJ2QHmF435lc/hxaO7uxuJiYnQ6XSIj4/Hiy++\nOOJyW7ZsQXR0NLRaLU6ePOnglERENBYhPY/Ozk5oNBr09/dj+fLlePPNN7F8+XJ5fl5eHrKyspCX\nl4fjx4/j29/+NoqLi4e9DnseRESWU2zPQ6PRAAB6e3sxMDAAX1/fIfNzc3OxadMmAEBiYiJaW1vR\n1NTk8JxERDQyIcXDaDRCp9MhICAAycnJiI+PHzK/oaEBoaGh8nRISAjq6+sdHdPulHzcVMnZAeYX\njfmVz03Em7q4uKC8vBxtbW1YtWoV9Ho9kpKShizzxSGVSqUa8bXS09MRFhYGAPD29oZOp5Nfy/Qf\n7KzT5eXlTpWH05zm9OSc1uv1yMnJAQB5fzlRwq/zeOWVVzB9+nS88MIL8nPPP/88kpKSkJaWBgCI\njY3FkSNHEBAQMGRd9jyIiCynyJ7H9evX0draCgDo6urCoUOHkJCQMGSZdevWYdeuXQCA4uJieHt7\nDyscREQkjsOLx5UrV/CVr3wFOp0OiYmJWLt2LVauXIns7GxkZ2cDAFJSUhAREYGoqChkZGTg3Xff\ndXRMhzANK5VIydkB5heN+ZXP4T2PBQsW4MSJE8Oez8jIGDKdlZXlqEhERGQh4T2PiWDPg4jIcors\neRARkfKxeAik5OOmSs4OML9ozK98LB5ERGQx9jyIiO4w7HkQEZEQLB4CKfm4qZKzA8wvGvMrH4sH\nERFZjD0PIqI7jC32nULuqktERI4lSRLOnTuHvXv32uT1eNhKICUfN1VydoD5RWN+x5AkCeXl5Xj5\n5ZcRFxeHlJQUtLW12eS1WTyIiCaRgYEBfPrpp3jhhRcQFRWFRx55BL29vdi1axdqa2uxfft2m7wP\nex5ERArX3d2Nw4cPY9++fcjNzUVQUBBSU1Oxfv166HS6YR+mZ4t9J4sHEZECtbS04MCBA9i3bx8O\nHToEnU6H1NRUpKamIjw8fMx1eZGgwinluOlIlJwdYH7RmN86tbW1eOedd/DAAw9g7ty5+Nvf/oY1\na9agqqoKR44cwXe+851xC4et8GwrIiIn1dfXh8LCQhw4cAB5eXlobm7G6tWr8Y1vfAP79u3DjBkz\nhGXjYSsiIifS3NyM/Px8HDhwAIcOHUJ4eDjWrFmDNWvWYMmSJXB1dZ3we7DnweJBRApnNBpx8uRJ\nHDhwAAcOHIDBYMDKlSuRkpKClJQUBAYG2vw92fNQOCUf91VydoD5RbvT81+5cgW7du3Ck08+iaCg\nIHzta19Da2srfvGLX6C5uRl79+7Fs88+a5fCYSvseRAR2VlnZyeOHj2Kf//73zh06BDq6uqwcuVK\nPPjgg9i2bZvDmty2xMNWREQ2ZjQacfr0ablYFBcXQ6fT4cEHH8QDDzyAJUuWwM1N3N/u7HmweBCR\nE5AkCZWVlSgoKEBBQQH0ej28vLzkYpGcnAxPT0/RMWXseSicko/7Kjk7wPyiKT1/QUEBPvvsM7z/\n/vt44oknEBISgvvvvx+FhYV46KGHcPz4cVRWViIrKwvr1693qsJhKw4fN9XV1eGpp55Cc3MzVCoV\nnnvuOWzZsmXIMnq9HuvXr0dERAQAYMOGDXj55ZcdHZWISFZRUYF//OMfKCgoQFlZGdRqNZKTk5Gc\nnIxt27YhIiJi2G1AJjOHH7a6evUqrl69Cp1Oh46ODixevBj79u1DXFycvIxer8f27duRm5s75mvx\nsBUR2cPAwABKS0vxr3/9C0ePHsWpU6fQ09OD2NhYfOlLX8IzzzyD5ORkxRYLRX6ex+zZszF79mwA\ngLu7O+Li4tDY2DikeABgUSAih+nq6sJ//vMfHD58GIWFhaioqMCMGTMQHR2NiIgI3HfffQgICIBK\npYJarUZkZKRiC4etCD1Vt6amBidPnkRiYuKQ51UqFQoLC6HVahEcHIw333wT8fHxglLaj16vR1JS\nkugYVlFydoD5RROd/+rVqzh48CD0ej1KS0tx6dIlBAYGIioqCosWLcKjjz4KLy+vUdcvKirC3Llz\nHZjY+QgrHh0dHdi4cSPefvttuLu7D5m3aNEi1NXVQaPR4ODBg0hNTUVlZeWIr5Oeno6wsDAAgLe3\nN3Q6nfxDaWrKOet0eXm5U+XhNKcn4/SyZctQWFiInJwcVFRUoLGxETdu3EBAQACCgoKwatUqhIeH\no7a2FgAQExMDADAYDCNOz58/36m+P3Om9Xo9cnJyAEDeX06UkFN1+/r68PDDD2P16tXYunXruMuH\nh4ejrKwMvr6+Q55nz4OIPs90yuzhw4dx7NgxlJeX49KlS5g5cyYiIiIwd+5chIeHIygoyOp7RKnV\nanzlK19R9MhDkT0PSZLw7LPPIj4+ftTC0dTUBH9/f6hUKpSUlECSpGGFg4ioqakJer0ex44dQ2lp\nKc6fPw9JkuRCsWrVKoSFhWH69Omio046Dh95fPrpp7jvvvuwcOFCueH0i1/8ApcvXwYAZGRk4J13\n3sF7770HNzc3aDQabN++HXfffffw8AofeegVfNxaydkB5hfNmvyNjY04cuQIioqKcPLkSRgMBrS3\nt2POnDmYM2cOwsLCEBERAV9fX7s2s9VqNaZPn460tDS7vYe9KXLksXz5chiNxjGXyczMRGZmpoMS\nEZGzqampwSeffILjx4/j5MmTqKysRGdnJ+bOnYs5c+YgJiYGDzzwAPz9/eHiwmudReDtSYhImJ6e\nHpSVlaGkpAQnTpzAuXPncOnSJfT29iIsLAyhoaHyyMLPz88pCgV7HoN4V10isjtJklBbW4uioiL8\n73//w5kzZ1BZWYnGxkbMnDkTISEhCAoKwt13340NGzZg5syZd/x1FM6OIw+BlHzcWsnZAea3p8bG\nRpSWlqK8vBxnz55FZWUlqqurYTQaERoaipCQELi4uGDx4sUICgrClClTREe2CHsegzjyICKLSZKE\n6upqlJaW4vTp0zh37hwuXryIuro69Pf3IygoCIGBgQgICMB9992Hr33ta/D29pZHEwaDwWbXG5AY\nih95bNu2DUuXLsVdd93F03mJbKyzsxOnTp3CmTNncP78eVy4cAGfffYZ6uvr4ebmhqCgIPmWQ4GB\ngQgMDISXl9ekPuTEnscgxY88Ojo68Ktf/QplZWUICAjA0qVL5WKycOHCYVevE9FQ3d3dOHv2rFwg\nTIeZGhoa0NbWhpkzZyIgIAD+/v4ICAjA/PnzERgYyN+tO5ziRx6m+AMDA7hw4QJKSkpQUlKC0tJS\nVFRUIDg4GFqtFgsXLoRWq4VWq8XcuXOd4i8jZz5uPR4lZwfuvPzNzc04d+4cDAYDLl68iEuXLqGm\npgYNDQ1oaWmBr68v/P394e/vj1mzZsmFwtfX1+orscdiMBjk234oDXsegxQ/8jBxdXXFvHnzMG/e\nPDz99NMAgP7+flRWVuL06dM4deoUsrOzcfr0abS3t2PhwoVYsGABYmJiEBsbi5iYGMyZM8cpTgUk\nslRrayvOnTsnH1a6dOkSLl++jMbGRjQ3N0OSJPj5+cHPzw8zZ86Er68vli9fDn9/f/j5+dmlQNDk\nNmlGHpa4fv06zpw5g7Nnz8JgMODChQswGAy4efMmoqOjhxSUqKgohIeHw8/PzylGK3Tn6ezsRFVV\nFaqqqlBdXY3Lly+jrq5OLgzXrl1DT08P/Pz8MGvWLLk4mAqFn58fNBoNf35thD2P/3uNO7F4jKa9\nvR2VlZVyQblw4QIuXbqE6upq9PT0IDw8XH5ERETIX4eFhcHDw8NmOejO0N/fj8bGRtTW1uLy5cuo\nr69HXV0d6uvrceXKFTQ3N+P69evo7u6Gt7c3fH194ePjA29vb3h7e8PHxwc+Pj7w9fWFh4cHi4OD\nsHj832uweJinra0N1dXVqK6ulguK6VFTUwO1Wo3g4GAEBwcjJCRkxH+/eIWsko+7Kzk7YL/8AwMD\naGpqQkNDg1wIGhsb5U/QvHbtGm7evInW1lbcunULGo0GXl5e8PLygqen57DC4OPjA3d392GHU5Xc\nMwCUnZ89j0GTpudhb15eXtDpdNDpdMPmSZKE1tZW1NfXo6GhAQ0NDaivr8eJEyeQm5srP2c6c8XU\njJQkCfv375cblZ9vWPr4+MDLy4s9GIG6u7vR3NyMpqYmXL16FU1NTfJhohs3buD69etoaWlBa2sr\n2tra0N7ejs7OTkybNg3u7u7w9vaGp6cnPD094eHhAX9/f0RHR8vPeXp6stdAisWRhwP19fXh+vXr\n8g6publ5xMe1a9fQ0tKCjo4OeHh4DDk88fm/SE0PT09PuLu7w93dHR4eHvLXGo0G7u7uUKvVor91\nh+nt7cWtW7dw69YttLW14datW+jo6MCtW7fQ3t6OlpYWtLS0oK2tTX6Y5nV0dKCzsxO3b99GV1cX\nBgYGoNFoMGPGDHnbzpgxQ36YtrPpa9PzLAiTGw9bDeLIw4HUarV8IZU5BgYG0NbWJu/wbt68KX/d\n0tKCGzduoKqqSt7xmf41PVpaWtDd3Q03NzdMnToV06ZNw7Rp0zBlyhSo1Wqo1WpMnToVU6ZMwZQp\nU+R5U6dOHfJwc3ODm5sbXF1d5YeLi4v8nEqlGvK1i4sLjEYjJEmC0WiE0WjEwMAAJEnCwMCA/Jzp\n0d/fj76+PvT29qKnpwd9fX3o6emRp3t7e+X5pn97e3vR3d2Nnp4e+d/e3l5IkjTke/ji9zN9+nR5\nO0yfPh2+vr4ICQnB9OnThz3UajX7CESj4MhDIHv3DXbu3Amj0Yi+vj55B9vT04P+/n55hz3Sv1/8\n+vOFQJIkSJKEGzduwNvbWy4ApudNX7u4uEClUg17mJ4HMOR5U1FSq9VwdXWVC5apKH1+2s3NDWq1\nWi56ny8SpgI2HiUfcweYXyT2PAZx5DHJqVQqeSdrS0r+5SeiiePIYxLbuXMntw+RjbHnMYin8hAR\nkcVYPATS6/WiI1jNYDCIjjAhzC+W0vMXFRWJjiAciwcREVmMPY9JjD0PIttjz2MQRx5ERGQxFg+B\n2PMQh/nFUnp+9jwEFI+6ujokJydj3rx5mD9/Pn7729+OuNyWLVsQHR0NrVaLkydPOjglERGNxeE9\nD9PdRXU6HTo6OrB48WLs27cPcXFx8jJ5eXnIyspCXl4ejh8/jm9/+9soLi4eHp49jzGx50Fke+x5\nDHL4yGP27NnynWnd3d0RFxeHxsbGIcvk5uZi06ZNAIDExES0traiqanJ0VGJiGgUQnseNTU1OHny\nJBITE4c839DQgNDQUHk6JCQE9fX1jo5nd+x5iMP8Yik9P3seFtzbqqurC7t378aZM2fQ39+Pzs5O\nuLi4wMPDA4mJiXj00Uct+uyJjo4ObNy4EW+//Tbc3d2Hzf/ikGq0m92lp6cjLCwMAODt7Q2dTiff\nbNC0c3bW6fLycru+vsFggCRJ8j2oTL+wnOY0p62fnj9/PgDx+w9LpvV6PXJycgBA3l9OlFk9j8OH\nD6OiogJr1qxBZGTkkHmSJOH06dP4z3/+g5UrV0Kr1Y77pn19fXj44YexevVqbN26ddj8559/HklJ\nSfJdK2NjY3HkyBEEBAQMDc+ex5jY8yCyPfY8Bo078uju7kZYWBjuv//+UUNotVpotVqcO3du3DeU\nJAnPPvss4uPjRywcALBu3TpkZWUhLS0NxcXF8Pb2HlY4iIhInHGPM02bNg1RUVHy9KVLl9DV1TXi\nsvPmzRv3DY8dO4YPP/wQBQUFSEhIQEJCAg4ePIjs7GxkZ2cDAFJSUhAREYGoqChkZGTg3XffNff7\nURT2PMRhfrGUnp89Dys+z+M3v/kNHn30USQlJeHo0aMAgBUrVpi9/vLly2E0GsddLisry9JoRETk\nIBafbbV06VJUV1ejuroaK1aswPXr1+2R645gz08RtDelfxAU84ul9PzLli0THUE4i4tHXV0dpk6d\niu3btyM5ORllZWX2yEVERE7M4uIRERGBDRs24He/+x3+9re/Yc6cOfbIdUdgz0Mc5hdL6fnZ87Ci\neDz22GPyWVXV1dW88puI6A7Ez/OYxHidB5Ht8TqPQVbfnmTPnj0TemMiIlIuq4vH7du3bZnjjsSe\nhzjML5bS87PnwQ+DIiIiK7B4CMTrPMRhfrGUnp/XebB4EBGRFawuHqPdIp3Mx56HOMwvltLzs+cx\ngeKxceNGW+YgIiIFsfg6j/T0dMyaNQv33nsvli1bJvRW6bzOY2y8zoPI9nidxyCLRx45OTl45pln\n0NLSgp/85CdYsmQJfv3rX5t1p1wiIpocLC4excXFaG1txdNPP43s7Gz88Ic/RGpqKj744AN75JvU\n2PMQh/nFUnp+9jys+DyPw4cPQ61WY8eOHdBoNJgzZw78/Pz4SX9ERHeQcXsePT09aG9vh5+fHwDg\n7Nmz6OzsxNKlS+Vl3n//fYSGhiIuLs6hd9llz2Ns7HkQ2R57HoPGPWw1depUFBcX469//Su6urow\nf/78IYUDADZs2IDa2lrU1tZOKAwRESmDWYetHn74YVy5cgVvvfUWmpub0d3djb6+Pri6ukKj0SAk\nJARf//rX4eXlZe+8k4per1fsVeYGg0HRVwkzv1hKz19UVKTokYctmN3zCAwMxEsvvWTPLEREpBDj\n9jwMBgNcXFwQHR3tqExmY89jbOx5ENkeex6Dxh15REZGQq/X49///jdcXFxw1113YcmSJRN6UyIi\nUrZxG+Zubm64//77kZmZic2bN8NoNOK9997DO++8g8OHD6O/v98ROSclXuchDvOLpfT8vM7Dius8\nli5dKp9tZTAY8Mc//hG9vb0IDg7GqlWrMGPGjHFf45lnnsGBAwfg7++PM2fODJuv1+uxfv16RERE\nABg8m+vll1+2NCoREdmJzT7DvLGxEUePHsVjjz027rJHjx6Fu7s7nnrqqVGLx/bt25Gbmzvm67Dn\nMTb2PIhsjz2PQRP+PA/Tx9EGBQWZVTgAYMWKFfDx8RlzGe70iIic14SLx86dO22RYwiVSoXCwkJo\ntVqkpKSgoqLC5u/hDNjzEIf5xVJ6fvY8zOx5fPe738WRI0fg6ek5bN758+exdetWm4ZatGgR6urq\noNFocPDgQaSmpqKysnLEZdPT0xEWFgYA8Pb2hk6nky+8M+2cnXW6vLzcrq9vMBggSZJ8MZbpF5bT\nnOa09dPz588HIH7/Ycm0Xq9HTk4OAMj7y4kyq+dhNBqxY8cOfPe73x0276233sJ3vvMdi9+4pqYG\na9euHbHn8UXh4eEoKyuDr6/vkOfZ8xgbex5EtseexyCzDlu5uLjg6aefHnHec889N6EAI2lqapK/\nsZKSEkiSNKxwEBGROGb3PEZrcJtzau4XPf7447jnnntgMBgQGhqKDz74ANnZ2cjOzgYA7NmzBwsW\nLIBOp8PWrVvx0UcfWfweSsCehzjML5bS87PnYcV1Hrawe/fuMednZmYiMzPTQWmIiMhSNrvOQwT2\nPMbGngeR7bHnMWjCp+oSEdGdh8VDIPY8xGF+sZSenz0PFg8iIrICex6TGHseRLbHnscgjjyIiMhi\nLB4CsechDvOLpfT87HmweBARkRXY85jE2PMgsj32PAZx5EFERBZj8RCIPQ9xmF8spednz4PFg4iI\nrMCexyTGngeR7bHnMYgjDyIishiLh0DseYjD/GIpPT97HiweRERkBfY8JjH2PIhsjz2PQRx5EBGR\nxVg8BGLPQxzmF0vp+dnzYPEgIiIrsOcxibHnMb7y8nL8/ve/x89+9jPMnj3bIe95+/Zt7Ny5Ezdu\n3MDMmTPx3HPPQaPRDFvupZdewrRp0+Di4gJXV1e8+OKLAICysjL84x//wNWrV/HSSy9hzpw58uv+\n/ve/R21tLZYtW4bHH3/cId/PnYY9j0FuNspCpEglJSVYsGABSktLsXbt2iHzBgYG4OrqavP3zM/P\nR1xcHFatWoX8/Hzk5+fjkUceGXHZ733ve5gxY8aQ54KDg7F582Z8+OGHQ55Xq9VYv349Ghsb0dDQ\nYPPcRJ/Hw1YCsechjsFgQHd3N2pqavD444/jf//7n/z8G2+8gXfffRc///nPYTQasWfPHvzyl7/E\nK6+8gk8++QQA0N3djbfeeguvvfYatm3bhlOnTpn93qdOncKyZcsAAMuWLUN5efmoy4701+Hs2bPR\n2to67PkpU6YgKioKbm7O/zeh0n9+2PMQNPJ45plncODAAfj7++PMmTMjLrNlyxYcPHgQGo0GOTk5\nSEhIcHBKmuxOnTqFefPmwdfXF+7u7rh8+TIAoK6uDj/96U8xc+ZMfPLJJ9BoNHjxxRfR19eHN954\nA/Hx8fD19cXmzZsxbdo0dHR04PXXX4dWqwUAvPHGG+jp6Rn2fhs3bkRsbCza29vh6ekJAPD09ER7\ne/uI+VQqFXbs2AGVSoX77rsPK1asMOv7UqlU1mwOIosIKR5PP/00vvWtb+Gpp54acX5eXh6qqqpw\n8eJFHD9+HJs3b0ZxcbGDU9pfUlKS6AhWi4mJER1hQmJiYpCVlYWVK1cCABYvXoySkhIsXLgQYWFh\nmDlzJgDg/PnzaGhowIkTJwAAXV1duHbtGnx8fPD3v/8dVVVVUKlUaG1txa1bt+Dp6Ynvf//7ZucY\na0f/gx/8AF5eXmhvb8eOHTswe/ZsREdHy/n/+c9/WvvtC6f0nx/TyPFOJqR4rFixAjU1NaPOz83N\nxaZNmwAAiYmJaG1tRVNTEwICAhyUkCa727dvw2AwoLGxEQBgNBqhUqmwYMECTJkyZciyaWlpiI+P\nH/JcYWEhOjo68OMf/xguLi546aWX0N/fD2D8kYeHhwfa2trg5eWFtrY2eHh4jJjRy8sLAODh4QGd\nToeamhq5eBCJ5pQHRxsaGhAaGipPh4SEoL6+ftIVD71er9jRh8FgUPRfj3l5ebj77rvxxBNPyM/9\n5je/wcWLF4csFx8fjyNHjiAmJgaurq5oamqCj48Puru74eHhARcXFxgMBty8eVNeZ7yRh1arRVFR\nER566CEUFRVBp9MNW6a3txdGoxHTpk1DT08Pzp8/j4cfflieb+oZjNQTUcIZdkr/+SkqKlL02Va2\n4JTFAxj+CzDa8D49PR1hYWEAAG9vb+h0OnmHbGpIO+u0qVFqr9c3GAyQJEn+JTXtcDgdA4PBgLvu\numvITiw4OBjHjh1DSEiIvPysWbMQGBiI1157Dd3d3dBoNHjhhRewdOlSvPnmm/jxj3+ML33pS5g9\nezY+++wzXLt2bdz3f+ihh/CHP/wBBQUF8PLywtatWwEMnoJ76NAh/OhHP0JbWxvefvttAINnUS1d\nuhSurq4wGAzo7OzEhx9+iK6uLuzYsQPh4eHYsmULDAYD3n//fQwMDKC/vx9lZWXYsGGDfIjFmba/\nkqfnz58PQPz+w5JpvV6PnJwcAJD3lxMl7DqPmpoarF27dsSG+fPPP4+kpCSkpaUBAGJjY3HkyJFh\nIw9e5zE2XudBZHu8zmOQU56qu27dOuzatQsAUFxcDG9v70l3yIqISMmEFI/HH38c99xzDwwGA0JD\nQ/HBBx8gOzsb2dnZAICUlBREREQgKioKGRkZePfdd0XEtDte5yEO84ul9Py8zkNQz2P37t3jLpOV\nleWAJEREZA3e22oSY8+DyPbY8xjklD0PIiJybiweArHnIQ7zi6X0/Ox5sHgQEZEV2POYxNjzILI9\n9jwGceRBREQWY/EQiD0PcZhfLKXnZ8+DxYOIiKzAnsckxp4Hke2x5zGIIw8iIrIYi4dA7HmIw/xi\nKT0/ex4sHkREZAX2PCYx9jyIbI89j0EceRARkcVYPARiz0Mc5hdL6fnZ82DxICIiK7DnMYmx50Fk\ne+x5DOLIg4iILMbiIRB7HuIwv1hKz8+eB4sHERFZgT2PSYw9DyLbY89jEEceRERkMRYPgdjzEIf5\nxVJ6fva5ImPAAAAJcElEQVQ8BBWP/Px8xMbGIjo6Gq+//vqw+Xq9Hl5eXkhISEBCQgJeffVVASmJ\niGg0Du95DAwMICYmBocPH0ZwcDDuuusu7N69G3FxcfIyer0e27dvR25u7pivxZ7H2NjzILI99jwG\nOXzkUVJSgqioKISFhUGtViMtLQ379+8fthx3ekREzsvhxaOhoQGhoaHydEhICBoaGoYso1KpUFhY\nCK1Wi5SUFFRUVDg6pkOw5yEO84ul9PzseQBujn5DlUo17jKLFi1CXV0dNBoNDh48iNTUVFRWVo64\nbHp6OsLCwgAA3t7e0Ol0SEpKAvD/d87OOl1eXm7X1zcYDJAkCTExMfI0AE5zmtMTmJ4/fz4A8fsP\nS6b1ej1ycnIAQN5fTpTDex7FxcX42c9+hvz8fADAL3/5S7i4uOCHP/zhqOuEh4ejrKwMvr6+Q55n\nz2Ns7HkQ2R57HoMcfthqyZIluHjxImpqatDb24uPP/4Y69atG7JMU1OT/I2VlJRAkqRhhYOIiMRx\nePFwc3NDVlYWVq1ahfj4eDz22GOIi4tDdnY2srOzAQB79uzBggULoNPpsHXrVnz00UeOjukQ7HmI\nw/xiKT0/ex4Ceh4AsHr1aqxevXrIcxkZGfLXmZmZyMzMdHQsIiIyE+9tNYmx50Fke+x5DOLtSYiI\nyGIsHgKx5yEO84ul9PzsebB4EBGRFdjzmMTY8yCyPfY8BnHkQUREFmPxEIg9D3GYXyyl52fPg8WD\niIiswJ7HJMaeB5HtsecxiCMPIiKyGIuHQOx5iMP8Yik9P3seLB5ERGQF9jwmMfY8iGyPPY9BHHkQ\nEZHFWDwEYs9DHOYXS+n52fNg8SAiIiuw5zGJsedBZHvseQziyIOIiCzG4iEQex7iML9YSs/PngeL\nBxERWYE9j0mMPQ8i22PPYxBHHkREZDEhxSM/Px+xsbGIjo7G66+/PuIyW7ZsQXR0NLRaLU6ePOng\nhI7Bnoc4zC+W0vOz5yGgeAwMDOCb3/wm8vPzUVFRgd27d+P8+fNDlsnLy0NVVRUuXryIP/zhD9i8\nebOjYzpEeXm56AhWq6urEx1hQphfLKXnr6ioEB1BOIcXj5KSEkRFRSEsLAxqtRppaWnYv3//kGVy\nc3OxadMmAEBiYiJaW1vR1NTk6Kh219raKjqC1bq6ukRHmBDmF0vp+W/duiU6gnAOLx4NDQ0IDQ2V\np0NCQtDQ0DDuMvX19Q7LSEREY3Nz9BuqVCqzlvvimQDmrqckNTU1dn8PtVptl9e9efOm3V7bEZhf\nLCXnNxqN/GMWAopHcHDwkOOddXV1CAkJGXOZ+vp6BAcHD3utyMhIxReVP//5z6IjWK2wsFB0hAlh\nfrGUnl/J+57IyMgJv4bDi8eSJUtw8eJF1NTUICgoCB9//DF27949ZJl169YhKysLaWlpKC4uhre3\nNwICAoa9VlVVlaNiExHR5zi8eLi5uSErKwurVq3CwMAAnn32WcTFxSE7OxsAkJGRgZSUFOTl5SEq\nKgozZszAn/70J0fHJCKiMSj6CnMiIhLDKa8wH+8iwr/85S/QarVYuHAh7r33Xpw+fdrsdR1hIvnD\nwsKwcOFCJCQkYOnSpY6MLRsv//79+6HVapGQkIDFixfjv//9r9nrOsJE8ith+5uUlpbCzc0Ne/fu\ntXhde5pIftHbf7zser0eXl5eSEhIQEJCAl599VWz13UES/O/8sor8jyLt73kZPr7+6XIyEipurpa\n6u3tlbRarVRRUTFkmcLCQqm1tVWSJEk6ePCglJiYaPa6zpxfkiQpLCxMunHjhkMzf545+Ts6OuSv\nT58+LUVGRpq9rjPnlyRlbH/TcsnJydKaNWukPXv2WLSus+aXJLHb35zsBQUF0tq1a61a194mkl+S\nLN/2TjfyMOciwmXLlsHLywvA4EWEptPmzFnXmfObSAKPJJqTf8aMGfLXHR0d8PPzM3tdZ85v4uzb\nHwB+97vfYePGjZg1a5bF69rTRPKbiNr+5mYfKZ+Stv1Y29eSbe90xcOciwg/749//CNSUlKsWtce\nJpIfGDz97/7778eSJUuwc+dOu2Ydibn59+3bh7i4OKxevRq//e1vLVrXniaSH1DG9m9oaMD+/fvl\n2/aYThlVyvYfLb/pa1Hb35zsKpUKhYWF0Gq1SElJkW9TopRtP1p+0zxLtr3Dz7YajyXnThcUFOCD\nDz7AsWPHLF7XXiaSHwCOHTuGwMBAXLt2DQ888ABiY2OxYsUKe0Qdkbn5U1NTkZqaiqNHj+LJJ5/E\nhQsX7JzMPNbmN92oTwnbf+vWrfjVr34l31bb9NeiUn7+R8sPiN3+5mRftGgR6urqoNFocPDgQaSm\npqKystIB6cY30fyWbnunG3mYcxEhAJw+fRpf//rXkZubCx8fH4vWtaeJ5AeAwMBAAMCsWbPw1a9+\nFSUlJfYP/TmWbsMVK1agv78fN2/eREhIiGK2v4kp/40bNwAoY/uXlZUhLS0N4eHh2Lt3L77xjW8g\nNzdXMT//o+UHxG5/c7J7eHhAo9EAAFavXo2+vj5F/eyPlh+wYttb0Zexq76+PikiIkKqrq6Wenp6\nRmz61NbWSpGRkVJRUZHF69rbRPLfvn1bunXrliRJg03de+65R/rXv/7lsOySZF7+qqoqyWg0SpIk\nSWVlZVJERITZ6zpzfqVs/89LT0+X9u7da9W69jCR/KK3vznZr169Kv/sHD9+XJo7d67Z6zpzfmu2\nvdMdtjLnIsJt27ahpaVFPmaqVqtRUlIy6rpKyX/16lU88sgjAID+/n488cQTePDBB50u/969e7Fr\n1y6o1Wq4u7vjo48+GnNdpeRXyva3dF1Hmkh+0dvfnOx79uzBe++9Bzc3N2g0GsX97I+W35ptz4sE\niYjIYk7X8yAiIufH4kFERBZj8SAiIouxeBARkcVYPIiIyGIsHkREZDEWDyIishiLBxERWYzFg4iI\nLOZ0tychUrKBgQF8/PHHuHTpEkJDQ1FSUoLvfe97iIiIEB2NyKY48iCyoVOnTmHDhg2IiIiA0WjE\no48+Kt+tlGgyYfEgsqFFixZh6tSpKCoqQlJSEpKSkjB9+nTRsYhsjsWDyIZKS0tx/fp1nD17FuHh\n4Th69KjoSER2wZ4HkQ3l5+cjICAA9957L/7+978P+3x0osmCt2QnIiKL8bAVERFZjMWDiIgsxuJB\nREQWY/EgIiKLsXgQEZHFWDyIiMhiLB5ERGQxFg8iIrLY/wOgRx/AvKPogQAAAABJRU5ErkJggg==\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x64488d0>"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.4-1 Page Number 656"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Rectification of Benzene-Toluene Mixture\n",
+ "import numpy as np\n",
+ "from scipy.interpolate import interp1d\n",
+ "from scipy.optimize import root\n",
+ "import matplotlib.pyplot as plt\n",
+ "from math import ceil\n",
+ "\n",
+ "#Variable Declaration\n",
+ "xe = np.array([0.000,0.130,0.258,0.411,0.581,0.780,1.000])\n",
+ "ye = np.array([0.000,0.261,0.456,0.632,0.777,0.900,1.000])\n",
+ "\n",
+ "F = 100. #Feed in kmol/hr\n",
+ "xF = 0.45 #Mole fraction of benzene in feed\n",
+ "xD = 0.95 #Mole fraction of benzene in distillate\n",
+ "xW = 0.10 #Mole fraction of benzene at the bottom\n",
+ "R = 4.0 #Reflux ratio\n",
+ "lambdav = 32099.\n",
+ "Cp = 159. #Average heat capacity of feed in kJ/kmol.K\n",
+ "Tb = 366.7 #Boiling point of feed (K)\n",
+ "Tf = 327.6 #Temperature of feed (K)\n",
+ "\n",
+ "#Calculations\n",
+ "\n",
+ "x = np.arange(0.,1.,0.01)\n",
+ "f = interp1d(xe,ye, kind='cubic')\n",
+ "y = f(x)\n",
+ "\n",
+ "plt.text(.05, .6, 'Equilibrium Curve')\n",
+ "plt.text(xF,xF-0.1, 'Feed Line')\n",
+ "plt.text(xF+0.05,xF+0.1, 'q-Line')\n",
+ "plt.text(xF+0.3,xF+0.3, 'UO Line')\n",
+ "plt.text(xF-0.2,xF-0.2, 'LO Line')\n",
+ "plt.plot(x,y,'k-')\n",
+ "plt.plot(xD,xD,'ro')\n",
+ "plt.plot(xW,xW,'ro')\n",
+ "\n",
+ "plt.annotate('$(x_D,y_D)$', xy=(xD,xD), xytext=(xD,xD-0.02))\n",
+ "plt.annotate('$(x_W,y_W)$', xy=(xW,xW), xytext=(xW,xW-0.02))\n",
+ "plt.xlabel('Liquid mole fraction, x')\n",
+ "plt.ylabel('Vapor mole fraction, y')\n",
+ "plt.plot([0,1.], [0,1.], 'ko-', lw=0.5)\n",
+ "\n",
+ "\n",
+ "\n",
+ "ff = lambda x: f(x)-(mql*x+cql)\n",
+ "\n",
+ "plt.plot([0,1,xF,xF],[0,1,xF,0])\n",
+ "a = np.array([[1,1], [xD,xW]])\n",
+ "b = np.array([F,F*xF])\n",
+ "[D,W]= np.linalg.solve(a, b)\n",
+ "q = 1+Cp*(Tb-Tf)/lambdav\n",
+ "muol = R/(R+1)\n",
+ "cuol = xD/(R+1)\n",
+ "mql = q/(q-1.)\n",
+ "cql = xF - mql*xF\n",
+ "\n",
+ "plt.plot(xD,xD,'rx')\n",
+ "plt.plot(xW,xW,'rx')\n",
+ "a = np.array([[1,-mql], [1,-muol]])\n",
+ "b = np.array([cql,cuol])\n",
+ "[yi,xi] = np.linalg.solve(a, b)\n",
+ "mlol = (xW-yi)/(xW-xi)\n",
+ "clol = yi - mlol*xi\n",
+ "sol = root(ff,0.52)\n",
+ "xq = sol.x[0]\n",
+ "yq = f(xq)\n",
+ "plt.plot([xF,xq],[xF,yq])\n",
+ "plt.plot([xF,xi],[xF,mql*xi+cql])\n",
+ "plt.plot([xD,xi],[xD,yi])\n",
+ "plt.plot([xW,xi],[xW,yi])\n",
+ "x1 = xD\n",
+ "y1 = xD\n",
+ "n = 0\n",
+ "j = 0 \n",
+ "while x1>xW:\n",
+ " y2 = y1\n",
+ " ff = lambda x: y1 -f(x)\n",
+ " sol = root(ff,0.2)\n",
+ " x2 = sol.x[0]\n",
+ " plt.text(x2, y2+0.02, str(n+1)) \n",
+ " plt.plot([x1,x2],[y1,y2],'k-')\n",
+ " if x2 > xW:\n",
+ " n = n+1\n",
+ " else:\n",
+ " dxt = x1 - x2\n",
+ " dx = x1 - xW\n",
+ " n = n + dx/dxt\n",
+ " if x2>xW and x2<xi:\n",
+ " j = j + 1\n",
+ " x1 = x2\n",
+ " if x1 <= xi:\n",
+ " c = clol\n",
+ " m = mlol\n",
+ " else:\n",
+ " c = cuol\n",
+ " m = muol\n",
+ " ff = lambda y: x1 - (y - c)/m\n",
+ " sol = root(ff,0.5)\n",
+ " y2 = sol.x[0] \n",
+ " plt.plot([x1,x2],[y1,y2],'k-')\n",
+ "\n",
+ " x1 = x2\n",
+ " y1 = y2\n",
+ "nf = n - j\n",
+ "plt.title('McCabe Thiele Diagram')\n",
+ "plt.grid(True) \n",
+ "#Results\n",
+ "print \"Rate of distilate\",round(D,1),\"kmol/hr\\nRate of bottoms\" ,round(W,1),\"kmol/hr\" \n",
+ "print 'slope of q-line: %4.2f'%mql\n",
+ "print \"Number of equilibrium satges including reboiler for required separation:\",round(n,1)\n",
+ "print \"Number of equilibrium satges excluding reboiler for required separation:\",round(n-1,1)\n",
+ "print 'Feed is introduced on %2d'%(ceil(nf))"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Rate of distilate 41.2 kmol/hr\n",
+ "Rate of bottoms 58.8 kmol/hr\n",
+ "slope of q-line: 6.16\n",
+ "Number of equilibrium satges including reboiler for required separation: 7.5\n",
+ "Number of equilibrium satges excluding reboiler for required separation: 6.5\n",
+ "Feed is introduced on 5\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nUKNCCCFEbv4/qGxvC/Tl+3YAAAAASUVORK5CYII=\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x6561ef0>"
+ ]
+ }
+ ],
+ "prompt_number": 23
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.4-2 Page Number 660"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Minimum Reflux Ratio and Total Reflux in Rectification\n",
+ "import numpy as np\n",
+ "from scipy.interpolate import interp1d\n",
+ "from scipy.optimize import root\n",
+ "import matplotlib.pylab as plt\n",
+ "from math import ceil\n",
+ "\n",
+ "#Variable Declaration\n",
+ "xe = np.array([0.000,0.130,0.258,0.411,0.581,0.780,1.000])\n",
+ "ye = np.array([0.000,0.261,0.456,0.632,0.777,0.900,1.000])\n",
+ "\n",
+ "F = 100. #Feed in kmol/hr\n",
+ "xF = 0.45 #Mole fraction of benzene in feed\n",
+ "xD = 0.95 #Mole fraction of benzene in distillate\n",
+ "xW = 0.10 #Mole fraction of benzene at the bottom\n",
+ "R = 4.0 #Reflux ratio\n",
+ "lambdav = 32099.\n",
+ "Cp = 159. #Average heat capacity of feed in kJ/kmol.K\n",
+ "Tb = 366.7 #Boiling point of feed (K)\n",
+ "Tf = 327.6 #Temperature of feed (K)\n",
+ "\n",
+ "#Calculations\n",
+ "x = np.arange(0.,1.,0.01)\n",
+ "\n",
+ "f = interp1d(xe,ye, kind='cubic')\n",
+ "y = f(x)\n",
+ "plt.text(.05, .6, 'Equilibrium Curve')\n",
+ "plt.text(xF,xF-0.1, 'Feed Line')\n",
+ "plt.text(xF+0.05,xF+0.1, 'q-Line')\n",
+ "plt.grid(True)\n",
+ "plt.title('McCabe Thiele Diagram')\n",
+ "plt.plot(xD,xD,'ro')\n",
+ "plt.plot(xW,xW,'ro')\n",
+ "plt.plot(x,y,'k-')\n",
+ "plt.plot([0,1.], [0,1.], 'ko-')\n",
+ "plt.annotate('$(x_D,y_D)$', xy=(xD,xD), xytext=(xD,xD-0.02))\n",
+ "plt.annotate('$(x_W,y_W)$', xy=(xW,xW), xytext=(xW,xW-0.02))\n",
+ "plt.xlabel('Liquid mole fraction, x')\n",
+ "plt.ylabel('Vapor mole fraction, y')\n",
+ "\n",
+ "\n",
+ "ff = lambda x: f(x)-(mql*x+cql)\n",
+ "plot([0,1,xF,xF],[0,1,xF,0])\n",
+ "a = np.array([[1,1], [xD,xW]])\n",
+ "b = np.array([F,F*xF])\n",
+ "[D,W] = np.linalg.solve(a, b)\n",
+ "q = 1+Cp*(Tb-Tf)/lambdav\n",
+ "mql = 1./(q-1.)\n",
+ "cql = xF - mql*xF\n",
+ "plot(xD,xD,'rx')\n",
+ "plot(xW,xW,'rx')\n",
+ "sol = root(ff,0.52)\n",
+ "xq = sol.x[0]\n",
+ "yq = f(xq)\n",
+ "plot([xF,xq],[xF,yq])\n",
+ "mmin = (xD-yq)/(xD-xq)\n",
+ "Rm = mmin/(1-mmin)\n",
+ "x1 = xD\n",
+ "y1 = xD\n",
+ "n = 0\n",
+ "j = 0\n",
+ "while x1>xW:\n",
+ " y2 = y1\n",
+ " ff = lambda x: y1 -f(x)\n",
+ " sol = root(ff,0.2)\n",
+ " x2 = sol.x[0]\n",
+ " plt.text(x2, y2+0.02, str(n+1)) \n",
+ " plt.plot([x1,x2],[y1,y2],'k-')\n",
+ " if x2 > xW:\n",
+ " n = n+1\n",
+ " else:\n",
+ " dxt = x1 - x2\n",
+ " dx = x1 - xW\n",
+ " n = n + dx/dxt\n",
+ " if x2>xW and x2<xF:\n",
+ " j = j + 1\n",
+ " x1 = x2\n",
+ " y2 = x2\n",
+ " plot([x1,x2],[y1,y2],'k-')\n",
+ " x1 = x2\n",
+ " y1 = y2\n",
+ "\n",
+ "#Results\n",
+ "print \"A: Minimum Reflux Ratio:\", round(Rm,3)\n",
+ "print \"B: Number of equilibrium satges including reboiler for required separation:\",round(n,1)\n",
+ "print \" Number of equilibrium satges excluding reboiler for required separation:\",round(n-1,1)\n",
+ "print 'Feed is introduced on %2d'%(ceil(n-j))"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "A: Minimum Reflux Ratio: 1.104\n",
+ "B: Number of equilibrium satges including reboiler for required separation: 5.8\n",
+ " Number of equilibrium satges excluding reboiler for required separation: 4.8\n",
+ "Feed is introduced on 4\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "iVBORw0KGgoAAAANSUhEUgAAAZUAAAEZCAYAAABfKbiYAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xlczdn/B/BXG1mypMxYUpElaxtJlkpJJUshW2Qpw1hC\naLafjBljHWMbE2NfUpoZhcraJWSiRRQqSgmjFG1a7u3z+6Nv95aWe6u7934+Hj343Pu5n8/7nu79\nnM55n3M+CgzDMCCEEEKEQFHSARBCCJEfVKkQQggRGqpUCCGECA1VKoQQQoSGKhVCCCFCQ5UKIYQQ\noaFKhcgEFosFLS0tsZxLUVERL168qPW506dPw9bWVqDjuLm54YcffhBmaNXY29vj5MmTIjs+IY1B\nlQoRiI6ODlq2bIn3799Xe9zQ0BCKiopIT0/ne4zS0lL4+PigT58+aNu2LXR1dbFw4UK8fPlSVGHX\nsHnzZqipqUFNTQ2tWrWCsrIyd3vQoEF8Xz979mxcvnxZoHMpKChAQUGhUXEqKiqibdu2UFNTg4aG\nBqytrREQEFBtn5CQELi6ujbq+ISIClUqRCAKCgro2bMn/Pz8uI89evQInz59EvjCOXXqVFy8eBF+\nfn7Iy8vDw4cPYWJiguvXr4sq7Bq+/fZb5OfnIz8/H3/88QdGjBjB3X706JHQz9eUucXx8fHIz89H\nUlIS3NzcsGzZMvz4449CjK52bDZb5Ocg8osqFSKwOXPm4MSJE9zt48ePY+7cudUunJ8+fcKaNWug\no6ODDh06YNSoUSguLsa1a9dw7do1BAUFwdjYGIqKimjXrh2WLFmCBQsWAACOHj2K/v37o127dujV\nqxcOHjxYI4ZffvkFmpqa0NXVxZkzZ7iPl5SUwMvLC9ra2vjyyy+xZMkSFBcX1/t+GIap86J/9epV\n9OnTBx07dsSyZcu4jx87dgyjRo3ibj99+hQ2Njbo1KkT+vXrh3PnztV5vosXL8LAwAAdO3aEubm5\nwJWYuro65syZgwMHDuCXX35Bbm4uAMDCwgKHDx8GADx//hxWVlbQ0NCApqYm5syZg48fP3KPERMT\nA0NDQ7Rr1w7Tp0+Hi4sLt2uOxWKhe/fu2LZtG7p06YKFCxfiw4cPmDBhAjp37gx1dXU4OjoiMzOT\nezwLCwv88MMPMDc3h5qaGiZOnIjs7GzMnj0b7du3x7Bhw8TaAiXSgyoVIrDhw4cjLy8PT58+BYfD\n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\nrkJggg==\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x6462910>"
+ ]
+ }
+ ],
+ "prompt_number": 29
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.4-3 Page Number 662"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Number of Trays in Stripping Tower\n",
+ "import matplotlib.pylab as plt\n",
+ "#Variable Declaration\n",
+ "xe = np.array([0.000,0.130,0.258,0.411,0.581,0.780,1.000])\n",
+ "ye = np.array([0.000,0.261,0.456,0.632,0.777,0.900,1.000])\n",
+ "P= 101.3 #Total tower pressure in kPa\n",
+ "F = 400.0 #Feed rate in kmol/hr\n",
+ "xFA = 0.70 #Mole fraction of benzene in feed \n",
+ "xFB = 0.30 #Mole fraction of toulene in feed\n",
+ "W = 60.0 #Bottoms product rate in kmol/hr\n",
+ "xWA = 0.10 #Mole fraction of benzene in bottoms\n",
+ "\n",
+ "#Calculations\n",
+ "x = np.arange(0.,1.,0.01)\n",
+ "\n",
+ "f = interp1d(xe,ye, kind='cubic')\n",
+ "y = f(x)\n",
+ "plt.title('McCabe Thiele Diagram')\n",
+ "plt.grid(True)\n",
+ "plt.plot(x,y,'k-')\n",
+ "plt.text(.05,0.6, 'Equilibrium Curve')\n",
+ "plt.text(xFA+0.01,xFA-0.1, 'Feed Line')\n",
+ "plt.text(xFA,xFA+0.2, 'q-Line')\n",
+ "\n",
+ "plt.plot(xW,xW,'ro')\n",
+ "plt.annotate('$(x_W,y_W)$', xy=(xW,xW), xytext=(xW,xW-0.02))\n",
+ "plt.xlabel('Liquid mole fraction, x')\n",
+ "plt.ylabel('Vapor mole fraction, y')\n",
+ "xWB = 1.- xWA\n",
+ "D = F - W\n",
+ "yDA = (F*xFA-W*xWA)/D\n",
+ "plt.annotate('$(x_F,y_D)$', xy=(xFA,yDA), xytext=(xFA+0.02,yDA+0.02))\n",
+ "plt.plot(xFA,yDA,'ro')\n",
+ "plt.plot([0,1],[0,1])\n",
+ "plt.plot([xFA,xFA],[0,1],'k-')\n",
+ "plt.plot([xFA,xWA],[yDA,xWA],'k-')\n",
+ "plt.plot(xWA,xWA,'bo')\n",
+ "x1 = xFA\n",
+ "y1 = yDA\n",
+ "n = 0\n",
+ "m = (yDA-xWA)/(xFA-xWA)\n",
+ "c = yDA - m*xFA\n",
+ "j = 0\n",
+ "while x1>xW:\n",
+ " y2 = y1\n",
+ " ff = lambda x: y1 -f(x)\n",
+ " sol = root(ff,0.2)\n",
+ " x2 = sol.x[0]\n",
+ " plt.text(x2, y2+0.02, str(n+1)) \n",
+ " plt.plot([x1,x2],[y1,y2],'k-')\n",
+ " if x2 > xW:\n",
+ " n = n+1\n",
+ " else:\n",
+ " dxt = x1 - x2\n",
+ " dx = x1 - xW\n",
+ " n = n + dx/dxt\n",
+ " if x2>xW and x2<xF:\n",
+ " j = j + 1\n",
+ "\n",
+ " x1 = x2\n",
+ " ff = lambda y: x1 - (y - c)/m\n",
+ " sol = root(ff,0.5)\n",
+ " y2 = sol.x[0]\n",
+ " plt.plot([x1,x2],[y1,y2],'k-')\n",
+ " x1 = x2\n",
+ " y1 = y2\n",
+ "#Results\n",
+ "print \"Overhead product rate is\", round(D,2),\"kmol/hr\"\n",
+ "print \"Number of equilibrium satges including reboiler for required separation:\",round(n,1)\n",
+ "print \"Number of equilibrium satges excluding reboiler for required separation:\",round(n-1,1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Overhead product rate is 340.0 kmol/hr\n",
+ "Number of equilibrium satges including reboiler for required separation: 5.3\n",
+ "Number of equilibrium satges excluding reboiler for required separation: 4.3\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEZCAYAAACTsIJzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXk81dkbxz9o0UIllKJI+yKKSmkGlZKR0qKNyGibFlLT\nMjVlSsu074vRysjWZMpSKYoihFQqJSJMKsq+XPf8/ujnIsu9rrty3q+X18v3fs8957nP93u+z/d5\nnrNIEEIIKBQKhUL5P5LCFoBCoVAoogU1DBQKhUKpATUMFAqFQqkBNQwUCoVCqQE1DBQKhUKpATUM\nFAqFQqkBNQwUsSA0NBQqKioCaUtSUhJv376t85y7uzsmT57MUT3W1tbYunUrL0WrwdSpU3H58mW+\n1U9puVDDQOEIVVVVtG3bFp8/f67xuZaWFiQlJZGWlsa2jrKyMmzfvh39+/dHx44doaamBltbW7x7\n945fYtdi165dkJGRgYyMDNq1a4dWrVqxjocNG8b2+wsWLMDNmzc5aktCQgISEhJcySkpKYmOHTtC\nRkYG8vLymDhxIry8vGqUCQgIgKWlJVf1UygNQQ0DhSMkJCTQp08feHh4sD57+vQpiouLOX74zZo1\nCzdu3ICHhwfy8vLw5MkTaGtr486dO/wSuxabN29Gfn4+8vPzcfr0aYwdO5Z1/PTpU56315T5owkJ\nCcjPz0dSUhKsra2xcuVK/PHHHzyUrm4YDAbf26CINtQwUDhm4cKFuHTpEuv44sWLsLKyqvHwKy4u\nhqOjI1RVVdG5c2eMHz8eJSUlCA4ORnBwMPz8/DBy5EhISkpCVlYWy5cvx+LFiwEA58+fx+DBgyEr\nKwt1dXWcPXu2lgy7d++GgoIC1NTU8Pfff7M+Ly0txbp169C7d290794dy5cvR0lJSYO/hxBS74P7\n9u3b6N+/P7p06YKVK1eyPr9w4QLGjx/POn758iUmTZqErl27YuDAgfD29q63vRs3bkBTUxNdunTB\nuHHjODZEcnJyWLhwIU6dOoXdu3cjNzcXAKCvrw9XV1cAQHJyMgwNDSEvLw8FBQUsXLgQX79+ZdUR\nGxsLLS0tyMrKYs6cObCwsGCFuUJDQ6GsrIw///wTSkpKsLW1xZcvX/DTTz9BUVERcnJyMDU1RUZG\nBqs+fX19bN26FePGjYOMjAymTZuGT58+YcGCBejUqRNGjRolUE+QwluoYaBwzJgxY5CXl4eXL1+i\noqICnp6eWLhwYY0y69atQ1xcHCIiIpCTk4N9+/ZBUlISwcHBGD16NHr27Flv/d26dYO/vz/y8vJw\n/vx5ODg4IC4ujnX+v//+w+fPn5GZmYmLFy9iyZIlSEpKAgBs3LgRb968wZMnT/DmzRtkZGQ06e3a\n398fMTExSEhIgJeXV53ho8LCQkyaNAkLFy7Ex48fceXKFaxYsQIvXryoVTYuLg62trZwcXFBTk4O\nli5dimnTpqGsrIxjmaZNmwYGg4GoqCgAtUNVv/32G7KysvDixQukp6dj+/btAL6F8GbMmIHFixcj\nNzcX8+bNw7Vr12p898OHD8jNzUVaWhrOnDkDJpMJW1tbpKWlIS0tDe3atathIAHA09MTbm5uyMjI\nQHJyMnR1dWFra4ucnBwMGjQITk5OHP82imhBDQOlUVhaWuLSpUu4ffs2Bg8eXONBz2Qycf78eRw5\ncgRKSkqQlJTEmDFj0KZNG3z+/Bndu3dvsO6pU6dCTU0NAPDDDz/AyMgIYWFhNcrs2LEDrVu3xg8/\n/AATExN4eXmBEAIXFxccPHgQnTt3RseOHbFp0yZcuXKF69+5ceNGyMrKQkVFBQYGBoiPj69V5saN\nG1BTU8OiRYsgKSkJTU1NmJub1/AaKh++Z8+exdKlS6GjowMJCQlYWVmhbdu2iIyM5Fim1q1bQ15e\nHjk5ObXOqaurY8KECawyDg4OuHfvHgAgMjISFRUVWLVqFaSkpDBjxgyMGjWqxvclJSXh5OSE1q1b\nQ1paGnJycpgxYwakpaXRsWNHbN68mVVf5e+ysbGBmpoaZGVlYWxsjP79+8PQ0BBSUlKYPXt2DaNO\nES9aCVsAivggISEBS0tLjB8/HikpKbXCSJ8+fUJJSQnU1dVrfVdeXh6vX79usP7AwEA4OTnh9evX\nYDKZKCoqgoaGBut8ly5d0K5dO9Zx7969kZWVhU+fPqGoqAgjR45knSOEgMlkcv1bqxux9u3bo7Cw\nsFaZd+/e4dGjR+jSpQvrMwaDASsrqzrLXrp0CceOHWN9Vl5ejqysLI5lKi8vx8ePHyEnJ1fr3IcP\nH7BmzRqEh4cjPz8fTCaTVS4zM7OWp/b9CC8FBQW0adOGdVxUVAQHBwfcvHmTFboqKCgAIYRl7Lp1\n68YqLy0tDUVFxRrHBQUFHP82imhBPQZKo+jVqxf69OmDwMBAmJub1zgnLy8PaWlpvHnzptb3Jk6c\niKioqBpx6uqUlpZi5syZ+PXXX5GdnY3c3FxMnTq1huHJzc1FUVER6/jdu3fo0aMH5OXl0a5dOyQm\nJiI3Nxe5ubn48uUL8vLyePSr66ZXr1748ccfWW3m5uYiPz8fJ06cqLPsb7/9VqNsQUEBLCwsOG7P\nz88PrVq1qvW2D3xLqktJSeHZs2f4+vUrLl++zDKMSkpKtfT+/Siy7wcQHDhwAElJSYiKisLXr19x\n7969BnMy3I6+oogm1DBQGo2rqyvu3r1b4+0d+BaOWLx4MdauXYusrCxUVFQgIiICZWVlmDBhAiZN\nmoQZM2YgNjYWDAaDNTLo/PnzKC8vR1lZGeTl5SEpKYnAwEDcunWrVtvbtm1DeXk5wsLC4O/vj9mz\nZ0NCQgJ2dnawt7fHx48fAQAZGRl1fp8b6nsgmpiYICkpCW5ubigvL0d5eTmio6Px8uXLWt+zs7PD\n6dOnERUVBUIICgsL4e/v3+BbdeV3c3Jy4O7ujpUrV2Ljxo01PJRKCgoK0KFDB8jKyiIjIwP79u1j\nndPV1YWUlBSOHz8OBoMBPz8/REdHN/ibCwoK0K5dO3Tq1Ak5OTl15guq64Su3t+8oIaB0mj69OmD\nESNGsI6rvy3u378fw4YNg46ODrp27YpNmzax3lx9fHwwdepUWFhYoHPnzhg2bBhiY2MxadIkdOzY\nEUePHsWcOXMgJycHDw8PmJmZ1WhXSUkJXbp0QY8ePWBpaYkzZ86gf//+AIC9e/eib9++GDNmDDp1\n6oRJkyaxEtP1Ud88g+8/q16u+v8yMjK4desWrly5gp49e0JJSQmbNm1iJZSrlx05ciRcXFywcuVK\nyMnJoV+/fjVGeNXF8OHDISMjg379+uHcuXM4fPgwK6H8Pdu2bUNsbCw6deoEU1NTzJw5k9V2mzZt\ncPXqVbi6uqJLly5wd3fHTz/9VCN09P1vtre3R3FxMeTl5TF27FgYGxvXqZeGdEm9CPFFgp8b9Sxe\nvBj+/v5QVFSsd2je6tWrERgYiPbt2+PChQvQ0tLilzgUCuX/jB49GitWrMCiRYuELQpFBOGrx2Bj\nY4OgoKB6zwcEBODNmzd4/fo1zp49i+XLl/NTHAqlxXL//n38999/YDAYuHjxIp49e4YpU6YIWyyK\niMLXUUnjx49Hampqvef//fdf1hvL6NGj8eXLF3z48KHGaAcKhdJ0Xr16hTlz5qCwsBDq6urw8fGh\n/YxSL0IdrpqRkVFj2JyysjLev39Pb1gKhcfY2dnBzs5O2GJQxAShJ5+/T3HQhBWFQqEIF6F6DD17\n9kR6ejrr+P3793UumdCzZ09kZmYKUjQKhUIRe9TV1eucV8QOoXoM06ZNYw3Zi4yMROfOnesMI2Vm\nZrLGhLf0v23btgldBlH5o7oQLV0AELoMoqILfv6lpqbi7NmzmDlzJrp06YKhQ4fC0dERJ048xLBh\nFTAxIcjI+FY2OTmZq2czXz2GefPm4d69e/j06RNUVFTg5OSE8vJyAMDSpUsxdepUBAQEoG/fvujQ\noQPOnz/PT3GaBQ0l81saVBdVUF1U0dx0UVRUhNDQUNy8eRM3b97E58+fYWRkBFNTUxw7dgxduyrB\n2RnYvh3Yvx+wtASaGpHnq2GovnZ/fRw/fpyfIlAoFIpYQQjBixcvEBQUhKCgIEREREBLSwtTpkyB\nu7s7a3MsAIiLA6ZMAVRUgPh4oEcP3shAF9ETM6ytrYUtgshAdVEF1UUV4qiLvLw83LlzB4GBgQgK\nCoKEhASmTJmCFStWwMfHB7KysjXKl5UBzs7AqVO88xKqw9eZz7xCQkICYiAmhdKiof2UcwgheP78\nOQICAhAQEIDHjx9DV1cXxsbGMDY2xoABA+odoRkXB1hbf/MSzp5t2Evg9poIfbgqpXGEhoYKWwSR\ngeqiCqqLKkRVFwUFBfj333+xbNky9O7dG6ampkhNTcW6devw33//4datW3BwcMDAgQPrNAplZcC2\nbcDkyYCjI3D9Ou9CR99DQ0kUCoXCJ968eQN/f38EBATg4cOHGDVqFKZOnYqbN2/WawDqorqXwMtc\nQn3QUBKFQuEJtJ9+20wpPDwcN27cgL+/P75+/YqpU6fip59+woQJE2rlCtjR1FwCt9eEegwUCoXS\nBD5//ozAwEDcuHEDN2/eRN++fWFiYlJrBFFjEbSXUB2aYxAzRDV+KgyoLqqguqhCELpISkrC/v37\n8cMPP0BNTQ3e3t6YOHEiEhMTER0dje3bt2PkyJFcGQVB5hLqg3oMFAqFwoaKigpERkbCz88P//77\nL/Ly8mBqaooNGzbA0NCw1m6G3CJML6E6NMdAoVB4QnPrp8XFxQgODsa1a9dw48YNdOvWDWZmZjAz\nM8OIESO4DhHVBb/mJXB7TahhoFAoPKE59NPc3Fz4+/vjn3/+QXBwMLS0tFjGoE+fPnxpszHzEhoL\nncfQQqCx5CqoLqqguqiisbrIysrCqVOnYGRkhN69e8Pb2xumpqZITk5GaGgoHBwc+GIURCGXUB80\nx0ChUARKx44dUVBQUOOzM2fOoH379rC0tBSIDKmpqbh69Sp8fX2RmJiIqVOnYunSpfjnn3/QoUMH\nvrcvKrmE+qChJAqFwhM47acyMjLIz88XgEQ1ef36NXx8fODr64t3797BzMwMM2fOxIQJE9CmTRuB\nyMDvNY6+h85joFAoQsfZ2RmXLl2CoqIiVFRUMHLkSDg6OrL93vbt2yEjIwNHR0fo6+tjzJgxCAkJ\nwZcvX+Dq6go9PT1UVFRg48aNuHfvHkpLS/HLL79gyZIlDdb76tUreHt7w9vbG9nZ2TA3N8eff/6J\nH374Aa1aCfbxJ+peQnVojkHMoLHkKqguqhAVXXh6euLJkycICAhAdHQ0x0s+SEhIsMpKSEigoqIC\njx49wuHDh+Hk5AQAcHV1RefOnREVFYWoqCi4uLjUuffC5cuX4ezsjOHDh8PAwAAfPnzAsWPH8P79\ne5w4cQKGhoYCNQqinEuoD+oxUCgUnmFubg5paWlIS0tj2rRpXIeAzc3NAQAjRoxgPfxv3bqFp0+f\nwsfHB8C3parfvHkDVVVVvH37Fl5eXvD09ERaWhrmz5+P48ePY9y4cTwdVtpYxMlLqA71GMQMfX19\nYYsgMlBdVCEquqhuCAghKC4uhpaWFrS0tHD27FmO62nbti0AQEpKCgwGg/X58ePHERcXh7i4ONy/\nfx8JCQkYNWoUdHV1kZaWhsOHDyM7OxvHjh3D+PHjhWYUxNFLqA71GCgUCs+4du0aNm3ahPLycty4\ncQPLli1DXFwcR99l511MnjwZhw8fxuvXr+Hl5YX4+HiYmZlh586dAg8PNYS4egnVoR6DmCEqsWRR\ngOqiClHRhYWFBYYPH46pU6dCR0enzod9UVERVFRUWH+HDh0CgAbzER4eHvDz80NwcDA2b96MlJQU\naGlp4dixYzAyMqphFISlC3H3EqojGiaWQqE0CzZv3ozNmzcDACtp/D0VFRUN1hESEgIGg4GbN2/C\nzc0Nubm5uHTpEhYsWAAPDw/IyMjwXO6m0hy8hOrQeQwUCoUnfN9PnZycICMjg7Vr13L0fUII4uLi\n4ObmBg8PD6ioqMDS0hJz5sxBt27d+CV2kxD0vITGQtdKolAoQoXbfpqRkQF3d3dcunQJRUVFWLhw\nIRYsWIABAwbwQUrewc81jngFXSuphSAqsWRRgOqiCnHTRVFREf7++28YGRlh2LBhePPmDU6fPo3k\n5GT88ccfTTIK/NZFc8ol1AfNMVAoFIFACEFERATOnz8PHx8fjB49GosXL4afnx/P9jPgN80tl1Af\nNJREoVB4Qn39NCsrC5cuXcL58+dBCIGNjQ0sLS3Rs2dPIUjJHaKeS6gPulYShUIRGcrLyxEQEABX\nV1eEhYVh1qxZOHfuHHR1dTleJkNUaCleQnVojkHMELdYMj+huqhCVHTx5s0bbNy4Eb169cL+/fth\nbm6O9+/fw8XFBWPHjmUZhdLSUr7JUJ8uSkpKGlVPS8gl1Ac1DBRKM2fx4sXo1q0bhg0bxpf6S0tL\n4eHhAQAYO3YsGAwGQkJCEBYWBmtr61r7G9y4cUMoy26/f/8ewcHBHJWNiwN0dIDHj795CVZW4hE6\n4hU0x0ChNHPCwsLQsWNHWFlZ4enTpzyrNykpCWfPnsWlS5cwfPhwBAcHo6SkhLXOUV1kZWUhJCQE\n8+fP55kcjeHo0aOws7OrN9ktrrmE+qDDVSkUSp2MHz8eXbp04UldZWVl8Pb2xoQJEzB+/HhISUnh\n4cOHuH37NgA0aBQA4Pz585gxYwZPZOEGExMTlnfzPS3dS6gONQxihqjEkkUBqosq+K2LtLQ0bNmy\nBb1798bJkyexZMkSpKenY+/evejbty/H9WRnZ6Ndu3aoqKjA33//jZ07d+LixYv45Zdf8PbtW47r\nefbsGXbu3InIyEgAgLW1NetcQ7pQV1ev5TW15FxCfVDDQKFQ6oTJZOLWrVswMzODlpYW8vLycPfu\nXYSEhMDCwoKr7TArE8BPnjzBzJkz0adPHzCZTMyePRtKSkoc11NUVITWrVuDEIIXL15AQUGB4+9W\nX8abegl1Qw2DmCEq6+6LAlQXVfBSF1+/fsXRo0cxaNAgrF+/HiYmJkhLS2N91hTKy8sBfNuAp23b\ntoiIiIC+vj709fVZcf/ExESYmJjg3r17OHToEGJjY2vVM2rUKMTGxkJXVxeRkZEYN24cgG9bee7f\nvx+hoaE4evRonV5IUVER9RLYQA0DhUIBALx48QK//PILVFVV8eDBA7i6uiI+Ph5LliypNbKIW6Sk\npAAA0dHR+PTpE549ewY1NTWEhYWxyhQUFMDMzAz9+/eHjY0N1NTUWOdSUlJY/7dv3x4AEBkZCV1d\nXQDfPBJTU1Po6+vDzs4OZ86cqSVDbq4k9RLYQA2DmEHj6lVQXVTRkC7mzZuHsWPHIikpCSoqKjh/\n/jzrHJPJhL+/P4yMjGBgYICuXbvi+fPn8PT0hJ6eHs8no1U+zIOCgnD16lWMGzcO//zzT40y4eHh\n6NixI9zd3dG5c2dW4jwjIwMTJ05klevVqxe8vb3x+PFj1uqrYWFhrAR4RkZGDYNWVgb8/jtBUJAM\n9RLYQGc+UyjNnLpG4RQUFODChQs4evQoZGRksGbNGlhYWLAdVdRUlJWVkZubi61bt9Zb5sWLF1i7\ndi3++++/Gp/37NkTrq6uAIC//voL+vr66NmzJ+bMmcMq8/z5c1hYWAAAfH19YWNjA6Bq9nKnTgk4\ncGA0rKx4/MOaGXz1GIKCgjBw4ED069cPe/furXX+06dPmDJlCjQ1NTF06FBcuHCBn+I0C2hcvQqq\niyo41UVaWhrWr18PVVVVhIaG4ty5c4iJiYGVlRXXRuG+vz+2TJ4MANgyeTLu+/vXW9bOzg7e3t71\nnk9ISEBaWhoyMjLQvXv3WucrZ0yrqKigoKAA9+/fx/r16wF8Mwrp6elo1aoVvLy8oK+vj27dVGrk\nEszM7mDp0tlc/c4WBeETDAaDqKurk5SUFFJWVkaGDx9OEhMTa5TZtm0b2bhxIyGEkI8fPxI5OTlS\nXl5eqy4+ikmhtAiio6PJ3LlziZycHHFwcCApKSk8qffejRtks7o6IcC3fgqQzerq5N6NG/V+5/79\n++Tdu3c8ab8hYmMJ0dAgxMSEkIwMQp49e0bi4+P53q4owe2zk28eQ1RUFPr27QtVVVW0bt0ac+fO\nhZ+fX40ySkpKyMvLAwDk5eWha9euIrOht6hC4+pVUF1UUZcumEwmrl+/jh9//BEzZ86Ejo4OUlJS\ncPDgQaiqqvKk3VtHj8I5ORlvqn3mnJyM28eO1fud8ePHo1evXjxpvy5u3w6tc8TRkCFDMHz4cL61\n25zg21M4IyMDKioqrGNlZWU8evSoRhk7OzsYGhqiR48eyM/Ph5eXF7/EoVBaDCUlJXBzc8OBAwfQ\nvn171nBPR0dHODo68rw952r/EwASAKQauWAdr4iLA5YtAwYNajkrofIDvhkGTkYz7Nq1C5qamggN\nDUVycjImTZqEJ0+e1LnZt7W1Nestp3PnztDU1GTFVSvfllrCsb6+vkjJQ49F5/jr1684deoU9u3b\nh759++LkyZPQ19eHpKQkQkJCeN7e+PHjod+/P16+fYvtAFbim1EIBZBcVIRKBPH7y8uB8HB9nDoF\n2NoCRkah6NGDf+2J6nFoaCgrV9skr5DHIS0WERERZPLkyazjXbt2kT179tQoY2xsTMLDw1nHhoaG\nJDo6ulZdfBSTQhF7MjMzya+//krk5OTIwoULSUJCQo3z/Og/nz9/JlOmTCGaQ4eS1b1718gxbGKT\nY+A13+cSKFVwe+35lmPQ1tbG69evkZqairKyMnh6emLatGk1ygwcOJC1DO6HDx/w6tUr9OnTh18i\nNQsq3w4oVBfJyclYunQpBg8ejKSkJDx+/BiXL1/m2/LalcTFxUFbWxuDBw9GdFwcZp44ga3/H5W0\ndfJkTDlyBD+YmPBVBqD+NY5a+n3BE3hsoGoQEBBA+vfvT9TV1cmuXbsIIYScPn2anD59mhDybSTS\nTz/9RDQ0NMjQoUOJu7t7nfXwWUyxIiQkRNgiiAwtVRdPnz4l8+fPJ127diW//fYbyc7OblAXvOw/\nFy5cIPLy8sTT05Ov7bCjIS+hpd4XdcHtNaH7MVAoYkJMTAycnZ0REREBe3t7rFixArKysmy/x4v+\nU1ZWBnt7e9y5cwdXr17FkCFD+NIOezma134J/Ibu+UyhNFMiIiKwY8cOPH36FOvXr4e7uztraQlB\n8P79e8yePRvdu3dHVFQUOnXqJLC2q9MS914WFnStJDGDxk+raO66CAsLw6RJkzBv3jxMnz4db968\nwerVq+s0CvzSRWhoKEaNGgUzMzP4+voKxSg0diXU5n5fCALqMVAoIkZYWBicnJzw9u1b/Pbbb7Cy\nskLr1q0FKgMhBAcPHsS+ffvg5uZWY/E6QUK9BOFAcwwUShNJT0+HlZUVsrOzISEhgSVLlmD16tWN\nrufBgwfYtm0b3r59iy1btsDS0pInBqGx/Sc/Px+2trZISUmBj48PevfuzZd2GoLmEngDzTFQKEKi\ndevWOHToEDQ1NVFQUICRI0di0qRJHG9q8+jRI/z+++949eoVtmzZgkWLFgncQ6jk1atXmDFjBsaN\nG4ewsDBIS0sLXAbqJQgfmmMQM2j8tApR0UX37t2hqakJAOjYsSMGDRqEzMxMtt+Lj4+HqakpZs2a\nBXNzcyQlJeHnn3/myijwQhf//PMPxo8fDwcHB7i4uAjcKPBqVzVRuS/EGeoxUCg8JDU1FXFxcRg9\nenS9ZV6+fIlt27bh/v372LRpE7y9vYXyZl5JRUUFtmzZgr///hv+/v7Q0dERuAzUSxAxmj6Fgv+I\niZiUFk5+fj4ZOXIk+eeff+o8/+7dO2JjY0MUFBTInj17SEFBgUDkaqj/ZGdnk4kTJ5IJEyaQ7Oxs\nvrVTH6WlhPz+OyEKCoRcvEgIk9kkESjfwe2zk4aSKBQeUF5ejpkzZ2LhwoWYPn16jXMfP36Evb09\ntLS00KNHDyQlJWHDhg0820eZW6Kjo6GtrQ1tbW0EBQVBQUFBoO3HxYHuvSyisDUM5ubm8Pf3B5PJ\nFIQ8FDbQ+GkVoqILQghsbW0xePBg2Nvbsz4vKCjAjh07MGjQIFRUVCAxMRE7d+5E586deS5DY3Xx\n119/wcTEBIcPH8bu3bsFug8Kr3IJ9SEq94U4w/ZuWL58Oc6fP49Vq1Zhzpw5sLGxwYABAwQhG4Ui\nFjx48ABubm7Q0NCAlpYWCCHQ09ODr68vDA0NERUVJTKLQ5aUlGDVqlV48OAB7t+/j4EDBwq0fZpL\nEBM4jTnl5uaSU6dOkZ49exJdXV1y7tw5UlZWxlX8qrE0QkwKRWgwmUxy9epV0r9/fzJx4kTy+PFj\nYYtECKnqP+/evSPa2tpk9uzZJC8vj2/t1AXNJQgHbp+dHE1w+/z5My5fvgw3Nzf06NED8+fPR3h4\nOJ49eyYQt41OcKOIOo8ePYKjoyPy8vKwb98+GBkZcbRZlSCQkJDA7du3sXDhQqxfvx5r167li2z1\n9dPqXsLZs9RLECRcPzvZWY7p06eTgQMHEmdnZ5KZmVnj3IgRI7iyRo2FAzFbDHRJ4SpEQRdv374l\nFhYWpGfPnuTcuXOEwWAIRY76dMFkMgkAoqSkRO7evctXGb7vp8LyEkThvhAVuH12ss0xrFq1CoaG\nhnWee/z4ceMtEYXSDPj69SucnZ3h6uqKnJwcAMDixYuxePFiIUtWN1FRUVBWVhZYezSXIN6wHZVU\nn1GgCIfKfV4pwtEFg8HA6dOnMWDAAHz+/BnPnj0D8G1kkij9PX/+HP3798eyZctQUlIiMKPA7xFH\nnED7SNOhM58pFA65e/cu7O3tIScnh8DAQGhpaQlbpDrx9vbGihUrsG/fPlhbWwu0bR0d6iU0C7gK\nQAkYMRFTIND4aRWC0sXbt2+Jubk5UVVVJb6+voT5XbBcFO7PkJAQUl5eThwdHYmqqiqJjY0VWNuV\nuQQAIjHiiPaRKri9Nxs98zkrKwulpaW8tk8UishRWFiIrVu3QltbGyNGjMCLFy9gbm4uMqONqpOT\nk4OJEyei4IzYAAAgAElEQVTi2bNniImJEZg3U332MkBnLzcbGmtJDA0NSe/evYmjoyNXlogbuBCT\nQuEaJpNJPD09iYqKCpk3bx5JT09vsLyw78+IiAiirKxMtm7dKrBRUXWNOBK2Hii14faaNDrHcOfO\nHTCZTLx48YLXNopCETrPnz/HqlWr8PnzZ7i5ueGHH34Qtkj1QgjB6dOnsW3bNri6usLU1FQg7dIR\nR80fjkJJFRUVyMzMRFpaGtLS0vD+/XsMGTKE37JR6oCuA1MFL3WRn5+PdevWQV9fH+bm5nj8+LFI\nG4Xi4mLY2Njg5MmTePDgAWRkZPjepiiMOOIE2keaDluP4dixY3BycoKioiKkpKRYnz99+pSvglEo\ngoAQAm9vb6xdu5YVo+/WrZuwxWqQlJQUmJubY9CgQYiMjESHDh2QkZHB1zapl9DCYBdr6tOnD/n0\n6RNXcSpewYGYFEqjSUpKIkZGRmTo0KEkLCyM63oEeX8GBgYSRUVFcuTIkVqjo/hBY2Yv034qenB7\nTdiGknr16gVZWVl+2ycKRWCUlpbCyckJurq6MDIyQmxsLPT09IQtVoMwmUzs2LEDtra28PX1xerV\nq/k+Oorul9ByYRtKUlNTg4GBAUxMTNCmTRsA3xZmWrt2Ld+Fo9QmNDSUzuz8P9zo4u7du1i+fDkG\nDx6M2NhY9OrViz/C8ZAvX77A0tISubm5iImJgZKSUq0yvLwvysoAZ2fg1Clg/37A0lK8DALtI02H\nrWHo1asXevXqhbKyMpSVlYEQIpLjuCmUhvj06RPWrVuHkJAQHDt2DNOmTRO2SByRkJAAc3NzmJiY\nYN++fayXM35BcwkUAJwHoPLy8viyhjsnNEJMCqUGTCaTXL58mXTr1o3Y29uT/Px8nrfBr/vT3d2d\nyMvLEzc3N77UXx1erIRK+6nowe01YesxPH36FFZWVvj8+TMAQEFBARcvXsTQoUP5arAolKaSkpKC\nZcuW4cOHD7h+/Tp0dHSELRJHlJeXY926dfD398edO3egoaHB1/aol0D5HrbJ5yVLluDgwYOsOQwH\nDhzAkiVLBCEbpQ7oGO0q6tNFRUUFDh06BB0dHRgaGiI6OlpsjEJWVhYMDAzw9u1bxMTEcGwUuLkv\nxGVeQmOhfaTpsPUYioqKYGBgwDrW19dHYWEhX4WiULjl+fPnsLW1hbS0NCIiItCvXz9hi8Qx4eHh\nsLCwwNKlS7FlyxZISjZ6KTOOoV4CpUHYxZrMzMzIH3/8QVJSUsjbt2/Jjh07yPTp07mKW3ELB2JS\nWjhlZWVkx44dRF5enpw6dYpUVFQIrO2m3p9MJpMcOXKEKCoqkoCAAB5JVTf83FWN9lPRg9trwvaV\n5Ny5c8jOzoa5uTlmzpyJjx8/4ty5c/y2V3xBSkoKWlparL8///yT67rGjRsHAEhNTcWwYcMAADEx\nMVizZg0AYPv27Thw4ECj6uI1//33H+bOnYu+fftCW1sbJiYmeP36NV/aEibx8fEYNWoUHj58iNjY\nWCxbtoyvb9u8pLCwEAsXLsT58+cREREBY2NjvrUljHkJ3/e5tLS0JtfZsWNHjj8/c+YMLl++3OQ2\nWxw8NlB8gVdiduzYkSf1VCclJYUMHTq01ufbt28n+/fvb/C75eXljW6P07XmmUwmGTNmDDlz5gzr\nsydPnjRqhq8g37q54datW2Tbtm1EQUGBXLhwQSAzgeuC2/vz9evXZNiwYcTKyooUFhY2SYaG7gtB\n7b1clx740efqq7Pyc7ofQxXc3pv1vlZVvvmamprW+hOXMeCcEhQUhEGDBmHkyJFYvXo1a5XK79/6\nhw4dynrjqevtJDQ0tMYKl0+ePMHYsWPRv39//PXXX6wy48ePh5mZGWtkV2Vd339/5cqVuHjxIgBA\nVVUVmzdvhp2dHbS1tREbGwsjIyP07dsXZ86cqSVLSEgI2rRpU2OggIaGBvT09Ni2s3HjRowcORL7\n9u3D6NGjWeVSU1NZydDHjx9DX18f2tramDJlCv777z/2iv6OkpISjB49Gpqamhg8eDA2bdrE8Xef\nPHmC5cuXIyYmBnFxcVi0aJFYza+5fv06xo4di+XLl+PChQto3749X9oRxdnL9d07ycnJMDY2hra2\nNn744Qe8evUKwLfRZbq6utDQ0MCWLVsa1Vb1Pqyvr4+NGzdi9OjRGDBgAMLDwwF8G6ywfv16jBo1\nCsOHD8fZs2d5+GvFk3qTz1ZWVgAAR0fHWuc47YBBQUGwt7dHRUUFfv75Z2zYsKFWmdDQUDg4OKC8\nvBzy8vJ8HVFQXFxcYwOTzZs3w9TUFEuWLEFISAjU1dVhYWHB+n3f/87qx+x0QAhBQkICHj16hIKC\nAmhpacHExAQAEBcXh+fPn6N3794N1iUhIVFDlt69e+P169dYu3YtrK2tERERgeLiYgwdOhRLly6t\n8d1nz55h5MiRnKilVjvy8vJ4/P+dV65cuYLU1FSoqqrC09MTc+fOBYPBwKpVq3D9+nV07doVnp6e\n+O233+Dq6spRe5VIS0sjJCQE7du3B4PBgJ6eHsLDwxtcnoLBYGDv3r04cuQI/vzzT7EzCBUVFdi+\nfTsuXLgAPz8/6Orq8qTe72f6isrs5ep9rk+fPvD09Kz33lmyZAnOnDmDvn374tGjR1ixYgXu3LmD\nNWvW4JdffsHChQtx8uRJtm1W18X393ZFRQUePXqEwMBAODk54fbt23B1dUXnzp0RFRWF0tJS6Onp\nwcjICKqqqvxQiVhQr2GofKjEx8fD3t6+xrnDhw/jxx9/bLDiiooKrFy5EsHBwejZsyd0dHQwbdo0\nDBo0iFXmy5cv+OWXX3Dz5k0oKyvj06dPTfktbGnXrh3i4uJqfBYfHw81NTWoq6sDABYuXMiTNwYJ\nCQlMnz4dbdu2Rdu2bWFgYICoqCh07twZo0aNYhmFxlDpqQ0bNgyFhYXo0KEDOnTogLZt2yIvL6/G\nmlZNeVhaWFiw/p8zZw48PT2xYcMGeHl5wcvLCy9fvsTz588xceJEAN+udQ8uh7VUvimXlZWhoqIC\ncnJy9ZZ9+fIlrKys0KlTJzx+/BgqKipctSkscnJysGDBAhQXFyMmJoZvq7iK0oij7/vcs2fP6rx3\nCgsL8fDhQ8yePZtVtqysDADw8OFD/PPPPwC+9c+6XjA5xdzcHAAwYsQIpKamAgBu3bqFp0+fwsfH\nBwCQl5eHN2/etGjDwDZDVxliqM6FCxfYVhwVFYW+fftCVVUVrVu3xty5c+Hn51ejzN9//42ZM2dC\nWVkZACAvL8+h2Lzj+wfot7DcN1q1agUmk8k6LikpaVJblQnRDh061Hn++/aKi4trnG/bti1CQ0Mh\nKSlZY2kESUlJMBiMGmWHDBnCeutvbDvV5bOwsICXlxdev34NCQkJqKurgxCCIUOGIC4uDnFxcUhI\nSEBQUFBDP71emEwmNDU10a1bNxgYGGDw4MF1ljl69Cj09PRgY2ODW7duQUVFRazGq8fFxUFbWxuD\nBw9GcHAwz41CaGioWMxLqO/eqaioQJcuXVifV3rV3NDQfdG2bVsA35Li1fvM8ePHWe0mJyezDFdL\npV7D4OHhAVNTU6SkpNTIL+jr66Nr165sK87IyKjxRqesrFxrzfjXr18jJycHBgYG0NbWFsrogQED\nBiA1NRVv374F8O13VxoLVVVVxMbGAgBiY2ORkpLCcb2EEPj5+aG0tBSfP39GaGgodHR0ahie7+nd\nuzcSExNRVlaGL1++4O7du/XWzQ5DQ0OUlpbCxcWF9VlCQgLCw8OhqqrKUTvAN/dfSkoKO3bswNy5\ncwF809nHjx8RGRkJ4NtM3cTERLYy1YWkpCTi4+Px/v173L9/v1anfv/+PYyMjODh4YGIiAgsX75c\nrEJHwLeXKyMjI+zZswcHDhxAq1aN3jiRLa9fi14uoS7qu3dkZWWhpqbGemuvDMUC30btXblyBQDg\n7u7e6DbZ9ZfJkyfj5MmTLEORlJSEoqKiRrfTnKj3Dh07diyUlJTw8eNHrFu3jqVcWVlZjmZjctJ5\ny8vLERsbizt37qCoqAi6uroYM2YM3yYlfZ9jMDY2xq5du3D27FmYmJigffv2GD9+PJKTkwEAM2fO\nxKVLlzB06FBWwqqS+vIN1eOZGhoaMDAwwKdPn/D777+je/fuePXqVb25CxUVFcyZMwdDhw6Fmpoa\nRowYUes36Ovr4+LFixzlO/755x/Y29tj7969kJaWhpqaGg4fPgxlZWW27VTHwsICv/76K3bu3AkA\naNOmDXx8fLB69Wp8/foVDAYDDg4Odb7tc0qnTp1gYmKCmJgYVoz4ypUrWL16NdasWYMNGzbUeqCK\n+gqapaWlcHBwwJ07dxAaGsqXXQ+rcgn6IrkS6vf3ZkP3jru7O5YvX46dO3eivLwc8+bNg4aGBo4c\nOYL58+dj7969MDMzq/d+LyoqqvEyWrkCdEM5PAD4+eefkZqaihEjRoAQAkVFRVboqqUiQdiY07dv\n30JJSQnt2rUD8O3h+uHDB7bxt8jISGzfvp0VYti9ezckJSVrxAf37t2L4uJibN++HcC3CzRlyhTM\nmjWrppASEli0aBGrzc6dO0NTU5P1YKh8y+TF8b1797Bp0ybs2rWLL/XT46rjoUOHolWrVoiPj0dp\naSmcnZ2xbds2FBcX48iRI0hPT4e7uzvy8/NFQt76jiUkJBASElLj/MePH3HgwAEoKSnB1tYWHTt2\n5Hn7nTrpw9oaaN8+FI6OwKxZwtWHgYEBCCFCvx4t+Tg0NJQV6ldVVYWTkxNHEYZasBvPOnLkSFJa\nWso6LikpISNHjmQ7Dra8vJz06dOHpKSkkNLSUjJ8+HCSmJhYo8yLFy/IhAkTCIPBIIWFhWTo0KHk\n+fPnteriQEyeERoaSkxNTQXWXmNpTmO0ExISiJaWFhk+fDgZNmwY+fPPP0lYWBhRVVUly5YtYzu2\nX1R08f39GRISQpSUlMju3bv5MhekrnkJoqALQfbThhAFXYgK3F4TtsFOBoNRI9HZtm1blJeXszU4\nrVq1wvHjxzF58mRUVFTA1tYWgwYNYo25X7p0KQYOHIgpU6ZAQ0MDkpKSsLOza1I4ghf8+OOPbEdc\nUXjDsGHDWDkcBoOBHTt2YPbs2Th79myNeRbiAiEEBw8exL59++Dm5saXBKYojTiiNGPYWY4JEyaQ\na9eusY6vXbtGDA0NubJC3MKBmBQx5u3bt0RXV5dMmjSJZGZmClucRgOA5OXlkdmzZxNtbW2SmprK\n8zYENXu5KdB+Knpwe03Y5hjevHmDBQsWIDMzE8C30UWXL19G3759+W60KpGQkOAuTkYReSonPG3Y\nsAEODg5is8ZRdSQkJDBo0CCMGzcOx44dg7S0NE/rr+4lnD0rul4C7aeiB9fXhFMLkpeXx5fdrzih\nEWI2e5pL/LSwsJD8/PPPpG/fviQmJoarOkRBF1evXiUAyNmzZ3led2O8BFHQhaj0U1HQhajA7TXh\naED1jRs3kJiYWGOC1++//954K0Sh4NueCXPmzGHNfdDW1hayRE3Hzs6Op/XRXAJFmLD125cuXQov\nLy8cPXoUhBB4eXnh3bt3gpCNUgeVQ9TEEUIIzp07B319faxfv571mbj9ZWdnY+LEiZgwYQKys7N5\nGj7hdvayON8XvIbqoumwzTEMGzYMT58+hYaGBhISElBQUIApU6awViYUBDR2Kf4UFBRgxYoVePz4\nMby9vTF48GCxvK7R0dGYNWsW5s+fjx07dvB0FrO45BLqQxyvZ3OH22vC1mOonNjWvn17ZGRkoFWr\nVlwtsUzhDZWTWcSJ58+fQ0dHB61atUJUVBTPhiQLWhd//fUXTExMcPjwYezevZtnRoEXaxyJ433B\nL6gumg7bO9vU1BS5ublYv349a8VVXsdTKc2Xy5cvY+3atdi/fz8WLVokbHG4oqSkBCtXrsTDhw9x\n//59DBw4kGd101wCRRRpMJTEZDIRERHB2nqypKQEJSUl6Ny5s8AEBKiLKo6UlJRgzZo1CA0NhY+P\nD2v70+qIw3V99+4dZs2aBTU1Nbi6ukJGRoYn9YrKfgm8RByuZ0uDL6EkSUlJ/PLLL6xjaWlpgRsF\niviRmpoKPT095ObmIjo6uk6jIA4EBwdj9OjRmDt3Ljw9PXlmFERxVzUKpTpscwwTJ06Ej48PfRMQ\nEUQ9fhoUFITRo0djwYIF8PT0rLF5EK/hly4IIdizZw+srKzg4eEBR0dHniz1zc/9EkT9vhAkVBdN\nh22O4fTp0zh48CCkpKRYMzolJCSQl5fHd+Eo4gOTyYSzszNOnz4NHx8fjB8/XtgicUVeXh6sra2R\nmZmJqKgo1iZSTYXmEijiRL05hgcPHmDcuHEoKSnh+RT/xkJjl6LN169fYWVlhc+fP8Pb2xtKSkoc\nfU/UrmtiYiJmzJgBQ0NDHD58mLXbV1NojrmE+hC160nhQ45h9erVAL5t2EOh1EdiYiJGjRoFFRUV\n3L17l2OjIGp4eXnhxx9/xKZNm3Dq1CmeGAWaS6CIK/WGklq1agU7Ozu8f/8eq1evrmF1JCQkcPTo\nUYEISKlJaGioyMzsvHbtGuzs7LBv3z5YW1sLvH1e6ILBYGDDhg24evUqbt26VWOHP24RhpcgSveF\nsKG6aDr1GoYbN27gzp07uHXrFkaOHAlCCMstEbc9dym8hclk4o8//oCrqysCAgKgo6MjbJG44sOH\nD7CwsIC0tDRiYmI42sucHTSXQGkOsF0SIz4+HpqamoKSp05o7FJ0yM/Ph5WVFbKzs+Hr64vu3btz\nXZcwr2tkZCRmz54NGxsbbNu2DVJSUk2qryXlEuqD9lPRg29LYgjbKFBEh5SUFIwdOxZdu3bF3bt3\nm2QUhAUhBKdOncK0adNw8uRJ/PHHH002CjSXQGluiN+uKC0cYY3Rvn//PnR1dWFnZwcXFxeeJGeb\nSmN1UVxcDBsbG5w8eRIPHjxo8vah/JyX0Fjo2P0qqC6aDu+WhqQ0W/766y/89ttvuHz5MoyMjIQt\nDlekpKTA3NwcgwYNQmRkJDp06NCk+mgugdKsYbeTT1ZWFlm8eDGZPHkyIYSQ58+fk7/++ovd13gK\nB2JS+ACDwSCOjo6kX79+5OXLlzyvX1DXNTAwkCgqKpIjR44QZhM3SxaHvZeFBe2noge314RtKMna\n2hpGRkasPZ/79euHQ4cO8dVYUYRPfn4+pk+fjtjYWERGRmLAgAHCFqnRMJlM7NixA7a2tvD19cXq\n1aubNKKO5hIoLQW2huHTp0+wsLBgJehat27N081JKI1DEPHT9PR06OnpQUlJCTdv3oScnBzf2+SG\nhnTx5csXmJmZ4ebNm4iJiYGenh7X7YhSLqE+aFy9CqqLpsPWMHTs2BGfP39mHUdGRqJTp058FYoi\nPB4/fgxdXV1YWlrizJkzaN26tbBFajQJCQnQ1tZGnz59mjwbm3oJlBYJu1hTTEwM0dXVJbKyskRX\nV5f07duXxMfHcxW34hYOxKTwAD8/P6KgoECuXr0qkPb4cV3d3NyIvLw8cXNza1I9NJfQeGg/FT24\nvSZsJ7gBQHl5OV69egUAGDBggMDfIunEGf5z9OhR7N27F9euXRPYTGZeXtfy8nKsW7cO/v7+uHr1\nKjQ0NLiuS9z3XhYWtJ+KHtxek3qTBb6+vjWWwKisPCkpCQBgbm7OpaiUpsDrdWCYTCbWrVuHoKAg\nPHz4EL179+ZZ3fymUhdZWVmYPXs2unTpgpiYGK43kxLn2ct0faAqqC6aTr2G4fr16w2O4KCGQfwp\nLi6GpaUlPn36hAcPHqBLly7CFqnRhIeHw8LCAkuXLsWWLVsgKcndnE06L4FCqYKjUJKwoS4q78nJ\nycG0adPQq1cvnD9/XigzmZtyXQkhOHbsGJydnXHhwgUYGxtzVY84ewmiBu2nogfPQ0mVfPnyBU5O\nTrh//z4AQF9fH7///jsdmSTGvHv3DlOmTIGpqSn27NnD9Vu2sCgsLMSSJUuQmJiIiIgI9OnTh6t6\nqJdAodQN2yfC4sWLISsrC29vb3h5eUFGRgY2NjaCkI1SBw2N0a6oqICWllaDawAlJCRAT08Py5Yt\nw59//il2RuHNmzfQ1dVFq1atsHv3bq6MgjjMS2gsdOx+FVQXTYetx5CcnIyrV6+yjrdv347hw4fz\nVSgKdxw5cgSDBw9Gfn5+nefv3buH2bNn4/jx45gzZ46ApWs6169fh62tLZycnLBs2TLcu3ev0XVQ\nL4FC4QB241lHjx5N7t+/zzoOCwsjY8aM4WpsLLdwIGaLJz09nUyYMIHcvXuX/PTTT7XO+/r6EgUF\nBXLnzh0hSFc3nF5XBoNBtmzZQpSVlcnDhw+5aovOS+A/tJ+KHtxeE7Yew+nTp2FlZYWvX78CALp0\n6YKLFy/y1VhRGo+DgwP27duHvLy8WudcXFywbds2BAUFYcSIEUKQjntycnKwYMECFBcXIyYmBt26\ndWt0HdRLoFAaB0cb9SQkJODp06d4+vQp4uPjaShJiNQVP71x4wYUFRWhpaVVYwQCIQS7d+/Gnj17\ncP/+fbEzCnFxcdDW1sbgwYMRHBxcyyiwiyU3x1xCfdC4ehVUF02HrceQm5uLS5cuITU1FQwGA8C3\nIVBHjx7lu3AUznj48CH+/fdfBAQEoKSkBHl5ebCysoKioiJu3ryJ8PDwJq0XJAwuXryIdevW4cSJ\nE1zlQ6iXQKFwD9t5DLq6utDV1cWwYcMgKSnJmgm9aNEiQclIx0c3gnv37mHfvn3o1q0bEhMT4e/v\nL7Kro9Z1XUtLS+Hg4IA7d+7g6tWrGDJkSKPqpPMShAftp6IH3+YxlJaW4uDBg1wJFRQUBHt7e1RU\nVODnn3/Ghg0b6iwXHR0NXV1deHl50RnVTaS8vByxsbEYOnQobt++jY4dOwpbJI55//49Zs2aBSUl\nJURFRTV6rgz1EigU3sA2xzB//nycPXsWWVlZyMnJYf2xo6KiAitXrkRQUBASExPh4eGBFy9e1Flu\nw4YNmDJlCn3b4ICG4qdFRUU4cOAAxowZg+vXr4uVUQgNDcWoUaMwffp0+Pr6cmQUKnXRknIJ9UHj\n6lVQXTQdth6DtLQ01q9fD2dnZ9ZkKAkJCbx9+7bB70VFRaFv375QVVUFAMydOxd+fn4YNGhQjXLH\njh3DrFmzEB0dzeVPoABAXl4eTE1NWUtciMtmSoQQHDhwAPv374ebmxsmTpzYqO9TL4FC4T1snx4H\nDhxAcnIy5OXlG1VxRkYGVFRUWMfKysp49OhRrTJ+fn64e/cuoqOjm7TtYkuhrlUjc3JyYGxsjBEj\nRuDEiRNiNZvZwsICKSkpePToUaNWdi0rA0JC9Gku4f/Q1USroLpoOmwNQ79+/dCuXbtGV8zJQ97e\n3h579uxhJUhoKKnxfPz4EUZGRjA0NMT+/fvFxrhW7u/RqVMnhIWFQVpamuPvUi+BQuEvbA1D+/bt\noampCQMDA9YKnJwMV+3ZsyfS09NZx+np6VBWVq5R5vHjx5g7dy6Ab3tLBwYGonXr1pg2bVqt+qyt\nrVlhqc6dO0NTU5P1ZlAZU2wJx9XjpwMHDsTEiRPx/PlzxMfHcz1IQJi4uLhw/PvHjtWHszNw5Ego\nli8HjIyAHj30Rer6COs4Pj4e9vb2QpWnEmHr4/Dhwy36+XDhwgUAYD0vuYHtcNXKRirfRDkdrspg\nMDBgwADcuXMHPXr0wKhRo+Dh4VErx1CJjY0NTE1N6xyVRIfBVRH6/01IMjIyYGhoCEtLS2zdulUs\n9MNgMLB161b8/fff8PHxadROcXXtqlapC4po6EJU+qko6EJU4PqaNGEZDrYEBASQ/v37E3V1dbJr\n1y5CCCGnT58mp0+frlXW2tqa+Pr61lkPn8UUO9LS0oi6ujrZu3cvIUQ89JOdnU0mTJhAJkyYQLKz\nszn+Hl3jSHwQh/uwpcHtNaEb9YgZaWlpMDAwwIoVK+Do6AhA9PUTHR2NWbNmYd68edi5cyfHI6bo\n3svihajfhy0Rbq+J+AxfoSA1NRWjR4/GqlWrWEZB1HFxccHUqVNx6NAh7NmzhyOjwOm8hO9j2y0Z\nqosqqC6aToO9tHLy2f79+wUlD6Ue3r17B0NDQ8yaNYuVZBRlSkpKsHLlSjx8+BBhYWEYOHAgR9+j\nI44oFOHDNpQ0ZswYRERECHUYZEt3UdPS0qCvrw97e3usXr261nlR08+7d+8wa9YsqKmpwdXVFTIy\nMmy/Q9c4En9E7T6k8HGtJE1NTZiZmWH27Nlo3749qzG6ppFgSE9Ph4GBAVatWlWnURA1goODsXDh\nQqxfvx5r167l6IWCegkUimjBNsdQUlICOTk53L17Fzdu3MCNGzdw/fp1QcjW4snMzIShoSF++eUX\nODg4ABDd+CkhBHv27IGlpSU8PDzg6OjI1ig0dY0jUdWFMKC6qILqoumw9Rgq5zFQBMuHDx8wYcIE\n2NraYu3atcIWp0Hy8vKwaNEiZGVlITo6utZExrqgXgKFIrqw9RjS09MxY8YMKCgoQEFBATNnzsT7\n9+8FIVuL5dOnT5g4cSLmzp2LjRs31jgnahN3EhMToaOjg+7du+PevXtsjQIvV0IVNV0IE6qLKqgu\nmg5bw2BjY4Np06YhMzMTmZmZMDU1hY2NjSBka5Hk5ubCyMgIP/30E37//Xdhi9MgXl5e+PHHH7Fp\n0yacOnWKtWRKfcTFATo6wOPH37wEKyuaYKZQRBJ2M+A0NDQ4+oyfcCBmsyAvL4+MGTOGrFmzhjDr\nmeIbEhJS6zNB66e8vJysXbuWqKqqktjYWLbl+TV7uS5dtFREQRei0k9FQReiArfXhK3H0LVrV1y+\nfBkVFRVgMBhwc3Nr9BLcFPYUFxfDzMwMQ4cOxaFDh0R2ldQPHz6wFu6LiYmBlpZWg+Wpl0ChiB9s\n5zGkpqZi1apViIyMBACMHTsWx44dQ69evQQiIND8x0eXlZXB3NwcsrKyuHz5MqSkpBr1fUHpJzIy\nEuc/kPUAAB6dSURBVLNnz4aNjQ22bdvWoJx0XkLLo7n3U3GE22tC10oSMhUVFZg/fz5KSkrg4+OD\n1q1bN7oOfuuHEILTp09j27ZtcHV1hampaYPl6RpHLZPm3E/FFb6tlZScnAxTU1PIy8tDQUEBZmZm\nbLf1pHAGIQQrVqzAx48f4enpyZFREPQY7eLiYtjY2ODkyZN48OBBg0ZB0Hsv0/HqVVBdVEF10XTY\nGob58+djzpw5yMrKQmZmJmbPno158+YJQrZmz+bNmxEXFwc/P79G7WAmKFJSUjB27FiUlZUhMjIS\n/fr1q7cszSVQKM0IdtnpYcOG1fqMjkpqOn/++ScZNGgQ+fjxY5Pr4od+AgICiKKiIjl8+HC9I6QI\nofslUKpojv1U3OH2mrCd+WxsbIzdu3ezvARPT08YGxsjJycHACAnJ8c/q9VMOXfuHE6cOIHw8HCR\nG+HFZDKxc+dOnDlzBj4+Phg/fny9ZensZQqlecI2+ayqqlrv0EkJCQmB5BuaU1Lr33//xZIlSxAa\nGsrxUtTVqWvbQl7p58uXL7C0tERubi68vb2hpKRUZzlRGXFEt3CsQhR0ISr9VBR0ISrwbXXV1NRU\nbuSh1EFYWBhsbW3h7+/PlVHgJwkJCTA3N4eJiQn27duHNm3a1FmOegkUSvOHo+Gqz549Q2JiIkpK\nSlifWVlZ8VWw6ojKm0hTePbsGQwNDeHm5gYjIyOe1t1U/bi7u8Pe3h6HDx/GggUL6iwjKl4CRXRp\nDv20ucE3j2H79u24d+8enj9/DhMTEwQGBkJPT0+ghkHcSU9Ph7GxMQ4dOsRzo9AUysrKsG7dOgQE\nBODOnTvQ0NCosxz1EiiUlgXb4ao+Pj4IDg6GkpISzp8/jydPnuDLly+CkE1sUFVVhYaGBrS0tDBq\n1Kga5758+QJjY2OsWbOm3rfxxsCrMdpZWVkwNDRESkoKoqOj6zQKgp6X0FjoePUqqC6qoLpoOmw9\nhnbt2kFKSgqtWrXC169foaioiPT0dEHIJjZISEggNDS01gitkpISTJ8+HRMnToSjo6OQpKtNeHg4\nLCwssHTpUmzZsgWSkrXfD6iXQKG0XNgaBm1tbeTm5sLOzg7a2tro0KEDxo4dKwjZxIrv43hMJhOL\nFi2CoqIiDh48yLNF8Zoy2oIQgmPHjsHZ2RkXLlyAsbFxrTLilEugI0+qoLqoguqi6dSbfF6xYgXm\nz58PPT091mcpKSnIy8vD8OHDBSYgIPpJrT59+qBTp06QkpLC0qVLYWdnh19//RURERG4ffs232c1\nc6KfwsJCLFmyBImJifD19UWfPn1qlaFrHFGagqj305YIz9dK6t+/P9avX4/evXvj119/RVxcHNTU\n1ARuFMSBBw8eIC4uDoGBgThx4gQcHR3h5+eHa9eu8dwocBM/ffPmDXR1ddGqVSs8ePCgllEQ9VxC\nfdBYchVUF1VQXTSdeg2Dvb09IiIicO/ePcjJyWHx4sUYMGAAnJyckJSUJEgZRZ7KiWAKCgoYMmQI\nXFxcEBgYiK5duwpZMuD69esYO3Ysli9fjgsXLqB9+/Y1ztM1jigUSi0as35GbGwsGT58OJGUlORq\n/Q1uaaSYAqWwsJDk5eURQggJDw8nrVq1IkeOHBGoDHXph8FgkC1bthBlZWXy8OHDWufpGkcUXiPK\n/bSlwu01YZt8ZjAYCAgIwJUrV3Dnzh0YGBjAycmJ3/ZKbPjw4QNmzJiB8vJyJCUlwcLCAqtXrxaq\nTDk5Oaw9HmJiYtCtW7ca5+mIIwqF0hD1hpJu3bqFxYsXo2fPnnBxccFPP/2E5ORkXLlyBWZmZoKU\nUaRRU1NDeHg4WrduDWdnZ7i5ufG1PXbx07i4OGhra2PIkCEIDg6uYRTENZdQHzSWXAXVRRVUF02n\nXo9hz549mDdvHvbv309XUG2AiooKzJs3D9ra2li/fr1QZbl48SLWrVuH48ePw8LCosY56iVQKBRO\noVt7NhEHBwckJCQgMDCw3oXn+I2EhASWLVuGu3fv4urVqxgyZAjrnDjNS6CIN6LcT1sqfFsriVI/\nLi4uCAgIQGRkpNCMwvv37wEA//33H6KiotCpUyfWOeolUCgUbqAeA5eEhobCwsIC2dnZwhYFwLeQ\nVuXSFi3FS6Dr7lchCroQlX4qCroQFXg+wY1SP2/evIGFhQXc3d0BfFtqQlB/ISEhYDKZ2LdvH7p1\n64bbt2+DEMIyCnReAoVCaSrUY2gkeXl5GDNmDFauXIkVK1YIXLb8/HzY2tri7du38PX1Re/evQG0\nHC+BIrqIUj+lfIN6DAKgoqICCxYswI8//ogVK1YIvP1Xr15h9OjRkJWVRXh4OMsoUC+BQqHwEr4b\nhqCgIAwcOBD9+vXD3r17a513d3fH8OHDoaGhgXHjxiEhIYHfInHN1q1bkZeXhyNHjgi87atXr0JP\nTw9Tp07FX3/9BWlp6WY3L6Gx0PHqVVBdVEF10XT4OiqpoqICK1euRHBwMHr27AkdHR1MmzYNgwYN\nYpXp06cP7t+/j06dOiEoKAhLlixBZGQkP8XiiitXrsDDwwNRUVECHYHEYDCwZcsWeHh4ICAgAIWF\nhQDoiCMKhcI/+JpjiIiIgJOTE4KCggB8mzQHABs3bqyzfG5uLoYNG8YagskSUsixy7i4OBgZGSE4\nOLjW6rL8lO3jx4+YN28eAMDDwwMKCgo0l0ARWYTdTym1EckcQ0ZGBlRUVFjHysrKyMjIqLe8q6sr\npk6dyk+RGs2nT58wY8YMnDhxQqBLjkdHR0NbWxva2toICgqCgoICzSVQKBSBwNdQUmN2LQsJCcG5\nc+fw4MGDOs9bW1tDVVUVANC5c2doamqyxipXxhR5faynpwcLCwuMHTsWioqKLFn41V7l8bp16+Di\n4oLz58/D3Nwct2+Hws0NCAzUh61tKIyMgKQkoEcP/v5+UT+u/ExU5BHmcXx8POzt7YUqTyXC1sfh\nw4cF8nwQxePQ0FBcuHABAFjPS67gak1WDomIiCCTJ09mHe/atYvs2bOnVrknT54QdXV18vr16zrr\n4bOY9bL2f+3deVyU1f4H8M8QKG6huIDKogy+FEQGBAQKvHA1d7Ew0yQERJCyxbh58WoqFZom/ipF\nCxW93sQlzbSugF2IrQBFlkGWcrmASN0CZVFZZJjz+8MXM4wM8rDMyvf9F86c5zzf+c74nDnnzDlP\naCibO3cuE4lEnZbpy9gaGxtZYGAgs7KyYiUlJYwxxnJzGbO1ZWzhQsYqKxlLTk7us/NpOsqFlDrk\nQlX/T5+kDrlQFz19TxT6Tra0tDALCwtWWlrKmpubmUAgYMXFxTJlysvLGZ/PZ5mZmZ0HqYIPXGxs\nLOPz+ezu3btPLddXsZWVlTFHR0e2bNkyVl9fT/dLIBpHXRoGItXT90ShQ0m6urqIiorC3Llz0dra\nisDAQFhZWSE6OhoAsHbtWnz44YeoqanB66+/DgDQ09PDlStXFBlWlwoKCvDOO+8gKSlJKTvLJiYm\n4rXXXsOGDRsQGhqK/Hwe/eKIEKI6fdxAKYQyw6ypqWGWlpbs+PHjnMr3JjaxWMw+/vhjZmxszH78\n8UdOvQTqJktRLqTUIRfqcjlRh1yoi56+J7S7ajtisRirVq3C/Pnz4ePjo9Bz1dfXw8/PD7///juy\ns7NRVWUCJyfqJRBCVK/f7ZVUW1uLNWvWoKioCDweD0eOHIGLiwsAYPv27YiLi0NycjLnRWw9ia2o\nqAje3t7461//ik8++QyRkQNpXQLReLSOQf3Q/Rg4euedd7BgwQKcPXsWIpFIspI4MTER+/fvx9Wr\nVxW6svnrr7/GunXrsHv3bggE/nBzo14CIUS99KtN9Orq6pCeno7Vq1cDeDw5bmBggMrKSvj6+iI2\nNhbjFHR1FolE+Nvf/oawsDBcvPgDSkv9e7TH0ZO/Ge/PKBdSlAspykXv9aseQ2lpKUaPHo2AgAAI\nhUI4ODggMjISy5cvx1tvvQVPT0+FnPePP/7A8uXLoa+vjyNHriIoaCT1EgghaqtfzTFcvXoVrq6u\nyMjIgJOTE9avX4/Lly/D0NAQ33//veRmN30ZW1ZWFpYtW4ZVqwKgo7MN0dHP0FwC0Uo0x6B+aI6B\nAxMTE5iYmMDJyQkAYGRkBKFQiDt37vSoUXgaxhi++OILhIeHY9OmGBw9uph6CYQQjdCv5hiMjY1h\namqK69evo6ysDBEREVi6dGmfL2JrbGyEv78/Dhz4Aq+88jN27FjcZ/dLoPFTKcqFFOVCinLRe/2q\nxwAA+/btw8qVK1FcXAxLS0tERUX1af2lpaXw9vaGsbEVeLwslJUNoV4CIUSj9Ks5hjahoaG4efMm\nLly40K0dYOVpH1t8fDz8/f1hb78JOTlvY88eHs0lkH6D5hjUD80xcHThwgWcO3cOubm5vW4U2ojF\nYkRERCAqKhrPPnsWurruEAqpl0AI0Uz9ao7h9u3bCA4OxsmTJ/t0XmHx4iU4fPgHtLZexdat7gq9\n9zKNn0pRLqQoF1KUi97rNw2DSCSCj48P3n33Xbi6uvZJnQUFBQCAy5ctYGPzI65dG0t3VSOEaLx+\nM8ewdetWfPTRR30UkaxjxxjNJZB+j+YY1A/NMTxFcnIyDh8+DADdTtKu8EhERyVCLNKHjm4TAkM8\nUXirEt98cxEuLt/i1Clblc0lNDU1QV9fXzUnJ4RoLa0fSqquroavr6/kPqjdsSs8Eju356P0bgLK\n686j9G4Ctmy/htOnU7B9+yWkpiq/UWg/fnrnzh0kJiYqNwA1QmPJUpQLKcpF72l1w8AYw5o1a/Dq\nq69izpw53T4+OioRtaLjsnViNwwH62LDBkuVDx1ZWlqiuLgYjY2Nqg2EEKJVtHqO4csvv8ShQ4eQ\nmZmJAQMGdLueCcNfRHnd+Sce3QHTZzNxu+77bsejCLdu3UJqaqpkx1hCVIXmGNRPT98Tre0xFBcX\n4/3338eJEyd6fH8Fkdz0/Ak9PRFaW1tx4sQJRERE4NixY1i3bh3++9//9ug8hYWFiIiIQFZWFgDA\n39+f87F8Ph/Xrl3r0XkJIUQerWwYmpqasHLlSuzcuROTJ0/u9vGPHgHbtgE1LW9gsM5amecG8C4i\n+M1ZEAqFWLp0KSwsLCAWi7Fs2TKMHTu2R/E2NDRAT08PjDGUlJRg9OjRnZaVN34qEol6dF5NR2PJ\nUpQLKcpF72llw7B582ZYWFggMDCw28fm5QFOTkBODnDjxmxs3TIJFiPnw9zgRViMnA9bwQiEhb+H\n6dOnY+DAgcjMzISHhwc8PDwwaNAg/Oc//8GsWbPw8OFD+Pj4IDU1FbW1tfjHP/6BBw8eyD3njBkz\nkJubC1dXV2RlZeG5555DYmKi3HoOHTrUoZ6GhoYe5YkQQuTRuoYhKSkJp06dwsGDB7u15UVbL+HJ\nu6qFhb+HW9XxKKs9j1vV8bB3sgMAZGdno7q6GoWFhZg4cSLS09MBPL7Im5mZQV9fH4wxWFhY4Lff\nfsO2bdswdOhQmXOWlpZK/h48eDAASBoGJycnufXExMR0qKevtwzXFB4eHqoOQW1QLqQoF72nVesY\nampqEBAQgCNHjmDUqFGcj8vLA/z9ud17ue0CnpCQACMjIzz//PP49ttvJeczMDCArq4uUlNT4enp\niaqqKojF4g7rDSorKzF79mzcunULAGBmZoYzZ84gJycHRkZGYIxxqocxhmHDhnF+rYQQ0hWt+arJ\nGENISAheeuklzJ07l9MxnfUSnsbExAQ1NTXYsmULgoODERERgZdeegnu7u6SMo2NjTAwMIChoSF+\n+OEHODg4dKhn/PjxiImJAQAcPnwYHh4eEAgEeOWVVwA8/jWBvHqeHD8tKCiAs7Mzp9erbWgsWYpy\nIUW56D2t6THExsaisLCQ80K27vQS2gsKCsLp06cRHBzcaRkzMzM4ODjg/v37MDQ07HRIq7m5GQBg\namqKBw8eIC0tDe+991636klKSsL69eu5BU8IIRxoxTqGiooKODg44NKlS7C3t39qPc3NDNu3A198\ngR7fezk9PR3m5uYwMzPr3oF9rKioCCKRCAKBQKVxEALQOgZ11NP3ROMbBrFYjDlz5sDT0xObN2/u\nsh5bWwZTU+DgQbpfAiF9iRoG9dNvF7gdOHAADx48QFhYWKdl2uYSAO5zCeqKxk+lKBdSlAspykXv\nafQcw/Xr1xEeHo6MjAzo6sp/Ke3nEgBg1SrlxUcIIZpIY4eSRCIR3Nzc4Ovri3Xr1nU45tEjdJhL\n0NGhri4hikJDSeqn392PITIyEkOHDsXrr7/e4bnOfnFEH1pCCOmaRs4xFBYWYs+ePYiJiZFZ9duT\ndQmahsZPpSgXUpQLKcpF72lcj6GlpQV+fn74+OOPYW5uLnm8p+sSCCGEyNK4OYaPPvoIGRkZiIuL\nA4/HkzuXoOob6BDSH9Ecg/rpF3MMQqEQ+/btQ25uLng8HvUSCCFEARQ6x5CQkIApU6Zg0qRJ2LVr\nl9wyb7/9NiZNmgSBQIC8vLxO62ppaUFAQAB27dqFMWNMtH4uoTM0fipFuZCiXEhRLnpPYQ1Da2sr\n3nzzTSQkJKC4uBgnT55ESUmJTJm4uDjcvHkTN27cwMGDB+X+wqjN7t27MWbMGAgE/pL7JeTnP16X\n0J+GjvLz81UdgtqgXEhRLqQoF72nsIbhypUrsLS0xIQJE6Cnp4cVK1bgwoULMmW+++47+Pn5AQCc\nnZ1RW1uLP/74Q259//d/UZgy5TTmzeP1u15Ce7W1taoOQW1QLqQoF1KUi95TWMNQWVkJ07blxni8\nXXVlZWWXZe7cuSO3Pn39Aty8adAvewmEEKJMCpt85nr3tCdnzDs7LiLCEH5+1CCUlZWpOgS1QbmQ\nolxIUS56T2ENw/jx41FRUSH5d0VFBUxMTJ5a5s6dOxg/fnyHuvh8PgICnkFAgKKi1SzHjh1TdQhq\ng3IhpQ656M7tdBVJHXKhDvh8fo+OU1jD4OjoiBs3bqCsrAzjxo3D6dOncfLkSZkyXl5eiIqKwooV\nK5CVlYXhw4fDyMioQ103b95UVJiEEEKeoLCGQVdXF1FRUZg7dy5aW1sRGBgIKysrREdHAwDWrl2L\nBQsWIC4uDpaWlhgyZAiOHj2qqHAIIYRwpBErnwkhhCiPWm2i15cL4jRdV7mIjY2FQCCAra0tnn/+\neRQUFKggSuXg8rkAgOzsbOjq6uLcuXNKjE55uOQhJSUF9vb2sLGxgYeHh3IDVKKuclFdXY158+bB\nzs4ONjY2nO8Fr4lWr14NIyMjTJs2rdMy3b5uMjUhEokYn89npaWl7NGjR0wgELDi4mKZMhcvXmTz\n589njDGWlZXFnJ2dVRGqwnHJRUZGBqutrWWMMRYfH9+vc9FWztPTky1cuJCdPXtWBZEqFpc81NTU\nMGtra1ZRUcEYY6yqqkoVoSocl1xs27aNbdy4kTH2OA+GhoaspaVFFeEqXFpaGsvNzWU2NjZyn+/J\ndVNtegx9vSBOk3HJhaurKwwMDAA8zkVn6z80HZdcAMC+ffvw8ssvY/To0SqIUvG45OHEiRNYunSp\n5Nd/o0aNUkWoCsclF2PHjkV9fT0AoL6+HiNHjuz0Lo+azt3dHSNGjOj0+Z5cN9WmYejrBXGajEsu\n2ouJicGCBQuUEZrScf1cXLhwQbKlirr8ZLIvccnDjRs3cO/ePXh6esLR0RFfffWVssNUCi65CAoK\nQlFREcaNGweBQIDPP/9c2WGqjZ5cN9WmCe3rBXGarDuvKTk5GUeOHMHPP/+swIhUh0su1q9fj507\nd0q2GH7yM6INuOShpaUFubm5SEpKQkNDA1xdXeHi4oJJkyYpIULl4ZKLHTt2wM7ODikpKbh16xZe\neOEFCIVCDBs2TAkRqp/uXjfVpmHoywVxmo5LLgCgoKAAQUFBSEhIeGpXUpNxyUVOTg5WrFgB4PGk\nY3x8PPT09ODl5aXUWBWJSx5MTU0xatQoDBo0CIMGDcLMmTMhFAq1rmHgkouMjAxs3rwZwONFXhMn\nTsSvv/4KR0dHpcaqDnp03eyzGZBeamlpYRYWFqy0tJQ1Nzd3OfmcmZmptROuXHJRXl7O+Hw+y8zM\nVFGUysElF+35+/uzb775RokRKgeXPJSUlLBZs2YxkUjEHj58yGxsbFhRUZGKIlYcLrl49913WXh4\nOGOMsf/9739s/Pjx7O7du6oIVylKS0s5TT5zvW6qTY+BFsRJccnFhx9+iJqaGsm4up6eHq5cuaLK\nsBWCSy76Ay55mDJlCubNmwdbW1vo6OggKCgI1tbWKo6873HJxaZNmxAQEACBQACxWIxPPvkEhoaG\nKo5cMV599VWkpqaiuroapqam+OCDD9DS0gKg59dNWuBGCCFEhtr8KokQQoh6oIaBEEKIDGoYCCGE\nyKCGgRBCiAxqGAghhMighoEQQogMahiIUgwdOrTDY9HR0b3az2fhwoWSjdLaCw8Px549e3pcb2cm\nTJiAe/fucS6fnp6OqVOnYvr06Whubu7VuVNTU5GZmSn5d29zR8jTqM0CN6Ld5O3N0tvFaRcvXuR8\nrr7Q3XpjY2OxadMm+Pj4yDwuEom6vdNncnIyhg0bBldXVwD9Z2EfUQ3qMRCVaf/NPicnBwKBAHZ2\ndtiwYYPkpiP//Oc/8dZbb0mOWbRoEdLS0gDIfoPfvn07Jk+eDHd3d/z6669yz+fv74833ngDrq6u\n4PP5SElJgZ+fH6ytrREQECApd/LkSdja2mLatGnYuHGj3LqOHz8OZ2dn2NvbIyQkBGKxWOb5w4cP\n48yZM9iyZQtee+01pKamwt3dHUuWLIGNjQ0A4MUXX4SjoyNsbGxw6NAhybEJCQlwcHCAnZ0dXnjh\nBZSXlyM6Ohqffvop7O3t8dNPP8nkLj8/Hy4uLhAIBPD29kZtbS0AwMPDAxs3boSzszMmT56Mn376\n6anvR3Z2NgQCAZqbm/Hw4UPY2NiguLj4qccQ7UQNA1EZHo8n+RYeEBCA/fv3Iz8/X+Zxecc8+XdO\nTg5Onz4NoVCIuLg4ZGdnyz2ex+OhtrYWmZmZ+PTTT+Hl5YW///3vKCoqwrVr1yAUCvHbb79h48aN\nSE5ORn5+PrKzszvs9V9SUoKvv/4aGRkZyMvLg46ODmJjY2XKrFmzBl5eXoiMjMTx48fBGENeXh72\n7t2LX375BQBw9OhRXL16FdnZ2di7dy9qampQVVWF4OBgnDt3Dvn5+Thz5gzMzc0REhKC0NBQ5OXl\nwc3NTSZHq1atwu7duyEUCjFt2jR88MEHktfb2tqKy5cv47PPPpM83hknJyd4eXnh/fffR1hYGHx9\nfbVySw3SNRpKIipXV1eHuro6uLm5AQB8fX0RHx/P6VjGGNLT0+Ht7Q19fX3o6+vDy8ur0623Fy9e\nDACwsbGBsbExpk6dCgCYOnUqysrKUFZWBg8PD4wcORIA4OPjg7S0NCxZskRyvqSkJOTk5Eh26mxs\nbISxsXGn8bWZMWMGzM3NJf/+/PPPcf78eQCPd7y8fv06/vzzT8ycOVNSbvjw4XLralNfX4+6ujq4\nu7sDAPz8/LBs2TLJ897e3gCA6dOno6ysTG6M7W3duhWOjo4YNGgQ9u3b12V5op2oYSBqp/0FUFdX\nV2aYpqmpqUP5tvswyDv+SQMGDAAA6OjoYODAgZLHdXR0IBKJoKen1yEWeb0PPz8/7Nixo8vX0v7Y\nIUOGSP5OSUlBUlISsrKyoK+vD09PTzQ1NfV6fuTJ1972Gp955hmIRKIuj6+ursbDhw/R2tqKxsZG\nDB48uFfxEM1EQ0lEpRhjMDAwwPDhwyU3G2o/LDNhwgTk5+eDMYaKiooOO8jyeDzMnDkT58+fR1NT\nE+7fv49///vfPbrA8ng8zJgxA6mpqbh79y5aW1tx6tQp/OUvf5EpM2vWLJw9exZVVVUAgHv37uH2\n7dudvj556uvrMWLECOjr6+OXX35BVlYWeDweXFxckJaWJvl23zaHMmzYMNy/f79D3c8++yxGjBgh\nmT/46quv4OHh8dTXWVlZidmzZ8t9bu3atYiIiMDKlSsRFhb21HqI9qIeA1GKhoYGmdsLhoaGApB+\noz569ChWr14NHo+HOXPmSMq5ublh4sSJsLa2hpWVFRwcHDrUbW9vj+XLl0MgEGDMmDGYMWNGp3HI\nm6Noz9jYGDt37oSnpycYY1i0aJFk+KmtvJWVFSIiIjBnzhyIxWLo6enhwIEDMDMz6/R8T86bzJs3\nD19++SWsra0xefJkya+NRo0ahYMHD8Lb2xtisRhGRka4dOkSFi9ejJdffhnfffcd9u7dK1P3sWPH\nEBISgoaGBvD5/E63VW4r//vvv8v9VdS//vUvDBw4ECtWrIBYLMZzzz2HlJSULhsaon1o222idsrL\ny7Fo0SJcu3ZN1aFopf3798Pc3ByLFi1SdShETVGPgaidzsb1Sd9Yt26dqkMgao56DIQQQmTQ5DMh\nhBAZ1DAQQgiRQQ0DIYQQGdQwEEIIkUENAyGEEBnUMBBCCJHx/xLV7ef1E0kYAAAAAElFTkSuQmCC\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x5faf190>"
+ ]
+ }
+ ],
+ "prompt_number": 34
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.6-1 Page Number 670"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Enthalpy Concentration Plot for Benzene-Toluene\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "#Variable Declaration\n",
+ "xe = np.array([0.000,0.130,0.258,0.411,0.581,0.780,1.000]) #Equillibrium liquid phase composition benzene toulene\n",
+ "ye = np.array([0.000,0.261,0.456,0.632,0.777,0.900,1.000]) #Equillibrium vapor phase composition\n",
+ "T = np.array([110.6,105.0,100.0,95.0,90.0,85.0,80.1]) #Saturation temperatures corresponding to equillibrium points\n",
+ "Tb = np.array([80.1,110.6]) #Boiling point of benzene toulene resp in \u00b0C\n",
+ "Cpl = np.array([138.0,167.5]) #Liquid heat capacity of benzene toulene resp kJ/kmol.K\n",
+ "Cpg = np.array([96.3,138.2]) #Vapor heat capacity of benzene toulene resp kJ/kmol.K\n",
+ "Lbd = np.array([30820,33330]) #Latent heat of benzene toulene resp kJ/kmol\n",
+ "h = np.zeros(len(xe)) #Enthalpy of liquid in KJ/kmol\n",
+ "H = np.zeros(len(xe)) #Enthalpy of vapor in KJ/kmol\n",
+ "Tref = 80.1 #Reference temperature in \u00b0C\n",
+ "#Calculations\n",
+ "\n",
+ "LbdA = Cpl[0]*(Tb[0]-Tref) + Lbd[0] - Cpg[0]*(Tb[0]-Tref)\n",
+ "LbdB = Cpl[1]*(Tb[1]-Tref) + Lbd[1] - Cpg[1]*(Tb[1]-Tref)\n",
+ "h = xe*Cpl[0]*(T-Tref)+(1.-xe)*Cpl[1]*(T-Tref)\n",
+ "H = ye*(LbdA + Cpg[0]*(T-Tref)) + (1-ye)*(LbdB + Cpg[1]*(T-Tref))\n",
+ "\n",
+ "#Results\n",
+ "print ' Enthalpy (kJ/kgmol) of '\n",
+ "print ' Liquid Vapor '\n",
+ "print ' h H '\n",
+ "for i in range(len(h)):\n",
+ " print ' %4.0f %5.0f'%(h[i],H[i])\n",
+ "\n",
+ "plt.plot(xe,h,'bo-',ye,H,'ro-')\n",
+ "plt.ylabel('Enthalpy, kJ/kgmol')\n",
+ "plt.xlabel('x, y')\n",
+ "plt.title('Enthalpy concentration Diagram')\n",
+ "plt.grid(True)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Enthalpy (kJ/kgmol) of \n",
+ " Liquid Vapor \n",
+ " h H \n",
+ " 5109 38439\n",
+ " 4075 36504\n",
+ " 3182 35042\n",
+ " 2315 33737\n",
+ " 1489 32625\n",
+ " 708 31653\n",
+ " 0 30820\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\n/w8EP0yWEa19FQAAAABJRU5ErkJggg==\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0xe7f1d90>"
+ ]
+ }
+ ],
+ "prompt_number": 32
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.6-2 Page Number 674"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Distillation Using Enthalpy-Concentration Method\n",
+ "import matplotlib.pylab as plt\n",
+ "import numpy as np\n",
+ "from scipy.interpolate import interp1d\n",
+ "from scipy.optimize import root\n",
+ "\n",
+ "#Variable Declaration\n",
+ " #Equillibrium liquid phase composition benzene toulene\n",
+ "xe = np.array([0.000,0.130,0.258,0.411,0.581,0.780,1.000]) \n",
+ " #Equillibrium vapor phase composition\n",
+ "ye = np.array([0.000,0.261,0.456,0.632,0.777,0.900,1.000]) \n",
+ " #Saturation temperatures corresponding to equillibrium points\n",
+ "T = np.array([110.6,105.0,100.0,95.0,90.0,85.0,80.1]) \n",
+ "Tb = np.array([80.1,110.6]) #Boiling point of benzene toulene resp in \u00b0C\n",
+ "Cpl = np.array([138.0,167.5]) #Liquid heat capacity of benzene toulene resp kJ/kmol.K\n",
+ "Cpg = np.array([96.3,138.2]) #Vapor heat capacity of benzene toulene resp kJ/kmol.K\n",
+ "Lbd = np.array([30820,33330]) #Latent heat of benzene toulene resp kJ/kmolF = 100.\n",
+ "xF = 0.45 #Feed mole fraction for benzene\n",
+ "xD = 0.95 #Distillate mole fraction for benzene\n",
+ "xW = 0.10 #Bottoms mole fraction for benzene\n",
+ "Rm = 1.17 #Minimum reflux ratio\n",
+ "lambdav = 32099. #Average Latent heat of vaporiztion kJ/kmol\n",
+ "Cp = 159. #Average heat capacity kJ/kmol.K\n",
+ "Tbb = 366.7 #Boiling point of feed in K\n",
+ "Tf = 327.6 #Feed temperature in K\n",
+ "Rmul = 1.5 #Number of times minimum reflux\n",
+ "F = 100. #Feed rate to distillation, khmol/h\n",
+ "\n",
+ "#Calculations\n",
+ "Tref = Tb[0]\n",
+ "LbdA = Cpl[0]*(Tb[0]-Tref) + Lbd[0] - Cpg[0]*(Tb[0]-Tref)\n",
+ "LbdB = Cpl[1]*(Tb[1]-Tref) + Lbd[1] - Cpg[1]*(Tb[1]-Tref)\n",
+ "h = xe*Cpl[0]*(T-Tref)+(1.-xe)*Cpl[1]*(T-Tref)\n",
+ "H = ye*(LbdA + Cpg[0]*(T-Tref)) + (1-ye)*(LbdB + Cpg[1]*(T-Tref))\n",
+ "Hi = interp1d(ye,H,kind='cubic')\n",
+ "hi = interp1d(xe,h,kind='cubic')\n",
+ "yei = interp1d(xe,ye,kind='cubic')\n",
+ "\n",
+ "def LiquidH(T,x):\n",
+ " return x*Cpl[0]*(T-Tref)+(1.-x)*Cpl[1]*(T-Tref)\n",
+ "\n",
+ "def VaporH(T,y):\n",
+ " return y*(LbdA + Cpg[0]*(T-Tref)) + (1-y)*(LbdB + Cpg[1]*(T-Tref))\n",
+ "\n",
+ "R = Rm*Rmul\n",
+ "\n",
+ "x = np.arange(0.,1.,0.01)\n",
+ "f = interp1d(xe,ye, kind='cubic')\n",
+ "y = f(x)\n",
+ "plt.title('McCabe Thiele Diagram')\n",
+ "plt.grid(True)\n",
+ "plt.plot(x,y,'k-')\n",
+ "plt.text(.05, .6, 'Equilibrium Curve')\n",
+ "plt.text(xF,xF-0.1, 'Feed Line')\n",
+ "plt.text(xF+0.05,xF+0.1, 'q-Line')\n",
+ "plt.text(xF+0.3,xF+0.3, 'UO Line')\n",
+ "plt.text(xF-0.2,xF-0.2, 'LO Line')\n",
+ "plt.plot(xD,xD,'ro')\n",
+ "plt.plot(xW,xW,'ro')\n",
+ "plt.annotate('$(x_D,y_D)$', xy=(xD,xD), xytext=(xD,xD-0.02))\n",
+ "\n",
+ "plt.annotate('$(x_W,y_W)$', xy=(xW,xW), xytext=(xW,xW-0.02))\n",
+ "plt.xlabel('Liquid mole fraction, x')\n",
+ "plt.ylabel('Vapor mole fraction, y')\n",
+ "\n",
+ "plt.plot([0,1,xF,xF],[0,1,xF,0])\n",
+ "a = np.array([[1,1], [xD,xW]])\n",
+ "b = np.array([F,F*xF])\n",
+ "[D,W]= np.linalg.solve(a, b)\n",
+ "L = R*D\n",
+ "q = 1+ Cp*(Tbb-Tf)/lambdav\n",
+ "V1 = L + D\n",
+ "H1 = VaporH(82.3,xD)\n",
+ "hD = LiquidH(81.1,xD)\n",
+ "muol = R/(R+1)\n",
+ "cuol = xD/(R+1)\n",
+ "mql = q/(q - 1.)\n",
+ "cql = xF - mql*xF\n",
+ "plt.plot(xD,xD,'ro')\n",
+ "plt.plot(xW,xW,'ro')\n",
+ "a = np.array([[1,-mql], [1,-muol]])\n",
+ "b = np.array([cql,cuol])\n",
+ "[yi,xi] = np.linalg.solve(a, b)\n",
+ "plt.plot([xF,xi],[xF,yi])\n",
+ "xuol = np.arange(0.40,0.96,0.01)\n",
+ "yuol = np.zeros(len(xuol))\n",
+ "\n",
+ "m = muol\n",
+ "c = cuol\n",
+ "for j in range(len(xuol)):\n",
+ " xn = xuol[j]\n",
+ " yn1 = m*xn + c\n",
+ " er = 1.\n",
+ " while er >=0.001:\n",
+ " hn = hi(xn)\n",
+ " Hn1 = Hi(yn1)\n",
+ " Vn1 = (V1*H1-D*hi(xn)+L*hD)/(Hi(yn1)-hi(xn))\n",
+ " Ln = Vn1 - D \n",
+ " yn1c = Ln/Vn1*xn+D*xD/Vn1\n",
+ " er = abs(yn1-yn1c)\n",
+ " yn1 = yn1c\n",
+ " yuol[j] = yn1\n",
+ "plt.plot(xuol,yuol) \n",
+ "Qc = V1*H1-L*hD-D*hD\n",
+ "\n",
+ "hF = LiquidH(54.5,xF)\n",
+ "hW = hi(xW)\n",
+ "Qr = D*hD+W*hW+Qc-F*hF\n",
+ "\n",
+ "mlol = (xW-yi)/(xW-xi)\n",
+ "clol = yi - mlol*xi\n",
+ "xlol = np.arange(0.1,0.52,0.02)\n",
+ "ylol = np.zeros(len(xlol))\n",
+ "m = mlol\n",
+ "c = clol\n",
+ "yW = yei(xW)\n",
+ "HW = Hi(yW)\n",
+ "hW = hi(xW)\n",
+ "ym1 = yW\n",
+ "Lm = Ln + q*F \n",
+ "Vm1 = Vn1 - (1.-q)*F\n",
+ "for j in range(len(ylol)):\n",
+ " xm = xlol[j]\n",
+ " ym1 = m*xm - c \n",
+ " er = 1.\n",
+ " while er >=0.001:\n",
+ " hm = hi(xm)\n",
+ " Hm1 = Hi(ym1)\n",
+ " Vm1 = (W*(hm-hW)+Qr)/(Hm1-hm)\n",
+ " Lm = Vm1 + W\n",
+ " ym1c = Lm*xm/Vm1 - W*xW/Vm1\n",
+ " er = abs(ym1-ym1c)\n",
+ " ym1 = ym1c\n",
+ " ylol[j] = ym1c\n",
+ "plt.plot(xlol,ylol)\n",
+ "\n",
+ "fl = interp1d(xlol,ylol)\n",
+ "fu = interp1d(xuol,yuol)\n",
+ "\n",
+ "ff = lambda x: f(x)-(mql*x+cql)\n",
+ "sol = root(ff,0.52)\n",
+ "xq = sol.x[0]\n",
+ "yq = f(xq)\n",
+ "\n",
+ "x1 = xD\n",
+ "y1 = xD\n",
+ "n = 0\n",
+ "j = 0\n",
+ "while x1>xW:\n",
+ " y2 = y1\n",
+ " ff = lambda x: y1 -f(x)\n",
+ " sol = root(ff,0.2)\n",
+ " x2 = sol.x[0]\n",
+ " plt.text(x2-0.02, y2+0.02, str(n+1))\n",
+ " plt.plot([x1,x2],[y1,y2],'k-')\n",
+ " if x2 > xW:\n",
+ " n = n+1\n",
+ " else:\n",
+ " dxt = x1 - x2\n",
+ " dx = x1 - xW\n",
+ " n = n + dx/dxt\n",
+ "\n",
+ " if x2>xW and x2<xi:\n",
+ " j = j + 1\n",
+ "\n",
+ " x1 = x2\n",
+ " if x1 >= xi:\n",
+ " ff = lambda y: y - fu(x1)\n",
+ " sol = root(ff,0.65)\n",
+ " y2 = sol.x[0]\n",
+ " elif x1 <= xi and x1 >=xW:\n",
+ " ff = lambda y: y - fl(x1)\n",
+ " sol = root(ff,0.2)\n",
+ " y2 = sol.x[0]\n",
+ " else:\n",
+ " y2 = x1 \n",
+ "\n",
+ " plt.plot([x1,x2],[y1,y2],'k-')\n",
+ " x1 = x2\n",
+ " y1 = y2\n",
+ "\n",
+ "#Results\n",
+ "print 'Vapor rate from reboiler %4.1f kmol/h'%Vm1\n",
+ "print 'Bottoms product rate %4.1f kJ/h'%W\n",
+ "print 'Distillate rate %4.1f kJ/h'%D\n",
+ "print 'Condeser duty %8.2f kJ/h'%Qc\n",
+ "print 'Reboiler duty %8.2f kJ/h'%Qr\n",
+ "print \"Number of equilibrium stages including reboiler for required separation:\",round(n,1)\n",
+ "print \"Number of equilibrium stages excluding reboiler for required separation:\",round(n-1,1)\n",
+ "print 'Feed is introduced on %2d'%(ceil(n-j))"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Vapor rate from reboiler 128.2 kmol/h\n",
+ "Bottoms product rate 58.8 kJ/h\n",
+ "Distillate rate 41.2 kJ/h\n",
+ "Condeser duty 3524297.05 kJ/h\n",
+ "Reboiler duty 4178128.14 kJ/h\n",
+ "Number of equilibrium stages including reboiler for required separation: 10.9\n",
+ "Number of equilibrium stages excluding reboiler for required separation: 9.9\n",
+ "Feed is introduced on 6\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x63fda10>"
+ ]
+ }
+ ],
+ "prompt_number": 52
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.7-1 Page Number 682"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Boiling Point of Multi-Component Liquid\n",
+ "import numpy as np\n",
+ "\n",
+ "#Variable Declaration\n",
+ "x = np.array([0.40,0.25,0.20,0.15]) #Feed composition in molfrac\n",
+ "K1 = np.array([1.68,0.630,0.245,0.093]) #Values at 65 \u00b0C are taken from Fig 11.7-2\n",
+ "K2 = np.array([1.86,0.710,0.2815,0.110]) #Values at 70 \u00b0C are taken from Fig 11.7-2\n",
+ "\n",
+ "#Calcualtion\n",
+ "k = 2\n",
+ "alpha = K1/K1[k]\n",
+ "alpx = alpha*x\n",
+ "s1 = s2 = 0.0\n",
+ "for j in range(len(x)):\n",
+ " s1 = s1 + alpx[j]\n",
+ "\n",
+ "Kc = 1./s1\n",
+ "print \"Kc:\", round(Kc,4), \"This value corresponds to 69\u00b0C \"\n",
+ "\n",
+ "alpha = K2/K2[k]\n",
+ "alpx = alpha*x\n",
+ "print \"At 69\u00b0C the value calculated is not shown and corresponds to 70\u00b0C\"\n",
+ "for j in range(len(x)):\n",
+ " s2 = s2 + alpx[j]\n",
+ "\n",
+ "Kc = 1./s2\n",
+ "\n",
+ "#Results\n",
+ "print \"Kc:\", round(Kc,4), \"This value corresponds to 70\u00b0C Hence converged\"\n",
+ "print \"Bubble temperature is equal to 70 \u00b0C \""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Kc: 0.2745 This value corresponds to 69\u00b0C \n",
+ "At 69\u00b0C the value calculated is not shown and corresponds to 70\u00b0C\n",
+ "Kc: 0.2831 This value corresponds to 70\u00b0C Hence converged\n",
+ "Bubble temperature is equal to 70 \u00b0C \n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.7-2 Page Number 684"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculation of Top and Bottom Temeperature and Total Reflux\n",
+ "import numpy as np\n",
+ "from scipy.optimize import root\n",
+ "\n",
+ "#Variable Declaration\n",
+ "Name = np.array(['A','B','C','D']) #Component Nomenclature C4,C5,C6,C7\n",
+ "xF = np.array([0.40,0.25,0.20,0.15]) #Feed composition in molfrac\n",
+ "\n",
+ "xW = np.array([0.0011,0.0704,0.5068,0.4217]) #Bottoms composition in molfrac\n",
+ "K993 = np.array([3.12,1.38,0.60,0.28]) #Values of K at 99.3 \u00b0C\n",
+ "K670 = np.array([1.75,0.65,0.26,0.10]) #Values of K at 67.0 \u00b0C for first trial\n",
+ "K132 = np.array([5.00,2.35,1.15,0.61]) #Values of K at 132.0 \u00b0C for first trial\n",
+ "yD = np.zeros(4)\n",
+ "xW = np.zeros(4)\n",
+ "\n",
+ "F = 100. #Molar feed rate to column, mol/h\n",
+ "xBD = 0.90 #Fraction of B in Distillate\n",
+ "xCW = 0.90 #Fraction of C in Bottoms\n",
+ "hk = 2 #Heavy key index\n",
+ "lk = 1 #Light key index \n",
+ "q = 1.0 #Value of q as feed is saturated \n",
+ "\n",
+ "#Calculations\n",
+ "mBD = F*xF[lk]*xBD\n",
+ "mBW = F*xF[lk]-mBD\n",
+ "mCW = F*xF[hk]*xCW\n",
+ "mCD = F*xF[hk]-mCW\n",
+ "\n",
+ "#With assumption of no moles of D in Distillate and no moles of A in Bottoms\n",
+ "mAD = F*xF[0]\n",
+ "mDW = F*xF[3]\n",
+ "\n",
+ "#Calculate Flow rate of Distillate and Bottoms\n",
+ "D = mAD+mBD+mCD\n",
+ "W = mBW+mCW+mDW\n",
+ "yD[0] = mAD/D\n",
+ "yD[1] = mBD/D\n",
+ "yD[2] = mCD/D\n",
+ "xW[1] = mBW/W\n",
+ "xW[2] = mCW/W\n",
+ "xW[3] = mDW/W\n",
+ "\n",
+ "#Dew Point Calculations for Distillate with initial guess of 67\u00b0C\n",
+ "alp67 = K670/K670[hk]\n",
+ "alphalkD = alp67[lk]\n",
+ "\n",
+ "ybyalp = yD/alp67\n",
+ "Syba = 0.0\n",
+ "\n",
+ "for j in range(len(yD)):\n",
+ " Syba = Syba + ybyalp[j]\n",
+ " \n",
+ "\n",
+ "x = ybyalp/Syba\n",
+ "Sx = 0.0\n",
+ "for j in range(len(xW)):\n",
+ " Sx = Sx + x[j]\n",
+ "\n",
+ "#Bubble Point Calculations for Bottoms with initial guess of 132\u00b0C\n",
+ "alp132 = K132/K132[hk]\n",
+ "alpixi = xW*alp132\n",
+ "Sxa = 0.0\n",
+ "for j in range(len(yD)):\n",
+ " Sxa = Sxa + alpixi[j]\n",
+ "\n",
+ "y = alpixi/Sxa\n",
+ "Sy = 0.0\n",
+ "for j in range(len(yD)):\n",
+ " Sy = Sy + y[j]\n",
+ "\n",
+ "alphalkW = alp132[lk]\n",
+ "\n",
+ "alpavg = sqrt(alphalkD*alphalkW)\n",
+ "\n",
+ "Nm = log((yD[lk]/yD[hk])*(xW[hk]/xW[lk]))/log(alpavg)\n",
+ "alpavA = sqrt(alp67[0]*alp132[0]) #Average relative volatility of Butane\n",
+ "alpavD = sqrt(alp67[3]*alp132[3]) #Average relative volatility of Butane\n",
+ "\n",
+ "#Distribution of Componenet in Distillate and Bottoms\n",
+ "\n",
+ "DbyWA = alpavA**Nm*yD[hk]*D/(xW[hk]*W)\n",
+ "DbyWD = alpavD**Nm*yD[hk]*D/(xW[hk]*W)\n",
+ "\n",
+ "mAW = xF[0]*F/(1.0+DbyWA)\n",
+ "mAD = mAW*DbyWA\n",
+ "mDW = xF[3]*F/(1.0+DbyWD)\n",
+ "mDD = mDW*DbyWD\n",
+ "\n",
+ "#Revised Distillate and Bottoms Compositions\n",
+ "D = mAD+mBD+mCD+mDD\n",
+ "W = mAW+mBW+mCW+mDW\n",
+ "yD[0] = mAD/D\n",
+ "yD[1] = mBD/D\n",
+ "yD[2] = mCD/D\n",
+ "yD[3] = mDD/D\n",
+ "\n",
+ "xW[0] = mAW/W\n",
+ "xW[1] = mBW/W\n",
+ "xW[2] = mCW/W\n",
+ "xW[3] = mDW/W\n",
+ "\n",
+ "#Dew Point Calculations for Distillate with revised compositions\n",
+ "alphalkD = alp67[lk]\n",
+ "\n",
+ "ybyalp = yD/alp67\n",
+ "Syba = 0.0\n",
+ "\n",
+ "for j in range(len(yD)):\n",
+ " Syba = Syba + ybyalp[j]\n",
+ " \n",
+ "x = ybyalp/Syba\n",
+ "Sx = 0.0\n",
+ "for j in range(len(xW)):\n",
+ " Sx = Sx + x[j]\n",
+ "\n",
+ "#Bubble Point Calculations for Bottoms with revised compositions \n",
+ "alpixi = xW*alp132\n",
+ "Sxa = 0.0\n",
+ "for j in range(len(yD)):\n",
+ " Sxa = Sxa + alpixi[j]\n",
+ " \n",
+ "y = alpixi/Sxa\n",
+ "Sy = 0.0\n",
+ "for j in range(len(yD)):\n",
+ " Sy = Sy + y[j]\n",
+ "\n",
+ "#Results\n",
+ "print \"For Part A\"\n",
+ "print \"Distillate Compositions are:\"\n",
+ "for i in range(len(yD)):\n",
+ " print Name[i],\":\",round(yD[i],4)\n",
+ "print \"Bottoms Compositions are:\"\n",
+ "for i in range(len(xW)):\n",
+ " print Name[i],\":\",round(xW[i],4)\n",
+ "print \"Distillate and Bottoms rate are\", round(D,3), \"and\",round(W,3)\n",
+ "\n",
+ "print \"For Part B\"\n",
+ "print \"Dew temperature for top product and Bubble temperature for Bottoms are:\\nguess values of 67 and 132 \u00b0C\"\n",
+ "\n",
+ "print \"For Part C\"\n",
+ "print \"Minimum number of stages including reboiler are:\", round(Nm,3)\n",
+ "print \"Minimum number of stages excluding reboiler are:\", round(Nm-1,3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "For Part A\n",
+ "Distillate Compositions are:\n",
+ "A : 0.6197\n",
+ "B : 0.3489\n",
+ "C : 0.031\n",
+ "D : 0.0004\n",
+ "Bottoms Compositions are:\n",
+ "A : 0.0011\n",
+ "B : 0.0704\n",
+ "C : 0.5068\n",
+ "D : 0.4217\n",
+ "Distillate and Bottoms rate are 64.483 and 35.517\n",
+ "For Part B\n",
+ "Dew temperature for top product and Bubble temperature for Bottoms are:\n",
+ "guess values of 67 and 132 \u00b0C\n",
+ "For Part C\n",
+ "Minimum number of stages including reboiler are: 5.389\n",
+ "Minimum number of stages excluding reboiler are: 4.389\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.7-3 Page Number 687"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Minimum Reflux and Number of Stages at Operating Reflux\n",
+ "import numpy as np\n",
+ "from scipy.optimize import root\n",
+ "\n",
+ "#Variable Declaration\n",
+ "xF = np.array([0.40,0.25,0.20,0.15]) #Feed composition in molfrac\n",
+ "xD = np.array([0.6197,0.3489,0.0310,0.0004]) #Distillate composition in molfrac\n",
+ "xW = np.array([0.0011,0.0704,0.5068,0.4217]) #Bottoms composition in molfrac\n",
+ "K = np.array([3.12,1.38,0.60,0.28]) #Values of K at 99.3 \u00b0C\n",
+ "\n",
+ "hk = 2 #Heavy key index\n",
+ "lk = 1 #Light key index \n",
+ "q = 1.0 #Value of q as feed is saturated \n",
+ "alavlk,D,W = 2.258,64.484,35.516 #From Example 11.7-2\n",
+ "#Calculation\n",
+ "al = K/K[hk]\n",
+ "alxF = al*xF\n",
+ "alxD = al*xD\n",
+ "f = lambda x: alxF[0]/(al[0]-x)+ alxF[1]/(al[1]-x)+ alxF[2]/(al[2]-x)+ alxF[3]/(al[3]-x)\n",
+ "sol = root(f,1.1)\n",
+ "theta = sol.x[0]\n",
+ "Rm = alxD[0]/(al[0]-theta)+ alxD[1]/(al[1]-theta)+ alxD[2]/(al[2]-theta)+ alxD[3]/(al[3]-theta) - 1.0\n",
+ "R = 1.5*Rm\n",
+ "ordiR = R/(1+R)\n",
+ "Param = Rm/(1+Rm)\n",
+ "#From Fig 11.7-3\n",
+ "Nm = log((xD[lk]/xD[hk])*(xW[hk]/xW[lk]))/log(alavlk)\n",
+ "NmbyN = 0.49 \n",
+ "N = Nm/NmbyN\n",
+ "ff = lambda Ne:log(Ne/(N-Ne))-0.206*log((xF[hk]/xF[lk])*(W/D)*(xW[lk]/xD[hk]))\n",
+ "sol = root(ff,5)\n",
+ "Ne = sol.x[0]\n",
+ "#Results\n",
+ "print \"For Part A \"\n",
+ "print \"Minimum reflux is\",round(Rm,3)\n",
+ "print \"For Part B\"\n",
+ "print \"Number of Theoretical Stages including reboiler are\", round(N,1)\n",
+ "print \"Number of Theoretical Stages excluding reboiler are\", round(N-1,1)\n",
+ "print \"For Part C\"\n",
+ "print \"Feed is introduce on tray number\", round(Ne,0),\"from top\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "For Part A \n",
+ "Minimum reflux is 0.395\n",
+ "For Part B\n",
+ "Number of Theoretical Stages including reboiler are 11.0\n",
+ "Number of Theoretical Stages excluding reboiler are 10.0\n",
+ "For Part C\n",
+ "Feed is introduce on tray number 6.0 from top\n"
+ ]
+ }
+ ],
+ "prompt_number": 39
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter12.ipynb b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter12.ipynb new file mode 100755 index 00000000..dd302d0c --- /dev/null +++ b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter12.ipynb @@ -0,0 +1,1014 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:e411d60f25996f3b9e2550f135c48ac7fbdc47ae72fe918b9fb1f21a04765972"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 12: Liquid-Liquid and Fluid Solid Separation Processes"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.1.1 Page Number 699"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Adsorption Isotherm for Phenol in Wastewater\n",
+ "import numpy as np\n",
+ "from scipy.optimize import curve_fit\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "#Variable Declaration\n",
+ "c = np.array([0.322,0.117,0.039,0.0061,0.0011]) #kg Phenol per m3 solution\n",
+ "q = np.array([0.150,0.122,0.094,0.059,0.045]) #kg Phenol per kg Carbon\n",
+ "\n",
+ "#Langmuir Isotherm Fitting function\n",
+ "def fit_func(x, q0, K):\n",
+ " return q0*c/(K+c)\n",
+ "\n",
+ "params = curve_fit(fit_func, c, q)\n",
+ "[q0, K] = params[0]\n",
+ "\n",
+ "#Results\n",
+ "plt.grid(True, which='both')\n",
+ "print 'Langmuir Isotherm Fitting parameters are '\n",
+ "print \"q0 = \", round(q0,3) ,\" K = \", round(K,3)\n",
+ "\n",
+ "qi = q0*c/(K+c)\n",
+ "plt.figure(1)\n",
+ "plt.title('Langmuir Isotherm Fit giving a poor fit')\n",
+ "plt.ylabel('q, kg phenol adsorbed/kg carbon')\n",
+ "plt.xlabel('c, kg phenol/m3 waste water')\n",
+ "plt.plot(c,q,'ro-',label='Expt. Data')\n",
+ "plt.plot(c,qi,'bo-',label='Fitted Data')\n",
+ "plt.legend(loc = 'lower right')\n",
+ "\n",
+ "#Freundlich Isotherm Fitting function\n",
+ "def fit_func(c, K, n):\n",
+ " return K*c**n\n",
+ "\n",
+ "params = curve_fit(fit_func, c, q)\n",
+ "[K, n] = params[0]\n",
+ "\n",
+ "qi = K*c**n \n",
+ "\n",
+ "plt.figure(2)\n",
+ "plt.grid(True, which='both')\n",
+ "plt.title('Freundlich Isotherm Fitting')\n",
+ "plt.ylabel('q, kg phenol adsorbed/kg carbon')\n",
+ "plt.xlabel('c, kg phenol/m3 waste water')\n",
+ "\n",
+ "plt.loglog(c,q,'ro-',basex=10,basey=10,label='Expt. Data')\n",
+ "plt.loglog(c,qi,'bo-',basex=10,basey=10,label='Fitted Data')\n",
+ "plt.legend(loc = 'best')\n",
+ "plt.plot()\n",
+ "\n",
+ "#plt.LogFormatterExponent(base=10)\n",
+ "#Results\n",
+ "print 'Freundlich Isotherm Fitting parameters are '\n",
+ "print \"K = \", round(K,3) ,\" n = \", round(n,3)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Langmuir Isotherm Fitting parameters are \n",
+ "q0 = 0.134 K = 0.007\n",
+ "Freundlich Isotherm Fitting parameters are "
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "K = 0.194 n = 0.223\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "iVBORw0KGgoAAAANSUhEUgAAAY8AAAEZCAYAAABvpam5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXlclNX+x9/DooAgoKLEIiQg4gbupimYKaJplpmUiZS3\ntFsupaWJFuaWpuVWV+taXs3M7HoTRc00QSzJJZdf4opgiCuKiMo2cH5/TIyOLDPILDx63q/XvJhz\nnrN8nmeG851zvmdRCSEEEolEIpFUAStLC5BIJBKJ8pDGQyKRSCRVRhoPiUQikVQZaTwkEolEUmWk\n8ZBIJBJJlZHGQyKRSCRVRhoPiVH566+/cHJyoibMALeysuLMmTOWllEpffv2ZdWqVUYpqyrP/vXX\nX2fGjBlGqVepXLp0ie7du1O3bl0mTJjA7NmzefXVVy0tSzkISY3Cx8dHbN++3dIyzIox7jk0NFT8\n+9//1olTqVQiNTW1WuUai+HDh4tatWoJR0dH7ev777/XSfP111+Lxx9/3EIKHz4+/PBDMWjQoHKv\npaWlCZVKJYqLi82sSjnInkcNQ6VSoVKpLC3DJAghyv1VbIx7NuUzU6vV1S5DpVIxceJEcnNzta/B\ngwcbQZ3EEEpKSsrEnT17lqCgoErzlfd9lWiQxkMhXL9+naeeeoqGDRtSr149+vfvT2ZmpvZ6WFgY\n77//Po8//jh169YlPDycq1evaq+vXLkSHx8fGjRowIwZM/D19eWXX34BIDY2lsGDBzNs2DDq1q1L\n69atOXXqFLNnz6ZRo0b4+Pjw888/a8vy9fVlx44d2nBsbCzDhg0DID09HSsrK+0/a1hYGFOmTKFr\n167UqVOHtLS0Su/z9OnThIaG4uLigpubG5GRkdprv/32Gx06dMDFxYWOHTuyZ88eAGJiYkhKSuLN\nN9/EycmJMWPGaPP8/PPPNG3aFFdXV958802dur766iuaN29OvXr16NOnD3/99Zf2mpWVFZ9//jkB\nAQEEBgaSmJiIl5cXH3/8MQ0bNsTDw4Mff/yRzZs307RpU+rXr89HH32k51MsS1hYGMuXL+f48eOM\nGjWKPXv24OTkRL169cpNn5aWph1q6dWrF2+88Ua5z37t2rV06NBBJ++nn37K008/DUB0dDRTp04F\nICEhAS8vLz755BMaNWqEh4cHK1as0Oa7evUq/fv3x9nZmY4dOzJlyhS6detW4T0NHjyYRx55BBcX\nF0JDQ0lJSan0/t977z06deqEs7MzAwcOJDs7W3s9Li6OFi1a4OrqSo8ePTh+/Lj22rFjxwgLC8PV\n1ZWWLVuyceNG7bXo6Ghef/11+vbti6OjIwkJCTr1RkdHs3LlSubOnUvdunXZsWOHzve4e/fuALi4\nuODk5MTvv/9e4T08tFi45yO5B19fX7Fjx44y8VevXhXr168XeXl5Ijc3VwwePFgMHDhQez00NFT4\n+/uLU6dOiby8PBEWFiYmTZokhBDi6NGjwtHRUfz666+isLBQTJgwQdja2mrr+eCDD4SdnZ3Ytm2b\nUKvVIioqSvj4+IhZs2YJtVotvvzyS/Hoo49WqDE2Nla89NJLQoiy3f3Q0FDh4+MjUlJSRHFxsSgq\nKqr0niMjI8WsWbOEEEIUFBSIX3/9VXv/Li4u4ptvvhHFxcVizZo1wtXVVVy7dk0IIURYWJhYvny5\nTrkqlUr0799f5OTkiL/++ku4ubmJrVu3CiGE+PHHH4W/v784fvy4KC4uFjNmzBBdunTRydu7d2+R\nnZ0t8vPzxc6dO4WNjY2YPn269pnUr19fvPjii+LmzZvi6NGjwt7eXqSnp5f7uUZHR4spU6aUib9b\n94oVK/QOW3Xu3Fm88847oqioSOzevVvUrVtXDBs2rMyzv3XrlnBychKnTp3S5m3fvr1Yu3atVs/U\nqVOFEEJ7bx988IFQq9Vi8+bNwsHBQVy/fl0IIcSQIUPECy+8IPLy8kRKSorw9vYW3bp1q1Dj119/\nLW7evCkKCwvFuHHjREhISIVpQ0NDhaenpzh69Ki4deuWGDRokPa7dOLECVGnTh2xfft2oVarxdy5\nc4W/v78oKioShYWFws/PT8yePVsUFRWJX375RTg5OYkTJ04IITTDhM7OzuK3334TQgiRn59fpu67\nn4EQut/j9PR0OWylB9nzUAj16tXjmWeewc7ODkdHRyZPnkxiYqL2ukql4uWXX8bf3x87Ozuef/55\nDh06BMAPP/zAgAED6NKlC7a2tnz44Ydlhnm6d+9Or169sLa25rnnnuPq1atMmjQJa2trhgwZQnp6\nOjdu3ChXm6ika69SqYiOjiYoKAgrKytsbGwqvc9atWqRnp5OZmYmtWrVokuXLgDEx8cTGBjI0KFD\nsbKyIjIykmbNmhEXF1epjkmTJlG3bl28vb3p0aMHhw8fBmDp0qW89957BAYGYmVlxXvvvcehQ4fI\nyMjQ5n3vvfdwcXGhdu3aANja2hITE6N9JteuXWPcuHHUqVOH5s2b07x5c+0zL+8ZzZs3D1dXV1xd\nXWnYsGGVniNoHOL79+/nww8/xMbGhq5duzJgwIBy8zk4OPD000+zZs0aAE6dOsWJEycYMGBAufXZ\n2try/vvvY21tTUREBI6Ojpw4cYLi4mLWr1/PtGnTsLOzIygoiOHDh1eqNTo6mjp16mBra8sHH3zA\n4cOHyc3NLTetSqUiKiqK5s2b4+DgwPTp0/n++++1vaennnqKnj17Ym1tzYQJE8jLy+PXX38lOTmZ\nW7duMWnSJGxsbOjRowdPPfWU9n4BBg4cyGOPPQag/Qzv5e77qOi9pHyk8VAIt2/fZuTIkfj6+uLs\n7ExoaCg5OTk6X3J3d3fte3t7e27evAnA+fPn8fLy0rlWv359nfLvbszs7e1p0KCB1sDY29sDaMur\nKt7e3gannTt3LkIIOnbsSMuWLfn666+199C4cWOdtD4+Ppw/f14bLs/vcfczcXBw0N7D2bNnGTt2\nrLYxL30edw8F3qu7fv36ZZ5Jo0aNtNft7e25detWufelUql45513yM7OJjs7m8uXL+t5EmU5f/48\n9erVw87OrkKNd/Piiy9qG9Nvv/1W++OjPOrXr4+V1Z3moPRZXblyBbVarVPP3d+leykpKWHSpEn4\n+/vj7OzMo48+ikqlIisrq8I8d5fduHFjioqKyMrK4sKFCzqfuUqlwtvbm8zMTC5cuFDm3u/+PpSm\nlZgOaTwUwvz58zl58iR79+4lJyeHxMTECh3Q9+Lh4cG5c+e04by8PB1/SFWpU6eOTiN58eLFStNX\nxZndqFEjvvjiCzIzM1m2bBn//Oc/SU1NxdPTk7Nnz+qkPXv2LJ6enlWuAzSN1BdffKFtzLOzs7l1\n6xadO3e+L92GoO+z0lffI488wrVr18jLy9PG3e2nuZcnn3ySK1eucPjwYb777jtefPHFKtUH4Obm\nho2NjU6P7O7397J69Wri4uLYsWMHOTk5pKWl6f2e3n0Pf/31F7a2tri5ueHh4aHzmQshyMjIwMvL\nCw8PDzIyMnTKvfv7cD/c/Twe1EkrxkQajxpIYWEh+fn52pdarebmzZvY29vj7OzMtWvXmDZtWpl8\nFf2DDho0iI0bN7Jnzx4KCwuJjY2tVrc8JCSE7777DrVazf79+/nvf/9b6T9bVepat26d1tC5uLig\n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\nB+ATG4xA5ktqAAAAAElFTkSuQmCC\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x6192b10>"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nCCGEKMvft9MTbHrIZDUAAAAASUVORK5CYII=\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x6230810>"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.2.1 Page Number 700 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Adsorption Isotherm for Phenol in Wastewater\n",
+ "import numpy as np\n",
+ "from scipy.optimize import root\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "#Variable Declaration\n",
+ "M = 1.4 #Mass of activated carbon in kg\n",
+ "S = 1.0 #Surface area of carbon in m2\n",
+ "cF = 0.21 #Concentratio of phenol in feed in kg/m3\n",
+ "K = 0.194020642969 #Freundlich proportionality parameter \n",
+ "n = 0.222977691192 #Freundlich exponential parameter \n",
+ "\n",
+ "#Calculations\n",
+ "#Amount adsorbed + Amount left in equilibrium solution = Amount fed with solution\n",
+ "#M*K*c**n + cF*S = c*S\n",
+ "c = arange(0,0.2,0.00001)\n",
+ "q = K*c**n\n",
+ "q1 = (cF-c)*S/M\n",
+ "plt.grid(True)\n",
+ "plt.plot(c,q1,'r-',c,q)\n",
+ "plt.ylabel('q, kg phenol adsorbed/kg carbon')\n",
+ "plt.xlabel('c, kg phenol/m3 waste water')\n",
+ "f = lambda x: M*K*x**n + x - cF*S\n",
+ "sol = root(f, 0.1)\n",
+ "ce = sol.x[0]\n",
+ "qe = K*ce**n\n",
+ "plt.text(ce+0.01,qe,'Solution')\n",
+ "plt.text(ce+0.05,qe+0.02,'Isotherm')\n",
+ "plt.text(ce+0.05,qe-0.03,'Mass Balance')\n",
+ "plt.plot([0.0,ce,ce],[qe,qe,0.0])\n",
+ "plt.plot(ce, qe,'bo')\n",
+ "x =str(round(ce,4))\n",
+ "plt.text(ce,0.02,'c =' + x)\n",
+ "x =str(round(qe,4))\n",
+ "plt.text(0.001,qe + 0.005,'q =' + x)\n",
+ "ext = (cF-ce)*100/cF\n",
+ "\n",
+ "#Results\n",
+ "print \"Phenol equilibrium amount adsorbrd = \", round(qe,4) , \"kg Phenol/kg carbon\"\n",
+ "print \"Phenol equilibrium amount in solution = \", round(ce,4) , \"kg Phenol/m3 solution\"\n",
+ "print 'Precent Phenol extracted = %3.1f'%(ext), \"%\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Phenol equilibrium amount adsorbrd = 0.1048 kg Phenol/kg carbon\n",
+ "Phenol equilibrium amount in solution = 0.0632 kg Phenol/m3 solution\n",
+ "Precent Phenol extracted = 69.9 %\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x64e97f0>"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.3.1 Page Number 704 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Scaleup of Laboratory Adsorption Column\n",
+ "import numpy as np\n",
+ "from scipy.optimize import curve_fit, root\n",
+ "import matplotlib.pyplot as plt\n",
+ "from scipy.interpolate import interp1d\n",
+ "from scipy.integrate import quad\n",
+ "\n",
+ "#Variable Declaration\n",
+ "d = 4. #Diameter of particle in cm\n",
+ "h = 14. #Length of the bed in cm\n",
+ "m = 79.2 #Mass of carbon in gm\n",
+ "c0 = 600 #Inlet concentration of alcohol in ppm\n",
+ "rho = 0.00115 #Density of air in g/cc\n",
+ "Q = 754. #Flowrate of air (cc/s)\n",
+ "cbyc0brk = 0.01 #Ratio of concentration at break point \n",
+ "tbb = 6.0 #Break point for new coloumn in hr\n",
+ "\n",
+ "#Calculations \n",
+ "t = np.array([0.0,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.2,6.5,6.8])\n",
+ "cbyc0 = np.array([0.0,0.0,0.002,0.030,0.155,0.396,0.658,0.903,0.933,0.975,0.993])\n",
+ "\n",
+ "def bisection(a,b,tol):\n",
+ " c = (a+b)/2.0\n",
+ " while (b-a)/2.0 > tol:\n",
+ " if f2(c) == 0:\n",
+ " return c\n",
+ " elif f2(a)*f2(c) < 0:\n",
+ " b = c\n",
+ " else :\n",
+ " a = c\n",
+ " c = (a+b)/2.0\n",
+ " return c\n",
+ "\n",
+ "f = interp1d(t, cbyc0, kind='cubic',bounds_error=False)\n",
+ "plt.grid(True)\n",
+ "plt.plot(t,cbyc0,'ro')\n",
+ "tt = np.arange(0.0,7.,0.01)\n",
+ "qi =f(tt)\n",
+ "plt.plot(tt,qi,'b-')\n",
+ "plt.fill_between(t,cbyc0,1.,color='0.9')\n",
+ "plt.xlabel('$time, h$')\n",
+ "plt.ylabel('$c/c_0$')\n",
+ "plt.ylim(0.,1.)\n",
+ "plt.xlim(0.,7.)\n",
+ "#PART A\n",
+ "f2 = lambda t: f(t)-cbyc0brk\n",
+ "tb = bisection(0,4.,0.0001)\n",
+ "\n",
+ "f3 = lambda t: 1-f(t)\n",
+ "\n",
+ "tu, err = quad(f3,0.0,tb)\n",
+ "tt, err = quad(f3,0.0,t[10])\n",
+ "LUB = h*tu/tt\n",
+ "LUNB =h*(1-tu/tt)\n",
+ "plt.plot([tb,tb],[0.0,1.],'--')\n",
+ "plt.plot([0.,tb],[0.01,.01],'--')\n",
+ "\n",
+ "#Results PART A\n",
+ "print \"Results for PART A\"\n",
+ "print \"Break point time for c/c0=0.01:\",round(tb,2),\"hr\"\n",
+ "print \"Time for usable capacity of bed:\", round(tu,2), \"hr\"\n",
+ "print \"Time for complete bed length utilization\", round(tt,2),\"hr\"\n",
+ "print \"Length of used bed:\",round(LUB,2),\"cm\"\n",
+ "print \"Length of unused bed:\",round(LUNB,2),\"cm\"\n",
+ "\n",
+ "#PART B\n",
+ "print \n",
+ "print \"Results for PART B\"\n",
+ "LUBB = tbb*LUB/tb\n",
+ "print \"Length of used bed:\",round(LUBB,2),\"cm\"\n",
+ "LBB = LUBB+LUNB\n",
+ "print \"Length of unused bed:\",round(LUNB,2),\"cm\"\n",
+ "\n",
+ "mdot = Q*rho*3600.\n",
+ "OHads = mdot*c0*tt/1e6\n",
+ "Csat = OHads/m\n",
+ "fracBU = LUBB/LBB\n",
+ "\n",
+ "print \"Air flow rate:\", round(mdot,2),\"g air/hr\"\n",
+ "print \"Alcohol adsorbed:\", round(OHads,2), \"g alcohol\"\n",
+ "print \"Saturation Capacity:\", round(Csat,3), \"g alcohol/g carbon\"\n",
+ "print \"Fraction of new bed used:\", round(fracBU,3) \n",
+ "print 'Length of bed %4.1f cm'%LBB"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Results for PART A\n",
+ "Break point time for c/c0=0.01: 3.78 hr\n",
+ "Time for usable capacity of bed: 3.84 hr\n",
+ "Time for complete bed length utilization 5.26 hr\n",
+ "Length of used bed: 10.23 cm\n",
+ "Length of unused bed: 3.77 cm\n",
+ "\n",
+ "Results for PART B\n",
+ "Length of used bed: 16.25 cm\n",
+ "Length of unused bed: 3.77 cm\n",
+ "Air flow rate: 3121.56 g air/hr\n",
+ "Alcohol adsorbed: 9.84 g alcohol\n",
+ "Saturation Capacity: 0.124 g alcohol/g carbon\n",
+ "Fraction of new bed used: 0.812\n",
+ "Length of bed 20.0 cm\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x6538ed0>"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.5-1, Page Number 711"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Material Balance for Equilibrium Layers\n",
+ "\n",
+ "#Variable Declaration\n",
+ "mc = 30. #Mass of isopropy ether in orignal mixture ,kg\n",
+ "ma = 10. #Mass of acetic acid in orignal mixture ,kg\n",
+ "mb = 60. #Mass of water in orignal mixture ,kg\n",
+ "\n",
+ "#Calculations\n",
+ "m = ma+mb+mc\n",
+ "xma = ma/m\n",
+ "xmb = mb/m\n",
+ "xmc = mc/m\n",
+ "\n",
+ "#Extract layer composition from Figure 12.5-3\n",
+ "ya = 0.04\n",
+ "yc = 0.94\n",
+ "yb = 1.- ya - yc\n",
+ "#Raffinate layer composition from Figure 12.5-3\n",
+ "xa = 0.12\n",
+ "xc = 0.02\n",
+ "xb = 1.0 - xa - xc\n",
+ "\n",
+ "#Results\n",
+ "print \"Composition of the orignal mixture for A,B,C reaspectively is \",xma,xmb,xmc\n",
+ "print \"Raffinate layer compositions of A, B, C reaspectively are\", xa,xb,xc\n",
+ "print \"Extract layer compositions of A, B, C reaspectively are\", ya,yb,yc"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Composition of the orignal mixture for A,B,C reaspectively is 0.1 0.6 0.3\n",
+ "Raffinate layer compositions of A, B, C reaspectively are 0.12 0.86 0.02\n",
+ "Extract layer compositions of A, B, C reaspectively are 0.04 0.02 0.94\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.5-2, Page Number 714"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Amounts of phases in Solvent Extraction\n",
+ "\n",
+ "from numpy import linalg\n",
+ "#Variable Declaration\n",
+ "#From Example 12.5-\n",
+ "M = 100 #Mass of activated carbon in kg\n",
+ "yA = 0.04\n",
+ "xA = 0.12\n",
+ "xAM = 0.1\n",
+ "#Calculation \n",
+ "#Balance on A in Feed \n",
+ " # yA*V + xAL = 0.01M\n",
+ " # V + L = M\n",
+ "a = np.array([[yA,xA], [1,1]])\n",
+ "b = np.array([xAM*M,M])\n",
+ "[V, L] = np.linalg.solve(a, b)\n",
+ "\n",
+ "#Results\n",
+ "print 'Kg of extract phase: %3.1f \\nKg of Raffinate phase: %3.1f'%(V,L)\n",
+ "\n",
+ "#from figure 12.5-3 \n",
+ "hg = 4.2\n",
+ "gi = 5.8\n",
+ "L = hg*M/gi\n",
+ "V = M-L\n",
+ "\n",
+ "#Results from Graph \n",
+ "\n",
+ "print 'from Graph'\n",
+ "print 'Kg of extract phase: %3.1f \\nKg of Raffinate phase: %3.1f'%(V,L)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Kg of extract phase: 25.0 \n",
+ "Kg of Raffinate phase: 75.0\n",
+ "from Graph\n",
+ "Kg of extract phase: 27.6 \n",
+ "Kg of Raffinate phase: 72.4\n"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.7-1 Page Number 718"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Material Balance for Counterurrent Stage Process\n",
+ "from numpy import linalg\n",
+ "\n",
+ "#Variable Declaration\n",
+ "Vn1 = 600 #Ispropyl ether (C pure) rate, kg/hr\n",
+ "Lo = 200 #Feed rate, kg/hr\n",
+ "xAL = 0.30 #Wt fraction of Acetic acid A in Feed\n",
+ "yCn1 = 1.0 #Wt fraction of Ether C in solvent feed\n",
+ "xCo = 0.0 #Wt fraction of Ether C in Feed\n",
+ "yAn1 = 0.0 #Wt fraction of Acetic acid solvent feed\n",
+ "#Calculation\n",
+ "M = Vn1 + Lo\n",
+ "xCM = (Vn1*yCn1 + Lo*xCo)/M\n",
+ "xAM = (Vn1*yAn1 + Lo*xAL)/M\n",
+ "\n",
+ "yA1 = 0.08\n",
+ "yC1 = 0.9 \n",
+ "xCn = 0.017\n",
+ "a = np.array([[1,1], [0.017,0.9]])\n",
+ "b = np.array([M,M*xCM])\n",
+ "[Ln,V1] = np.linalg.solve(a, b)\n",
+ "#Results\n",
+ "print \"Co-ordinates for the mixed feed are\", xCM, xAM\n",
+ "print \"Line passing through this intersect phase boundary at yA1 = 0.08 and yC1 = 0.9\" \n",
+ "print \"and xCn = 0.017 this is obtained from fig 12.7-3\"\n",
+ "print \"The amount of Raffinate\", round(Ln,0), \"kg/hr\"\n",
+ "print \"The amount of Extract\", round(V1,0), \"kg/hr\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Co-ordinates for the mixed feed are 0.75 0.075\n",
+ "Line passing through this intersect phase boundary at yA1 = 0.08 and yC1 = 0.9\n",
+ "and xCn = 0.017 this is obtained from fig 12.7-3\n",
+ "The amount of Raffinate 136.0 kg/hr\n",
+ "The amount of Extract 664.0 kg/hr\n"
+ ]
+ }
+ ],
+ "prompt_number": 19
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.7-3 Page Number 722 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Extraction of Nicotine with Immiscible Liquids\n",
+ "import numpy as np\n",
+ "from scipy.interpolate import interp1d\n",
+ "from scipy.optimize import root\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "#Variable Declaration\n",
+ "x = np.array([0,0.001010, 0.00246,0.005,0.00746,0.00988,0.0202]) #Equilibrium Data\n",
+ "y = np.array([0,0.000806, 0.001959,0.00454,0.00682,0.00904,0.0185]) \n",
+ "Lo = 100 #Feed rate, kg/hr\n",
+ "xo = 0.01 #Nicotine concentration in liquid feed, wt fraction\n",
+ "yn1 = 0.0005 #Nicotine concentration in solvent, wt fraction\n",
+ "xn = 0.001 #Nicotine concentration in raffinate\n",
+ "Vn1 = 200 #Kerosene feed rate, kg/hr\n",
+ "\n",
+ "#Calculation\n",
+ "Ld = Lo*(1.-xo)\n",
+ "Vd = Vn1*(1.-yn1)\n",
+ "\n",
+ "m = Ld/Vd\n",
+ "c = yn1 - m*xn\n",
+ "y1 = m*xo + c\n",
+ "f = interp1d(x,y, kind ='linear')\n",
+ "\n",
+ "xx = np.arange(0.0,0.00746,0.0005)\n",
+ "yo = m*xx+c\n",
+ "yy = f(xx)\n",
+ "plt.grid(True)\n",
+ "plt.plot(xx/(1.-xx),yy/(1.-yy)) #Plot equilibrium line \n",
+ "plt.plot([xo,xn],[y1,yn1])\n",
+ "plt.xlabel('x')\n",
+ "plt.ylabel('y')\n",
+ "plt.text(.004, .006, r'$Equilibrium Curve$')\n",
+ "plt.text(.0065, .003, r'$Operating Line$')\n",
+ "\n",
+ "x1 = xo\n",
+ "y1 = y1\n",
+ "plt.plot(x1,y1,'ko')\n",
+ "plt.plot(xn,yn1,'ko')\n",
+ "plt.annotate('$(x_1,y_1)$', xy=(x1,y1), xytext=(0.009,0.005)#,\n",
+ " #arrowprops=dict(facecolor='black', shrink=0.05),\n",
+ " )\n",
+ "plt.annotate('$(x_n,y_n1)$', xy=(xn,yn1), xytext=(0.0012,0.0005)#,\n",
+ " #arrowprops=dict(facecolor='black', shrink=0.05),\n",
+ " )\n",
+ "n = 0\n",
+ "while x1 >= xn:\n",
+ " ff = lambda z: y1 - f(z)\n",
+ " sol = root(ff,0.0001)\n",
+ " x2 = sol.x[0]\n",
+ " y2 = y1\n",
+ " plt.text(x2, y2+0.0002, str(n+1))\n",
+ " plot([x1,x2],[y1,y2]) #Draw Horizontal line to equilibrium curve\n",
+ " x1 = x2\n",
+ " y2 = m*x2+c\n",
+ " plot([x1,x2],[y1,y2]) #Draw Vertical line to equilibrium curve \n",
+ " x1 = x2\n",
+ " y1 = y2\n",
+ " n = n+1\n",
+ "\n",
+ "#Results\n",
+ "print 'Liquid flow rate %4.1f kg water/h' %Ld\n",
+ "print 'Kerosene flow rate %4.1f kg kerosene/h' %Vd\n",
+ "print \"Number of theoretical stages required for given separation are\", n "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Liquid flow rate 99.0 kg water/h\n",
+ "Kerosene flow rate 199.9 kg kerosene/h\n",
+ "Number of theoretical stages required for given separation are 5\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "iVBORw0KGgoAAAANSUhEUgAAAZkAAAEPCAYAAACQmrmQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl4Tdf6wPFvEjFVS2uIITQyIKagSMWUFo2UoqipJara\nXJeruBTt1eqvbSSGtoYqSo1tDKWiEiktMSWRICkaQxBFItQQMWVevz9OnSNEEpydc5Lzfp7H0+6T\ntfZ+9+vYb/Zae7BSSimEEEIIDVibOgAhhBAllxQZIYQQmpEiI4QQQjNSZIQQQmhGiowQQgjNSJER\nQgihGU2LTGhoKA0aNMDFxYWAgIA824wePRoXFxfc3NyIiYkpsO+AAQNo3rw5zZs3p27dujRv3lzL\nXRBCCPEESmm14uzsbEaNGsVvv/1GrVq1aNWqFT169MDV1VXfJiQkhJMnTxIfH8++ffsYMWIEkZGR\n+fZdvXq1vv/48eOpVKmSVrsghBDiCWl2JhMVFYWzszMODg7Y2toyYMAAgoKCcrXZtGkTPj4+ALi7\nu5OSkkJycnKh+iqlWLt2LQMHDtRqF4QQQjwhzYpMYmIitWvX1i/b29uTmJhYqDZJSUkF9t29ezd2\ndnY4OTlptAdCCCGelGZFxsrKqlDtHvepNoGBgQwaNOix+gohhCgams3J1KpVi3PnzumXz507h729\nfb5tzp8/j729PZmZmfn2zcrK4ueff+bgwYP5bj8pKckYuyKEEBbDycmJkydPGm+FSiOZmZnK0dFR\nJSQkqPT0dOXm5qbi4uJytQkODlbe3t5KKaUiIiKUu7t7ofpu2bJFeXp65rt9DXet2Pnkk09MHYLZ\nkFwYSC4MJBcGxj52anYmU6pUKebNm4eXlxfZ2dm88847uLq6snDhQgB8fX159dVXCQkJwdnZmaee\neoqlS5fm2/euNWvWyIT/Izhz5oypQzAbkgsDyYWB5EI7mhUZAG9vb7y9vXN95uvrm2t53rx5he57\n191iJIQQwrzJHf8WYOjQoaYOwWxILgwkFwaSC+1Y/TMGV+JYWVk99pVrQghhqYx97JQzGQsQFhZm\n6hDMhuTCQHJhILnQjhQZIYQQmpHhMiGEEHoyXCaEEKLYkCJjAWS82UByYSC5MJBcaEeKjBBCCM3I\nnIwQQgg9mZMRQghRbEiRsQAy3mwguTCQXBhILrQjRUYIIYRmZE5GCGFSOTlgLb/umg2ZkxFClBhJ\nSeDuDocPmzoSoRUpMhZAxpsNJBcGps5FXBx4eEDv3tC4sUlDMXkuSjJN3ycjhBB52bkT+vWDmTNh\n8GBTRyO0JHMyQogitWYN/Oc/EBgInTqZOhpxP2MfO+VMRghRJJSCL7+E2bPht9+gaVNTRySKgszJ\nWAAZbzaQXBgUZS6ys+H992HZMggPN78CI98L7ciZjBBCU3fuwJtvQkoK7N4NlSqZOiJRlGRORlis\nhQsX8r///Q8/Pz+srKxISEggOTmZJUuWFKp/ZmYmQ4YMITAwkPHjx1OuXDk+++yzXJ/fuXOHwYMH\n07NnTwbnM8N9b58ndeHCBebPn0/VqlWpWLEizzzzDKmpqfj4+Dzxuh/V5cvQowc4OsKSJVCmTJGH\nIB6RzMkIYSTu7u688sorvPvuu/rPNm7cWOj+tra2+qLg5OREnTp1Hvi8XLly2Nvb06pVq0Kv60mc\nPn0aX19f1qxZw3PPPQfAyJEj6d279xOv+9Fjga5doU8f+OILueHSUslfuwWQ8WaDe3MRGRlJ27Zt\nAQgODgZ0hedxREVFPbTv0aNHqV+//mOt91G99dZbTJo0SV9gAJo3b07Lli0faKvl9yI6Gtq1g7Fj\nYdo08y8w8m9EO5qeyYSGhjJmzBiys7MZPnw4EydOfKDN6NGj2bJlC+XLl2fZsmU0b968wL5z585l\n/vz52NjY0K1bNwICArTcDVFCRUdH4+DgwPjx47Gzs6Nbt27UqFGDH3/8kczMTNLT00lLSyM1NZXO\nnTvz4osvMnjwYFauXMmpU6cIDg6mZs2a9O3bl0uXLlGlSpUHPs/MzOTs2bMEBwezZ88eXn31VUJC\nQkhJSSElJYWRI0dSq1YtNm/eTM2aNalfvz5BQUEPbG/37t2sX7+ejh07opQiLCyMrl27cvnyZQCG\nDBlCeHg4N27coNN91wUPGDCAhISEB9b7zjvvsHv3boKDg3PFc+DAAezt7WnZsiWffPIJy5cvZ8uW\nLRw7dozSpUvTp08fqlev/tC8bt4Mw4bB4sW6oTJh2TT7/SI7O5tRo0YRGhpKXFwcgYGBHD16NFeb\nkJAQTp48SXx8PIsWLWLEiBEF9t2xYwebNm3i0KFDHDlyhPHjx2u1CyWGp6enqUMwG/fm4tChQ3z0\n0UeMHz+e1q1bk56ezh9//MHWrVvx8fHh8uXL3Lx5E1tbW5RSJCQkUKFCBQAuXrxI5cqVycjIIDU1\nlWefffaBz+9uo1evXnTv3p3s7GzKlCnD008/Te/evVm+fDnt27cnOTmZypUrk56ezo0bN/LcnpWV\nFQD29vb07t2bQ4cO0aFDB7p3787BgwcBiIiIyPPvukKFCnmu19PTk2rVquWKp1SpUlSrVo20tDQc\nHBxwcnLir7/+ws/Pj7Fjx+Lq6srNmzcfmt+FC+Hdd+GXX4pXgZF/I9rRrMhERUXh7OyMg4MDtra2\nDBgwgKCgoFxtNm3apJ+MdHd3JyUlheTk5Hz7fvvtt0yePBlbW1sAqlatqtUuiBLsxo0b2NjYYG1t\nTeXKlWnbti3bt29nzZo19Pjn6Hjw4EHGjh3LwYMHadOmDeHh4Xh4eADg4eFBUFAQr732GlFRUbRu\n3TrX53fXERMTQ8eOHQGIi4ujRo0a7N+/n5deeoky/8yC3+3Ts2dPPDw88txeu3btOHXqFK1ateL2\n7dtUrlyZChUqEBkZSbNmzQAoVaoU5cqVy7WfGRkZbNu27aHrrV+/fq542rRpw8aNG/H29gagUaNG\nBAUF4ezszObNm7GyssLZ2fmBfCoFH32ku4N/927d88iEAA2LTGJiIrVr19Yv29vbk5iYWKg2SUlJ\nD+0bHx/Prl27ePHFF/H09GT//v1a7UKJIePNBndzER0djZubG6CbdLe2tubkyZPcuHGD+vXrk5GR\nwe3btylXrpz+wB0REUGLFi3Yt28fN27cwMrKisOHD3PgwAFatmzJjh079J8fOnQIgJSUFBwdHbl2\n7RqlSpWiTp06pKen639JAkhNTc3VJ6/t3blzh7JlywKwf/9+fVHbtGkT7du359ChQ3Tr1o3IyMhc\nVwatWbOGl19+Oc/1zp8/H6XUA/HcPRvbv38/L774ImXLlqVnz550796d9u3bc+nSpVw5zcgAHx/4\n/XfdPTB51CCzJ/9GtKPZnMzd0/uCPOqlcllZWVy7do3IyEiio6Pp168fp0+fzrPt0KFDcXBwAKBS\npUo0a9ZMf1p890sly5a1DLoCM2XKFGxtbVmyZAl37txh8eLFDBw4kMGDB/Prr78yb948ypcvD0Dt\n2rX59NNPSU5O5vfff2fYsGHs2LGDzMxM0tLScHJyYvny5XTr1o2srCyqVavGvn37yMjI4PXXX2fz\n5s3Exsbi4+PDX3/9xQsvvJArvuzsbDIzM9m3bx8eHh55bm/FihXUrFkTgCNHjvDMM88QFhZGjRo1\n2LdvHzVq1ODq1auMGzeO8ePHY21tja2tLePGjcPGxoawsDBycnJYv349pUqVYsGCBdjb23P27NkH\n4unQoQOffvopTz31FOPHj6d///6MGTOGo0ePUqdOHfr27atv37y5J336QFpaGFOnQtWq5vX3Xdjl\n2NhYs4qnKJfDwsJYtmwZgP54aVRKIxEREcrLy0u/7Ofnp/z9/XO18fX1VYGBgfrl+vXrq+Tk5Hz7\ndu3aVYWFhel/5uTkpC5fvvzA9jXcNWEBli5dqlavXm3qMMza+fNKNW2q1L//rVRWlqmjEcZi7GOn\nZsNlLVu2JD4+njNnzpCRkZFrrPuuHj16sGLFCkB3OWmlSpWws7PLt2+vXr3Yvn07ACdOnCAjI4PK\nlStrtRvCAsXGxrJw4ULOnz9v6lDM1pEj0KaN7k7+efPAxsbUEQmzZdSSdZ+QkBBVr1495eTkpPz8\n/JRSSi1YsEAtWLBA32bkyJHKyclJNW3aVB04cCDfvkoplZGRod566y3VuHFj1aJFC7Vjx448t63x\nrhUrD8uRJZJcGDxuLrZvV6pqVaV++MG48ZiSfC8MjH3slMfKWICwsDD9WKylk1wYPE4ufvwRxozR\nPa7/pZe0icsU5HthYOxjpxQZIUSBlILp0+GbbyAkxPRvshTakWeXCSGKVHa27iVje/dCRATUqmXq\niERxYuZPFBLGcO/lu5ZOcmFQmFzcvg29e0N8vO4my5JaYOR7oR0pMkKIPP39N7z8MlSsCMHB8Mwz\npo5IFEcyJyOEeMDJk7rH9A8YAJ99BoW8t1qUAMY+dsqZjBAil337oH17+OAD+PxzKTDiyUiRsQAy\n3mwguTDIKxdBQdC9O3z3Hbz3XtHHZCryvdCOXF0mhABg/nzdmUtICBTwIk8hCk3mZISwcDk58OGH\n8PPPsGULODqaOiJhSnKfjBDCaNLTdW+xTEjQ3QdTpYqpIxIljczJWAAZbzaQXBhs3hyGtzfcuaN7\nF4wlFxj5XmhHiowQFujcOd1d/I0bw7p1cN8LNYUwGpmTEcLCHDoE3brpHnQ5bpxcoixykzkZIcRj\n+/13GDgQ5s6F/v1NHY2wBDJcZgFkvNnAknOxciUMGgQ//aQrMJaci/tJLrQjRUaIYmTYsGHY2dnR\npEmTQvdRCvz8YMoU2LEDOnTQMEAh7iNzMkIUI7t376ZChQoMGTKEw4cPF9g+KwtGjdI9KiY4GGrW\nLIIgRbEmczJCWLD27dtz5syZQrW9dUv3gMuMDNi1C55+WtvYhMiLDJdZABlvNrCUXFy8qHs9cpUq\nsHlz3gXGUnJRGJIL7UiREaKEOXECPDzA2xu+/x5sbU0dkXgc6enpmq4/LS1N0/XfJUXGAnh6epo6\nBLNR0nMREaGb2P/wQ/j00/zvgSnpuXgU5paLzZs3c+PGDU23cf78eX777TdNtwFSZIQoMTZuhB49\nYOlSeOcdU0cjHteFCxdITU2lisbP+XF2diYuLo47d+5ouh0pMhZAxpsNinsuBg4ciIeHBydOnKB2\n7dosXboUgHnzYORICA3VDZMVRnHPhTGZUy6WLl3K66+/XiTb6tatG4GBgZpuQ9MiExoaSoMGDXBx\ncSEgICDPNqNHj8bFxQU3NzdiYmIK7Dt16lTs7e1p3rw5zZs3JzQ0VMtdEMKsBAYGkpSURHp6OufO\nncPH520++EBXZPbsgRdeMHWE4kldunSJcuXKkZ2dzY8//sjnn3/O8uXLGTlyJKdPny6w/5EjR/j8\n88+JjIwEYOjQoQ9t6+TkVKhL4Z+EZkUmOzubUaNGERoaSlxcHIGBgRw9ejRXm5CQEE6ePEl8fDyL\nFi1ixIgRBfa1srJi3LhxxMTEEBMTQ9euXbXahRLD3MabTakk5SI9Hd58E8LDdY/pr1v30fqXpFw8\nKXPKxd0J+T/++IM+ffrg6OhITk4Ob7zxBjVq1Ciw/+3bt7G1tUUpxdGjR6latWq+7bOysowS98No\nVmSioqJwdnbGwcEBW1tbBgwYQFBQUK42mzZtwsfHBwB3d3dSUlJITk4usK/cZCks3bVr4OUFmZmw\nbRtUrmzqiISxZGZmAtCiRQvKlClDREQEnp6eeHp6Uu6fx2UHBQWRlJSUZ//WrVtz8OBB2rRpQ2Rk\nJG3bts23z+3btzXaEx3NikxiYiK1a9fWL9vb25OYmFioNklJSfn2nTt3Lm5ubrzzzjukpKRotQsl\nhjmNN5taScjF2bPQrh00awZr1z7+Y/pLQi6MxZxyYWNjA0B0dDSXL1/myJEj1K1bl927dwOQnJzM\n8uXLH/hlOyEhQf//5cuXByAyMpI2bdo8tA+AtbWuDAQHB+Pl5WX0/dGsyFgV8vnhj3pWMmLECBIS\nEoiNjaVGjRr897//fWjboUOHMnXqVKZOncrXX3+d64sUFhYmy7Jc7JZjY3X3wHh6htGrVxj/HB8e\na32xsbEm3x9zWY6NjTWbeMqXL09YWBjffvstGzZsoG3btnz22Wf6Oevq1atTsWJFwsPD9f3XrVtH\nu3bt9Ms5OTlMnTqVAwcOYGdnx7Fjx6hYseID21NKkZKSQqdOnRgwYABbt27F6JRGIiIilJeXl37Z\nz89P+fv752rj6+urAgMD9cv169dXycnJheqrlFIJCQmqcePGeW5fw10TwiS2blWqalWl1q41dSRC\nSzNmzFBXr17Nt83UqVPV+fPnc322Y8cOpZRS3333ndq+fbs6fvy4CggIyLdPbGysWr16teryShcF\n6P8Yk2ZH4szMTOXo6KgSEhJUenq6cnNzU3FxcbnaBAcHK29vb6WUrii5u7sX2DcpKUnf/8svv1QD\nBw7Mc/tSZERJsmyZUtWqKcWOHUrpHqwsf0ronxRQC/P5+UVQA0GtvO/z0Hv+uwnUd6CyC+gz6542\nd/8UmyKjlFIhISGqXr16ysnJSfn5+SmllFqwYIFasGCBvs3IkSOVk5OTatq0qTpw4EC+fZVSavDg\nwapJkyaqadOmqmfPnio5OTnPbUuRMbj7G44ofrnIyVHqs8+UcnBQKi5O6YqMkRS3XGjJ3HKxa9cu\n9ddff2m2/utp19XYFWNV5XGVVfcfu6vW7VurYncmY2pSZAzM7R+QKRWnXGRmKvXuu0o1b67U3RN4\nKTLasJRcXLx5UX3424eqckBlNWj9IPVH8h9KKaU2b96snJycNCky8j4ZIczQzZu6t1fm5OiuILv7\nFGWrsDCUGd3TIYqHMylnmBU+ix8O/8CAxgMY7zEex2cdc7UJDg5m7ty5/Prrr0Y9dkqREcLMXLwI\n3bqBmxssWJD7KcpSZMSj+PPSnwTsDSA4Pph3W7zLmBfHUL1C9Xz7GPvYKc8uswD3Xipp6cw9F8eP\nQ5s28NprsHixto/pN/dcFKWSlovI85H0XN2TTis64VrFlVOjT+Hf2b/AAqMFeTOmEGZi717o0wf8\n/GDYMFNHI4obpRTbTm9j2p5pJFxLYILHBFb3WU0528e8W9dIZLhMCDOwfj3861+wapXucTEPI8Nl\n4n7ZOdlsOLoB/73+pGelM6ndJPo36o+tzeOdBhv72ClnMkKY2Jw5EBAAv/4KLVqYOhpRXKRnpbPq\n0Cqmh0/nuXLP8UnHT+herzvWVuY1C2Je0QhNlLTx5idhTrnIyYHx4+Hbb3VDZUVdYMwpF6ZWnHJx\nM+MmX0Z8idMcJ9bFrWNR90WEDwunR/0eZldgQM5khDCJtDTw8YELF3QF5rnnTB2RMHdXbl9hbtRc\nvon+hpccXmLTwE20qGH+p74yJyNEEbt6FXr1gurVYcUKKFu28H1lTsbynE89z6zwWSz/Yzl9XPvw\nQdsPcKnsotn25BJmIYqxixfB01P3BsvVqx+twAjLcvzycd4Jege3BW7YWNtweMRhvuvxnaYFRgtS\nZCxAcRpv1popc5GYqCswffrAl1+if0y/qcj3wsCccnEg6QB91/al/dL2PF/peeL/E8/MV2ZS65la\npg7tscicjBBF4K+/oFMnGD4cJk0ydTTC3Cil2HFmB9P2TOPY5WP8t81/Wd5rOU+VfsrUoT0xmZMR\nQmOnTukKzJgxuj9PQuZkSpYclcOm45uYtmca19OuM7HtRN5s+ialbUqbLCa5T0aIYuT4cejcGT76\nSHezpRAAmdmZ/Hj4RwL2BvBU6aeY3G4yPev3xMbaxtShGZ3MyVgAcxpvNrWizMWRI/Dyy/DZZ+ZZ\nYOR7YVBUubideZu5++biPNeZFYdWMMd7DlHDo+jt2rtEFhiQMxkhNHHwILz6Knz9NQwYYOpohKld\nu3ONb6K/YW7UXNrWbsu6N9bRulZrU4dVJGRORggj27cPevTQPab/9deNu26ZkyleLty4wFeRX7Ek\nZgmv1XuNiW0n4lrV1dRh5UvmZIQwY3v2QO/esHSp7p0wwjKdunqK6Xunsy5uHYObDibGN4Y6FeuY\nOiyTkDkZCyBj7wZa5uL333UF5scfi0eBke+FgbFyEZscy8D1A3Ff7E61p6pxfNRxZnvPttgCA3Im\nI4RRbNmiexbZTz9Bhw6mjkYUtd1/7Wbanmn8cfEPxr44loXdF/JMmWdMHZZZkDkZIZ5QUBC8957u\nvy++qO22ZE7GfCilCI4Pxn+PP8k3k/mg7QcMcRtC2VLF+1lBMicjhBlZuxZGj9adyci7YCxDVk4W\na/9ci/8ef6ytrJncbjJ9G/YtsZcgPymZk7EAMvZuYMxcrFihu4N/27biWWDke2FQmFykZaXxbfS3\n1JtbjwX7FxDQOYAY3xj6N+4vBSYfmhaZ0NBQGjRogIuLCwEBAXm2GT16NC4uLri5uRETE1PovrNm\nzcLa2pqrV69qFr8QD7NoEXz4oW6yv0kTU0cjtJSankrAngDqzq5LyMkQVr6+kl1v78LbxRsrKytT\nh2f+lEaysrKUk5OTSkhIUBkZGcrNzU3FxcXlahMcHKy8vb2VUkpFRkYqd3f3QvU9e/as8vLyUg4O\nDurKlSt5bl/DXRMWbs4cpZ5/Xqn4+KLfNjt2FP1GLdTFmxfV5N8mq8oBldWb699Uh5IPmTqkImHs\nY6dmZzJRUVE4Ozvj4OCAra0tAwYMICgoKFebTZs24ePjA4C7uzspKSkkJycX2HfcuHFMnz5dq9CF\neKiZM2H2bNi5E5ydTR2N0MKZlDOMChlFg3kNSElLIerdKFb1XkUTOzllfRyaFZnExERq166tX7a3\ntycxMbFQbZKSkh7aNygoCHt7e5o2bapV6CWOjL0bPG4ulNI9g2zxYl2Bef5548ZlCvK9MAgLC+PP\nS38y+OfBvLDoBSqUrkDcyDjmd5uP47OOpg6vWNPs6rLCjlWqR7hU7s6dO/j5+bFt27ZC9R86dCgO\nDg4AVKpUiWbNmuH5z+Wfd/+BybJlLd/1KP2VgrfeCiM8HCIjPbGzK17xP2w5NjbW5H8f5rAceT6S\nUd+PIumpJCYMmsBc77nERsZybP8xqntWN3l8Wi+HhYWxbNkyAP3x0pg0u08mMjKSqVOnEhoaCsC0\nadOwtrZm4sSJ+jb/+te/8PT0ZMA/TxBs0KABO3fuJCEhIc++3bp1o1OnTpQvXx6A8+fPU6tWLaKi\noqhWrVruHZP7ZIQRKAXjxunOXrZuhSpVTBuP3CdjHEoptp7ayrQ90/jr+l9M8JjA283eppxtOVOH\nZnJGP3YadYbnHpmZmcrR0VElJCSo9PT0Aif+IyIi9BP/hemrlJKJf6Gp7GylRoxQyt1dqatXTR2N\njkz8P5ms7Cy19sha1WJhC9Xom0Zq5R8rVUZWhqnDMivGPnZqNidTqlQp5s2bh5eXFw0bNqR///64\nurqycOFCFi5cCMCrr76Ko6Mjzs7O+Pr6Mn/+/Hz73k8uHyyc+4daLFlhc5GdrXtV8uHDujOYZ5/V\nNi5TsKTvRXpWOosPLsb1G1e+ivyKqR2ncmjEId5q+ha2NrYWlYuipukd/97e3nh7e+f6zNfXN9fy\nvHnzCt33fqdPn36yAIXIQ1aW7jlkyckQGgpPFf/XrFusmxk3WXRgEV9GfEnjao357rXv6PB8B/kF\ntQjJs8uEuEdGBgwcCHfuwPr1UM7MhuhlTqZwLt++zNx9c5m/fz4v132ZSW0n0bxGc1OHVSzIs8uE\n0EhaGvTtC6VKwc8/Q5kypo5IPKpz188xK2IWK/5YQd+GfQkfFo5LZRdTh2XR5NllFkDGmw0elovb\nt3Vvs6xQAdats4wCU5K+F8cvH2dY0DDcFrhRyroUh0ccZtFriwpdYEpSLsyNnMkIi3fjBnTvDg4O\n8P33YCPPOiw29iftx3+PP7v+2sWo1qM4Ofokz5V7ztRhiXvInIywaNevg7c3NG4MCxaAtZmf28uc\njO4elx1ndjBtzzSOXz7Of9v8l+EthvNUablCwxhkTkYII7lyBby8wMND9zwyueDIvOWoHIKOBeG/\n15/U9FQmtp3IoCaDKG1T2tShiXyY+e9twhhkvNngbi4uXYKXXoJOnSy3wBSX70VmdibLY5fTeH5j\n/Pb4MbHtRP78958MbTbUaAWmuOSiOJIzGWFxkpJ0xaVfP5g61TILTHFwO/M2iw8uZlbELFyec2GO\n9xw61e0k97gUMzInIyzK2bO6AjNsGEyebOpoHp0lzMlcu3ONb6K/YW7UXNrWbsukdpNoXau1qcOy\nGMY+dhY4XDZnzhyuXbtmtA0KYSqnT0PHjjByZPEsMCXdhRsXmLB1As5znTl17RRhPmFs6L9BCkwx\nV2CRuXjxIq1ataJfv36EhobK2UExJOPNcPw4eHpCr15hjBlj6mjMg7l8L05ePYnvL740mt+IjOwM\nYnxjWNpzKa5VH3xeoVbMJRclUYFF5osvvuDEiRMMGzaMZcuW4eLiwocffsipU6eKIj4hntiRI/Dy\ny/Dpp9Czp6mjEXfFJscy4KcBtFnSBrsKdhwfdZzZ3rOpU7GOqUMTRlSoiX9ra2uqV6+OnZ0dNjY2\nXLt2jb59+9K5c2dmzJihdYziCXmW8DH8/MTE6O6D+fJLGDQIwNPEEZkPU3wvlFLsPrsb/z3+/HHx\nD8a+OJbvXvuOp8s8XeSx3MuS/41orcCJ/9mzZ7NixQoqV67M8OHDef3117G1tSUnJwcXFxezPaOR\niX8RFQWvvQbz50OfPqaOxjiK68S/Uorg+GCm7ZnGpVuX+MDjA4a4DaFMKQt4fk8xU+Q3Y169epUN\nGzbw/H0vNbe2tuaXX34xWiBCO2FhYRb3m9qePdC7t+4xMd27Gz63xFw8TFHkIisni7V/rsV/jz/W\nVtZMbjeZvg37YmNtXs/uke+FdgosMp9++ulDf9awYUOjBiOEMWzfDgMGwA8/QJcupo7GMqVlpbE0\nZikzwmdQu2JtpneZjpeTl9zjYoHkPhlRooSGwuDB8NNPusuVSxpzHy67nnadb/d/y+x9s2lZsyWT\n203Go7ZJ5kBWAAAgAElEQVSHqcMSj0CeXSbEQwQFwbvv6v7rIce1InXp1iW+jvyaRQcW0dW5K1vf\n2koTuyamDkuYAXl2mQWwhHsA1q0DX18ICcm/wFhCLgrLGLk4k3KGUSGjaDCvASlpKUS/G82q3quK\nXYGR74V25ExGFHsrV8LEibB1KzRtaupoLMORS0cI2BtASHwI77V4j6Mjj2JXwc7UYQkzJGcyFqAk\nXzXz3Xe6R8T8/nvhCkxJzsWjepxcRJyLoEdgDzqv6EzDKg05Pfo00zpPI/1qOgEBAfz888/Mnz+f\n4OBg4wd8n8zMTAYOHPhYfRcsWEDlypWZP38+ly9f1ufiSdYpHkKVUCV418Q/5s5Vqk4dpU6cMHUk\nRYcdO4p8mzk5OWpL/BbVcWlH5fC1g/om6ht1O+O2/uenTp1Sr7/+urpz547+sz59+qgrV64YPZa4\nuDj1xRdfPPF6oqOjVZ8+fYwQUclj7GOnnMlYgJI43jxzJnz1FezcCS6Fe407UDJz8bgKykV2TjZr\n/1zLC4teYPzW8QxvMZz4/8Tz71b/ppxtOX27YcOG8fHHH1O2bFn9Z05OTkRERBg95h07dtC8efMn\nXs++ffto3drw4E35XmhH0zmZ0NBQxowZQ3Z2NsOHD2fixIkPtBk9ejRbtmyhfPnyLFu2TP8Feljf\nKVOmsGnTJqysrKhcuTLLli2jdu3aWu6G0Ni5c+cYMmQIly5dwsrKivfee4/Ro0c/tP3nn+vmYXbu\nBHv7IgzUQqRnpbPy0Eqm751OlfJV+NTzU7rV64a11YO/kx44cICUlBSaNWuW6/OkpCSOHz9OVFQU\ntWvXpnr16hw/fpz//ve/bNmyhWPHjlG6dGn69OnDyZMn2bx5MykpKaSkpDBy5EjOnz9PZmYm58+f\np1q1agwfPpwtW7awZMkS/vWvfxEeHs7+/fupWbMmffv2Zffu3axfv56O/1y3/ueff/K///1PH8v3\n339P7dq1CQ8PZ+HChURHRzN06NBcMZ8+fZrNmzcXap3370P16tWN/ddQchj1vOgeWVlZysnJSSUk\nJKiMjAzl5uam4uLicrUJDg5W3t7eSimlIiMjlbu7e4F9U1NT9f3nzJmj3nnnnTy3r+GuCSO7cOGC\niomJUUopdePGDVWvXr0HvitKKZWTo9SHHyrVqJFSFy4UdZTmQcvhstS0VDVz70xVa1Yt1XVVVxWW\nEKZycnLy7TN79mw1YsSIXJ/l5OQoFxcXtWfPHjVjxgwVHByslFLq5ZdfVn/99Zdq166dUkqp33//\nXcXHx6tjx46pzz//XP36668qLS1NHTt2TPn4+CillPL391cRERH6dXfv3l0ppdTevXvVqlWr1A8/\n/KCUUmr37t3q/fffV1FRUUoppYYMGaLv06NHD3Xjxg2VmJioxo4dq5RSqnHjxurGjRu5Yi7sOs+c\nOfPAPpQkxj52ajZcFhUVhbOzMw4ODtja2jJgwACCgoJytdm0aRM+Pj4AuLu7k5KSQnJycr59n37a\n8CC9mzdvUqVKFa12QRSR6tWr638TrlChAq6uriQlJeVqoxSMH6+7RDksDOQXR+O5fPsyH+/4GMc5\njkQlRfHLwF/Y8uYWOjp0LPAO/czMTCpVqpTrs61bt+Lu7k7btm3Zt28fHTp0QClFcnIyGzduxNnZ\nmc2bN2NlZYWzszP169dn//79vPTSS5QpU4ZVq1bRo0cPAP744w/96EZycrL+jMHDw4OgoCB9u3bt\n2nHq1ClatWrF9evXKVVKN0hz5swZlFJUqFCBffv24eHhQWpqKqD7rgFkZGTw66+/FnqdGzduxMXF\nJdc+iIfTrMgkJibmGsayt7cnMTGxUG2SkpLy7fvRRx9Rp04dli9fzqRJk7TahRKjOI03nzlzhpiY\nGNzd3fWf5eToXjS2e7fukTFP8ntFccqF1tZuXsuY0DHUm1uP5JvJhA8LZ03fNTSvUfg5jy5dunDo\n0CH9cmpqKosWLWL27NkAXLlyhQoVKrB9+3Z69OhB2bJl6dmzJ927d6d9+/ZcunQJpRTp6enY2toC\nkJKSQv369cnIyODGjRvs378fgOjoaFq3bk10dDSpqalYWVnpt33nzh39nFBISAhdunQhIiJCvy6A\nnTt30qZNG6Kjo2nZsqU+5pUrV5KVlVXodZYrV44ePXrk2gfxcJrNyRT2GUXqMR5f8MUXX/DFF1/g\n7+/P2LFjWbp0aZ7thg4dioODAwCVKlWiWbNm+ksV7x5sZNl8lu/cucOUKVOYPXu2/sDSvr0n770H\nUVFh+PvDs88+2fbuMof9NVX8xy4fY+yCsYRFhjFy9EgOjzhM/MF4Eg8n4uLp8sjr6969O++99x52\ndnY888wzLFq0iEOHDpGYmEhWVha//PIL69atY8iQIbRq1YrZs2dz9OhRbt68yccff8zZs2epUqWK\n/iGVQ4YMYf78+VStWhUnJycuXLhAWFgYSUlJXLhwAWdnZ3bu3ElmZibp6ekArFixgpo1awK60Y7Q\n0FBsbGzo3bs3NjY2fPrpp2zbto0333yT2bNnc/36dSZMmEBWVhYnTpygS5cuKKWoVq0a6enphIWF\ncfz4cf18zJkzZ0hMTKRt27Y0bNiQMWPGcPToUerUqUPfvn3N5vvxOMthYWEsW7YMQH+8NCqjDr7d\nIyIiQnl5eemX/fz8lL+/f642vr6+KjAwUL9cv359lZycXKi+Sin1119/qUaNGuW5fQ13TWggIyND\nvfLKK+qrr77Sf5aZqdSgQUq99JJS9wyfW7QnmZOJToxWvdf0VlWnV1X/F/Z/6spt419ifK8VK1ao\nlStXarqNgiQnJyullEpJSVHvvvuuSWMpLox97NRsuKxly5bEx8dz5swZMjIyWLNmjX6s864ePXqw\nYsUKACIjI6lUqRJ2dnb59o2Pj9f3DwoKMsrljMK0lFK88847+t8QATIydE9SvnoVgoPhn+Fz8YiU\nUvx++nc6r+hM7zW96VCnAwnvJzCl4xSeK/ecZtu9cOECixcvfmCIvKhNmjSJjRs3smjRIqZOnWrS\nWCyWUUvWfUJCQlS9evWUk5OT8vPzU0optWDBArVgwQJ9m5EjRyonJyfVtGlTdeDAgXz7KqW7yatx\n48bKzc1N9e7dW128eDHPbWu8a8XKDhPcwPcodu/eraysrJSbm5tq1qyZcnNrplq33qJ69FAqLc24\n2zL3XBSksGcy2TnZakPcBtVqUSvVYF4DtTRmqUrPSs/VprjnwpgkFwbGPnbKo/4twN2x7uLg9m3o\n1QsqVdK9D+afuWCjKU65yEtBj/rPzM7kh8M/ELA3gAqlKzC53WR6NeiV5z0uxT0XxiS5MDD2sVOK\njDAbN2/q3mJZp47ujZal5PGtD3hYkbmVcYslMUuYGT6TepXrMbndZF6u+7K8JEw8MnmfjCiRrl8H\nb29o1AgWLgRreeBRoVy7c415UfOYFz2PdnXasb7felrVamXqsITQk3/KFuD+y1/NzdWr0LkzvPCC\n9gXG3HNRWEk3kpiwdQLOc505nXKaMJ+wRy4wJSUXxiC50I6cyQiTunQJunSBV16B6dNBRncK9t4v\n7/FT3E8MbjqYGN8Y6lSsY+qQhHgomZMRJpOUpDuD6dsXPv1UCkx+YpNj8d/jz5oq/2KK2s5o99FU\nKS+PVBLGJxP/hSRFxrydPQudOsHbb4OHhxW8tMPUIRUbnsrT1CGIEkwm/sUjM7fLM0+f1hWY//wH\nxo3TPfCyqA6c5paLvCil2HxiM/57/bl06xIfeHzAELchlClVxqjbKQ65KCqSC+1IkRFF6sQJ3RDZ\npEnw73+bOhrzkpWTxZoja/Df608p61JMajuJvg37YmNtY+rQhHhsMlwmisyff+om+D/7DIYNM3we\nFmaFp6fl/l3dybzD0tilzAifQZ2KdZjcbjJeTl5yj4swCRkuE8VSbKzuPpiZM+HNN00djXm4nnad\nb/d/y+x9s2lVsxU/9P4Bj9oepg5LCKOS+2QsgKnvAYiKAi8vmDvX9AXG1LkAuHjzIpN/m4zjHEeO\nXDrC1re2smngpiIvMOaQC3MhudCOnMkITe3ZA717w5Il8Nprpo7GtM6knGHG3hkEHglkYOOB7H93\nP3WfrWvqsITQlMzJCM1s3w79+8OqVbozmYcp6XMyRy4dIWBvACHxIbzX4j3GvDgGuwp2pg5LiDzJ\nnIwoFkJDYfBgWLcOLPXK0IhzEUzbM43opGjed3+fed7zqFi2oqnDEqJIyZyMBSjq8eagIBgyRPdf\ncyswWudCKUXoyVA6LuvIoA2D6OrcldOjTzOp3SSzKzAyD2EgudCOnMkIo1q3DkaNgpAQaNnS1NEU\nneycbNYfXY//Hn8yczKZ1HYS/Rv3p5S1/BMTlk3mZITRrFoFEybohsrc3ArfrzjPyaRnpbPijxVM\nD59O1fJVmdxuMt3qdcvzJWFCFAcyJyPM0uLF8Mkn8Pvv0LChqaPR3o30Gyw6sIgvI7+kqV1TlvRY\nQvs67eUGSiHuI79uWQCtx5u/+Qb+7/90zyAz9wLzpLm4fPsyH+/4GMc5jkQlRbF54Ga2vLmFDs93\nKHYFRuYhDCQX2pEzGfFEZs3SFZmdO6FuCb7l49z1c8wMn8nKQyvp27Av4cPCcansYuqwhDB7Micj\nHtvnn8OKFbohstq1H3895jwnc+zyMQL2BrDp+CaGNRvG2DZjqfl0TVOHJYRmZE5GmJxSMGUK/Pyz\n7gymRg1TR2R80YnR+O/1Z8/ZPYxqNYr4/8TzXLnnTB2WEMWOzMlYAGOONysF48fD5s26OZjiVmDy\ny4VSit9P/07nFZ3ps7YPHZ/vyOnRp5nScUqJLDAyD2EgudCO5kUmNDSUBg0a4OLiQkBAQJ5tRo8e\njYuLC25ubsTExBTYd8KECbi6uuLm5kbv3r25fv261rshgJwc3T0wu3frHhlTtaqpIzKOHJXDhqMb\ncF/szqgto3ir6VucHH2S0e6jear0U6YOT4jiTWkoKytLOTk5qYSEBJWRkaHc3NxUXFxcrjbBwcHK\n29tbKaVUZGSkcnd3L7Dv1q1bVXZ2tlJKqYkTJ6qJEyc+sG2Nd83iZGUp9c47Snl4KJWSYtx179hh\nmr+r9Kx0tTRmqWowr4FqtaiV2hC3QWXnZJskFiHMhbGPnZrOyURFReHs7IyDgwMAAwYMICgoCFdX\nV32bTZs24ePjA4C7uzspKSkkJyeTkJDw0L5dunTR93d3d2f9+vVa7obFy8qCoUMhMRF+/RUqVDB1\nRE/mVsYtFh9czKyIWdSvUp953vN4ue7Lxe4SZCGKA02HyxITE6l9z2VH9vb2JCYmFqpNUlJSgX0B\nvv/+e1599VUNoi8Z0tLScHV1pVmzZjRs2JDJkyc/Uv9bt3RPUv77bwgOLt4F5uqdqwz7ehiOcxzZ\ndXYX6/utZ9vgbXRy7GSRBUbmIQwkF9rR9EymsP9w1WNeLvfFF19QunRpBg0alOfPhw4dqj8TqlSp\nEs2aNcPznyc23v1SWcLyV199RdmyZcnOzuajjz5iz549ZGVlFdj/3DmYPt2TFi3A1zeMqCjz2J9H\nXU66kcTYBWMJiQ+hbZ22hPmGcfHPi9yKvwW1MHl8plqOjY01q3hMuRwbG2tW8RTlclhYGMuWLQPQ\nHy+NyqiDb/eJiIhQXl5e+mU/Pz/l7++fq42vr68KDAzUL9evX18lJycX2Hfp0qXKw8ND3blzJ89t\na7xrxdKtW7dUy5Yt1Z9//llg2/XrlapaVamFC5XKydE2Lq3mZOKvxKt3N72rnvV/Vr2/5X11NuWs\nJtsRoiQx9rFT0yNxZmamcnR0VAkJCSo9Pb3Aif+IiAj9xH9+fbds2aIaNmyo/v7774duW4qMQXZ2\ntnJzc1MVKlRQEyZMyLdtZqZS48cr9fzzSkVHF018xi4yB5MOqn7r+qkq06uoj7d/rP6+9fDviRAi\nt2JVZJRSKiQkRNWrV085OTkpPz8/pZRSCxYsUAsWLNC3GTlypHJyclJNmzZVBw4cyLevUko5Ozur\n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\nTkSuQmCC\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x634bf10>"
+ ]
+ }
+ ],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.8-1 Page Number 726"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Prediction of Time for Batch Leaching\n",
+ "\n",
+ "#Variable Declaration\n",
+ "Es = 0.2 #Fraction unextracted\n",
+ "d1 = 2.0 #Initial particle diameter, mm\n",
+ "d2 = 1.5 #Initial particle diameter, mm\n",
+ "t1 = 3.11 #Time in hr\n",
+ "#Calculation\n",
+ "# Using figure 5.3-13 page 349 for sphere Es = 0.2 alpha*t/a**2 = 0.112 it is same in both sizes\n",
+ "absc = 0.112\n",
+ "a1 = d1/2\n",
+ "a2 = d2/2\n",
+ "t2 = t1*a2**2/a1**2\n",
+ "\n",
+ "#Results\n",
+ "print \"Time require for 80% separation wich changed size\",round(t2,2),'h'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Time require for 80% separation wich changed size 1.75 h\n"
+ ]
+ }
+ ],
+ "prompt_number": 21
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.9-1 Page Number 731"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Single Stage Leaching of Flaked Soyabeans\n",
+ "import numpy as np\n",
+ "import matplotlib.pylab as plt \n",
+ "#Variable Declaration\n",
+ "V2 = 100.0 #Fresh Solvent, kg\n",
+ "F = 100.0 #Feed of Soyabeen flakes, kg \n",
+ "xA2 = 0.0 #Compositions in wt fractions\n",
+ "xC2 = 1.0\n",
+ "y0 = 0.20\n",
+ "yA0 = 1.0 \n",
+ "Nn = 1.5 #kg insoluble rtained/ jgsolution retained\n",
+ "\n",
+ "#Calculation\n",
+ "B = F*(1.0-y0)\n",
+ "L0 = F*y0\n",
+ "N0 = B/L0\n",
+ "M = L0 + V2\n",
+ " # Mxam = L0*y0 + V2*xA2 \n",
+ "xAm = L0/M\n",
+ " #B = Nm*M\n",
+ "Nm = B/M\n",
+ "xA = np.array([0.0,0.2,0.4,0.6,0.8,1.0])\n",
+ "yA = np.array([0.0,0.2,0.4,0.6,0.8,1.0])\n",
+ "N = np.array([0,1,2,3,4,5])\n",
+ "plt.grid(True)\n",
+ "plt.plot([0,yA0],[0.0,N0])\n",
+ "plt.xlabel(\"$x_A,y_A$\")\n",
+ "plt.ylabel(\"$ N $\")\n",
+ "plt.ylabel(\"$ N $\")\n",
+ "plt.plot([0.,1.0],[Nn,Nn])\n",
+ "plt.plot([xAm,xAm],[0.0,Nn])\n",
+ "plt.text(0.6,0.1,\" $N$ vs $x_A$ \")\n",
+ "plt.text(0.6,1.6,\" $N$ vs $y_A$ \")\n",
+ "plt.text(yA0,N0,\" $L_0$ \")\n",
+ "plt.plot(yA0,N0,'ro')\n",
+ "plt.text(xAm,Nm,\" $M$ \")\n",
+ "plt.plot(xAm,Nm,'ro')\n",
+ "N1 = 1.5\n",
+ "yA1 = xAm\n",
+ "xA1 = xAm\n",
+ "plt.text(xA1,0,\" $V_1$ \")\n",
+ "plt.plot(xA1,N1,'ro')\n",
+ "m = (N[5]-N[0])/(xA[5]-xA[0])\n",
+ "yAm = m*xAm\n",
+ "plt.text(xA1,N1,\" $L_1$ \")\n",
+ "plt.plot(xA1,Nm,'ro')\n",
+ "plt.plot(xA2,0,'ro')\n",
+ "l = (Nn-0.0)\n",
+ "l1 = (yAm-0.0)\n",
+ "l2 = (Nn-yAm)\n",
+ "V1 = M*l1/l\n",
+ "L1 = M*l2/l\n",
+ "\n",
+ "#Results\n",
+ "print 'Equilibrium amounts of L1, V1 are %3.1f and %3.1f kg'%(L1,V1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Equilibrium amounts of L1, V1 are 53.3 and 66.7 kg\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nSUVORK5CYII=\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x65319f0>"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.10-1 Page Number 735"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Counterurrent Extraction of Oil from meal\n",
+ "import numpy as np\n",
+ "from scipy.optimize import curve_fit, root\n",
+ "import matplotlib.pyplot as plt\n",
+ "from scipy.interpolate import interp1d\n",
+ "from scipy.integrate import quad\n",
+ "\n",
+ "#Variable Declaration\n",
+ "X = []\n",
+ "N = np.array([2.00,1.98,1.94,1.89,1.82,1.75,1.68,1.61]) #kg of inert solid B/kg solution\n",
+ "yA = np.array([0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7]) #kg of inert oil A/kg solution\n",
+ "FMi = 2000. #Rate of Mass of inert solid meal, kg/hr\n",
+ "FMo = 800. #Rate of Mass of oil, kg/hr\n",
+ "FMb = 50. #Rate of Mass of Benzene with feed, kg/hr\n",
+ "FSb = 1310. #Rate of Mass of Benzene with fresh solvent, kg/hr\n",
+ "FSo = 20. #Rate of Mass of oil with fresh solvent, kg/hr\n",
+ "LS = 120. #Rate of Mass of Leached solids, kg/hr\n",
+ " \n",
+ "#Calculation\n",
+ "f = interp1d(yA,N,kind='quadratic')\n",
+ "L0 = FMo+FMb\n",
+ "yA0 = FMo/L0\n",
+ "B = FMi\n",
+ "N0 = B/L0\n",
+ "Vn1 = FSb + FSo\n",
+ "xAn1 = FSo/Vn1\n",
+ "M = L0 + Vn1\n",
+ "xAM = (L0*yA0 + Vn1*xAn1)/M\n",
+ "NM = B/M\n",
+ "sL0Vn1 = B/LS\n",
+ "\n",
+ "cL0Vn1 = NM - sL0Vn1*xAM\n",
+ "xx = -cL0Vn1/sL0Vn1\n",
+ "\n",
+ "plt.grid(True)\n",
+ "plt.xlabel('$x_A$ $y_A$')\n",
+ "plt.ylabel('$N$')\n",
+ "plt.plot(yA0,N0,'ro') #plot L0\n",
+ "plt.text(yA0,N0,'$L_0$')\n",
+ "plt.plot(0.0,0.0,'ro') #plot origin\n",
+ "plt.plot(xAn1,0.0,'bo') #Plot Vn+1\n",
+ "plt.text(-xAn1-0.06,0.2,'$V_{N+1}$') \n",
+ "plt.plot([xAn1,yA0],[0.0,N0]) #plot line L0 to Vn+1\n",
+ "plt.plot(xAM,NM,'ro') #plot M\n",
+ "plt.text(xAM-0.05,NM-0.5,'$M$')\n",
+ "plt.plot(yA,N,'b-') #Plot N vs yAN+1\n",
+ "plt.text(yA[len(yA)-1],N[len(yA)-1],'$N$ $vs$ $y_A$')\n",
+ "\n",
+ "ff= lambda x:f(x)-sL0Vn1*x\n",
+ "sol = root(ff,0.01)\n",
+ "yAn = sol.x[0]\n",
+ "Nn = f(yAn)\n",
+ "\n",
+ "plt.plot([0.0,yAn],[0.0,Nn])\n",
+ "plt.plot([xAn1,yAn],[0.0,Nn]) #Plot Vn+1 to Ln\n",
+ "\n",
+ "s1 = (NM-Nn)/(xAM-yAn)\n",
+ "c1 = NM-s1*xAM\n",
+ "x1 = -c1/s1\n",
+ "X.append(x1)\n",
+ "plt.plot([x1,yAn],[0.0,Nn]) #Plot Ln to V1 \n",
+ "sdL0 = (N0-0.0)/(yA0-x1)\n",
+ "c2 = -sdL0*x1\n",
+ "\n",
+ "s3 = (Nn-0.0)/(yAn-xAn1)\n",
+ "c3 = -s3*xAn1\n",
+ "delx = (c3-c2)/(sdL0-s3)\n",
+ "dely = sdL0*delx+c2\n",
+ "plt.text(delx,dely-0.5,'$\\delta$')\n",
+ "plt.plot([yA0,delx],[N0,dely]) #Draw a line from V1 to delta\n",
+ "plt.plot([xAn1,delx],[0.0,dely]) #Draw a line from Vn+1 to delta\n",
+ "plt.plot([1.0,-0.4],[0.0,0.0])\n",
+ "x = x1\n",
+ "j = 0\n",
+ "while x > xAn1:\n",
+ " j = j+ 1\n",
+ " y = f(x)\n",
+ " plt.plot(x,0.0,'bo')\n",
+ " plt.text(x,-0.5,'V'+str(j))\n",
+ " plt.plot([x,x],[0.0,y]) #Move to N vs y curve\n",
+ " plt.plot(x,y,'bo')\n",
+ " plt.text(x,y+0.5,'L'+str(j)) \n",
+ " plt.plot([x,delx],[y,dely]) #from x,y Draw a line joining to delx,dely\n",
+ " slope = (y-dely)/(x-delx)\n",
+ " inter = y - slope*x\n",
+ " xnew = -inter/slope\n",
+ " X.append(xnew)\n",
+ " x = xnew\n",
+ "\n",
+ "a = np.array([[1,1], [yAn,X[0]] ])\n",
+ "b = np.array([M,M*xAM])\n",
+ "Ln,V1 = np.linalg.solve(a, b)\n",
+ "\n",
+ "#Results\n",
+ "print 'Rate of leached solution %5.1f kg/h'%Ln\n",
+ "print 'Composition of leached solution %5.4f kg/h'%yAn\n",
+ "\n",
+ "print 'Rate of solvent out %5.1f kg/h'%V1\n",
+ "print 'Composition of solvent out %5.3f kg/h'%X[0]\n",
+ "\n",
+ "print 'Rate of leached solids %8.1f kg solution/h' %(M)\n",
+ "print \"Number of equilibrium stages required are\",j "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Rate of leached solution 1014.0 kg/h\n",
+ "Composition of leached solution 0.1183 kg/h\n",
+ "Rate of solvent out 1166.0 kg/h\n",
+ "Composition of solvent out 0.600 kg/h\n",
+ "Rate of leached solids 2180.0 kg solution/h\n",
+ "Number of equilibrium stages required are 4\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nlpYAgN69e3Myp7m5OUpLSwEApaWl6NWrF7S0lPs87vDhw9GzZ89m3+fC9QO0nrM91w8nC8ODmiCm\nTwAABV5JREFUBw9gamoKADA1NW32l71kyRJs3boVmpqq+THkzflMVlYW7t69iyFDhnR4ttzcXFhZ\nWTVsW1paIjc3t9V9lP2lK0/O5+3btw9jx45VRrQG8v4uT58+jQULFgBQzhrjL5InZ2pqKoqLizFi\nxAh4e3vj8OHDyo4pV865c+ciMTERffr0gZubG4KDg5Uds1VcuH7aSt7rR2VTYvj5+aGgoKDJ6+vX\nr2+0raGhIfMiO3fuHExMTODh4dGhE1q9bM5nysvLMXnyZAQHB8PAwEDhOV8k7xfTi3dayv5Ca8v5\nrly5gv379+PGjRsdmKgpeTJ++umn2LRpU8M0x6q4g5Unp0QiQXR0NP744w9UVlbCx8cHQ4cOhYOD\ngxISPiFPzg0bNsDd3R0CgQDp6enw8/NDbGwsunXrpoSE8lP19dMWbbl+VFYYLl261Ox7pqamKCgo\ngJmZGfLz82FiYtJkn/DwcJw5cwahoaGorq5GaWkpZs2ahUOHDnEqJ/DkYvT398eMGTPwzjvvKDRf\ncywsLCASiRq2RSJRQ/NBc/vk5OTAwsJCKfmayyArJwDExcVh7ty5CAsLa/G2uSPIkzEqKgpTp04F\n8KTj9Pz589DW1sbEiRM5ldPKygq9e/eGnp4e9PT08NprryE2NlaphUGenOHh4VixYgUAwM7ODjY2\nNhAKhfD29lZaztZw4fqRV5uvH0V1gCjSsmXL2KZNmxhjjG3cuLHFzmfGGBMIBGz8+PHKiNaIPDml\nUimbOXMm+/TTT5WaTSKRMFtbW5aZmclqampa7XyOiIhQSeeZPDmzs7OZnZ0di4iIUHo+eTM+LyAg\ngJ04cUKJCZ+QJ2dycjIbOXIkq6urYxUVFYzP57PExETO5VyyZAn76quvGGOMFRQUMAsLCyYWi5Wa\nkzHGMjMz5ep8VtX180xLOdtz/XCyMIjFYjZy5Ejm4ODA/Pz82KNHjxhjjOXm5rKxY8c22V8gEKhk\nVJI8Oa9du8Y0NDSYm5sbc3d3Z+7u7uz8+fNKyRcaGsocHR2ZnZ0d27BhA2OMsd27d7Pdu3c37LNw\n4UJmZ2fHXF1dWVRUlFJytTXnhx9+yIyMjBp+f4MGDeJcxuepqjAwJl/OrVu3MmdnZ8bn81lwcDAn\ncxYWFrLx48czV1dXxufz2dGjR5WecerUqczc3Jxpa2szS0tLtm/fPk5eP63lbM/1Q1NiEEIIaYST\no5IIIYSoDhUGQgghjVBhIIQQ0ggVBkIIIY1QYSCEENIIFQZCCCGNUGEghBDSCBUGQgghjVBhIARP\nFnwKCQlBUFAQDh48iIULFyIjI6Ndx0pISEBQUBAiIyMBAAEBAQpMSkjHo8JACIDY2Fj4+/vD1tYW\nUqkU7777LszNzdt1rMrKSmhra4MxhuTkZJWtz0BIe1FhIASAp6cndHV1ERERAV9fX/j6+kJPT6/h\n/c8++wxVVVVyHWvw4MGIjo6Gj48PIiMjMWzYsEbvt+VYhKgCFQZC8GSt5qKiIiQkJMDGxgbXrl1r\neC85ORkFBQUy1+VoTteuXQEAkZGR8PHxealjEaJsVBgIwZPF6U+ePIlhw4bh1KlTjd6Lj4/Hq6++\nivz8fLmP17dvX/zyyy+IiopqWOWvvcciRNlUtlAPIVzy5Zdfynw9LCwM+vr6yMjIkPu//B9++AG+\nvr6wsLDAlClTXupYhKgC3TEQ0owbN24gPj4e48aNQ69eveReUtTKygrl5eW4evUqli1b9lLHIkQV\naD0GQgghjdAdAyGEkEaoMBBCCGmECgMhhJBGqDAQQghphAoDIYSQRqgwEEIIaYQKAyGEkEaoMBBC\nCGmECgMhhJBG/j+vXVOxmdQUfQAAAABJRU5ErkJggg==\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x65e4090>"
+ ]
+ }
+ ],
+ "prompt_number": 23
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.11-1 Page Number 739"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Yield of Crystalization Process\n",
+ "import numpy as np\n",
+ "from numpy.linalg import solve\n",
+ "\n",
+ "#Variable Declaration\n",
+ "F = 10000. #Weight of salt solution, kg\n",
+ "xFc = 0.30 #Weight percent of salt\n",
+ "Ts = 293. #Temperature of salt solution, K\n",
+ "S = 21.5 #Unhydrous Solubility, kg/100 kg of water\n",
+ "MW = 106.0 #Molecular wt of Na2CO3\n",
+ "MWh = 180.2 #Molecular wt of 10.H2O\n",
+ "\n",
+ "#Calculation\n",
+ "MWhs = MW + MWh #Molecular wt of Na2CO3.10.H2O\n",
+ "xFs = 1.0 - xFc\n",
+ "xWs,xWc = 1.0, 0.0\n",
+ "\n",
+ "xCs,xCc = MWh/MWhs,MW/MWhs\n",
+ "xSs,xSc = 100/(S+100),S/(S+100)\n",
+ "\n",
+ "#Part A\n",
+ "W = 0.0\n",
+ "a = np.array([[1,1], [xSs,xCs]])\n",
+ "b = np.array([F-W, F*xFs-W*xWs])\n",
+ "[Sa,Ca] = solve(a,b)\n",
+ "\n",
+ "#Part B\n",
+ "W = F*0.03\n",
+ "a = np.array([[1,1], [xSc,xCc]])\n",
+ "b = np.array([F-W, F*xFc-W*xWc])\n",
+ "[Sb,Cb]= solve(a, b)\n",
+ "\n",
+ "#Results\n",
+ "print \"Answer to PART A\"\n",
+ "print \"kgs of Hydrayred Crystal produced and Saturated solution are\", round(Ca,1),\"&\", round(Sa,1),\"respectively\"\n",
+ "print \"Answer to PART B\"\n",
+ "print \"kgs of Hydrayred Crystal produced and Saturated solution are\", round(Cb,1),\"\", round(Sb,1),\"respectively\"\n",
+ "print 'The results are checked by using tools like calculator and\\nother the results of this code are more correct than book'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Answer to PART A\n",
+ "kgs of Hydrayred Crystal produced and Saturated solution are 6361.7 & 3638.3 respectively\n",
+ "Answer to PART B\n",
+ "kgs of Hydrayred Crystal produced and Saturated solution are 6636.2 3063.8 respectively\n",
+ "The results are checked by using tools like calculator and\n",
+ "other the results of this code are more correct than book\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.11-2 Page Number 741"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Heat Balance in Crystallization\n",
+ "\n",
+ "from numpy.linalg import solve\n",
+ "\n",
+ "#Variable Declaration\n",
+ "F = 2268.0 #kg of feed solution\n",
+ "TF = 327.6 #Temperature of feed solution, K\n",
+ "CF = 48.2 #kgMgSO4/100 kg water\n",
+ "Tc = 293.2 #Temperature cooled to, K\n",
+ "S = 35.5 #kgMgSO4/100 kg water \n",
+ "cp = 2.93 #Average heat Capcity of Solution at 298.2 K, kJ/kg.K\n",
+ "delHs = -13.31e3 #Heat of solution at 298.2 K, kJ/kmol\n",
+ "MW = 120.368 #MW of MgSO4\n",
+ "MWwh = 126.107 #MW of Water of Hydration 7H2O\n",
+ "\n",
+ "#Calculation\n",
+ "xFs = 100./(100+CF)\n",
+ "xFc = 1.0 - xFs\n",
+ "xSs = 100./(100. + S)\n",
+ "xSc = 1.0 - xSs\n",
+ "xCs = MWwh/(MW + MWwh)\n",
+ "xCc = 1.0 - xCs\n",
+ "\n",
+ "a = numpy.array([[1.,1.], [xSc,xCc]])\n",
+ "b = numpy.array([F, F*xFc])\n",
+ "[So,C]= solve(a, b)\n",
+ "\n",
+ "H1 = F*(TF-Tc)*cp\n",
+ "delHs = delHs/(MW+MWwh)\n",
+ "delHc = -(delHs)\n",
+ "Hc = delHc*C\n",
+ "Q = - Hc - H1\n",
+ "#Results\n",
+ "print 'Mass of Hydrayred Crystal produced and Saturated solution are %5.2f & %5.2f kg'%(C,So)\n",
+ "print \"Total heat Absorbed\", round(Q,2), \"kJ. Negative sign indicates heat must be removed\"\n",
+ "print 'The results are checked by using tools like calculator and\\nother the results of this code are more correct than book'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mass of Hydrayred Crystal produced and Saturated solution are 633.65 & 1634.35 kg\n",
+ "Total heat Absorbed -262814.27 kJ. Negative sign indicates heat must be removed\n",
+ "The results are checked by using tools like calculator and\n",
+ "other the results of this code are more correct than book\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter13.ipynb b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter13.ipynb new file mode 100755 index 00000000..9fee4217 --- /dev/null +++ b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter13.ipynb @@ -0,0 +1,625 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:986b48c61b98a83c6355e5fa469ece02cfaf500811fa7f186097ba3e31e4763e"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 13: Membrane Seperation Process"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.2-1, Page number 756"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Membrane Diffusion and Liquid Film Resistances\n",
+ "\n",
+ "#Variable declaration\n",
+ "C1 = 3.e-2 #The concentration of solute A (mol.kg/m3)\n",
+ "L = 3.e-5 #Thickness of the membrane (m)\n",
+ "K = 1.5 #The distribution coefficient \n",
+ "Dab = 7.e-11 #The distribution coefficient \n",
+ "C2 = 0.5e-2 #Concentration on the other side (mol.kg/m3)\n",
+ "kc2 = 2.02e-5 #Mass transfer cofficient (m/s)\n",
+ "\n",
+ "#Calculation\n",
+ "#Part (a) is therotical\n",
+ " #Calculation for part (b)\n",
+ "#p_M = D_ab*K/L\n",
+ "pM = Dab*K/L\n",
+ "#N_a = (C_1 - C_2)/(1/p_M + 1/k_c2)\n",
+ "Na = (C1 - C2)/(1/pM + 1/kc2)\n",
+ " #To calculate C_2i \n",
+ "#N_a = k_c2*(C_2i - C_2)\n",
+ "#C_2i = N_a/k_c2 + C_2\n",
+ "C2i = Na/kc2 + C2\n",
+ "#K = C_2is/C_2i\n",
+ "#C_2is = K*C_2i\n",
+ "C2is = K*C2i\n",
+ "\n",
+ "#Result\n",
+ "print 'The flux at the interface membrane is %5.3e kg.mol/s.m2'%(Na)\n",
+ "print 'The concentration at the interface membrane is %5.3e kg.mol/m3'%(C2is)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The flux at the interface membrane is 7.458e-08 kg.mol/s.m2\n",
+ "The concentration at the interface membrane is 1.304e-02 kg.mol/m3\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.2-2, Page number 758"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Dialysis to Remove Urea from Blood\n",
+ "\n",
+ "#Variable declaration\n",
+ "kc1 = 1.25e-5 #Estimated blood side mass transfer cofficient (m/s)\n",
+ "kc2 = 3.33e-5 #Estimated aqueous side mass transfer cofficient (m/s)\n",
+ "pM = 8.73e-6 #Permeability of the membrane (m/s)\n",
+ "c1 = 200. #Concentration of urea in blood (g/m3)\n",
+ "c2 = 0. #Concentration of urea in dialyzing fluid (g/m3)\n",
+ "t = 3600. #Time given for blood removal (sec)\n",
+ "A = 2. #Area of membrane (m2)\n",
+ "#Calculation\n",
+ "Na = (c1 - c2)/(1/kc1 + 1/pM + 1/kc2)\n",
+ "R = Na*t*A\n",
+ "#Result\n",
+ "print 'The flux of urea through membrane %5.2e g/(m2.s)'%(Na) \n",
+ "print 'The rate of removal of urea from membrane is %5.3f g Urea/h'%(R)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The flux of urea through membrane 8.91e-04 g/(m2.s)\n",
+ "The rate of removal of urea from membrane is 6.412 Urea g/h\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.4-1, Page number 766"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Design of Membrane Unit for Complete Mixing\n",
+ "\n",
+ "#Variable declaration\n",
+ "qf = 1.e4 #Feed flow rate (STP/s)\n",
+ "xf = 0.5 #Mole fraction of A in feed\n",
+ "x0 = 0.25 #The desired composition of the reject\n",
+ "t = 2.54e-3 #Thickness of membrane (cm)\n",
+ "ph = 80. #Pressure on feed side (cm Hg)\n",
+ "pl = 20. #Pressure on permeate side (cm Hg)\n",
+ "PA = 50e-10 #Permeability of A (cm3(STP).cm/s.cm2.cmHg)\n",
+ "PB = 5e-10 #Permeability of B (cm3(STP).cm/s.cm2.cmHg)\n",
+ "\n",
+ "#Calculation\n",
+ "alpha = PA/PB\n",
+ "a = 1 - alpha\n",
+ "b = (ph/pl)*(1 - x0) - 1 + alpha*(ph/pl)*x0 + alpha\n",
+ "c = -alpha*x0*(ph/pl)\n",
+ "\n",
+ "yp = (-b + sqrt(b**2 - 4*a*c))/(2*a)\n",
+ " #x_0 = (x_f - theta*Y_p)/(1 - theta)\n",
+ "theta = (x0 - xf)/(x0- yp)\n",
+ "Am = theta*qf*yp/((PA/t)*(ph*x0-pl*yp))\n",
+ "#Result\n",
+ "print 'The membrane area calculated is %5.3e cm2 or %5.3e m2'%(Am, Am/1e4),\"\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The membrane area calculated is 2.734e+08 cm2 or 2.734e+04 m2 \n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.4-2, Page number 767"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Membrane Design for Seperation of Air\n",
+ "\n",
+ "#Variable declaration\n",
+ "qf = 1.e6 #Feed flow rate (STP/s)\n",
+ "t = 1.e-3 #Thickness of membrane (cm)\n",
+ "ph = 190. #Pressure on feed side (cm Hg)\n",
+ "p1 = 19. #Pressure on permeate side (cm Hg)\n",
+ "PA = 500e-10 #Permeability of A (cm3(STP).cm/s.cm2.cmHg)\n",
+ "xf = 0.209 #Mole fraction of A in feed\n",
+ "alpha = 10. #oxygen permeability divided by nitrogen permeability\n",
+ "theta = 0.2 #Fraction cut\n",
+ "t = 2.54e-3 #Thickness of membrane (cm)\n",
+ "#Calculation\n",
+ "a1 = theta + p1/ph - (p1/ph)*theta - alpha*theta - alpha*(p1/ph) + alpha*theta*(p1/ph)\n",
+ "b1 = 1 - theta - xf - (p1/ph) + (p1/ph)*theta + alpha*theta + alpha*(p1/ph) - alpha*theta*(p1/ph) + alpha*xf\n",
+ "c1 = -alpha*xf\n",
+ "yp = (-b1 + sqrt(b1**2 - 4*a1*c1))/(2*a1)\n",
+ "x0 = (xf - theta*yp)/(1 - theta)\n",
+ "Am = theta*qf*yp/((PA/t)*(ph*x0 - p1*yp))\n",
+ "\n",
+ "#Result\n",
+ "print \"The permeate composition is \",round(yp,4)\n",
+ "print \"The reject composition is \",round(x0,4)\n",
+ "print 'The area of membrane is %5.3e cm2'%(Am)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The permeate composition is 0.5068\n",
+ "The reject composition is 0.1345\n",
+ "The area of membrane is 3.231e+08 cm2\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.4-3, Page number 769"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Effect of Feed Composition on Minimum Reject Concentration\n",
+ "\n",
+ "#Variable declaration\n",
+ "qf = 1.e4 #Feed flow rate (STP/s)\n",
+ "xf = 0.5 #Mole fraction of A in feed\n",
+ "x0 = 0.25 #The desired composition of the reject\n",
+ "t = 2.54e-3 #Thickness of membrane (cm)\n",
+ "ph = 80. #Pressure on feed side (cm Hg)\n",
+ "pl = 20. #Pressure on permeate side (cm Hg)\n",
+ "PA = 50e-10 #Permeability of A (cm3(STP).cm/s.cm2.cmHg)\n",
+ "PB = 5e-10 #Permeability of B (cm3(STP).cm/s.cm2.cmHg)\n",
+ "\n",
+ "#Calculations\n",
+ "\n",
+ "# for xf = 0.5\n",
+ "alpha = PA/PB\n",
+ "xoM =xf*(1+(alpha-1)*pl/ph*(1-xf))/(alpha*(1-xf)+xf)\n",
+ "print \"Reject Concentration for xf = 0.50:\",round(xoM,4)\n",
+ "\n",
+ "# for xf = 0.65\n",
+ "xf = 0.65\n",
+ "alpha = PA/PB\n",
+ "xoM =xf*(1+(alpha-1)*pl/ph*(1-xf))/(alpha*(1-xf)+xf)\n",
+ "print \"Reject Concentration for xf = 0.65:\",round(xoM,4)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Reject Concentration for xf = 0.50: 0.1932\n",
+ "Reject Concentration for xf = 0.65: 0.28\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.5-1, Page number 771"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Design of Membrane Unit for Multicomponenet Mixture \n",
+ "\n",
+ "#Variable declaration\n",
+ "qf = 1.e4 #Feed flow rate (STP/s)\n",
+ "xfA = 0.25 #Mole fraction of A in feed\n",
+ "xfB = 0.55 #Mole fraction of B in feed\n",
+ "xfC = 0.20 #Mole fraction of A in feed\n",
+ "x0 = 0.25 #The desired composition of the reject\n",
+ "t = 2.54e-3 #Thickness of membrane (cm)\n",
+ "ph = 300. #Pressure on feed side (cm Hg)\n",
+ "pl = 30. #Pressure on permeate side (cm Hg)\n",
+ "PA = 200e-10 #Permeability of A (cm3(STP).cm/s.cm2.cmHg)\n",
+ "PB = 50e-10 #Permeability of B (cm3(STP).cm/s.cm2.cmHg)\n",
+ "PC = 25e-10 #Permeability of C (cm3(STP).cm/s.cm2.cmHg)\n",
+ "theta = 0.25 #Fraction to be permeated\n",
+ "\n",
+ "#Calculations\n",
+ "qp = theta*qf\n",
+ "ypA = 0.501\n",
+ "eR = 1.\n",
+ "while abs(eR) >= 0.000001:\n",
+ " Am = qp*ypA*t/(PA*(ph/(1-theta)*(xfA-theta*ypA)-pl*ypA))\n",
+ " ypB = ph*xfB/((1-theta)*(qp*t/(PB*Am)+theta*ph/(1-theta)+pl))\n",
+ " ypC = ph*xfC/((1-theta)*(qp*t/(PC*Am)+theta*ph/(1-theta)+pl))\n",
+ " syp = ypA + ypB + ypC \n",
+ " eR = 1.- syp\n",
+ " ypA = ypA + eR/3.4\n",
+ "ypA = ypA - eR/3.4\n",
+ "xoA = xfA/(1-theta)-theta*ypA/(1-theta)\n",
+ "xoB = xfB/(1-theta)-theta*ypB/(1-theta)\n",
+ "xoC = xfC/(1-theta)-theta*ypC/(1-theta)\n",
+ "sxo = xoA + xoB + xoC\n",
+ "print \"Permeate compositions are yoA, yoB, yoC\"\n",
+ "print round(ypA,4), round(ypB,4), round(ypC,4),\"respectively for A,B,C\"\n",
+ "print \"Reject compositions are xoA, xoB, xoC\"\n",
+ "print round(xoA,4), round(xoB,4), round(xoC,4),\"respectively for A,B,C\"\n",
+ "print 'Membrane area %10.4e'%(Am),\"cm2\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Permeate compositions are yoA, yoB, yoC\n",
+ "0.4553 0.4503 0.0944 respectively for A,B,C\n",
+ "Reject compositions are xoA, xoB, xoC\n",
+ "0.1816 0.5832 0.2352 respectively for A,B,C\n",
+ "Membrane area 3.5418e+06 cm2\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.6-1, Page number 775"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Design of Membrane Unit Using Cross Flow\n",
+ "import numpy as np\n",
+ "from scipy.interpolate import interp1d\n",
+ "from scipy.integrate import quad, simps\n",
+ "from scipy.optimize import root\n",
+ "from math import sqrt\n",
+ "\n",
+ "#Variable declaration\n",
+ "qf = 1.e6 #Feed flow rate (STP/s)\n",
+ "t = 1e-3 #Thickness of membrane (cm)\n",
+ "ph = 190. #Pressure on feed side (cm Hg)\n",
+ "pl = 19. #Pressure on permeate side (cm Hg)\n",
+ "PA = 500e-10 #Permeability of A (cm3(STP).cm/s.cm2.cmHg)\n",
+ "xf = 0.209 #Mole fraction of A in feed\n",
+ "alpha = 10. #oxygen permeability divided by nitrogen permeability\n",
+ "theta = 0.2 #Fraction cut\n",
+ "tk = 2.54e-3 #Thickness of membrane (cm)\n",
+ "\n",
+ "x0 = np.array([0.1190,0.1420,0.1642,0.1870,0.2090])\n",
+ "\n",
+ "#Calculation\n",
+ "np.set_printoptions(precision=3)\n",
+ "sorted(x0)\n",
+ "thetas = np.zeros((len(x0)))\n",
+ "u = np.zeros(len(x0))\n",
+ "iI = np.zeros(len(x0))\n",
+ "fi = np.zeros((len(x0)))\n",
+ "Fi = np.zeros((len(x0)))\n",
+ "yp = np.zeros((len(x0)))\n",
+ "\n",
+ "iF = xf/(1.-xf)\n",
+ "D = 0.5*((1.-alpha)*pl/ph+alpha)\n",
+ "F = -0.5*((1.-alpha)*pl/ph-1.)\n",
+ "E = alpha/2.-D*F\n",
+ "R = 1./(2*D-1.)\n",
+ "S = (alpha*(D-1.)+F)/((2.*D-1.)*(alpha/2.-F))\n",
+ "T = 1./(1-D-E/F)\n",
+ "uf = -D*iF+sqrt(D**2*iF**2+2.*E*iF+F**2)\n",
+ "print ' thetas[j] x yp Fi '\n",
+ "\n",
+ "for j in range(len(x0)):\n",
+ " i = iI[j] = x[j]/(1.-x[j])\n",
+ " u = -D*i+sqrt((D*i)**2 + 2*E*i + F**2)\n",
+ " k1 = ((uf-E/D)/(u-E/D))**R\n",
+ " k2 = ((uf-alpha+F)/(u-alpha+F))**S\n",
+ " k3 = ((uf-F)/(u-F))**T\n",
+ " k0 = (1-xf)/(1-x[j])\n",
+ " thetas[j] = 1.- k0*k1*k2*k3\n",
+ " fi[j] = (D*i-F) + sqrt(D**2*i**2 + 2*E*i+F**2)\n",
+ " Fi[j] =(1-thetas[j])*(1-x0[j])/((fi[j]-i)*(1./(1.+ i)-(pl/ph)*(1./(1.+fi[j]))))\n",
+ " if thetas[j]==0.0:\n",
+ " f = lambda y: y/(1-y) - alpha*(x0[j]-pl*y/ph)/((1-x0[j])-pl*(1-y)/ph)\n",
+ " sol = root(f,0.6)\n",
+ " yp[j] = sol.x[0]\n",
+ " else:\n",
+ " yp[j] = (xf-x0[j]*(1.0-thetas[j]))/thetas[j]\n",
+ " print '%8.5f %8.5f %8.5f %8.5f '%(thetas[j], x0[j], yp[j],Fi[j])\n",
+ "\n",
+ "Fun = interp1d(iI,Fi)\n",
+ "I = quad(Fun,iI[0],iI[len(x0)-1])[0]\n",
+ "Am = tk*qf/(ph*PA/alpha)*I\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "#Part A\n",
+ "print \"PART A\"\n",
+ "print 'Reject composition x0: %4.3f'%x0[0]\n",
+ "print 'Permeate composition yp: %4.3f'%yp[0]\n",
+ "print 'Total Membrane Area: %6.4e cm2'%(Am)\n",
+ "\n",
+ "#Part B\n",
+ "print \"PART B\"\n",
+ "print 'For PART B of Example 13.4-2 The permeate composition was 0.5068 as compared to %4.3f for cross flow' %yp[len(x0)-1] \n",
+ "print 'For PART B of Example 13.4-2 The area of membrane was 3.2314e+08 cm2 as compared to %5.4e cm2 \\nfor cross flow'%(Am)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " thetas[j] x0 yp Fi \n",
+ " 0.20008 0.11900 0.56881 1.15197 \n",
+ " 0.14813 0.14200 0.59429 0.96040 \n",
+ " 0.09910 0.16420 0.61629 0.82535 \n",
+ " 0.04892 0.18700 0.63675 0.71994 \n",
+ " 0.00000 0.20900 0.65483 0.64034 \n",
+ "Area under the curve is:0.1090"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "PART A\n",
+ "Reject composition x0: 0.119\n",
+ "Permeate composition yp: 0.569\n",
+ "Total Membrane Area: 2.9135e+08 cm2\n",
+ "PART B\n",
+ "For PART B of Example 13.4-2 The permeate composition was 0.5068 as compared to 0.655 for cross flow\n",
+ "For PART B of Example 13.4-2 The area of membrane was 3.2314e+08 cm2 as compared to 2.9135e+08 cm2 \n",
+ "for cross flow\n"
+ ]
+ }
+ ],
+ "prompt_number": 97
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.9-1, Page number 784"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculation of Osmotic Pressure of Salt Solution\n",
+ "\n",
+ "#Variable declaration\n",
+ "T = 298.5 #Temperature of solution (k)\n",
+ "Rho = 997. #Density of the solution (kg/m3)\n",
+ "m = 0.1 #Moles of NaCl present (g.mol)\n",
+ "R = 82.057e-3 #Gas constant \n",
+ "#Calculations\n",
+ "n = (2*m)*1.e-3\n",
+ "Vm = 1/Rho\n",
+ "Pi = n*R*T/(Vm)\n",
+ "#Result \n",
+ "print \"The calculated osmotic pressure is \",round(Pi,2),\"atm\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The calculated osmotic pressure is 4.88 atm\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.9-2, Page number 786"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Experimental Determination of Membrane Permeability\n",
+ "\n",
+ "#Variable declaration\n",
+ "R = 82.057e-3 #Gas constant \n",
+ "c1 = 10.0 #KgNaCl/m3 solution at inlet\n",
+ "c2 = 0.39 #Concentration of salt in outlet, KgNaCl/m3 solution\n",
+ "rho1 = 1004 #Density of inlet solution, Kg/m3\n",
+ "rho2 = 997.0 #Density of outlet solution, Kg/m3\n",
+ "delP = 54.42 #Pressure difference across membrane, atm\n",
+ "A = 2.0e-3 #Area of membrane, m2\n",
+ "V = 1.92e-8 #Flow rate of product, m3solution/s\n",
+ "MW = 58.45 #Molecular Wt of NaCl\n",
+ "#Calculations\n",
+ "\n",
+ "Nw = V*rho2/A\n",
+ "Ns = Nw*c2/rho2\n",
+ "C1 = c1*1000/((rho1-c1)*MW) #molNaCL/kgwater in inlet water\n",
+ "pi1 = 7.80 #from table 13.9-1 obtained by interpolation,atm\n",
+ "cw2 = rho2-c2 \n",
+ "C2 = c2*1000/((cw2)*MW) #molNaCL/kgwater in outgoing water \n",
+ "pi2 = 0.32 #from table 13.9-1 obtained by interpolation, atm\n",
+ "delpi = pi1-pi2\n",
+ "Aw = Nw/(delP-delpi)\n",
+ "As = Ns/(c1-c2)\n",
+ "R = (c1-c2)/c1\n",
+ "B = Aw/(As*cw2)\n",
+ "R = B*(delP-delpi)/(1+B*(delP-delpi))\n",
+ "#Result \n",
+ "print 'Solvent Permeability constant Aw =%6.4e kg solvent/(m2.s.atm)'%(Aw)\n",
+ "print 'Solute Permeability constant As=%6.4e m/s'%(As)\n",
+ "print \"Solute Rejection R=\", round(R,4)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Solvent Permeability constant 2.0390e-04 kg solvent/(m2.s.atm)\n",
+ "Solute Permeability constant 3.8959e-07 m/s\n",
+ "Solute Rejection 0.961\n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.10-1, Page number 788"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Prediction of Performance in a Reverse-Osmosis Unit \n",
+ "\n",
+ "#Variable declaration\n",
+ "c1 = 2.5 #Concentration of NaCl (kg NaCl/m3)\n",
+ "rho1 = 999. #Density of the solution (kg/m3)\n",
+ "Aw = 4.81e-4 #Permeability constant for water (kg/s.m2)\n",
+ "As = 4.42e-7 #Permeabilty constant for NaCl solute (kg/s.m2)\n",
+ "delP = 27.2 #Pressure drop across the membrane (atm)\n",
+ "c2 = 0.1 #Assumed Concentration of Product solution (kg NaCl/m3)\n",
+ "rho2 = 997. #Density of the product solution (kg/m3)\n",
+ "MW = 58.45 #Molecular weight of NaCl\n",
+ "\n",
+ "#Calculations\n",
+ "cw2 = rho2\n",
+ "C1 = (c1*1000)/((rho1-c1)*MW) #molNaCL/kgwater in inlet water\n",
+ "pi1 = 1.97 #from table 13.9-1 obtained by interpolation,atm\n",
+ "C2 = c2*1000/((rho2-c2)*MW) #molNaCL/kgwater in outgoing water \n",
+ "pi2 = 0.08 #from table 13.9-1 obtained by interpolation, atm\n",
+ "delpi = pi1-pi2\n",
+ "Nw = Aw*(delP - delpi)\n",
+ "B = Aw/(As*cw2)\n",
+ "R = B*(delP - delpi)/(1. + B*(delP - delpi))\n",
+ "c2 = c1 - R*c1 \n",
+ "Ns = As*(c1-c2)\n",
+ "\n",
+ "#Result \n",
+ "print 'Water flux through membrane Nw= %6.4e kg Water/(m2.s)'%(Nw)\n",
+ "print 'Solute flux through membrane Ns=%6.4e kg NaCl/(m2.s)'%(Ns)\n",
+ "print 'Solute Rejection rate is R=%4.3f' %(R)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Water flux through membrane Nw= 1.2174e-02 kg Water/(m2.s)\n",
+ "Solute flux through membrane Ns=1.0664e-06 kg NaCl/(m2.s)\n",
+ "Solute Rejection rate is R=0.965\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ " "
+ ]
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter14.ipynb b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter14.ipynb new file mode 100755 index 00000000..fcc586ae --- /dev/null +++ b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter14.ipynb @@ -0,0 +1,586 @@ +{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:9dc557e244e58a44c157bc89005c7dae2dc1b963927f29d131f60895891071ce"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 14: Mechanical-Physical Seperation Processes"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.2-1, Page number 810 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Evaluation of Filtration Constants for Constant-Pressure Filtration\n",
+ "#Variable declaration\n",
+ "A = 0.0439 #Filter area of the plate and frame press (m2)\n",
+ "P = -338000. #Pressure applied accross yhe plates (N/m2)\n",
+ "Cs = 23.47 #Slurry concentration (kg/m3)\n",
+ "mu = 0.0008937 #Viscosity of water in SI units (kg/m.s)\n",
+ "\n",
+ "#Calculation\n",
+ "from numpy import arange,array,ones,linalg, divide\n",
+ "from pylab import plot,show\n",
+ "\n",
+ "xi = arange(0.0,0.00501,0.00005)\n",
+ "t = [4.4,9.5,16.3,24.6,34.7,46.1,59.0,73.6,89.4,107.3]\n",
+ "\n",
+ "# linearly generated sequence\n",
+ "y = [0.498e-3,1.0e-3,1.501e-3,2.0e-3,2.498e-3,3.002e-3,3.506e-3,4.004e-3,4.502e-3,5.009e-3]\n",
+ "yy = divide(t,y)\n",
+ "Aa = array([y, ones(10)])\n",
+ "w = linalg.lstsq(Aa.T,yy)[0] # obtaining the parameters\n",
+ "# Use w[0] and w[1] for your calculations and give good structure to this ipython notebook\n",
+ "# plotting the line\n",
+ "line = w[0]*xi+w[1] # regression line\n",
+ "plot(xi,line,'r-',y,yy,'o')\n",
+ "ylabel('$t/V^2$')\n",
+ "xlabel('$V$')\n",
+ "xlim(0.0,5.1e-3)\n",
+ "ylim(0.0,22e3)\n",
+ "show()\n",
+ "Kp = 2.0*w[0]\n",
+ "B = w[1]\n",
+ "\n",
+ "alpha = (Kp*(A**2*(-P)))/(mu*Cs)\n",
+ "Rm = (B*(A*(-P)))/(mu)\n",
+ "#Result\n",
+ "print 'The value of constant alpha: %4.2e m/kg'%(alpha)\n",
+ "print 'The value of constant Rm: %4.3e 1/m'%(Rm)\n",
+ "print 'The values of alpha and Rm are more accurate than book the code utilises built in function'\n",
+ "print 'for regression, which gives better results than from graphical slope and intercept estimates'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nuykpKSEwMJDi4mI6derk5StpmMZsh9rObQq82QYrV65k/fr1bNq0yYtX0Djs+LNw7733+nSPzxtt\nkJuby759+4iIiPC8/vrrr2f79u0++/ngrT8LZ1/vL37xC0aOHHnhQho2NOVbTp8+bbp162by8vJM\neXn5Dw6UbdmyxTNQdqFz586d61nFYOHChT4/eOytdjgjKirKfPLJJ/ZcTD15qw02bNhgwsPDzcGD\nB+29oHryVjvs3bvXc35iYqK57777bLqiuvP23wdjTJOYSOCtdigqKvKcv3jxYjN+/PgL1tGsQscY\nY9avX2969OhhQkJCzBNPPGGMMea5554zzz33nOc1Dz/8sAkJCTH9+vWrMQurtnONMebQoUMmOjra\nhIaGmpiYGHP48GH7LqievNEO77zzjnG73aZt27YmICDADB061L4LqgdvtEH37t3NNddcY/r372/6\n9+9v4uPj7bugevJGO4wZM8b06dPHREREmNGjR5vS0lL7LqgevNEGZ7vuuut8PnSM8U47TJgwwfTt\n29f069fP3HHHHaakpOSCNejhUBERsU2zmkggIiK+TaEjIiK2UeiIiIhtFDoiImIbhY6IiNhGoSMi\nIrZR6IiIiG0UOiIiYhuFjogPyc7OJjIykgkTJnDw4EEAsrKy6N27N+vXr3e4OpGGa1YLfoo0deHh\n4YwYMYJrr72Wq6++GrBWB37zzTcJDw93uDqRhlNPR8THuN3uGiv67t69W4EjzYZCR8THuN1uz46k\nmzZtIjo62uGKRBqPQkfEx5zp6VRVVfHNN98QGBjodEkijUahI+JjzvR0UlNTGTVqlNPliDQqhY6I\nj2nfvj1lZWW0atWKyy67zOlyRBqVQkfEB/30pz9VL0eaJW3iJiIitlFPR0REbKPQERER2yh0RETE\nNgodERGxjUJHRERso9ARERHbKHRERMQ2Ch0REbHN/wfqctZlL8VHLAAAAABJRU5ErkJggg==\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x5fd7950>"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The value of constant alpha: 1.79e+11 m/kg\n",
+ "The value of constant Rm: 1.126e+11 1/m\n",
+ "The values of alpha and Rm are more accurate than book the code utilises built in function\n",
+ "for regression, which gives better results than from graphical slope and intercept estimates\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.2-2, Page number 811"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Time Required to perform a Filtration\n",
+ "from numpy import arange,array,ones,linalg, divide\n",
+ "from pylab import plot,show\n",
+ "\n",
+ "#Variable declaration\n",
+ "A = 0.873 #Filter area of each frame (m2)\n",
+ "C = 0.0439 #Proportionality constant\n",
+ "V = 3.37 #Volume of filtrate (m3)\n",
+ "xi = arange(0.0,0.00501,0.00005)\n",
+ "t = [4.4,9.5,16.3,24.6,34.7,46.1,59.0,73.6,89.4,107.3]\n",
+ "y = [0.498e-3,1.0e-3,1.501e-3,2.0e-3,2.498e-3,3.002e-3,3.506e-3,4.004e-3,4.502e-3,5.009e-3]\n",
+ "\n",
+ "#Calculation\n",
+ " # linearly generated sequence\n",
+ "yy = divide(t,y)\n",
+ "Aa = array([y, ones(10)])\n",
+ "w = linalg.lstsq(Aa.T,yy)[0] # obtaining the parameters\n",
+ "# Use w[0] and w[1] for your calculations and give good structure to this ipython notebook\n",
+ "# plotting the line\n",
+ "line = w[0]*xi+w[1] # regression line\n",
+ "plot(xi,line,'r-',y,yy,'o')\n",
+ "ylabel('$t/V^2$')\n",
+ "xlabel('$V$')\n",
+ "xlim(0.0,5.1e-3)\n",
+ "ylim(0.0,22e3)\n",
+ "show()\n",
+ "Kp = 2.0*w[0]\n",
+ "B = w[1]\n",
+ "\n",
+ "At = A*20. #Total area of the 20 frames (m2)\n",
+ "Kpc = Kp*(C/At)**2 #Corrected slope (s/m6)\n",
+ "Bc = B*(C/At) #Corrected intercept (s/m3)\n",
+ "#t = Kpc*V**2/2 + Bc*V\n",
+ "t = Kpc*V**2/2 + Bc*V\n",
+ "\n",
+ "#Result\n",
+ "print 'The time required to recover the filtrate is %5.2f s'%t\n",
+ "print 'The values slope and intercept of plot of t/v2 vs V is more accurate than book the code utilises '\n",
+ "print 'built in function for regression, which gives better results than from graphical estimates; Hence'\n",
+ "print 'time required to recover 3.37 m3 is different than given in book'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "iVBORw0KGgoAAAANSUhEUgAAAZ0AAAEMCAYAAAAf5WtEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtcVVX+//HXUUibSqc0QTkWiSjiBZ0SrakJhwAvaaV9\nNfvmpZzHJJX3r+PMNM3YzJjY45cppF0xrSaxq9ighONEfpu8pXT5SqNEqNxzRE1NQWD9/th5RkY0\nuZy9D/B+Ph48hjZnHz57jZ63a6+113IZYwwiIiI2aOV0ASIi0nIodERExDYKHRERsY1CR0REbKPQ\nERER2yh0RETENn5OF+AL+vfvz2effeZ0GSIiTcatt95KZmZmnc9TTwf47LPPMMa06K8//OEPjtfg\nC19qB7WD2uDi2uHDDz+s1+etQkdERM6RlraZuLjfsXJlJnFxvyMtbXOjvK9ur4mISA1paZuZMeN9\ncnMXAPPZv38+ubmPAjBixM8a9N7q6QgAUVFRTpfgE9QOFrVDy26DxMSM7wMHIAqA3NwFJCVtbPB7\nK3QEaNl/wc6mdrCoHVp2G5SXn30TLMrz3alTrRv83godERGpoU2bylqPt21b1eD3VuiIiEgN0x+O\nJiRwRo1jISG/Zdq0mAa/t8sY0+K3NnC5XKgZRKTFO34cVq6EJUtIa9WepB8N4FT7INpeWs20aTE1\nJhHU93NToYNCR0RauIICeOYZeOkluPVWmD0bbroJXK7znlLfz03dXhMRaal27YIJE6BfPzh1CrZv\nh7ffhp/+9IKB0xAKHRGRlqS6Gt57D4YMgTvusALn669hyRLo1s3rv14Ph4qItATffQerVsHTT0O7\ndjBnDtx9N/j721qGQkdEpDkrLrbGa154wbptlpwMN9/stdtnP0S310REmqPPPoPJk6F3bzh6FD7+\nGNauhVtucSxwwMHQyc/PZ8iQIfTu3Zs+ffqQmJgIQFlZGTExMfTo0YPY2FiOHDniOWfhwoWEhoYS\nFhZGRkaG5/jOnTvp27cvoaGhzJjx77nl5eXljBs3jtDQUAYPHsz+/fvtu0AREbtVV8P69XDbbTB8\nOPTsCV99ZfV0QkOdrs5iHFJcXGyysrKMMcYcO3bM9OjRw2RnZ5u5c+eaRYsWGWOMSUhIMPPmzTPG\nGLN7924TERFhKioqTF5engkJCTHV1dXGGGMGDhxotm3bZowxZtiwYWbDhg3GGGOWLVtm4uPjjTHG\npKSkmHHjxtVai4PNICLScN99Z8zzzxsTFmZM//7GvPqqMeXlXv2V9f3cdKynExgYSP/+/QG4/PLL\n6dWrF4WFhaxbt45JkyYBMGnSJNauXQtAamoq48ePx9/fn+DgYLp37862bdsoLi7m2LFjREZGAjBx\n4kTPOWe/15gxY9i0aZPdlyki4j2lpfD738O118Jf/wrPPmtNg77vPrjkEqerq5VPTCTYt28fWVlZ\nDBo0iNLSUgICAgAICAigtLQUgKKiIgYPHuw5x+12U1hYiL+/P26323M8KCiIwsJCAAoLC+natSsA\nfn5+tG/fnrKyMq666iq7Lk1EpM7S0jaTmJhBebkfbdpUMn16bM0tBf7v/6xZaO+8A+PGwf/+r3Ur\nrQlwPHSOHz/OmDFjWLp0KVdccUWNn7lcLlwODniJiNit5l42ltzcR8EYRvifgsWL4fPP4eGHIScH\nOnZ0sNq6czR0Tp8+zZgxY5gwYQJ33nknYPVuSkpKCAwMpLi4mE6dOgFWDyY/P99zbkFBAW63m6Cg\nIAoKCs45fuacAwcO0KVLFyorKzl69Oh5eznz58/3fB8VFdWilzUXEefU3MvGkpu7gKR7hjCi2yFr\niZp166BNG1vryszMJDMzs+Fv1MhjSxeturraTJgwwcycObPG8blz55qEhARjjDELFy48ZyJBeXm5\n+frrr023bt08EwkiIyPN1q1bTXV19TkTCaZOnWqMMWb16tWaSCAiPu/WW/9gwJzzdWvfacZ8/5nn\nC+r7uelYT+cf//gHr732Gv369WPAgAGANSX617/+NWPHjiU5OZng4GDeeOMNAMLDwxk7dizh4eH4\n+fmxfPlyz6235cuXM3nyZE6ePMnw4cMZOnQoAFOmTGHChAmEhobSoUMHUlJSnLlYEZGL1Ob0kVqP\nt+3S3tHnaxqLVplGq0yLiMOMgU2bYPFi0j7+ghmtbif38LOeH4eE/JalS4fWnEzgMG1t0AAKHRFx\nRHk5pKRYkwMqK2HWLLjvPtI2bScpaSOnTrWmbduqc/ay8QUKnQZQ6IiIrQ4dgueeg2XLoE8fa/HN\n2NgmdftM++mIiPi6vXvhoYege3fIzYX334eMDIiLa1KB0xCOP6cjItKsGQMffghPPQXbtsHUqfDl\nlxAY6HRljlDoiIh4Q0UFvPGGNV5z8iTMnGn996WXOl2ZozSmg8Z0RKQRHT5s7V2TlGQtTTNnDgwd\nCq2a12hGfT831dMREWkMX30FS5fCX/4CI0daC3B+v6ix/Fvzil4RETsZYy22edddcOONcMUV1mKc\nq1YpcM5DPR0Rkbo6fRreessarzl61Hq+5rXX4LLLnK7M52lMB43piMi/XXBbgSNH4KWXIDERunWz\nxmtGjGh24zUXQ2M6IiINdN5tBUpKGPHFx/DKKzBsGLz7Llx/vYOVNl3q6aCejohY4uJ+R0bGn889\n7ncT6XN+Bo88AmdtGtmSqacjItJA5eW1fySeGhwNCX+yuZrmqeXdiBQRqc2339Km5Ktaf9RW8wMa\njUJHRFq2/futCQHXXcf0TocJCZpT48chIb9l2rQYh4prfnR7TURapu3brSnPGzfCAw9AVhYjrrkG\n0jaTlPTYWdsK+NY+Nk2dJhKgiQQiLUZVFaSmWmFTWAjTp8OUKdCundOVNTmaSCAicj7HjsHLL8OS\nJRAQYN1Ou/NO8NNHoN3U4iLSfOXnwzPPQHIyDBlirYt2441OV9WiaSKBiDQ/n3wC994LERHWFgM7\ndsCbbypwfIB6OiLSPFRVWSs7L14M+/bBtGnw7LPQvr3TlclZFDoi0rSdOGGt6vz003DlldZ4zZgx\nGq/xUfp/RUSapqIia7zmxRfhlltgxQq4+WZwuZyuTC5AYzoi0rRkZcHEidCnjzUrbetWeOcdK3gU\nOD5PoSMivq+62hqv+fnPYdQoK3Byc60toUNCnK5O6kC310TEp9TYz8avnOk9DSM2rbU2SJs9G8aO\nBX9/p8uUelLoiIjPqHU/my33w2PTGDHvId0+awZ0e01EfEbigrdrBA5A7ncvk5RZosBpJhQ6IuKs\n6mrYsAFiYij/5MtaX3LqVGubixJv0e01EXHGqVPw2mvWw5yXXAKzZtGGPfC3c1/atm2V/fWJVyh0\nRMRe33wDy5dbqwXccIP1rM2QIeByMb3jZnLzHq1xi83az2aogwVLY1LoiIg9srOtVQPeftuagfbh\nhxAWVuMlZ/at0X42zZf200H76Yh4jTHwt79Zt9A+/RQeegji46FjR6crkwbSfjoi4jvKy+H1162w\nAev5mnffhbZtna1LHKfQEZHG869/wXPPwbJl1rYCTz0FMTGa7iwemjItIg23Zw9MnQqhoda2Ahs3\nQno6xMYqcKQG9XREpH6MgQ8+sG6h7dhhjdX885/WdtAi56HQEZG6qaiAlBQrbCoqrPGaN9+ESy91\nujJpAjR7Dc1eE7koZWXw/PPWczXh4TBrFgwdCq10l74lqu/npv60iMiF5eTAww9bWwjs2WMtWbNx\nIwwfrsCROtPtNRHx8GwrcKo1bU4eZHqrHEZ8/Rk8+KD1cGfnzk6XKE2cQkdEgDPbCqSTm/uE51ju\n1Y/As3MZMSbWwcqkOXG0b/zAAw8QEBBA3759Pcfmz5+P2+1mwIABDBgwgA0bNnh+tnDhQkJDQwkL\nCyMjI8NzfOfOnfTt25fQ0FBmzJjhOV5eXs64ceMIDQ1l8ODB7N+/354LE2lqDh8mcdbzNQIHIPfg\nMyS9+L8OFSXNkaOhc//995Oenl7jmMvlYvbs2WRlZZGVlcWwYcMAyM7OZs2aNWRnZ5Oens5DDz3k\nGcSKj48nOTmZnJwccnJyPO+ZnJxMhw4dyMnJYdasWcybN8/eCxTxdbm5MH06hIRQfrSy1pdoWwFp\nTI6Gzi233MKVV155zvHaZkSkpqYyfvx4/P39CQ4Opnv37mzbto3i4mKOHTtGZGQkABMnTmTt2rUA\nrFu3jkmTJgEwZswYNm3a5MWrEWkijIGPPoLRo2HQIGsb6C++oE3/0Fpfrm0FpDH55NSTpKQkIiIi\nmDJlCkeOHAGgqKgIt9vteY3b7aawsPCc40FBQRQWFgJQWFhI165dAfDz86N9+/aUlZXZeCUiPqSy\nEtassYLm/vvh5z+3Vg9YuBCCgpg+PZaQkEdrnGJtKxDjTL3SLPncRIL4+Hh+//vfA/DYY48xZ84c\nkpOTHa5KpAk7ehReegkSEyE4GB59FG6/HVrXvG2mbQXEDj4XOp06dfJ8/4tf/IKRI0cCVg8mPz/f\n87OCggLcbjdBQUEUFBScc/zMOQcOHKBLly5UVlZy9OhRrrrqqlp/7/z58z3fR0VFERUV1YhXJeKA\nffusoFm50nqI8623YODAC54yYsTPFDJSq8zMTDIzMxv+RsZheXl5pk+fPp7/Lioq8ny/ePFiM378\neGOMMbt37zYRERGmvLzcfP3116Zbt26murraGGNMZGSk2bp1q6murjbDhg0zGzZsMMYYs2zZMjN1\n6lRjjDGrV68248aNq7UGH2gGkcbz8cfG3H23MVddZcz//I8xBw44XZE0Q/X93HS0pzN+/Hg+/PBD\n/vWvf9G1a1cef/xxMjMz+fTTT3G5XFx33XU8//zzAISHhzN27FjCw8Px8/Nj+fLluL5fvXb58uVM\nnjyZkydPMnz4cIYOtba2nTJlChMmTCA0NJQOHTqQkpLi2LWKeFVlJaxda62HVlICM2fCihVwxRVO\nVyZSg9ZeQ2uvSRN27JgVLkuWQFCQtfjmHXecM14j0ti0c6hIS3LgACQlWYFz222wejUMHux0VSI/\nyCenTIvIeezYAePHw4ABUF0NO3da06AVONJEqKcj4uuqqmDdOmu8Jj8fZsywthho187pykTqTKEj\n4quOH7emOy9ZAh06WOM1Y8aAn/7aStOlP70iPsKzrcC3VbQpyWX6vz5iROyN8MorcOON8P1sTZGm\nTKEj4gPS0jYzY+o6cgv+n+dY7jW/ggduZ8RNNzlYmUjj0kQCESdVV8O6dSRO+HONwAHIPfAkSUkb\nHSpMxDvU0xFxwokT1m2zp5+Gdu0oDxgIh899mbYVkOZGPR0ROxUXWwtuBgdDRgYkJ8OOHbS5pkOt\nL9e2AtLcKHRE7PD55zB5MvTuba36/PHH8O67cMst4HJpWwFpMbQMDloGR7ykuhrS063na778EqZN\ng1/+Es6z0nla2maSkjaeta1AjFZ8Fp9V389NhQ4KHWlkJ0/Cq69a4zVt28KcOTB2LFxyidOViTQa\nrb0m4rTSUli+HJ57DiIjre+jovR8jchZNKYj0lBffAEPPABhYVbwbN4M770HQ4YocET+g3o6IvVh\njDX7bPFiK3QefhhycqBjR6crE/FpCh2Rujh1Cv7yF2u8pnVraz20e+6BNm2crkykSVDoiFyMgwfh\n2WetcZoBA6xFOKOjdftMpI40piNyIdnZ1jTnHj2sbQX+/nfYsMHaOE2BI1Jn6umI/CdjYNMma7xm\n1y6Ij4c9e6BTJ6crE2nyFDoiZ5SXQ0qKFTZVVTBrFrzzjvWsjYg0Cj0cih4ObfEOHSJt1mMkrvmc\n8h9dTZtuAUx/fDwjbr/V6cpEfJYeDhWpq717YckS0la9w4zWt5Nb8RFUALsgd+aj4HJpGRqRRqaJ\nBNKyGAMffAAjR8LNN0OHDiQOnEDusZdqvCw3d4H2shHxAoWOtAwVFfDaa3D99dbEgJEjYf9++NOf\nKOeyWk/RXjYijU+316R5O3wYnn8ekpKgVy/4859h6FBo9e9/b7VpU1nrqdrLRqTxqacjzdNXX1lb\nCYSEWNsKpKXB3/4Gw4fXCBxAe9mI2Eg9HWk+jIGPPrKmPH/0kfVQ5+7d0LnzBU87M1kgKemxs/ay\nGapJBCJeoCnTaMp0k3f6NLz1lhU2R49az9dMnAiX1T5WIyINp03cGkCh00QdOQIvvmiN14SEWGFz\n++3n3D4TkcZX38/NH/zbefz4cQBOnz5NVZUGVsUH5OXBzJnQrRt8+im8+641DXrUKAWOiI+74N/Q\nJ598kj/+8Y/Mnj2bo0ePMnXqVLvqEjnXli1w990wcKC1NM3nn1vbDFx/vdOVichFuuBEgkGDBjFo\n0CD8/f15/fXXqa6utqsuEUtlpdWTWbzY2l5g5kxYuRIuv9zpykSkHi7Y07nssstYuXIlrVu3JiEh\ngZ/85Cd21SUt3bffWhulde8OS5fCr35lrfT8yCMKHJEm7KInEmRlZeFyudi9ezfR0dEEBgZ6uzbb\naCKBD9m/HxITrd5MTIy1M2dkpNNVich/sHX22qZNm/jmm28YNWoUlzWDaakKHR+wfTs89ZT1AOf9\n91sPdl57rdNVich5eD10Dh48yNVXX+3576qqKlJTU2nVqhWjRo2iVROeNaTQcUhVFaSmkva7RSTm\ntaE8qAdtru3I9NnD9WCmiI/z+tYGs2fPJjo6mvz8fAoKCjz/W1ZWxurVq1mzZk2df7m0UMeOwcsv\nW9sKXNKBGUduIvfUUsgFciF3v7UkjYJHpPm56J5OZGQkI0aMwO121/hq3769t2v0OvV0bJKfD888\nA8nJMGQIzJ5N3Pw0MjL+fM5L4+IeIz39Tw4UKSIXw+s9nVWrVtGrV686/wIRPvnEmvKcnm4tT7Nj\nB1x3HQDl5e/Xeoq2FRBpni5qIGbPnj34+WltUKmD78dr+NnPYPRo6wHOvDxYssQTOKBtBURamotK\nkpCQEDIzM8nIyKBVq1YMHDiQG264wdu1SVN04oQ13XnJErjySpgzB8aMgfP8o2X69Fhycx8lN3eB\n55i1rcBQmwoWETvVa8r09u3b2blzJ9XV1fTs2ZOoqKgm3RPSmE4jKCqyxmtefBFuucV6vuanPwWX\n6wdPTUvbTFLSxrO2FYjRJAIRH+fYKtN79uwhMzOTiooKgoKCiIuLu+hndx544AHS0tLo1KkTX3zx\nBQBlZWWMGzeO/fv3ExwczBtvvMGPf/xjABYuXMiKFSto3bo1iYmJxMbGArBz504mT57MqVOnGD58\nOEuXLgWgvLyciRMnsmvXLjp06MCaNWu4tpZnPxQ6DZCVZa0c8N57cN991jI1ISFOVyUiXlbvz01T\nD8XFxZ7vT5w44fm+sLDQpKSkXPT7bN682ezatcv06dPHc2zu3Llm0aJFxhhjEhISzLx584wxxuze\nvdtERESYiooKk5eXZ0JCQkx1dbUxxpiBAweabdu2GWOMGTZsmNmwYYMxxphly5aZ+Ph4Y4wxKSkp\nZty4cbXWUc9maLmqqox57z1jhgwxJijImEWLjCkrc7oqEbFRfT8363TWggULzPr1680LL7zgObZ9\n+3bz97//vV6/3Bhj8vLyaoROz549TUlJiTHGCreePXsaY4x54oknTEJCgud1cXFxZsuWLaaoqMiE\nhYV5jq9evdo8+OCDntds3brVGGPM6dOnTceOHWutQaFzkU6cMObZZ43p0cOYn/zEmNdeM6aiwumq\nRMQB9f3crNNAzF133cUHH3xAcnIy69atIzAwkMjISAoLCxkyZEjdu1m1KC0tJSAgAICAgABKS0sB\nKCoqYvDgwZ7Xud1uCgsL8ff3x+12e44HBQVRWFgIQGFhIV27dgXAz8+P9u3bU1ZWxlVXXdUotbYY\nJSWwbBk8/zwMHgwvvGDNSruI8RoRkbPVKXR69epFr169uO666xg2bBglJSXs2LHDa6tPu1wuXDZ9\nsM2fP9/zfVRUFFFRUbb8Xp/2xRfW8zWpqTB+PHz0EfTo4XRVIuKAzMxMMjMzG/w+9ZpyNmzYMAAC\nAwMZOXJkg4s4W0BAACUlJQQGBlJcXEynTp0AqweTn5/veV1BQQFut5ugoCAKCgrOOX7mnAMHDtCl\nSxcqKys5evToeXs5Z4dOi1ZdDe+/b4VNdra1lUBODnTo4HRlIuKg//zH+OOPP16v9/G5VTpHjRrF\nqlWrAGsVhDvvvNNzPCUlhYqKCvLy8sjJySEyMpLAwEDatWvHtm3bMMbw6quvcscdd5zzXm+99RbR\n0dHOXJQPS0vbTFzc74i65THiek8m7do+8JvfwIQJ1sOcv/mNAkdEGk/jDi3VzT333GM6d+5s/P39\njdvtNitWrDCHDh0y0dHRJjQ01MTExJjDhw97Xr9gwQITEhJievbsadLT0z3HP/nkE9OnTx8TEhJi\npk2b5jl+6tQp81//9V+me/fuZtCgQSYvL6/WOhxuBsf89a8fmpDgXxkwnq+QLjPNX9/LdLo0EfFx\n9f3cbPBzOs1Bi3xOJzubuNjfklG49pwfabFNEfkh9f3c9Lnba+JFxsDGjTBsGERHU+7341pfpsU2\nRcRbFDotQXm5tX9Nv37W8jRjx8K+fbTp6a715VpsU0S8RaHTnB08CH/6EwQHw5o11nbQn39ubQfd\npg3Tp8cSEvJojVOsxTZjnKlXRJq9prtKp5zfP/9prYf2xhvWtgIbN0KfPue87MyimklJj5212OZQ\nLbYpIl6jiQQ4N5EgLW0ziYkZlJf70aZNJdOnx9b/A98Y+OAD6/maTz6BqVMhPh6+X91BRKQxeX3n\nUGlcaWmbmTHj/Rr7yOTmWre66hQ8FRWQkmKFTUWFNWbz5ptw6aWNXbKISIOpp4MzPZ24uN+RkfHn\nWo5f5HTlsjJrLbRnnoHwcCts4uKglYbpRMT7NGW6iSkvr72T+YPTlffuhYcftvas2bsXNmz49zRo\nBY6I+DjdXnNImzaVtR6vdbqyMbB5s3ULbcsWePBBa120zp29XKWISOPSP40dclHTlU+fhr/8BW64\nAX75S6s3s2+fNQ1agSMiTZDGdHB29lpS0sazpivHWJMIDh+GF1+EpCTo3h3mzIHhw3X7TER8Rn0/\nNxU6+NDaa7m5sHQpvPYa3H47zJoFAwY4XZWIyDk0kaCpMsbaHG30aBg0CH70I2vztFdeUeCISLOj\niQROqayEt96yJgeUlVm9mldegcsvd7oyERGv0e01bL69dvQovPQSJCZaa6LNnm3dSmutlZ1FpOnQ\nigS+bt8+a7xm1SoYOhTeftualSYi0oJoTMfbtm61thK4/nrw84PPPoPXX1fgiEiLpJ6ON1RWwtq1\n1nhNSQnMnAnJyXDFFU5XJiLiKIVOY/r2W1ixwrqN1qWL9XzNnXdqvEZE5HsKncZw4IA1MeDllyE6\nGlavhsGDna5KRMTnaEynIXbsgPHjredpjIGdO62N0xQ4IiK1Uk+nrqqqYN06a7wmPx9mzLC2GGjX\nzunKRER8nkLnYh0/bt0+W7IEOna0xmtGj7ZmpImIyEXRJ+YPKSiwNkp76SWIioJXX4UbbwSXy+nK\nRESaHI3pnM+uXXDffdCvH5w6Bdu3W8vW3HSTAkdEpJ4UOmerrrbGa6KirKnOERHw9dfWLbVu3Zyu\nTkSkydPttTOefRaeftqaEDBnDtx9N/j7O12ViEizotA5IyPDWjXg5pt1+0xExEu0yjQ+tImbiEgT\noU3cRETE5yl0RETENgodERGxjUJHRERso9ARERHbKHRERMQ2Ch0REbGNQkdERGyj0BEREdsodERE\nxDYKHRERsY1CR0REbKPQERER2/hs6AQHB9OvXz8GDBhAZGQkAGVlZcTExNCjRw9iY2M5cuSI5/UL\nFy4kNDSUsLAwMjIyPMd37txJ3759CQ0NZcaMGbZfh4iI/JvPho7L5SIzM5OsrCy2b98OQEJCAjEx\nMezdu5fo6GgSEhIAyM7OZs2aNWRnZ5Oens5DDz3kWXI7Pj6e5ORkcnJyyMnJIT093bFrEhFp6Xw2\ndIBz9mpYt24dkyZNAmDSpEmsXbsWgNTUVMaPH4+/vz/BwcF0796dbdu2UVxczLFjxzw9pYkTJ3rO\nERER+/ls6LhcLm677TZuuOEGXnzxRQBKS0sJCAgAICAggNLSUgCKiopwu92ec91uN4WFheccDwoK\norCw0MarEBGRs/nsdtX/+Mc/6Ny5MwcPHiQmJoawsLAaP3e5XLgacVvp+fPne76PiooiKiqq0d5b\nRKSpy8zMJDMzs8Hv47Oh07lzZwCuvvpq7rrrLrZv305AQAAlJSUEBgZSXFxMp06dAKsHk5+f7zm3\noKAAt9tNUFAQBQUFNY4HBQXV+vvODh0REanpP/8x/vjjj9frfXzy9tp3333HsWPHADhx4gQZGRn0\n7duXUaNGsWrVKgBWrVrFnXfeCcCoUaNISUmhoqKCvLw8cnJyiIyMJDAwkHbt2rFt2zaMMbz66que\nc0RExH4+2dMpLS3lrrvuAqCyspL//u//JjY2lhtuuIGxY8eSnJxMcHAwb7zxBgDh4eGMHTuW8PBw\n/Pz8WL58uefW2/Lly5k8eTInT55k+PDhDB061LHrEhFp6VzmP6eItUAul+ucmXIiInJ+9f3c9Mnb\nayIi0jwpdERExDYKHRERsY1CR0REbKPQERER2yh0RETENgodERGxjUJHRERso9ARERHbKHRERMQ2\nCh0REbGNQkdERGyj0BEREdsodERExDYKHRERsY1CR0REbKPQERER2yh0RETENgodERGxjUJHRERs\no9ARERHbKHRERMQ2Ch0REbGNQkdERGyj0BEREdsodERExDYKHRERsY1CR0REbKPQERER2yh0RETE\nNgodERGxjUJHRERso9ARERHbKHRERMQ2Ch0REbGNQkdERGyj0BEREdsodERExDYKHRERsY1CR0RE\nbKPQERER27SI0ElPTycsLIzQ0FAWLVrkdDkiIi1Wsw+dqqoqHnnkEdLT08nOzmb16tV8+eWXTpfl\nczIzM50uwSeoHSxqB7XBGY3dDs0+dLZv30737t0JDg7G39+fe+65h9TUVKfL8jn6C2ZRO1jUDmqD\nMxQ6dVRR5qKHAAAGFklEQVRYWEjXrl09/+12uyksLHSwIhGRlqvZh47L5XK6BBEROcM0c1u2bDFx\ncXGe/37iiSdMQkJCjdeEhIQYQF/60pe+9HWRXxEREfX6THYZYwzNWGVlJT179mTTpk106dKFyMhI\nVq9eTa9evZwuTUSkxfFzugBv8/Pz45lnniEuLo6qqiqmTJmiwBERcUiz7+mIiIjvaHYTCS7mQdDp\n06cTGhpKREQEWVlZP3huWVkZMTEx9OjRg9jYWI4cOeL162gob7TDm2++Se/evWndujW7du3y+jU0\nlDfaYO7cufTq1YuIiAhGjx7N0aNHvX4dDeWNdnjssceIiIigf//+REdHk5+f7/XraAhvtMEZTz31\nFK1ataKsrMxr9TcWb7TD/PnzcbvdDBgwgAEDBpCenn7hIuo9Qu+DKisrTUhIiMnLyzMVFRUmIiLC\nZGdn13hNWlqaGTZsmDHGmK1bt5pBgwb94Llz5841ixYtMsYYk5CQYObNm2fjVdWdt9rhyy+/NHv2\n7DFRUVFm586d9l5UHXmrDTIyMkxVVZUxxph58+a12D8L3377ref8xMREM2XKFJuuqO681QbGGHPg\nwAETFxdngoODzaFDh+y7qHrwVjvMnz/fPPXUUxddR7Pq6VzMg6Dr1q1j0qRJAAwaNIgjR45QUlJy\nwXPPPmfSpEmsXbvW3gurI2+1Q1hYGD169LD9eurDW20QExNDq1atPOcUFBTYe2F15K12uOKKKzzn\nHz9+nI4dO9p3UXXkrTYAmD17Nk8++aSt11Nf3mwHU4dRmmYVOhfzIOj5XlNUVHTec0tLSwkICAAg\nICCA0tJSb15Gg3mrHZoSO9pgxYoVDB8+3AvVNx5vtsOjjz7KNddcw6pVq/j1r3/txatoGG+1QWpq\nKm63m379+nn5ChqHN/8sJCUlERERwZQpU35w+KFZhc7FPgh6MalsjKn1/Vwul88/cNqY7dBUebsN\nFixYwCWXXMK9995br/Pt4s12WLBgAQcOHGDy5MnMmjWrzufbxRttcPLkSZ544gkef/zxep3vBG/9\nWYiPjycvL49PP/2Uzp07M2fOnAu+vllNmQ4KCqoxoJmfn4/b7b7gawoKCnC73Zw+ffqc40FBQYDV\nuykpKSEwMJDi4mI6derk5StpmMZsh9rObQq82QYrV65k/fr1bNq0yYtX0Djs+LNw7733+nSPzxtt\nkJuby759+4iIiPC8/vrrr2f79u0++/ngrT8LZ1/vL37xC0aOHHnhQho2NOVbTp8+bbp162by8vJM\neXn5Dw6UbdmyxTNQdqFz586d61nFYOHChT4/eOytdjgjKirKfPLJJ/ZcTD15qw02bNhgwsPDzcGD\nB+29oHryVjvs3bvXc35iYqK57777bLqiuvP23wdjTJOYSOCtdigqKvKcv3jxYjN+/PgL1tGsQscY\nY9avX2969OhhQkJCzBNPPGGMMea5554zzz33nOc1Dz/8sAkJCTH9+vWrMQurtnONMebQoUMmOjra\nhIaGmpiYGHP48GH7LqievNEO77zzjnG73aZt27YmICDADB061L4LqgdvtEH37t3NNddcY/r372/6\n9+9v4uPj7bugevJGO4wZM8b06dPHREREmNGjR5vS0lL7LqgevNEGZ7vuuut8PnSM8U47TJgwwfTt\n29f069fP3HHHHaakpOSCNejhUBERsU2zmkggIiK+TaEjIiK2UeiIiIhtFDoiImIbhY6IiNhGoSMi\nIrZR6IiIiG0UOiIiYhuFjogPyc7OJjIykgkTJnDw4EEAsrKy6N27N+vXr3e4OpGGa1YLfoo0deHh\n4YwYMYJrr72Wq6++GrBWB37zzTcJDw93uDqRhlNPR8THuN3uGiv67t69W4EjzYZCR8THuN1uz46k\nmzZtIjo62uGKRBqPQkfEx5zp6VRVVfHNN98QGBjodEkijUahI+JjzvR0UlNTGTVqlNPliDQqhY6I\nj2nfvj1lZWW0atWKyy67zOlyRBqVQkfEB/30pz9VL0eaJW3iJiIitlFPR0REbKPQERER2yh0RETE\nNgodERGxjUJHRERso9ARERHbKHRERMQ2Ch0REbHN/wfqctZlL8VHLAAAAABJRU5ErkJggg==\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x5fd7eb0>"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The time required to recover the filtrate is 264.61 s\n",
+ "The values slope of plot of t/v2 vs V is more accurate than book the code utilises built in function\n",
+ "for regression, which gives better results than from graphical slope and intercept estimates; Hence\n",
+ "time required to recover 3.37 m3 is different than given in book\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.2-3, Page number 813"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Rate of Washing and Total Filter Cycle time\n",
+ "#Variable declaration\n",
+ "Kp = 37.93 #Slope of the line multiplied by 2 (s/m6) \n",
+ "B = 16.10 #Determined Intercept from data plotted (s/m3)\n",
+ "Vf = 3.37 #Volume of the Flitrate (m3)\n",
+ "Vw = 0.337 #Volume of wash water (m3)\n",
+ "Tc = 20. #Filter cleaning time (min)\n",
+ "Tr = 269.7 #Filtrate recovry time (s)\n",
+ "#Calculation\n",
+ "#(dV/dt) = (1/4)*(1/(Kp*Vf + B))\n",
+ "R = (1./4.)*(1./((Kp*Vf) + B))\n",
+ "#Tw = (Volume of wash water)/(Rate of washing)\n",
+ "#Tw = Vw/(R)\n",
+ "Tw = Vw/(R)\n",
+ "#Total filtration cycle = Filtrate recovry time + Time of washing + Filter cleaning time\n",
+ "#Tt = Tr/60 + Tw/60 + Tc\n",
+ "Tt = Tr/60. + Tw/60. + 20.\n",
+ "#Result\n",
+ "print \"The time of washing is\",round(Tw,1),\"s\"\n",
+ "print \"The total filtration cycle is\",round(Tt,2),\"min\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The time of washing is 194.0 s\n",
+ "The total filtration cycle is 27.73 min\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.2-4, Page number 814 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Filtration in a continuous Rotary drumn\n",
+ "#Variable declaration\n",
+ "Rho = 996.9 #Density of water (kg/m3)\n",
+ "Cx = 0.191 #Solids concentration in slurry (kg)\n",
+ "m = 2.\n",
+ "P = -67.e3 #Pressure drop in Filter (Pa)\n",
+ "M = 0.778 #Mass of slurry (kg)\n",
+ "tc = 250. #Filter cycle time (s)\n",
+ "mu = 0.8937e-3 #Viscosity of slurry (Pa.s)\n",
+ "f = 0.33 #Fraction of drum submerged\n",
+ "#Calculation\n",
+ "#Cs = (Rho*Cx)/(1-m*Cx)\n",
+ "Cs = (Rho*Cx)/(1-m*Cx)\n",
+ "alpha = (4.37e9)*(-P)**0.3\n",
+ "\n",
+ "R = M*Cx/Cs\n",
+ "\n",
+ "A = R*((tc*mu*alpha*Cs)/(2*f*(-P)))**0.5\n",
+ "#Result\n",
+ "\n",
+ "print \"The Filter Area needed to filter the slurry is \",round(A,2),\"m2\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Filter Area needed to filter the slurry is 6.66 m2\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.3-1, Page number 818 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Filtration in a continuous Rotary drumn\n",
+ "#Variable declaration\n",
+ "Dp = 2.0e-5 #Diameter of the oil droplet (m)\n",
+ "rhooil = 900. #Density of oil (kg/m3)\n",
+ "rhoair = 1.137 #Density of air (kg/m3)\n",
+ "muair = 1.9e-5 #Viscosity of air (Pa.s)\n",
+ "vt = 0.305 #Assumed terminal settling velocity (m/s)\n",
+ "\n",
+ "#Calculation\n",
+ "eR = 1.\n",
+ "i = 0\n",
+ "while eR>=0.00001:\n",
+ " i= i+1\n",
+ " Nre = Dp*vt*rhoair/muair\n",
+ " Cd = 24./Nre\n",
+ " vtnew = sqrt(4.*(rhooil-rhoair)*9.81*Dp/(3*Cd*rhoair))\n",
+ " eR = abs((vt-vtnew)/vt)\n",
+ " vt = vtnew\n",
+ "#Result\n",
+ "print 'Reynolds number %4.3f'%Nre\n",
+ "print \"The calculated terminal settling velocity is\",round(vt,4),\"m/s\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Reynolds number 0.012\n",
+ "The calculated terminal settling velocity is 0.0103 m/s\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.3-2, Page number 820"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Hindered Settling of Spheres\n",
+ "\n",
+ "#Variable declaration\n",
+ "D = 1.554e-4 #Diameter of the glass sphere (m)\n",
+ "rhoglass = 2467. #Density of glass (kg/m3)\n",
+ "rhowater = 998. #Density of water (kg/m3)\n",
+ "muwater = 1.005e-3 #Viscosity of water (Pa.s)\n",
+ "P_w = 40. #Percentage of water in mixture \n",
+ "P_s = 60. #Percentage of solids in mixture \n",
+ "g = 9.807 #Gravitational acceleration (m/s2)\n",
+ "#Calculation\n",
+ "e = (P_w/rhowater)/(P_w/rhowater + P_s/rhoglass)\n",
+ "rho_m = e*rhowater + (1 - e)*rhoglass\n",
+ "fi = 1/10**(1.82*(1-e))\n",
+ "vt = (g*D**2*(rhoglass - rhowater)*e**2*fi)/(18.*muwater)\n",
+ "N_re = (D*vt*rho_m*fi)/(muwater*e)\n",
+ "#Result\n",
+ "print 'The terminal velocity of the glass ball is %6.3e'%(vt),\"m/s\"\n",
+ "print \"The Reynolds number is\",round(N_re,3)\n",
+ "if N_re <= 1.:\n",
+ " print 'Hence, the settling is in laminar range'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The terminal velocity of the glass ball is 1.530e-03 m/s\n",
+ "The Reynolds number is 0.121\n",
+ "Hence, the settling is in laminar range\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.3-3, Page number 824"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Separation of a Mixture of Silica and Galena\n",
+ "\n",
+ "#Variable declaration\n",
+ "Dpl = 5.21e-6 #Size of the smallest particle (m)\n",
+ "Dpb = 2.50e-5 #Size of the largest particle (m) \n",
+ "rhoA = 7500. #Density of Galena (kg/m3)\n",
+ "rhoB = 2650. #Densiy of Silica (kg/m3)\n",
+ "rhol = 998. #Density of Water (kg/m3)\n",
+ "mu = 1.005e-3 #Viscosity of Water (Pa.s)\n",
+ "g = 9.807 #Gravitational accelertion (m/s2)\n",
+ "#Calculation\n",
+ "vtA =g*Dpb**2*(rhoA-rhol)/(18*mu)\n",
+ "Nre = Dpb*vtA*rhol/mu\n",
+ "DpA3 = Dpb*((rhoB-rhol)/(rhoA-rhol))**0.5\n",
+ "DpB2 = Dpl/((rhoB-rhol)/(rhoA-rhol))**0.5\n",
+ "\n",
+ "print 'The size range for first fraction of pure A Galena is as follows:\\n%5.3e to %5.3e' %(DpA3,Dpb)\n",
+ "print 'The size range for first fraction of pure B Silica is as follows:\\n%5.3e to %5.3e' %(Dpl,DpB2)\n",
+ "print 'The mixed fraction ranges is as follows:\\n%5.3e to %5.3e and \\n%5.3e to %5.3e' %(DpB2,Dpb,Dpl,DpA3) "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The size range for first fraction of pure A Galena is as follows:\n",
+ "1.260e-05 to 2.500e-05\n",
+ "The size range for first fraction of pure B Silica is as follows:\n",
+ "5.210e-06 to 1.034e-05\n",
+ "The mixed fraction ranges is as follows:\n",
+ "1.034e-05 to 2.500e-05 and \n",
+ "5.210e-06 to 1.260e-05\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.4-1, Page number 831"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Force in a centrifuge\n",
+ "\n",
+ "#Variable declaration\n",
+ "r1 = 0.1016 #Radius of the bowl in case A (m)\n",
+ "r2 = 0.2032 #Radius of the bowl in case B (m)\n",
+ "N = 1000. #Revolution per minute \n",
+ "g = 9.807 #Gravitational acceleration (m/s2)\n",
+ "\n",
+ "#Calculation\n",
+ "FcbyFg1 = r1*(2*pi*N/60)**2/g\n",
+ "FcbyFg2 = r2*(2*pi*N/60)**2/g\n",
+ "print \"Centrifugal force developed in case A:\", round(FcbyFg1,1),\"g's\"\n",
+ "print \"Centrifugal force developed in case B:\", round(FcbyFg2,1),\"g's\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Centrifugal force developed in case A: 113.6 g's\n",
+ "Centrifugal force developed in case B: 227.2 g's\n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.4-2, Page number 833"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Settling in a centrifuge\n",
+ "\n",
+ "#Variable declaration\n",
+ "rhop = 1461. #Density of the viscous solution (kg/m3)\n",
+ "rhol = 801. #Density of the solution (kg/m3)\n",
+ "mu = 100e-3 #Viscosity of the solution (Pa.s)\n",
+ "r1 = 0.00716 #Inner radius of the bowl (m)\n",
+ "r2 = 0.02225 #Outer radius of the bowl (m)\n",
+ "b = 0.1970 #Height of the bowl (m)\n",
+ "N = 23000 #Revolutions per minute\n",
+ "qc = 0.002832 #Flowrate of the particles (m3/h)\n",
+ "\n",
+ "#Calculations\n",
+ "omegha = 2*pi*N/60\n",
+ "V = pi*b*(r2**2-r1**2)\n",
+ "qc = qc/3600\n",
+ "Dpc = sqrt(qc*18*mu*log(2*r2/(r1+r2))/(V*omegha**2*(rhop-rhol)))\n",
+ "vt = omegha**2*r2*Dpc**2*(rhop-rhol)/(18*mu)\n",
+ "Nre = Dpc*vt*rhol/mu\n",
+ "tT = V/qc\n",
+ "print \"The critical particle diameter of the largest particle in the exit stream is %5.3e m or %4.4f um\"%(Dpc,Dpc*1e6)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The critical particle diameter of the largest particle in the exit stream is 7.468e-07 m or 0.7468 um\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.4-3, Page number 836"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Location of interface in a centriguge\n",
+ "\n",
+ "#Variable declaration\n",
+ "rhooil = 919.5 #Density of oil phase (kg/m3)\n",
+ "rhoaqe = 980.1 #Density of aqueous phase (kg/m3)\n",
+ "r1 = 10.160 #Radius for the overflow Light liquid (mm)\n",
+ "bh = 10.414 #Radius for the overflow Heavy liquid (mm)\n",
+ "\n",
+ "#Calculations\n",
+ "r2 = sqrt((rhoaqe*bh**2-rhooil*r1**2)/(rhoaqe-rhooil))\n",
+ "\n",
+ "#Results\n",
+ "print \"Location of interface:\", round(r2,3),\"mm\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Location of interface: 13.702 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.5-1 Page No. 842"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Power to Crust Iron Ore by Bond's Theory\n",
+ "\n",
+ "#Variable Declaration\n",
+ "T = 10. #Feed Rate of Ore, ton/hr\n",
+ "Df = 3. #Size of Feed , in\n",
+ "Dp = 1./8 #Size of product, in \n",
+ "\n",
+ "#Calculations\n",
+ "Ei = 12.68 #Work index for Iron Ore\n",
+ "T = T/60\n",
+ "Dp = Dp/12\n",
+ "Df = Df/12\n",
+ "\n",
+ "P= 1.46*T*Ei*(1./sqrt(Dp) - 1./sqrt(Df))\n",
+ "\n",
+ "#Result\n",
+ "print 'Power required %3.1f hp'%(P)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Power required 24.1 hp\n"
+ ]
+ }
+ ],
+ "prompt_number": 19
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file diff --git a/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/README.txt b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/README.txt new file mode 100755 index 00000000..d56fc49f --- /dev/null +++ b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/README.txt @@ -0,0 +1,10 @@ +Contributed By: Chandrashekhar Gourshete +Course: others +College/Institute/Organization: Dr. Babasaheb Ambedkar Marathwada University, Aurangabad +Department/Designation: Department of Chemical Technolog +Book Title: TRANSPORT PROCESSES AND UNIT OPERATIONS +Author: CHRISTIE J. GEANKOPLIS +Publisher: Prentice Hall India, Delhi +Year of publication: 1993 +Isbn: ISBN 81-203-1134-5 +Edition: Third Edition
\ No newline at end of file diff --git a/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/screenshots/Chapter04.png b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/screenshots/Chapter04.png Binary files differnew file mode 100755 index 00000000..f3d3a82c --- /dev/null +++ b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/screenshots/Chapter04.png diff --git a/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/screenshots/Chapter11.png b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/screenshots/Chapter11.png Binary files differnew file mode 100755 index 00000000..090b1323 --- /dev/null +++ b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/screenshots/Chapter11.png diff --git a/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/screenshots/Chapter12.png b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/screenshots/Chapter12.png Binary files differnew file mode 100755 index 00000000..3c29b914 --- /dev/null +++ b/TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/screenshots/Chapter12.png diff --git a/Water_and_Wastewater_Engineering/README.txt b/Water_and_Wastewater_Engineering/README.txt index 64c521dc..64c521dc 100644..100755 --- a/Water_and_Wastewater_Engineering/README.txt +++ b/Water_and_Wastewater_Engineering/README.txt diff --git a/Water_and_Wastewater_Engineering/ch10.ipynb b/Water_and_Wastewater_Engineering/ch10.ipynb index f78608b7..f78608b7 100644..100755 --- a/Water_and_Wastewater_Engineering/ch10.ipynb +++ b/Water_and_Wastewater_Engineering/ch10.ipynb diff --git a/Water_and_Wastewater_Engineering/ch11.ipynb b/Water_and_Wastewater_Engineering/ch11.ipynb index 66e86589..66e86589 100644..100755 --- a/Water_and_Wastewater_Engineering/ch11.ipynb +++ b/Water_and_Wastewater_Engineering/ch11.ipynb diff --git a/Water_and_Wastewater_Engineering/ch12.ipynb b/Water_and_Wastewater_Engineering/ch12.ipynb index 752b1d0d..752b1d0d 100644..100755 --- a/Water_and_Wastewater_Engineering/ch12.ipynb +++ b/Water_and_Wastewater_Engineering/ch12.ipynb diff --git a/Water_and_Wastewater_Engineering/ch13.ipynb b/Water_and_Wastewater_Engineering/ch13.ipynb index b7870ef8..b7870ef8 100644..100755 --- a/Water_and_Wastewater_Engineering/ch13.ipynb +++ b/Water_and_Wastewater_Engineering/ch13.ipynb diff --git a/Water_and_Wastewater_Engineering/ch14.ipynb b/Water_and_Wastewater_Engineering/ch14.ipynb index 2498efee..2498efee 100644..100755 --- a/Water_and_Wastewater_Engineering/ch14.ipynb +++ b/Water_and_Wastewater_Engineering/ch14.ipynb diff --git a/Water_and_Wastewater_Engineering/ch15.ipynb b/Water_and_Wastewater_Engineering/ch15.ipynb index 5101dc59..5101dc59 100644..100755 --- a/Water_and_Wastewater_Engineering/ch15.ipynb +++ b/Water_and_Wastewater_Engineering/ch15.ipynb diff --git a/Water_and_Wastewater_Engineering/ch16.ipynb b/Water_and_Wastewater_Engineering/ch16.ipynb index 2b395898..2b395898 100644..100755 --- a/Water_and_Wastewater_Engineering/ch16.ipynb +++ b/Water_and_Wastewater_Engineering/ch16.ipynb diff --git a/Water_and_Wastewater_Engineering/ch2.ipynb b/Water_and_Wastewater_Engineering/ch2.ipynb index d099aba5..d099aba5 100644..100755 --- a/Water_and_Wastewater_Engineering/ch2.ipynb +++ b/Water_and_Wastewater_Engineering/ch2.ipynb diff --git a/Water_and_Wastewater_Engineering/ch3.ipynb b/Water_and_Wastewater_Engineering/ch3.ipynb index 1294bb03..1294bb03 100644..100755 --- a/Water_and_Wastewater_Engineering/ch3.ipynb +++ b/Water_and_Wastewater_Engineering/ch3.ipynb diff --git a/Water_and_Wastewater_Engineering/ch4.ipynb b/Water_and_Wastewater_Engineering/ch4.ipynb index c47b5c94..c47b5c94 100644..100755 --- a/Water_and_Wastewater_Engineering/ch4.ipynb +++ b/Water_and_Wastewater_Engineering/ch4.ipynb diff --git a/Water_and_Wastewater_Engineering/ch5.ipynb b/Water_and_Wastewater_Engineering/ch5.ipynb index 1946a849..1946a849 100644..100755 --- a/Water_and_Wastewater_Engineering/ch5.ipynb +++ b/Water_and_Wastewater_Engineering/ch5.ipynb diff --git a/Water_and_Wastewater_Engineering/ch6.ipynb b/Water_and_Wastewater_Engineering/ch6.ipynb index 1c733ac1..1c733ac1 100644..100755 --- a/Water_and_Wastewater_Engineering/ch6.ipynb +++ b/Water_and_Wastewater_Engineering/ch6.ipynb diff --git a/Water_and_Wastewater_Engineering/ch7.ipynb b/Water_and_Wastewater_Engineering/ch7.ipynb index 60a0e5fa..60a0e5fa 100644..100755 --- a/Water_and_Wastewater_Engineering/ch7.ipynb +++ b/Water_and_Wastewater_Engineering/ch7.ipynb diff --git a/Water_and_Wastewater_Engineering/ch8.ipynb b/Water_and_Wastewater_Engineering/ch8.ipynb index 9aa81db6..9aa81db6 100644..100755 --- a/Water_and_Wastewater_Engineering/ch8.ipynb +++ b/Water_and_Wastewater_Engineering/ch8.ipynb diff --git a/Water_and_Wastewater_Engineering/ch9.ipynb b/Water_and_Wastewater_Engineering/ch9.ipynb index 17df7377..17df7377 100644..100755 --- a/Water_and_Wastewater_Engineering/ch9.ipynb +++ b/Water_and_Wastewater_Engineering/ch9.ipynb diff --git a/Water_and_Wastewater_Engineering/screenshots/16Machinery&Equipment.png b/Water_and_Wastewater_Engineering/screenshots/16Machinery&Equipment.png Binary files differindex cd281e2d..cd281e2d 100644..100755 --- a/Water_and_Wastewater_Engineering/screenshots/16Machinery&Equipment.png +++ b/Water_and_Wastewater_Engineering/screenshots/16Machinery&Equipment.png diff --git a/Water_and_Wastewater_Engineering/screenshots/2WaterSystems.png b/Water_and_Wastewater_Engineering/screenshots/2WaterSystems.png Binary files differindex 3490b35b..3490b35b 100644..100755 --- a/Water_and_Wastewater_Engineering/screenshots/2WaterSystems.png +++ b/Water_and_Wastewater_Engineering/screenshots/2WaterSystems.png diff --git a/Water_and_Wastewater_Engineering/screenshots/9GroundwaterFlow.png b/Water_and_Wastewater_Engineering/screenshots/9GroundwaterFlow.png Binary files differindex 2a808d7c..2a808d7c 100644..100755 --- a/Water_and_Wastewater_Engineering/screenshots/9GroundwaterFlow.png +++ b/Water_and_Wastewater_Engineering/screenshots/9GroundwaterFlow.png |