diff options
Diffstat (limited to 'TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter07.ipynb')
-rwxr-xr-x | TRANSPORT_PROCESSES_AND_UNIT_OPERATIONS/GeankoplisChapter07.ipynb | 947 |
1 files changed, 947 insertions, 0 deletions
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 |